Skip to content

WIP: ci: add IBM-hosted ppc64le and s390x runners #251

WIP: ci: add IBM-hosted ppc64le and s390x runners

WIP: ci: add IBM-hosted ppc64le and s390x runners #251

Workflow file for this run

name: Build all

Check failure on line 1 in .github/workflows/build_all.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build_all.yml

Invalid workflow file

(Line: 286, Col: 7): Unexpected value 'include'
on:
workflow_dispatch:
inputs:
fatal_warnings:
description: 'Build with --fatal-meson-warning (yes/no)'
default: 'no'
required: false
schedule:
# Run every Sunday at midnight
- cron: '0 0 * * 0'
env:
TEST_BUILD_ALL: 1
TEST_FATAL_WARNINGS: ${{ github.event.inputs.fatal_warnings }}
jobs:
prelude:
name: Initial setup
runs-on: ubuntu-latest
outputs:
cache-key: ${{ steps.cache-key.outputs.cache-key }}
matrix-alpine: ${{ steps.alpine.outputs.matrix }}
matrix-ubuntu: ${{ steps.ubuntu.outputs.matrix }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install packages
run: python3 -m pip install PyYAML git+https://github.com/mesonbuild/meson
- name: Calculate cache key
id: cache-key
run: echo "cache-key=packagecache-$(tools/internalize_sources.py cache-key --all)" >> $GITHUB_OUTPUT
- name: Check for cache
id: lookup
uses: actions/cache/restore@v4
with:
key: ${{ steps.cache-key.outputs.cache-key }}
# don't restore from older cache keys; it would bloat the cache
# over time and we want to recheck hashes on every run
path: subprojects/packagecache
enableCrossOsArchive: true
lookup-only: true
- name: Download sources
if: steps.lookup.outputs.cache-hit != 'true'
continue-on-error: true
run: tools/internalize_sources.py download --all
- name: Save sources
if: steps.lookup.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
key: ${{ steps.cache-key.outputs.cache-key }}
path: subprojects/packagecache
enableCrossOsArchive: true
- name: Build Ubuntu matrix
id: ubuntu
shell: python tools/filter_matrix.py {0}
run: |
- platform: aarch64
runner: ubuntu-24.04-arm
- platform: ppc64le
runner: ubuntu-24.04-ppc64le
selfhosted: true
- platform: s390x
runner: ubuntu-24.04-s390x
selfhosted: true
- platform: x86_64
runner: ubuntu-latest
- name: Build Alpine matrix
id: alpine
shell: python tools/filter_matrix.py {0}
run: |
- platform: aarch64
runner: ubuntu-24.04-arm
apk-tools-url: 'https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.7/aarch64/apk.static#!sha256!27a975638ddc95a411c9f17c63383e335da9edf6bb7de2281d950c291a11f878'
- platform: ppc64le
runner: ubuntu-24.04-ppc64le
apk-tools-url: 'https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.7/ppc64le/apk.static#!sha256!96ba92b49c8cc97fad06f0dfe3c50ec25c3344890e479999ded8752bf9e80d7f'
selfhosted: true
- platform: s390x
runner: ubuntu-24.04-s390x
apk-tools-url: 'https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.7/s390x/apk.static#!sha256!368996f2908ec8f10f1de500bc97a9bd1c3b0b46ce0bd44983ac09862cbab6d5'
selfhosted: true
- platform: x86_64
runner: ubuntu-latest
apk-tools-url: 'https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.7/x86_64/apk.static#!sha256!bdd044e0fd6cc388c5e571e1093efa5f35f7767cc5aa338b0a2576a429009a62'
Ubuntu:
if: github.event_name != 'schedule' || github.repository == 'mesonbuild/wrapdb'
name: Ubuntu (${{ matrix.platform }})
runs-on: ${{ matrix.runner }}
needs: prelude
strategy:
matrix:
include: ${{ fromJson(needs.prelude.outputs.matrix-ubuntu) }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install packages
run: |
sudo apt-get update
sudo apt-get -y install build-essential python3-pip ninja-build
python3 -m pip install git+https://github.com/mesonbuild/meson
- name: Restore sources
uses: actions/cache/restore@v4
with:
key: ${{ needs.prelude.outputs.cache-key }}
path: subprojects/packagecache
enableCrossOsArchive: true
fail-on-cache-miss: true
- name: Sanity Checks
run: |
./tools/fake_tty.py ./tools/sanity_checks.py
Alpine:
if: github.event_name != 'schedule' || github.repository == 'mesonbuild/wrapdb'
name: Alpine (${{ matrix.platform }})
runs-on: ${{ matrix.runner }}
needs: prelude
strategy:
matrix:
include: ${{ fromJson(needs.prelude.outputs.matrix-alpine) }}
steps:
- uses: jirutka/setup-alpine@v1
with:
arch: ${{ matrix.platform }}
apk-tools-url: ${{ matrix.apk-tools-url }}
packages: >
binutils clang libc-dev fortify-headers make patch cmake git linux-headers pkgconf py3-pip samurai sudo
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Restore sources
uses: actions/cache/restore@v4
with:
key: ${{ needs.prelude.outputs.cache-key }}
path: subprojects/packagecache
enableCrossOsArchive: true
fail-on-cache-miss: true
- name: Sanity Checks
run: |
# Work around PEP 668 nonsense…
sudo rm -vf /usr/lib*/python3.*/EXTERNALLY-MANAGED
python -m pip install --pre meson
./tools/fake_tty.py ./tools/sanity_checks.py
shell: alpine.sh {0}
VisualStudio:
if: github.event_name != 'schedule' || github.repository == 'mesonbuild/wrapdb'
runs-on: windows-latest
needs: prelude
strategy:
matrix:
platform: ['x64', 'x86']
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Install a 32-bit Python so building related stuff work.
- name: Setup x86 Python
if: matrix.platform == 'x86'
uses: actions/setup-python@v5
with:
architecture: 'x86'
python-version: '3.12'
- name: Install packages
run: |
python -m pip install git+https://github.com/mesonbuild/meson
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{matrix.platform}}
- name: Restore sources
uses: actions/cache/restore@v4
with:
key: ${{ needs.prelude.outputs.cache-key }}
path: subprojects/packagecache
enableCrossOsArchive: true
fail-on-cache-miss: true
- name: Sanity Checks
run: |
python tools/sanity_checks.py
VisualStudio-clang-cl:
if: github.event_name != 'schedule' || github.repository == 'mesonbuild/wrapdb'
runs-on: windows-latest
needs: prelude
env:
CC: clang-cl
CXX: clang-cl
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install packages
run: |
python -m pip install git+https://github.com/mesonbuild/meson
- uses: ilammy/msvc-dev-cmd@v1
- name: Restore sources
uses: actions/cache/restore@v4
with:
key: ${{ needs.prelude.outputs.cache-key }}
path: subprojects/packagecache
enableCrossOsArchive: true
fail-on-cache-miss: true
- name: Sanity Checks
run: |
python tools/sanity_checks.py
MSYS2:
if: github.event_name != 'schedule' || github.repository == 'mesonbuild/wrapdb'
runs-on: windows-latest
needs: prelude
strategy:
matrix:
platform: ['UCRT64', 'CLANG64']
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.platform}}
install: >-
bison
dos2unix
flex
git
pacboy: >-
cc:p
cmake:p
ninja:p
pkgconf:p
python-certifi:p
python-pip:p
# Make sure Python is updated to >=3.11 (fix https://github.com/msys2/MINGW-packages/issues/17415).
update: true
- name: Install packages
shell: msys2 {0}
run: |
python -m pip install git+https://github.com/mesonbuild/meson
- name: Restore sources
uses: actions/cache/restore@v4
with:
key: ${{ needs.prelude.outputs.cache-key }}
path: subprojects/packagecache
enableCrossOsArchive: true
fail-on-cache-miss: true
- name: Sanity Checks
shell: msys2 {0}
run: |
python tools/sanity_checks.py
MacOS:
if: github.event_name != 'schedule' || github.repository == 'mesonbuild/wrapdb'
name: MacOS (${{ matrix.platform }})
runs-on: ${{ matrix.runner }}
needs: prelude
strategy:
include:
- platform: arm64
runner: macos-14
- platform: x86_64
runner: macos-13
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: brew update
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install packages
run: |
brew install --quiet ninja
python3 -m pip install git+https://github.com/mesonbuild/meson
- name: Restore sources
uses: actions/cache/restore@v4
with:
key: ${{ needs.prelude.outputs.cache-key }}
path: subprojects/packagecache
enableCrossOsArchive: true
fail-on-cache-miss: true
- name: Sanity Checks
run: |
./tools/sanity_checks.py