From 6a35fedd29ef9885db29ae8fb547403efcc6a878 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Wed, 17 Mar 2021 00:54:37 -0400 Subject: [PATCH] Fix CI with separate boost install Github Actions no longer supports boost, so we install it separately. Also turned off some checks since the wrapper causes an OOM exception. --- .github/scripts/boost.sh | 18 ++++++++++++++++++ .github/scripts/python.sh | 10 ++++++---- .github/workflows/build-linux.yml | 18 +++++++++--------- .github/workflows/build-macos.yml | 4 +++- .github/workflows/build-python.yml | 18 ++++++++++-------- .github/workflows/build-special.yml | 13 ++++++++----- .github/workflows/build-windows.yml | 15 ++++++++++++--- 7 files changed, 66 insertions(+), 30 deletions(-) create mode 100644 .github/scripts/boost.sh diff --git a/.github/scripts/boost.sh b/.github/scripts/boost.sh new file mode 100644 index 000000000..8b36a8f21 --- /dev/null +++ b/.github/scripts/boost.sh @@ -0,0 +1,18 @@ +### Script to install Boost +BOOST_FOLDER=boost_${BOOST_VERSION//./_} + +# Download Boost +wget https://dl.bintray.com/boostorg/release/${BOOST_VERSION}/source/${BOOST_FOLDER}.tar.gz + +# Unzip +tar -zxf ${BOOST_FOLDER}.tar.gz + +# Bootstrap +cd ${BOOST_FOLDER}/ +./bootstrap.sh + +# Build and install +sudo ./b2 install + +# Rebuild ld cache +sudo ldconfig diff --git a/.github/scripts/python.sh b/.github/scripts/python.sh index a71e14c97..b9c8a25f5 100644 --- a/.github/scripts/python.sh +++ b/.github/scripts/python.sh @@ -65,21 +65,23 @@ sudo $PYTHON -m pip install -r $GITHUB_WORKSPACE/python/requirements.txt mkdir $GITHUB_WORKSPACE/build cd $GITHUB_WORKSPACE/build -cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Release \ - -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_UNSTABLE=ON \ +cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \ + -DGTSAM_BUILD_TESTS=OFF \ + -DGTSAM_BUILD_UNSTABLE=${GTSAM_BUILD_UNSTABLE:-ON} \ -DGTSAM_USE_QUATERNIONS=OFF \ -DGTSAM_WITH_TBB=${GTSAM_WITH_TBB:-OFF} \ -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \ -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ -DGTSAM_BUILD_PYTHON=${BUILD_PYBIND} \ - -DGTSAM_TYPEDEF_POINTS_TO_VECTORS=${TYPEDEF_POINTS_TO_VECTORS} \ + -DGTSAM_UNSTABLE_BUILD_PYTHON=${GTSAM_BUILD_UNSTABLE:-ON} \ -DGTSAM_PYTHON_VERSION=$PYTHON_VERSION \ -DPYTHON_EXECUTABLE:FILEPATH=$(which $PYTHON) \ -DGTSAM_ALLOW_DEPRECATED_SINCE_V41=OFF \ -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/gtsam_install -make -j$(nproc) install +# Set to 2 cores so that Actions does not error out during resource provisioning. +make -j2 install cd $GITHUB_WORKSPACE/build/python $PYTHON setup.py install --user --prefix= diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index be1da35bb..9ca3a8fe5 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -12,6 +12,7 @@ jobs: CTEST_PARALLEL_LEVEL: 2 CMAKE_BUILD_TYPE: ${{ matrix.build_type }} GTSAM_BUILD_UNSTABLE: ${{ matrix.build_unstable }} + BOOST_VERSION: 1.67.0 strategy: fail-fast: false @@ -44,7 +45,8 @@ jobs: steps: - name: Checkout - uses: actions/checkout@master + uses: actions/checkout@v2 + - name: Install (Linux) if: runner.os == 'Linux' run: | @@ -61,11 +63,8 @@ jobs: fi sudo apt-get -y update - sudo apt install cmake build-essential pkg-config libpython-dev python-numpy - - echo "BOOST_ROOT=$(echo $BOOST_ROOT_1_72_0)" >> $GITHUB_ENV - echo "LD_LIBRARY_PATH=$(echo $BOOST_ROOT_1_72_0/lib)" >> $GITHUB_ENV - + sudo apt-get install cmake build-essential pkg-config libpython-dev python-numpy libicu-dev + if [ "${{ matrix.compiler }}" = "gcc" ]; then sudo apt-get install -y g++-${{ matrix.version }} g++-${{ matrix.version }}-multilib echo "CC=gcc-${{ matrix.version }}" >> $GITHUB_ENV @@ -75,10 +74,11 @@ jobs: echo "CC=clang-${{ matrix.version }}" >> $GITHUB_ENV echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV fi - - name: Check Boost version - if: runner.os == 'Linux' + + - name: Install Boost run: | - echo "BOOST_ROOT = $BOOST_ROOT" + bash .github/scripts/boost.sh + - name: Build and Test (Linux) if: runner.os == 'Linux' run: | diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 435936bdf..ed8f8563b 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -12,6 +12,7 @@ jobs: CTEST_PARALLEL_LEVEL: 2 CMAKE_BUILD_TYPE: ${{ matrix.build_type }} GTSAM_BUILD_UNSTABLE: ${{ matrix.build_unstable }} + strategy: fail-fast: false matrix: @@ -31,7 +32,8 @@ jobs: steps: - name: Checkout - uses: actions/checkout@master + uses: actions/checkout@v2 + - name: Install (macOS) if: runner.os == 'macOS' run: | diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index 1b5293b16..0d5a2120c 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -12,6 +12,7 @@ jobs: CTEST_PARALLEL_LEVEL: 2 CMAKE_BUILD_TYPE: ${{ matrix.build_type }} PYTHON_VERSION: ${{ matrix.python_version }} + strategy: fail-fast: false matrix: @@ -22,10 +23,11 @@ jobs: ubuntu-18.04-gcc-9, ubuntu-18.04-clang-9, macOS-10.15-xcode-11.3.1, - #ubuntu-18.04-gcc-5-tbb, + # ubuntu-18.04-gcc-5-tbb, ] - build_type: [Debug, Release] + # build_type: [Debug, Release] + build_type: [Release] python_version: [3] include: - name: ubuntu-18.04-gcc-5 @@ -48,15 +50,15 @@ jobs: compiler: xcode version: "11.3.1" -# - name: ubuntu-18.04-gcc-5-tbb -# os: ubuntu-18.04 -# compiler: gcc -# version: "5" -# flag: tbb + # - name: ubuntu-18.04-gcc-5-tbb + # os: ubuntu-18.04 + # compiler: gcc + # version: "5" + # flag: tbb steps: - name: Checkout - uses: actions/checkout@master + uses: actions/checkout@v2 - name: Install (Linux) if: runner.os == 'Linux' run: | diff --git a/.github/workflows/build-special.yml b/.github/workflows/build-special.yml index 532f917c1..3ac88bdc8 100644 --- a/.github/workflows/build-special.yml +++ b/.github/workflows/build-special.yml @@ -12,6 +12,7 @@ jobs: CTEST_PARALLEL_LEVEL: 2 CMAKE_BUILD_TYPE: ${{ matrix.build_type }} GTSAM_BUILD_UNSTABLE: ON + BOOST_VERSION: 1.67.0 strategy: fail-fast: false @@ -56,7 +57,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@master + uses: actions/checkout@v2 - name: Install (Linux) if: runner.os == 'Linux' @@ -69,10 +70,7 @@ jobs: fi sudo apt-get -y update - sudo apt install cmake build-essential pkg-config libpython-dev python-numpy - - echo "BOOST_ROOT=$(echo $BOOST_ROOT_1_72_0)" >> $GITHUB_ENV - echo "LD_LIBRARY_PATH=$(echo $BOOST_ROOT_1_72_0/lib)" >> $GITHUB_ENV + sudo apt install cmake build-essential pkg-config libpython-dev python-numpy libicu-dev if [ "${{ matrix.compiler }}" = "gcc" ]; then sudo apt-get install -y g++-${{ matrix.version }} g++-${{ matrix.version }}-multilib @@ -84,6 +82,11 @@ jobs: echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV fi + - name: Install Boost + if: runner.os == 'Linux' + run: | + bash .github/scripts/boost.sh + - name: Install (macOS) if: runner.os == 'macOS' run: | diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 887d41972..a564dade9 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@master + uses: actions/checkout@v2 - name: Install (Windows) if: runner.os == 'Windows' shell: powershell @@ -64,12 +64,21 @@ jobs: } # Scoop modifies the PATH so we make the modified PATH global. echo "$env:PATH" >> $GITHUB_PATH + + - name: Download and install Boost + uses: MarkusJx/install-boost@v1.0.1 + id: install-boost + with: + boost_version: 1.72.0 + toolset: msvc14.2 + - name: Build (Windows) if: runner.os == 'Windows' + env: + BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} run: | cmake -E remove_directory build - echo "BOOST_ROOT_1_72_0: ${env:BOOST_ROOT_1_72_0}" - cmake -B build -S . -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DBOOST_ROOT="${env:BOOST_ROOT_1_72_0}" -DBOOST_INCLUDEDIR="${env:BOOST_ROOT_1_72_0}\boost\include" -DBOOST_LIBRARYDIR="${env:BOOST_ROOT_1_72_0}\lib" + cmake -B build -S . -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DBOOST_ROOT="${env:BOOST_ROOT}" -DBOOST_INCLUDEDIR="${env:BOOST_ROOT}\boost\include" -DBOOST_LIBRARYDIR="${env:BOOST_ROOT}\lib" cmake --build build --config ${{ matrix.build_type }} --target gtsam cmake --build build --config ${{ matrix.build_type }} --target gtsam_unstable cmake --build build --config ${{ matrix.build_type }} --target wrap