blob: 10929107178622039e6783d017efd7a368f57af2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
name: Build
# Build on every branch push, tag push, and pull request change:
on:
push:
pull_request:
jobs:
build_repo:
# This is a *private* build container.
container: ghcr.io/zeldaret/mm-build:main
name: Build repo (${{ matrix.version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version:
- n64-jp-1.1 # N64 Japan 1.1
- n64-us # N64 USA
include:
- version: n64-jp-1.1
non_matching: 1
# By default no version in the matrix contains a non_matching value,
# meaning ${{ matrix.non_matching }} expand to an empty string, unless it
# is explicitly listed on the `include` block.
# Use the value from the matrix if it exists, or fallback to 0 if it doesn't.
env:
NON_MATCHING: ${{ matrix.non_matching || 0 }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: git config safe.directory
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Install system dependencies
run: |
apt-get install -y git build-essential binutils-mips-linux-gnu curl python3 python3-pip python3-venv libxml2-dev
- name: Get the dependency
run: ln -s /orig/${{ matrix.version }}/baserom.z64 baseroms/${{ matrix.version }}/baserom.z64
# The compiler archives are embedded in the runner image, to avoid downloading them from GitHub (during make setup), which occasionally fails.
- name: Provide compiler archives
run: |
mkdir -p tools/compiler_archives/
ln -s /compiler_archives tools/compiler_archives/archives
- name: venv
run: make -j $(nproc) VERSION=${{ matrix.version }} venv
- name: Setup
run: make -j $(nproc) VERSION=${{ matrix.version }} setup 2> >(tee tools/warnings_count/warnings_setup_new.txt)
- name: Check setup warnings
run: ./tools/warnings_count/compare_warnings.sh setup
- name: Assets
run: make -j $(nproc) VERSION=${{ matrix.version }} assets 2> >(tee tools/warnings_count/warnings_assets_new.txt)
- name: Check assets warnings
run: ./tools/warnings_count/compare_warnings.sh assets
- name: Disasm
run: make -j $(nproc) VERSION=${{ matrix.version }} disasm 2> >(tee tools/warnings_count/warnings_disasm_new.txt)
- name: Check disasm warnings
run: ./tools/warnings_count/compare_warnings.sh disasm
- name: Build ${{ matrix.version }}
id: build
run: make -j $(nproc) VERSION=${{ matrix.version }} rom 2> >(tee tools/warnings_count/warnings_build_new.txt)
- name: Check build warnings
run: ./tools/warnings_count/compare_warnings.sh build
- name: Compress ${{ matrix.version }}
run: make -j $(nproc) VERSION=${{ matrix.version }} compress 2> >(tee tools/warnings_count/warnings_compress_new.txt)
- name: Check compress warnings
run: ./tools/warnings_count/compare_warnings.sh compress
- name: Fix BSS and generate patch
if: failure() && steps.build.outcome == 'failure'
uses: ./.github/actions/fix-bss-and-generate-patch
with:
version: ${{ matrix.version }}
- name: Show warnings
if: failure() && steps.build.outcome == 'failure'
run: cat tools/warnings_count/warnings_setup_new.txt tools/warnings_count/warnings_assets_new.txt tools/warnings_count/warnings_disasm_new.txt tools/warnings_count/warnings_build_new.txt tools/warnings_count/warnings_compress_new.txt
- name: Upload map
uses: actions/upload-artifact@v6
with:
name: mm-${{ matrix.version }}.map
path: build/${{ matrix.version }}/mm-${{ matrix.version }}.map
# This job does not do anything, its purpose is to be used as a status check in GitHub rules.
all_versions_built:
name: All versions built
needs: [build_repo]
runs-on: ubuntu-latest
# Solution 1 from https://github.com/actions/runner/issues/2566#issuecomment-3053484216
if: always()
steps:
- run: |
if [ "${{ needs.build_repo.result }}" != "success" ]; then
exit 1
fi
merge_bss_fixes:
name: Merge BSS fixes
runs-on: ubuntu-latest
needs: [build_repo]
if: '!cancelled()' # Run even if build_repo fails
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Download patches
uses: actions/download-artifact@v8
with:
pattern: fix_bss_*.patch
merge-multiple: true
- name: Apply patches
run: python3 .github/scripts/apply_fix_bss_patches.py
- name: Generate patch
run: .github/scripts/generate_patch.sh
|