From a452402267ba6f9d7dc6f57fbd3194e5d1c65057 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 1 Jan 2024 14:42:19 -0500 Subject: [PATCH] ci(macos): install boost from source (#1954) --- .github/workflows/CI.yml | 48 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 38907881d2c..64e28c6b3c6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -504,6 +504,8 @@ jobs: name: MacOS runs-on: macos-11 needs: [check_changelog, setup_release] + env: + BOOST_VERSION: 1.83.0 steps: - name: Checkout @@ -514,10 +516,50 @@ jobs: - name: Setup Dependencies MacOS run: | # install dependencies using homebrew - brew install boost cmake curl node opus pkg-config + brew install cmake curl node openssl opus pkg-config # fix openssl header not found - ln -sf /usr/local/opt/openssl/include/openssl /usr/local/include/openssl + # ln -sf /usr/local/opt/openssl/include/openssl /usr/local/include/openssl + + # by installing boost from source, several headers cannot be found... + # the above commented out link only works if boost is installed from homebrew... does not make sense + ln -sf $(find /usr/local/Cellar -type d -name "openssl" -path "*/openssl@3/*/include" | head -n 1) \ + /usr/local/include/openssl + + # fix opus header not found + ln -sf $(find /usr/local/Cellar -type d -name "opus" -path "*/opus/*/include" | head -n 1) \ + /usr/local/include/opus + + - name: Install Boost + # installing boost from homebrew takes 30 minutes in a GitHub runner + run: | + export BOOST_ROOT=${HOME}/boost-${BOOST_VERSION} + + # install boost + wget \ + https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION}.tar.gz \ + --progress=bar:force:noscroll -q --show-progress + tar xf boost-${BOOST_VERSION}.tar.gz + cd boost-${BOOST_VERSION} + + # libdir should be set by --prefix but isn't + ./bootstrap.sh \ + --prefix=${BOOST_ROOT} \ + --libdir=${BOOST_ROOT}/lib \ + --with-libraries=locale,log,program_options,system,thread + ./b2 headers + ./b2 install \ + --prefix=${BOOST_ROOT} \ + --libdir=${BOOST_ROOT}/lib \ + -j$(sysctl -n hw.ncpu) \ + link=shared,static \ + variant=release \ + cxxflags=-std=c++14 \ + cxxflags=-stdlib=libc++ \ + linkflags=-stdlib=libc++ + + # put boost in cmake prefix path + echo "BOOST_ROOT=${BOOST_ROOT}" >> ${GITHUB_ENV} - name: Build MacOS env: @@ -532,7 +574,7 @@ jobs: -DSUNSHINE_ASSETS_DIR=local/sunshine/assets \ -DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \ .. - make -j ${nproc} + make -j $(sysctl -n hw.ncpu) - name: Package MacOS run: |