From 87888fb768b9a4da130357d0b3dbb56be1b033c1 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Tue, 9 Jan 2024 01:43:03 +0000 Subject: [PATCH] INIT: make.probe: get rid of obsolete SHELLMAGIC probe Here is another small step towards cleaning up the build system. The SHELLMAGIC probe (its result shows up as mam_cc_SHELLMAGIC in the Mamfiles) checks for broken systems that absolutely must have a hashbang path (#!/bin/sh, etc.) in order to run a shell script. This does not describe any remotely current system. On systems where a hashbang-less script fails, the probe only tested for: 1. #!/bin/env sh 2. #!/emx/bin/bash.exe 3. #!/emx/bin/sh.exe Re 1, on all modern systems, env is at /usr/bin/env (it's become a de facto standard), and re 2 and 3, those paths existed on OS/2 (last release more than two decades ago). src/cmd/INIT/make.probe: - Remove obsolete SHELLMAGIC probe. src/cmd/INIT/Mamfile, src/lib/libast/Mamfile: - Remove use of mam_cc_SHELLMAGIC. - Drastically simplify related generated shell code. --- src/cmd/INIT/Mamfile | 257 ++-------------------------------------- src/cmd/INIT/make.probe | 30 +---- src/lib/libast/Mamfile | 30 +---- 3 files changed, 10 insertions(+), 307 deletions(-) diff --git a/src/cmd/INIT/Mamfile b/src/cmd/INIT/Mamfile index a8a528892728..4d0acde16375 100644 --- a/src/cmd/INIT/Mamfile +++ b/src/cmd/INIT/Mamfile @@ -18,172 +18,27 @@ setv LDFLAGS make install make iffe prev iffe.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : iffe contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n iffe.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 225 in - exec - 0) ${STDCP} iffe.sh iffe - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < iffe.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} iffe.sh - exec - } > iffe - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - iffe.sh > iffe <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} iffe.sh iffe exec - test -w iffe -a -x iffe || ${STDCHMOD} u+w,+x iffe done iffe generated make mktest prev mktest.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : mktest contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n mktest.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 184 in - exec - 0) ${STDCP} mktest.sh mktest - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < mktest.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} mktest.sh - exec - } > mktest - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - mktest.sh > mktest <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} mktest.sh mktest exec - test -w mktest -a -x mktest || ${STDCHMOD} u+w,+x mktest done mktest generated make package prev package.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : package contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n package.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 184 in - exec - 0) ${STDCP} package.sh package - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < package.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} package.sh - exec - } > package - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - package.sh > package <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} package.sh package exec - test -w package -a -x package || ${STDCHMOD} u+w,+x package done package generated make regress prev regress.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : regress contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n regress.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 184 in - exec - 0) ${STDCP} regress.sh regress - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < regress.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} regress.sh - exec - } > regress - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - regress.sh > regress <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} regress.sh regress exec - test -w regress -a -x regress || ${STDCHMOD} u+w,+x regress done regress generated make crossexec prev crossexec.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : crossexec contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n crossexec.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 184 in - exec - 0) ${STDCP} crossexec.sh crossexec - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < crossexec.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} crossexec.sh - exec - } > crossexec - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - crossexec.sh > crossexec <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} crossexec.sh crossexec exec - test -w crossexec -a -x crossexec || ${STDCHMOD} u+w,+x crossexec done crossexec generated make mamake @@ -198,76 +53,12 @@ make install done mamake generated make mkreq prev mkreq.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : mkreq contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n mkreq.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 0 in - exec - 0) ${STDCP} mkreq.sh mkreq - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < mkreq.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} - mkreq.sh <<'!' - exec - - exec - ! - exec - } > mkreq - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - mkreq.sh > mkreq <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} mkreq.sh mkreq exec - test -w mkreq -a -x mkreq || ${STDCHMOD} u+w,+x mkreq done mkreq generated make mprobe prev mprobe.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : mprobe contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n mprobe.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 0 in - exec - 0) ${STDCP} mprobe.sh mprobe - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < mprobe.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} - mprobe.sh <<'!' - exec - - exec - ! - exec - } > mprobe - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - mprobe.sh > mprobe <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} mprobe.sh mprobe exec - test -w mprobe -a -x mprobe || ${STDCHMOD} u+w,+x mprobe done mprobe generated make probe @@ -276,39 +67,7 @@ make install prev make.probe exec - ${STDCAT} C+probe make.probe > probe.sh done probe.sh generated - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : probe contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n probe.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 0 in - exec - 0) ${STDCP} probe.sh probe - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < probe.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac - exec - ${STDCAT} - probe.sh <<'!' - exec - - exec - ! - exec - } > probe - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - probe.sh > probe <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - - exec - ! - exec - ;; - exec - esac + exec - ${STDCP} probe.sh probe exec - test -w probe -a -x probe || ${STDCHMOD} u+w,+x probe done probe generated make ${INSTALLROOT}/bin diff --git a/src/cmd/INIT/make.probe b/src/cmd/INIT/make.probe index 7281f0504cb8..2f4f6b82af24 100644 --- a/src/cmd/INIT/make.probe +++ b/src/cmd/INIT/make.probe @@ -3,7 +3,7 @@ # Glenn Fowler # AT&T Research # -# @(#)make.probe (ksh 93u+m) 2024-01-02 +# @(#)make.probe (ksh 93u+m) 2024-01-09 # # C probe for make # @@ -163,7 +163,6 @@ runpath= shared= shared_name= shared_registry= -shellmagic= soversion= stdc= strict= @@ -1772,31 +1771,6 @@ int lib(int** def, int** ref, int** ext) ;; esac -# shellmagic defined if installed shell scripts need magic - -echo ': got magic : -echo ok' > ok -chmod +x ok -case `(eval ./ok | /bin/sh) 2>/dev/null` in -ok) ;; -*) echo '#!/bin/env sh -: got magic : -echo ok' > ok - chmod +x ok - case `(eval ./ok | /bin/sh) 2>/dev/null` in - ok) shellmagic='$("#")!/bin/env sh' - ;; - *) for i in /emx/bin/bash.exe /emx/bin/sh.exe - do if test -x $i - then shellmagic='$("#")!'$i - break - fi - done - ;; - esac - ;; -esac - # # path cleanup # @@ -1994,7 +1968,6 @@ CC_SHARED_LD=$dld CC_SHARED_NAME=$shared_name CC_SHARED_REGISTRY=$shared_registry CC_SHARED_REGISTRY_PATH=$probe_shared_registry_path -CC_SHELLMAGIC=$shellmagic CC_SIZE=$size CC_STATIC=$static CC_STDINCLUDE=$stdinclude @@ -2107,7 +2080,6 @@ echo CC.SHARED.LD = $CC_SHARED_LD echo CC.SHARED.NAME = $CC_SHARED_NAME echo CC.SHARED.REGISTRY = $CC_SHARED_REGISTRY echo CC.SHARED.REGISTRY.PATH = $CC_SHARED_REGISTRY_PATH -echo CC.SHELLMAGIC = $CC_SHELLMAGIC echo CC.SIZE = $CC_SIZE echo CC.STATIC = $CC_STATIC echo CC.STDINCLUDE = $CC_STDINCLUDE diff --git a/src/lib/libast/Mamfile b/src/lib/libast/Mamfile index 951891fa3576..f627d12cc172 100644 --- a/src/lib/libast/Mamfile +++ b/src/lib/libast/Mamfile @@ -139,39 +139,11 @@ make install make conflim.h implicit make conf prev comp/conf.sh - exec - case static,port:$OPTIND:$RANDOM in - exec - ?*:*:*|*::*|*:*:$RANDOM) - exec - ;; - exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]} !(pattern)' 2>/dev/null - exec - then if grep '### .*archaic.* ###' >/dev/null - exec - then : conf contains archaic constructs : - exec - else ENV= LC_ALL=C $SHELL -n comp/conf.sh - exec - fi - exec - fi - exec - ;; - exec - esac - exec - case '${mam_cc_SHELLMAGIC}' in - exec - "") case 29 in - exec - 0) ${STDCP} comp/conf.sh conf - exec - ;; - exec - *) { - exec - i=`(read x; echo $x) < comp/conf.sh` - exec - case $i in - exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;; - exec - esac + exec - { exec - ${STDCAT} - comp/conf.sh <<'!' exec - HOSTTYPE="${mam_cc_HOSTTYPE}" exec - ! exec - } > conf - exec - ;; - exec - esac - exec - ;; - exec - *) ${STDCAT} - comp/conf.sh > conf <<'!' - exec - ${mam_cc_SHELLMAGIC} - exec - HOSTTYPE="${mam_cc_HOSTTYPE}" - exec - ! - exec - ;; - exec - esac exec - test -w conf -a -x conf || ${STDCHMOD} u+w,+x conf done conf generated prev comp/conf.tab