25 Commits

Author SHA1 Message Date
Robin Candau
5f9435cfe9
Drop placeholder substitution for ldconfig aux-cache cleanup in Dockerfile template
In 4b15f9a1a1, a placeholder for the ldconfig aux-cache cleanup (required for the repro image) was implemented in the Dockerfile template and was substituted by either `&& rm -f /var/cache/ldconfig/aux-cache` for the repro group or `&& true` for other groups (so that it does nothing).

While technically harmless, the resulting `&& true` for the non-repro groups is slightly confusing and may raise some eyebrows (see https://github.com/docker-library/official-images/pull/21366). This change aims to drop the placeholder for the ldconfig aux-cache cleanup in the Dockerfile template and simply expand the "ldconfig + sed" RUN command to include the ldconfig aux-cache cleanup for the repro group. This results in a more precisely targeted substitution without unnecessary and confusing addition in the Dockerfile of the non-repro groups.
2026-05-08 10:32:33 +02:00
Robin Candau
d0a2374d67
Expand repro documentation and ensure fixed timezome
Expand the repro documentation with missing bits:

- The Dockerfile needs to be regenerated with the correct group for title annotation to ensure reproducibility.
- The CI_COMMIT_SHA of the original pipeline needs to be honored in the Dockerfile.

Also, set the timezome to UTC in Makefile and scripts to ensure consistency in the generated dates / timestamps (e.g. ARCHIVE_SNAPSHOT / SOURCE_DATE_EPOCH), regardless of the timezone of the environment. Otherwise, someone rebuilding the image locally can unexpectedly end up with a different value for those if the system uses a different timezome.
2026-04-29 17:49:11 +02:00
Robin Candau
04ef2406be
Fix usage of Archive repo snapshot
We were not patching the correct mirrorlist and therefore the Archive repo snapshot was not honored in the build...
Also adding some debug visibility to ease future debug sessions
2026-04-23 19:42:41 +02:00
Robin Candau
4b15f9a1a1
Remove ldconfig auxiliary cache file only for the repro group 2026-04-02 09:24:16 +02:00
Robin Candau
af4e991076
Consistency for if blocks style 2026-03-31 00:52:11 +02:00
Robin Candau
9a4c205f52
Honor SDE in Dockerfile for the repro group 2026-03-30 23:01:08 +02:00
Robin Candau
87a723680e
Get rid of pacman logs for repro image 2026-03-30 22:39:15 +02:00
Robin Candau
7069a6cc06
Revert "WIP"
This reverts commit cd87d3eb612d5bc8a660a19e7a7bb9e1bf5c252b.
2026-03-30 20:26:23 +02:00
Robin Candau
cd87d3eb61
WIP 2026-03-30 13:14:59 +02:00
Robin Candau
b21717021c
Update comment styling 2026-03-28 14:39:41 +01:00
Robin Candau
7fe6027fa9
Move repro specific steps under the repro group condition
Given that we intend to create a dedicated repro tag, we should probably put every repro steps behind this condition and leave the other groups / tags untouched for now.
2026-03-28 14:35:55 +01:00
Mark Hegreberg
20bbc94b91
repro POC
this commit takes the relevant repro steps from the wsl image, and wraps
breaking changes to only affect the :repro image

testing reproducability is not yet included, so we can discuss the
approach first
2026-03-27 19:36:32 -07:00
Justin Kromlinger
b8a77b2c87
Add temporary workaround until pacman 7.1.0 rollout is done 2025-12-14 19:12:51 +01:00
Justin Kromlinger
60e4a6c9bb
Fix pacman v7.1.0 sandbox config 2025-12-14 18:46:41 +01:00
Justin Kromlinger
7bdde954b0
Fix fakechroot build with pacman v7.1.0
Every `pacman -Sy*` call executed with fakeroot will fail with the new pacman release.
Until we have an alternative we need to add `--disable-sandbox-filesystem`.

See https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/merge_requests/77
2025-12-13 18:38:33 +01:00
Justin Kromlinger
ae0527df18
Disable sandbox in oci images due to missing kernel landlock
Resolves the `error: restricting filesystem access failed because the
landlock ruleset could not be applied!` when running pacman.

Closes #103.
2025-01-31 12:22:15 +01:00
Emil Velikov
ee1b64a7ff Use rootfs_file across the board, rename and quote
Currently things are a bit mixed up - just rename all the files to
include the BUILD_VERSION and consistently use the rootfs_file variable.

Throw in some quotes while in there.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-11-18 14:58:56 +00:00
Emil Velikov
5d404ea4bd Introduce multilib-devel container
Can be used to build 32bit (aka multilib) packages. With all the
simplification and de-duplication done with the previous commits, this
turns out to be a fairly simple job ;-)

Notes:
 - there is currently no test stage for this container
 - the release bits will come with next commit

v2:
 - preserve extra.conf for base/base-devel

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-10-22 19:20:06 +01:00
Justin Kromlinger
fb332d2218
Provide rootfs file name to make-dockerfile.sh script
Fixes https://gitlab.archlinux.org/archlinux/archlinux-docker/-/jobs/186685
2023-10-22 15:37:37 +02:00
Emil Velikov
d1254eeee4 scripts/make-dockerfile.sh: reuse in the release stage
Bonus point, we actually error out when the git command fails.

v2:
 - fix curl quoting
 - sed match-complete-line-and-remove
 - inline update make-dockerfile.sh variables

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-10-02 12:46:17 +01:00
Emil Velikov
64cb18a0c3 scripts/make-dockerfile.sh: drop TEMPLATE_ROOTFS_RELEASE_URL
The field is an inline comment, which by default is not present in the
podman log. Plus we do have the exact URL list a couple of lines further
down.

Haven't seen any other Dockerfile have one either, so let's nuke it.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-10-02 11:53:30 +01:00
Emil Velikov
a972ead2e0 scripts/make-dockerfile.sh: rework TEMPLATE_ROOTFS_DOWNLOAD handling
Currently the TEMPLATE_ROOTFS_DOWNLOAD handling is overly complicated.
For the local builds, we set a ROOTFS=$GROUP.tar.zst. While for remote
builds, we:
 - invoke curl to fetch the remote tarball - ok
 - do curl and shell escaping contortions to prints the filename - ehhh
   - that we already now
   - and rely upon to not change, otherwise sha256sum will fail

Just use a dummy "true", for the local builds and a normal curl
command otherwise.

v2:
 - don't call curl in a sub-shell - no longer needed

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-10-02 11:51:59 +01:00
Emil Velikov
c4b62bb18f scripts/make-rootfs.sh: move non-wrapper calls further up
Move the cp/ln calls outside of the WRAPPER call block. The files that
are referenced are either disowned by pacman or are explicitly "backup"
files, such that pacman will not override them.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-09-25 23:49:58 +01:00
Emil Velikov
0067757d21 scripts/make-rootfs.sh: drop pacman gnupg removal
The files are explicitly omitted from the tarball via the excludes file.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-09-25 23:49:52 +01:00
Emil Velikov
f737d64397 Move shell scripts out of the Makefile
Embedding one pieces of code into another (shell script into a makefiles
in this case) is rarely pretty. Split things up, as appropriate.

While here, simplify the rootfs in a few ways:
 - pass only the extra non-base (and effectively group name) package
 - add a handy variable for the fakeroot/fakechroot combo
 - split and rewrap long lines

As a bonus point, this makes it easier to use pattern rules in the
makefile - which will be handy for the upcoming multilib-devel
group/target.

Plus we can check the scripts via shellcheck/etc CI stage, as follow-up.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-09-25 23:40:44 +01:00