sync github CI with libobsd #326
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (c) 2022-2024 Guilherme Janczak <guilherme.janczak@yandex.com> | |
# | |
# 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: 'Build and Test' | |
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 build dictpw | |
meson compile -C build | |
- name: test | |
run: meson test -C build | |
dietlibc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-python@v5.3.0 | |
- name: setup | |
run: | | |
pip install meson ninja | |
sudo apt update | |
sudo apt install -y dietlibc-dev valgrind linux-headers-generic | |
- uses: actions/checkout@v4.2.2 | |
- name: build | |
run: | | |
CC='diet gcc' meson setup build -Ddefault_library=static | |
meson compile -C build | |
- name: test | |
run: meson test -C build --wrapper valgrind | |
- uses: actions/upload-artifact@v4.5.0 | |
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/checkout@v4.2.2 | |
- name: build | |
run: | | |
meson setup build -Ddefault_library=static \ | |
--cross-file=.github/workflows/meson-emscripten.txt | |
meson compile -C build | |
- name: test | |
run: meson test -C build | |
- uses: actions/upload-artifact@v4.5.0 | |
if: always() | |
with: | |
name: meson-logs-emscripten | |
path: build/meson-logs | |
glibc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-python@v5.3.0 | |
- name: setup | |
run: | | |
pip install meson ninja | |
- uses: actions/checkout@v4.2.2 | |
- name: build | |
run: | | |
meson setup build | |
meson compile -C build | |
- name: test | |
run: meson test -C build | |
- uses: actions/upload-artifact@v4.5.0 | |
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 build src | |
vmshell meson compile -C build | |
- name: test | |
run: vmshell meson test -C build | |
- name: copy falure logs | |
if: always() | |
run: | | |
vmshell tar -cf - build/meson-logs | tar -xf - | |
- uses: actions/upload-artifact@v4.5.0 | |
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/checkout@v4.2.2 | |
- name: build | |
run: | | |
meson setup build | |
meson compile -C build | |
- name: test | |
run: meson test -C build | |
- uses: actions/upload-artifact@v4.5.0 | |
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 dos2unix: git: groff: | |
- name: env-lacks-nsis | |
if: matrix.sys == 'msys' || matrix.sys == 'clang64' | |
run: pacman -S --noconfirm --needed mingw-w64-x86_64-nsis | |
- name: env-has-nsis | |
if: matrix.sys != 'msys' && matrix.sys != 'clang64' | |
run: pacboy -S --noconfirm --needed nsis:p | |
- uses: actions/checkout@v4.2.2 | |
- name: build | |
run: | | |
meson setup build | |
meson compile -C build | |
- name: test | |
run: meson test -C build | |
- name: installer | |
run: ./dictpw_installer.sh -o 'build\setup-dictpw-${{matrix.sys}}.exe' | |
- uses: actions/upload-artifact@v4.5.0 | |
if: always() | |
with: | |
name: meson-logs-${{matrix.sys}} | |
path: build/meson-logs | |
- uses: actions/upload-artifact@v4.5.0 | |
if: success() | |
with: | |
name: setup-${{matrix.sys}} | |
path: build/setup-*.exe | |
netbsd: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4.2.2 | |
- name: test on NetBSD | |
uses: cross-platform-actions/action@v0.26.0 | |
with: | |
operating_system: netbsd | |
version: '10.0' | |
run: | | |
sudo pkgin -y install meson git | |
meson setup build | |
meson compile -C build | |
meson test -C build | |
- uses: actions/upload-artifact@v4.5.0 | |
if: always() | |
with: | |
name: meson-logs-netbsd | |
path: build/meson-logs | |
vs: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
cc: [cl, clang-cl] | |
cross: [amd64, amd64_arm64] | |
steps: | |
- uses: actions/setup-python@v5.3.0 | |
- run: | | |
pip install meson | |
choco install nsis groff -y | |
# Chocolatey's /bin isn't in $Path, so we add it. | |
echo $($env:ChocolateyInstall)\bin >> $env:GITHUB_PATH | |
- uses: actions/checkout@v4.2.2 | |
- uses: ilammy/msvc-dev-cmd@v1.13.0 | |
- name: build | |
run: | | |
if ("${{matrix.cross}}" -eq 'amd64_arm64') { | |
$cross = "--cross-file=.github/workflows/meson-vs-aarch64.txt" | |
} | |
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 -Db_vscrt=static_from_buildtype $cross | |
} | |
meson compile -C build | |
- name: test | |
run: meson test -C build | |
- name: inst | |
run: | | |
ls | |
echo $env:Path | |
- uses: actions/upload-artifact@v4.5.0 | |
if: always() | |
with: | |
name: meson-logs-vs-${{matrix.cc}} | |
path: build/meson-logs | |
- uses: actions/upload-artifact@v4.5.0 | |
if: success() | |
with: | |
name: setup-vs-${{matrix.cc}}-${{matrix.arch}} | |
path: build/setup-*.exe |