Skip to content

Instantly share code, notes, and snippets.

@CodeIter
Last active October 26, 2024 06:26
Show Gist options
  • Save CodeIter/ccdcc840e432288ef1e01cc15d66c048 to your computer and use it in GitHub Desktop.
Save CodeIter/ccdcc840e432288ef1e01cc15d66c048 to your computer and use it in GitHub Desktop.
Setup `glibc-runner` with pacman on Termux and install Deno.JS and Bun.JS .
#!/usr/bin/env -S bash -xeuo pipefail
set -xeuo pipefail
pkg install pacman patchelf \
which time ldd tree
echo
echo
pacman-key --init
echo
echo
pacman-key --populate
echo
echo
pacman -Syu
echo
echo
pacman -Sy glibc-runner --assume-installed bash,patchelf,resolv-conf
echo
echo
grun --help
echo
echo
curl -fsSL https://deno.land/install.sh | time sh
echo
echo
curl -fsSL https://bun.sh/install | time bash
echo
echo
export DENO_INSTALL="${HOME}/.deno"
export BUN_INSTALL="$HOME/.bun"
export PATH="${PATH}:${DENO_INSTALL}/bin:${BUN_INSTALL}/bin"
echo
echo
patchelf --print-interpreter --print-needed "$(which deno)"
echo
echo
patchelf --print-interpreter --print-needed "$(which bun)"
echo
echo
patchelf --set-rpath "${PREFIX}/glibc/lib" --set-interpreter "${PREFIX}/glibc/lib/ld-linux-aarch64.so.1" "$(which deno)"
patchelf --set-rpath "${PREFIX}/glibc/lib" --set-interpreter "${PREFIX}/glibc/lib/ld-linux-aarch64.so.1" "$(which bun)"
echo
echo
ldd "$(which deno)"
echo
echo
ldd "$(which bun)"
echo
echo
for i in deno bun ; do
cat - << EOF > ~/".${i}/bin/${i}.glibc.sh"
#!/usr/bin/env sh
_oldpwd="\${PWD}"
_dir="\$(dirname "\${0}")"
cd "\${_dir}"
if ! [ -h "${i}" ] ; then
>&2 mv -fv "${i}" "${i}.orig"
>&2 ln -sfv "${i}.glibc.sh" "${i}"
fi
cd "\${_oldpwd}"
LD_PRELOAD= exec "\${_dir}/${i}.orig" "\${@}"
# Or
#exec grun "\${_dir}/${i}.orig" "\${@}"
EOF
chmod -c u+x ~/".${i}/bin/${i}.glibc.sh"
done
echo
echo
deno.glibc.sh --version
echo
echo
bun.glibc.sh --version
echo
echo
tree -a ~/.deno ~/.bun
echo
echo
cat -n ~/.deno/bin/deno.glibc.sh
echo
echo
cat -n ~/.bun/bin/bun.glibc.sh
echo
echo
deno <<< "console.log('Hello world')"
echo
echo
file="$(mktemp -p ~/.cache --suffix .js hello-XXX)"
echo "console.log('Hello world')" > "${file}"
bun run "${file}"
echo
echo
@reedspool
Copy link

reedspool commented Jun 5, 2024

Thank you so much for this!!!

From relatively barebones Termux, needed to pkg install which time ldd tree before your script worked.

Also might help others that after this script was successful, I had to restart session to get bun in my path. And in order for bun install to work on my prior bun project, I had to use --backend-copyfile as per this comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment