max / alloy
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_013wvegQEzB5piwPowYQ3ZbV
1 file changed,
+32 insertions,
-1 deletion
| @@ -98,4 +98,35 @@ | |||
| 98 | 98 | RUN printf 'blacklist nouveau\noptions nouveau modeset=0\n' \ | |
| 99 | 99 | > /etc/modprobe.d/alloy-nvidia-blacklist.conf | |
| 100 | 100 | ||
| 101 | - | RUN bootc container lint | |
| 101 | + | # The build host's leavings, on the same rule the shipped image applies to | |
| 102 | + | # itself. This step is why: the derived image builds a kernel module, which | |
| 103 | + | # means dnf, akmods and dracut all run here, and every one of them leaves | |
| 104 | + | # something behind. | |
| 105 | + | # | |
| 106 | + | # It matters more here than it looks. astra installs and boots THIS image, not | |
| 107 | + | # the Alloy underneath it, so a bar the shipped image enforces and this one does | |
| 108 | + | # not is a bar that does not apply to the only machine that runs it. Measured | |
| 109 | + | # 2026-09-04 on the first build that reached this far: /run/akmods, akmods and | |
| 110 | + | # dnf logs, the libdnf5 and akmods caches, and dnf's countme files, all of them | |
| 111 | + | # payload on a machine that will never run akmods again -- the module is built | |
| 112 | + | # here precisely because the installed system cannot rebuild it. | |
| 113 | + | # | |
| 114 | + | # Everything the shipped image sweeps, plus the two akmods adds. authselect is | |
| 115 | + | # not touched: this image runs no authselect, so its checksum is whatever the | |
| 116 | + | # base already validated. | |
| 117 | + | RUN set -eux; \ | |
| 118 | + | find /run /tmp -mindepth 1 -maxdepth 1 -exec rm -rf {} + 2>/dev/null || true; \ | |
| 119 | + | rm -f /var/log/dnf5.log*; \ | |
| 120 | + | rm -rf /var/lib/dnf /var/cache/libdnf5; \ | |
| 121 | + | rm -rf /var/cache/akmods /var/log/akmods; \ | |
| 122 | + | rm -f /var/cache/ldconfig/aux-cache; \ | |
| 123 | + | echo "sweep: build-host caches, logs and /run content removed" | |
| 124 | + | ||
| 125 | + | # The same gate the shipped image ends on, and for the same reason. | |
| 126 | + | # | |
| 127 | + | # `bootc container lint` alone stood here and reported three warnings that | |
| 128 | + | # nothing read, which is the exact failure the shipped Containerfile records | |
| 129 | + | # fixing on 2026-08-26: a detector whose output reaches no one is not a control. | |
| 130 | + | # A derived image is not a reason to keep a weaker gate -- it is the image that | |
| 131 | + | # boots. | |
| 132 | + | RUN bootc container lint --fatal-warnings --no-truncate |