75b1eaed0c
Noticed only now that Qt 6.5 bumps the macOS requirement to macOS 11. This was basically already effective in prism since with the Qt 6.5 bump pr macOS 10.15 user's wouldn't be able to run this, but updating the requirement here makes it more clear for the end user trying to run prism on macOS 10.15 Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
616 lines
25 KiB
YAML
616 lines
25 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.5.1'
|
|
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.5.1'
|
|
qt_modules: 'qt5compat qtimageformats'
|
|
qt_tools: ''
|
|
|
|
- os: macos-12
|
|
name: macOS
|
|
macosx_deployment_target: 11.0
|
|
qt_ver: 6
|
|
qt_host: mac
|
|
qt_arch: ''
|
|
qt_version: '6.5.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.9
|
|
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.1
|
|
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:
|
|
aqtversion: '==3.1.*'
|
|
py7zrversion: '>=0.20.2'
|
|
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:
|
|
aqtversion: '==3.1.*'
|
|
py7zrversion: '>=0.20.2'
|
|
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 }}
|
|
touch ${{ env.INSTALL_DIR }}/manifest.txt
|
|
for l in $(find ${{ env.INSTALL_DIR }} -type f); do l=$(cygpath -u $l); l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_DIR }}/}; l=${l#./}; echo $l; done >> ${{ env.INSTALL_DIR }}/manifest.txt
|
|
|
|
- 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
|
|
}
|
|
cd ${{ github.workspace }}
|
|
|
|
Get-ChildItem ${{ env.INSTALL_DIR }} -Recurse | ForEach FullName | Resolve-Path -Relative | %{ $_.TrimStart('.\') } | %{ $_.TrimStart('${{ env.INSTALL_DIR }}') } | %{ $_.TrimStart('\') } | Out-File -FilePath ${{ env.INSTALL_DIR }}/manifest.txt
|
|
|
|
|
|
- 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 prismlauncher_filelink.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
|
|
for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=$(cygpath -u $l); l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done >> ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt
|
|
|
|
- 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
|
|
|
|
Get-ChildItem ${{ env.INSTALL_PORTABLE_DIR }} -Recurse | ForEach FullName | Resolve-Path -Relative | %{ $_.TrimStart('.\') } | %{ $_.TrimStart('${{ env.INSTALL_PORTABLE_DIR }}') } | %{ $_.TrimStart('\') } | Out-File -FilePath ${{ env.INSTALL_DIR }}/manifest.txt
|
|
|
|
- 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 }}
|
|
for l in $(find ${{ env.INSTALL_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_DIR }}/manifest.txt
|
|
|
|
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
|
|
for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt
|
|
|
|
|
|
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@v6
|
|
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@v21
|
|
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
|