[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v4 01/13] Add Alpine 3.23 containers


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
  • Date: Mon, 4 May 2026 14:35:40 +0200
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm2 header.d=invisiblethingslab.com header.i="@invisiblethingslab.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=fm3 header.d=messagingengine.com header.i="@messagingengine.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:Feedback-ID:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To:X-ME-Proxy:X-ME-Sender"
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 04 May 2026 12:45:50 +0000
  • Feedback-id: i1568416f:Fastmail
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Add it in all variants:
- base container
- build container
- initramfs archive

libdw used to be part of libelf in Alpine 3.18, but it's a separate
package in 3.23.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
---
Changes in v4:
- Update to Alpine 3.23
- Fix alpine-3.22-arm64-rootfs
- Adjust default in containerize script
Changes in v3:
- add comment about libdw
---
 .gitlab-ci.yml                             | 14 +++++++-
 containerize                               |  6 ++-
 images/alpine/3.23-arm64-base.dockerfile   |  6 +++-
 images/alpine/3.23-arm64-build.dockerfile  | 31 +++++++++++++++++-
 images/alpine/3.23-x86_64-base.dockerfile  |  6 +++-
 images/alpine/3.23-x86_64-build.dockerfile | 43 +++++++++++++++++++++++-
 scripts/alpine-rootfs.sh                   |  6 +++-
 7 files changed, 111 insertions(+), 1 deletion(-)
 create mode 100644 images/alpine/3.23-arm64-base.dockerfile
 create mode 100644 images/alpine/3.23-arm64-build.dockerfile
 create mode 100644 images/alpine/3.23-x86_64-base.dockerfile
 create mode 100644 images/alpine/3.23-x86_64-build.dockerfile

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c698612..b86d9aa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -40,6 +40,13 @@ alpine-3.18-arm64-rootfs:
   variables:
     CONTAINER: alpine:3.18-arm64-base
 
+alpine-3.23-arm64-rootfs:
+  extends: .arm64-artifacts
+  script:
+    - ./scripts/alpine-rootfs.sh
+  variables:
+    CONTAINER: alpine:3.23-arm64-base
+
 linux-6.6.86-arm64:
   extends: .arm64-artifacts
   script: ./scripts/build-linux.sh
@@ -56,6 +63,13 @@ alpine-3.18-x86_64-rootfs:
   variables:
     CONTAINER: alpine:3.18-x86_64-base
 
+alpine-3.23-x86_64-rootfs:
+  extends: .x86_64-artifacts
+  script:
+    - ./scripts/alpine-rootfs.sh
+  variables:
+    CONTAINER: alpine:3.23-x86_64-base
+
 linux-6.6.56-x86_64:
   extends: .x86_64-artifacts
   script: ./scripts/build-linux.sh
diff --git a/containerize b/containerize
index 38a434a..a74ef45 100755
--- a/containerize
+++ b/containerize
@@ -27,7 +27,11 @@ case "_${CONTAINER}" in
     _alpine-3.18-arm64-base) CONTAINER="${BASE}/alpine:3.18-arm64-base" ;;
     _alpine-3.18-arm64-build) CONTAINER="${BASE}/alpine:3.18-arm64-build" ;;
     _alpine-3.18-x86_64-base) CONTAINER="${BASE}/alpine:3.18-x86_64-base" ;;
-    _alpine-3.18-x86_64-build|_) CONTAINER="${BASE}/alpine:3.18-x86_64-build" 
;;
+    _alpine-3.18-x86_64-build) CONTAINER="${BASE}/alpine:3.18-x86_64-build" ;;
+    _alpine-3.23-arm64-base) CONTAINER="${BASE}/alpine:3.23-arm64-base" ;;
+    _alpine-3.23-arm64-build) CONTAINER="${BASE}/alpine:3.23-arm64-build" ;;
+    _alpine-3.23-x86_64-base) CONTAINER="${BASE}/alpine:3.23-x86_64-base" ;;
+    _alpine-3.23-x86_64-build|_) CONTAINER="${BASE}/alpine:3.23-x86_64-build" 
;;
 esac
 
 # Use this variable to control whether root should be used
diff --git a/images/alpine/3.23-arm64-base.dockerfile 
b/images/alpine/3.23-arm64-base.dockerfile
new file mode 100644
index 0000000..5899803
--- /dev/null
+++ b/images/alpine/3.23-arm64-base.dockerfile
@@ -0,0 +1,6 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/arm64/v8 alpine:3.23
+LABEL maintainer.name="The Xen Project"
+LABEL maintainer.email="xen-devel@xxxxxxxxxxxxxxxxxxxx"
+
+RUN apk --no-cache add bash
diff --git a/images/alpine/3.23-arm64-build.dockerfile 
b/images/alpine/3.23-arm64-build.dockerfile
new file mode 100644
index 0000000..1e04b3a
--- /dev/null
+++ b/images/alpine/3.23-arm64-build.dockerfile
@@ -0,0 +1,31 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/arm64/v8 alpine:3.23
+LABEL maintainer.name="The Xen Project"
+LABEL maintainer.email="xen-devel@xxxxxxxxxxxxxxxxxxxx"
+
+RUN apk --no-cache add bash
+
+RUN <<EOF
+#!/bin/bash
+      set -eu
+
+      adduser -D user --shell /bin/bash
+
+      DEPS=(# Base environment
+            build-base
+            curl
+            git
+
+            # Linux build deps
+            bison
+            findutils
+            flex
+            openssl-dev
+            perl
+      )
+
+      apk add --no-cache "${DEPS[@]}"
+EOF
+
+USER user
+WORKDIR /build
diff --git a/images/alpine/3.23-x86_64-base.dockerfile 
b/images/alpine/3.23-x86_64-base.dockerfile
new file mode 100644
index 0000000..4c5807f
--- /dev/null
+++ b/images/alpine/3.23-x86_64-base.dockerfile
@@ -0,0 +1,6 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 alpine:3.23
+LABEL maintainer.name="The Xen Project"
+LABEL maintainer.email="xen-devel@xxxxxxxxxxxxxxxxxxxx"
+
+RUN apk --no-cache add bash
diff --git a/images/alpine/3.23-x86_64-build.dockerfile 
b/images/alpine/3.23-x86_64-build.dockerfile
new file mode 100644
index 0000000..b938d7b
--- /dev/null
+++ b/images/alpine/3.23-x86_64-build.dockerfile
@@ -0,0 +1,43 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 alpine:3.23
+LABEL maintainer.name="The Xen Project"
+LABEL maintainer.email="xen-devel@xxxxxxxxxxxxxxxxxxxx"
+
+RUN apk --no-cache add bash
+
+RUN <<EOF
+#!/bin/bash
+      set -eu
+
+      adduser -D user --shell /bin/bash
+
+      DEPS=(# Base environment
+            build-base
+            curl
+            git
+
+            # Linux build deps
+            bison
+            diffutils
+            elfutils-dev
+            findutils
+            flex
+            gawk
+            linux-headers
+            openssl-dev
+            perl
+
+            # Microcode
+            jq
+
+            # Argo build deps
+            autoconf
+            automake
+            libtool
+      )
+
+      apk add --no-cache "${DEPS[@]}"
+EOF
+
+USER user
+WORKDIR /build
diff --git a/scripts/alpine-rootfs.sh b/scripts/alpine-rootfs.sh
index 6fa1d56..3cd3ab9 100755
--- a/scripts/alpine-rootfs.sh
+++ b/scripts/alpine-rootfs.sh
@@ -40,6 +40,12 @@ case $UNAME in
             # QEMU
             libelf
             )
+        # libdw used to be part of libelf in Alpine 3.18, but it's a separate
+        # package in 3.22.
+        if ! grep -q VERSION_ID=3.18 /etc/os-release; then
+            # QEMU
+            PKGS+=( libdw )
+        fi
         ;;
 
     aarch64)
-- 
git-series 0.9.1



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.