You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.4 KiB
84 lines
3.4 KiB
#!/bin/bash |
|
|
|
set -e |
|
|
|
echo "==> Building libraries inside container and extracting to ./output..." |
|
|
|
# Create output directory |
|
mkdir -p output |
|
|
|
# Start container in background |
|
CONTAINER_NAME="pfextlib-build-$$" |
|
echo "==> Starting container: $CONTAINER_NAME" |
|
docker run -d --name "$CONTAINER_NAME" centos39-pfextlib:latest sleep infinity |
|
|
|
# Function to cleanup container on exit |
|
cleanup() { |
|
echo "==> Cleaning up container..." |
|
docker rm -f "$CONTAINER_NAME" 2>/dev/null || true |
|
} |
|
trap cleanup EXIT |
|
|
|
# Run builds inside container |
|
# Note: install may fail with error 2 (headers already exist), but libs are built successfully |
|
docker exec "$CONTAINER_NAME" bash -c ' |
|
echo "==> Building cppunit..." |
|
bash /usr/local/PFEXTLIB-1.2/build-cppunit.sh || echo "cppunit install failed (expected - libs are built)" |
|
|
|
echo "==> Building fftw..." |
|
bash /usr/local/PFEXTLIB-1.2/build-fftw.sh || echo "fftw build failed" |
|
|
|
echo "==> Building hdf5..." |
|
bash /usr/local/PFEXTLIB-1.2/build-hdf5.sh || echo "hdf5 build failed" |
|
|
|
echo "==> Building xerces-c..." |
|
bash /usr/local/PFEXTLIB-1.2/build-xerces.sh || echo "xerces build failed" |
|
' |
|
|
|
# Copy compiled files from container |
|
echo "==> Copying compiled files from container to ./output..." |
|
|
|
# Copy cppunit |
|
mkdir -p output/cppunit/lib output/cppunit/bin output/cppunit/include |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/cppunit-1.10.2/src/cppunit/.libs/. output/cppunit/lib/ 2>/dev/null || true |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/cppunit-1.10.2/src/DllPlugInTester/.libs/DllPlugInTester output/cppunit/bin/ 2>/dev/null || true |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/cppunit-1.10.2/include/cppunit output/cppunit/include/ 2>/dev/null || true |
|
|
|
# Copy fftw |
|
mkdir -p output/fftw/lib output/fftw/include |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/fftw-3.0.1/.libs/. output/fftw/lib/ 2>/dev/null || true |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/fftw-3.0.1/api/fftw3.h output/fftw/include/ 2>/dev/null || true |
|
|
|
# Copy hdf5 |
|
mkdir -p output/hdf5/lib output/hdf5/include |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/hdf5-1.6.2/src/.libs/. output/hdf5/lib/ 2>/dev/null || true |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/hdf5-1.6.2/src/H5public.h output/hdf5/include/ 2>/dev/null || true |
|
|
|
# Copy xerces-c |
|
mkdir -p output/xerces/lib output/xerces/include |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/xerces-c-src2_1_0/lib/. output/xerces/lib/ 2>/dev/null || true |
|
docker cp "$CONTAINER_NAME":/usr/local/PFEXTLIB-1.2/xerces-c-src2_1_0/include/. output/xerces/include/ 2>/dev/null || true |
|
|
|
# Check library dependencies |
|
echo "" |
|
echo "==> Checking library dependencies..." |
|
echo "" |
|
echo "cppunit:" |
|
docker exec "$CONTAINER_NAME" ldd /usr/local/PFEXTLIB-1.2/cppunit-1.10.2/src/cppunit/.libs/libcppunit-1.10.so.2.0.0 || true |
|
echo "" |
|
echo "fftw:" |
|
docker exec "$CONTAINER_NAME" ldd /usr/local/PFEXTLIB-1.2/fftw-3.0.1/.libs/libfftw3.so.3.0.1 || true |
|
echo "" |
|
echo "hdf5:" |
|
docker exec "$CONTAINER_NAME" ldd /usr/local/PFEXTLIB-1.2/hdf5-1.6.2/src/.libs/libhdf5.so.0.0.0 || true |
|
echo "" |
|
echo "xerces-c:" |
|
docker exec "$CONTAINER_NAME" ldd /usr/local/PFEXTLIB-1.2/xerces-c-src2_1_0/lib/libxerces-c.so.21.0 || true |
|
|
|
echo "" |
|
echo "========================================" |
|
echo "Build complete! Libraries copied to ./output/" |
|
echo "========================================" |
|
echo "" |
|
echo "Directory structure:" |
|
ls -lR output/
|
|
|