summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorBe <be@mixxx.org>2020-11-14 21:23:55 -0600
committerBe <be@mixxx.org>2020-11-18 14:44:02 -0600
commit65214e17fa66fac879c924a45f990a169634d444 (patch)
treed6ebc81dc2178ba98b8f7291f41e75b915613d2b /.github
parente7cf360d04ce2ecb0b41d4774f5ae52f8d076d70 (diff)
build Mixxx on macOS with GitHub Actions
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/build.yml139
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