mrrl-containers

MRRL version of container scripts
git clone https://ccx.te2000.cz/git/mrrl-containers
Log | Files | Refs

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:
Mzsh-functions/confz_containers_init | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mzsh-functions/confz_site_containers_init | 12++++++++++++
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}