lang-bootstrap/06/helpers/builddir

71 lines
1.7 KiB
Text
Raw Normal View History

2025-04-18 12:41:04 +01:00
#!/bin/sh
: ${DISORDER=0}
set -uex
verb=$1
front=$2
back=$front-back
[ "tmp/build/${front#tmp/build/}" = "$front" ]
[ "tmp/build/${back#tmp/build/}" = "$back" ]
remove_hard() {
if [ -e "$1" ]; then
sudo umount "$1" 2>/dev/null || true
if ! rm -rf "$1" 2>/dev/null; then
chmod -R +w "$1"
rm -rf "$1"
fi
fi
}
if [ "$verb" = create ]; then
echo "### helpers/builddir: creating $front..."
remove_hard "$front"; remove_hard "$back"
mkdir -p "$front"
if [ "$DISORDER" = 1 ]; then
sudo umount "$back" || true
rm -rf "$back"
mkdir -p "$front" "$back"
sudo mount -o size=16G -t tmpfs tmpfs "$back"
sudo mount --bind "$back" "$front"
[ $(findmnt -no FSTYPE "$front") = tmpfs ]
fi
elif [ "$verb" = pre-build ]; then
[ -e "$front" ]
if [ "$DISORDER" = 1 ]; then
echo "### helpers/builddir: disordering $front..."
[ -e "$back" ]
[ $(findmnt -no FSTYPE "$back") = tmpfs ]
sudo umount "$front"
sudo disorderfs --shuffle-dirents=yes \
-o allow_other --multi-user=yes \
"$back" "$front"
[ $(findmnt -no FSTYPE "$front") = fuse.disorderfs ]
fi
elif [ "$verb" = post-build ]; then
if [ "$DISORDER" = 1 ]; then
echo "### helpers/builddir: ordering $front..."
[ ! -e "$front" ] && [ ! -e "$back" ]
[ $(findmnt -no FSTYPE "$front") = fuse.disorderfs ]
[ $(findmnt -no FSTYPE "$back") = tmpfs ]
sudo umount "$front"
sudo mount --bind "$back" "$front"
fi
elif [ "$verb" = remove ]; then
echo "### helpers/builddir: removing $front..."
if [ "$DISORDER" = 1 ]; then
[ $(findmnt -no FSTYPE "$back") = tmpfs ]
sudo umount "$front"
sudo umount "$back"
rm -d "$front" "$back"
else
remove_hard "$front"; remove_hard "$back"
fi
[ ! -e "$front" ] && [ ! -e "$back" ]
else
exit 9
fi