mrrl

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

commit 1b599fbbd98b387d1959514e6344481225addbe7
parent 68bf0e0ab1be977c3d2e5c321d24290b6f1dc560
Author: Jan Pobrislo <ccx@te2000.cz>
Date:   Wed, 26 Nov 2025 05:34:41 +0000

prototype sandbox bootstrap

Diffstat:
Atemplates/pkg/libcap:bootstrap | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtemplates/pkg/lnstools:bootstrap | 1+
Avariants/ccx-x86_64/libcap:bootstrap | 110+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mvariants/ccx-x86_64/lnstools:bootstrap | 1+
Mvariants/ccx-x86_64/pthbs-sandbox-rootns | 2+-
Mvariants/ccx-x86_64/sandbox_rootns.environment | 6+++---
Avariants/root-x86_64/libcap:bootstrap | 110+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mvariants/root-x86_64/lnstools:bootstrap | 1+
Mvariants/root-x86_64/pthbs-sandbox-rootns | 2+-
Mvariants/root-x86_64/sandbox_rootns.environment | 6+++---
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