4b36d1e3ea
We do not have a lot of expertise dealing with Snap and as it is currently breaking our CI, it might be good to drop support for it. This does not mean that it won't come back in the future, but as it stands, it was effectively unmaintained and was only used for nightly builds anyway. Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
600 lines
24 KiB
YAML
600 lines
24 KiB
YAML
name: Build
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
build_type:
|
|
description: Type of build (Debug, Release, RelWithDebInfo, MinSizeRel)
|
|
type: string
|
|
default: Debug
|
|
is_qt_cached:
|
|
description: Enable Qt caching or not
|
|
type: string
|
|
default: true
|
|
secrets:
|
|
SPARKLE_ED25519_KEY:
|
|
description: Private key for signing Sparkle updates
|
|
required: false
|
|
WINDOWS_CODESIGN_CERT:
|
|
description: Certificate for signing Windows builds
|
|
required: false
|
|
WINDOWS_CODESIGN_PASSWORD:
|
|
description: Password for signing Windows builds
|
|
required: false
|
|
CACHIX_AUTH_TOKEN:
|
|
description: Private token for authenticating against Cachix cache
|
|
required: false
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
|
|
- os: ubuntu-20.04
|
|
qt_ver: 5
|
|
|
|
- os: ubuntu-20.04
|
|
qt_ver: 6
|
|
qt_host: linux
|
|
qt_arch: ''
|
|
qt_version: '6.2.4'
|
|
qt_modules: 'qt5compat qtimageformats'
|
|
qt_tools: ''
|
|
|
|
- os: windows-2022
|
|
name: "Windows-MinGW-w64"
|
|
msystem: clang64
|
|
vcvars_arch: 'amd64_x86'
|
|
|
|
- os: windows-2022
|
|
name: "Windows-MSVC-Legacy"
|
|
msystem: ''
|
|
architecture: 'win32'
|
|
vcvars_arch: 'amd64_x86'
|
|
qt_ver: 5
|
|
qt_host: windows
|
|
qt_arch: 'win32_msvc2019'
|
|
qt_version: '5.15.2'
|
|
qt_modules: ''
|
|
qt_tools: 'tools_openssl_x86'
|
|
|
|
- os: windows-2022
|
|
name: "Windows-MSVC"
|
|
msystem: ''
|
|
architecture: 'x64'
|
|
vcvars_arch: 'amd64'
|
|
qt_ver: 6
|
|
qt_host: windows
|
|
qt_arch: ''
|
|
qt_version: '6.4.2'
|
|
qt_modules: 'qt5compat qtimageformats'
|
|
qt_tools: ''
|
|
|
|
- os: windows-2022
|
|
name: "Windows-MSVC-arm64"
|
|
msystem: ''
|
|
architecture: 'arm64'
|
|
vcvars_arch: 'amd64_arm64'
|
|
qt_ver: 6
|
|
qt_host: windows
|
|
qt_arch: 'win64_msvc2019_arm64'
|
|
qt_version: '6.4.2'
|
|
qt_modules: 'qt5compat qtimageformats'
|
|
qt_tools: ''
|
|
|
|
- os: macos-12
|
|
name: macOS
|
|
macosx_deployment_target: 10.15
|
|
qt_ver: 6
|
|
qt_host: mac
|
|
qt_arch: ''
|
|
qt_version: '6.3.0'
|
|
qt_modules: 'qt5compat qtimageformats'
|
|
qt_tools: ''
|
|
|
|
- os: macos-12
|
|
name: macOS-Legacy
|
|
macosx_deployment_target: 10.13
|
|
qt_ver: 5
|
|
qt_host: mac
|
|
qt_version: '5.15.2'
|
|
qt_modules: ''
|
|
qt_tools: ''
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx_deployment_target }}
|
|
INSTALL_DIR: "install"
|
|
INSTALL_PORTABLE_DIR: "install-portable"
|
|
INSTALL_APPIMAGE_DIR: "install-appdir"
|
|
BUILD_DIR: "build"
|
|
CCACHE_VAR: ""
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
|
|
|
steps:
|
|
##
|
|
# PREPARE
|
|
##
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'true'
|
|
|
|
- name: 'Setup MSYS2'
|
|
if: runner.os == 'Windows' && matrix.msystem != ''
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.msystem }}
|
|
update: true
|
|
install: >-
|
|
git
|
|
mingw-w64-x86_64-binutils
|
|
pacboy: >-
|
|
toolchain:p
|
|
cmake:p
|
|
extra-cmake-modules:p
|
|
ninja:p
|
|
qt6-base:p
|
|
qt6-svg:p
|
|
qt6-imageformats:p
|
|
quazip-qt6:p
|
|
ccache:p
|
|
qt6-5compat:p
|
|
cmark:p
|
|
|
|
- name: Force newer ccache
|
|
if: runner.os == 'Windows' && matrix.msystem == '' && inputs.build_type == 'Debug'
|
|
run: |
|
|
choco install ccache --version 4.7.1
|
|
|
|
- name: Setup ccache
|
|
if: (runner.os != 'Windows' || matrix.msystem == '') && inputs.build_type == 'Debug'
|
|
uses: hendrikmuhs/ccache-action@v1.2.8
|
|
with:
|
|
key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}-${{ matrix.architecture }}
|
|
|
|
- name: Retrieve ccache cache (Windows MinGW-w64)
|
|
if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug'
|
|
uses: actions/cache@v3.3.0
|
|
with:
|
|
path: '${{ github.workspace }}\.ccache'
|
|
key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ matrix.os }}-mingw-w64-ccache
|
|
|
|
- name: Setup ccache (Windows MinGW-w64)
|
|
if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug'
|
|
shell: msys2 {0}
|
|
run: |
|
|
ccache --set-config=cache_dir='${{ github.workspace }}\.ccache'
|
|
ccache --set-config=max_size='500M'
|
|
ccache --set-config=compression=true
|
|
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: Set short version
|
|
shell: bash
|
|
run: |
|
|
ver_short=`git rev-parse --short HEAD`
|
|
echo "VERSION=$ver_short" >> $GITHUB_ENV
|
|
|
|
- name: Install Dependencies (Linux)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt-get -y update
|
|
sudo apt-get -y install ninja-build extra-cmake-modules scdoc
|
|
|
|
- name: Install Dependencies (macOS)
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
brew update
|
|
brew install ninja extra-cmake-modules
|
|
|
|
- name: Install Qt (Linux)
|
|
if: runner.os == 'Linux' && matrix.qt_ver != 6
|
|
run: |
|
|
sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5
|
|
|
|
- name: Install host Qt (Windows MSVC arm64)
|
|
if: runner.os == 'Windows' && matrix.architecture == 'arm64'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ matrix.qt_version }}
|
|
host: 'windows'
|
|
target: 'desktop'
|
|
arch: ''
|
|
modules: ${{ matrix.qt_modules }}
|
|
tools: ${{ matrix.qt_tools }}
|
|
cache: ${{ inputs.is_qt_cached }}
|
|
cache-key-prefix: host-qt-arm64-windows
|
|
dir: ${{ github.workspace }}\HostQt
|
|
set-env: false
|
|
|
|
- name: Install Qt (macOS, Linux, Qt 6 & Windows MSVC)
|
|
if: runner.os == 'Linux' && matrix.qt_ver == 6 || runner.os == 'macOS' || (runner.os == 'Windows' && matrix.msystem == '')
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ matrix.qt_version }}
|
|
host: ${{ matrix.qt_host }}
|
|
target: 'desktop'
|
|
arch: ${{ matrix.qt_arch }}
|
|
modules: ${{ matrix.qt_modules }}
|
|
tools: ${{ matrix.qt_tools }}
|
|
cache: ${{ inputs.is_qt_cached }}
|
|
|
|
- name: Install MSVC (Windows MSVC)
|
|
if: runner.os == 'Windows' # We want this for MinGW builds as well, as we need SignTool
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
vsversion: 2022
|
|
arch: ${{ matrix.vcvars_arch }}
|
|
|
|
- name: Prepare AppImage (Linux)
|
|
if: runner.os == 'Linux' && matrix.qt_ver != 5
|
|
run: |
|
|
wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
|
|
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage"
|
|
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage"
|
|
|
|
${{ github.workspace }}/.github/scripts/prepare_JREs.sh
|
|
|
|
- name: Add QT_HOST_PATH var (Windows MSVC arm64)
|
|
if: runner.os == 'Windows' && matrix.architecture == 'arm64'
|
|
run: |
|
|
echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2019_64" >> $env:GITHUB_ENV
|
|
|
|
##
|
|
# CONFIGURE
|
|
##
|
|
|
|
- name: Configure CMake (macOS)
|
|
if: runner.os == 'macOS' && matrix.qt_ver == 6
|
|
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=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -G Ninja
|
|
|
|
- name: Configure CMake (macOS-Legacy)
|
|
if: runner.os == 'macOS' && matrix.qt_ver == 5
|
|
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=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -G Ninja
|
|
|
|
- name: Configure CMake (Windows MinGW-w64)
|
|
if: runner.os == 'Windows' && matrix.msystem != ''
|
|
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=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -G Ninja
|
|
|
|
- name: Configure CMake (Windows MSVC)
|
|
if: runner.os == 'Windows' && matrix.msystem == ''
|
|
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 }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON
|
|
# https://github.com/ccache/ccache/wiki/MS-Visual-Studio (I coudn't figure out the compiler prefix)
|
|
if ("${{ env.CCACHE_VAR }}")
|
|
{
|
|
Copy-Item C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/ccache.exe -Destination C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/cl.exe
|
|
echo "CLToolExe=cl.exe" >> $env:GITHUB_ENV
|
|
echo "CLToolPath=C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/" >> $env:GITHUB_ENV
|
|
echo "TrackFileAccess=false" >> $env:GITHUB_ENV
|
|
}
|
|
# Needed for ccache, but also speeds up compile
|
|
echo "UseMultiToolTask=true" >> $env:GITHUB_ENV
|
|
|
|
- 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=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -G Ninja
|
|
|
|
##
|
|
# BUILD
|
|
##
|
|
|
|
- name: Build
|
|
if: runner.os != 'Windows'
|
|
run: |
|
|
cmake --build ${{ env.BUILD_DIR }}
|
|
|
|
- name: Build (Windows MinGW-w64)
|
|
if: runner.os == 'Windows' && matrix.msystem != ''
|
|
shell: msys2 {0}
|
|
run: |
|
|
cmake --build ${{ env.BUILD_DIR }}
|
|
|
|
- name: Build (Windows MSVC)
|
|
if: runner.os == 'Windows' && matrix.msystem == ''
|
|
run: |
|
|
cmake --build ${{ env.BUILD_DIR }} --config ${{ inputs.build_type }}
|
|
|
|
##
|
|
# TEST
|
|
##
|
|
|
|
- name: Test
|
|
if: runner.os != 'Windows'
|
|
run: |
|
|
ctest -E "^example64|example$" --test-dir build --output-on-failure
|
|
|
|
- name: Test (Windows MinGW-w64)
|
|
if: runner.os == 'Windows' && matrix.msystem != ''
|
|
shell: msys2 {0}
|
|
run: |
|
|
ctest -E "^example64|example$" --test-dir build --output-on-failure
|
|
|
|
- name: Test (Windows MSVC)
|
|
if: runner.os == 'Windows' && matrix.msystem == '' && matrix.architecture != 'arm64'
|
|
run: |
|
|
ctest -E "^example64|example$" --test-dir build --output-on-failure -C ${{ inputs.build_type }}
|
|
|
|
##
|
|
# PACKAGE BUILDS
|
|
##
|
|
|
|
- name: Package (macOS)
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
cmake --install ${{ env.BUILD_DIR }}
|
|
|
|
cd ${{ env.INSTALL_DIR }}
|
|
chmod +x "PrismLauncher.app/Contents/MacOS/prismlauncher"
|
|
sudo codesign --sign - --deep --force --entitlements "../program_info/App.entitlements" --options runtime "PrismLauncher.app/Contents/MacOS/prismlauncher"
|
|
mv "PrismLauncher.app" "Prism Launcher.app"
|
|
tar -czf ../PrismLauncher.tar.gz *
|
|
|
|
- name: Make Sparkle signature (macOS)
|
|
if: matrix.name == 'macOS'
|
|
run: |
|
|
if [ '${{ secrets.SPARKLE_ED25519_KEY }}' != '' ]; then
|
|
brew install openssl@3
|
|
echo '${{ secrets.SPARKLE_ED25519_KEY }}' > ed25519-priv.pem
|
|
signature=$(/usr/local/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.tar.gz -inkey ed25519-priv.pem | openssl base64 | tr -d \\n)
|
|
rm ed25519-priv.pem
|
|
cat >> $GITHUB_STEP_SUMMARY << EOF
|
|
### Artifact Information :information_source:
|
|
- :memo: Sparkle Signature (ed25519): \`$signature\`
|
|
EOF
|
|
else
|
|
cat >> $GITHUB_STEP_SUMMARY << EOF
|
|
### Artifact Information :information_source:
|
|
- :warning: Sparkle Signature (ed25519): No private key available (likely a pull request or fork)
|
|
EOF
|
|
fi
|
|
|
|
- name: Package (Windows MinGW-w64)
|
|
if: runner.os == 'Windows' && matrix.msystem != ''
|
|
shell: msys2 {0}
|
|
run: |
|
|
cmake --install ${{ env.BUILD_DIR }}
|
|
|
|
- name: Package (Windows MSVC)
|
|
if: runner.os == 'Windows' && matrix.msystem == ''
|
|
run: |
|
|
cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build_type }}
|
|
|
|
cd ${{ env.INSTALL_DIR }}
|
|
if ("${{ matrix.qt_ver }}" -eq "5")
|
|
{
|
|
Copy-Item D:/a/PrismLauncher/Qt/Tools/OpenSSL/Win_x86/bin/libcrypto-1_1.dll -Destination libcrypto-1_1.dll
|
|
Copy-Item D:/a/PrismLauncher/Qt/Tools/OpenSSL/Win_x86/bin/libssl-1_1.dll -Destination libssl-1_1.dll
|
|
}
|
|
|
|
- name: Fetch codesign certificate (Windows)
|
|
if: runner.os == 'Windows'
|
|
shell: bash # yes, we are not using MSYS2 or PowerShell here
|
|
run: |
|
|
echo '${{ secrets.WINDOWS_CODESIGN_CERT }}' | base64 --decode > codesign.pfx
|
|
|
|
- name: Sign executable (Windows)
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
if (Get-Content ./codesign.pfx){
|
|
cd ${{ env.INSTALL_DIR }}
|
|
# We ship the exact same executable for portable and non-portable editions, so signing just once is fine
|
|
SignTool sign /fd sha256 /td sha256 /f ../codesign.pfx /p '${{ secrets.WINDOWS_CODESIGN_PASSWORD }}' /tr http://timestamp.digicert.com prismlauncher.exe
|
|
} else {
|
|
":warning: Skipped code signing for Windows, as certificate was not present." >> $env:GITHUB_STEP_SUMMARY
|
|
}
|
|
|
|
- name: Package (Windows MinGW-w64, portable)
|
|
if: runner.os == 'Windows' && matrix.msystem != ''
|
|
shell: msys2 {0}
|
|
run: |
|
|
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 MSVC, portable)
|
|
if: runner.os == 'Windows' && matrix.msystem == ''
|
|
run: |
|
|
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'
|
|
run: |
|
|
cd ${{ env.INSTALL_DIR }}
|
|
makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi"
|
|
|
|
- name: Sign installer (Windows)
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
if (Get-Content ./codesign.pfx){
|
|
SignTool sign /fd sha256 /td sha256 /f codesign.pfx /p '${{ secrets.WINDOWS_CODESIGN_PASSWORD }}' /tr http://timestamp.digicert.com PrismLauncher-Setup.exe
|
|
} else {
|
|
":warning: Skipped code signing for Windows, as certificate was not present." >> $env:GITHUB_STEP_SUMMARY
|
|
}
|
|
|
|
- name: Package (Linux)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_DIR }}
|
|
|
|
cd ${{ env.INSTALL_DIR }}
|
|
tar --owner root --group root -czf ../PrismLauncher.tar.gz *
|
|
|
|
- name: Package (Linux, portable)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_PORTABLE_DIR }}
|
|
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable
|
|
|
|
cd ${{ env.INSTALL_PORTABLE_DIR }}
|
|
tar -czf ../PrismLauncher-portable.tar.gz *
|
|
|
|
- name: Package AppImage (Linux)
|
|
if: runner.os == 'Linux' && matrix.qt_ver != 5
|
|
shell: bash
|
|
run: |
|
|
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_APPIMAGE_DIR }}/usr
|
|
|
|
export OUTPUT="PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage"
|
|
|
|
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/PrismLauncher/Qt/${{ matrix.qt_version }}/gcc_64/plugins/iconengines/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines
|
|
|
|
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
|
|
cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}//usr/lib/
|
|
|
|
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"
|
|
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-17-openjdk/lib/server"
|
|
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-17-openjdk/lib"
|
|
export LD_LIBRARY_PATH
|
|
|
|
./linuxdeploy-x86_64.AppImage --appdir ${{ env.INSTALL_APPIMAGE_DIR }} --output appimage --plugin qt -i ${{ env.INSTALL_APPIMAGE_DIR }}/usr/share/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg
|
|
|
|
##
|
|
# UPLOAD BUILDS
|
|
##
|
|
|
|
- name: Upload binary tarball (macOS)
|
|
if: runner.os == 'macOS'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ matrix.name }}-${{ env.VERSION }}-${{ inputs.build_type }}
|
|
path: PrismLauncher.tar.gz
|
|
|
|
- name: Upload binary zip (Windows)
|
|
if: runner.os == 'Windows'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ matrix.name }}-${{ env.VERSION }}-${{ inputs.build_type }}
|
|
path: ${{ env.INSTALL_DIR }}/**
|
|
|
|
- name: Upload binary zip (Windows, portable)
|
|
if: runner.os == 'Windows'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ 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: PrismLauncher-${{ matrix.name }}-Setup-${{ env.VERSION }}-${{ inputs.build_type }}
|
|
path: PrismLauncher-Setup.exe
|
|
|
|
- name: Upload binary tarball (Linux, Qt 5)
|
|
if: runner.os == 'Linux' && matrix.qt_ver != 6
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}
|
|
path: PrismLauncher.tar.gz
|
|
|
|
- name: Upload binary tarball (Linux, portable, Qt 5)
|
|
if: runner.os == 'Linux' && matrix.qt_ver != 6
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ runner.os }}-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
|
|
path: PrismLauncher-portable.tar.gz
|
|
|
|
- name: Upload binary tarball (Linux, Qt 6)
|
|
if: runner.os == 'Linux' && matrix.qt_ver !=5
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ runner.os }}-Qt6-${{ env.VERSION }}-${{ inputs.build_type }}
|
|
path: PrismLauncher.tar.gz
|
|
|
|
- name: Upload binary tarball (Linux, portable, Qt 6)
|
|
if: runner.os == 'Linux' && matrix.qt_ver != 5
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ runner.os }}-Qt6-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
|
|
path: PrismLauncher-portable.tar.gz
|
|
|
|
- name: Upload AppImage (Linux)
|
|
if: runner.os == 'Linux' && matrix.qt_ver != 5
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
|
|
path: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
|
|
|
|
- name: ccache stats (Windows MinGW-w64)
|
|
if: runner.os == 'Windows' && matrix.msystem != ''
|
|
shell: msys2 {0}
|
|
run: |
|
|
ccache -s
|
|
|
|
flatpak:
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
|
|
options: --privileged
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
if: inputs.build_type == 'Debug'
|
|
with:
|
|
submodules: 'true'
|
|
- name: Build Flatpak (Linux)
|
|
if: inputs.build_type == 'Debug'
|
|
uses: flatpak/flatpak-github-actions/flatpak-builder@v5
|
|
with:
|
|
bundle: "Prism Launcher.flatpak"
|
|
manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml
|
|
|
|
nix:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
package:
|
|
- prismlauncher
|
|
- prismlauncher-qt5
|
|
steps:
|
|
- name: Clone repository
|
|
if: inputs.build_type == 'Debug'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'true'
|
|
- name: Install nix
|
|
if: inputs.build_type == 'Debug'
|
|
uses: cachix/install-nix-action@v20
|
|
with:
|
|
install_url: https://nixos.org/nix/install
|
|
extra_nix_config: |
|
|
auto-optimise-store = true
|
|
experimental-features = nix-command flakes
|
|
- uses: cachix/cachix-action@v12
|
|
if: inputs.build_type == 'Debug'
|
|
with:
|
|
name: prismlauncher
|
|
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
|
- name: Build
|
|
if: inputs.build_type == 'Debug'
|
|
run: nix build .#${{ matrix.package }} --print-build-logs
|