Both filter the compiler's output through $egrep, and plan9port assigns that variable nowhere -- six scripts read it, one unrelated developer script sets it. The pipeline dies on the empty command and takes the whole diagnostic with it, so -Wall -Wextra was decorative and a build that failed to compile printed nothing but an exit status. That is how the tests' own dialect bug hid until it was hunted with a patched 9c. Both scripts source $PLAN9/config, which the distribution does not ship, so one line in it is the fix the scripts themselves ask for; it needs no patching of a packaged file and covers 9c and 9l together. The daemon it builds is byte-identical, and with the diagnostics visible the whole tree and every test object compile without a warning. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
51 lines
1.2 KiB
Docker
51 lines
1.2 KiB
Docker
FROM archlinux:base@sha256:b0deabeb3d283da2c7f7dbf0eea051b7b2cd0554e0b737cc457fd21683bdcdd1
|
|
|
|
RUN pacman -Syu --noconfirm --needed \
|
|
cairo \
|
|
fontconfig \
|
|
diffutils \
|
|
gcc \
|
|
gtk3 \
|
|
ibus \
|
|
harfbuzz \
|
|
libx11 \
|
|
libxcb \
|
|
libxkbcommon \
|
|
make \
|
|
noto-fonts-emoji \
|
|
pango \
|
|
pkgconf \
|
|
plan9port \
|
|
python \
|
|
ttf-dejavu \
|
|
ttf-jigmo \
|
|
valgrind \
|
|
wayland \
|
|
which \
|
|
xorg-server-xvfb \
|
|
xcb-imdkit \
|
|
xcb-util \
|
|
dbus \
|
|
&& pacman -Scc --noconfirm
|
|
|
|
RUN export DEBUGINFOD_URLS=https://debuginfod.archlinux.org \
|
|
&& buildid="$(readelf -n /usr/lib/ld-linux-x86-64.so.2 | sed -n 's/.*Build ID: //p')" \
|
|
&& test -n "$buildid" \
|
|
&& debugdir="/usr/lib/debug/.build-id/$(printf '%.2s' "$buildid")" \
|
|
&& mkdir -p "$debugdir" \
|
|
&& install -m 0644 "$(debuginfod-find debuginfo /usr/lib/ld-linux-x86-64.so.2)" \
|
|
"$debugdir/${buildid#??}.debug" \
|
|
&& rm -rf /root/.cache/debuginfod_client
|
|
|
|
RUN dbus-uuidgen --ensure=/etc/machine-id
|
|
|
|
ENV PLAN9=/usr/lib/plan9
|
|
ENV PATH=$PATH:/usr/lib/plan9/bin
|
|
|
|
# 9c and 9l filter their own output through $egrep, which plan9port never
|
|
# assigns, so the pipeline dies and takes every warning and error with it.
|
|
# Both source $PLAN9/config, which the distribution does not ship.
|
|
RUN echo 'egrep="grep -E"' > $PLAN9/config
|
|
|
|
WORKDIR /src
|