Skip to content

Revert version change #8

Revert version change

Revert version change #8

Workflow file for this run

name: Build
on:
push:
branches: [main, master]
pull_request:
types: [opened, synchronize]
jobs:
setup_rpu_tests:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache RPU & modderspack
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
uses: actions/cache@v4
with:
path: test/gamescripts
key: rpu-and-modderpack-gamescripts-v1004
- name: Download RPU scripts & modderspack
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
shell: bash
run: |
(cd test && bash test_on_fallout2_rpu_setup.bash)
build_windows:
runs-on: windows-2025
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Visual Studio 2019 Build Tools with v141_xp
shell: cmd
run: |
choco install visualstudio2019buildtools -y --package-parameters="'--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.v141.x86.x64 --add Microsoft.VisualStudio.Component.VC.v141.xp --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows10SDK.10240 --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP --add Microsoft.VisualStudio.Component.WinXP'"
- name: Patch vcxproj to use v141_xp toolset
run: sed -i 's|<PlatformToolset>v100</PlatformToolset>|<PlatformToolset>v141_xp</PlatformToolset>|g' sslc.vcxproj
- name: Patch vcxproj to link debug build statically
run: sed -i 's|MultiThreadedDebugDLL|MultiThreadedDebug|g' sslc.vcxproj
- name: List Visual Studio directories
shell: cmd
run: |
dir "C:\Program Files (x86)\Microsoft Visual Studio" /s /b
- name: Build Debug
shell: cmd
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" ^
&& msbuild sslc.sln "/t:Clean;Build" /p:Configuration="Debug" /p:Platform="Win32" /m
- name: Test
shell: bash
run: |
export SSLC=../Debug/sslc.exe
(cd test && bash ./tests.bash)
- name: Upload Debug
uses: actions/upload-artifact@v4
with:
name: windows-debug
path: |
**/Debug/*.exe
# - name: Build Debug for Fallout1
# run: msbuild sslc.vcxproj "/t:Clean;Build" /p:Configuration="Debug (for Fallout1)" /p:Platform="Win32" /m
# - name: Upload Debug for Fallout1
# uses: actions/upload-artifact@v4
# with:
# name: build-Debug-for-Fallout1
# path: |
# **/Debug*/*.exe
- name: Mkdir
run: mkdir -p Build
- name: Build Release
shell: cmd
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" ^
&& msbuild sslc.sln "/t:Clean;Build" /p:Configuration="Release" /p:Platform="Win32" /m
- name: Test
shell: bash
run: |
export SSLC=../Build/compile.exe
(cd test && bash ./tests.bash)
- name: Cache RPU & modderspack (separate cache for Windows)
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
uses: actions/cache@v4
with:
path: test/gamescripts
key: rpu-and-modderpack-gamescripts-v1004
- name: Download RPU scripts & modderspack
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
shell: bash
run: |
(cd test && bash test_on_fallout2_rpu_setup.bash)
- name: Test on Fallout RPU
shell: bash
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
run: |
export SSLC=../Build/compile.exe
(cd test && bash ./test_on_fallout2_rpu_run.bash)
- name: Upload Release
uses: actions/upload-artifact@v4
with:
name: windows-release
path: |
**/Build/*.exe
# - name: Build Release for Fallout1
# run: msbuild sslc.sln "/t:Clean;Build" /p:Configuration="Release (for Fallout1)" /p:Platform="Win32" /m
# - name: Upload Release for Fallout1
# uses: actions/upload-artifact@v4
# with:
# name: build-Release-for-Fallout1
# path: |
# **/Build/*.exe
- name: Build Release dll
shell: cmd
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat" ^
&& msbuild sslc.sln "/t:Clean;Build" /p:Configuration="Release (dll)" /p:Platform="Win32" /m
- name: Upload Release dll
uses: actions/upload-artifact@v4
with:
name: windows-release-dll
path: |
**/Build/*.dll
# - name: Build Win2K
# run: msbuild sslc.sln "/t:Clean;Build" /p:Configuration="Win2K" /p:Platform="Win32" /m
# - name: Upload Win2K
# uses: actions/upload-artifact@v4
# with:
# name: build-Win2K
# path: |
# **/Win2K*/*.exe
build-wasm:
name: WebAssembly (WASI) Build
runs-on: ubuntu-22.04
needs: [setup_rpu_tests]
defaults:
run:
shell: bash
if: false # Disable this job because WASI do not support setjmp/longjmp
env:
WASI_VERSION: "25"
WASI_VERSION_FULL: "25.0"
WASI_SDK_DIR: ${{ github.workspace }}/wasi-sdk
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download wasi-sdk
run: |
curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{env.WASI_VERSION}}/wasi-sdk-${{env.WASI_VERSION_FULL}}-x86_64-linux.tar.gz | tar xz
ls -lah
mv wasi-sdk-${{env.WASI_VERSION_FULL}}-x86_64-linux wasi-sdk
- name: Configure project
run: |
mkdir build
cd build
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=${{env.WASI_SDK_DIR}}/share/cmake/wasi-sdk.cmake \
-DCMAKE_BUILD_TYPE=Release
- name: Build project
run: |
cd build
cmake --build .
find .
- name: Upload WebAssembly artifact
uses: actions/upload-artifact@v4
with:
name: wasm-wasi
path: |
build/**/*.wasm
build_emscripten:
name: Build webassembly version (Emscripten)
runs-on: ubuntu-latest
needs: [setup_rpu_tests]
defaults:
run:
shell: bash
# container:
# image: emscripten/emsdk:4.0.8
steps:
- name: Clone
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Build wasm module
run: |
docker run --rm --user $(id -u):$(id -g) \
-v $(pwd):/src emscripten/emsdk:4.0.8 \
sh -c 'mkdir -p build && cd build && emcmake cmake -DCMAKE_BUILD_TYPE="Release" ../ && emmake make'
# mkdir -p build
# cd build
# emcmake cmake .. -DCMAKE_BUILD_TYPE="Release"
# emmake make
- name: Test
run: |
export SSLC=../build/bin/compiler.mjs
(cd test && bash ./tests.bash)
- name: Get cache RPU & modderspack
uses: actions/cache@v4
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
with:
path: test/gamescripts
key: rpu-and-modderpack-gamescripts-v1004
fail-on-cache-miss: true
- name: Test on Fallout RPU
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
run: |
export SSLC=../build/bin/compiler.mjs
(cd test && bash ./test_on_fallout2_rpu_run.bash)
- name: Upload .wasm artifacts
uses: actions/upload-artifact@v4
with:
name: wasm-emscripten-node-nodefs
path: build/bin/**
build_linux:
name: Linux build
runs-on: ubuntu-22.04
needs: [setup_rpu_tests]
defaults:
run:
shell: bash
steps:
- name: Clone
uses: actions/checkout@v4
- name: Dependencies (x86)
run: |
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y build-essential g++-multilib libc6-dev:i386
- name: Configure & build
run: |
mkdir out
cd out
cmake ..
make
- name: Test
shell: bash
run: |
export SSLC=../out/bin/sslc
(cd test && bash ./tests.bash)
- name: Get cache RPU & modderspack
uses: actions/cache@v4
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
with:
path: test/gamescripts
key: rpu-and-modderpack-gamescripts-v1004
fail-on-cache-miss: true
- name: Test on Fallout RPU
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-rpu-check')
run: |
export SSLC=../out/bin/sslc
(cd test && bash ./test_on_fallout2_rpu_run.bash)
- name: Upload
uses: actions/upload-artifact@v4
with:
name: linux
path: out/bin/**
retention-days: 7
release:
if: github.event_name == 'push'
runs-on: ubuntu-22.04
needs: [build_windows, build_linux, build_emscripten]
permissions: write-all
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Prepare artifacts
run: |
ls -laR
cd artifacts
mv wasm-emscripten-node-nodefs package
tar -czf wasm-emscripten-node-nodefs.tar.gz package
rm -rf package
ls -laR
mv windows-debug/Debug/sslc.exe sslc-debug.exe
rm -rf windows-debug
mv windows-release/Build/compile.exe compile.exe
rm -rf windows-release
mv windows-release-dll/Build/parser.dll parser.dll
rm -rf windows-release-dll
mv linux/sslc sslc-linux
rm -rf linux
ls -laR
if find . -mindepth 1 -maxdepth 1 -type d | grep -q .; then
echo "Directory contains subfolders."
exit 1
else
echo "No subfolders found."
exit 0
fi
- name: Generate timestamp tag
id: tag
run: echo "TAG_NAME=$(date +'%Y-%m-%d-%H-%M-%S')" >> $GITHUB_OUTPUT
- name: Upload release
uses: softprops/[email protected]
with:
tag_name: ${{ steps.tag.outputs.TAG_NAME }}
name: Build from ${{ steps.tag.outputs.TAG_NAME }}
files: artifacts/*
draft: false
prerelease: true