Skip to content

Commit 43db1d8

Browse files
troglobitclaude
andcommitted
Add post-image script to create release-style tarballs locally
Implement a post-image script that automatically creates OCI tarballs matching the release artifact format after local builds. This makes it easier to test and distribute locally-built images without relying on CI/CD workflows. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
1 parent 57a813d commit 43db1d8

11 files changed

+60
-1
lines changed

board/common/post-image.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/sh
2+
# Post-image script to create OCI tarball similar to release artifacts
3+
# This makes local builds easier to distribute and test
4+
5+
set -e
6+
7+
IMAGES_DIR="${BINARIES_DIR}"
8+
OCI_DIR="${IMAGES_DIR}/rootfs-oci"
9+
CONFIG_FILE="${O}/.config"
10+
11+
# Check if OCI directory exists
12+
if [ ! -d "${OCI_DIR}" ]; then
13+
echo "ERROR: ${OCI_DIR} not found!"
14+
exit 1
15+
fi
16+
17+
# Extract defconfig name from output/.config
18+
DEFCONFIG_PATH=$(grep '^BR2_DEFCONFIG=' "${CONFIG_FILE}" | cut -d'"' -f2)
19+
DEFCONFIG=$(basename "${DEFCONFIG_PATH}" _defconfig)
20+
21+
# Determine container name and architecture from defconfig
22+
# Format: <app>_<arch>_defconfig (e.g., nftables_amd64_defconfig)
23+
APP_NAME="${DEFCONFIG%_*}"
24+
ARCH="${DEFCONFIG##*_}"
25+
26+
CONTAINER_NAME="curios-${APP_NAME}"
27+
[ "${CONTAINER_NAME}" = "curios-system" ] && CONTAINER_NAME="curios"
28+
29+
# Get version tag from OCI metadata or use 'edge'
30+
TAG=$(grep -o '"edge"' "${OCI_DIR}/index.json" 2>/dev/null | tr -d '"' || echo "edge")
31+
32+
TARBALL_NAME="${CONTAINER_NAME}-oci-${ARCH}.tar.gz"
33+
34+
echo "Creating OCI tarball: ${TARBALL_NAME}"
35+
echo " Container: ${CONTAINER_NAME}"
36+
echo " Architecture: ${ARCH}"
37+
echo " Tag: ${TAG}"
38+
39+
# Create tarball with OCI contents at root (no directory wrapper)
40+
cd "${OCI_DIR}"
41+
tar czf "${IMAGES_DIR}/${TARBALL_NAME}" .
42+
43+
cd "${IMAGES_DIR}"
44+
echo "✓ Created ${TARBALL_NAME}"
45+
echo ""
46+
echo "To load this image:"
47+
echo " tar xzf ${TARBALL_NAME} && podman load < index.json"
48+
echo "Or:"
49+
echo " tar xzf ${TARBALL_NAME} && docker load < index.json"

configs/httpd_amd64_defconfig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ BR2_INIT_NONE=y
1212
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1313
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_CURIOS_PATH)/board/httpd/rootfs"
1414
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
15-
BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL_CURIOS_PATH}/board/httpd/busybox_defconfig"
15+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
16+
BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL_CURIOS_PATH)/board/httpd/busybox_defconfig"
1617
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
1718
BR2_PACKAGE_TINI=y
1819
BR2_TARGET_ROOTFS_OCI=y

configs/httpd_arm64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ BR2_INIT_NONE=y
1313
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1414
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_CURIOS_PATH)/board/httpd/rootfs"
1515
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
16+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1617
BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL_CURIOS_PATH}/board/httpd/busybox_defconfig"
1718
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
1819
BR2_PACKAGE_TINI=y

configs/neofetch_amd64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ BR2_INIT_NONE=y
1212
# BR2_TARGET_GENERIC_GETTY is not set
1313
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1414
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
15+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1516
BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL_CURIOS_PATH}/board/neofetch/busybox_defconfig"
1617
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
1718
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set

configs/neofetch_arm64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ BR2_INIT_NONE=y
1313
# BR2_TARGET_GENERIC_GETTY is not set
1414
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1515
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
16+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1617
BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL_CURIOS_PATH}/board/neofetch/busybox_defconfig"
1718
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
1819
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set

configs/nftables_amd64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to curiOS"
1414
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1515
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/rootfs $(BR2_EXTERNAL_CURIOS_PATH)/board/nftables/rootfs"
1616
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
17+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1718
BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL_CURIOS_PATH}/board/nftables/busybox_defconfig"
1819
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
1920
BR2_PACKAGE_NFTABLES=y

configs/nftables_arm64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to curiOS"
1515
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1616
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/rootfs $(BR2_EXTERNAL_CURIOS_PATH)/board/nftables/rootfs"
1717
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
18+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1819
BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL_CURIOS_PATH}/board/nftables/busybox_defconfig"
1920
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
2021
BR2_PACKAGE_NFTABLES=y

configs/ntpd_amd64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ BR2_SYSTEM_BIN_SH_NONE=y
1313
# BR2_TARGET_GENERIC_GETTY is not set
1414
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1515
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
16+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1617
# BR2_PACKAGE_BUSYBOX is not set
1718
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
1819
BR2_PACKAGE_NTP=y

configs/ntpd_arm64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ BR2_SYSTEM_BIN_SH_NONE=y
1414
# BR2_TARGET_GENERIC_GETTY is not set
1515
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1616
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
17+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1718
# BR2_PACKAGE_BUSYBOX is not set
1819
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
1920
BR2_PACKAGE_NTP=y

configs/system_amd64_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to curiOS"
1111
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
1212
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/rootfs $(BR2_EXTERNAL_CURIOS_PATH)/board/system/rootfs $(BR2_EXTERNAL_CURIOS_PATH)/board/nftables/rootfs"
1313
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-build.sh"
14+
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1415
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_CURIOS_PATH)/board/system/busybox_defconfig"
1516
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
1617
BR2_PACKAGE_LIBCURL=y

0 commit comments

Comments
 (0)