Skip to content

Commit 4bc95cb

Browse files
committed
Improved build workflow: capture decompiled source context for patch fixing
1 parent 51afc89 commit 4bc95cb

1 file changed

Lines changed: 62 additions & 47 deletions

File tree

.github/workflows/build-snapshot.yml

Lines changed: 62 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -39,33 +39,48 @@ jobs:
3939
- name: Apply Patches
4040
id: apply_patches
4141
run: |
42-
set +e
4342
./gradlew applyPatches --stacktrace 2>&1 | tee applyPatches.log
44-
PATCH_EXIT=$?
45-
set -e
46-
echo "patch_exit_code=$PATCH_EXIT" >> $GITHUB_OUTPUT
47-
if [ $PATCH_EXIT -ne 0 ]; then
43+
continue-on-error: true
44+
45+
- name: Check patch result
46+
id: check_patches
47+
run: |
48+
if grep -q "FAILED\|BUILD FAILED" applyPatches.log; then
4849
echo "PATCH_STATUS=FAILED" >> $GITHUB_ENV
49-
echo "Patches failed (exit code $PATCH_EXIT)"
5050
else
5151
echo "PATCH_STATUS=SUCCESS" >> $GITHUB_ENV
52-
echo "Patches applied successfully"
5352
fi
5453
55-
- name: List failed patches
54+
- name: Dump failing context
5655
if: env.PATCH_STATUS == 'FAILED'
5756
run: |
58-
echo "=== FAILED PATCHES ==="
59-
grep -i "FAIL\|CONFLICT\|could not apply\|error:" applyPatches.log || true
57+
echo "=== MACHE PATCH FAILURES ==="
58+
grep -i "Patching:\|Hunk.*FAILURE\|Failed to apply" applyPatches.log || true
6059
echo ""
61-
echo "=== CONFLICT FILES ==="
62-
find . -name "*.java" -exec grep -l "<<<<<<< HEAD" {} \; 2>/dev/null || true
60+
echo "=== LOOKING FOR DECOMPILED SOURCE ==="
61+
find . -path "*/src/minecraft/java/net/minecraft/world/entity/LivingEntity.java" 2>/dev/null || true
62+
find . -path "*/src/minecraft/java/net/minecraft/world/level/biome/Climate.java" 2>/dev/null || true
6363
echo ""
64-
echo "=== PATCH HUNK FAILURES ==="
65-
grep -B2 "FAILED\|cannot apply\|reject" applyPatches.log | head -100 || true
64+
echo "=== DECOMPILED LivingEntity.java around lines 1170-1290 ==="
65+
LIVING=$(find . -path "*/src/minecraft/java/net/minecraft/world/entity/LivingEntity.java" 2>/dev/null | head -1)
66+
if [ -n "$LIVING" ]; then
67+
sed -n '1160,1200p' "$LIVING" 2>/dev/null || true
68+
echo "--- gap ---"
69+
sed -n '1255,1295p' "$LIVING" 2>/dev/null || true
70+
else
71+
echo "LivingEntity.java not found (mache may not have extracted it yet)"
72+
fi
6673
echo ""
67-
echo "=== LAST 500 LINES ==="
68-
tail -500 applyPatches.log
74+
echo "=== DECOMPILED Climate.java around lines 260-280 ==="
75+
CLIMATE=$(find . -path "*/src/minecraft/java/net/minecraft/world/level/biome/Climate.java" 2>/dev/null | head -1)
76+
if [ -n "$CLIMATE" ]; then
77+
sed -n '255,285p' "$CLIMATE" 2>/dev/null || true
78+
else
79+
echo "Climate.java not found"
80+
fi
81+
echo ""
82+
echo "=== LAST 300 LINES ==="
83+
tail -300 applyPatches.log
6984
7085
- name: Upload patch log
7186
if: always()
@@ -79,32 +94,29 @@ jobs:
7994
if: env.PATCH_STATUS == 'SUCCESS'
8095
id: compile
8196
run: |
82-
set +e
8397
./gradlew :paper-server:compileJava 2>&1 | tee compileJava.log
84-
COMPILE_EXIT=$?
85-
set -e
86-
echo "compile_exit_code=$COMPILE_EXIT" >> $GITHUB_OUTPUT
87-
if [ $COMPILE_EXIT -ne 0 ]; then
98+
continue-on-error: true
99+
100+
- name: Check compile result
101+
if: env.PATCH_STATUS == 'SUCCESS'
102+
run: |
103+
if grep -q "BUILD FAILED\|error:" compileJava.log 2>/dev/null; then
88104
echo "COMPILE_STATUS=FAILED" >> $GITHUB_ENV
105+
echo "=== COMPILE ERROR SUMMARY ==="
106+
grep "error:" compileJava.log | sort -u | head -200
107+
echo ""
108+
echo "=== UNIQUE MISSING PACKAGES ==="
109+
grep "package .* does not exist" compileJava.log | sed 's/.*package //' | sed 's/ does not exist.*//' | sort -u
110+
echo ""
111+
echo "=== UNIQUE MISSING SYMBOLS ==="
112+
grep "cannot find symbol" compileJava.log | sort -u | head -50
113+
echo ""
114+
echo "=== FULL ERROR COUNT ==="
115+
grep -c "error:" compileJava.log || echo "0"
89116
else
90117
echo "COMPILE_STATUS=SUCCESS" >> $GITHUB_ENV
91118
fi
92119
93-
- name: Extract compile errors
94-
if: env.COMPILE_STATUS == 'FAILED'
95-
run: |
96-
echo "=== COMPILE ERROR SUMMARY ==="
97-
grep "error:" compileJava.log | sort -u | head -200
98-
echo ""
99-
echo "=== UNIQUE MISSING PACKAGES ==="
100-
grep "package .* does not exist" compileJava.log | sed 's/.*package //' | sed 's/ does not exist.*//' | sort -u
101-
echo ""
102-
echo "=== UNIQUE MISSING SYMBOLS ==="
103-
grep "cannot find symbol" compileJava.log | sort -u | head -50
104-
echo ""
105-
echo "=== FULL ERROR COUNT ==="
106-
grep -c "error:" compileJava.log || echo "0"
107-
108120
- name: Upload compile log
109121
if: always() && env.PATCH_STATUS == 'SUCCESS'
110122
uses: actions/upload-artifact@v4
@@ -122,19 +134,22 @@ jobs:
122134
if: env.COMPILE_STATUS == 'SUCCESS'
123135
id: build_jar
124136
run: |
125-
set +e
126-
./gradlew createMojmapBundlerJar 2>&1 | tee buildJar.log
127-
if [ $? -ne 0 ]; then
128-
echo "createMojmapBundlerJar failed, trying alternatives..."
129-
./gradlew tasks --all 2>&1 | grep -i "jar" | tee -a buildJar.log
130-
fi
131-
BUILD_EXIT=$?
132-
set -e
133-
if [ $BUILD_EXIT -eq 0 ]; then
134-
echo "BUILD_STATUS=SUCCESS" >> $GITHUB_ENV
135-
else
137+
# Try multiple task names - paperweight 2.0 may have changed them
138+
for task in createMojmapBundlerJar createBundlerJar paperclipJar createPaperclipJar shadowJar; do
139+
echo "Trying task: $task"
140+
if ./gradlew $task 2>&1 | tee buildJar.log; then
141+
echo "BUILD_STATUS=SUCCESS" >> $GITHUB_ENV
142+
break
143+
else
144+
echo "$task failed, trying next..."
145+
fi
146+
done
147+
if [ "${BUILD_STATUS:-FAILED}" != "SUCCESS" ]; then
136148
echo "BUILD_STATUS=FAILED" >> $GITHUB_ENV
149+
echo "=== Available jar tasks ==="
150+
./gradlew tasks --all 2>&1 | grep -i "jar" | tee -a buildJar.log || true
137151
fi
152+
continue-on-error: true
138153

139154
- name: Upload build log
140155
if: always() && env.COMPILE_STATUS == 'SUCCESS'

0 commit comments

Comments
 (0)