commit c0063cc908efef690a39d7904c4c5ed00ee2afaa Author: Jan Pobrislo <ccx@te2000.cz> Date: Fri, 3 Apr 2020 12:39:56 +0200 first commit Diffstat:
A | zsh-functions/confz_containers_init | | | 84 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 84 insertions(+), 0 deletions(-)
diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init @@ -0,0 +1,84 @@ +# vim: ft=zsh noet ts=4 sts=4 sw=4 + +confz_container_installed_alpine_check() { + checkvars container_root arch + defvar keys_dir /etc/apk/keys + defvar packages "alpine-base s6 s6-rc execline s6-portable-utils s6-linux-utils abduco" + defvar repositories 'http://dl-3.alpinelinux.org/alpine/edge/main http://dl-3.alpinelinux.org/alpine/edge/testing http://dl-3.alpinelinux.org/alpine/edge/community' + + require fs_d flags=p filename=$vars[container_root] + require container_dev_nodes :container_root + require container_alpine_base :container_root :arch :repositories :keys_dir + require container_alpine_configured :container_root :arch :repositories :keys_dir + local pkg + for pkg in $=vars[packages]; do + require container_alpine_package package=$pkg \ + :container_root :arch :repositories :keys_dir + done +} + +confz_container_dev_nodes_check() { + checkvars container_root + local R=$vars[container_root] + require fs_d flags= filename=$R/dev + require fs_d flags= filename=$R/dev/pts + require fs_d flags= filename=$R/dev/shm + require fs_l flags= filename=$R/dev/stdin destination=/proc/self/fd/0 + require fs_l flags= filename=$R/dev/stdout destination=/proc/self/fd/1 + require fs_l flags= filename=$R/dev/stderr destination=/proc/self/fd/2 + require fs_l flags= filename=$R/dev/fd destination=/proc/self/fd + require fs_device flags= filename=$R/dev/full \ + device_type=c major=1 minor=7 + require fs_device flags= filename=$R/dev/null \ + device_type=c major=1 minor=3 + require fs_device flags= filename=$R/dev/ptmx \ + device_type=c major=5 minor=2 + require fs_device flags= filename=$R/dev/zero \ + device_type=c major=1 minor=5 +} + +confz_container_alpine_configured_check() { + checkvars container_root arch keys_dir repositories + local R=$vars[container_root] + # local -a repos + # repos=( $=vars[repositories] ) + + require fs_d flags=p filename=$R/etc/apk + require fs_c flags= filename=$R/etc/apk/repositories \ + content_call="printf '%s\n' "$vars[repositories] + require fs_c flags= filename=$R/etc/apk/arch \ + content_call="printf '%s\n' "$vars[arch] +} + +confz_container_alpine_base_check() { + checkvars container_root arch keys_dir repositories + do_command=( + apk + --update-cache + --initdb + --arch $vars[arch] + --root $vars[container_root] + --keys-dir $vars[keys_dir] + ) + local repo + for repo in "${(Q@)${(z)vars[repositories]}}"; do + do_command+=( --repository $repo ) + done + do_command+=( add alpine-keys alpine-base ) + grep -q '^alpine-keys$' $vars[container_root]/etc/apk/world && \ + grep -q '^alpine-base$' $vars[container_root]/etc/apk/world +} + +confz_container_alpine_package_check() { + checkvars container_root arch keys_dir repositories package + do_command=( + apk + # --update-cache + # --initdb + --arch $vars[arch] + --root $vars[container_root] + --keys-dir $vars[keys_dir] + add $vars[package] + ) + grep -q '^'$vars[package]'$' $vars[container_root]/etc/apk/world +}