buildmaster: add static apk utility ynezz/add-static-apk
authorPetr Štetiar <ynezz@true.cz>
Tue, 24 Sep 2024 20:00:59 +0000 (20:00 +0000)
committerPetr Štetiar <ynezz@true.cz>
Wed, 25 Sep 2024 19:45:02 +0000 (19:45 +0000)
We need a relatively recent `apk` that can sign package indexes. You can
find more details in the referenced issue below. However, it has not
been released yet and is not available as a prebuilt download.
Therefore, until it becomes available, let's build a static version and
use that in the meantime.

Fixes: a94d4e15fdc1 ("add APK signing logic")
References: https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/11008
Signed-off-by: Petr Štetiar <ynezz@true.cz>
docker/buildmaster/Dockerfile
tests/cram/master/02-apk.t [new file with mode: 0644]

index 8d21245eaeb0ce6bcc14d6cddda9baf6ea1b6ef8..51b9d9b2a9c0bc3656265c4d73805eb3c7ac6faa 100644 (file)
@@ -1,3 +1,28 @@
+FROM alpinelinux/build-base:latest-x86_64 AS apk-builder
+
+RUN abuild-apk add -u \
+       gcc \
+       git \
+       linux-headers \
+       lua5.3-dev \
+       lua5.3-lzlib \
+       make \
+       musl-dev \
+       openssl-dev \
+       openssl-libs-static \
+       zlib-dev \
+       zlib-static \
+       zstd-dev \
+       zstd-static
+
+ARG APK_TOOLS_COMMIT=74de0e9bd73d1af8720df40aa68d472943909804
+
+RUN git clone https://gitlab.alpinelinux.org/alpine/apk-tools.git /tmp/apk-tools
+WORKDIR /tmp/apk-tools
+RUN git checkout $APK_TOOLS_COMMIT
+RUN make -j$(nproc) static
+
+
 FROM        debian:11
 MAINTAINER  OpenWrt Maintainers
 
@@ -55,6 +80,7 @@ COPY docker/buildmaster/files/start.sh /start.sh
 COPY phase1 /phase1
 COPY phase2 /phase2
 COPY scripts /scripts
+COPY --from=apk-builder /tmp/apk-tools/src/apk.static /usr/bin/apk
 
 RUN \
     groupadd buildbot && \
diff --git a/tests/cram/master/02-apk.t b/tests/cram/master/02-apk.t
new file mode 100644 (file)
index 0000000..17818ff
--- /dev/null
@@ -0,0 +1,4 @@
+Check that apk is available and usable in master container:
+
+  $ docker run --entrypoint apk local/master | grep usage
+  usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]