mrrl

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

commit d114ee405ea97623d1a679921a11c7a9556b1ce0
parent 05161d5201081bb32352c87fc79187abb5fbebcf
Author: Jan Pobrislo <ccx@te2000.cz>
Date:   Wed,  3 Dec 2025 16:16:21 +0000

experiment with older build scripts

Diffstat:
Atemplates/pkg/busybox:oldbootstrap | 29+++++++++++++++++++++++++++++
Atemplates/pkg/gnu-make:oldbootstrap | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atemplates/pkg/musl-cross-make:old | 165+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atemplates/pkg/musl-cross-make:oldbootstrap-0 | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atemplates/pkg/musl-cross-make:oldbootstrap-1 | 123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atemplates/pkg/oldbootstrap.environment | 4++++
Avariants/ccx-x86_64/busybox:oldbootstrap | 30++++++++++++++++++++++++++++++
Avariants/ccx-x86_64/gnu-make:oldbootstrap | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/ccx-x86_64/musl-cross-make:old | 164+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/ccx-x86_64/musl-cross-make:oldbootstrap-0 | 113+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/ccx-x86_64/musl-cross-make:oldbootstrap-1 | 122+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/ccx-x86_64/oldbootstrap.environment | 5+++++
Avariants/root-x86_64/busybox:oldbootstrap | 30++++++++++++++++++++++++++++++
Avariants/root-x86_64/gnu-make:oldbootstrap | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/root-x86_64/musl-cross-make:old | 164+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/root-x86_64/musl-cross-make:oldbootstrap-0 | 113+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/root-x86_64/musl-cross-make:oldbootstrap-1 | 122+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Avariants/root-x86_64/oldbootstrap.environment | 5+++++
18 files changed, 1646 insertions(+), 0 deletions(-)

diff --git a/templates/pkg/busybox:oldbootstrap b/templates/pkg/busybox:oldbootstrap @@ -0,0 +1,29 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#@git:aa4d303a3139107919f73cece4eaf85a7dc75db6:busybox +#@sha256:9ee52091d7a41e7e492d508574573fbebe64155d85a07980128f21105eaad1e2:busybox/.config + +mcm={{versions}}/musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +make={{versions}}/gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 + +export PATH="$mcm/bin:$make/command:$PATH" +export CC="$mcm/bin/x86_64-linux-musl-gcc" +export CFLAGS="-D_GNU_SOURCE" +export LDFLAGS="-static" + +cd busybox +$make/command/make V=1 CROSS_COMPILE=x86_64-linux-musl- LDFLAGS=-static HOSTLDFLAGS=-static \ + HOSTCC="$CC -static" CC="$CC -static" HOSTCFLAGS=-D_GNU_SOURCE -j${JOBS:-1} + +mkdir -p "$pthbs_destdir{{versions}}/$pthbs_package/command" +cp -a busybox "$pthbs_destdir{{versions}}/$pthbs_package/command/" +cd "$pthbs_destdir{{versions}}/$pthbs_package" +echo false | ./command/busybox --list >/dev/null # test if it works +./command/busybox --list | awk ' +$0 == "bbconfig" { next } +{ print "./command/busybox\t./command/" $0 } +' >.install-links.new +mv .install-links.new .install-links diff --git a/templates/pkg/gnu-make:oldbootstrap b/templates/pkg/gnu-make:oldbootstrap @@ -0,0 +1,115 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#@untar:-z:sha256:dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3:. + + +# - build script start - + +autotools_config() { + prefix={{versions}}/$pthbs_package + ./configure -C \ + --prefix="$prefix" \ + --build="$(${CC:-gcc} -dumpmachine)" \ + --bindir="$prefix/command" \ + --sbindir="$prefix/command" \ + --infodir="$prefix/info" \ + --localedir="$prefix/locale" \ + --mandir="$prefix/man" \ + --libdir="$prefix/library" \ + --docdir="$prefix/doc/gnu-make" \ + --datadir="$prefix/data" \ + --datarootdir="$prefix/data" \ + --localstatedir='/var/pthbs' \ + "$@" + +} + +autotools_config_static() { + build_env_static + autotools_config "$@" --enable-static --disable-shared +} + +prefix={{versions}}/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd 'make-4.4.1' + + +mcm={{versions}}/musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 + +export PATH="$mcm/bin:$PATH" +export CC="$mcm/bin/x86_64-linux-musl-gcc" +export CXX="$mcm/bin/x86_64-linux-musl-g++" +export CFLAGS="-D_GNU_SOURCE" +export LDFLAGS="-static" + +autotools_config --enable-static --disable-shared --disable-nls + + +make -j${JOBS:-1} -l$((1+${JOBS:-1})) + +make DESTDIR="$pthbs_destdir" install + + + + + +cd "$pthbs_destdir{{versions}}/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./command/make"]=1 + x["./man/man1/make.1"]=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/templates/pkg/musl-cross-make:old b/templates/pkg/musl-cross-make:old @@ -0,0 +1,165 @@ +#!/usr/bin/env pthbs-build +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654 +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b:musl-cross-make/sources/gcc-11.2.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:bdf76c15229b241e578046b8486106f09534d754ea4cbf105e0660e551fb1669:musl-cross-make/sources/linux-6.5.4.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@sha256:4213e75809588e3f32ae0fde8fb11df2dfd6e0e013762ff5ee951c3aadb7ffc0:musl-cross-make/patches/linux-6.5.4/0001-no-rsync-headers.diff +#@sha256:68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6:zpipe.c +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix={{versions}}/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}{{versions}}/$pthbs_package" \ + "TARGET=x86_64-linux-musl" \ + 'GCC_VER=11.2.0' \ + 'LINUX_VER=6.5.4' \ + 'st=-static --static' \ + 'fl=-g0 -O2' \ + 'COMMON_CONFIG += CFLAGS="${fl} ${st}" CXXFLAGS="${fl} ${st}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \ + 'COMMON_CONFIG += CC="x86_64-linux-musl-gcc ${st}" CXX="x86_64-linux-musl-g++ ${st}"' + +printf '%s %s\n' >musl-cross-make/hashes/linux-6.5.4.tar.xz.sha1 \ + 24ffca128d47b6c8e5c15efaa2b1c9ebe546c13c linux-6.5.4.tar.xz + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-11.2.0 +sed -i -e 's|/lib/ld-musl-|{{versions}}/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-11.2.0/gcc/config/*/linux*.h +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make || exit $? +make -C musl-cross-make install || exit $? + +dd=$pthbs_destdir/{{versions}}/$pthbs_package + +# Override linker symlink +for linkname in "$dd"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"$dd"'/bin/x86_64-linux-musl-gcc' --version +"$dd"'/bin/x86_64-linux-musl-gcc' -o true true.c +"$dd"'/bin/x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + +pkgs="gmp intl mpc mpfr zlib" +#pkgs="$pkgs libbacktrace libcc1 libcpp libdecnumber libiberty lto-plugin" + +for pkg in $pkgs; do + make -C musl-cross-make/build/local/x86_64-linux-musl/obj_gcc/$pkg prefix=/ DESTDIR="$dd" install +done +cp -va musl-cross-make/gcc-*.orig/zlib/zconf.h musl-cross-make/gcc-*.orig/zlib/zlib.h "$dd/include/" +mkdir -p "$dd/library/pkgconfig" +printf '%s\n' > "$dd/library/pkgconfig/zlib.pc" \ + "prefix={{versions}}/$pthbs_package" \ + 'exec_prefix=${prefix}' \ + 'includedir=${prefix}/include' \ + 'libdir=${exec_prefix}/library' \ + '' \ + 'Name: zlib' \ + 'Description: zlib compression library' \ + 'Version: 1.2.11' \ + '' \ + 'Requires:' \ + 'Libs: -L${libdir} -lz' \ + 'Cflags: -I${includedir}' + + +# validate zlib +"$dd"'/bin/x86_64-linux-musl-gcc' -I"$dd/include" -L"$dd/lib" -static -o zpipe zpipe.c -lz +./zpipe <true.c >true.c.gz +./zpipe -d <true.c.gz >true.c.2 +cmp -s true.c true.c.2 + + + +cd "$pthbs_destdir{{versions}}/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=1 + x["./lib/libgmp.a"]=1 + x["./lib/libmpc.a"]=1 + x["./lib/libmpfr.a"]=1 + x["./lib/libz.a"]=1 + + x["./include/gmp.h"]=1 + x["./include/mpc.h"]=1 + x["./include/mpf2mpfr.h"]=1 + x["./include/mpfr.h"]=1 + x["./include/zlib.h"]=1 + x["./include/zconf.h"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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 + +{# extra line for matching hash #} diff --git a/templates/pkg/musl-cross-make:oldbootstrap-0 b/templates/pkg/musl-cross-make:oldbootstrap-0 @@ -0,0 +1,114 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:c95da32f440378d7751dd95533186f7fc05ceb4fb65eb5b85234e6299eb9838e:musl-cross-make/sources/gcc-9.4.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:dc7abf734487553644258a3822cfd429d74656749e309f2b25f09f4282e05588:musl-cross-make/sources/linux-headers-4.19.88-2.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix={{versions}}/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}{{versions}}/$pthbs_package" \ + "TARGET=x86_64-linux-musl" \ + 'fl=-g0 -O2' \ + 'COMMON_CONFIG += CFLAGS="${fl}" CXXFLAGS="${fl}" FFLAGS="${fl}" LDFLAGS="-s"' + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-9.4.0 +sed -i -e 's|/lib/ld-musl-|{{versions}}/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-9.4.0/gcc/config/*/linux*.h + +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make +make -C musl-cross-make install + +# Override linker symlink +for linkname in "${pthbs_destdir%/}"'{{versions}}/'"$pthbs_package"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"${pthbs_destdir%/}"'{{versions}}'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' --version +"${pthbs_destdir%/}"'{{versions}}'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' -o true true.c +"${pthbs_destdir%/}"'{{versions}}'"/$pthbs_package/bin/"'x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + + + + +cd "$pthbs_destdir{{versions}}/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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 + +{# extra line for matching hash #} diff --git a/templates/pkg/musl-cross-make:oldbootstrap-1 b/templates/pkg/musl-cross-make:oldbootstrap-1 @@ -0,0 +1,123 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.d14cfd2214c9bc8f141df31e1bad9a34dd9ac123a2ba26bccfdf88597053da9b +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b:musl-cross-make/sources/gcc-11.2.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:dc7abf734487553644258a3822cfd429d74656749e309f2b25f09f4282e05588:musl-cross-make/sources/linux-headers-4.19.88-2.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix={{versions}}/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +bootstrap={{versions}}/musl-cross-make.d14cfd2214c9bc8f141df31e1bad9a34dd9ac123a2ba26bccfdf88597053da9b +"$bootstrap/bin/x86_64-linux-musl-gcc" --version + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}{{versions}}/$pthbs_package" \ + 'GCC_VER=11.2.0' \ + "TARGET=x86_64-linux-musl" \ + 'st=-static --static' \ + 'fl=-g0 -O2' \ + "bbin=$bootstrap/bin" \ + 'COMMON_CONFIG += CFLAGS="${fl}" CXXFLAGS="${fl}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \ + 'COMMON_CONFIG += CC="${bbin}/x86_64-linux-musl-gcc ${st}" CXX="${bbin}/x86_64-linux-musl-g++ ${st}"' + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-11.2.0 +sed -i -e 's|/lib/ld-musl-|{{versions}}/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-11.2.0/gcc/config/*/linux*.h + +export PATH="$bootstrap/bin:$PATH" +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make +make -C musl-cross-make install + +# Override linker symlink +for linkname in "${pthbs_destdir%/}"'{{versions}}/'"$pthbs_package"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"${pthbs_destdir%/}"'{{versions}}'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' --version +"${pthbs_destdir%/}"'{{versions}}'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' -o true true.c +"${pthbs_destdir%/}"'{{versions}}'"/$pthbs_package/bin/"'x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + + + + +cd "$pthbs_destdir{{versions}}/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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 + +{# extra line for matching hash #} diff --git a/templates/pkg/oldbootstrap.environment b/templates/pkg/oldbootstrap.environment @@ -0,0 +1,4 @@ +#!/usr/bin/env pthbs-build +#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 diff --git a/variants/ccx-x86_64/busybox:oldbootstrap b/variants/ccx-x86_64/busybox:oldbootstrap @@ -0,0 +1,29 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#@git:aa4d303a3139107919f73cece4eaf85a7dc75db6:busybox +#@sha256:9ee52091d7a41e7e492d508574573fbebe64155d85a07980128f21105eaad1e2:busybox/.config + +mcm=/home/ccx/versions/musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +make=/home/ccx/versions/gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 + +export PATH="$mcm/bin:$make/command:$PATH" +export CC="$mcm/bin/x86_64-linux-musl-gcc" +export CFLAGS="-D_GNU_SOURCE" +export LDFLAGS="-static" + +cd busybox +$make/command/make V=1 CROSS_COMPILE=x86_64-linux-musl- LDFLAGS=-static HOSTLDFLAGS=-static \ + HOSTCC="$CC -static" CC="$CC -static" HOSTCFLAGS=-D_GNU_SOURCE -j${JOBS:-1} + +mkdir -p "$pthbs_destdir/home/ccx/versions/$pthbs_package/command" +cp -a busybox "$pthbs_destdir/home/ccx/versions/$pthbs_package/command/" +cd "$pthbs_destdir/home/ccx/versions/$pthbs_package" +echo false | ./command/busybox --list >/dev/null # test if it works +./command/busybox --list | awk ' +$0 == "bbconfig" { next } +{ print "./command/busybox\t./command/" $0 } +' >.install-links.new +mv .install-links.new .install-links+ \ No newline at end of file diff --git a/variants/ccx-x86_64/gnu-make:oldbootstrap b/variants/ccx-x86_64/gnu-make:oldbootstrap @@ -0,0 +1,114 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#@untar:-z:sha256:dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3:. + + +# - build script start - + +autotools_config() { + prefix=/home/ccx/versions/$pthbs_package + ./configure -C \ + --prefix="$prefix" \ + --build="$(${CC:-gcc} -dumpmachine)" \ + --bindir="$prefix/command" \ + --sbindir="$prefix/command" \ + --infodir="$prefix/info" \ + --localedir="$prefix/locale" \ + --mandir="$prefix/man" \ + --libdir="$prefix/library" \ + --docdir="$prefix/doc/gnu-make" \ + --datadir="$prefix/data" \ + --datarootdir="$prefix/data" \ + --localstatedir='/var/pthbs' \ + "$@" + +} + +autotools_config_static() { + build_env_static + autotools_config "$@" --enable-static --disable-shared +} + +prefix=/home/ccx/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd 'make-4.4.1' + + +mcm=/home/ccx/versions/musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 + +export PATH="$mcm/bin:$PATH" +export CC="$mcm/bin/x86_64-linux-musl-gcc" +export CXX="$mcm/bin/x86_64-linux-musl-g++" +export CFLAGS="-D_GNU_SOURCE" +export LDFLAGS="-static" + +autotools_config --enable-static --disable-shared --disable-nls + + +make -j${JOBS:-1} -l$((1+${JOBS:-1})) + +make DESTDIR="$pthbs_destdir" install + + + + + +cd "$pthbs_destdir/home/ccx/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./command/make"]=1 + x["./man/man1/make.1"]=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/musl-cross-make:old b/variants/ccx-x86_64/musl-cross-make:old @@ -0,0 +1,164 @@ +#!/usr/bin/env pthbs-build +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654 +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b:musl-cross-make/sources/gcc-11.2.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:bdf76c15229b241e578046b8486106f09534d754ea4cbf105e0660e551fb1669:musl-cross-make/sources/linux-6.5.4.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@sha256:4213e75809588e3f32ae0fde8fb11df2dfd6e0e013762ff5ee951c3aadb7ffc0:musl-cross-make/patches/linux-6.5.4/0001-no-rsync-headers.diff +#@sha256:68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6:zpipe.c +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix=/home/ccx/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}/home/ccx/versions/$pthbs_package" \ + "TARGET=x86_64-linux-musl" \ + 'GCC_VER=11.2.0' \ + 'LINUX_VER=6.5.4' \ + 'st=-static --static' \ + 'fl=-g0 -O2' \ + 'COMMON_CONFIG += CFLAGS="${fl} ${st}" CXXFLAGS="${fl} ${st}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \ + 'COMMON_CONFIG += CC="x86_64-linux-musl-gcc ${st}" CXX="x86_64-linux-musl-g++ ${st}"' + +printf '%s %s\n' >musl-cross-make/hashes/linux-6.5.4.tar.xz.sha1 \ + 24ffca128d47b6c8e5c15efaa2b1c9ebe546c13c linux-6.5.4.tar.xz + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-11.2.0 +sed -i -e 's|/lib/ld-musl-|/home/ccx/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-11.2.0/gcc/config/*/linux*.h +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make || exit $? +make -C musl-cross-make install || exit $? + +dd=$pthbs_destdir//home/ccx/versions/$pthbs_package + +# Override linker symlink +for linkname in "$dd"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"$dd"'/bin/x86_64-linux-musl-gcc' --version +"$dd"'/bin/x86_64-linux-musl-gcc' -o true true.c +"$dd"'/bin/x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + +pkgs="gmp intl mpc mpfr zlib" +#pkgs="$pkgs libbacktrace libcc1 libcpp libdecnumber libiberty lto-plugin" + +for pkg in $pkgs; do + make -C musl-cross-make/build/local/x86_64-linux-musl/obj_gcc/$pkg prefix=/ DESTDIR="$dd" install +done +cp -va musl-cross-make/gcc-*.orig/zlib/zconf.h musl-cross-make/gcc-*.orig/zlib/zlib.h "$dd/include/" +mkdir -p "$dd/library/pkgconfig" +printf '%s\n' > "$dd/library/pkgconfig/zlib.pc" \ + "prefix=/home/ccx/versions/$pthbs_package" \ + 'exec_prefix=${prefix}' \ + 'includedir=${prefix}/include' \ + 'libdir=${exec_prefix}/library' \ + '' \ + 'Name: zlib' \ + 'Description: zlib compression library' \ + 'Version: 1.2.11' \ + '' \ + 'Requires:' \ + 'Libs: -L${libdir} -lz' \ + 'Cflags: -I${includedir}' + + +# validate zlib +"$dd"'/bin/x86_64-linux-musl-gcc' -I"$dd/include" -L"$dd/lib" -static -o zpipe zpipe.c -lz +./zpipe <true.c >true.c.gz +./zpipe -d <true.c.gz >true.c.2 +cmp -s true.c true.c.2 + + + +cd "$pthbs_destdir/home/ccx/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=1 + x["./lib/libgmp.a"]=1 + x["./lib/libmpc.a"]=1 + x["./lib/libmpfr.a"]=1 + x["./lib/libz.a"]=1 + + x["./include/gmp.h"]=1 + x["./include/mpc.h"]=1 + x["./include/mpf2mpfr.h"]=1 + x["./include/mpfr.h"]=1 + x["./include/zlib.h"]=1 + x["./include/zconf.h"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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/musl-cross-make:oldbootstrap-0 b/variants/ccx-x86_64/musl-cross-make:oldbootstrap-0 @@ -0,0 +1,113 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:c95da32f440378d7751dd95533186f7fc05ceb4fb65eb5b85234e6299eb9838e:musl-cross-make/sources/gcc-9.4.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:dc7abf734487553644258a3822cfd429d74656749e309f2b25f09f4282e05588:musl-cross-make/sources/linux-headers-4.19.88-2.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix=/home/ccx/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}/home/ccx/versions/$pthbs_package" \ + "TARGET=x86_64-linux-musl" \ + 'fl=-g0 -O2' \ + 'COMMON_CONFIG += CFLAGS="${fl}" CXXFLAGS="${fl}" FFLAGS="${fl}" LDFLAGS="-s"' + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-9.4.0 +sed -i -e 's|/lib/ld-musl-|/home/ccx/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-9.4.0/gcc/config/*/linux*.h + +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make +make -C musl-cross-make install + +# Override linker symlink +for linkname in "${pthbs_destdir%/}"'/home/ccx/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"${pthbs_destdir%/}"'/home/ccx/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' --version +"${pthbs_destdir%/}"'/home/ccx/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' -o true true.c +"${pthbs_destdir%/}"'/home/ccx/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + + + + +cd "$pthbs_destdir/home/ccx/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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/musl-cross-make:oldbootstrap-1 b/variants/ccx-x86_64/musl-cross-make:oldbootstrap-1 @@ -0,0 +1,122 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.d14cfd2214c9bc8f141df31e1bad9a34dd9ac123a2ba26bccfdf88597053da9b +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b:musl-cross-make/sources/gcc-11.2.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:dc7abf734487553644258a3822cfd429d74656749e309f2b25f09f4282e05588:musl-cross-make/sources/linux-headers-4.19.88-2.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix=/home/ccx/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +bootstrap=/home/ccx/versions/musl-cross-make.d14cfd2214c9bc8f141df31e1bad9a34dd9ac123a2ba26bccfdf88597053da9b +"$bootstrap/bin/x86_64-linux-musl-gcc" --version + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}/home/ccx/versions/$pthbs_package" \ + 'GCC_VER=11.2.0' \ + "TARGET=x86_64-linux-musl" \ + 'st=-static --static' \ + 'fl=-g0 -O2' \ + "bbin=$bootstrap/bin" \ + 'COMMON_CONFIG += CFLAGS="${fl}" CXXFLAGS="${fl}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \ + 'COMMON_CONFIG += CC="${bbin}/x86_64-linux-musl-gcc ${st}" CXX="${bbin}/x86_64-linux-musl-g++ ${st}"' + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-11.2.0 +sed -i -e 's|/lib/ld-musl-|/home/ccx/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-11.2.0/gcc/config/*/linux*.h + +export PATH="$bootstrap/bin:$PATH" +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make +make -C musl-cross-make install + +# Override linker symlink +for linkname in "${pthbs_destdir%/}"'/home/ccx/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"${pthbs_destdir%/}"'/home/ccx/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' --version +"${pthbs_destdir%/}"'/home/ccx/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' -o true true.c +"${pthbs_destdir%/}"'/home/ccx/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + + + + +cd "$pthbs_destdir/home/ccx/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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/oldbootstrap.environment b/variants/ccx-x86_64/oldbootstrap.environment @@ -0,0 +1,4 @@ +#!/usr/bin/env pthbs-build +#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731+ \ No newline at end of file diff --git a/variants/root-x86_64/busybox:oldbootstrap b/variants/root-x86_64/busybox:oldbootstrap @@ -0,0 +1,29 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#@git:aa4d303a3139107919f73cece4eaf85a7dc75db6:busybox +#@sha256:9ee52091d7a41e7e492d508574573fbebe64155d85a07980128f21105eaad1e2:busybox/.config + +mcm=/versions/musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +make=/versions/gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 + +export PATH="$mcm/bin:$make/command:$PATH" +export CC="$mcm/bin/x86_64-linux-musl-gcc" +export CFLAGS="-D_GNU_SOURCE" +export LDFLAGS="-static" + +cd busybox +$make/command/make V=1 CROSS_COMPILE=x86_64-linux-musl- LDFLAGS=-static HOSTLDFLAGS=-static \ + HOSTCC="$CC -static" CC="$CC -static" HOSTCFLAGS=-D_GNU_SOURCE -j${JOBS:-1} + +mkdir -p "$pthbs_destdir/versions/$pthbs_package/command" +cp -a busybox "$pthbs_destdir/versions/$pthbs_package/command/" +cd "$pthbs_destdir/versions/$pthbs_package" +echo false | ./command/busybox --list >/dev/null # test if it works +./command/busybox --list | awk ' +$0 == "bbconfig" { next } +{ print "./command/busybox\t./command/" $0 } +' >.install-links.new +mv .install-links.new .install-links+ \ No newline at end of file diff --git a/variants/root-x86_64/gnu-make:oldbootstrap b/variants/root-x86_64/gnu-make:oldbootstrap @@ -0,0 +1,114 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#@untar:-z:sha256:dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3:. + + +# - build script start - + +autotools_config() { + prefix=/versions/$pthbs_package + ./configure -C \ + --prefix="$prefix" \ + --build="$(${CC:-gcc} -dumpmachine)" \ + --bindir="$prefix/command" \ + --sbindir="$prefix/command" \ + --infodir="$prefix/info" \ + --localedir="$prefix/locale" \ + --mandir="$prefix/man" \ + --libdir="$prefix/library" \ + --docdir="$prefix/doc/gnu-make" \ + --datadir="$prefix/data" \ + --datarootdir="$prefix/data" \ + --localstatedir='/var/pthbs' \ + "$@" + +} + +autotools_config_static() { + build_env_static + autotools_config "$@" --enable-static --disable-shared +} + +prefix=/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd 'make-4.4.1' + + +mcm=/versions/musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 + +export PATH="$mcm/bin:$PATH" +export CC="$mcm/bin/x86_64-linux-musl-gcc" +export CXX="$mcm/bin/x86_64-linux-musl-g++" +export CFLAGS="-D_GNU_SOURCE" +export LDFLAGS="-static" + +autotools_config --enable-static --disable-shared --disable-nls + + +make -j${JOBS:-1} -l$((1+${JOBS:-1})) + +make DESTDIR="$pthbs_destdir" install + + + + + +cd "$pthbs_destdir/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./command/make"]=1 + x["./man/man1/make.1"]=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/musl-cross-make:old b/variants/root-x86_64/musl-cross-make:old @@ -0,0 +1,164 @@ +#!/usr/bin/env pthbs-build +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654 +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b:musl-cross-make/sources/gcc-11.2.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:bdf76c15229b241e578046b8486106f09534d754ea4cbf105e0660e551fb1669:musl-cross-make/sources/linux-6.5.4.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@sha256:4213e75809588e3f32ae0fde8fb11df2dfd6e0e013762ff5ee951c3aadb7ffc0:musl-cross-make/patches/linux-6.5.4/0001-no-rsync-headers.diff +#@sha256:68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6:zpipe.c +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix=/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}/versions/$pthbs_package" \ + "TARGET=x86_64-linux-musl" \ + 'GCC_VER=11.2.0' \ + 'LINUX_VER=6.5.4' \ + 'st=-static --static' \ + 'fl=-g0 -O2' \ + 'COMMON_CONFIG += CFLAGS="${fl} ${st}" CXXFLAGS="${fl} ${st}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \ + 'COMMON_CONFIG += CC="x86_64-linux-musl-gcc ${st}" CXX="x86_64-linux-musl-g++ ${st}"' + +printf '%s %s\n' >musl-cross-make/hashes/linux-6.5.4.tar.xz.sha1 \ + 24ffca128d47b6c8e5c15efaa2b1c9ebe546c13c linux-6.5.4.tar.xz + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-11.2.0 +sed -i -e 's|/lib/ld-musl-|/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-11.2.0/gcc/config/*/linux*.h +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make || exit $? +make -C musl-cross-make install || exit $? + +dd=$pthbs_destdir//versions/$pthbs_package + +# Override linker symlink +for linkname in "$dd"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"$dd"'/bin/x86_64-linux-musl-gcc' --version +"$dd"'/bin/x86_64-linux-musl-gcc' -o true true.c +"$dd"'/bin/x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + +pkgs="gmp intl mpc mpfr zlib" +#pkgs="$pkgs libbacktrace libcc1 libcpp libdecnumber libiberty lto-plugin" + +for pkg in $pkgs; do + make -C musl-cross-make/build/local/x86_64-linux-musl/obj_gcc/$pkg prefix=/ DESTDIR="$dd" install +done +cp -va musl-cross-make/gcc-*.orig/zlib/zconf.h musl-cross-make/gcc-*.orig/zlib/zlib.h "$dd/include/" +mkdir -p "$dd/library/pkgconfig" +printf '%s\n' > "$dd/library/pkgconfig/zlib.pc" \ + "prefix=/versions/$pthbs_package" \ + 'exec_prefix=${prefix}' \ + 'includedir=${prefix}/include' \ + 'libdir=${exec_prefix}/library' \ + '' \ + 'Name: zlib' \ + 'Description: zlib compression library' \ + 'Version: 1.2.11' \ + '' \ + 'Requires:' \ + 'Libs: -L${libdir} -lz' \ + 'Cflags: -I${includedir}' + + +# validate zlib +"$dd"'/bin/x86_64-linux-musl-gcc' -I"$dd/include" -L"$dd/lib" -static -o zpipe zpipe.c -lz +./zpipe <true.c >true.c.gz +./zpipe -d <true.c.gz >true.c.2 +cmp -s true.c true.c.2 + + + +cd "$pthbs_destdir/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=1 + x["./lib/libgmp.a"]=1 + x["./lib/libmpc.a"]=1 + x["./lib/libmpfr.a"]=1 + x["./lib/libz.a"]=1 + + x["./include/gmp.h"]=1 + x["./include/mpc.h"]=1 + x["./include/mpf2mpfr.h"]=1 + x["./include/mpfr.h"]=1 + x["./include/zlib.h"]=1 + x["./include/zconf.h"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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/musl-cross-make:oldbootstrap-0 b/variants/root-x86_64/musl-cross-make:oldbootstrap-0 @@ -0,0 +1,113 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:c95da32f440378d7751dd95533186f7fc05ceb4fb65eb5b85234e6299eb9838e:musl-cross-make/sources/gcc-9.4.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:dc7abf734487553644258a3822cfd429d74656749e309f2b25f09f4282e05588:musl-cross-make/sources/linux-headers-4.19.88-2.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix=/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}/versions/$pthbs_package" \ + "TARGET=x86_64-linux-musl" \ + 'fl=-g0 -O2' \ + 'COMMON_CONFIG += CFLAGS="${fl}" CXXFLAGS="${fl}" FFLAGS="${fl}" LDFLAGS="-s"' + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-9.4.0 +sed -i -e 's|/lib/ld-musl-|/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-9.4.0/gcc/config/*/linux*.h + +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make +make -C musl-cross-make install + +# Override linker symlink +for linkname in "${pthbs_destdir%/}"'/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"${pthbs_destdir%/}"'/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' --version +"${pthbs_destdir%/}"'/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' -o true true.c +"${pthbs_destdir%/}"'/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + + + + +cd "$pthbs_destdir/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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/musl-cross-make:oldbootstrap-1 b/variants/root-x86_64/musl-cross-make:oldbootstrap-1 @@ -0,0 +1,122 @@ +#!/usr/bin/env pthbs-build +#@pragma:nosandbox +#@pragma:nopath +#+musl-cross-make.d14cfd2214c9bc8f141df31e1bad9a34dd9ac123a2ba26bccfdf88597053da9b +#@sha256:ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf:musl-cross-make/sources/binutils-2.33.1.tar.xz +#@sha256:75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3:musl-cross-make/sources/config.sub +#@sha256:d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b:musl-cross-make/sources/gcc-11.2.0.tar.xz +#@sha256:5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2:musl-cross-make/sources/gmp-6.1.2.tar.bz2 +#@sha256:dc7abf734487553644258a3822cfd429d74656749e309f2b25f09f4282e05588:musl-cross-make/sources/linux-headers-4.19.88-2.tar.xz +#@sha256:6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e:musl-cross-make/sources/mpc-1.1.0.tar.gz +#@sha256:c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc:musl-cross-make/sources/mpfr-4.0.2.tar.bz2 +#@sha256:a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4:musl-cross-make/sources/musl-1.2.5.tar.gz +#@git:6f3701d08137496d5aac479e3a3977b5ae993c1f:musl-cross-make + + +# - build script start - + +prefix=/versions/$pthbs_package +dest=${pthbs_destdir%/}${prefix} +cd '.' + +bootstrap=/versions/musl-cross-make.d14cfd2214c9bc8f141df31e1bad9a34dd9ac123a2ba26bccfdf88597053da9b +"$bootstrap/bin/x86_64-linux-musl-gcc" --version + +# For validating the compiler +printf '%s\n' 'int main(void) { return 0; }' >true.c + +printf '%s\n' >musl-cross-make/config.mak \ + "OUTPUT=${pthbs_destdir%/}/versions/$pthbs_package" \ + 'GCC_VER=11.2.0' \ + "TARGET=x86_64-linux-musl" \ + 'st=-static --static' \ + 'fl=-g0 -O2' \ + "bbin=$bootstrap/bin" \ + 'COMMON_CONFIG += CFLAGS="${fl}" CXXFLAGS="${fl}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \ + 'COMMON_CONFIG += CC="${bbin}/x86_64-linux-musl-gcc ${st}" CXX="${bbin}/x86_64-linux-musl-g++ ${st}"' + +touch musl-cross-make/sources/* + + +# Patch linker path for dynamic executables +make -C musl-cross-make gcc-11.2.0 +sed -i -e 's|/lib/ld-musl-|/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/ld-musl-|' musl-cross-make/gcc-11.2.0/gcc/config/*/linux*.h + +export PATH="$bootstrap/bin:$PATH" +make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make +make -C musl-cross-make install + +# Override linker symlink +for linkname in "${pthbs_destdir%/}"'/versions/'"$pthbs_package"'/x86_64-linux-musl/lib/'ld-musl-*so*; do + ln -s -f libc.so "$linkname" +done + +# Validate the compiler +"${pthbs_destdir%/}"'/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' --version +"${pthbs_destdir%/}"'/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-gcc' -o true true.c +"${pthbs_destdir%/}"'/versions'"/$pthbs_package/bin/"'x86_64-linux-musl-readelf' --string-dump=.interp true >true.linker +grep -F "$pthbs_package" true.linker + + + + +cd "$pthbs_destdir/versions/$pthbs_package" +find -type d -o -print | awk -F/ ' +BEGIN { + x["./bin/x86_64-linux-musl-g++"]=1 + x["./bin/x86_64-linux-musl-gcc"]=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 == "bin" && $3 ~ /^x86_64-linux-musl-/ { target=$3; sub("x86_64-linux-musl-", "", target); link("./command/" target) } + +$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/oldbootstrap.environment b/variants/root-x86_64/oldbootstrap.environment @@ -0,0 +1,4 @@ +#!/usr/bin/env pthbs-build +#+busybox.a0af8a5860e7fa278d39404f06a382633b7e2122d85c16bb2e22b1804cdd1654 +#+gnu-make.0a6fbda1db6316eb5ed666a1697e7bf0e4604d371ac4cf5d24a5151e76280074 +#+musl-cross-make.513f0acae3d9d88d67a9151a33515f34995d3ff3d69f38b47239070d1b02c731+ \ No newline at end of file