commit f7bb1bc5fb7145ef2a8864809fb24f2ab67e4339
parent e9d356d5d04d90fc0873524b985c36be14696fa2
Author: ccx <ccx@te2000.cz>
Date: Thu, 14 Mar 2024 00:30:34 +0000
Add Gentoo-based container for xorg-server
Diffstat:
2 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init
@@ -1279,6 +1279,62 @@ confz_container_nix_packages_installed_check() {
}
#typeset -f -t confz_container_nix_packages_installed_check
+# --- Gentoo ---
+confz_container_gentoo_from_snapshot_check() {
+ checkvars containers_dir svscan_dir image_name system
+ defvar build 20240128T165521Z
+ defvar checksum_algo sha256
+ defvar mirror https://mirrors.gentoo.org/gentoo
+
+ case $vars[build] in
+ (20240128T165521Z) case $vars[system] in
+ (amd64-musl-hardened)
+ defvar checksum ab0bcfe9001dc0fc612e92fb2ccbbf1e2c03fd5630712515b28a1362268e15f1
+ ;;
+ esac
+ ;;
+ esac
+
+ defvar alpine_arch ${vars[system]%-*}
+ unify url $vars[mirror]/something/stage3-${vars[system]}-${vars[build]}.tar.xz*
+
+ (($+vars[checksum])) || die "No stored checksum for $url"
+
+ require container_gentoo_image :containers_dir :svscan_dir :image_name :url \
+ :checksum :checksum_algo :alpine_arch \?hostname \?locale
+}
+
+confz_container_gentoo_image_check() {
+ checkvars containers_dir image_name url checksum checksum_algo svscan_dir alpine_arch
+
+ defvar hostname $vars[image_name]
+ defvar locale C.UTF-8
+ # TODO:apply them to configuration files?
+
+ require container_service_sysroot \
+ :containers_dir :svscan_dir :image_name \
+ %root %uid %gid %sysroot_user %sysroot_svc
+
+ require container_download_and_verify :containers_dir \
+ :checksum :checksum_algo %filename :url
+}
+
+confz_container_gentoo_stage3_installed_check() {
+ [[ -f $vars[root]/.confz.containers.installed_from ]]
+}
+confz_container_gentoo_stage3_installed_do() {
+ local download_dir=$vars[containers_dir]/download-cache
+ s6-setuidgid $vars[sysroot_user] \
+ tar -xpC "$vars[root]" -f "$download_dir/$vars[filename]" \
+ || die "Unpacking ${(qqq)vars[filename]} failed"
+
+ s6-setuidgid $vars[sysroot_user] \
+ rm -f "$vars[root]"/dev/**/*~*/(null|zero|full|ptmx|random|urandom)(D%) \
+ || die "Failed to clean $vars[root]/dev"
+
+ printf '%s\n' $vars[filename] >$vars[root]/.confz.containers.installed_from || die
+}
+
# --- Debian ---
confz_container_debian_image_check() {
diff --git a/zsh-functions/confz_site_containers_init b/zsh-functions/confz_site_containers_init
@@ -206,6 +206,14 @@ confz_site_container_void_glibc_nonfree_check() {
:containers_dir :svscan_dir :image_name :packages
}
+confz_site_container_gentoo_check() {
+ checkvars containers_dir svscan_dir image_name
+ defvar system amd64-musl-hardened
+
+ require container_gentoo_from_snapshot \
+ :containers_dir :system :image_name
+}
+
confz_site_container_nix_check() {
checkvars containers_dir svscan_dir image_name packages
defvar system x86_64-linux
@@ -235,6 +243,10 @@ confz_site_container_debian_puppetserver_check() {
confz_site_container_images_check() {
checkvars containers_dir svscan_dir
+ require site_container_gentoo_check :containers_dir :svscan_dir \
+ image_name=gentoo-xorg
+
+
local -a alpine_core=(
s6
s6-{rc,linux-utils,portable-utils}