From 15548b523c840ea5b6b155625ffa12444e430db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Fri, 5 Jan 2024 16:45:14 -0500 Subject: [PATCH] Cleanup apeinstall.sh (#1057) --- ape/apeinstall.sh | 92 ++++++++++++++++++++++-------------- build/bootstrap/ape.aarch64 | Bin 8816 -> 8296 bytes build/bootstrap/ape.elf | Bin 9248 -> 9248 bytes build/bootstrap/ape.macho | Bin 9248 -> 9248 bytes 4 files changed, 56 insertions(+), 36 deletions(-) diff --git a/ape/apeinstall.sh b/ape/apeinstall.sh index bb71c98e2..be5c1ca74 100755 --- a/ape/apeinstall.sh +++ b/ape/apeinstall.sh @@ -10,73 +10,93 @@ if [ ! -f ape/loader.c ]; then cd "$COSMO" || exit fi +if [ -x build/bootstrap/make.com ]; then + MAKE=build/bootstrap/make.com +else + MAKE=make +fi + if [ "$(id -u)" -eq 0 ]; then SUDO= else SUDO=sudo fi +if command -v install >/dev/null 2>&1; then + if [ x"$(uname -s)" = xLinux ]; then + INSTALL="install -o root -g root -m 755" + else + INSTALL="install -o root -g wheel -m 755" + fi +else + INSTALL="cp -f" +fi + echo "Actually Portable Executable (APE) Installer" >&2 echo "Author: Justine Tunney " >&2 # special installation process for apple silicon -if [ "$(uname -s)" = "Darwin" ] && [ "$(uname -m)" = "arm64" ]; then +if [ x"$(uname -s)" = xDarwin ] && [ x"$(uname -m)" = xarm64 ]; then echo "cc -O -o $TMPDIR/ape.$$ ape/ape-m1.c" >&2 cc -O -o "$TMPDIR/ape.$$" ape/ape-m1.c || exit + trap 'rm "$TMPDIR/ape.$$"' EXIT if [ ! -d /usr/local/bin ]; then echo "$SUDO mkdir -p /usr/local/bin" >&2 $SUDO mkdir -p /usr/local/bin || exit fi - echo "$SUDO mv -f $TMPDIR/ape.$$ /usr/local/bin/ape" >&2 - $SUDO mv -f "$TMPDIR/ape.$$" /usr/local/bin/ape || exit + echo "$SUDO $INSTALL $TMPDIR/ape.$$ /usr/local/bin/ape" >&2 + $SUDO $INSTALL "$TMPDIR/ape.$$" /usr/local/bin/ape || exit + exit +fi + +if [ x"$(uname -m)" = xarm64 ] || [ x"$(uname -m)" = xaarch64 ]; then + MODE=aarch64 + EXT=elf + BEXT=aarch64 +elif [ x"$(uname -m)" = xx86_64 ]; then + MODE= + if [ x"$(uname -s)" = xDarwin ]; then + EXT=macho + else + EXT=elf + fi + BEXT=$EXT +else + echo "unsupported architecture $(uname -m)" >&2 exit fi ################################################################################ # INSTALL APE LOADER SYSTEMWIDE -if [ -f o/depend ] && make -j8 o//ape; then +if [ -f o/$MODE/depend ] && $MAKE -j8 o/$MODE/ape; then echo "successfully recompiled ape loader" >&2 -elif [ -x o//ape/ape.elf ] && [ -x o//ape/ape.macho ]; then +elif [ -x o/$MODE/ape/ape.$EXT ]; then echo "using ape loader you compiled earlier" >&2 elif [ -d build/bootstrap ]; then # if make isn't being used then it's unlikely the user changed the sources # in that case the prebuilt binaries should be completely up-to-date echo "using prebuilt ape loader from cosmo repo" >&2 - mkdir -p o//ape || exit - cp -af build/bootstrap/ape.elf o//ape/ape.elf || exit - cp -af build/bootstrap/ape.macho o//ape/ape.macho || exit + mkdir -p o/$MODE/ape || exit + cp -af build/bootstrap/ape.$BEXT o/$MODE/ape/ape.$EXT || exit else echo "no cosmopolitan libc repository here" >&2 - echo "fetching ape loader from justine.lol" >&2 - mkdir -p o//ape || exit + echo "fetching ape loader from justine.lol" >&2 + mkdir -p o/$MODE/ape || exit if command -v wget >/dev/null 2>&1; then - wget -qO o//ape/ape.elf https://justine.lol/ape.elf || exit - wget -qO o//ape/ape.macho https://justine.lol/ape.macho || exit + wget -qO o/$MODE/ape/ape.$EXT https://justine.lol/ape.$BEXT || exit else - curl -Rso o//ape/ape.elf https://justine.lol/ape.elf || exit - curl -Rso o//ape/ape.macho https://justine.lol/ape.macho || exit + curl -Rso o/$MODE/ape/ape.$EXT https://justine.lol/ape.$BEXT || exit fi - chmod +x o//ape/ape.elf || exit - chmod +x o//ape/ape.macho || exit + chmod +x o/$MODE/ape/ape.$EXT || exit fi -if [ "$(uname -s)" = "Darwin" ]; then - if ! [ /usr/bin/ape -nt o//ape/ape.macho ]; then - echo >&2 - echo "installing o//ape/ape.macho to /usr/bin/ape" >&2 - echo "$SUDO cp -f o//ape/ape.macho /usr/bin/ape" >&2 - $SUDO cp -f o//ape/ape.macho /usr/bin/ape || exit - echo "done" >&2 - fi -else - if ! [ /usr/bin/ape -nt o//ape/ape.elf ]; then - echo >&2 - echo "installing o//ape/ape.elf to /usr/bin/ape" >&2 - echo "$SUDO mv -f o//ape/ape.elf /usr/bin/ape" >&2 - $SUDO cp -f o//ape/ape.elf /usr/bin/ape || exit - echo "done" >&2 - fi +if ! [ /usr/bin/ape -nt o/$MODE/ape/ape.$EXT ]; then + echo >&2 + echo "installing o/$MODE/ape/ape.$EXT to /usr/bin/ape" >&2 + echo "$SUDO $INSTALL o/$MODE/ape/ape.$EXT /usr/bin/ape" >&2 + $SUDO $INSTALL o/$MODE/ape/ape.$EXT /usr/bin/ape || exit + echo "done" >&2 fi ################################################################################ @@ -115,10 +135,10 @@ if [ x"$(uname -s)" = xLinux ]; then echo >&2 echo registering APE with binfmt_misc >&2 echo you may need to edit configs to persist across reboot >&2 - echo '$SUDO sh -c "echo '"'"':APE:M::MZqFpD::/usr/bin/ape:'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2 - $SUDO sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register" || exit - echo '$SUDO sh -c "echo '"'"':APE-jart:M::jartsr::/usr/bin/ape:'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2 - $SUDO sh -c "echo ':APE-jart:M::jartsr::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register" || exit + echo '$SUDO sh -c "echo '"'"':APE:M::MZqFpD::/usr/bin/ape:FP'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2 + $SUDO sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:FP' >/proc/sys/fs/binfmt_misc/register" || exit + echo '$SUDO sh -c "echo '"'"':APE-jart:M::jartsr::/usr/bin/ape:FP'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2 + $SUDO sh -c "echo ':APE-jart:M::jartsr::/usr/bin/ape:FP' >/proc/sys/fs/binfmt_misc/register" || exit echo done >&2 if [ x"$(cat /proc/sys/fs/binfmt_misc/status)" = xdisabled ]; then diff --git a/build/bootstrap/ape.aarch64 b/build/bootstrap/ape.aarch64 index 5624ea1ff574d29dc9bdad31786a7298e54f7169..68809391c64a2d94fec767832cbce7c1fd8b3cbe 100755 GIT binary patch delta 2518 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 jMsG$u2YWaF*z?V-P!P171lje#a2!VIm3 zGTY3K<#uw7$ztS!!_2wg zJ?Hz*J@=a(#iRJ+H!I45sProf9_xF9tNmyB2t=qXIB}8N$9WD{#5=uR+@|=1x1GBk zcfAeV`H2Q!_hXzE-(UR{_gwr)b*HaGCUfzD#SL{A@E=#C$FGa#^^k1W;@*@@yHoKm z7dILBtdwEoGPxuPS=sht%hAHvoG;faWV_9eiIgckjax1+LP#%@tm|3;HvM`)8fo{7 z=2fmxE}m*-1m;wra2lI~8KnD5tbr2fhZ-GnILMJ=S?x)gZVsq+UjUdBvSE7^+WJr> zn*;eXkYV2Q7>!y-(gSgX%nDh-!L;td5`=Q=e|OyoxpA5i<%i%Q+aCllU3ZynzHrBN zEk|eM^*~-P9^*>eLmQtFxuW9v0Buq{ z6$;qa6AVRbb zgN|Z%1yt*j_KYDoBUR|lU^C?}{GgJfe&}0p z#OS^Dmdfl;g($W-ii#)YhC{>e#X zMj^lPpG*qV!dGq>KW)n zA#UzCYj3*L>?|gexp(0l_~fqLJ9cVshZ^xAg)1`mD;s(ed%lyyPw>`J7?}+I7VeT; zm=1VxcrdYd8=nj)w39RMHENyay>5NO2 zm+Ki`E@wzO5)y-%i6kU`sVv3mF_&1R17OKlTHAi1n;klHTF%VVl!q-Ysk~ z?Rs0-%vg(W*CXsJ>7m+{?2`1ywL21EY!87cKkb3xdB(>u`*%xZzDpuApqCXcd8qx- zHpQQhwTIgz*OH9A{9G8X5%Cd({}%I-5B}h0!_R5K0YMlKmg2V6Q}6u z?LS>tx73xA84bma{*Z8v<^d72lEHvxdnFPL$$ggd4xR>t%c7~WTAS<$bgFgOExn1=Jnq%1BqP2*F7c9)Ht$0>qHZg9tQ=z6}$mrYsn$fP@CAH3zdveBKtzX5nnSXYc0zSZAwj)-;3BTY&LBuMa4L1D&m4)I;PlH~GWAL47l z`Tl{o-c@#oTj2zF#R4^?{DPVt{6dN}bNZRe&^P<}GMNSQfEOZ%v-{rQ#sjk1&uR;J z_0r$gg%bT9?dIC#eD(fjZhT52_sxdyj)M2!*kX)fx(|cssKSwkwczGq_&yz%QY(`g z=a@wD+Wf|S>mIO2>i7cxV;>)lkzSlAN>N=IHwFw0pd>qbBsZV9+3w<%GR%slibs7x z+4Kcdma?K_z0!m(a=rKw^b1E)jZ|dn&}%@h;*~ie6LAz!u8KDX7pQ|cefl2NR2&tO s&#&k7lehyapAkPnje}P%$U0a#De{)cPl^24wfe_v(*2&6GvToBAAj{}?*IS* diff --git a/build/bootstrap/ape.macho b/build/bootstrap/ape.macho index d289768384dd2f06995a2241f4a75a23d908ee18..34c3e294afd1b4e565d8320109ed40396b5b5733 100755 GIT binary patch delta 1543 zcmZuxU2GIp6rS1LmbE|3wzN>Az*b2rqLfL*u!Ty8?&!UACi*~=rfDBYjR6u7+ZkF7 zWwx0e%kAVElf_7Up(Z9aK1iWa7r|w^m1UO~r7^)k0)-H|>k{1-#1@3{+{I{2*oT=j z-#zF1&OP_LJBmipM~A9QYPkRXN@|XOx}JXwJaLIXz#&OwAf4FX#+&sgGazpUI_WJ=uH(p_j>+iU(<>-vO z4#?}I<9w07NdExn>+-vqs1zCGUew#*#qT-=Oa`Z~f)5X;ufTMW2f8=mAjHerE4LY; zaCnOL@&7fVGp%vZLOu7Pm+UZvAjzf_$3-m{wESr3)`kj>lZ3>ivaUO>&>d?8m0ZN; zY(XN!J|8Sm7;Vo_$S{*Dka@j;*8Z$eZH<749HW4283wuWL+F1yt#K5) zGoV_RwdV}c8L23ZX7r^}WQ(_1uU2W7m(N#8O%-0f1i4Or2AN5J{zsJ@^F!aFBSj9B zaGX|LyN$_k9iZSDy#mq7jXA=W#xz{zc~l|{ zcLOeqj%tDSE|x=!6xjZjb*>Qg$acB~-rb`rzW{{e**$j**Hyj6J;dul?PM)Hq*SCR z4Wk}Uz-Bnv9%fBR<^nGZ2}h9A;&gWJyz44<_o!m4N5Cl73}hhKBhG(~?d1rJhEDF;*{k*SHaDPz+WGFQ`@#@0 z7lqCXhbK{JUZEAMTZF@@7XO?cLMNp+3^}~*HAo7b*PfSlDBzMXxuB3=T|Et*D8$X4 zVC_v8o1H~uGW!nf1D)E}yL+$pRH*b8+kbmma$hcI;q*u`p>L&tCoa>jfkFTMtDAW(Vv}=K5g)Zqis}Qpe;8l6zn`LV&P6UI#zX2ch BXsZAK delta 1497 zcmZuxZ)_7~7{6=FR$=4X{iE<Ef$bEX#SMC-htIjIVUdMpun%U2sPWI(di+UX z?Q%WC%jFD7M?y51nMgw7m&#%+pyN80(h;NB512_Jm{dJ-8aI@(P2haqqEQq3;rhPM z`#jI@chB$l-Z+fIu_HCbTIN5$V(rK8Zeaf>Jn=1ih;^-5k?M8#v5lz-cNbeoIqoJl zJ<;UZ{SfodGc9CtNVP$aolL{~n1fc1vUqv{H;q9BO~KHRjDl z+JmiRxqI{Ux|_U0huh)M8N5eK0U38N1EYlPg=}5}6fw zN77l)%-G|gE>tKLQT?FTZVyE4B%J}(a!Vu}kOxfr4LtP;iOuVkE+H|(zH*-CDUG;xG0G~* z7-6yJV|5I}U$e%`O}Vj)#xVO2n|6vfglu5o4B=$AXXa@T6P1=#C(RK5nai{z?E`cgTrWM{1?zgoMvY? z@_*i_GC>!7RI(Pn5I(wbRXABvsuLZ)PNfFB`B>W@-n7xDECXlCzK%q__Lm|#MeT=0 zN+lS}{51>{CGk(Z7?X(R!#~~>5*-ytXFD5P2IPu8hX;WNHL<5*bg69L^+HYyVvv!H z&uM@!U{ynFY&l{{iQ{a^)PXGS_%cm( zVavXWvTW=6GjKNAw|CoMq_bHzsv1G>&%@+vFAc?phdP@pBvpC@=5@H|dj&K~`PDtC#w! zCJ-NVsW;mai|+wi zsf%0oZG6BUspAX$i+yxFLi%x{C`Dy?+!)X?fRgm~Nlq?)v)#cfr5j~S6^?rRvf=S3 z&DffbO|b@ak>kdXpjSAOtfwMVhh7766|c+*nTX?na+SR?yhI(uX|wmJrsBAecxDr) pox~kb`Sj=sY8