Issue #2024: initial aarch64 support #468
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: Continuous build | |
on: | |
push: | |
branches: | |
- master | |
- 2.2.1 | |
jobs: | |
BuildLinux: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
ref: 2.2.1 | |
- name: Install Qt5 | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '5.15.*' | |
- name: Install dependencies | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -qq install \ | |
libgl-dev libmuparser-dev libboost-dev librsvg2-bin libfreetype6-dev libicu-dev pkg-config libfuse2 | |
sudo rm -rf /usr/local/lib/android | |
- name: Install Clang | |
run: | | |
sudo apt-get -qq install clang-10 clang-tools-10 | |
- name: Build and analyze | |
run: | | |
export CC=g++ | |
export ANALYZE="scan-build-10 -o out --use-cc=g++ --use-analyzer=/usr/bin/clang++ " | |
${ANALYZE}qmake -r librecad.pro CONFIG+=debug_and_release PREFIX=/usr | |
${ANALYZE}make release -j$(nproc) | |
- name: Create report repository | |
run: | | |
cd out | |
find . -mindepth 2 -type f -print -exec mv {} . \; | |
git config --global user.email "[email protected]" | |
git config --global user.name "GHA CI [bot]" | |
git config --global init.defaultBranch gh-pages | |
git init | |
git add . | |
git commit -m "latest analyzer report" | |
- name: Push changes | |
if: github.repository_owner == 'LibreCAD' | |
uses: ad-m/github-push-action@master | |
with: | |
repository: ${{github.repository_owner}}/static-analyzer-reports | |
github_token: ${{secrets.LC_PUSH_ANALYZER_REPORT}} | |
branch: gh-pages | |
force: true | |
directory: out | |
- name: Create AppImage | |
run: | | |
./CI/build-appimg.sh | |
pwd | |
echo ${{github.workspace}} | |
ls ${{github.workspace}}/ | |
ls ${{github.workspace}}/**.AppImage | |
ls | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linuxAssets | |
path: ${{github.workspace}}/LibreCAD*.AppImage | |
retention-days: 2 | |
BuildLinuxAarch64: | |
runs-on: ubuntu-22.04-arm | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
ref: 2.2.1 | |
- name: Install dependencies | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -qq install libqt5svg5 libqwt-qt5-dev imagemagick | |
sudo apt-get -qq install qt5-qmake libqt5core5a libqt5gui5 libqt5widgets5 libqt5printsupport5 libqt5svg5-dev \ | |
libqt5pdf5 libqt5scripttools5 libqt5dbus5 libqt5charts5-dev \ | |
libgl-dev libmuparser-dev libboost-dev librsvg2-bin libfreetype6-dev libicu-dev pkg-config libfuse2 | |
sudo rm -rf /usr/local/lib/android | |
- name: Build | |
run: | | |
/usr/lib/qt5/bin/qmake -r librecad.pro CONFIG+=debug_and_release PREFIX=/usr | |
make release -j$(nproc) | |
- name: Create AppImage | |
run: | | |
./CI/build-appimg-aarch64.sh | |
pwd | |
echo ${{github.workspace}} | |
ls ${{github.workspace}}/ | |
ls ${{github.workspace}}/**.AppImage | |
ls | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linuxAarch64Assets | |
path: ${{github.workspace}}/LibreCAD*.AppImage | |
retention-days: 2 | |
BuildSnap: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
ref: 2.2.1 | |
- name: install snap | |
uses: samuelmeuli/action-snapcraft@v2 | |
- name: Create snapcraft | |
run: | | |
pwd | |
ls | |
ls scripts | |
bash ./scripts/createSnap.sh | |
mv librecad*.snap LibreCAD-`git describe --always`.snap | |
- name: Uploading snap | |
uses: actions/upload-artifact@v4 | |
with: | |
name: snapAssets | |
path: ${{github.workspace}}/LibreCAD*.snap | |
retention-days: 2 | |
BuildMacOS: | |
runs-on: macos-13 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
ref: 2.2.1 | |
- name: Install Qt5 | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '5.15.*' | |
host: 'mac' | |
target: 'desktop' | |
arch: 'clang_64' | |
- name: update Qt5 | |
run: | | |
sed -i'' -e 's:isEmpty(QMAKE_DEFAULT_LIBDIRS)|isEmpty(QMAKE_DEFAULT_INCDIRS):isEmpty("H"):' $Qt5_Dir/mkspecs/features/toolchain.prf | |
sed -i'' -e 's:error("failed to parse default search paths from compiler output"):LIBRECAD_SDK=:' $Qt5_Dir/mkspecs/features/toolchain.prf | |
- name: Install dependencies | |
run: | | |
rm -f /usr/local/bin/2to3 | |
brew install boost | |
# XProtect can cause random failures if it decides that the DMG we create | |
# during the packaging phase is malware. | |
# TODO: Do it in a cleaner way | |
# Inspiration: https://github.com/servo/servo/pull/30779 | |
- name: Kill XProtectBehaviorService | |
run: | | |
echo Killing XProtect. | |
sudo pkill -9 XProtect >/dev/null || true | |
- name: Build and packaging | |
run: | | |
scripts/build-osx.sh | |
mv LibreCAD.dmg LibreCAD-`git describe --always`.dmg | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macOSAssets | |
path: ${{github.workspace}}/LibreCAD*.dmg | |
retention-days: 2 | |
BuildWindows: | |
runs-on: windows-2019 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
ref: 2.2.1 | |
- name: Uninstall incorrect mingw | |
run: | | |
choco uninstall mingw --force | |
choco uninstall strawberryperl --force | |
- name: Install Qt-5.15 | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '5.15.*' | |
host: 'windows' | |
target: 'desktop' | |
arch: 'win32_mingw81' | |
dir: '..' | |
install-deps: 'true' | |
cache: 'false' | |
cache-key-prefix: 'install-qt-action' | |
setup-python: 'true' | |
set-env: 'true' | |
tools-only: 'false' | |
aqtversion: '==3.1.*' | |
py7zrversion: '==0.20.*' | |
extra: '--external 7z' | |
- name: Install boost | |
shell: bash | |
run: | | |
curl -# -L -o boost.7z https://archives.boost.io/release/1.87.0/source/boost_1_87_0.7z | |
7z x -o. -y boost.7z | |
mv boost_1_87_0 ../boost | |
rm boost.7z | |
- name: install mingw-32 | |
shell: cmd | |
run: | | |
aqt install-tool windows desktop tools_mingw qt.tools.win32_mingw810 | |
- name: Debugging | |
if: ${{always()}} | |
shell: cmd | |
run: | | |
set | |
echo. | |
dir c:\ | |
echo. | |
dir d:\ | |
echo. | |
dir d:\a | |
echo. | |
dir | |
echo. | |
dir .. | |
echo. | |
dir ..\boost | |
echo. | |
dir ..\Qt | |
echo. | |
dir ..\Qt\5.15.2 | |
- name: Build | |
run: | | |
set PATH=${{github.workspace}}\Tools\mingw810_32\bin;%PATH% | |
copy CI\custom-win.pri custom.pri | |
copy CI\custom-win.nsh scripts\postprocess-windows\custom.nsh | |
echo SET: | |
set | |
pushd "${{github.workspace}}\scripts" | |
build-windows.bat | |
shell: cmd | |
- name: Rename installer | |
run: | | |
mv generated/LibreCAD-Installer.exe LibreCAD-`git describe --always`.exe | |
shell: bash | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: win32Assets | |
path: ${{github.workspace}}/LibreCAD*.exe | |
retention-days: 2 | |
BuildWindows64: | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
ref: 2.2.1 | |
- name: Uninstall incorrect mingw | |
run: | | |
choco uninstall mingw --force | |
choco uninstall strawberryperl --force | |
#- name: Install MinGW8.1 64-bit | |
# uses: msys2/setup-msys2@v2 | |
# with: | |
# msystem: MINGW64 | |
- name: Install Qt-5.15 | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '5.15.*' | |
host: 'windows' | |
target: 'desktop' | |
arch: 'win64_mingw81' | |
dir: '..' | |
install-deps: 'true' | |
cache: 'false' | |
cache-key-prefix: 'install-qt-action' | |
setup-python: 'true' | |
set-env: 'true' | |
tools-only: 'false' | |
aqtversion: '==3.1.*' | |
py7zrversion: '==0.20.*' | |
extra: '--external 7z' | |
tools: 'tools_mingw,qt.tools.win64_mingw810 tools_qtcreator,qt.tools.qtcreator' | |
- name: Install boost | |
shell: bash | |
run: | | |
curl -# -L -o boost.7z https://archives.boost.io/release/1.87.0/source/boost_1_87_0.7z | |
7z x -o. -y boost.7z | |
mv boost_1_87_0 ../boost | |
rm boost.7z | |
- name: Debugging | |
if: ${{always()}} | |
shell: cmd | |
run: | | |
set | |
echo. | |
dir c:\ | |
echo. | |
dir d:\ | |
echo. | |
dir d:\a | |
echo. | |
dir | |
echo. | |
dir .. | |
echo. | |
dir ..\boost | |
echo. | |
dir /b /s ..\Qt | |
echo. | |
- name: Build | |
run: | | |
#set PATH=C:\msys64\mingw64\bin;%PATH% | |
copy CI\custom-win.pri custom.pri | |
copy CI\custom-win-x64.nsh scripts\postprocess-windows\custom.nsh | |
echo SET: | |
set | |
pushd "${{github.workspace}}\scripts" | |
build-windows.bat | |
shell: cmd | |
- name: Rename installer | |
run: | | |
mv generated/LibreCAD-Installer.exe LibreCAD-`git describe --always`-win64.exe | |
shell: bash | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: win64Assets | |
path: ${{github.workspace}}/LibreCAD*.exe | |
retention-days: 2 | |
UpdateAssets: | |
if: github.repository_owner == 'LibreCAD' | |
needs: [BuildLinux, BuildLinuxAarch64, BuildMacOS, BuildWindows, BuildWindows64, BuildSnap] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
ref: 2.2.1 | |
- name: Fetch artifacts | |
uses: actions/download-artifact@v4 | |
- name: Upload latest pre-release | |
uses: "marvinpinto/action-automatic-releases@latest" | |
with: | |
repo_token: "${{secrets.GITHUB_TOKEN}}" | |
automatic_release_tag: "2.2.1_rc-latest" | |
prerelease: true | |
draft: false | |
title: "Release Candidate" | |
files: | | |
linuxAssets/LibreCAD*.AppImage | |
linuxAssetsAarch64/LibreCAD*.AppImage | |
macOSAssets/LibreCAD*.dmg | |
win*Assets/LibreCAD*.exe | |
snapAssets/LibreCAD*.snap | |
LICENSE | |