pipeline { agent any stages { stage('Build Tools') { steps { sh 'make -j4 -C tools/' } } stage('Extract Assets') { steps { sh 'ln -s "$ROMS_DIR/Super Mario 64 (J) [!].z64" baserom.jp.z64' sh 'ln -s "$ROMS_DIR/Super Mario 64 (U) [!].z64" baserom.us.z64' sh 'ln -s "$ROMS_DIR/Super Mario 64 (E) (M3) [!].z64" baserom.eu.z64' // verify no assets were committed to repo sh '[ -z "$(find {actors,levels,textures}/ -name \'*.png\')" ]' sh '[ -z "$(find assets/ -name \'*.m64\' -or \'*.bin\')" ]' sh './extract_assets.py jp us eu' } } stage('Build U Source') { steps { sh 'make -j4 VERSION=us' } } stage('Build E Source') { steps { sh 'make -j4 VERSION=eu' } } stage('Build J Source') { steps { sh 'make -j4 VERSION=jp' } } stage('Test Enhancements') { steps { sh ''' set -e for f in enhancements/*.patch do git clean -fd . git checkout -- . echo 'y' | tools/apply_patch.sh "$f" make -j4 VERSION=us COMPARE=0 done ''' } } } environment { QEMU_IRIX = credentials('qemu-irix') ROMS_DIR = credentials('roms') } }