Skip to content

Add libupower-glib-dev dependency #646

Add libupower-glib-dev dependency

Add libupower-glib-dev dependency #646

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]
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
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
cpack_generator: TGZ
package_extension: tar.gz
cmake_args: ''
name: '${{ matrix.name }}'
runs-on: '${{ matrix.os }}'
env:
DEPS_BASE_NAME: 'mixxx-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 }}'
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
MIXXX_ROOT: ${{ github.workspace }}/mixxx
SCRIPTS_ROOT: ${{ github.workspace }}/scripts
steps:
- uses: actions/checkout@v3
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
# 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: $HOME/Library/Caches/ccache
key: ccache-${{ env.mixxx_commit }}-${{ github.ref }}-${{ github.run_number }}
restore-keys: |
ccache-${{ env.mixxx_commit }}-${{ github.ref }}-
ccache-${{ env.mixxx_commit }}-
ccache-
- 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: mixxx-configurelogs
path: ${{ env.MIXXX_ROOT }}/build/CMakeFiles/*.log
- name: Build Mixxx
run: cmake --build build --target mixxx
working-directory: mixxx
- 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 }}
- name: Create tag
if: github.ref == 'refs/heads/main'
run: |
version="${{ env.mixxx_version }}"
tag="v$version"
git fetch --tags
if git rev-parse "$tag" >/dev/null 2>&1; then
echo "tag_created=false" >> "$GITHUB_ENV"
else
git tag -am "Version $version" "$tag"
git push origin "$tag"
echo "tag=$tag" >> "$GITHUB_ENV"
echo "tag_created=true" >> "$GITHUB_ENV"
fi
shell: bash
- name: Create GitHub release
if: ${{ env.tag_created == 'true' }}
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.tag }}
name: ${{ env.mixxx_version }}
files: ${{ env.MIXXX_ROOT }}/build/*.${{ matrix.package_extension }}