From 13db1c5096e8a4f3afcfa00125cc33a899959023 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Thu, 8 Dec 2022 13:17:47 +0000 Subject: [PATCH 01/12] build and cache grpc on macos, like on linux --- .github/workflows/onpush-build-macos.yml | 32 ++++++++++++++++++++--- .github/workflows/onpush-build-ubuntu.yml | 3 --- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/.github/workflows/onpush-build-macos.yml b/.github/workflows/onpush-build-macos.yml index 724f67a0e..621f4af0d 100644 --- a/.github/workflows/onpush-build-macos.yml +++ b/.github/workflows/onpush-build-macos.yml @@ -10,6 +10,27 @@ env: jobs: + # Job to build and cache the grpc libraries. The grpc build directory is + # populated and cached so that all other jobs can mark this job as a + # prerequisite and just run `make install`. + # + # NOTE: the version number here (in `key` and in script arguments) must be + # kept in sync with the key used by the jobs. + build-grpc: + runs-on: macos-11 + steps: + - uses: actions/checkout@v2 + - name: Cache grpc + uses: actions/cache@v2 + with: + key: grpc-1.44.x-${{ runner.os }} + path: depends/grpc + - name: Build grpc + run: | + brew install ${MACOS_BREW_PACKAGES} + brew link llvm@14 + if ! [ -d depends/grpc ] ; then scripts/install-grpc /usr v1.44.x ; fi + # Extract the commits of submodules for use by cache steps submodules: runs-on: ubuntu-20.04 @@ -26,7 +47,7 @@ jobs: # Main build build-macos: runs-on: macos-11 - needs: submodules + needs: [build-grpc, submodules] strategy: matrix: config: [ Debug, Release ] @@ -38,11 +59,11 @@ jobs: uses: actions/setup-python@v2 with: python-version: '3.8' - - name: Cache ccache + - name: Cache grpc uses: actions/cache@v2 with: - key: submodules-${{ needs.submodules.outputs.commits }}-${{ runner.os }}-${{ matrix.config }} - path: ~/Library/Caches/ccache + key: grpc-1.44.x-${{ runner.os }} + path: depends/grpc - name: Cache pip (for mpc tests) uses: actions/cache@v2 with: @@ -50,6 +71,9 @@ jobs: key: build-macos-pip-${{ hashFiles('**/setup.py') }}-${{ runner.os }} - name: Install Dependencies run: | + - name: Install dependencies + run: | + INSTALL_ONLY=1 scripts/install-grpc /usr v1.44.x brew install ${MACOS_BREW_PACKAGES} brew link llvm@14 which clang diff --git a/.github/workflows/onpush-build-ubuntu.yml b/.github/workflows/onpush-build-ubuntu.yml index fdf5f979c..33875e2a5 100644 --- a/.github/workflows/onpush-build-ubuntu.yml +++ b/.github/workflows/onpush-build-ubuntu.yml @@ -51,7 +51,6 @@ jobs: - name: Install dependencies run: | INSTALL_ONLY=1 scripts/install-grpc /usr v1.44.x - sudo apt install -y ccache - name: Execute run: CI_CHECK_FORMAT=1 CI_MPC_TESTS=1 CI_CONFIG=${{ matrix.config }} scripts/ci build @@ -74,7 +73,6 @@ jobs: - name: Install dependencies run: | INSTALL_ONLY=1 scripts/install-grpc /usr v1.44.x - sudo apt install -y ccache - name: Execute run: CI_CONFIG=Release CI_ZKSNARK=PGHR13 scripts/ci build @@ -97,6 +95,5 @@ jobs: - name: Install dependencies run: | INSTALL_ONLY=1 scripts/install-grpc /usr v1.44.x - sudo apt install -y ccache - name: Execute run: CI_CONFIG=Release CI_CURVE=BLS12_377 scripts/ci build From 1cb25114106f08d0e1b7ff68fa63ca6817f12c33 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Thu, 8 Dec 2022 14:11:42 +0000 Subject: [PATCH 02/12] ci: alias for nproc on mac in grpc build --- scripts/install-grpc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/install-grpc b/scripts/install-grpc index 966a87cfb..3bdc9788d 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -25,6 +25,12 @@ if [ "${INSTALL_ONLY}" != "1" ] ; then cpp_build_setup fi + +if [ ${platform} == "Darwin" ] ; then + alias nproc='sysctl -n hw.ncpu' +fi + + pushd depends if ! [ -d grpc ] ; then From 3f09e97176f53f6dfbd5812ae97eb463983ecef5 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Thu, 8 Dec 2022 14:47:07 +0000 Subject: [PATCH 03/12] ci: install grpc in /usr/local on mac --- .github/workflows/onpush-build-macos.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/onpush-build-macos.yml b/.github/workflows/onpush-build-macos.yml index 621f4af0d..68a36f852 100644 --- a/.github/workflows/onpush-build-macos.yml +++ b/.github/workflows/onpush-build-macos.yml @@ -29,7 +29,7 @@ jobs: run: | brew install ${MACOS_BREW_PACKAGES} brew link llvm@14 - if ! [ -d depends/grpc ] ; then scripts/install-grpc /usr v1.44.x ; fi + if ! [ -d depends/grpc ] ; then scripts/install-grpc /usr/local v1.44.x ; fi # Extract the commits of submodules for use by cache steps submodules: @@ -73,7 +73,7 @@ jobs: run: | - name: Install dependencies run: | - INSTALL_ONLY=1 scripts/install-grpc /usr v1.44.x + INSTALL_ONLY=1 scripts/install-grpc /usr/local v1.44.x brew install ${MACOS_BREW_PACKAGES} brew link llvm@14 which clang From 4e14ed2fecd96ea8b8cdb36206b363ca541f6530 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Thu, 8 Dec 2022 14:53:48 +0000 Subject: [PATCH 04/12] ci: reduce the number of brew packages to install --- .github/workflows/onpush-build-macos.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/onpush-build-macos.yml b/.github/workflows/onpush-build-macos.yml index 68a36f852..9ce5ca39b 100644 --- a/.github/workflows/onpush-build-macos.yml +++ b/.github/workflows/onpush-build-macos.yml @@ -5,7 +5,8 @@ on: push: env: - MACOS_BREW_PACKAGES: "autoconf automake boost cmake gmp grpc openssl pkg-config protobuf libomp libtool" + MACOS_BREW_PACKAGES_FOR_GRPC: "autoconf automake cmake openssl pkg-config" + MACOS_BREW_PACKAGES: "autoconf automake boost cmake gmp openssl pkg-config libomp libtool" HOMEBREW_NO_AUTO_UPDATE: 1 jobs: @@ -27,7 +28,7 @@ jobs: path: depends/grpc - name: Build grpc run: | - brew install ${MACOS_BREW_PACKAGES} + brew install ${MACOS_BREW_PACKAGES_FOR_GRPC} brew link llvm@14 if ! [ -d depends/grpc ] ; then scripts/install-grpc /usr/local v1.44.x ; fi From 63c3a0b7e01816a3b4ced0cf9c2008ef0acce44a Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Thu, 8 Dec 2022 15:00:40 +0000 Subject: [PATCH 05/12] FIX: nproc on mac --- scripts/install-grpc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/install-grpc b/scripts/install-grpc index 3bdc9788d..0e2e48fbc 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -27,7 +27,10 @@ fi if [ ${platform} == "Darwin" ] ; then - alias nproc='sysctl -n hw.ncpu' + # alias nproc='sysctl -n hw.ncpu' + function nproc() { + sysctl -n hw.ncpu + } fi From 25a37b4130eff7cc5c37e19874417841c4f07b9e Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Thu, 8 Dec 2022 15:48:18 +0000 Subject: [PATCH 06/12] ci: macos grpc dir issue ; --- scripts/install-grpc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install-grpc b/scripts/install-grpc index 0e2e48fbc..368f26a11 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -56,8 +56,8 @@ pushd depends popd # third_party/protobuf # Install grpc - mkdir -p build - pushd build + mkdir -p build-grpc + pushd build-grpc if [ "${INSTALL_ONLY}" != "1" ] ; then cmake \ -DCMAKE_PREFIX_PATH=${INSTALL_DIR} \ From 5e7cdea830dea44405269b73f3ddd817385afb85 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Thu, 8 Dec 2022 17:51:12 +0000 Subject: [PATCH 07/12] ci: revert packages change --- .github/workflows/onpush-build-macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/onpush-build-macos.yml b/.github/workflows/onpush-build-macos.yml index 9ce5ca39b..ac5f305c7 100644 --- a/.github/workflows/onpush-build-macos.yml +++ b/.github/workflows/onpush-build-macos.yml @@ -28,7 +28,7 @@ jobs: path: depends/grpc - name: Build grpc run: | - brew install ${MACOS_BREW_PACKAGES_FOR_GRPC} + brew install ${MACOS_BREW_PACKAGES} brew link llvm@14 if ! [ -d depends/grpc ] ; then scripts/install-grpc /usr/local v1.44.x ; fi From 65038437871efabf57afb6894fb91587d650d26a Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Fri, 9 Dec 2022 14:28:15 +0000 Subject: [PATCH 08/12] ci: openssl paths in commonsetup script --- scripts/build_utils.sh | 10 ++++++++++ scripts/ci | 6 +----- scripts/install-grpc | 8 ++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/scripts/build_utils.sh b/scripts/build_utils.sh index ec6adf79f..22b53e3e5 100644 --- a/scripts/build_utils.sh +++ b/scripts/build_utils.sh @@ -47,5 +47,15 @@ function cpp_build_setup() { libxslt1-dev \ pkg-config fi + + elif [ "${platform}" == "Darwin" ] ; then + + openssl_path=$(brew --prefix openssl) + export PKG_CONFIG_PATH="${openssl_path}/lib/pkgconfig" + export LIBRARY_PATH="${openssl_path}/lib" + export LDFLAGS="-L/usr/local/lib -L${openssl_path}/lib" + export CPPFLAGS="-I/usr/local/include -I${openssl_path}/include" + export CXXFLAGS="-I/usr/local/include -I${openssl_path}/include" + fi } diff --git a/scripts/ci b/scripts/ci index b5d2da571..97aa484f4 100755 --- a/scripts/ci +++ b/scripts/ci @@ -162,11 +162,7 @@ function build() { cxx_flags="-Werror" if [ "${platform}" == "Darwin" ] ; then - openssl_path=$(brew --prefix openssl) - export PKG_CONFIG_PATH="${openssl_path}/lib/pkgconfig" - export LIBRARY_PATH="${openssl_path}/lib" - export LDFLAGS="-L/usr/local/lib -L${openssl_path}/lib" - export CPPFLAGS="-I/usr/local/include -I${openssl_path}/include" + # openssl_path is set by cpp_build_setup in build_utils. cxx_flags="${cxx_flags} -I${openssl_path}/include" cxx_flags="${cxx_flags} -Wno-deprecated-declarations" diff --git a/scripts/install-grpc b/scripts/install-grpc index 368f26a11..dddf36763 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -37,8 +37,12 @@ fi pushd depends if ! [ -d grpc ] ; then - git clone --depth 1 -b ${VERSION} https://github.com/grpc/grpc - git -C grpc submodule update --depth 1 --init --recursive + git clone \ + --depth 1 \ + --shallow-submodules \ + --recurse-submodules \ + -b ${VERSION} \ + https://github.com/grpc/grpc else echo grpc directory already exists. skipping download. fi From 917632a5be3b3a2f0f7bd25424f0dea868715598 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Fri, 9 Dec 2022 14:32:46 +0000 Subject: [PATCH 09/12] ci: alway run cmake in grpc build dir, even if not necessary --- scripts/install-grpc | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/scripts/install-grpc b/scripts/install-grpc index dddf36763..03d0cf68f 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -62,24 +62,25 @@ pushd depends # Install grpc mkdir -p build-grpc pushd build-grpc - if [ "${INSTALL_ONLY}" != "1" ] ; then - cmake \ - -DCMAKE_PREFIX_PATH=${INSTALL_DIR} \ - -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \ - -DCMAKE_BUILD_TYPE=Release \ - -DgRPC_INSTALL=ON \ - -DgRPC_BUILD_TESTS=OFF \ - -DBUILD_TESTING=OFF \ - -DgRPC_SSL_PROVIDER=package \ - -DgRPC_PROTOBUF_PROVIDER=package \ - -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \ - -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \ - -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \ - -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \ - -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \ - .. - make -j"$(($(nproc)+1))" - fi + # if [ "${INSTALL_ONLY}" != "1" ] ; then + cmake \ + -DCMAKE_PREFIX_PATH=${INSTALL_DIR} \ + -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \ + -DCMAKE_BUILD_TYPE=Release \ + -DgRPC_INSTALL=ON \ + -DgRPC_BUILD_TESTS=OFF \ + -DBUILD_TESTING=OFF \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_PROTOBUF_PROVIDER=package \ + -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \ + -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \ + .. + + make -j"$(($(nproc)+1))" + # fi sudo make install popd # build From 46286f1bcd609dfc1837e0437da10404efba6726 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Mon, 12 Dec 2022 11:12:37 +0000 Subject: [PATCH 10/12] attempt o fix openssl ref on mac --- .github/workflows/onpush-build-macos.yml | 2 ++ scripts/build_utils.sh | 8 +++----- scripts/install-grpc | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/onpush-build-macos.yml b/.github/workflows/onpush-build-macos.yml index ac5f305c7..a102a424a 100644 --- a/.github/workflows/onpush-build-macos.yml +++ b/.github/workflows/onpush-build-macos.yml @@ -8,6 +8,8 @@ env: MACOS_BREW_PACKAGES_FOR_GRPC: "autoconf automake cmake openssl pkg-config" MACOS_BREW_PACKAGES: "autoconf automake boost cmake gmp openssl pkg-config libomp libtool" HOMEBREW_NO_AUTO_UPDATE: 1 + PKG_CONFIG_PATH: "/usr/local/opt/openssl/lib/LIBRARY_PATH=" + LIBRARY_PATH: /usr/local/lib:/usr/local/opt/openssl/lib jobs: diff --git a/scripts/build_utils.sh b/scripts/build_utils.sh index 22b53e3e5..a9a9fdf0f 100644 --- a/scripts/build_utils.sh +++ b/scripts/build_utils.sh @@ -49,13 +49,11 @@ function cpp_build_setup() { fi elif [ "${platform}" == "Darwin" ] ; then - - openssl_path=$(brew --prefix openssl) - export PKG_CONFIG_PATH="${openssl_path}/lib/pkgconfig" - export LIBRARY_PATH="${openssl_path}/lib" + # openssl_path=$(brew --prefix openssl) + # export PKG_CONFIG_PATH="${openssl_path}/lib/pkgconfig" + # export LIBRARY_PATH="${openssl_path}/lib" export LDFLAGS="-L/usr/local/lib -L${openssl_path}/lib" export CPPFLAGS="-I/usr/local/include -I${openssl_path}/include" export CXXFLAGS="-I/usr/local/include -I${openssl_path}/include" - fi } diff --git a/scripts/install-grpc b/scripts/install-grpc index 03d0cf68f..8cbc1c9af 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -27,7 +27,6 @@ fi if [ ${platform} == "Darwin" ] ; then - # alias nproc='sysctl -n hw.ncpu' function nproc() { sysctl -n hw.ncpu } From be5fe268ff8895afbfd6207b1dd43bcf9bb28d4f Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Mon, 12 Dec 2022 11:30:27 +0000 Subject: [PATCH 11/12] force clang on macos --- .github/workflows/onpush-build-macos.yml | 8 +++++--- scripts/install-grpc | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/onpush-build-macos.yml b/.github/workflows/onpush-build-macos.yml index a102a424a..bb4eaee02 100644 --- a/.github/workflows/onpush-build-macos.yml +++ b/.github/workflows/onpush-build-macos.yml @@ -5,11 +5,13 @@ on: push: env: - MACOS_BREW_PACKAGES_FOR_GRPC: "autoconf automake cmake openssl pkg-config" + MACOS_BREW_PACKAGES_FOR_GRPC: "autoconf automake cmake openssl pkg-config libtool" MACOS_BREW_PACKAGES: "autoconf automake boost cmake gmp openssl pkg-config libomp libtool" HOMEBREW_NO_AUTO_UPDATE: 1 PKG_CONFIG_PATH: "/usr/local/opt/openssl/lib/LIBRARY_PATH=" LIBRARY_PATH: /usr/local/lib:/usr/local/opt/openssl/lib + CC: clang + CXX: clang jobs: @@ -26,7 +28,7 @@ jobs: - name: Cache grpc uses: actions/cache@v2 with: - key: grpc-1.44.x-${{ runner.os }} + key: grpc-1.44.x-test-${{ runner.os }} path: depends/grpc - name: Build grpc run: | @@ -65,7 +67,7 @@ jobs: - name: Cache grpc uses: actions/cache@v2 with: - key: grpc-1.44.x-${{ runner.os }} + key: grpc-1.44.x-test-${{ runner.os }} path: depends/grpc - name: Cache pip (for mpc tests) uses: actions/cache@v2 diff --git a/scripts/install-grpc b/scripts/install-grpc index 8cbc1c9af..619f8cfa0 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -55,7 +55,7 @@ pushd depends DIST_LANG=cpp ./configure --prefix ${INSTALL_DIR} make -j $(($(nproc)+1)) fi - sudo make install + make install popd # third_party/protobuf # Install grpc @@ -78,9 +78,9 @@ pushd depends -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \ .. - make -j"$(($(nproc)+1))" + make -j $(($(nproc)+1)) # fi - sudo make install + make install popd # build popd # grpc From 3ed13c42bdc3636ca446e0e5d5ca2e8874e707f5 Mon Sep 17 00:00:00 2001 From: Duncan Tebbs Date: Mon, 12 Dec 2022 18:48:52 +0000 Subject: [PATCH 12/12] more macos ENV vars. replace sudo in install-grpc. --- .github/workflows/onpush-build-macos.yml | 2 ++ scripts/install-grpc | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/onpush-build-macos.yml b/.github/workflows/onpush-build-macos.yml index bb4eaee02..11fc23052 100644 --- a/.github/workflows/onpush-build-macos.yml +++ b/.github/workflows/onpush-build-macos.yml @@ -12,6 +12,8 @@ env: LIBRARY_PATH: /usr/local/lib:/usr/local/opt/openssl/lib CC: clang CXX: clang + CXXFLAGS: "-stdlib=libc++" + LDFLAGS: "-stdlib=libc++" jobs: diff --git a/scripts/install-grpc b/scripts/install-grpc index 619f8cfa0..460fab999 100755 --- a/scripts/install-grpc +++ b/scripts/install-grpc @@ -55,7 +55,7 @@ pushd depends DIST_LANG=cpp ./configure --prefix ${INSTALL_DIR} make -j $(($(nproc)+1)) fi - make install + sudo make install popd # third_party/protobuf # Install grpc @@ -80,7 +80,7 @@ pushd depends make -j $(($(nproc)+1)) # fi - make install + sudo make install popd # build popd # grpc