-
Notifications
You must be signed in to change notification settings - Fork 0
159 lines (136 loc) · 4.5 KB
/
osgeo4w.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
name: OSGeo4W Windows 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/osgeo4w.yml'
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
osgeo4w-packages:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.osgeo4w-packages.outputs.matrix }}
steps:
- name: Determine package names
id: osgeo4w-packages
run: |
set -x
REPO=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY
read RELBRANCH < <(git ls-remote --heads $REPO "refs/heads/release-*_*" | sed -e '/\^{}$/d' -ne 's#^.*refs/heads/release-#release-#p' | sort -V | tail -1)
read OLTRBRANCH LTRBRANCH < <(git ls-remote --tags $REPO | sed -e '/\^{}$/d' -ne 's#^.*refs/tags/ltr-#release-#p' | sort -V | tail -2 | paste -s)
[ "$RELBRANCH" != "$LTRBRANCH" ] || LTRBRANCH=$OLTRBRANCH
if [ -n "$GITHUB_BASE_REF" ]; then
branch=$GITHUB_BASE_REF
else
branch=${GITHUB_REF##*/}
fi
case "$branch" in
$LTRBRANCH|queued_ltr_backports)
p=qgis-ltr-dev
;;
$RELBRANCH)
p=qgis-rel-dev
;;
master)
p="qgis-dev qgis-qt6-dev"
;;
*)
echo "Could not determine package name"
exit 1
;;
esac
echo "matrix={\"pkg\":[\"${p// /\",\"}\"]}">>$GITHUB_OUTPUT
osgeo4w-build:
name: OSGeo4W Windows Build
needs: osgeo4w-packages
runs-on: windows-latest
env:
CCACHE_DIR: build/ccache
PATH: C:\WINDOWS\system32;C:\Windows
strategy:
matrix: ${{ fromJson(needs.osgeo4w-packages.outputs.matrix) }}
steps:
- name: Dump environment
shell: cmd
run: |
echo ::group::environment
set
echo ::endgroup::
- name: Configure git
shell: cmd
run: |
git config --global core.autocrlf false
git config --global init.defaultBranch master
git config --global --add safe.directory %GITHUB_WORKSPACE%\src\%PKG%\qgis
env:
PATH: C:\Program Files\Git\bin;C:\WINDOWS\system32;C:\Windows
PKG: ${{ matrix.pkg }}
- uses: actions/checkout@v4
with:
repository: 'jef-n/o4w-playground'
env:
PATH: C:\Program Files\Git\bin;C:\WINDOWS\system32;C:\Windows
- name: Setup OSGeo4W build environment
shell: cmd
run: |
call bootstrap.cmd none
cygwin\bin\cygpath -aw /bin >>%GITHUB_PATH%
- name: Configure build
shell: bash {0}
env:
SHELLOPTS: igncr
PKG: ${{ matrix.pkg }}
GITHUB_EVENT_NUMBER: ${{ github.event.number }}
run: |
set -x
export PATH=/bin:/usr/bin
export HOME=$(cygpath -au "$USERPROFILE")
REPO=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY
echo PKG=$PKG >>$GITHUB_ENV
echo REPO=$REPO >>$GITHUB_ENV
echo REF=$GITHUB_REF >>$GITHUB_ENV
echo PKGDESC="QGIS build of $GITHUB_REF" >>$GITHUB_ENV
echo BUILDNAMEPREFIX=$BUILDNAMEPREFIX >>$GITHUB_ENV
echo OSGEO4W_BUILD_RDEPS=0 >>$GITHUB_ENV
echo HOME=$HOME >>$GITHUB_ENV
git config --global --list
- uses: actions/checkout@v4
with:
path: 'src/${{ env.PKG }}/qgis'
- name: Restore build cache
uses: actions/cache/restore@v4
with:
path: build
key: build-ccache-osgeo4w-${{ github.event.pull_request.base.ref || github.ref_name }}
restore-keys: |
build-ccache-osgeo4w-master
- name: Build QGIS
shell: cmd
run: |
REM .sh and .py used in tests
assoc ShellScript=*.sh
ftype ShellScript=%GITHUB_WORKSPACE%\cygin\bin\bash.exe %1 %*
assoc PythonScript=*.py
ftype PythonScript=%GITHUB_WORKSPACE%\osgeo4w\osgeo4w\bin\python3.exe %1 %*
call bootstrap.cmd %PKG%
- name: Save build cache for push only
uses: actions/cache/save@v4
if: ${{ github.event_name == 'push' }}
with:
path: build
key: build-ccache-osgeo4w-${{ github.ref_name }}-${{ github.run_id }}