Skip to content

Workflow file for this run

name: Compile and verify functions
on:
push:
pull_request_target:
types: [opened, synchronize]
permissions:
contents: read
pull-requests: read
jobs:
compile_verify:
if: github.repository == 'MonsterDruide1/OdysseyDecomp'
runs-on: ubuntu-24.04
steps:
- name: Check out project
uses: actions/checkout@v4
with:
submodules: recursive
- name: Check out branch if in PR
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
submodules: recursive
- name: Check for W-state functions
run: |
if grep -q ",W," "data/odyssey_functions.csv"; then
echo "Function list should not contain WIP-functions!"
echo "Found the following lines:"
grep ",W," "data/odyssey_functions.csv"
exit 1
fi
- name: Set up dependencies
run: |
sudo apt update && sudo apt install -y python3-pip ninja-build cmake ccache xdelta3 clang libssl-dev python-is-python3 curl
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2_amd64.deb && sudo dpkg -i libtinfo5_6.3-2_amd64.deb && rm -f libtinfo5_6.3-2_amd64.deb
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: '3.9'
cache: 'pip'
- name: Set up python package dependencies
run: pip install capstone colorama cxxfilt pyelftools ansiwrap watchdog python-Levenshtein toml
- name: Set up rust toolchain
uses: actions-rust-lang/[email protected]
with:
cache: false
- name: Set up rust caching
uses: Swatinem/rust-cache@v2
with:
workspaces: "tools/common/viking"
cache-directories: |
toolchain/clang-3.9.1
toolchain/clang-4.0.1
- name: Download main.nso from secret
env:
EXEFS_SHARED_PASS: ${{ secrets.EXEFS_SHARED_PASS }}
run: curl -u "github-odyssey:$EXEFS_SHARED_PASS" https://monsterdruide.one/secrets/smo-main.nso -O
- name: Run setup
run: tools/setup.py smo-main.nso
- name: Build project
run: tools/build.py
- name: Verify function states
run: |
var="$(tools/check 2>&1)"
if [[ "$var" == "OK" ]]; then
exit 0
else
echo $var;
exit 1
fi