Skip to content

Commit fa5a258

Browse files
committed
Build Boost from source and update environment variables for GTSAM integration
1 parent 4b682df commit fa5a258

File tree

3 files changed

+30
-19
lines changed

3 files changed

+30
-19
lines changed

.github/scripts/cibw_before_all_linux.sh

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,29 @@ echo "Installing base system dependencies..."
1818
dnf install -y \
1919
wget curl git \
2020
tinyxml2-devel \
21-
ruby \
22-
boost-devel
21+
ruby
2322

2423
echo "CMake version:"
2524
cmake --version
2625

2726

27+
# Build Boost 1.87.0 from source (must match the version used by gtsam-develop on PyPI)
28+
echo "Building Boost 1.87.0 from source..."
29+
cd /tmp
30+
wget https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz --quiet
31+
tar -xzf boost_1_87_0.tar.gz
32+
cd boost_1_87_0
33+
34+
BOOST_PREFIX="${INSTALL_PREFIX}/boost"
35+
./bootstrap.sh --prefix=${BOOST_PREFIX}
36+
./b2 install --prefix=${BOOST_PREFIX} --with=all -d0
37+
cd /tmp && rm -rf boost_1_87_0*
38+
39+
export BOOST_ROOT="${BOOST_PREFIX}"
40+
export BOOST_INCLUDEDIR="${BOOST_PREFIX}/include"
41+
export BOOST_LIBRARYDIR="${BOOST_PREFIX}/lib"
42+
43+
2844
# Install Gazebo dependencies for SDFormat
2945
echo "Installing Gazebo dependencies..."
3046
cd /tmp
@@ -94,19 +110,15 @@ cd /tmp && rm -rf sdformat*
94110
echo "Cloning GTSAM source (develop branch)..."
95111
git clone --depth 1 https://github.com/borglab/gtsam.git ${INSTALL_PREFIX}/gtsam_source
96112

97-
98-
# Copy boost .so files so auditwheel can find them.
99-
echo "Creating a vendor-ready copy of Boost for auditwheel..."
100-
mkdir -p ${INSTALL_PREFIX}/boost/lib
101-
# -d preserves symlinks so that libboost_serialization.so -> libboost_serialization.so.1.75.0
102-
cp -d /usr/lib64/libboost_*.so* ${INSTALL_PREFIX}/boost/lib/
103-
104113
# Write environment file for before-build scripts
105114
# gtsam_current symlink will be created by before-build after GTSAM is built
106115
cat > ${INSTALL_PREFIX}/env.sh << EOF
107116
export INSTALL_PREFIX="${INSTALL_PREFIX}"
108-
# Integrated the boost path here
117+
export BOOST_ROOT="${BOOST_PREFIX}"
118+
export BOOST_INCLUDEDIR="${BOOST_PREFIX}/include"
119+
export BOOST_LIBRARYDIR="${BOOST_PREFIX}/lib"
109120
export CMAKE_PREFIX_PATH="${INSTALL_PREFIX}/gtsam_current:${INSTALL_PREFIX}/gz-cmake4:${INSTALL_PREFIX}/gz-utils:${INSTALL_PREFIX}/gz-math:${INSTALL_PREFIX}/sdformat:\${CMAKE_PREFIX_PATH}"
110-
export LD_LIBRARY_PATH="${INSTALL_PREFIX}/boost/lib:${INSTALL_PREFIX}/gtsam_current/lib:${INSTALL_PREFIX}/sdformat/lib:${INSTALL_PREFIX}/gz-utils/lib:${INSTALL_PREFIX}/gz-math/lib:\${LD_LIBRARY_PATH}"
121+
export LD_LIBRARY_PATH="${BOOST_PREFIX}/lib:${INSTALL_PREFIX}/gtsam_current/lib:${INSTALL_PREFIX}/sdformat/lib:${INSTALL_PREFIX}/gz-utils/lib:${INSTALL_PREFIX}/gz-math/lib:\${LD_LIBRARY_PATH}"
111122
EOF
112-
echo "before-all completed successfully!"
123+
124+
echo "before-all completed successfully!"

.github/scripts/cibw_before_build_linux.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ cmake ${GTSAM_SOURCE} \
5353
-DGTSAM_PYTHON_VERSION=${PYTHON_VERSION} \
5454
-DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXE} \
5555
-DGTSAM_ALLOW_DEPRECATED_SINCE_V43=OFF \
56+
-DBOOST_ROOT=${BOOST_ROOT} \
5657
-DCMAKE_CXX_FLAGS="-faligned-new -Wno-error=free-nonheap-object"
5758

5859
cmake --build . --config Release -j${NUM_CORES}
@@ -128,6 +129,7 @@ cmake ${PROJECT_DIR} \
128129
-DPython_EXECUTABLE:FILEPATH=${PYTHON_EXE} \
129130
-DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXE} \
130131
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
132+
-DBOOST_ROOT=${BOOST_ROOT} \
131133
-DCMAKE_CXX_FLAGS="-faligned-new"
132134

133135
cmake --build . --config Release --target gtdynamics_py -j${NUM_CORES}

pyproject.toml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,20 +73,17 @@ skip = "*-musllinux_* *-win32 pp*"
7373
build-frontend = "pip; args: --no-build-isolation"
7474

7575
[tool.cibuildwheel.linux]
76-
manylinux-x86_64-image = "quay.io/pypa/manylinux_2_34_x86_64"
77-
manylinux-aarch64-image = "quay.io/pypa/manylinux_2_34_aarch64"
76+
manylinux-x86_64-image = "quay.io/pypa/manylinux_2_28_x86_64"
77+
manylinux-aarch64-image = "quay.io/pypa/manylinux_2_28_aarch64"
7878
before-all = "bash {project}/.github/scripts/cibw_before_all_linux.sh"
7979
before-build = "bash {project}/.github/scripts/cibw_before_build_linux.sh {project}"
80-
repair-wheel-command = """
81-
LD_LIBRARY_PATH=/opt/gtdynamics-deps/boost/lib:/opt/gtdynamics-deps/gtd_current/lib:/opt/gtdynamics-deps/gtsam_current/lib:/opt/gtdynamics-deps/sdformat/lib:/opt/gtdynamics-deps/gz-utils/lib:/opt/gtdynamics-deps/gz-math/lib:$LD_LIBRARY_PATH \
82-
auditwheel repair -w {dest_dir} {wheel}
83-
"""
80+
repair-wheel-command = "LD_LIBRARY_PATH=/opt/gtdynamics-deps/gtd_current/lib:/opt/gtdynamics-deps/gtsam_current/lib:/opt/gtdynamics-deps/boost/lib:/opt/gtdynamics-deps/sdformat/lib:/opt/gtdynamics-deps/gz-utils/lib:/opt/gtdynamics-deps/gz-math/lib:$LD_LIBRARY_PATH auditwheel repair -w {dest_dir} {wheel}"
8481

8582
[tool.cibuildwheel.linux.environment]
8683
INSTALL_PREFIX = "/opt/gtdynamics-deps"
8784
GTSAM_DIR = "/opt/gtdynamics-deps/gtsam_current/lib/cmake/GTSAM"
8885
CMAKE_PREFIX_PATH = "/opt/gtdynamics-deps/gtsam_current:/opt/gtdynamics-deps/gz-cmake4:/opt/gtdynamics-deps/gz-utils:/opt/gtdynamics-deps/gz-math:/opt/gtdynamics-deps/sdformat"
89-
LD_LIBRARY_PATH = "/opt/gtdynamics-deps/gtd_current/lib:/opt/gtdynamics-deps/gtsam_current/lib:/opt/gtdynamics-deps/sdformat/lib:/opt/gtdynamics-deps/gz-utils/lib:/opt/gtdynamics-deps/gz-math/lib"
86+
LD_LIBRARY_PATH = "/opt/gtdynamics-deps/gtd_current/lib:/opt/gtdynamics-deps/gtsam_current/lib:/opt/gtdynamics-deps/boost/lib:/opt/gtdynamics-deps/sdformat/lib:/opt/gtdynamics-deps/gz-utils/lib:/opt/gtdynamics-deps/gz-math/lib"
9087
Python_EXECUTABLE = "$(which python)"
9188
PYTHON_EXECUTABLE = "$(which python)"
9289

0 commit comments

Comments
 (0)