Skip to content

Fix libusb audio and serial #224

Fix libusb audio and serial

Fix libusb audio and serial #224

Workflow file for this run

name: m8c macos arm64 build
on:
push:
pull_request:
workflow_dispatch:
jobs:
build-macos:
runs-on: macos-latest
name: m8c MacOS build (Apple Silicon)
env:
BUILD_DIR: build-arm64
steps:
- name: 'Environment info'
run: |
uname -m
- name: 'Install dependencies'
run: brew install cmake pkg-config sdl3 libserialport
- name: 'Checkout'
uses: actions/checkout@v4
- name: Set current date as env variable
run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
- name: Create Custom Keychain
id: createCustomKeychain
env:
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security list-keychains -s build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security set-keychain-settings build.keychain
- name: Import Apple Developer Certificate
env:
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
echo "${{ secrets.MACOS_CERTIFICATE }}" | base64 --decode > developer_cert.p12
security import developer_cert.p12 -P "$CERTIFICATE_PASSWORD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" build.keychain
- name: 'Configure m8c'
id: configureApplication
run: |
mkdir -p ${{ env.BUILD_DIR }}
pushd ${{ env.BUILD_DIR }}
cmake .. -DCMAKE_BUILD_TYPE=Release -DCODESIGN_CERT_NAME="$CODESIGN_CERT_NAME"
popd
env:
CODESIGN_CERT_NAME: ${{ secrets.MACOS_CODE_SIGN_IDENTITY }}
- name: 'Build and package m8c'
id: buildApplication
continue-on-error: true
run: |
pushd ${{ env.BUILD_DIR }}
cpack -V .
popd
env:
CMAKE_INSTALL_PREFIX: build_output
- name: 'View debug log if compilation fails'
if: failure() && steps.buildApplication.outcome == 'failure'
run: cat /Users/runner/work/m8c/m8c/${{ env.BUILD_DIR }}/_CPack_Packages/Darwin/DragNDrop/PreinstallOutput.log
- name: 'Notarize the App'
run: |
pushd ${{ env.BUILD_DIR }}
APP_PATH=$(find package-output -maxdepth 1 -name "m8c*.dmg" | head -n 1)
xcrun notarytool submit \
--apple-id "$APPLE_ID" \
--team-id "$TEAM_ID" \
--password "$APPLE_PASSWORD" \
--wait \
$APP_PATH
xcrun stapler staple "$APP_PATH"
popd
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }}
TEAM_ID: ${{ secrets.TEAM_ID }}
- name: 'Verify Stapling'
run: |
APP_PATH=$(find "${{ env.BUILD_DIR }}/package-output" -maxdepth 1 -name "m8c*.dmg" | head -n 1)
echo "Verifying stapling on $APP_PATH"
xcrun stapler validate "$APP_PATH"
- name: 'Delete Custom Keychain'
if: steps.createCustomKeychain.outcome == 'success'
run: |
security delete-keychain build.keychain
- name: 'Copy package'
run: |
APP_PATH=$(find "${{ env.BUILD_DIR }}/package-output" -maxdepth 1 -name "m8c*.dmg" | head -n 1)
mv "$APP_PATH" m8c-${{ env.NOW }}-macos-applesilicon.dmg
- name: 'Upload DMG package'
uses: actions/upload-artifact@v4
with:
name: m8c-${{ env.NOW }}-macos-applesilicon
path: |
m8c-${{ env.NOW }}-macos-applesilicon.dmg