Skip to content

Commit

Permalink
Refactor MinGW cross-compilation toolchain build into a separate work…
Browse files Browse the repository at this point in the history
…flow (#14)
  • Loading branch information
Blackhex authored Aug 28, 2024
1 parent 5974c1f commit 3cb0c8b
Show file tree
Hide file tree
Showing 3 changed files with 147 additions and 149 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ env:

jobs:
build:
name: Build ${{ inputs.package_name }}
runs-on: windows-latest

steps:
Expand Down
177 changes: 28 additions & 149 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build MinGW and MSYS2 toolchain
name: Build MinGW and MSYS2 toolchains

on:
push:
Expand All @@ -14,168 +14,45 @@ on:
default: "woarm64"

jobs:
mingw-w64-cross-headers:
uses: ./.github/workflows/build-package.yml
mingw-cross-toolchain:
name: MinGW cross-compilation toolchain
uses: ./.github/workflows/mingw-cross-toolchain.yml
with:
package_name: mingw-w64-cross-headers
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-binutils:
needs: mingw-w64-cross-headers
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-binutils
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-gcc-stage1:
needs: [mingw-w64-cross-headers, mingw-w64-cross-binutils]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-gcc-stage1
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-windows-default-manifest:
needs: [mingw-w64-cross-binutils, mingw-w64-cross-gcc-stage1]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-windows-default-manifest
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-crt:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-crt
needs: ${{ toJson(needs) }}
dependencies: mingw-w64-cross-winpthreads
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-winpthreads:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1,
mingw-w64-cross-crt
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-winpthreads
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-gcc:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1,
mingw-w64-cross-windows-default-manifest,
mingw-w64-cross-crt,
mingw-w64-cross-winpthreads
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-gcc
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-zlib:
needs: [
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-windows-default-manifest,
mingw-w64-cross-crt,
mingw-w64-cross-winpthreads,
mingw-w64-cross-gcc
]

uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-zlib
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
msys2_packages_branch: ${{ inputs.msys2_packages_branch || 'woarm64' }}

repository:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1,
mingw-w64-cross-windows-default-manifest,
mingw-w64-cross-crt,
mingw-w64-cross-winpthreads,
mingw-w64-cross-gcc,
mingw-w64-cross-zlib
]
name: Create MSYS2 repository
needs: mingw-cross-toolchain
runs-on: windows-latest

defaults:
run:
shell: msys2 {0}

env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MSYS
update: true

- name: Download mingw-w64-cross-headers
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-headers

- name: Download mingw-w64-cross-binutils
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-binutils
- name: Checkout repository
uses: actions/checkout@v4

- name: Download mingw-w64-cross-gcc-stage1
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-gcc-stage1

- name: Download mingw-w64-cross-windows-default-manifest
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-windows-default-manifest

- name: Download mingw-w64-cross-crt
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-crt

- name: Download mingw-w64-cross-winpthreads
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-winpthreads

- name: Download mingw-w64-cross-gcc
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-gcc

- name: Download mingw-w64-cross-zlib
uses: actions/download-artifact@v4
with:
name: mingw-w64-cross-zlib
- name: Install dependencies
run: |
pacman -S --noconfirm \
git \
mingw-w64-x86_64-github-cli \
mingw-w64-x86_64-jq
- name: Download artifacts
run: |
`cygpath "${{ github.workspace }}"`/.github/scripts/download-artifacts.sh ${{ github.run_id }} \
'${{ needs.mingw-cross-toolchain.outputs.artifacts }}'
- name: Setup MSYS2 packages repository
run: |
mkdir aarch64
Expand All @@ -199,7 +76,8 @@ jobs:

deploy:
if: github.ref == 'refs/heads/main'
needs: [repository]
name: Deploy MSYS2 repository
needs: repository
runs-on: ubuntu-latest

permissions:
Expand All @@ -225,6 +103,7 @@ jobs:
with:
artifact_name: woarm64-msys2-repository

check-repository:
needs: [deploy]
check:
name: Check MSYS2 repository
needs: deploy
uses: ./.github/workflows/check-repository.yml
118 changes: 118 additions & 0 deletions .github/workflows/mingw-cross-toolchain.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: Build MinGW cross-compilation toolchain

on:
workflow_dispatch:
inputs:
msys2_packages_branch:
description: "MSYS2-packages branch to build"
type: string
required: false
default: "woarm64"
workflow_call:
inputs:
msys2_packages_branch:
description: "MSYS2-packages branch to build"
type: string
default: "woarm64"
outputs:
artifacts:
value: ${{ toJson(jobs) }}

jobs:
mingw-w64-cross-headers:
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-headers
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-binutils:
needs: mingw-w64-cross-headers
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-binutils
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-gcc-stage1:
needs: [mingw-w64-cross-headers, mingw-w64-cross-binutils]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-gcc-stage1
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-windows-default-manifest:
needs: [mingw-w64-cross-binutils, mingw-w64-cross-gcc-stage1]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-windows-default-manifest
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-crt:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-crt
needs: ${{ toJson(needs) }}
dependencies: mingw-w64-cross-winpthreads
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-winpthreads:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1,
mingw-w64-cross-crt
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-winpthreads
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-gcc:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1,
mingw-w64-cross-windows-default-manifest,
mingw-w64-cross-crt,
mingw-w64-cross-winpthreads
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-gcc
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-zlib:
needs: [
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-windows-default-manifest,
mingw-w64-cross-crt,
mingw-w64-cross-winpthreads,
mingw-w64-cross-gcc
]

uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-zlib
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

0 comments on commit 3cb0c8b

Please sign in to comment.