diff options
author | Be <be@mixxx.org> | 2020-11-14 21:23:55 -0600 |
---|---|---|
committer | Be <be@mixxx.org> | 2020-11-18 14:44:02 -0600 |
commit | 65214e17fa66fac879c924a45f990a169634d444 (patch) | |
tree | d6ebc81dc2178ba98b8f7291f41e75b915613d2b /.github/workflows | |
parent | e7cf360d04ce2ecb0b41d4774f5ae52f8d076d70 (diff) |
build Mixxx on macOS with GitHub Actions
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/build.yml | 139 |
1 files changed, 112 insertions, 27 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 918b0f0f01..5e45fb6e3b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,9 +4,18 @@ on: push: pull_request: +env: + CMAKEFLAGS_COMMON: -DCMAKE_BUILD_TYPE=Release -DBATTERY=ON -DBROADCAST=ON -DBULK=ON -DDEBUG_ASSERTIONS_FATAL=ON -DHID=ON -DLILV=ON -DOPUS=ON -DQTKEYCHAIN=ON -DVINYLCONTROL=ON + GTEST_COLOR: 1 + CTEST_OUTPUT_ON_FAILURE: 1 + # Render analyzer waveform tests to an offscreen buffer + QT_QPA_PLATFORM: offscreen + # GitHub Actions automatically zstd compresses caches + CCACHE_NOCOMPRESS: true + jobs: - ubuntu-gcc: - name: Ubuntu 18.04 / gcc + build-ubuntu-gcc: + name: Ubuntu 18.04 (gcc) runs-on: ubuntu-18.04 steps: - name: Check out repository @@ -66,27 +75,10 @@ jobs: ${{ runner.os }}-ccache-${{ github.head_ref }} ${{ runner.os }}-ccache - name: Configure - # TODO for Ubuntu Focal: Replace "-DFAAD=ON" with "-DFFMPEG=ON" - run: | - cmake \ - -DCMAKE_BUILD_TYPE=Debug \ - -DWARNINGS_FATAL=ON \ - -DBATTERY=ON \ - -DBROADCAST=ON \ - -DBULK=ON \ - -DHID=ON \ - -DLILV=ON \ - -DOPUS=ON \ - -DQTKEYCHAIN=ON \ - -DVINYLCONTROL=ON \ - -DFAAD=ON \ - -DKEYFINDER=ON \ - -DLOCALECOMPARE=ON \ - -DMAD=ON \ - -DMODPLUG=ON \ - -DWAVPACK=ON \ - .. - working-directory: cmake_build + run: cmake $CMAKE_FLAGS_COMMON $CMAKE_FLAGS_UBUNTU -S . -B cmake_build + env: + # TODO for Ubuntu Focal: Replace "-DFAAD=ON" with "-DFFMPEG=ON" + CMAKE_FLAGS_UBUNTU: -DFAAD=ON -DKEYFINDER=ON -DLOCALECOMPARE=ON -DMAD=ON -DMODPLUG=ON -DWAVPACK=ON - name: Set up problem matcher uses: ammaraskar/gcc-problem-matcher@master - name: Build @@ -95,10 +87,6 @@ jobs: - name: Test run: ctest --timeout 45 working-directory: cmake_build - env: - GTEST_COLOR: 1 - CTEST_OUTPUT_ON_FAILURE: 1 - QT_QPA_PLATFORM: offscreen - name: Package run: cpack -G DEB working-directory: cmake_build @@ -107,3 +95,100 @@ jobs: with: name: Ubuntu DEB path: cmake_build/*.deb + + build-mac: + name: macOS 10.15 + runs-on: macos-10.15 + env: + MIXXX_ENVNAME: 2.3-1db6c06-sdk10.15-macosminimum10.12-x86_64 + # macOS 10.12 is the minimum requirement for Qt 5.12. + # Check the minimum requirement when updating to a build environment + # with an updated Qt version. + MACOSX_DEPLOYMENT_TARGET: 10.12 + APPLE_CODESIGN_IDENTITY: 2C2B5D3EDCE82BA55E22E9A67F16F8D03E390870 + steps: + - name: clone Git repository + uses: actions/checkout@v2 + - name: ccache + uses: actions/cache@v2 + env: + cache-name: ccache + with: + path: /Users/runner/Library/Caches/ccache + key: ${{ runner.os }}-ccache-${{ github.head_ref }}-${{ github.run_number }} + restore-keys: | + ${{ runner.os }}-ccache-${{ github.head_ref }} + ${{ runner.os }}-ccache + - name: macOS build environment cache + uses: actions/cache@v2 + env: + cache-name: macOS build environment + with: + path: /Users/runner/buildenv + key: macOS-build-environment-${{ env.MIXXX_ENVNAME }} + - name: import code signing identity + env: + MACOS_CODESIGN_OPENSSL_PASSWORD: ${{ secrets.MACOS_CODESIGN_OPENSSL_PASSWORD }} + MACOS_CODESIGN_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CODESIGN_CERTIFICATE_PASSWORD }} + run: | + if [ -n "$MACOS_CODESIGN_OPENSSL_PASSWORD" ] && [ -n "$MACOS_CODESIGN_CERTIFICATE_PASSWORD" ]; then + # Decrypt the certificate + openssl enc -aes-256-cbc -d -md sha512 \ + -k ${MACOS_CODESIGN_OPENSSL_PASSWORD} \ + -in /Users/runner/work/mixxx/mixxx/cmake/macos_developer_id_codesign_certificate.p12.enc \ + -out ~/certificate.p12 + + # Create a temporary keychain for the certificate and import it. + security create-keychain -p mixxx Mixxx.keychain + security unlock-keychain -p mixxx Mixxx.keychain + security import ~/certificate.p12 -k Mixxx.keychain \ + -P ${MACOS_CODESIGN_CERTIFICATE_PASSWORD} -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple: -k mixxx Mixxx.keychain + # Add keychain to search list + security list-keychains -s Mixxx.keychain + fi + - name: build + run: | + mkdir -p /Users/runner/buildenv + export MIXXX_ENVPATH="/Users/runner/buildenv/$MIXXX_ENVNAME" + if [ ! -d "$MIXXX_ENVPATH" ]; then + # TODO: download from downloads.mixxx.org + curl "http://beasintheverb.me/${MIXXX_ENVNAME}.tar.gz" -o /Users/runner/buildenv/${MIXXX_ENVNAME}.tar.gz + tar xf /Users/runner/buildenv/${MIXXX_ENVNAME}.tar.gz -C /Users/runner/buildenv + rm /Users/runner/buildenv/${MIXXX_ENVNAME}.tar.gz + fi + export QT_DIR="$(find "${MIXXX_ENVPATH}" -type d -path "*/cmake/Qt5")" + export QT_QPA_PLATFORM_PLUGIN_PATH="$(find "${MIXXX_ENVPATH}" -type d -path "*/plugins")" + + export PATH="${MIXXX_ENVPATH}/bin:$PATH" + ccache -M 5G + + if [ -n "$MACOS_CODESIGN_OPENSSL_PASSWORD" ] && [ -n "$MACOS_CODESIGN_CERTIFICATE_PASSWORD" ]; then + export CMAKE_FLAGS_MAC="$CMAKE_FLAGS_MAC -DAPPLE_CODESIGN_IDENTITY=${APPLE_CODESIGN_IDENTITY}" + fi + + cd /Users/runner/work/mixxx/mixxx + mkdir cmake_build + cd cmake_build + cmake -L $CMAKEFLAGS $CMAKEFLAGS_MACOS -DCMAKE_PREFIX_PATH=${MIXXX_ENVPATH} -DQt5_DIR=${QT_DIR} .. + cmake --build . --parallel $(sysctl -n hw.physicalcpu) + cmake --build . --target benchmark + #TODO: fix disabled test + ctest --timeout 45 --exclude-regex DirectoryDAOTest.relocateDirectory + ccache -s + env: + CMAKEFLAGS_MACOS: -DCOREAUDIO=ON -DHSS1394=ON -DMACOS_BUNDLE=ON + - name: package app bundle + working-directory: cmake_build + run: | + cpack -G DragNDrop + if [ -n "$MACOS_CODESIGN_OPENSSL_PASSWORD" ] && [ -n "$MACOS_CODESIGN_CERTIFICATE_PASSWORD" ]; then + codesign --verbose=4 --deep --force --options runtime \ + --sign $APPLE_CODESIGN_IDENTITY \ + --entitlements ../build/osx/entitlements.plist *.dmg + fi + - name: upload macOS DMG artifact + uses: actions/upload-artifact@v2 + with: + name: macOS-DMG + path: cmake_build/*.dmg |