port: the display-restart recipe omitted the LOCK file

check-all's guard printed 'rm -f /tmp/.X11-unix/X<n>' and nothing else. Removing
only the socket leaves /tmp/.X<n>-lock behind; Xvfb then exits 1 immediately and
the next command still reports no display, which reads as the restart having
failed for a deeper reason rather than as an incomplete recipe.

Hit three times across this project, each time following the printed recipe. The
fix was visible in Xvfb's own stderr the whole time and nobody had read it --
the guard was written to save exactly that step, so an incomplete guard is worse
than none here.
This commit is contained in:
Sylpheed port agent
2026-09-03 15:22:45 +00:00
parent 1628f0e9b5
commit 44a6cb6065

View File

@@ -54,7 +54,13 @@ step() { # name, expectation, command...
if ! DISPLAY="$DISPLAY" timeout 10 xdpyinfo >/dev/null 2>&1; then
echo "🔴 no X display on $DISPLAY -- every Godot step below would fail for that one reason."
echo " Xvfb does not survive a container restart and leaves its socket behind. Start it with:"
echo " rm -f /tmp/.X11-unix/X\${DISPLAY#:} ; Xvfb $DISPLAY -screen 0 1280x720x24 -nolisten tcp &"
echo " rm -f /tmp/.X11-unix/X\${DISPLAY#:} /tmp/.X\${DISPLAY#:}-lock"
echo " Xvfb $DISPLAY -screen 0 1280x720x24 -nolisten tcp &"
echo " 🔴 THE LOCK FILE IS NOT OPTIONAL and this recipe omitted it until"
echo " 2026-09-03. Removing only the socket leaves /tmp/.X<n>-lock behind,"
echo " Xvfb exits 1 immediately, and the next command still reports no"
echo " display -- which reads as the restart having failed for some deeper"
echo " reason. Cost three occurrences before anyone read Xvfb's own stderr."
exit 3
fi