Skip to content

build-osx.sh: hdiutil workaround #401

build-osx.sh: hdiutil workaround

build-osx.sh: hdiutil workaround #401

Workflow file for this run

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
pattern: 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
pattern: 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
pattern: 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://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.7z
7z x -o. -y boost.7z
mv boost_1_75_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
pattern: 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://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.7z
7z x -o. -y boost.7z
mv boost_1_75_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
pattern: LibreCAD*.exe
retention-days: 2
UpdateAssets:
if: github.repository_owner == 'LibreCAD'
needs: [BuildLinux, 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
macOSAssets/LibreCAD*.dmg
win*Assets/LibreCAD*.exe
snapAssets/LibreCAD*.snap
LICENSE