Skip to content

modernize msys2 environments #1017

modernize msys2 environments

modernize msys2 environments #1017

Workflow file for this run

# Copyright (c) 2022-2024 Guilherme Janczak <[email protected]>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
name: ' ' # empty name
on: [push, pull_request]
# GitHub Actions doesn't support YAML anchors, so there's a lot of code
# copypasted between jobs. You'll probably want to read the 'glibc:' task first,
# it's the one that requires the least hacks.
jobs:
bionic:
# XXX: Checkout and upload actions don't work, work with termux to fix this
# and the need to run /entrypoint.sh ourselves.
runs-on: ubuntu-latest
container: termux/termux-docker:x86_64
steps:
- name: setup
run: |
/entrypoint.sh pkg install -y ninja clang python git
/entrypoint.sh pip install meson
git clone --depth 1 -b $GITHUB_REF_NAME \
https://github.com/$GITHUB_REPOSITORY
- name: build
run: |
meson setup -Dtest_system=true build libobsd
meson compile -C build
- name: test
run: meson test --no-suite system -C build
- name: test_system
run: meson test --suite system -C build || true
dietlibc:
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: setup
run: |
pip install meson ninja
sudo apt update
sudo apt install -y dietlibc-dev valgrind linux-headers-generic
- uses: actions/[email protected]
- name: build
run: |
CC='diet gcc' meson setup -Dtest_system=true \
-Ddefault_library=static build
meson compile -C build
- name: test
run: meson test --wrapper valgrind --no-suite system -C build
- name: test_system
run: meson test --wrapper valgrind --suite system -C build || true
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-dietlibc
path: build/meson-logs
emscripten:
runs-on: macos-latest
steps:
- name: setup
run: |
brew update
brew install meson samurai emscripten
- uses: actions/[email protected]
- name: build
run: |
meson setup -Ddefault_library=static -Dtest_system=true \
--cross-file=.github/workflows/meson-emscripten.txt build
meson compile -C build
- name: test
run: meson test --no-suite system -C build
- name: test_system
run: meson test --suite system -C build || true
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-emscripten
path: build/meson-logs
glibc:
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: setup
run: |
pip install meson ninja
sudo apt update
sudo apt install -y libasan6
- uses: actions/[email protected]
- name: build
run: |
meson setup -Db_sanitize=address,undefined -Dtest_system=true build
meson compile -C build
- name: test
run: meson test --no-suite system -C build
- name: test_system
run: meson test --suite system -C build || true
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-glibc
path: build/meson-logs
haiku:
runs-on: ubuntu-22.04
container: 'docker.io/hectorm/qemu-haiku:latest'
steps:
# Copied from: https://github.com/hectorm/docker-qemu-haiku#github-actions
# Notice I changed make to meson in the 'Install packages' step.
- name: 'Wait until the VM is ready'
run: 'container-init & timeout 600 vmshell exit 0'
- name: 'Install packages'
run: 'vmshell pkgman install -y meson gcc haiku_devel'
- name: 'Checkout project'
uses: 'actions/checkout@main'
- name: 'Copy project to VM'
run: 'vmshell mkdir ./src/; tar -cf - ./ | vmshell tar -xf - -C ./src/'
# Now the rest is much of the same old.
- name: build
run: |
vmshell meson setup -Dtest_system=true build src
vmshell meson compile -C build
- name: test
run: vmshell meson test --no-suite system -C build
- name: test_system
run: vmshell meson test --suite system -C build || true
- name: copy falure logs
if: always()
run: |
vmshell tar -cf - build/meson-logs | tar -xf -
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-haiku
path: build/meson-logs
macos:
runs-on: macos-latest
steps:
- run: |
brew update
brew install meson samurai
- uses: actions/[email protected]
- name: build
run: |
meson setup -Db_sanitize=address,undefined -Dtest_system=true build
meson compile -C build
- name: test
run: meson test --no-suite system -C build
- name: test_system
run: meson test --suite system -C build || true
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-macos
path: build/meson-logs
msys2:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
strategy:
matrix:
# clang32 was broken last time I tried
sys: [msys, mingw64, mingw32, ucrt64, clang64]
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.sys}}
path-type: strict
pacboy: gcc:p meson:p ninja:p
- uses: actions/[email protected]
- name: build
run: |
# LTO breaks msys (other environments seem to work):
# https://github.com/msys2/MINGW-packages/issues/11706
# contributor says "not really production ready on windows"
meson setup -Db_lto=false -Dtest_system=true build
meson compile -C build
- name: test
run: meson test --no-suite system -C build
- name: test_system
run: meson test --suite system -C build || true
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-${{matrix.sys}}
path: build/meson-logs
netbsd:
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: test on NetBSD
uses: cross-platform-actions/[email protected]
with:
operating_system: netbsd
version: '9.2'
run: |
sudo pkgin -y install meson
meson setup -Dtest_system=true build
meson compile -C build
meson test --no-suite system -C build
meson test --suite system -C build || true
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-netbsd
path: build/meson-logs
vs:
runs-on: windows-latest
strategy:
matrix:
cc: [cl, clang-cl]
steps:
- uses: actions/[email protected]
- run: pip install meson ninja
- uses: actions/[email protected]
- uses: ilammy/[email protected]
- name: build
run: |
pwsh -c {
$env:CC="${{ matrix.cc }}";
# Don't do debug builds because that triggers a Windows bug:
# https://developercommunity.visualstudio.com/t/_setmaxstdio-hangs-the-program-if-the/10164855?space=62&q=setmaxstdio&viewtype=all
meson setup build --buildtype=release -Dtest_system=true
}
meson compile -C build
- name: test
run: meson test --no-suite system -C build
- name: test_system
run: meson test --suite system -C build || true
- uses: actions/[email protected]
if: always()
with:
name: meson-logs-vs-${{matrix.cc}}
path: build/meson-logs