mrrl

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

musl-cross-make:old (5658B)


      1 {%- import "package_sets" as ps -%}
      2 #!/usr/bin/env pthbs-build
      3 #@pragma:nofail_digest
      4 #+{{pkg_install_name("musl-cross-make:oldbootstrap-1")}}
      5 #+{{pkg_install_name("gnu-make:oldbootstrap")}}
      6 #+{{pkg_install_name("busybox:oldbootstrap")}}
      7 #+{{pkg_install_name("nawk:bootstrap")}}
      8 {{ ps.mcm_sources(
      9 	gcc="gcc-14.3.0.tar.xz",
     10 	linux="linux-6.15.7.tar.xz",
     11 	musl="musl-1.2.5.tar.gz",
     12 	binutils="binutils-2.44.tar.gz",
     13 	gmp="gmp-6.3.0.tar.xz",
     14 	mpfr="mpfr-4.2.2.tar.xz",
     15 	mpc="mpc-1.3.1.tar.gz"
     16 ) }}
     17 #@sha256:4213e75809588e3f32ae0fde8fb11df2dfd6e0e013762ff5ee951c3aadb7ffc0:musl-cross-make/patches/linux-6.15.7/0001-no-rsync-headers.diff
     18 #@sha256:68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6:zpipe.c
     19 #@git:{{submodule.current["musl-cross-make"]}}:musl-cross-make
     20 
     21 
     22 # - build script start -
     23 PATH="$pthbs_build_environment/command:$PATH"
     24 
     25 prefix={{versions}}/$pthbs_package
     26 dest=${pthbs_destdir%/}${prefix}
     27 cd '.'
     28 
     29 # For validating the compiler
     30 printf '%s\n' 'int main(void) { return 0; }' >true.c
     31 
     32 printf '%s\n' >musl-cross-make/config.mak \
     33 	"OUTPUT=${pthbs_destdir%/}{{versions}}/$pthbs_package" \
     34 	"TARGET={{triplet}}" \
     35 	'GCC_VER=14.3.0' \
     36 	'LINUX_VER=6.15.7' \
     37 	'MUSL_VER=1.2.5' \
     38 	'BINUTILS_VER=2.44' \
     39 	'GMP_VER=6.3.0' \
     40 	'MPC_VER=1.3.1' \
     41 	'MPFR_VER=4.2.2' \
     42 	'st=-static --static' \
     43 	'fl=-g0 -O2' \
     44 	"command=$pthbs_build_environment/command" \
     45 	'COMMON_CONFIG += CFLAGS="${fl} ${st}" CXXFLAGS="${fl} ${st}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \
     46 	'COMMON_CONFIG += CC="${command}/{{triplet}}-gcc ${st}" CXX="${command}/{{triplet}}-g++ ${st}"'
     47 
     48 
     49 touch musl-cross-make/sources/*
     50 
     51 
     52 # Patch linker path for dynamic executables
     53 make -C musl-cross-make gcc-14.3.0
     54 sed -i -e 's|/lib/ld-musl-|{{versions}}/'"$pthbs_package"'/{{triplet}}/lib/ld-musl-|' musl-cross-make/gcc-14.3.0/gcc/config/*/linux*.h
     55 make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make || exit $?
     56 make -C musl-cross-make install || exit $?
     57 
     58 mv "$dest/{{triplet}}/include" "$dest/"
     59 mv "$dest/bin" "$dest/command"
     60 mv "$dest/{{triplet}}/bin"/* "$dest/command/"
     61 
     62 ln -s ../include "$dest/{{triplet}}/include"
     63 ln -s ./command "$dest/bin"
     64 ln -s ../command "$dest/{{triplet}}/bin"
     65 
     66 dd=$pthbs_destdir/{{versions}}/$pthbs_package
     67 
     68 # Override linker symlink
     69 for linkname in "$dd"'/{{triplet}}/lib/'ld-musl-*so*; do
     70 	ln -s -f libc.so "$linkname"
     71 done
     72 
     73 # Validate the compiler
     74 "$dd"'/command/{{triplet}}-gcc' --version
     75 "$dd"'/command/{{triplet}}-gcc' -o true true.c
     76 "$dd"'/command/{{triplet}}-readelf' --string-dump=.interp true >true.linker
     77 grep -F "$pthbs_package" true.linker
     78 
     79 pkgs="gmp mpc mpfr zlib"
     80 #pkgs="$pkgs libbacktrace libcc1 libcpp libdecnumber libiberty lto-plugin"
     81 
     82 for pkg in $pkgs; do
     83 	make -C musl-cross-make/build/local/{{triplet}}/obj_gcc/$pkg prefix=/ DESTDIR="$dd" install
     84 done
     85 cp -va musl-cross-make/gcc-*.orig/zlib/zconf.h musl-cross-make/gcc-*.orig/zlib/zlib.h "$dd/include/"
     86 mkdir -p "$dd/library/pkgconfig"
     87 printf '%s\n' > "$dd/library/pkgconfig/zlib.pc" \
     88 	"prefix={{versions}}/$pthbs_package" \
     89 	'exec_prefix=${prefix}' \
     90 	'includedir=${prefix}/include' \
     91 	'libdir=${exec_prefix}/library' \
     92 	'' \
     93 	'Name: zlib' \
     94 	'Description: zlib compression library' \
     95 	'Version: 1.2.11' \
     96 	'' \
     97 	'Requires:' \
     98 	'Libs: -L${libdir} -lz' \
     99 	'Cflags: -I${includedir}'
    100 
    101 
    102 # validate zlib
    103 "$dd"'/command/{{triplet}}-gcc' -I"$dd/include" -L"$dd/lib" -static -o zpipe zpipe.c -lz
    104 ./zpipe <true.c >true.c.gz
    105 ./zpipe -d <true.c.gz >true.c.2
    106 cmp -s true.c true.c.2
    107 
    108 
    109 
    110 cd "$pthbs_destdir{{versions}}/$pthbs_package"
    111 find -type d -o -print | awk -F/ '
    112 BEGIN {
    113 	x["./command/{{triplet}}-g++"]=1
    114 	x["./command/{{triplet}}-gcc"]=1
    115 	x["./include/linux/landlock.h"]=1
    116 
    117 	x["./lib/libgmp.a"]=1
    118 	x["./lib/libmpc.a"]=1
    119 	x["./lib/libmpfr.a"]=1
    120 	x["./lib/libz.a"]=1
    121 
    122 	x["./include/gmp.h"]=1
    123 	x["./include/mpc.h"]=1
    124 	x["./include/mpf2mpfr.h"]=1
    125 	x["./include/mpfr.h"]=1
    126 	x["./include/zlib.h"]=1
    127 	x["./include/zconf.h"]=1
    128 }
    129 
    130 function r1(s) {
    131 	sub("^[.]/[^/]*", ".", s)
    132 	return s
    133 }
    134 function s1(repl, s) {
    135 	sub("^[.]/[^/]*", "./"repl, s)
    136 	return s
    137 }
    138 function link(src) {
    139 	x[$0]=0
    140 	printf "%s\t%s\n", $0, src
    141 	printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr"
    142 }
    143 $1!="."{exit 1}
    144 
    145 $2 == "command" && $3 ~ /^{{triplet}}-/ && ! (  \
    146 	$3 == "{{triplet}}-ar" ||  \
    147 	$3 == "{{triplet}}-as" ||  \
    148 	$3 == "{{triplet}}-ld" ||  \
    149 	$3 == "{{triplet}}-ld.bfd" ||  \
    150 	$3 == "{{triplet}}-nm" ||  \
    151 	$3 == "{{triplet}}-objcopy" ||  \
    152 	$3 == "{{triplet}}-objdump" ||  \
    153 	$3 == "{{triplet}}-ranlib" ||  \
    154 	$3 == "{{triplet}}-readelf" ||  \
    155 	$3 == "{{triplet}}-strip"  \
    156 ) {
    157 	target=$3
    158 	sub("{{triplet}}-", "", target)
    159 	link("./command/" target)
    160 }
    161 $2 == "command" { link($0); next }
    162 
    163 $2 == "config" { link($0); next }
    164 $2 == "keys" { link($0); next }
    165 $2 == "zsh" { link($0); next }
    166 $2 == "env" { link($0); next }
    167 
    168 $2 == "library.so" { link($0); next }
    169 $2 == "library" { link($0); next }
    170 $2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next }
    171 $2 == "lib" && $NF ~ /\.so(\..*)?$/ { link(s1("library.so", $0)); next }
    172 
    173 $2 == "share" && $3 ~ /^(info|man|doc|icons|terminfo)$/ { link(r1($0)); next }
    174 
    175 $2 == "man" { link($0); next }
    176 $2 == "info" { link($0); next }
    177 $2 == "doc" { link($0); next }
    178 $2 == "icons" { link($0); next }
    179 $2 == "terminfo" { link($0); next }
    180 $2 == "data" { link($0); next }
    181 $2 == "include" { link($0); next }
    182 
    183 { printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" }
    184 
    185 END {
    186 	for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" }
    187 	for(fname in x) {
    188 		if(x[fname]) {
    189 			printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr"
    190 			exit 3
    191 		}
    192 	}
    193 }' >.install-links.new
    194 mv .install-links.new .install-links
    195 
    196 {# extra line for matching hash #}