Skip to content

Disable battery indicator in Linux build for now #697

Disable battery indicator in Linux build for now

Disable battery indicator in Linux build for now #697

Workflow file for this run

name: Build
on:
push:
# Only run on branches (not tags)
branches:
- '*'
workflow_dispatch:
workflow_run:
workflows: ['Update Mixxx']
types: [completed]
env:
VCPKG_ROOT: '${{ github.workspace }}/vcpkg'
MIXXX_ROOT: '${{ github.workspace }}/mixxx'
SCRIPTS_ROOT: '${{ github.workspace }}/scripts'
jobs:
build:
strategy:
matrix:
include:
- name: macOS (arm64)
os: macos-11
triplet: arm64-osx-min1100
host_triplet: x64-osx-min1015
overlay_ports: vcpkg/overlay/osx:vcpkg/overlay/ports
ccache_path: ~/Library/Caches/ccache
cpack_generator: DragNDrop
package_extension: dmg
cmake_args: >-
-DMACOS_BUNDLE=ON
- name: macOS (x86_64)
os: macos-11
triplet: x64-osx-min1015
host_triplet: x64-osx-min1015
overlay_ports: vcpkg/overlay/osx:vcpkg/overlay/ports
ccache_path: ~/Library/Caches/ccache
cpack_generator: DragNDrop
package_extension: dmg
cmake_args: >-
-DMACOS_BUNDLE=ON
- name: Linux (x86_64)
os: ubuntu-latest
triplet: x64-linux
host_triplet: x64-linux
overlay_ports: vcpkg/overlay/ports
ccache_path: ~/.ccache
cpack_generator: TGZ
package_extension: tar.gz
# On Linux we build without battery support since this pulls in a
# dependency on GLib which is tricky to get right in a static linking scenario.
# See https://github.com/fwcd/m1xxx/pull/48#issuecomment-1807378063
cmake_args: >-
-DBATTERY=OFF
name: '${{ matrix.name }}'
runs-on: '${{ matrix.os }}'
env:
DEPS_BASE_NAME: 'deps-${{ matrix.triplet }}'
ARTIFACT_BASE_NAME: 'mixxx-${{ matrix.triplet }}'
VCPKG_DEFAULT_TRIPLET: '${{ matrix.triplet }}'
VCPKG_DEFAULT_HOST_TRIPLET: '${{ matrix.host_triplet }}'
VCPKG_OVERLAY_TRIPLETS: vcpkg/overlay/triplets
VCPKG_OVERLAY_PORTS: '${{ matrix.overlay_ports }}'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0' # to compute the monotonic version correctly
submodules: true
- name: Fetch versions and paths
run: |
for mod in "${{ env.VCPKG_ROOT }}" "${{ env.MIXXX_ROOT }}"; do
echo "$(basename "$mod")_commit=$(cd $mod && git rev-parse HEAD)" >> "$GITHUB_ENV"
echo "$(basename "$mod")_commit_short=$(cd $mod && git rev-parse --short HEAD)" >> "$GITHUB_ENV"
done
echo "mixxx_version=$(scripts/mixxx-version)" >> "$GITHUB_ENV"
shell: bash
- name: Set up Linux build environment
if: runner.os == 'Linux'
run: ${{ env.SCRIPTS_ROOT }}/install-apt-deps
- name: Set up macOS build environment
if: runner.os == 'macOS'
run: |
${{ env.SCRIPTS_ROOT }}/install-brew-deps
xcrun --show-sdk-version
# Build dependencies
- name: Bootstrap vcpkg
run: ${{ env.SCRIPTS_ROOT }}/bootstrap-vcpkg
- name: Set up vcpkg cache
uses: actions/cache@v3
with:
path: ${{ env.VCPKG_ROOT }}/installed
# TODO: Include hashed list of installed packages in key?
key: vcpkg-installed-${{ env.VCPKG_DEFAULT_TRIPLET }}-${{ env.vcpkg_commit }}-${{ github.ref }}-${{ github.run_number }}
restore-keys: |
vcpkg-installed-${{ env.VCPKG_DEFAULT_TRIPLET }}-${{ env.vcpkg_commit }}-${{ github.ref }}-
vcpkg-installed-${{ env.VCPKG_DEFAULT_TRIPLET }}-${{ env.vcpkg_commit }}-
- name: Check disk space
run: df -h
- name: Output vcpkg dependency graph
run: ${{ env.SCRIPTS_ROOT }}/install-vcpkg-deps --graph --no-install --no-remove
- name: Install vcpkg packages
run: ${{ env.SCRIPTS_ROOT }}/install-vcpkg-deps --clean-after-build
- name: Upload vcpkg build logs
if: always()
uses: actions/upload-artifact@v3
with:
name: 'vcpkg-buildlogs-${{ matrix.triplet }}'
path: ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log
- name: Save vcpkg cache
uses: actions/cache/save@v3
with:
# TODO: Share the key and the path with the previous step
path: ${{ env.VCPKG_ROOT }}/installed
key: vcpkg-installed-${{ env.VCPKG_DEFAULT_TRIPLET }}-${{ env.vcpkg_commit }}-${{ github.ref }}-${{ github.run_number }}
# Export dependency archive to artifacts
- name: Export vcpkg archive
run: >-
${{ env.SCRIPTS_ROOT }}/vcpkg export
--x-all-installed
--zip
--output="${{ env.DEPS_BASE_NAME }}-${{ env.vcpkg_commit_short }}"
- name: Upload vcpkg archive
uses: actions/upload-artifact@v3
with:
name: ${{ env.DEPS_BASE_NAME }}-${{ env.vcpkg_commit_short }}
path: ${{ env.VCPKG_ROOT }}/${{ env.DEPS_BASE_NAME }}-${{ env.vcpkg_commit_short }}.zip
# Build Mixxx
- name: Configure build cache size
run: ccache -M 500M
- name: Set up build cache
uses: actions/cache@v3
with:
path: ${{ matrix.ccache_path }}
key: ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-${{ github.ref }}-${{ github.run_number }}
restore-keys: |
ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-${{ github.ref }}-
ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-
ccache-${{ matrix.triplet }}-
- name: Configure Mixxx build
run: >-
cmake
-G Ninja
-B build
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DQT6=ON
${{ matrix.cmake_args }}
working-directory: mixxx
- name: Upload Mixxx configuration logs
if: always()
uses: actions/upload-artifact@v3
with:
name: configurelogs
path: ${{ env.MIXXX_ROOT }}/build/CMakeFiles/*.log
- name: Build Mixxx
run: cmake --build build --target mixxx
working-directory: mixxx
- name: Save build cache
if: always()
uses: actions/cache/save@v3
with:
# TODO: Share the key with the setup step
path: ${{ matrix.ccache_path }}
key: ccache-${{ matrix.triplet }}-${{ env.mixxx_commit }}-${{ github.ref }}-${{ github.run_number }}
- name: Package Mixxx
run: cpack -G ${{ matrix.cpack_generator }} -V && mv *.${{ matrix.package_extension }} "mixxx-${{ matrix.triplet }}-${{ env.mixxx_version }}.${{ matrix.package_extension }}"
working-directory: mixxx/build
- name: Upload packaged Mixxx binaries
uses: actions/upload-artifact@v3
with:
name: ${{ env.ARTIFACT_BASE_NAME }}
path: ${{ env.MIXXX_ROOT }}/build/*.${{ matrix.package_extension }}
release:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [build]
env:
PACKAGE_GLOB: 'mixxx-*/*'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0' # to compute the monotonic version correctly
submodules: true
- name: Fetch versions and paths
run: echo "mixxx_version=$(scripts/mixxx-version)" >> "$GITHUB_ENV"
shell: bash
- name: Download artifacts for all builds
uses: actions/download-artifact@v3
with:
# TODO: Only download artifacts starting with 'mixxx-' to avoid needlessly downloading the dependency archives
path: '${{ env.MIXXX_ROOT }}/build'
- name: Create a release
env:
GH_TOKEN: ${{ github.token }}
run: |
version='${{ env.mixxx_version }}'
tag="v$version"
gh release create --title "$tag" "$tag" || true
gh release upload --clobber "$tag" '${{ env.MIXXX_ROOT }}'/build/${{ env.PACKAGE_GLOB }}