From ded869974c0c6dfec108d358278798759133051f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C5=93ur?= Date: Mon, 1 Apr 2024 05:31:30 +0800 Subject: [PATCH] ci: support macos-14 universal builds (#6626) * support macos-14 universal builds * Apply suggestions from code review Co-authored-by: Dzmitry Neviadomski * add the arch to the job's name * revert support macos-14 universal builds --------- Co-authored-by: Dzmitry Neviadomski --- .github/workflows/actions.yml | 69 +++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index ad165ed5b..832f24501 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -277,8 +277,8 @@ jobs: run: | if grep 'warning:' makelog; then exit 1; fi - macos-12: - runs-on: macos-12 + macos-14-arm64: + runs-on: macos-14 needs: [ what-to-make ] if: ${{ needs.what-to-make.outputs.make-cli == 'true' || needs.what-to-make.outputs.make-daemon == 'true' || needs.what-to-make.outputs.make-gtk == 'true' || needs.what-to-make.outputs.make-mac == 'true' || needs.what-to-make.outputs.make-qt == 'true' || needs.what-to-make.outputs.make-tests == 'true' || needs.what-to-make.outputs.make-utils == 'true' }} steps: @@ -309,7 +309,7 @@ jobs: -G Ninja \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX=pfx \ - -DCMAKE_OSX_ARCHITECTURES='x86_64' \ + -DCMAKE_OSX_ARCHITECTURES='arm64' \ -DCMAKE_PREFIX_PATH=`brew --prefix`/opt/qt \ -DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \ -DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \ @@ -585,7 +585,68 @@ jobs: name: source-tarball path: obj/transmission*.tar.* - macos-12-from-tarball: + macos-14-universal-from-tarball: + needs: [ make-source-tarball, what-to-make ] + if: ${{ needs.what-to-make.outputs.make-mac == 'true' }} + runs-on: macos-14 + steps: + - name: Show Configuration + run: | + echo '${{ toJSON(needs) }}' + echo '${{ toJSON(runner) }}' + sw_vers + - name: Get Dependencies + run: | + brew install cmake gettext ninja node pkg-config + - name: Get Source + uses: actions/download-artifact@v4 + with: + name: source-tarball + - name: Extract Source + run: mkdir src && tar xf transmission*.tar.* -C src --strip-components 1 + - name: Configure + run: | + cmake \ + -S src \ + -B obj \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_PREFIX=pfx \ + -DCMAKE_OSX_ARCHITECTURES='x86_64;arm64' \ + -DCMAKE_PREFIX_PATH=`brew --prefix`/opt/qt \ + -DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \ + -DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \ + -DENABLE_GTK=OFF \ + -DENABLE_MAC=${{ (needs.what-to-make.outputs.make-mac == 'true') && 'ON' || 'OFF' }} \ + -DENABLE_QT=OFF \ + -DENABLE_TESTS=${{ (needs.what-to-make.outputs.make-tests == 'true') && 'ON' || 'OFF' }} \ + -DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \ + -DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} \ + -DENABLE_WERROR=ON \ + -DRUN_CLANG_TIDY=OFF \ + -DUSE_SYSTEM_EVENT2=OFF \ + -DUSE_SYSTEM_DEFLATE=OFF \ + -DUSE_SYSTEM_DHT=OFF \ + -DUSE_SYSTEM_MINIUPNPC=OFF \ + -DUSE_SYSTEM_NATPMP=OFF \ + -DUSE_SYSTEM_UTP=OFF \ + -DUSE_SYSTEM_B64=OFF \ + -DUSE_SYSTEM_PSL=OFF + - name: Make + run: cmake --build obj --config RelWithDebInfo + - name: Test + if: ${{ needs.what-to-make.outputs.make-tests == 'true' }} + env: + TMPDIR: /private/tmp + run: cmake -E chdir obj ctest -j $(sysctl -n hw.logicalcpu) --build-config RelWithDebInfo --output-on-failure + - name: Install + run: cmake --build obj --config RelWithDebInfo --target install/strip + - uses: actions/upload-artifact@v4 + with: + name: binaries-${{ github.job }} + path: pfx/**/* + + macos-12-x86_64-from-tarball: needs: [ make-source-tarball, what-to-make ] if: ${{ needs.what-to-make.outputs.make-cli == 'true' || needs.what-to-make.outputs.make-daemon == 'true' || needs.what-to-make.outputs.make-gtk == 'true' || needs.what-to-make.outputs.make-mac == 'true' || needs.what-to-make.outputs.make-qt == 'true' || needs.what-to-make.outputs.make-tests == 'true' || needs.what-to-make.outputs.make-utils == 'true' }} runs-on: macos-12