mirror of
https://github.com/LMMS/lmms.git
synced 2026-04-02 05:16:40 -04:00
* switch to version 1 for msvc-dev-cmd github action * bump msvc build year * try refreshing vcpkg cache msvc * Revert "try refreshing vcpkg cache msvc" This reverts commite8814f8cbd. * try updating vcpkg manually * Revert "bump msvc build year" This reverts commita95c75ee95. * messmerd's review comments * revert the version bump for msvc-dev-cmd * Fix `cd` command --------- Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
338 lines
11 KiB
YAML
338 lines
11 KiB
YAML
---
|
|
name: build
|
|
'on': [push, pull_request]
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
jobs:
|
|
linux:
|
|
name: linux
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/lmms/linux.gcc:20.04
|
|
env:
|
|
CMAKE_OPTS: >-
|
|
-DUSE_WERROR=ON
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
|
-DUSE_COMPILE_CACHE=ON
|
|
CCACHE_MAXSIZE: 0
|
|
CCACHE_NOCOMPRESS: 1
|
|
MAKEFLAGS: -j2
|
|
steps:
|
|
- name: Configure git
|
|
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
- name: Check out
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
- name: Cache ccache data
|
|
uses: actions/cache@v3
|
|
with:
|
|
key: ccache-${{ github.job }}-${{ github.ref }}-${{ github.run_id }}
|
|
restore-keys: |
|
|
ccache-${{ github.job }}-${{ github.ref }}-
|
|
ccache-${{ github.job }}-
|
|
path: ~/.ccache
|
|
- name: Configure
|
|
run: |
|
|
ccache --zero-stats
|
|
source /opt/qt5*/bin/qt5*-env.sh || true
|
|
cmake -S . \
|
|
-B build \
|
|
-DCMAKE_INSTALL_PREFIX=./install \
|
|
$CMAKE_OPTS
|
|
- name: Build
|
|
run: cmake --build build
|
|
- name: Run tests
|
|
run: |
|
|
cd build/tests
|
|
ctest --output-on-failure -j2
|
|
- name: Package
|
|
run: |
|
|
cmake --build build --target install
|
|
cmake --build build --target appimage
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: linux
|
|
path: build/lmms-*.AppImage
|
|
- name: Trim ccache and print statistics
|
|
run: |
|
|
ccache --cleanup
|
|
echo "[ccache config]"
|
|
ccache --show-config
|
|
echo "[ccache stats]"
|
|
ccache --show-stats
|
|
env:
|
|
CCACHE_MAXSIZE: 500M
|
|
macos:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
arch: [ x86_64, arm64 ]
|
|
include:
|
|
- arch: x86_64
|
|
os: macos-13
|
|
xcode: "15.2"
|
|
- arch: arm64
|
|
os: macos-14
|
|
xcode: "15.4"
|
|
name: macos-${{ matrix.arch }}
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
CMAKE_OPTS: >-
|
|
-Werror=dev
|
|
-DUSE_WERROR=ON
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
|
-DUSE_COMPILE_CACHE=ON
|
|
CCACHE_MAXSIZE: 0
|
|
CCACHE_NOCOMPRESS: 1
|
|
MAKEFLAGS: -j3
|
|
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
|
steps:
|
|
- name: Check out
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
- name: Clean up Homebrew download cache
|
|
run: rm -rf ~/Library/Caches/Homebrew/downloads
|
|
- name: Restore Homebrew download cache
|
|
id: cache-homebrew
|
|
uses: actions/cache/restore@v3
|
|
with:
|
|
key: n/a - only restore from restore-keys
|
|
restore-keys: |
|
|
homebrew-${{ matrix.arch }}-
|
|
path: ~/Library/Caches/Homebrew/downloads
|
|
- name: Cache ccache data
|
|
uses: actions/cache@v3
|
|
with:
|
|
key: "ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}\
|
|
-${{ github.run_id }}"
|
|
restore-keys: |
|
|
ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}-
|
|
ccache-${{ github.job }}-${{ matrix.arch }}-
|
|
path: ~/Library/Caches/ccache
|
|
- name: Install dependencies
|
|
run: |
|
|
brew bundle install --verbose
|
|
npm update -g npm
|
|
npm install --location=global appdmg
|
|
env:
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
HOMEBREW_NO_INSTALL_UPGRADE: 1
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
|
- name: Configure
|
|
run: |
|
|
ccache --zero-stats
|
|
mkdir build
|
|
cmake -S . \
|
|
-B build \
|
|
-DCMAKE_INSTALL_PREFIX="../target" \
|
|
-DCMAKE_PREFIX_PATH="$(brew --prefix qt@5)" \
|
|
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
|
|
$CMAKE_OPTS \
|
|
-DUSE_WERROR=OFF
|
|
- name: Build
|
|
run: cmake --build build
|
|
- name: Run tests
|
|
run: |
|
|
cd build/tests
|
|
ctest --output-on-failure -j3
|
|
- name: Package
|
|
run: |
|
|
cmake --build build --target install
|
|
cmake --build build --target dmg
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: macos-${{ matrix.arch }}
|
|
path: build/lmms-*.dmg
|
|
- name: Trim ccache and print statistics
|
|
run: |
|
|
ccache --cleanup
|
|
echo "[ccache config]"
|
|
ccache --show-config
|
|
echo "[ccache stats]"
|
|
ccache --show-stats --verbose
|
|
env:
|
|
CCACHE_MAXSIZE: 500MB
|
|
- name: Save Homebrew download cache
|
|
if: ${{ steps.cache-homebrew.outputs.cache-matched-key != env.key }}
|
|
uses: actions/cache/save@v3
|
|
with:
|
|
key: ${{ env.key }}
|
|
path: ~/Library/Caches/Homebrew/downloads
|
|
env:
|
|
key: "homebrew-${{ matrix.arch }}\
|
|
-${{ hashFiles('Brewfile.lock.json') }}"
|
|
mingw:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
arch: ['32', '64']
|
|
name: mingw${{ matrix.arch }}
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/lmms/linux.mingw:20.04
|
|
env:
|
|
CMAKE_OPTS: >-
|
|
-Werror=dev
|
|
-DUSE_WERROR=ON
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
|
-DUSE_COMPILE_CACHE=ON
|
|
CCACHE_MAXSIZE: 0
|
|
CCACHE_NOCOMPRESS: 1
|
|
MAKEFLAGS: -j2
|
|
steps:
|
|
- name: Enable POSIX MinGW
|
|
run: |
|
|
update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
|
|
update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
|
|
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
|
|
update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
|
|
- name: Configure git
|
|
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
- name: Check out
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
- name: Cache ccache data
|
|
uses: actions/cache@v3
|
|
with:
|
|
key: "ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}\
|
|
-${{ github.run_id }}"
|
|
restore-keys: |
|
|
ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}-
|
|
ccache-${{ github.job }}-${{ matrix.arch }}-
|
|
path: ~/.ccache
|
|
- name: Configure
|
|
run: |
|
|
ccache --zero-stats
|
|
cmake -S . \
|
|
-B build \
|
|
-DCMAKE_INSTALL_PREFIX=./install \
|
|
-DCMAKE_TOOLCHAIN_FILE="./cmake/toolchains/MinGW-W64-${{ matrix.arch }}.cmake" \
|
|
$CMAKE_OPTS
|
|
- name: Build
|
|
run: cmake --build build
|
|
- name: Package
|
|
run: cmake --build build --target package
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: mingw${{ matrix.arch }}
|
|
path: build/lmms-*.exe
|
|
- name: Trim ccache and print statistics
|
|
run: |
|
|
ccache --cleanup
|
|
echo "[ccache config]"
|
|
ccache --show-config
|
|
echo "[ccache stats]"
|
|
ccache --show-stats
|
|
env:
|
|
CCACHE_MAXSIZE: 500M
|
|
msvc:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
arch: ['x86', 'x64']
|
|
name: msvc-${{ matrix.arch }}
|
|
runs-on: windows-2019
|
|
env:
|
|
CCACHE_MAXSIZE: 0
|
|
CCACHE_NOCOMPRESS: 1
|
|
steps:
|
|
- name: Check out
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
- name: Update vcpkg (TEMPORARY)
|
|
run: |
|
|
cd $env:VCPKG_INSTALLATION_ROOT
|
|
git pull
|
|
.\bootstrap-vcpkg.bat
|
|
shell: pwsh
|
|
- name: Cache vcpkg dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v3
|
|
with:
|
|
key: vcpkg-${{ matrix.arch }}-${{ hashFiles('vcpkg.json') }}
|
|
restore-keys: |
|
|
vcpkg-${{ matrix.arch }}-
|
|
path: build\vcpkg_installed
|
|
- name: Cache ccache data
|
|
uses: actions/cache@v3
|
|
with:
|
|
# yamllint disable rule:line-length
|
|
key: "ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}\
|
|
-${{ github.run_id }}"
|
|
restore-keys: |
|
|
ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}-
|
|
ccache-${{ github.job }}-${{ matrix.arch }}-
|
|
path: ~\AppData\Local\ccache
|
|
# yamllint enable rule:line-length
|
|
- name: Install tools
|
|
run: choco install ccache
|
|
- name: Install Qt
|
|
uses: jurplel/install-qt-action@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
|
|
with:
|
|
version: '5.15.2'
|
|
arch: |-
|
|
${{
|
|
fromJSON('
|
|
{
|
|
"x86": "win32_msvc2019",
|
|
"x64": "win64_msvc2019_64"
|
|
}
|
|
')[matrix.arch]
|
|
}}
|
|
archives: qtbase qtsvg qttools
|
|
cache: true
|
|
- name: Set up build environment
|
|
uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
|
|
with:
|
|
arch: ${{ matrix.arch }}
|
|
- name: Configure
|
|
run: |
|
|
ccache --zero-stats
|
|
mkdir build -Force
|
|
cmake -S . `
|
|
-B build `
|
|
-G Ninja `
|
|
--toolchain C:/vcpkg/scripts/buildsystems/vcpkg.cmake `
|
|
-Werror=dev `
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
|
-DUSE_COMPILE_CACHE=ON `
|
|
-DUSE_WERROR=ON `
|
|
-DVCPKG_TARGET_TRIPLET="${{ matrix.arch }}-windows" `
|
|
-DVCPKG_HOST_TRIPLET="${{ matrix.arch }}-windows" `
|
|
-DVCPKG_MANIFEST_INSTALL="${{ env.should_install_manifest }}"
|
|
env:
|
|
should_install_manifest:
|
|
${{ steps.cache-deps.outputs.cache-hit == 'true' && 'NO' || 'YES' }}
|
|
- name: Build
|
|
run: cmake --build build
|
|
- name: Run tests
|
|
run: |
|
|
cd build/tests
|
|
ctest --output-on-failure -j2
|
|
- name: Package
|
|
run: cmake --build build --target package
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: msvc-${{ matrix.arch }}
|
|
path: build\lmms-*.exe
|
|
- name: Trim ccache and print statistics
|
|
run: |
|
|
ccache --cleanup
|
|
echo "[ccache config]"
|
|
ccache --show-config
|
|
echo "[ccache stats]"
|
|
ccache --show-stats --verbose
|
|
env:
|
|
CCACHE_MAXSIZE: 500MB
|