Update buildbot.yml #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Buildbot | |
on: | |
push: | |
branches: [ "redux" ] | |
jobs: | |
build-win: | |
name: Windows | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install the MSVC build tools | |
working-directory: ${{env.GITHUB_WORKSPACE}} | |
run: | | |
# swy: install chocolatey, to make it easy to install other software unattended | |
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) | |
choco install 7zip curl -y --wait --no-progress | |
choco install visualstudio2017buildtools -y --wait --no-progress --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.Component.VC.Runtime.UCRTSDK --add Microsoft.VisualStudio.Component.Windows10SDK --add Microsoft.VisualStudio.Component.Windows10SDK.17763" --force | |
# swy: downloading precompiled versions of qtbase, qttools (for windeployqt) and jom (for a more parallel nmake) | |
mkdir _qt | |
mkdir _qt_download | |
Push-Location _qt_download | |
curl.exe -LJ -o qt-base.7z 'https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_51212/qt.qt5.51212.win32_msvc2017/5.12.12-0-202111241434qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86.7z' | |
curl.exe -LJ -o qt-tools.7z 'https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_51212/qt.qt5.51212.win32_msvc2017/5.12.12-0-202111241434qttools-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86.7z' | |
curl.exe -LJ -o qt-jom.zip 'https://download.qt.io/official_releases/jom/jom.zip' | |
# swy: extracting the downloaded qt binaries | |
7z x qt-base.7z '-o../_qt' -y | |
7z x qt-tools.7z '-o../_qt' -y | |
7z x qt-jom.zip '-o../_qt' -y | |
# swy: turn the qt install from enterprise to foss; remove the licensing checks | |
${qconfig-pri-folder} = '..\_qt\5.12.12\msvc2017\mkspecs\qconfig.pri' | |
(Get-Content ${qconfig-pri-folder}).replace('QT_EDITION = Enterprise', 'QT_EDITION = OpenSource') | Set-Content ${qconfig-pri-folder} | |
(Get-Content ${qconfig-pri-folder}).replace('QT_LICHECK = licheck.exe', '') | Set-Content ${qconfig-pri-folder} | |
# swy: make it find the qt sdk install folder instead of using the default: c:/Users/qt/work/install | |
# keep in mind that Qt won't read UTF-16-encoded text files (the default for Out-File in PowerShell) | |
# plus, even if you choose utf8 it writes a binary BOM/byte-order-mark which makes it not read it | |
# -encoding UTF8NoBOM is only supported on 6+, so use plain ascii, absolutely braindead: | |
# https://stackoverflow.com/a/55077592/674685 | |
"[Paths]"+ "`r`n" +"Prefix = .." | Out-File -encoding ASCII '..\_qt\5.12.12\msvc2017\bin\qt.conf' | |
Pop-Location | |
- name: Build | |
working-directory: ${{env.GITHUB_WORKSPACE}} | |
run: | | |
mkdir _make | |
Push-Location _make | |
# swy: configuring the msvc environment variables | |
Push-Location "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Auxiliary/Build" | |
# swy: https://stackoverflow.com/a/41399983/674685 | |
# Invokes a Cmd.exe shell script and updates the environment. | |
function Invoke-CmdScript { | |
param( | |
[String] $scriptName | |
) | |
$cmdLine = """$scriptName"" $args & set" | |
& $Env:SystemRoot\system32\cmd.exe /c $cmdLine | | |
select-string '^([^=]*)=(.*)$' | foreach-object { | |
$varName = $_.Matches[0].Groups[1].Value | |
$varValue = $_.Matches[0].Groups[2].Value | |
set-item Env:$varName $varValue | |
} | |
} | |
Invoke-CmdScript vcvarsall.bat x86 | |
Pop-Location | |
# swy: configuring the Qt environment variables | |
$env:Path += ";..\_qt\; ..\_qt\5.12.12\msvc2017\bin\" | |
# swy: run qmake and generate the msvc nmake makefile | |
& ..\_qt\5.12.12\msvc2017\bin\qmake ..\openBrf.pro | |
# swy: start the actual build with jom instead of nmake; for speed | |
& ..\_qt\jom | |
Pop-Location | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: compiled | |
path: ./_build | |
retention-days: 90 | |
- name: Pack things up | |
id: pack | |
shell: bash | |
run: | | |
cur_date_ver_tiny="$(date +%Y.%m.%d -u)" | |
cur_date_ver_long="$(date +%Y.%m.%d-%H.%M -u)" | |
cd ./_build | |
7z -mm=Deflate -mfb=258 -mpass=15 a "../openbrf-redux-${cur_date_ver_long}.zip" * | |
- name: Upload Release Asset | |
id: upload-release-asset | |
shell: bash | |
run: | | |
# swy: find the release ID just by going here: https://api.github.com/repos/Swyter/openbrf-redux/releases | |
owner="swyter"; repo="openbrf-redux"; release_id="147972245" | |
FILENAME="$(basename "$(find . -name '*openbrf-redux-*.zip' | sort -r -u | head -n 1)")" | |
GH_ASSET="https://uploads.github.com/repos/$owner/$repo/releases/$release_id/assets?name=$FILENAME" | |
echo "$GH_ASSET"; echo "$FILENAME" | |
if [[ -f "$FILENAME" ]]; then | |
curl --fail --location --data-binary @"$FILENAME" -H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' -H "Content-Type: application/octet-stream" "$GH_ASSET" | |
else | |
echo "[no changes in the folder this time around; skipped]" | |
fi | |
build-lnx: | |
name: Linux | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Install dependencies | |
run: | | |
# swy: absolutely braindead breakage: https://github.com/actions/runner-images/issues/4589#issuecomment-1260157764 | |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |
sudo apt-get update -qq | |
sudo apt-get remove -qq libmono* moby* mono* nginx* php* libgdiplus libpcre2-posix3 libzip4 | |
# Unlock 32bit architecture (for Wine further down) | |
sudo dpkg --add-architecture i386 # for wine32 | |
sudo apt-get update # due to new architecture | |
sudo apt-get install --yes --no-install-recommends -V ppa-purge | |
sudo ppa-purge -y ppa:ubuntu-toolchain-r/test # to unblock | |
sudo apt install wine-stable wine32:i386 -yy --force-yes | |
sudo apt install --install-recommends xvfb tree flip curl unzip lsof jq -yy --force-yes | |
sudo apt install p7zip |