# PFEXTLIB Build Results ## Build Summary Successfully compiled all three PFEXTLIB libraries in CentOS 3.9 i386 environment: ### ✅ cppunit-1.10.2 - **Shared library**: `libcppunit-1.10.so.2.0.0` (1.9 MB) - **Static library**: `libcppunit.a` (3.4 MB) - **Binary**: `DllPlugInTester` - **Location**: `./output/cppunit/lib/` - **Format**: ELF 32-bit LSB shared object, Intel i386 - **Dependencies**: libstdc++.so.5, libm.so.6, libc.so.6, libgcc_s.so.1 - **Status**: ✅ Compiled successfully (install error is non-critical - headers already present) ### ✅ fftw-3.0.1 - **Shared library**: `libfftw3.so.3.0.1` (624 KB) - **Static library**: `libfftw3.a` (1.0 MB) - **Location**: `./output/fftw/lib/` - **Format**: ELF 32-bit LSB shared object, Intel i386 - **Configure options**: `--enable-sse --enable-threads` - **Dependencies**: libm.so.6, libc.so.6, ld-linux.so.2 - **Status**: ✅ Compiled successfully ### ✅ hdf5-1.6.2 - **Shared library**: `libhdf5.so.0.0.0` (997 KB) - **Static library**: `libhdf5.a` (1.3 MB) - **Location**: `./output/hdf5/lib/` - **Format**: ELF 32-bit LSB shared object, Intel i386 - **Configure options**: `--enable-cxx` - **Dependencies**: libm.so.6, libc.so.6, ld-linux.so.2 - **Status**: ✅ Compiled successfully ## Build Environment - **OS**: CentOS 3.9 i386 (from archive.kernel.org vault) - **GCC**: 3.2.3-59 (gcc, g++, cpp) - **glibc**: 2.3.2-95.50 - **libstdc++**: 5.0 (from compat-libstdc++-7.3-2.96.128) - **Toolchain**: autoconf 2.57, automake 1.6.3, libtool 1.4.3, make 3.79.1 - **Total packages**: 47 RPMs verified and installed ## Docker Image - **Image name**: `centos39-pfextlib:latest` - **Architecture**: i386 (32-bit) - **Source directory**: `/usr/local/PFEXTLIB-1.2/` ## Output Directory Structure ``` output/ ├── cppunit/ │ ├── bin/ │ │ └── DllPlugInTester │ ├── include/ │ │ └── cppunit/ (complete header tree) │ └── lib/ │ ├── libcppunit-1.10.so.2.0.0 │ ├── libcppunit.so -> libcppunit-1.10.so.2.0.0 │ ├── libcppunit.a │ └── *.o files ├── fftw/ │ ├── include/ │ │ └── fftw3.h │ └── lib/ │ ├── libfftw3.so.3.0.1 │ ├── libfftw3.so -> libfftw3.so.3.0.1 │ └── libfftw3.a └── hdf5/ ├── include/ │ └── H5public.h └── lib/ ├── libhdf5.so.0.0.0 ├── libhdf5.so -> libhdf5.so.0.0.0 └── libhdf5.a ``` ## Build Scripts 1. **build-docker-image.sh** (270 lines) - Downloads 47 RPMs from CentOS 3.9 vault - Creates minimal rootfs with rpm2cpio - Cleans source directories (make distclean, rm *.o *.so* *.a .libs) - Generates build scripts for each library - Builds Docker image 2. **build-libraries.sh** - Starts Docker container in background - Executes builds inside container - Copies compiled libraries to `./output/` - Automatically cleans up container 3. **verify-rpms.sh** - Validates all 47 RPM package names - 100% verified against CentOS vault ## Usage ### Rebuild Docker Image ```bash ./build-docker-image.sh ``` ### Build All Libraries ```bash ./build-libraries.sh ``` ### Verify RPM Package Names ```bash ./verify-rpms.sh ``` ### Helper Commands ```bash ./pfextlib-docker.sh # Commands: start, stop, shell, build, build-cppunit, build-fftw, build-hdf5, # clean, logs, help ``` ## Notes - **Install errors**: cppunit shows "files are the same" errors during install phase - this is expected because headers exist in source directory. The compiled libraries are successfully created. - **libstdc++.so.6**: Not found in CentOS 3.9 packages. GCC 3.2.3 compiled binaries need libstdc++.so.5 which is present. - **32-bit libraries**: All libraries are 32-bit Intel i386 format, suitable for legacy systems. ## Timestamps - **Build Date**: November 3, 2024 - **Build Time**: ~3 minutes for all libraries - **Image Size**: ~320 MB (minimal CentOS 3.9 + build tools) ## Files Created - `build-docker-image.sh` - Main Docker image builder - `build-libraries.sh` - Library compilation and extraction script - `verify-rpms.sh` - RPM verification tool - `pfextlib-docker.sh` - Helper script with common commands - `README.md` - Full documentation - `BUILD-RESULTS.md` - This file ## Success Criteria ✅ All three libraries compile without errors ✅ Shared objects (.so) created successfully ✅ Static libraries (.a) created successfully ✅ Libraries are 32-bit i386 format ✅ Dependencies are satisfied (libstdc++.so.5, libm, libc, libgcc_s) ✅ Headers and binaries extracted ✅ Build process is reproducible