Skip to content

palettes: add "Hotdog Stand" palette #5

palettes: add "Hotdog Stand" palette

palettes: add "Hotdog Stand" palette #5

Workflow file for this run

name: Windows (i386/x86_64/armv7/aarch64)
on:
push:
pull_request:
workflow_dispatch:
jobs:
build-i386:
runs-on: windows-latest
name: mingw32-i386
env:
# NOTE: the SDL2 and SDL 1.2 hashes are for the *compiled binaries*, NOT
# for the tarball.
SDL_VERSION: 2.32.10
SDL_SHA256: d72b0728a315ab25ad43123b89baa2ab6fd7c335a43f737213685d29fd2aa4fe
SDL12_VERSION: 1.2.15
SDL12_SHA256: a28bbe38714ef7817b1c1e8082a48f391f15e4043402444b783952fca939edc1
FLAC_VERSION: 1.5.0
FLAC_SHA256: f2c1c76592a82ffff8413ba3c4a1299b6c7ab06c734dee03fd88630485c2b920
LIBOGG_VERSION: 1.3.6
LIBOGG_SHA256: 5c8253428e181840cd20d41f3ca16557a9cc04bad4a3d04cce84808677fa1061
UTF8PROC_VERSION: 2.10.0
UTF8PROC_SHA256: 276a37dc4d1dd24d7896826a579f4439d1e5fe33603add786bb083cab802e23e
defaults:
run:
shell: msys2 {0}
steps:
- name: 'Checkout'
uses: actions/checkout@v4
with:
path: schism
# setup msys2 to make use of its nice dev tools...
# we also need the headers it provides for
# Media Foundation and they provide a prebuilt
# SDL2 binary as well
- name: 'Setup MSYS2'
uses: msys2/setup-msys2@v2
with:
msystem: mingw32
update: true
install: git mingw-w64-i686-toolchain mingw-w64-i686-flac mingw-w64-i686-SDL mingw-w64-i686-SDL2 libtool autoconf automake make zip unzip dos2unix patch
location: 'C:\\msys2'
- name: 'Retrieve runner temp directory'
id: temp
run: |
cd schism
echo "temp=$(cygpath -u "$RUNNER_TEMP")" >> $GITHUB_OUTPUT
echo "wpath=$RUNNER_TEMP" >> $GITHUB_OUTPUT
cd ..
# FIXME store this in RUNNER_TEMP instead
- name: 'Cache MinGW'
id: cache-i386-mingw
uses: actions/cache@v4
with:
path: 'C:\\MinGW'
key: mingw32-i386-install
- name: 'Cache dependencies'
id: cache-i386-dependencies
uses: actions/cache@v4
with:
path: '${{ steps.temp.outputs.wpath }}\\i386prefix'
key: mingw32-i386-dependencies-SDL12_${{ env.SDL12_VERSION }}-FLAC_${{ env.FLAC_VERSION }}-LIBOGG_${{ env.LIBOGG_VERSION }}-UTF8PROC_${{ env.UTF8PROC_VERSION }}
# grab a (quite old) version of mingw32 so that we can
# target extremely old Windows versions that mingw-w64
# doesn't care about (and doesn't work on)
- name: 'Setup MinGW'
if: steps.cache-i386-mingw.outputs.cache-hit != 'true'
run: |
wget --no-check-certificate -O mingw-get.zip "https://sourceforge.net/projects/mingw/files/Installer/mingw-get/mingw-get-0.6.2-beta-20131004-1/mingw-get-0.6.2-mingw32-beta-20131004-1-bin.zip/download"
mkdir "/c/MinGW"
unzip mingw-get.zip -d"/c/MinGW"
rm mingw-get.zip
"/c/MinGW/bin/mingw-get.exe" install mingw32-base-bin msys-base-bin
- name: 'Add MinGW binaries to PATH'
run: |
echo "$(cygpath -w "/c/MinGW/bin")" >> $GITHUB_PATH
echo "$(cygpath -w "/c/MinGW/msys/1.0/bin")" >> $GITHUB_PATH
- name: 'Download libflac and libogg sources'
if: steps.cache-i386-dependencies.outputs.cache-hit != 'true'
run: |
wget -O libogg-$LIBOGG_VERSION.tar.xz "https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-$LIBOGG_VERSION.tar.xz" || wget -O libogg-$LIBOGG_VERSION.tar.xz "https://github.com/xiph/ogg/releases/download/v$LIBOGG_VERSION/libogg-$LIBOGG_VERSION.tar.xz"
echo "$LIBOGG_SHA256 libogg-$LIBOGG_VERSION.tar.xz" | sha256sum -c -
tar xvf "libogg-$LIBOGG_VERSION.tar.xz"
cd libogg-$LIBOGG_VERSION
autoreconf -i
cd ..
wget -O flac-$FLAC_VERSION.tar.xz "https://ftp.osuosl.org/pub/xiph/releases/flac/flac-$FLAC_VERSION.tar.xz" || wget -O flac-$FLAC_VERSION.tar.xz "https://github.com/xiph/flac/releases/download/$FLAC_VERSION/flac-$FLAC_VERSION.tar.xz"
echo "$FLAC_SHA256 flac-$FLAC_VERSION.tar.xz" | sha256sum -c -
tar xvf "flac-$FLAC_VERSION.tar.xz"
cd "flac-$FLAC_VERSION"
patch -p1 < ../schism/.github/patches/FLAC/1-win32-revert-utime64.patch
autoreconf -i
cd ..
- name: 'Build libflac'
if: steps.cache-i386-dependencies.outputs.cache-hit != 'true'
env:
RUNNER_TEMP_CYGPATH: ${{ steps.temp.outputs.temp }}
shell:
"bash.exe {0}"
run: |
cd libogg-$LIBOGG_VERSION
mkdir build
cd build
CC="mingw32-gcc.exe" CPPFLAGS="-I$RUNNER_TEMP_CYGPATH/i386prefix/include" LDFLAGS="-L$RUNNER_TEMP_CYGPATH/i386prefix/lib" ../configure --prefix="$RUNNER_TEMP_CYGPATH/i386prefix"
make
make install
cd ../../flac-$FLAC_VERSION
mkdir build
cd build
CC="mingw32-gcc.exe" CPPFLAGS="-I$RUNNER_TEMP_CYGPATH/i386prefix/include" LDFLAGS="-L$RUNNER_TEMP_CYGPATH/i386prefix/lib" ../configure --prefix="$RUNNER_TEMP_CYGPATH/i386prefix" --with-ogg-includes="$RUNNER_TEMP_CYGPATH/i386prefix/include" --with-ogg-libraries="$RUNNER_TEMP_CYGPATH/i386prefix/lib" --disable-programs --disable-examples --disable-cpplibs
make
make install
cd ../..
- name: 'Download utf8proc'
if: steps.cache-i386-dependencies.outputs.cache-hit != 'true'
run: |
wget -O "utf8proc-$UTF8PROC_VERSION.tar.gz" "https://github.com/JuliaStrings/utf8proc/releases/download/v$UTF8PROC_VERSION/utf8proc-$UTF8PROC_VERSION.tar.gz"
echo "$UTF8PROC_SHA256 utf8proc-$UTF8PROC_VERSION.tar.gz" | sha256sum -c -
tar xvf "utf8proc-$UTF8PROC_VERSION.tar.gz"
cd "utf8proc-$UTF8PROC_VERSION"
patch -p1 < "../schism/.github/patches/utf8proc/3-windows.patch"
cd ..
- name: 'Build utf8proc'
if: steps.cache-i386-dependencies.outputs.cache-hit != 'true'
env:
RUNNER_TEMP_CYGPATH: ${{ steps.temp.outputs.temp }}
shell:
"bash.exe {0}"
run: |
cd utf8proc-$UTF8PROC_VERSION
make CC="mingw32-gcc.exe"
cp "utf8proc.h" "$RUNNER_TEMP_CYGPATH/i386prefix/include"
cp "libutf8proc-3.dll" "$RUNNER_TEMP_CYGPATH/i386prefix/lib/libutf8proc-3.dll"
cd ..
- name: 'Get date of latest commit'
id: date
run: |
cd schism
echo "date=$(git log -n 1 --date=short --format=format:%cd | sed 's/\(....\)-\(..\)-\(..\).*/\1\2\3/')" >> $GITHUB_OUTPUT
cd ..
- name: 'autoreconf'
run: |
cd schism
autoreconf -i
cd ..
- name: 'Compile package'
env:
RUNNER_TEMP_CYGPATH: ${{ steps.temp.outputs.temp }}
shell:
"bash.exe {0}"
run: |
ls /c/msys2/msys64/mingw32
cd schism
mkdir build
cd build
# We link to SDL 1.2 here since it's universally supported by everything and is
# useful as a fallback of sorts.
MEDIAFOUNDATION_CFLAGS="-I/c/msys2/msys64/mingw32/include" DSOUND_CFLAGS="-I/c/msys2/msys64/mingw32/include" CPPFLAGS="-I$RUNNER_TEMP_CYGPATH/i386prefix/include" LDFLAGS="-L$RUNNER_TEMP_CYGPATH/i386prefix/lib -L/c/MinGW/lib" CC="mingw32-gcc.exe" UTF8PROC_CFLAGS="-I$RUNNER_TEMP_CYGPATH/i386prefix/include" UTF8PROC_LIBS="-L$RUNNER_TEMP_CYGPATH/i386prefix/lib -lutf8proc-3" SDL12_CFLAGS="-I/c/msys2/msys64/mingw32/include/SDL" SDL12_LIBS="-L/c/msys2/msys64/mingw32/lib -lSDL" FLAC_CFLAGS="-I$RUNNER_TEMP_CYGPATH/i386prefix/include" FLAC_LIBS="-L$RUNNER_TEMP_CYGPATH/i386prefix/lib -lFLAC -logg -lm" SDL2_CFLAGS="-I/c/msys2/msys64/mingw32/include/SDL2" SDL2_LIBS="-L/c/msys2/msys64/mingw32/lib -lSDL2" ../configure --with-flac --with-sdl2 --with-sdl12 --enable-sdl12-linking --without-zlib
make
strip schismtracker.exe
cp schismtracker.exe ../..
cd ../..
- name: 'Create package'
env:
RUNNER_TEMP_CYGPATH: ${{ steps.temp.outputs.temp }}
run: |
# our build might have failed! if so, fail this part of the
# script so that we don't silently ship packages without
# binaries in them
#
# TODO can we ship zlib as well?
test -f "schismtracker.exe"
# FIXME these DLLs may not be needed anymore
cp "/c/MinGW/bin/libgcc_s_dw2-1.dll" .
cp "/c/MinGW/bin/libssp-0.dll" .
# SDL 1.2
wget -O "SDL-$SDL12_VERSION-win32.zip" https://www.libsdl.org/release/SDL-$SDL12_VERSION-win32.zip
echo "$SDL12_SHA256 SDL-$SDL12_VERSION-win32.zip" | sha256sum -c -
unzip "SDL-$SDL12_VERSION-win32.zip" "SDL.dll"
# SDL 2
wget -O "SDL2-$SDL_VERSION-win32-x86.zip" https://www.libsdl.org/release/SDL2-$SDL_VERSION-win32-x86.zip
echo "$SDL_SHA256 SDL2-$SDL_VERSION-win32-x86.zip" | sha256sum -c -
unzip "SDL2-$SDL_VERSION-win32-x86.zip" "SDL2.dll"
cp "$RUNNER_TEMP_CYGPATH/i386prefix/bin/libFLAC-14.dll" .
cp "$RUNNER_TEMP_CYGPATH/i386prefix/bin/libogg-0.dll" .
cp "$RUNNER_TEMP_CYGPATH/i386prefix/lib/libutf8proc-3.dll" .
strip "libFLAC-14.dll"
strip "libogg-0.dll"
strip "libutf8proc-3.dll"
strip "libssp-0.dll"
strip "libgcc_s_dw2-1.dll"
cp schism/docs/configuration.md schism/README.md schism/COPYING .
wget https://raw.githubusercontent.com/xiph/flac/master/COPYING.Xiph
unix2dos COPYING.Xiph COPYING README.md configuration.md
- name: 'Upload artifact'
uses: actions/upload-artifact@v4
with:
name: schismtracker-${{ steps.date.outputs.date }}-mingw32-i386
path: |
schismtracker.exe
SDL.dll
SDL2.dll
libFLAC-14.dll
libogg-0.dll
libutf8proc-3.dll
libgcc_s_dw2-1.dll
libssp-0.dll
COPYING
COPYING.Xiph
README.md
configuration.md
build-others:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- { sys: mingw32, target: x86_64, stdlib: msvcrt, cflags: '-O2', ldflags: '' }
- { sys: mingw32, target: armv7, stdlib: msvcrt, cflags: '-O2', ldflags: '' }
- { sys: mingw32, target: aarch64, stdlib: ucrt, cflags: '-O2', ldflags: '' }
name: ${{ matrix.sys }}-${{ matrix.target }}
env:
LLVM_MINGW_VERSION: 20251118
SDL_VERSION: 2.32.10
SDL_SHA256: 5f5993c530f084535c65a6879e9b26ad441169b3e25d789d83287040a9ca5165
SDL12_VERSION: 1.2.15
SDL12_SHA256: d6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00
FLAC_VERSION: 1.5.0
FLAC_SHA256: f2c1c76592a82ffff8413ba3c4a1299b6c7ab06c734dee03fd88630485c2b920
LIBOGG_VERSION: 1.3.6
LIBOGG_SHA256: 5c8253428e181840cd20d41f3ca16557a9cc04bad4a3d04cce84808677fa1061
UTF8PROC_VERSION: 2.10.0
UTF8PROC_SHA256: 276a37dc4d1dd24d7896826a579f4439d1e5fe33603add786bb083cab802e23e
TARGET: ${{ matrix.target }}
SYS: ${{ matrix.sys }}
STDLIB: ${{ matrix.stdlib }}
CFLAGS: ${{ matrix.cflags }}
LDFLAGS: ${{ matrix.ldflags }}
steps:
- name: 'Checkout'
uses: actions/checkout@v4
with:
path: schism
- name: 'Install unix2dos'
run: |
sudo apt-get install -y dos2unix
- name: 'Cache llvm-mingw'
id: cache-llvm-mingw
uses: actions/cache@v4
with:
path: '/home/runner/llvm-mingw'
key: windows-${{ matrix.stdlib }}-llvm-mingw-${{ env.LLVM_MINGW_VERSION }}
- name: 'Cache dependencies'
id: cache-dependencies
uses: actions/cache@v4
with:
path: '/home/runner/prefix'
key: windows-${{ matrix.sys }}-${{ matrix.target }}-${{ matrix.stdlib }}-dependencies-SDL_${{ env.SDL_VERSION }}-SDL12_${{ env.SDL12_VERSION }}-FLAC_${{ env.FLAC_VERSION }}-LIBOGG_${{ env.LIBOGG_VERSION }}-UTF8PROC_${{ env.UTF8PROC_VERSION }}
- name: 'Grab llvm-mingw'
if: steps.cache-llvm-mingw.outputs.cache-hit != 'true'
run: |
# FIXME need sha256 hash
curl -L "https://github.com/mstorsjo/llvm-mingw/releases/download/$LLVM_MINGW_VERSION/llvm-mingw-$LLVM_MINGW_VERSION-$STDLIB-ubuntu-22.04-x86_64.tar.xz" | tar xJvf - -C "$HOME"
mv "$HOME/llvm-mingw-$LLVM_MINGW_VERSION-$STDLIB-ubuntu-22.04-x86_64" "$HOME/llvm-mingw"
- name: 'Download SDL2 sources'
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
wget -O "SDL2-$SDL_VERSION.tar.gz" https://www.libsdl.org/release/SDL2-$SDL_VERSION.tar.gz || wget -O "SDL2-$SDL_VERSION.tar.gz" https://github.com/libsdl-org/SDL/releases/download/release-$SDL_VERSION/SDL2-$SDL_VERSION.tar.gz
echo "$SDL_SHA256 SDL2-$SDL_VERSION.tar.gz" | sha256sum -c -
tar xvf "SDL2-$SDL_VERSION.tar.gz"
- name: 'Build SDL2'
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
export PATH="$HOME/llvm-mingw/bin:$PATH"
cd SDL2-$SDL_VERSION
./configure --host="$TARGET-w64-$SYS" --prefix="$HOME/prefix"
make
make install
cd ..
- name: 'Download libflac and libogg sources'
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
wget -O libogg-$LIBOGG_VERSION.tar.xz "https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-$LIBOGG_VERSION.tar.xz" || wget -O libogg-$LIBOGG_VERSION.tar.xz "https://github.com/xiph/ogg/releases/download/v$LIBOGG_VERSION/libogg-$LIBOGG_VERSION.tar.xz"
echo "$LIBOGG_SHA256 libogg-$LIBOGG_VERSION.tar.xz" | sha256sum -c -
tar xvf "libogg-$LIBOGG_VERSION.tar.xz"
wget -O flac-$FLAC_VERSION.tar.xz "https://ftp.osuosl.org/pub/xiph/releases/flac/flac-$FLAC_VERSION.tar.xz" || wget -O flac-$FLAC_VERSION.tar.xz "https://github.com/xiph/flac/releases/download/$FLAC_VERSION/flac-$FLAC_VERSION.tar.xz"
echo "$FLAC_SHA256 flac-$FLAC_VERSION.tar.xz" | sha256sum -c -
tar xvf "flac-$FLAC_VERSION.tar.xz"
- name: 'Build libflac'
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
export PATH="$HOME/llvm-mingw/bin:$PATH"
cd libogg-$LIBOGG_VERSION
mkdir build
cd build
../configure --host="$TARGET-w64-$SYS" --prefix="$HOME/prefix"
make
make install
cd ../../flac-$FLAC_VERSION
mkdir build
cd build
../configure --host="$TARGET-w64-$SYS" --prefix="$HOME/prefix" --disable-programs --disable-examples --disable-cpplibs
make
make install
cd ../..
- name: 'Download utf8proc'
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
wget -O "utf8proc-$UTF8PROC_VERSION.tar.gz" "https://github.com/JuliaStrings/utf8proc/releases/download/v$UTF8PROC_VERSION/utf8proc-$UTF8PROC_VERSION.tar.gz"
echo "$UTF8PROC_SHA256 utf8proc-$UTF8PROC_VERSION.tar.gz" | sha256sum -c -
tar xvf "utf8proc-$UTF8PROC_VERSION.tar.gz"
- name: 'Build utf8proc'
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
export PATH="$HOME/llvm-mingw/bin:$PATH"
cd utf8proc-$UTF8PROC_VERSION
mkdir build
cd build
cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="$HOME/prefix" -DCMAKE_C_COMPILER="$TARGET-w64-$SYS-clang" -DCMAKE_SYSTEM_NAME="Windows"
make
make install
cd ../..
# TODO build zlib here too
- name: 'Get date of latest commit'
id: date
run: |
cd schism
echo "date=$(git log -n 1 --date=short --format=format:%cd | sed 's/\(....\)-\(..\)-\(..\).*/\1\2\3/')" >> $GITHUB_OUTPUT
cd ..
- name: 'Build package'
run: |
export PATH="$HOME/llvm-mingw/bin:$PATH"
export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"
cd schism
autoreconf -I"$HOME/prefix/share/aclocal" -i
mkdir build
cd build
# Link to SDL2, since it's the only backend we support here
../configure --host="$TARGET-w64-$SYS" --prefix="$HOME/prefix" --with-flac --with-sdl2 --without-zlib --enable-sdl2-linking
make
"$TARGET-w64-$SYS-strip" -g schismtracker.exe
cp schismtracker.exe ../..
cd ../..
cp "$HOME/prefix/bin/SDL2.dll" .
cp "$HOME/prefix/bin/libFLAC-14.dll" .
cp "$HOME/prefix/bin/libogg-0.dll" .
cp "$HOME/llvm-mingw/$TARGET-w64-$SYS/bin/libwinpthread-1.dll" .
"$TARGET-w64-$SYS-strip" -g "SDL2.dll"
"$TARGET-w64-$SYS-strip" -g "libFLAC-14.dll"
"$TARGET-w64-$SYS-strip" -g "libogg-0.dll"
"$TARGET-w64-$SYS-strip" -g "libwinpthread-1.dll"
cp schism/docs/configuration.md schism/README.md schism/COPYING .
wget https://raw.githubusercontent.com/xiph/flac/master/COPYING.Xiph
unix2dos COPYING.Xiph COPYING README.md configuration.md
- name: 'Upload artifact'
uses: actions/upload-artifact@v4
with:
name: schismtracker-${{ steps.date.outputs.date }}-${{ matrix.sys }}-${{ matrix.target }}
path: |
schismtracker.exe
SDL2.dll
libFLAC-14.dll
libogg-0.dll
libwinpthread-1.dll
COPYING
COPYING.Xiph
README.md
configuration.md
test:
strategy:
fail-fast: false
matrix:
threads: [
{ flag: '--disable-threads', name: '' },
{ flag: '--enable-threads', name: '-threaded' },
]
sys: [
# MSYS2 doesn't make new 32-bit packages anymore. Now what?
{ sys: mingw64, env: x86_64 },
{ sys: ucrt64, env: ucrt-x86_64 },
]
os: [ windows-2022, windows-2025 ]
runs-on: ${{matrix.os}}
concurrency:
group: ${{github.ref}}-${{github.workflow}}-${{matrix.os}}-${{matrix.sys.sys}}-${{matrix.sys.env}}${{matrix.threads.name}}
cancel-in-progress: true
#name: ${{matrix.sys.sys}}-${{matrix.sys.env}} # the default name will work just fine
defaults:
run:
shell: msys2 {0}
steps:
- name: 'Checkout'
uses: actions/checkout@v2
- name: 'Setup MSYS2'
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.sys.sys }}
update: true
install: mingw-w64-${{ matrix.sys.env }}-toolchain libtool autoconf automake make mingw-w64-${{ matrix.sys.env }}-SDL2 mingw-w64-${{ matrix.sys.env }}-libutf8proc mingw-w64-${{ matrix.sys.env }}-zlib zip dos2unix
- name: 'Build package'
env:
CONFIGURE_FLAGS: ${{ matrix.threads.flag }}
run: |
autoreconf -i
mkdir build
cd build
../configure --enable-tests $CONFIGURE_FLAGS
make
- name: 'Run test suite'
run: |
cd build
./schismtrackertest.exe