Skip to content

Commit 3cb0c8b

Browse files
authored
Refactor MinGW cross-compilation toolchain build into a separate workflow (#14)
1 parent 5974c1f commit 3cb0c8b

File tree

3 files changed

+147
-149
lines changed

3 files changed

+147
-149
lines changed

.github/workflows/build-package.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ env:
3131

3232
jobs:
3333
build:
34+
name: Build ${{ inputs.package_name }}
3435
runs-on: windows-latest
3536

3637
steps:

.github/workflows/main.yml

Lines changed: 28 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build MinGW and MSYS2 toolchain
1+
name: Build MinGW and MSYS2 toolchains
22

33
on:
44
push:
@@ -14,168 +14,45 @@ on:
1414
default: "woarm64"
1515

1616
jobs:
17-
mingw-w64-cross-headers:
18-
uses: ./.github/workflows/build-package.yml
17+
mingw-cross-toolchain:
18+
name: MinGW cross-compilation toolchain
19+
uses: ./.github/workflows/mingw-cross-toolchain.yml
1920
with:
20-
package_name: mingw-w64-cross-headers
21-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
22-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
23-
24-
mingw-w64-cross-binutils:
25-
needs: mingw-w64-cross-headers
26-
uses: ./.github/workflows/build-package.yml
27-
with:
28-
package_name: mingw-w64-cross-binutils
29-
needs: ${{ toJson(needs) }}
30-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
31-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
32-
33-
mingw-w64-cross-gcc-stage1:
34-
needs: [mingw-w64-cross-headers, mingw-w64-cross-binutils]
35-
uses: ./.github/workflows/build-package.yml
36-
with:
37-
package_name: mingw-w64-cross-gcc-stage1
38-
needs: ${{ toJson(needs) }}
39-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
40-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
41-
42-
mingw-w64-cross-windows-default-manifest:
43-
needs: [mingw-w64-cross-binutils, mingw-w64-cross-gcc-stage1]
44-
uses: ./.github/workflows/build-package.yml
45-
with:
46-
package_name: mingw-w64-cross-windows-default-manifest
47-
needs: ${{ toJson(needs) }}
48-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
49-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
50-
51-
mingw-w64-cross-crt:
52-
needs:
53-
[
54-
mingw-w64-cross-headers,
55-
mingw-w64-cross-binutils,
56-
mingw-w64-cross-gcc-stage1
57-
]
58-
uses: ./.github/workflows/build-package.yml
59-
with:
60-
package_name: mingw-w64-cross-crt
61-
needs: ${{ toJson(needs) }}
62-
dependencies: mingw-w64-cross-winpthreads
63-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
64-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
65-
66-
mingw-w64-cross-winpthreads:
67-
needs:
68-
[
69-
mingw-w64-cross-headers,
70-
mingw-w64-cross-binutils,
71-
mingw-w64-cross-gcc-stage1,
72-
mingw-w64-cross-crt
73-
]
74-
uses: ./.github/workflows/build-package.yml
75-
with:
76-
package_name: mingw-w64-cross-winpthreads
77-
needs: ${{ toJson(needs) }}
78-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
79-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
80-
81-
mingw-w64-cross-gcc:
82-
needs:
83-
[
84-
mingw-w64-cross-headers,
85-
mingw-w64-cross-binutils,
86-
mingw-w64-cross-gcc-stage1,
87-
mingw-w64-cross-windows-default-manifest,
88-
mingw-w64-cross-crt,
89-
mingw-w64-cross-winpthreads
90-
]
91-
uses: ./.github/workflows/build-package.yml
92-
with:
93-
package_name: mingw-w64-cross-gcc
94-
needs: ${{ toJson(needs) }}
95-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
96-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
97-
98-
mingw-w64-cross-zlib:
99-
needs: [
100-
mingw-w64-cross-headers,
101-
mingw-w64-cross-binutils,
102-
mingw-w64-cross-windows-default-manifest,
103-
mingw-w64-cross-crt,
104-
mingw-w64-cross-winpthreads,
105-
mingw-w64-cross-gcc
106-
]
107-
108-
uses: ./.github/workflows/build-package.yml
109-
with:
110-
package_name: mingw-w64-cross-zlib
111-
needs: ${{ toJson(needs) }}
112-
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
113-
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
21+
msys2_packages_branch: ${{ inputs.msys2_packages_branch || 'woarm64' }}
11422

11523
repository:
116-
needs:
117-
[
118-
mingw-w64-cross-headers,
119-
mingw-w64-cross-binutils,
120-
mingw-w64-cross-gcc-stage1,
121-
mingw-w64-cross-windows-default-manifest,
122-
mingw-w64-cross-crt,
123-
mingw-w64-cross-winpthreads,
124-
mingw-w64-cross-gcc,
125-
mingw-w64-cross-zlib
126-
]
24+
name: Create MSYS2 repository
25+
needs: mingw-cross-toolchain
12726
runs-on: windows-latest
12827

12928
defaults:
13029
run:
13130
shell: msys2 {0}
13231

32+
env:
33+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34+
13335
steps:
13436
- uses: msys2/setup-msys2@v2
13537
with:
13638
msystem: MSYS
13739
update: true
13840

139-
- name: Download mingw-w64-cross-headers
140-
uses: actions/download-artifact@v4
141-
with:
142-
name: mingw-w64-cross-headers
143-
144-
- name: Download mingw-w64-cross-binutils
145-
uses: actions/download-artifact@v4
146-
with:
147-
name: mingw-w64-cross-binutils
41+
- name: Checkout repository
42+
uses: actions/checkout@v4
14843

149-
- name: Download mingw-w64-cross-gcc-stage1
150-
uses: actions/download-artifact@v4
151-
with:
152-
name: mingw-w64-cross-gcc-stage1
153-
154-
- name: Download mingw-w64-cross-windows-default-manifest
155-
uses: actions/download-artifact@v4
156-
with:
157-
name: mingw-w64-cross-windows-default-manifest
158-
159-
- name: Download mingw-w64-cross-crt
160-
uses: actions/download-artifact@v4
161-
with:
162-
name: mingw-w64-cross-crt
163-
164-
- name: Download mingw-w64-cross-winpthreads
165-
uses: actions/download-artifact@v4
166-
with:
167-
name: mingw-w64-cross-winpthreads
168-
169-
- name: Download mingw-w64-cross-gcc
170-
uses: actions/download-artifact@v4
171-
with:
172-
name: mingw-w64-cross-gcc
173-
174-
- name: Download mingw-w64-cross-zlib
175-
uses: actions/download-artifact@v4
176-
with:
177-
name: mingw-w64-cross-zlib
44+
- name: Install dependencies
45+
run: |
46+
pacman -S --noconfirm \
47+
git \
48+
mingw-w64-x86_64-github-cli \
49+
mingw-w64-x86_64-jq
17850
51+
- name: Download artifacts
52+
run: |
53+
`cygpath "${{ github.workspace }}"`/.github/scripts/download-artifacts.sh ${{ github.run_id }} \
54+
'${{ needs.mingw-cross-toolchain.outputs.artifacts }}'
55+
17956
- name: Setup MSYS2 packages repository
18057
run: |
18158
mkdir aarch64
@@ -199,7 +76,8 @@ jobs:
19976

20077
deploy:
20178
if: github.ref == 'refs/heads/main'
202-
needs: [repository]
79+
name: Deploy MSYS2 repository
80+
needs: repository
20381
runs-on: ubuntu-latest
20482

20583
permissions:
@@ -225,6 +103,7 @@ jobs:
225103
with:
226104
artifact_name: woarm64-msys2-repository
227105

228-
check-repository:
229-
needs: [deploy]
106+
check:
107+
name: Check MSYS2 repository
108+
needs: deploy
230109
uses: ./.github/workflows/check-repository.yml
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
name: Build MinGW cross-compilation toolchain
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
msys2_packages_branch:
7+
description: "MSYS2-packages branch to build"
8+
type: string
9+
required: false
10+
default: "woarm64"
11+
workflow_call:
12+
inputs:
13+
msys2_packages_branch:
14+
description: "MSYS2-packages branch to build"
15+
type: string
16+
default: "woarm64"
17+
outputs:
18+
artifacts:
19+
value: ${{ toJson(jobs) }}
20+
21+
jobs:
22+
mingw-w64-cross-headers:
23+
uses: ./.github/workflows/build-package.yml
24+
with:
25+
package_name: mingw-w64-cross-headers
26+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
27+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
28+
29+
mingw-w64-cross-binutils:
30+
needs: mingw-w64-cross-headers
31+
uses: ./.github/workflows/build-package.yml
32+
with:
33+
package_name: mingw-w64-cross-binutils
34+
needs: ${{ toJson(needs) }}
35+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
36+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
37+
38+
mingw-w64-cross-gcc-stage1:
39+
needs: [mingw-w64-cross-headers, mingw-w64-cross-binutils]
40+
uses: ./.github/workflows/build-package.yml
41+
with:
42+
package_name: mingw-w64-cross-gcc-stage1
43+
needs: ${{ toJson(needs) }}
44+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
45+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
46+
47+
mingw-w64-cross-windows-default-manifest:
48+
needs: [mingw-w64-cross-binutils, mingw-w64-cross-gcc-stage1]
49+
uses: ./.github/workflows/build-package.yml
50+
with:
51+
package_name: mingw-w64-cross-windows-default-manifest
52+
needs: ${{ toJson(needs) }}
53+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
54+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
55+
56+
mingw-w64-cross-crt:
57+
needs:
58+
[
59+
mingw-w64-cross-headers,
60+
mingw-w64-cross-binutils,
61+
mingw-w64-cross-gcc-stage1
62+
]
63+
uses: ./.github/workflows/build-package.yml
64+
with:
65+
package_name: mingw-w64-cross-crt
66+
needs: ${{ toJson(needs) }}
67+
dependencies: mingw-w64-cross-winpthreads
68+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
69+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
70+
71+
mingw-w64-cross-winpthreads:
72+
needs:
73+
[
74+
mingw-w64-cross-headers,
75+
mingw-w64-cross-binutils,
76+
mingw-w64-cross-gcc-stage1,
77+
mingw-w64-cross-crt
78+
]
79+
uses: ./.github/workflows/build-package.yml
80+
with:
81+
package_name: mingw-w64-cross-winpthreads
82+
needs: ${{ toJson(needs) }}
83+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
84+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
85+
86+
mingw-w64-cross-gcc:
87+
needs:
88+
[
89+
mingw-w64-cross-headers,
90+
mingw-w64-cross-binutils,
91+
mingw-w64-cross-gcc-stage1,
92+
mingw-w64-cross-windows-default-manifest,
93+
mingw-w64-cross-crt,
94+
mingw-w64-cross-winpthreads
95+
]
96+
uses: ./.github/workflows/build-package.yml
97+
with:
98+
package_name: mingw-w64-cross-gcc
99+
needs: ${{ toJson(needs) }}
100+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
101+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
102+
103+
mingw-w64-cross-zlib:
104+
needs: [
105+
mingw-w64-cross-headers,
106+
mingw-w64-cross-binutils,
107+
mingw-w64-cross-windows-default-manifest,
108+
mingw-w64-cross-crt,
109+
mingw-w64-cross-winpthreads,
110+
mingw-w64-cross-gcc
111+
]
112+
113+
uses: ./.github/workflows/build-package.yml
114+
with:
115+
package_name: mingw-w64-cross-zlib
116+
needs: ${{ toJson(needs) }}
117+
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
118+
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

0 commit comments

Comments
 (0)