From 18fe38c30b48fb99bd167c2524bc8e70bba969e8 Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Tue, 5 May 2026 13:45:42 +0300 Subject: [PATCH] build: use build_date argument for docker image instead of guessing from pacman root --- .github/workflows/docker.yml | 6 ++++++ docker/Dockerfile | 23 +++++++++++------------ docker/install-aur-package.sh | 4 +++- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 3204d531..7536e4dd 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -26,6 +26,10 @@ jobs: - uses: docker/setup-buildx-action@v3 + - name: Set image date + id: args + run: echo "::set-output name=date::$(date -d yesterday +'%Y-%m-%d')" + - name: Login to docker hub uses: docker/login-action@v3 with: @@ -53,6 +57,8 @@ jobs: - name: Build an image and push uses: docker/build-push-action@v6 with: + build-args: | + BUILD_DATE=${{ steps.args.outputs.date }} file: docker/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} diff --git a/docker/Dockerfile b/docker/Dockerfile index 061f9ff9..bdbe5ba6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,13 +1,15 @@ # build image FROM archlinux:base AS build +ARG BUILD_DATE + # install environment ## create build user RUN useradd -m -d "/home/build" -s "/usr/bin/nologin" build ## extract container creation date and set mirror for this timestamp, set PKGEXT and refresh database next -RUN echo "Server = https://archive.archlinux.org/repos/$(stat -c "%y" "/var/lib/pacman" | cut -d " " -f 1 | sed "s,-,/,g")/\$repo/os/\$arch" > "/etc/pacman.d/mirrorlist" && \ - pacman -Sy +RUN echo "Server = https://archive.archlinux.org/repos/${BUILD_DATE//-/\/}/\$repo/os/\$arch" > "/etc/pacman.d/mirrorlist" && \ + pacman -Syyuu --noconfirm ## setup package cache RUN runuser -u build -- mkdir "/tmp/pkg" && \ echo "PKGDEST=/tmp/pkg" >> "/etc/makepkg.conf" && \ @@ -29,17 +31,15 @@ RUN pacman -S --noconfirm --asdeps \ python-filelock \ python-inflection \ python-pyelftools \ - python-requests \ - && \ - pacman -S --noconfirm --asdeps \ + python-requests +RUN pacman -S --noconfirm --asdeps \ base-devel \ python-build \ python-flit \ python-installer \ python-tox \ - python-wheel \ - && \ - pacman -S --noconfirm --asdeps \ + python-wheel +RUN pacman -S --noconfirm --asdeps \ git \ python-aiohttp \ python-aiohttp-openmetrics \ @@ -48,9 +48,8 @@ RUN pacman -S --noconfirm --asdeps \ python-cryptography \ python-jinja \ python-systemd \ - rsync \ - && \ - runuser -u build -- install-aur-package \ + rsync +RUN runuser -u build -- install-aur-package \ python-aioauth-client \ python-sphinx-typlog-theme \ python-webargs \ @@ -109,7 +108,7 @@ RUN cp "/etc/pacman.d/mirrorlist" "/etc/pacman.d/mirrorlist.orig" && \ echo "Server = file:///var/cache/pacman/pkg" > "/etc/pacman.d/mirrorlist" && \ cp "/etc/pacman.conf" "/etc/pacman.conf.orig" && \ sed -i "s/SigLevel *=.*/SigLevel = Optional/g" "/etc/pacman.conf" && \ - pacman -Sy + pacman -Syyuu --noconfirm ## install package and its optional dependencies RUN pacman -S --noconfirm ahriman RUN pacman -S --noconfirm --asdeps \ diff --git a/docker/install-aur-package.sh b/docker/install-aur-package.sh index 85d24ed0..a8889082 100755 --- a/docker/install-aur-package.sh +++ b/docker/install-aur-package.sh @@ -7,8 +7,10 @@ for PACKAGE in "$@"; do # clone the remote source git clone https://aur.archlinux.org/"$PACKAGE".git "$BUILD_DIR" cd "$BUILD_DIR" + # FIXME monkey patch PKGBUILD for python + sed -i 's/python -m build/python -m build --skip-dependency-check/g' "PKGBUILD" # checkout to the image date - git checkout "$(git rev-list -1 --before="$(stat -c "%y" "/var/lib/pacman" | cut -d " " -f 1)" master)" + git checkout "$(git rev-list -1 --before="$BUILD_DATE" master)" # build and install the package makepkg --nocheck --noconfirm --install --rmdeps --syncdeps cd /