diff --git a/README.md b/README.md index 4a270b7..0f15c07 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,3 @@ temporary build-related artifacts. * New Alpine Linux *versions* are currently not auto-detected and added as a core version profile; this process is, at the moment, still a manual task. - -* Although it's possible to build "aarch64" (arm64) AMIs, they don't quite work - yet. diff --git a/profiles/alpine.conf b/profiles/alpine.conf index fbb086d..0c55058 100644 --- a/profiles/alpine.conf +++ b/profiles/alpine.conf @@ -1,6 +1,7 @@ ### Profile for Building the Publically-Available Alpine Linux AMIs # vim: ts=2 et: +version-3_12 { include required("version/3.12") } version-3_11 { include required("version/3.11") } version-3_10 { include required("version/3.10") } version-3_9 { include required("version/3.9") } @@ -15,15 +16,13 @@ alpine { # Build definitions BUILDS { - # merge version, arch, and profile vars + # merge version, arch, profile; add { revision = "r1" } if needed + v3_12-x86_64 = ${version-3_12} ${arch-x86_64} ${alpine} v3_11-x86_64 = ${version-3_11} ${arch-x86_64} ${alpine} v3_10-x86_64 = ${version-3_10} ${arch-x86_64} ${alpine} v3_9-x86_64 = ${version-3_9} ${arch-x86_64} ${alpine} - edge-x86_64 = ${version-edge} ${arch-x86_64} ${alpine} { - revision = "@NOW@" - } + edge-x86_64 = ${version-edge} ${arch-x86_64} ${alpine} - edge-aarch64 = ${version-edge} ${arch-aarch64} ${alpine} { - revision = "@NOW@" - } + v3_12-aarch64 = ${version-3_12} ${arch-aarch64} ${alpine} + edge-aarch64 = ${version-edge} ${arch-aarch64} ${alpine} } diff --git a/profiles/arch/aarch64-1 b/profiles/arch/aarch64-1 index 37564e5..f40af5a 100644 --- a/profiles/arch/aarch64-1 +++ b/profiles/arch/aarch64-1 @@ -6,5 +6,5 @@ build_arch = "arm64" build_instance_type = "a1.medium" apk_tools = "https://github.com/alpinelinux/apk-tools/releases/download/v2.10.3/apk-tools-2.10.3-aarch64-linux.tar.gz" apk_tools_sha256 = "58a07e547c83c3a30eb0a0bd73db57d6bbaf92cc093df7a1d9805631f7d349e3" -alpine_keys = "http://dl-cdn.alpinelinux.org/alpine/v3.9/main/aarch64/alpine-keys-2.1-r1.apk" -alpine_keys_sha256 = "1ae4cebb43adee47a68aa891660e69a1ac6467690daca6f211aabff36a17cad1" +alpine_keys = "http://dl-cdn.alpinelinux.org/alpine/v3.12/main/aarch64/alpine-keys-2.2-r0.apk" +alpine_keys_sha256 = "94f287d541a03017d37895e46dc43bb62ce2e66ee99bb96b8c3de5c6638d5953" diff --git a/profiles/arch/x86_64-1 b/profiles/arch/x86_64-1 index 40b60dc..ce30a7b 100644 --- a/profiles/arch/x86_64-1 +++ b/profiles/arch/x86_64-1 @@ -3,7 +3,7 @@ arch = "x86_64" build_arch = "x86_64" -apk_tools = "https://github.com/alpinelinux/apk-tools/releases/download/v2.10.3/apk-tools-2.10.3-x86_64-linux.tar.gz" -apk_tools_sha256 = "4d0b2cda606720624589e6171c374ec6d138867e03576d9f518dddde85c33839" -alpine_keys = "http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/alpine-keys-2.1-r1.apk" -alpine_keys_sha256 = "9c7bc5d2e24c36982da7aa49b3cfcb8d13b20f7a03720f25625fa821225f5fbc" +apk_tools = "https://github.com/alpinelinux/apk-tools/releases/download/v2.10.4/apk-tools-2.10.4-x86_64-linux.tar.gz" +apk_tools_sha256 = "efe948160317fe78058e207554d0d9195a3dfcc35f77df278d30448d7b3eb892" +alpine_keys = "http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/alpine-keys-2.2-r0.apk" +alpine_keys_sha256 = "d75cfd3eb6c863779f4eccb55ab5b6c5a8e47e4538c717fae580d3c47c70574a" diff --git a/profiles/test.conf b/profiles/test.conf index 74019b1..dc86fd0 100644 --- a/profiles/test.conf +++ b/profiles/test.conf @@ -14,17 +14,22 @@ test { ami_name_prefix = "test-" ami_desc_prefix = "Alpine Test " ami_user = "test" + setup_script = scripts/test-setup_script.sh + setup_copy { + base = profiles/base + aarch64 = profiles/arch/aarch64 + } } # Build definitions BUILDS { # merge version, arch, profile, and build vars - v3_12-x86_64 = ${version-3_12} ${arch-x86_64} ${test} { revision = "r0" } - v3_11-x86_64 = ${version-3_11} ${arch-x86_64} ${test} { revision = "r0" } - v3_10-x86_64 = ${version-3_10} ${arch-x86_64} ${test} { revision = "r0" } - v3_9-x86_64 = ${version-3_9} ${arch-x86_64} ${test} { revision = "r0" } + v3_12-x86_64 = ${version-3_12} ${arch-x86_64} ${test} + v3_11-x86_64 = ${version-3_11} ${arch-x86_64} ${test} { revision = "r1" } + v3_10-x86_64 = ${version-3_10} ${arch-x86_64} ${test} { revision = "r2" } + v3_9-x86_64 = ${version-3_9} ${arch-x86_64} ${test} { revision = "r3" } edge-x86_64 = ${version-edge} ${arch-x86_64} ${test} - v3_12-aarch64 = ${version-3_12} ${arch-aarch64} ${test} { revision = "r0" } + v3_12-aarch64 = ${version-3_12} ${arch-aarch64} ${test} edge-aarch64 = ${version-edge} ${arch-aarch64} ${test} } diff --git a/profiles/version/edge b/profiles/version/edge index 07c583d..1bde7b5 100644 --- a/profiles/version/edge +++ b/profiles/version/edge @@ -7,8 +7,8 @@ include required("../base/current") # add edge-specific tweaks... version = "edge" release = "edge" -end_of_life = "@TOMORROW@" -revision = "@NOW@" +end_of_life = null # defaults to tomorrow +revision = null # defaults to datetime repos { "http://dl-cdn.alpinelinux.org/alpine/edge/main" = true diff --git a/scripts/builder.py b/scripts/builder.py index 21df3fe..3f1d8f7 100755 --- a/scripts/builder.py +++ b/scripts/builder.py @@ -459,12 +459,24 @@ class ConfigBuilder: return datetime.fromisoformat(input).isoformat(timespec="seconds") @classmethod - def resolve_tomorrow(cls, input): + def resolve_now(cls): + return cls.now.strftime("%Y%m%d%H%M%S") + + @classmethod + def resolve_revision(cls, input): + if input is None or input == "": + return cls.resolve_now() + return input + + @classmethod + def resolve_tomorrow(cls): return cls.tomorrow.isoformat(timespec="seconds") @classmethod - def resolve_now(cls, input): - return cls.now.strftime("%Y%m%d%H%M%S") + def resolve_end_of_life(cls, input): + if input is None or input == "": + return cls.resolve_tomorrow() + return input @classmethod def fold_comma(cls, input): @@ -503,9 +515,9 @@ class ConfigBuilder: "repos" : self.fold_repos, "pkgs" : self.fold_packages, "svcs" : self.fold_services, - "revision" : self.resolve_now, + "revision" : self.resolve_revision, "end_of_life" : lambda x: \ - self.force_iso_date(self.resolve_tomorrow(x)), + self.force_iso_date(self.resolve_end_of_life(x)), } def build_all(self): diff --git a/scripts/test-setup_script.sh b/scripts/test-setup_script.sh new file mode 100755 index 0000000..18e3fdb --- /dev/null +++ b/scripts/test-setup_script.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + +set -ex + +# copy a directory into place +cp -a ./base "$TARGET/home/$EC2_USER/test" + +# process a file and put it into place +tac ./aarch64 | rev > "$TARGET/home/$EC2_USER/test/46hcraa" + +# set ownership of installed things +chroot "$TARGET" chown -R "$EC2_USER:$EC2_USER" "/home/$EC2_USER/test"