50 lines
1.1 KiB
Text
50 lines
1.1 KiB
Text
|
#!/bin/sh
|
||
|
set -ue
|
||
|
|
||
|
NIXPKGS=nixpkgs/21f524672f25f8c3e7a0b5775e6505fee8fe43ce
|
||
|
: ${DESTDIR:=stage}
|
||
|
|
||
|
mkdir -p $DESTDIR/cheat
|
||
|
|
||
|
if [ ! -e $DESTDIR/cheat/make ]; then
|
||
|
nix build "$NIXPKGS#pkgsStatic.gnumake"
|
||
|
cp result/bin/make $DESTDIR/cheat/make
|
||
|
rm result
|
||
|
fi
|
||
|
|
||
|
if [ ! -e $DESTDIR/cheat/bash ]; then
|
||
|
nix build "$NIXPKGS#pkgsStatic.bash"
|
||
|
cp result/bin/bash $DESTDIR/cheat/bash
|
||
|
rm result
|
||
|
fi
|
||
|
|
||
|
if [ ! -e $DESTDIR/cheat/strace ]; then
|
||
|
nix build "$NIXPKGS#pkgsStatic.strace"
|
||
|
cp result/bin/strace $DESTDIR/cheat/
|
||
|
rm result
|
||
|
fi
|
||
|
|
||
|
if [ ! -e $DESTDIR/cheat/busybox ]; then
|
||
|
nix build "$NIXPKGS#pkgsStatic.busybox"
|
||
|
cp result/bin/busybox $DESTDIR/cheat/busybox
|
||
|
for f in $(ls result/bin/); do
|
||
|
[ $(basename $f) = busybox ] ||
|
||
|
ln -s /cheat/busybox $DESTDIR/cheat/$(basename $f)
|
||
|
done
|
||
|
rm result
|
||
|
fi
|
||
|
|
||
|
if [ -z "$@" ]; then
|
||
|
_PATH=''
|
||
|
for bindir in $DESTDIR/store/*/bin $DESTDIR/store/*/*/bin; do
|
||
|
_PATH="${bindir##$DESTDIR}:$_PATH"
|
||
|
done
|
||
|
LIBC=$(find $DESTDIR/store/*/lib/libc.so | tail -n1)
|
||
|
if [ -n "$LIBC" ] && [ ! -h $DESTDIR/cheat/ldd ]; then
|
||
|
ln -s "${LIBC##$DESTDIR}" $DESTDIR/cheat/ldd
|
||
|
fi
|
||
|
helpers/chroot /cheat/env "PATH=$_PATH" /cheat/ash
|
||
|
else
|
||
|
helpers/chroot "$@"
|
||
|
fi
|