Skip to content

sync github CI with libobsd #341

sync github CI with libobsd

sync github CI with libobsd #341

Workflow file for this run

# 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:
- name: setup
run: |
sudo apt update
sudo apt install -y dietlibc-dev meson 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:
- name: setup
run: |
sudo apt update
sudo apt install -y meson
- 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:
cross: [amd64, amd64_arm64]
steps:
- uses: actions/setup-python@v5.3.0
- run: |
pip install meson
choco install ninja 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
# with:
# arch: ${{matrix.cross}}
- name: build
run: |
if ("${{matrix.cross}}" -eq 'amd64_arm64') {
$cross = "--cross-file=.github/workflows/meson-vs-aarch64.txt"
}
pwsh -c {
echo $cross + " test"
# 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 -Dbuildtype=release `
-Db_vscrt=static_from_buildtype $cross
}
meson compile -C build
- name: test
run: meson test -C build
- name: inst
run: |
$arch = "Arm64"
if ("${{matrix.cross}}" -eq "amd64") {
$arch = "x64"
}
$out = "build\setup-dictpw-vs-${{matrix.cc}}-" + $arch + ".exe"
makensis -DOUTFILE=$out dictpw.nsi
- uses: actions/upload-artifact@v4.5.0
if: always()
with:
name: meson-logs-vs-${{matrix.cc}}-${{matrix.cross}}
path: build/meson-logs
- uses: actions/upload-artifact@v4.5.0
if: success()
with:
name: setup-vs-${{matrix.cc}}-${{matrix.cross}}
path: build/setup-*.exe