From 97bcbf5d84a076eebe0ad5c6d683334928ea6217 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Thu, 30 Jan 2020 18:29:47 +0100 Subject: [PATCH 1/6] Add GitHub Actions for regression testing --- .github/actions/install_deps.sh | 14 ++++++++++++++ .github/workflows/testing.yml | 26 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100755 .github/actions/install_deps.sh create mode 100644 .github/workflows/testing.yml diff --git a/.github/actions/install_deps.sh b/.github/actions/install_deps.sh new file mode 100755 index 00000000..4a78dcfe --- /dev/null +++ b/.github/actions/install_deps.sh @@ -0,0 +1,14 @@ +case `echo $1 | cut -d '-' -f 1` in + ubuntu) + sudo apt-get -qq update + sudo apt-get install -yq bison libpng-dev pkg-config + ;; + macos) + brew install libpng pkg-config md5sha1sum + ;; + *) + echo "WARNING: Cannot install deps for OS '$1'" + ;; +esac + +yacc --version diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml new file mode 100644 index 00000000..69ace111 --- /dev/null +++ b/.github/workflows/testing.yml @@ -0,0 +1,26 @@ +name: "Regression testing" +on: push + +jobs: + testing: + strategy: + matrix: + os: [ubuntu-16.04, ubuntu-18.04, macos-10.15] + cc: [gcc, clang] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - name: Install deps + shell: bash + run: | + ./.github/actions/install_deps.sh ${{ matrix.os }} + - name: Build + run: | + make -j Q= CC=${{ matrix.cc }} + - name: Install + run: | + sudo make install -j Q= + - name: Test + shell: bash + run: | + test/run-tests.sh From 8cee3c3c3e14215c7fe3f58bf3253c74d2396739 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Mon, 10 Feb 2020 13:50:10 +0100 Subject: [PATCH 2/6] Upload binaries after compilation --- .github/workflows/testing.yml | 150 +++++++++++++++++++++++++++++++++- 1 file changed, 149 insertions(+), 1 deletion(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 69ace111..fcc45db7 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -2,7 +2,7 @@ name: "Regression testing" on: push jobs: - testing: + unix-testing: strategy: matrix: os: [ubuntu-16.04, ubuntu-18.04, macos-10.15] @@ -20,7 +20,155 @@ jobs: - name: Install run: | sudo make install -j Q= + - name: Package binaries + run: | + tar -Jcf rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins.tar.xz rgb{asm,link,fix,gfx} + - name: Upload binaries + uses: actions/upload-artifact@v1 + with: + name: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins + path: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins.tar.xz - name: Test shell: bash run: | test/run-tests.sh + + windows-build: + strategy: + matrix: + bits: [32, 64] + os: [ubuntu-latest] + include: + - bits: 32 + arch: i686 + - bits: 64 + arch: x86-64 + runs-on: ${{ matrix.os }} + env: + DIST_DIR: win${{ matrix.bits }} + steps: + - uses: actions/checkout@v2 + - name: Install deps + shell: bash + run: | + ./.github/actions/install_deps.sh ${{ matrix.os }} + - name: Install MinGW + run: | + sudo apt-get install gcc-mingw-w64-${{ matrix.arch }} mingw-w64-tools libz-mingw-w64-dev + - name: Install libpng dev headers for MinGW + run: | + sudo ./.github/actions/mingw-w64-libpng-dev.sh ${{ matrix.arch }} + - name: Build Windows binaries + run: | + make mingw${{ matrix.bits }} -j Q= + mv rgbasm rgbasm.exe + mv rgblink rgblink.exe + mv rgbfix rgbfix.exe + mv rgbgfx rgbgfx.exe + - name: Package binaries + run: | + mkdir $DIST_DIR + mv *.exe $DIST_DIR + zip -r ${DIST_DIR}-bins.zip $DIST_DIR + - name: Upload binaries + uses: actions/upload-artifact@v1 + with: + name: win${{ matrix.bits }}-bins + path: win${{ matrix.bits }}-bins.zip + + dll-build: + runs-on: windows-2019 + strategy: + matrix: + bits: [32, 64] + include: + - bits: 32 + vcvars: x86 + - bits: 64 + vcvars: x86_amd64 + steps: + - name: Download and validate sources + shell: pwsh + run: | + $files = @( + @{ + Name = "zlib1211.zip" + Hash = "d7510a8ee1918b7d0cad197a089c0a2cd4d6df05fee22389f67f115e738b178d" + URI = "http://www.zlib.net/zlib1211.zip" + } + @{ + Name = "lpng1637.zip" + Hash = "3b4b1cbd0bae6822f749d39b1ccadd6297f05e2b85a83dd2ce6ecd7d09eabdf2" + URI = "https://download.sourceforge.net/libpng/lpng1637.zip" + } + ) + + $client = New-Object Net.WebClient + foreach ($file in $files) { + $client.DownloadFile($file.URI, $file.Name) + $hash = Get-FileHash -Algorithm SHA256 -Path $file.Name + if ($hash.Hash.ToLowerInvariant() -ne $file.Hash) {throw $($file.Name + " mismatch: " + $hash.Hash.ToLowerInvariant() + " != " + $file.Hash)} + } + - name: Build zlib + shell: cmd + run: | + 7z x zlib1211.zip + move zlib-1.2.11 zlib + cd zlib + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.vcvars }} + nmake -f win32/Makefile.msc all testdll + copy zlib1.dll ../zlib1.dll + - name: Build libpng + shell: cmd + run: | + mingw-get install mingw-get + 7z x lpng1637.zip + move lpng1637 libpng + cd libpng + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.vcvars }} + cp scripts/pnglibconf.h.prebuilt pnglibconf.h + cp scripts/makefile.vcwin32 makefile + nmake test ZLIBLIB=.. ZLIBINC=../zlib CPPFLAGS=-I../zlib LDFLAGS=-L.. + nmake install + copy libpng16.dll ../libpng16.dll + - name: Package DLLs + run: | + 7z a dlls.zip *.dll + - name: Upload DLLs + uses: actions/upload-artifact@v1 + with: + name: dlls${{ matrix.bits }} + path: dlls${{ matrix.bits }}.zip + + windows-testing: + needs: [windows-build, dll-build] + strategy: + matrix: + bits: [32, 64] + runs-on: windows-2019 + steps: + - uses: actions/checkout@v2 + - name: Retrieve binaries + uses: actions/download-artifact@v1 + with: + name: win${{ matrix.bits }}-bins + - name: Retrieve DLLs + uses: actions/download-artifact@v1 + with: + name: dlls${{ matrix.bits }} + - name: Extract + run: | + 7z e win${{ matrix.bits }}-bins.zip + 7z e dlls${{ matrix.bits }}.zip + - name: Package Windows release + run: | + 7z a rgbds-canary-win${{ matrix.bits }}.zip *.exe *.dll + - name: Upload Windows release + uses: actions/upload-artifact@v1 + with: + name: rgbds-canary-win${{ matrix.bits }} + path: rgbds-canary-win${{ matrix.bits }}.zip + - name: Run tests + shell: bash + run: | + test/run-tests.sh From 7471f46a0768e1b5a646d48d5c2cefb8dbc3f7af Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Tue, 11 Feb 2020 00:50:04 +0100 Subject: [PATCH 3/6] Add checkpatch testing --- .github/workflows/checkpatch.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/checkpatch.yml diff --git a/.github/workflows/checkpatch.yml b/.github/workflows/checkpatch.yml new file mode 100644 index 00000000..e6cc6402 --- /dev/null +++ b/.github/workflows/checkpatch.yml @@ -0,0 +1,17 @@ +name: "Code style checking" +on: pull_request + +jobs: + checkpatch: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up checkpatch + run: | + wget 'https://raw.githubusercontent.com/torvalds/linux/master/scripts/checkpatch.pl' + chmod +x checkpatch.pl + touch const_structs.checkpatch + touch spelling.txt + - name: Checkpatch + run: | + make checkpatch CHECKPATCH=./checkpatch.pl From e078c1e793c82e53def885c351192f21ad3d3e55 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Fri, 14 Feb 2020 02:30:24 +0100 Subject: [PATCH 4/6] Use `develop` in CI when possible --- .github/workflows/testing.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index fcc45db7..971ab7ff 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -5,8 +5,12 @@ jobs: unix-testing: strategy: matrix: - os: [ubuntu-16.04, ubuntu-18.04, macos-10.15] + os: [ubuntu-18.04, ubuntu-16.04, macos-10.15] cc: [gcc, clang] + include: + - os: ubuntu-18.04 + cc: gcc + target: develop runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -16,7 +20,7 @@ jobs: ./.github/actions/install_deps.sh ${{ matrix.os }} - name: Build run: | - make -j Q= CC=${{ matrix.cc }} + make ${{ matrix.target }} -j Q= CC=${{ matrix.cc }} - name: Install run: | sudo make install -j Q= From d497190aa12716117f651e1af0eeb06047fd77ca Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Fri, 14 Feb 2020 02:52:15 +0100 Subject: [PATCH 5/6] Do not zip artifacts ourselves GitHub does it, this creates zips of zips... --- .github/workflows/testing.yml | 147 ++-------------------------------- 1 file changed, 5 insertions(+), 142 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 971ab7ff..66cf2a1e 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -26,153 +26,16 @@ jobs: sudo make install -j Q= - name: Package binaries run: | - tar -Jcf rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins.tar.xz rgb{asm,link,fix,gfx} + mkdir $DIST_DIR + cp rgb{asm,link,fix,gfx} $DIST_DIR + env: + DIST_DIR: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins - name: Upload binaries uses: actions/upload-artifact@v1 with: name: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins - path: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins.tar.xz + path: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins - name: Test shell: bash run: | test/run-tests.sh - - windows-build: - strategy: - matrix: - bits: [32, 64] - os: [ubuntu-latest] - include: - - bits: 32 - arch: i686 - - bits: 64 - arch: x86-64 - runs-on: ${{ matrix.os }} - env: - DIST_DIR: win${{ matrix.bits }} - steps: - - uses: actions/checkout@v2 - - name: Install deps - shell: bash - run: | - ./.github/actions/install_deps.sh ${{ matrix.os }} - - name: Install MinGW - run: | - sudo apt-get install gcc-mingw-w64-${{ matrix.arch }} mingw-w64-tools libz-mingw-w64-dev - - name: Install libpng dev headers for MinGW - run: | - sudo ./.github/actions/mingw-w64-libpng-dev.sh ${{ matrix.arch }} - - name: Build Windows binaries - run: | - make mingw${{ matrix.bits }} -j Q= - mv rgbasm rgbasm.exe - mv rgblink rgblink.exe - mv rgbfix rgbfix.exe - mv rgbgfx rgbgfx.exe - - name: Package binaries - run: | - mkdir $DIST_DIR - mv *.exe $DIST_DIR - zip -r ${DIST_DIR}-bins.zip $DIST_DIR - - name: Upload binaries - uses: actions/upload-artifact@v1 - with: - name: win${{ matrix.bits }}-bins - path: win${{ matrix.bits }}-bins.zip - - dll-build: - runs-on: windows-2019 - strategy: - matrix: - bits: [32, 64] - include: - - bits: 32 - vcvars: x86 - - bits: 64 - vcvars: x86_amd64 - steps: - - name: Download and validate sources - shell: pwsh - run: | - $files = @( - @{ - Name = "zlib1211.zip" - Hash = "d7510a8ee1918b7d0cad197a089c0a2cd4d6df05fee22389f67f115e738b178d" - URI = "http://www.zlib.net/zlib1211.zip" - } - @{ - Name = "lpng1637.zip" - Hash = "3b4b1cbd0bae6822f749d39b1ccadd6297f05e2b85a83dd2ce6ecd7d09eabdf2" - URI = "https://download.sourceforge.net/libpng/lpng1637.zip" - } - ) - - $client = New-Object Net.WebClient - foreach ($file in $files) { - $client.DownloadFile($file.URI, $file.Name) - $hash = Get-FileHash -Algorithm SHA256 -Path $file.Name - if ($hash.Hash.ToLowerInvariant() -ne $file.Hash) {throw $($file.Name + " mismatch: " + $hash.Hash.ToLowerInvariant() + " != " + $file.Hash)} - } - - name: Build zlib - shell: cmd - run: | - 7z x zlib1211.zip - move zlib-1.2.11 zlib - cd zlib - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.vcvars }} - nmake -f win32/Makefile.msc all testdll - copy zlib1.dll ../zlib1.dll - - name: Build libpng - shell: cmd - run: | - mingw-get install mingw-get - 7z x lpng1637.zip - move lpng1637 libpng - cd libpng - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.vcvars }} - cp scripts/pnglibconf.h.prebuilt pnglibconf.h - cp scripts/makefile.vcwin32 makefile - nmake test ZLIBLIB=.. ZLIBINC=../zlib CPPFLAGS=-I../zlib LDFLAGS=-L.. - nmake install - copy libpng16.dll ../libpng16.dll - - name: Package DLLs - run: | - 7z a dlls.zip *.dll - - name: Upload DLLs - uses: actions/upload-artifact@v1 - with: - name: dlls${{ matrix.bits }} - path: dlls${{ matrix.bits }}.zip - - windows-testing: - needs: [windows-build, dll-build] - strategy: - matrix: - bits: [32, 64] - runs-on: windows-2019 - steps: - - uses: actions/checkout@v2 - - name: Retrieve binaries - uses: actions/download-artifact@v1 - with: - name: win${{ matrix.bits }}-bins - - name: Retrieve DLLs - uses: actions/download-artifact@v1 - with: - name: dlls${{ matrix.bits }} - - name: Extract - run: | - 7z e win${{ matrix.bits }}-bins.zip - 7z e dlls${{ matrix.bits }}.zip - - name: Package Windows release - run: | - 7z a rgbds-canary-win${{ matrix.bits }}.zip *.exe *.dll - - name: Upload Windows release - uses: actions/upload-artifact@v1 - with: - name: rgbds-canary-win${{ matrix.bits }} - path: rgbds-canary-win${{ matrix.bits }}.zip - - name: Run tests - shell: bash - run: | - test/run-tests.sh From 179e04747499b9ae132b46bab7c41a050ca52f55 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Tue, 11 Feb 2020 01:14:17 +0100 Subject: [PATCH 6/6] Add Windows testing --- .github/actions/mingw-configure.sh | 17 ++++ .github/actions/mingw-env.sh | 16 ++++ .github/actions/mingw-w64-libpng-dev.sh | 44 +++++++++ .../actions/mingw-w64-libpng-dev.sha256sums | 2 + .github/workflows/testing.yml | 91 ++++++++++++++++++- 5 files changed, 165 insertions(+), 5 deletions(-) create mode 100644 .github/actions/mingw-configure.sh create mode 100644 .github/actions/mingw-env.sh create mode 100755 .github/actions/mingw-w64-libpng-dev.sh create mode 100644 .github/actions/mingw-w64-libpng-dev.sha256sums diff --git a/.github/actions/mingw-configure.sh b/.github/actions/mingw-configure.sh new file mode 100644 index 00000000..c1b9606c --- /dev/null +++ b/.github/actions/mingw-configure.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +source mingw-env @TRIPLE@ +echo LAST IS: $last + +# check if last arg is a path to configure, else use parent +for last; do true; done +if test -x "${last}/configure"; then + config_path="$last" +else + config_path=".." +fi + +${config_path}/configure \ + --host=@TRIPLE@ --target=@TRIPLE@ --build="$CHOST" \ + --prefix=/usr/@TRIPLE@ --libdir=/usr/@TRIPLE@/lib --includedir=/usr/@TRIPLE@/include \ + --enable-shared --enable-static "$@" diff --git a/.github/actions/mingw-env.sh b/.github/actions/mingw-env.sh new file mode 100644 index 00000000..0b5f4c2a --- /dev/null +++ b/.github/actions/mingw-env.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +_arch=$1 + +default_mingw_pp_flags="-D_FORTIFY_SOURCE=2" +default_mingw_compiler_flags="$default_mingw_pp_flags -O2 -pipe -fno-plt -fexceptions --param=ssp-buffer-size=4" +default_mingw_linker_flags="-Wl,-O1,--sort-common,--as-needed -fstack-protector" + +export CPPFLAGS="${MINGW_CPPFLAGS:-$default_mingw_pp_flags $CPPFLAGS}" +export CFLAGS="${MINGW_CFLAGS:-$default_mingw_compiler_flags $CFLAGS}" +export CXXFLAGS="${MINGW_CXXFLAGS:-$default_mingw_compiler_flags $CXXFLAGS}" +export LDFLAGS="${MINGW_LDFLAGS:-$default_mingw_linker_flags $LDFLAGS}" + +mingw_prefix=/usr/${_arch} +export PKG_CONFIG_SYSROOT_DIR="${mingw_prefix}" +export PKG_CONFIG_LIBDIR="${mingw_prefix}/lib/pkgconfig:${mingw_prefix}/share/pkgconfig" diff --git a/.github/actions/mingw-w64-libpng-dev.sh b/.github/actions/mingw-w64-libpng-dev.sh new file mode 100755 index 00000000..79261d5d --- /dev/null +++ b/.github/actions/mingw-w64-libpng-dev.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# This script was written by ISSOtm while looking at Arch Linux's PKGBUILD for +# the corresponding package. (And its dependencies) +# https://aur.archlinux.org/packages/mingw-w64-libpng/ + +set -e + +pngver=1.6.37 +_apngver=$pngver +_arch="$1" + + +## Install mingw-configure and mingw-env (both build dependencies) + +install -m 755 .github/actions/mingw-env.sh /usr/bin/mingw-env + +sed "s|@TRIPLE@|${_arch}|g" .github/actions/mingw-configure.sh > ${_arch}-configure +install -m 755 ${_arch}-configure /usr/bin/ + + +## Grab sources and check them + +wget http://downloads.sourceforge.net/sourceforge/libpng/libpng-$pngver.tar.xz +wget http://downloads.sourceforge.net/project/apng/libpng/libpng16/libpng-$_apngver-apng.patch.gz +sha256sum -c .github/actions/mingw-w64-libpng-dev.sha256sums + +## Extract sources + +tar -xf libpng-$pngver.tar.xz +gunzip libpng-$_apngver-apng.patch.gz + + +## Start building! + +cd libpng-$pngver +# Patch in apng support +patch -p0 ../libpng-$_apngver-apng.patch + +mkdir -p build-${_arch} +cd build-${_arch} +${_arch}-configure LDFLAGS=-static-libgcc +make +make install diff --git a/.github/actions/mingw-w64-libpng-dev.sha256sums b/.github/actions/mingw-w64-libpng-dev.sha256sums new file mode 100644 index 00000000..75b9ed9c --- /dev/null +++ b/.github/actions/mingw-w64-libpng-dev.sha256sums @@ -0,0 +1,2 @@ +10d9e0cb60e2b387a79b355eb7527c0bee2ed8cbd12cf04417cabc4d6976683c libpng-1.6.37-apng.patch.gz +505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca libpng-1.6.37.tar.xz diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 66cf2a1e..eaf7e162 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -26,16 +26,97 @@ jobs: sudo make install -j Q= - name: Package binaries run: | - mkdir $DIST_DIR - cp rgb{asm,link,fix,gfx} $DIST_DIR - env: - DIST_DIR: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins + mkdir bins + cp rgb{asm,link,fix,gfx} bins - name: Upload binaries uses: actions/upload-artifact@v1 with: name: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins - path: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-bins + path: bins - name: Test shell: bash run: | test/run-tests.sh + + windows-build: + strategy: + matrix: + bits: [32, 64] + os: [ubuntu-latest] + include: + - bits: 32 + arch: i686 + triplet: i686-w64-mingw32 + - bits: 64 + arch: x86-64 + triplet: x86_64-w64-mingw32 + runs-on: ${{ matrix.os }} + env: + DIST_DIR: win${{ matrix.bits }} + steps: + - uses: actions/checkout@v2 + - name: Install deps + shell: bash + run: | + ./.github/actions/install_deps.sh ${{ matrix.os }} + - name: Install MinGW + run: | + sudo apt-get install gcc-mingw-w64-${{ matrix.arch }} mingw-w64-tools libz-mingw-w64-dev + - name: Install libpng dev headers for MinGW + run: | + sudo ./.github/actions/mingw-w64-libpng-dev.sh ${{ matrix.triplet }} + - name: Build Windows binaries + run: | + make mingw${{ matrix.bits }} -j Q= + - name: Package binaries + run: | + mkdir bins + mv rgbasm bins/rgbasm.exe + mv rgblink bins/rgblink.exe + mv rgbfix bins/rgbfix.exe + mv rgbgfx bins/rgbgfx.exe + cp /usr/${{ matrix.triplet }}/lib/zlib1.dll bins + cp /usr/${{ matrix.triplet }}/bin/libpng16-16.dll bins + - name: Upload Windows binaries + uses: actions/upload-artifact@v1 + with: + name: bins${{ matrix.bits }} + path: bins + + windows-testing: + needs: windows-build + strategy: + matrix: + bits: [32, 64] + include: + - bits: 32 + rgbgfx_fail: true + - bits: 64 + rgbgfx_fail: false + runs-on: windows-2019 + steps: + - uses: actions/checkout@v2 + - name: Retrieve binaries + uses: actions/download-artifact@v1 + with: + name: bins${{ matrix.bits }} + path: bins + - name: Extract binaries + shell: bash + run: | + cp bins/* . + - name: Run tests + shell: bash + run: | + test/run-tests.sh + if: matrix.rgbgfx_fail == false + - name: Run tests (without RGBGFX) + shell: bash + run: | + pushd test/asm + ./test.sh + popd + pushd test/link + ./test.sh + popd + if: matrix.rgbgfx_fail == true