aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml104
1 files changed, 85 insertions, 19 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index abab0ed0..fbbc1417 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -20,20 +20,31 @@ jobs:
include:
- os: ubuntu-20.04
+ qt_ver: 5
- os: ubuntu-20.04
appimage: true
+ qt_ver: 6
+ qt_host: linux
+ qt_version: '6.3.1'
+ qt_modules: 'qt5compat qtimageformats'
- os: windows-2022
- name: "Windows-i686"
+ name: "Windows-Legacy"
msystem: mingw32
+ qt_ver: 5
- os: windows-2022
- name: "Windows-x86_64"
- msystem: mingw64
+ name: "Windows"
+ msystem: mingw32
+ qt_ver: 6
- - os: macos-11
- macosx_deployment_target: 10.13
+ - os: macos-12
+ macosx_deployment_target: 10.14
+ qt_ver: 6
+ qt_host: mac
+ qt_version: '6.3.1'
+ qt_modules: 'qt5compat qtimageformats'
runs-on: ${{ matrix.os }}
@@ -43,6 +54,7 @@ jobs:
INSTALL_PORTABLE_DIR: "install-portable"
INSTALL_APPIMAGE_DIR: "install-appdir"
BUILD_DIR: "build"
+ CCACHE_VAR: ""
steps:
##
@@ -64,9 +76,15 @@ jobs:
pacboy: >-
toolchain:p
cmake:p
+ extra-cmake-modules:p
ninja:p
- qt5:p
+ qt${{ matrix.qt_ver }}-base:p
+ qt${{ matrix.qt_ver }}-svg:p
+ qt${{ matrix.qt_ver }}-imageformats:p
+ quazip-qt${{ matrix.qt_ver }}:p
ccache:p
+ nsis:p
+ ${{ matrix.qt_ver == 6 && 'qt6-5compat:p' || '' }}
- name: Setup ccache
if: runner.os != 'Windows' && inputs.build_type == 'Debug'
@@ -84,6 +102,12 @@ jobs:
ccache -p # Show config
ccache -z # Zero stats
+ - name: Use ccache on Debug builds only
+ if: inputs.build_type == 'Debug'
+ shell: bash
+ run: |
+ echo "CCACHE_VAR=ccache" >> $GITHUB_ENV
+
- name: Retrieve ccache cache (Windows)
if: runner.os == 'Windows' && inputs.build_type == 'Debug'
uses: actions/cache@v3.0.2
@@ -99,22 +123,32 @@ jobs:
ver_short=`git rev-parse --short HEAD`
echo "VERSION=$ver_short" >> $GITHUB_ENV
- - name: Install Qt (macOS)
- if: runner.os == 'macOS'
+ - name: Install Dependencies (Linux)
+ if: runner.os == 'Linux'
run: |
- brew update
- brew install qt@5 ninja
+ sudo apt-get -y update
+ sudo apt-get -y install ninja-build extra-cmake-modules
- - name: Update Qt (AppImage)
- if: runner.os == 'Linux' && matrix.appimage == true
+ - name: Install Dependencies (macOS)
+ if: runner.os == 'macOS'
run: |
- sudo add-apt-repository ppa:savoury1/qt-5-15
+ brew update
+ brew install ninja extra-cmake-modules
- name: Install Qt (Linux)
- if: runner.os == 'Linux'
+ if: runner.os == 'Linux' && matrix.appimage != true
run: |
- sudo apt-get -y update
- sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 ninja-build
+ sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 qt5-image-formats-plugins
+
+ - name: Install Qt (macOS and AppImage)
+ if: matrix.qt_ver == 6 && runner.os != 'Windows'
+ uses: jurplel/install-qt-action@v2
+ with:
+ version: ${{ matrix.qt_version }}
+ host: ${{ matrix.qt_host }}
+ target: 'desktop'
+ modules: ${{ matrix.qt_modules }}
+ aqtversion: ==2.1.*
- name: Prepare AppImage (Linux)
if: runner.os == 'Linux' && matrix.appimage == true
@@ -132,18 +166,18 @@ jobs:
- name: Configure CMake (macOS)
if: runner.os == 'macOS'
run: |
- cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DQt5_DIR=/usr/local/opt/qt@5 -DCMAKE_PREFIX_PATH=/usr/local/opt/qt@5 -DLauncher_BUILD_PLATFORM=macOS -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja
+ cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DLauncher_BUILD_PLATFORM=macOS -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -G Ninja
- name: Configure CMake (Windows)
if: runner.os == 'Windows'
shell: msys2 {0}
run: |
- cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=${{ matrix.name }} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja
+ cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=${{ matrix.name }} -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -G Ninja
- name: Configure CMake (Linux)
if: runner.os == 'Linux'
run: |
- cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=Linux -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja
+ cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=Linux -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -G Ninja
##
# BUILD
@@ -161,6 +195,21 @@ jobs:
cmake --build ${{ env.BUILD_DIR }}
##
+ # TEST
+ ##
+
+ - name: Test
+ if: runner.os != 'Windows'
+ run: |
+ ctest --test-dir build --output-on-failure
+
+ - name: Test (Windows)
+ if: runner.os == 'Windows'
+ shell: msys2 {0}
+ run: |
+ ctest --test-dir build --output-on-failure
+
+ ##
# PACKAGE BUILDS
##
@@ -213,6 +262,13 @@ jobs:
cp -r ${{ env.INSTALL_DIR }} ${{ env.INSTALL_PORTABLE_DIR }} # cmake install on Windows is slow, let's just copy instead
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable
+ - name: Package (Windows, installer)
+ if: runner.os == 'Windows'
+ shell: msys2 {0}
+ run: |
+ cd ${{ env.INSTALL_DIR }}
+ makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi"
+
- name: Package (Linux)
if: runner.os == 'Linux' && matrix.appimage != true
run: |
@@ -241,11 +297,14 @@ jobs:
chmod +x linuxdeploy-*.AppImage
mkdir -p ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-{8,17}-openjdk
+ mkdir -p ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines
cp -r ${{ github.workspace }}/JREs/jre8/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-8-openjdk
cp -r ${{ github.workspace }}/JREs/jre17/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-17-openjdk
+ cp -r /home/runner/work/PolyMC/Qt/${{ matrix.qt_version }}/gcc_64/plugins/iconengines/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines
+
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-8-openjdk/lib/amd64/server"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-8-openjdk/lib/amd64"
@@ -280,6 +339,13 @@ jobs:
name: PolyMC-${{ matrix.name }}-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
path: ${{ env.INSTALL_PORTABLE_DIR }}/**
+ - name: Upload installer (Windows)
+ if: runner.os == 'Windows'
+ uses: actions/upload-artifact@v3
+ with:
+ name: PolyMC-${{ matrix.name }}-Setup-${{ env.VERSION }}-${{ inputs.build_type }}
+ path: PolyMC-Setup.exe
+
- name: Upload binary tarball (Linux)
if: runner.os == 'Linux' && matrix.appimage != true
uses: actions/upload-artifact@v3