Skip to content

Commit 3be8887

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 3be8887

11 files changed

+54
-0
lines changed

board/common/post-image.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
# shellcheck disable=1090
5+
set -e
6+
7+
get_br_var()
8+
{
9+
val="$(sed -n "s/^$1=//p" "$BR2_CONFIG")"
10+
val="${val#\"}"
11+
printf '%s\n' "${val%\"}"
12+
}
13+
14+
OCI_DIR="${BINARIES_DIR}/rootfs-oci"
15+
if [ ! -d "${OCI_DIR}" ]; then
16+
echo "ERROR: ${OCI_DIR} not found!"
17+
exit 1
18+
fi
19+
20+
# Determine container name and docker architecture from defconfig
21+
NAME="$(get_br_var BR2_TARGET_ROOTFS_OCI_TAG)"
22+
ARCH="$(get_br_var BR2_NORMALIZED_ARCH)"
23+
FILE="${NAME}-oci-${ARCH}.tar.gz"
24+
25+
echo "Creating OCI tarball"
26+
echo " Container : ${NAME}"
27+
echo " Architecture : ${ARCH}"
28+
29+
# Create tarball with OCI contents at root (no directory wrapper)
30+
cd "${OCI_DIR}"
31+
tar czf "${BINARIES_DIR}/${FILE}" .
32+
33+
cd "${BINARIES_DIR}"
34+
echo "✓ Created : ${FILE}"
35+
echo
36+
echo "To load this OCI image into your container store:"
37+
echo
38+
echo "$ docker load < ${FILE}"
39+
echo " Getting image source signatures"
40+
echo " Copying blob 03d195b2e729 done | "
41+
echo " Copying config e98a88ec09 done | "
42+
echo " Writing manifest to image destination"
43+
echo " Loaded image: localhost/${NAME}:latest"
44+
echo

configs/httpd_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_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_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_CURIOS_PATH)/board/common/post-image.sh"
1516
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

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)