mrrl

Minimal Reliable Reproducible Linux
git clone https://ccx.te2000.cz/git/mrrl
Log | Files | Refs | Submodules | README

containers (4638B)


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