windows-2025 runner doesn't have innosetup, install it manually #1063
This file contains hidden or 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 -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/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 -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/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 -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/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 | |
| sudo apt update | |
| sudo apt install -y libasan6 | |
| - uses: actions/checkout@v4.2.2 | |
| - 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/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 -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/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 -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/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: | |
| - uses: actions/checkout@v4.2.2 | |
| - 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 -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/upload-artifact@v4.5.0 | |
| if: always() | |
| with: | |
| name: meson-logs-${{matrix.sys}} | |
| path: build/meson-logs | |
| 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 | |
| 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/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] | |
| arch: [ARM64, x64] | |
| steps: | |
| - uses: actions/setup-python@v5.3.0 | |
| - run: | | |
| pip install meson | |
| choco install ninja -y | |
| - uses: actions/checkout@v4.2.2 | |
| - name: Enable ARM64 Developer Command Prompt | |
| if: matrix.arch == 'ARM64' | |
| uses: ilammy/msvc-dev-cmd@v1.13.0 | |
| with: | |
| arch: amd64_arm64 | |
| - name: Enable x64 Developer Command Prompt | |
| if: matrix.arch == 'x64' | |
| uses: ilammy/msvc-dev-cmd@v1.13.0 | |
| - name: build | |
| run: | | |
| if ("${{matrix.arch}}" -eq 'ARM64') { | |
| $buildcc = "--native-file=.github/workflows/meson-vs-gcc.txt" | |
| $hostarch = "--cross-file=.github/workflows/meson-vs-aarch64.txt" | |
| $hostcc = ` | |
| "--cross-file=.github/workflows/meson-vs-${{matrix.cc}}.txt" | |
| # clang-cl needs extra args to target a particular architecture. | |
| $hostcc_args = if (${{matrix.cc}} -eq 'clang-cl') { | |
| "--cross-file=.github/workflows/meson-vs-clang-cl-aarch64.txt" | |
| } | |
| } else { | |
| $hostcc = ` | |
| "--native-file=.github/workflows/meson-vs-${{matrix.cc}}.txt" | |
| } | |
| # 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 -Dtest_system=true -Dbuildtype=release ` | |
| $buildcc $hostarch $hostcc $hostcc_args | |
| meson compile -C build | |
| - name: test | |
| run: meson test --no-suite system -C build | |
| - name: test system | |
| run: meson test --suite system -C build | |
| - uses: actions/upload-artifact@v4.5.0 | |
| if: always() | |
| with: | |
| name: meson-logs-vs-${{matrix.cc}}-${{matrix.arch}} | |
| path: build/meson-logs |