commit 1b599fbbd98b387d1959514e6344481225addbe7
parent 68bf0e0ab1be977c3d2e5c321d24290b6f1dc560
Author: Jan Pobrislo <ccx@te2000.cz>
Date: Wed, 26 Nov 2025 05:34:41 +0000
prototype sandbox bootstrap
Diffstat:
10 files changed, 293 insertions(+), 8 deletions(-)
diff --git a/templates/pkg/libcap:bootstrap b/templates/pkg/libcap:bootstrap
@@ -0,0 +1,62 @@
+{%- set pkg_version="2.69" -%}
+{%- set pkg_source="tar.xz" -%}
+{% extends "genlinks" %}
+{%- block template_deps %}{% endblock template_deps %}
+{% block package_deps -%}
+#@pragma:nosandbox
+#+{{pkg_install_name("musl-cross-make:bootstrap-1")}}
+#+{{pkg_install_name("gnu-make:bootstrap")}}
+#+{{pkg_install_name("busybox:bootstrap")}}
+{% endblock package_deps -%}
+{% block prepare -%}
+{{ super() -}}
+sed -i "1 s|^#!/bin/bash|#!$(which sh)|" progs/*.sh
+
+{% endblock %}
+{% block configure -%}
+export CC="$pthbs_build_environment/command/{{triplet}}-gcc"
+export CPATH="$pthbs_build_environment/include"
+export LIBRARY_PATH="$pthbs_build_environment/library"
+LDFLAGS=--static
+
+{% endblock %}
+{% block build_and_install -%}
+{# likely race, disabling parallel make:
+./_makenames > cap_names.h
+sh: line 0: ./_makenames: Text file busy
+-#}
+make -j1 \
+ DESTDIR="$pthbs_destdir" \
+ SHARED=no DYNAMIC=no LIBCSTATIC=yes \
+ prefix="$prefix" \
+ exec_prefix="$prefix" \
+ lib_prefix="$prefix" \
+ inc_prefix="$prefix" \
+ man_prefix="$prefix/share" \
+ MANDIR="$prefix/man" \
+ sbin=command \
+ SBINDIR="$prefix/command" \
+ INCDIR="$prefix/include" \
+ lib=library \
+ LIBDIR="$prefix/library" \
+ PKGCONFIGDIR="$prefix/library/pkgconfig" \
+ CAPSH_SHELL="'-DSHELL=\"$(which sh)\"'" \
+ LDFLAGS="$LDFLAGS" \
+ all install
+
+{% endblock %}
+{% block check -%}
+test -x command/capsh
+test -x command/getcap
+test -x command/setcap
+test -x command/getpcaps
+
+{% endblock %}
+{% block genlinks_begin %}
+ x["./command/capsh"]=1
+ x["./command/getcap"]=1
+ x["./command/setcap"]=1
+ x["./command/getpcaps"]=1
+ x["./library/libcap.a"]=1
+{% endblock %}
+
diff --git a/templates/pkg/lnstools:bootstrap b/templates/pkg/lnstools:bootstrap
@@ -8,6 +8,7 @@
#+{{pkg_install_name("busybox:bootstrap")}}
#+{{pkg_install_name("skalibs:bootstrap")}}
#+{{pkg_install_name("execline:bootstrap")}}
+#+{{pkg_install_name("libcap:bootstrap")}}
{% endblock package_deps -%}
{% block configure -%}
export CC="$pthbs_build_environment/command/{{triplet}}-gcc"
diff --git a/variants/ccx-x86_64/libcap:bootstrap b/variants/ccx-x86_64/libcap:bootstrap
@@ -0,0 +1,110 @@
+#!/usr/bin/env pthbs-build
+#@pragma:nosandbox
+#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731
+#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074
+#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654
+#@untar:-J:sha256:f311f8f3dad84699d0566d1d6f7ec943a9298b28f714cae3c931dfd57492d7eb:.
+
+
+# - build script start -
+
+prefix=/home/ccx/versions/$pthbs_package
+dest=${pthbs_destdir%/}${prefix}
+cd 'libcap-2.69'
+sed -i "1 s|^#!/bin/bash|#!$(which sh)|" progs/*.sh
+
+
+export CC="$pthbs_build_environment/command/x86_64-linux-musl-gcc"
+export CPATH="$pthbs_build_environment/include"
+export LIBRARY_PATH="$pthbs_build_environment/library"
+LDFLAGS=--static
+
+
+make -j1 \
+ DESTDIR="$pthbs_destdir" \
+ SHARED=no DYNAMIC=no LIBCSTATIC=yes \
+ prefix="$prefix" \
+ exec_prefix="$prefix" \
+ lib_prefix="$prefix" \
+ inc_prefix="$prefix" \
+ man_prefix="$prefix/share" \
+ MANDIR="$prefix/man" \
+ sbin=command \
+ SBINDIR="$prefix/command" \
+ INCDIR="$prefix/include" \
+ lib=library \
+ LIBDIR="$prefix/library" \
+ PKGCONFIGDIR="$prefix/library/pkgconfig" \
+ CAPSH_SHELL="'-DSHELL=\"$(which sh)\"'" \
+ LDFLAGS="$LDFLAGS" \
+ all install
+
+
+test -x command/capsh
+test -x command/getcap
+test -x command/setcap
+test -x command/getpcaps
+
+
+
+cd "$pthbs_destdir/home/ccx/versions/$pthbs_package"
+find -type d -o -print | awk -F/ '
+BEGIN {
+ x["./command/capsh"]=1
+ x["./command/getcap"]=1
+ x["./command/setcap"]=1
+ x["./command/getpcaps"]=1
+ x["./library/libcap.a"]=1
+}
+
+function r1(s) {
+ sub("^[.]/[^/]*", ".", s)
+ return s
+}
+function s1(repl, s) {
+ sub("^[.]/[^/]*", "./"repl, s)
+ return s
+}
+function link(src) {
+ x[$0]=0
+ printf "%s\t%s\n", $0, src
+ printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr"
+}
+$1!="."{exit 1}
+
+
+$2 == "config" { link($0); next }
+$2 == "keys" { link($0); next }
+$2 == "zsh" { link($0); next }
+$2 == "env" { link($0); next }
+$2 == "command" { link($0); next }
+$2 == "bin" { link(s1("command", $0)); next }
+
+$2 == "library.so" { link($0); next }
+$2 == "library" { link($0); next }
+$2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next }
+$2 == "lib" && $NF ~ /\.so(\..*)?$/ { link(s1("library.so", $0)); next }
+
+$2 == "share" && $3 ~ /^(info|man|doc|icons|terminfo)$/ { link(r1($0)); next }
+
+$2 == "man" { link($0); next }
+$2 == "info" { link($0); next }
+$2 == "doc" { link($0); next }
+$2 == "icons" { link($0); next }
+$2 == "terminfo" { link($0); next }
+$2 == "data" { link($0); next }
+$2 == "include" { link($0); next }
+
+{ printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" }
+
+END {
+ for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" }
+ for(fname in x) {
+ if(x[fname]) {
+ printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr"
+ exit 3
+ }
+ }
+}' >.install-links.new
+mv .install-links.new .install-links
+
diff --git a/variants/ccx-x86_64/lnstools:bootstrap b/variants/ccx-x86_64/lnstools:bootstrap
@@ -5,6 +5,7 @@
#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654
#+skalibs.bbdbb2ba67e579c2d35158361a1aa7bf09386a7cd512c17bdd0fd03a699ddbb3
#+execline.d0beb2314484ba9847cafda7dfe3f44f4c43f0c375fcbfb3331ef05e5b8752e5
+#+libcap.8d6303d9567b5ce34b8e8377b215832a8254602932e6ea6d88bb0965d67765c7
#@git:7fbfb934cdaa187a063a4df41498c06c46d4a6a9:lnstools
diff --git a/variants/ccx-x86_64/pthbs-sandbox-rootns b/variants/ccx-x86_64/pthbs-sandbox-rootns
@@ -2,7 +2,7 @@
#@pragma:nosandbox
#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654
#+execline.d0beb2314484ba9847cafda7dfe3f44f4c43f0c375fcbfb3331ef05e5b8752e5
-#+lnstools.1ac76ce123ec40e19c22500c0cd7d0f5ead7a51a938e86bd2b572d33ce1eea59
+#+lnstools.cf3668749d778bdcba8b5272a4a07024e3dc3187fc82726e8d0f25ca28e5fda3
#+sandbox_rootfs.168f1712671189ed454639d31e217e5b652dc98f08de317589ede91bc223931f
#@sha256:b85634a91129f85a5aad5cae51d4084dd7ce62544b5585f0899058576c16451f:abspaths.awk
#@sha256:df0c24312e4941b1035a6292504fbf569f0f8b81b083835d7df84586decef25c:sandbox-rootns.in
diff --git a/variants/ccx-x86_64/sandbox_rootns.environment b/variants/ccx-x86_64/sandbox_rootns.environment
@@ -1,4 +1,4 @@
#!/usr/bin/env pthbs-build
-#+lnstools.1ac76ce123ec40e19c22500c0cd7d0f5ead7a51a938e86bd2b572d33ce1eea59
+#+lnstools.cf3668749d778bdcba8b5272a4a07024e3dc3187fc82726e8d0f25ca28e5fda3
#+sandbox_rootfs.168f1712671189ed454639d31e217e5b652dc98f08de317589ede91bc223931f
-#+pthbs-sandbox-rootns.d4e7fdcdf0c9b313288ed67d8a88c2d47d1433fd898bb56f1a0aa5d4827691c6-
\ No newline at end of file
+#+pthbs-sandbox-rootns.3f8767df5702233a3f9f853734726816ca10d69c8edda3bf607492a96ef51148+
\ No newline at end of file
diff --git a/variants/root-x86_64/libcap:bootstrap b/variants/root-x86_64/libcap:bootstrap
@@ -0,0 +1,110 @@
+#!/usr/bin/env pthbs-build
+#@pragma:nosandbox
+#+musl-cross-make.473310ee8dd6c0b20a1b81598700e61a0e38dcfe0b8503bd5cdbb9bf4f9af4fc
+#+gnu-make.47af7543e52e6b72ac25e13223e2ce78703c58993166ba25c56cba245e48dbfa
+#+busybox.73a23c9ea571875b0e9e166a6974b6b314b540c8c247783d9cf96e10a59fcd73
+#@untar:-J:sha256:f311f8f3dad84699d0566d1d6f7ec943a9298b28f714cae3c931dfd57492d7eb:.
+
+
+# - build script start -
+
+prefix=/versions/$pthbs_package
+dest=${pthbs_destdir%/}${prefix}
+cd 'libcap-2.69'
+sed -i "1 s|^#!/bin/bash|#!$(which sh)|" progs/*.sh
+
+
+export CC="$pthbs_build_environment/command/x86_64-linux-musl-gcc"
+export CPATH="$pthbs_build_environment/include"
+export LIBRARY_PATH="$pthbs_build_environment/library"
+LDFLAGS=--static
+
+
+make -j1 \
+ DESTDIR="$pthbs_destdir" \
+ SHARED=no DYNAMIC=no LIBCSTATIC=yes \
+ prefix="$prefix" \
+ exec_prefix="$prefix" \
+ lib_prefix="$prefix" \
+ inc_prefix="$prefix" \
+ man_prefix="$prefix/share" \
+ MANDIR="$prefix/man" \
+ sbin=command \
+ SBINDIR="$prefix/command" \
+ INCDIR="$prefix/include" \
+ lib=library \
+ LIBDIR="$prefix/library" \
+ PKGCONFIGDIR="$prefix/library/pkgconfig" \
+ CAPSH_SHELL="'-DSHELL=\"$(which sh)\"'" \
+ LDFLAGS="$LDFLAGS" \
+ all install
+
+
+test -x command/capsh
+test -x command/getcap
+test -x command/setcap
+test -x command/getpcaps
+
+
+
+cd "$pthbs_destdir/versions/$pthbs_package"
+find -type d -o -print | awk -F/ '
+BEGIN {
+ x["./command/capsh"]=1
+ x["./command/getcap"]=1
+ x["./command/setcap"]=1
+ x["./command/getpcaps"]=1
+ x["./library/libcap.a"]=1
+}
+
+function r1(s) {
+ sub("^[.]/[^/]*", ".", s)
+ return s
+}
+function s1(repl, s) {
+ sub("^[.]/[^/]*", "./"repl, s)
+ return s
+}
+function link(src) {
+ x[$0]=0
+ printf "%s\t%s\n", $0, src
+ printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr"
+}
+$1!="."{exit 1}
+
+
+$2 == "config" { link($0); next }
+$2 == "keys" { link($0); next }
+$2 == "zsh" { link($0); next }
+$2 == "env" { link($0); next }
+$2 == "command" { link($0); next }
+$2 == "bin" { link(s1("command", $0)); next }
+
+$2 == "library.so" { link($0); next }
+$2 == "library" { link($0); next }
+$2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next }
+$2 == "lib" && $NF ~ /\.so(\..*)?$/ { link(s1("library.so", $0)); next }
+
+$2 == "share" && $3 ~ /^(info|man|doc|icons|terminfo)$/ { link(r1($0)); next }
+
+$2 == "man" { link($0); next }
+$2 == "info" { link($0); next }
+$2 == "doc" { link($0); next }
+$2 == "icons" { link($0); next }
+$2 == "terminfo" { link($0); next }
+$2 == "data" { link($0); next }
+$2 == "include" { link($0); next }
+
+{ printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" }
+
+END {
+ for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" }
+ for(fname in x) {
+ if(x[fname]) {
+ printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr"
+ exit 3
+ }
+ }
+}' >.install-links.new
+mv .install-links.new .install-links
+
diff --git a/variants/root-x86_64/lnstools:bootstrap b/variants/root-x86_64/lnstools:bootstrap
@@ -5,6 +5,7 @@
#+busybox.73a23c9ea571875b0e9e166a6974b6b314b540c8c247783d9cf96e10a59fcd73
#+skalibs.4d9bb8936cbc1be9e4b0025b7d2f676d51646b050917d8789e8cab642ed1e31a
#+execline.af0c8cfaacb871066cf86080e71ee5f804e2e9d8fa2369bac3f889100824c741
+#+libcap.96cdbdfe25fbdf7dc89f52359025ade1db5a1e49e09a85cc62d3d189caf2fe18
#@git:7fbfb934cdaa187a063a4df41498c06c46d4a6a9:lnstools
diff --git a/variants/root-x86_64/pthbs-sandbox-rootns b/variants/root-x86_64/pthbs-sandbox-rootns
@@ -2,7 +2,7 @@
#@pragma:nosandbox
#+busybox.73a23c9ea571875b0e9e166a6974b6b314b540c8c247783d9cf96e10a59fcd73
#+execline.af0c8cfaacb871066cf86080e71ee5f804e2e9d8fa2369bac3f889100824c741
-#+lnstools.1df54404532327089c08504f1d5a31d2a6013d1f110750e4a0a1a7911f56b815
+#+lnstools.fdda0d8de90d5f00a1989260790513d2dc6b00a1e9c0db644e6961d942bba192
#+sandbox_rootfs.4df3e4c199ff9c6155d879ee3b03732db266035354c1fa17f7bd63b94dfa4f32
#@sha256:b85634a91129f85a5aad5cae51d4084dd7ce62544b5585f0899058576c16451f:abspaths.awk
#@sha256:df0c24312e4941b1035a6292504fbf569f0f8b81b083835d7df84586decef25c:sandbox-rootns.in
diff --git a/variants/root-x86_64/sandbox_rootns.environment b/variants/root-x86_64/sandbox_rootns.environment
@@ -1,4 +1,4 @@
#!/usr/bin/env pthbs-build
-#+lnstools.1df54404532327089c08504f1d5a31d2a6013d1f110750e4a0a1a7911f56b815
+#+lnstools.fdda0d8de90d5f00a1989260790513d2dc6b00a1e9c0db644e6961d942bba192
#+sandbox_rootfs.4df3e4c199ff9c6155d879ee3b03732db266035354c1fa17f7bd63b94dfa4f32
-#+pthbs-sandbox-rootns.4c5f05891a6ebdc93c02db1c51fa8c726f57b6451052db0d99ee3e6280daaa9f-
\ No newline at end of file
+#+pthbs-sandbox-rootns.c98192119fc069d7cb09fe7dc29642dd290e04181731de21717ab5418d4ef125+
\ No newline at end of file