containers (5004B)
1 #!/usr/bin/env pthbs-build 2 #+busybox.d2d7aa00eac6ec561a10d126b1866f22e226a1276307466251e80fd8a4a1ebc7 3 #+busybox-findutils.85b2328981df683d1ae7597eebdf3a332aa4241b936c0030fe3618cec1f4841a 4 #+busybox-awk.4c3f8cc249ba35f1206fcaf2979bcfd66d09b117eeea4e6a939024825a542496 5 #+zsh.bed9ea9a52d1f132b02ecfc77bfb4144826360a73e4b68c2b16e943a5e22c77e 6 #+pthbs-banginstall.e872d36838ba51ec521b2a4c4ea3448b0c777c0be86212fc63f4a390612a0853 7 #+execline.6b4951a98fd1ceab65adb101d074d9e5e3e910334cc738bc8030e3695a781e95 8 #+alpine-keys.1b9ed7df40694f28f448b89b297c7d273757ddc0bbadf25dd6fc66e02ebaa1be 9 #+apk-tools.6085fef406347f3ceefe641f92549044f5154cd32134f857850ef3f0ad0b74c6 10 #+xbps.e006a9f0b6459866bf5216e4788edbf3988a8cfd4ae6bcb136d9373bea40a5c9 11 #+container-bin-image.fe0f33c461dbb77e58d662da2a0a4c116ceaf6b05bf64ab91c783c301d4c0032 12 #@git:b2ba08f728a01a5bac734c823016be77035ab687:containers 13 14 15 # - build script start - 16 17 prefix=/home/ccx/versions/$pthbs_package 18 dest=${pthbs_destdir%/}${prefix} 19 cd 'containers' 20 21 22 23 mkdir -p "$dest" 24 25 for d in bin sbin command; do 26 if test -d "$d"; then 27 pthbs-banginstall "$d"/* "${dest}" 28 fi 29 done 30 31 if test -d vim; then 32 mkdir -p "${dest}/vimfiles/pack/plugins/start" 33 mv -v vim "${dest}/vimfiles/pack/plugins/start/$pthbs_package" 34 fi 35 36 if test -d zsh-functions; then 37 mkdir -p "${dest}/zsh" 38 mv -v zsh-functions "${dest}/zsh/site-functions" 39 fi 40 41 mkdir "${dest}/data" 42 mv -v service_scripts container_template "${dest}/data/" 43 printf '%s\n' >"${dest}/zsh/site-functions/confz_containers_pthbs_init" \ 44 "typeset -g container_template_dir='$prefix/data/container_template'" \ 45 "typeset -g container_service_script_dir='$prefix/data/service_scripts'" \ 46 "typeset -g container_ns_bin_dir='$prefix/deps/container-bin-image'" \ 47 'container_ns_bin_dir=${container_ns_bin_dir:P}' \ 48 "typeset -g container_alpine_keys_dir='$prefix/deps/keys/alpine/x86_64'" \ 49 "typeset -g container_apk_executable='$prefix/deps/command/apk.static'" \ 50 "typeset -g container_void_keys_dir='$prefix/deps/keys/void'" \ 51 "typeset -g container_xbps_install_executable='$prefix/deps/command/xbps-install.static'" 52 53 mkdir -p "${dest}/deps/command" 54 ln -sf '/home/ccx/versions/apk-tools.6085fef406347f3ceefe641f92549044f5154cd32134f857850ef3f0ad0b74c6/command/apk.static' "${dest}/deps/command/" 55 ln -sf '/home/ccx/versions/xbps.e006a9f0b6459866bf5216e4788edbf3988a8cfd4ae6bcb136d9373bea40a5c9/command/xbps-install.static' "${dest}/deps/command/" 56 57 for f in '/home/ccx/versions/alpine-keys.1b9ed7df40694f28f448b89b297c7d273757ddc0bbadf25dd6fc66e02ebaa1be'/keys/alpine/*/*; do 58 test -f "$f" 59 d=$(basename "${f%/*}") 60 mkdir -p "${dest}/deps/keys/alpine/$d" 61 ln -sf "$f" "${dest}/deps/keys/alpine/$d/" 62 done 63 64 mkdir -p "${dest}/deps/keys/void" 65 for f in '/home/ccx/versions/xbps.e006a9f0b6459866bf5216e4788edbf3988a8cfd4ae6bcb136d9373bea40a5c9'/keys/void/*; do 66 ln -sf "$f" "${dest}/deps/keys/void/" 67 done 68 69 test -d '/home/ccx/versions/container-bin-image.fe0f33c461dbb77e58d662da2a0a4c116ceaf6b05bf64ab91c783c301d4c0032/container-bin-image' 70 test -f '/home/ccx/versions/container-bin-image.fe0f33c461dbb77e58d662da2a0a4c116ceaf6b05bf64ab91c783c301d4c0032/container-bin-image/if' 71 ln -sf '/home/ccx/versions/container-bin-image.fe0f33c461dbb77e58d662da2a0a4c116ceaf6b05bf64ab91c783c301d4c0032/container-bin-image' "${dest}/deps/" 72 73 74 75 76 77 cd "$pthbs_destdir/home/ccx/versions/$pthbs_package" 78 find -type d -o -print | awk -F/ ' 79 BEGIN { 80 x["./command/container_sysroot_run"]=1 81 x["./command/ns_run"]=1 82 x["./command/ns_umount_script.awk"]=1 83 x["./command/pidns_run.py"]=1 84 x["./zsh/site-functions/confz_containers_init"]=1 85 x["./zsh/site-functions/confz_site_containers_init"]=1 86 } 87 88 function r1(s) { 89 sub("^[.]/[^/]*", ".", s) 90 return s 91 } 92 function s1(repl, s) { 93 sub("^[.]/[^/]*", "./"repl, s) 94 return s 95 } 96 function link(src) { 97 x[$0]=0 98 printf "%s\t%s\n", $0, src 99 printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr" 100 } 101 $1!="."{exit 1} 102 103 104 $2 == "vimfiles" { link($0); next } 105 106 $2 == "config" { link($0); next } 107 $2 == "keys" { link($0); next } 108 $2 == "zsh" { link($0); next } 109 $2 == "env" { link($0); next } 110 $2 == "command" { link($0); next } 111 $2 == "bin" { link(s1("command", $0)); next } 112 113 $2 == "library.so" { link($0); next } 114 $2 == "library" { link($0); next } 115 $2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next } 116 $2 == "lib" && $NF ~ /\.so(\..*)?$/ { link(s1("library.so", $0)); next } 117 118 $2 == "share" && $3 ~ /^(info|man|doc|icons|terminfo)$/ { link(r1($0)); next } 119 120 $2 == "man" { link($0); next } 121 $2 == "info" { link($0); next } 122 $2 == "doc" { link($0); next } 123 $2 == "icons" { link($0); next } 124 $2 == "terminfo" { link($0); next } 125 $2 == "data" { link($0); next } 126 $2 == "include" { link($0); next } 127 128 { printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" } 129 130 END { 131 for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" } 132 for(fname in x) { 133 if(x[fname]) { 134 printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr" 135 exit 3 136 } 137 } 138 }' >.install-links.new 139 mv .install-links.new .install-links 140