From 8f18b3ad6589202d4527bc7a9c3195c33d54fd90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Tue, 7 May 2024 22:48:48 -0700 Subject: [PATCH] Reapply apeinstall.sh binfmt flags (#1171) 7d31fc3 made it safe to register ape with the binfmt P flag. Older files will still get their paths passed via argv[0] and everything should just work. This also restores the F flag that was rolled back alongside the P flag; this seems like a good idea to me now. It makes it so /usr/bin/ape is kind of part of the kernel; simply replacing the file will not change the loader used. The binfmt will have to be reregistered as well. ape/apeinstall.sh will already nag you if there's an existing binfmt for ape. It might be nice to make it actually replace the registration. This reverts commit df648fb17457a3f9f770ddd9898271fa3f4fbf1c. --- ape/apeinstall.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ape/apeinstall.sh b/ape/apeinstall.sh index c1620f3fe..2a0a28590 100755 --- a/ape/apeinstall.sh +++ b/ape/apeinstall.sh @@ -137,13 +137,20 @@ if [ x"$(uname -s)" = xLinux ]; then echo done >&2 fi + uname_r="$(uname -r)" + if printf '%s\n%s\n' 5.12 "$uname_r" | sort -CV; then + FLAGS=FP + else + FLAGS=F + fi + 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:'"$FLAGS'"' >/proc/sys/fs/binfmt_misc/register"' >&2 + $SUDO sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:$FLAGS' >/proc/sys/fs/binfmt_misc/register" || exit + echo '$SUDO sh -c "echo '"'"':APE-jart:M::jartsr::/usr/bin/ape:'"$FLAGS'"' >/proc/sys/fs/binfmt_misc/register"' >&2 + $SUDO sh -c "echo ':APE-jart:M::jartsr::/usr/bin/ape:$FLAGS' >/proc/sys/fs/binfmt_misc/register" || exit echo done >&2 if [ x"$(cat /proc/sys/fs/binfmt_misc/status)" = xdisabled ]; then