QGIS/.github/workflows/mingw64.yml
Matthias Kuhn 666983c678
Update python deps, add numpy (#59010)
* Update python deps, add numpy

* Fix master build failures

* One ccache per target branch
2024-10-09 10:54:17 +02:00

131 lines
4.2 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: 🪟 MingW64 Windows 64bit Build
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
on:
push:
branches:
- master
- release-**
- queued_ltr_backports
paths:
- 'src/**'
- 'external/**'
- 'python/**'
- 'tests/**'
- 'ms-windows/**'
- 'CMakeLists.txt'
- '.github/workflows/mingw64.yml'
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
mingw64-build:
name: MinGW64 Windows Build
runs-on: ubuntu-latest
container:
image: fedora:39
options: --security-opt seccomp=unconfined
volumes:
- ${{ github.workspace }}:/w
steps:
- uses: actions/checkout@v4
# To be removed
# Workaround a bug where the initial /etc/dnf/dnf.conf file contains
# just the "tsflags=nodocs" line
- name: Replace broken dnf.conf
run: printf '[main]\ngpgcheck=True\ninstallonly_limit=3\nclean_requirements_on_remove=True\nbest=False\nskip_if_unavailable=True\ntsflags=nodocs' > /etc/dnf/dnf.conf
- name: Update system
run: dnf -y update
- name: Install core dependencies
run: dnf -y install zip
- name: Install build dependencies
run: ./ms-windows/mingw/mingwdeps.sh
# Node.js and Yarn for server landingpage webapp
- uses: actions/setup-node@v4
with:
node-version: '17'
- name: Make yarn available
run: corepack enable
- name: Create ccache dir
run: mkdir -p /w/.ccache/QGIS
- name: Restore build cache
uses: actions/cache/restore@v4
with:
path: /w/.ccache/QGIS
key: build-ccache-mingw64-${{ github.event.pull_request.base.ref || github.ref_name }}
restore-keys: |
build-ccache-mingw64-master
- name: Build QGIS Application
run: CCACHE_DIR=/w/.ccache/QGIS ./ms-windows/mingw/build.sh x86_64 nodebug 4
- name: Save build cache for push only
uses: actions/cache/save@v4
if: ${{ github.event_name == 'push' }}
with:
path: /w/.ccache/QGIS
key: build-ccache-mingw64-${{ github.ref_name }}-${{ github.run_id }}
- name: Create Portable zip
run: |
DISTROOT=build_mingw64/dist/usr/x86_64-w64-mingw32/sys-root/mingw
DEBUGROOT=dist_debug
for file in $(find $DISTROOT -name '*.debug' \( -type l -or -type f \)); do
DEST=${file/$DISTROOT/$DEBUGROOT}
mkdir -p "$(dirname $DEST)"
sudo mv "$file" "$DEST"
done
sudo mv $DISTROOT QGIS-Portable
zip -r qgis-portable-win64.zip QGIS-Portable
(cd $DEBUGROOT && zip -r - *) > qgis-portable-win64-debugsym.zip
- name: Save PR number to zips
run: |
echo ${{ github.event.number }} | tee pr_number
zip -u qgis-portable-win64.zip pr_number
zip -u qgis-portable-win64-debugsym.zip pr_number
echo ${{ github.event.pull_request.head.sha }} | tee git_commit
zip -u qgis-portable-win64.zip git_commit
zip -u qgis-portable-win64-debugsym.zip git_commit
- name: Upload QGIS for Windows 64bit
uses: actions/upload-artifact@v4
id: artifact-win64
with:
name: QGIS for Windows 64bit
path: qgis-portable-win64.zip
- name: Upload QGIS for Windows 64bit Debug Symbols
uses: actions/upload-artifact@v4
id: artifact-win64-debug
with:
name: QGIS for Windows 64bit Debug Symbols
path: qgis-portable-win64-debugsym.zip
- name: Schedule download comment
uses: ./.github/actions/post_sticky_comment
if: github.event_name == 'pull_request'
with:
marker: mingw64
body: |
### 🪟 Windows builds
Download [Windows builds of this PR for testing](${{ steps.artifact-win64.outputs.artifact-url }}).
Debug symbols for this build are available [here](${{ steps.artifact-win64-debug.outputs.artifact-url }}).
*(Built from commit ${{ github.event.pull_request.head.sha }})*
pr: ${{ github.event.number }}