sortix-mirror/build-aux/clean-ports.sh

64 lines
2.0 KiB
Bash
Executable File

set -e
make_dir_path_absolute() {
(cd "$1" && pwd)
}
has_command() {
which "$1" > /dev/null
}
# Detect if the environment isn't set up properly.
if [ -z "$SORTIX_PORTS_DIR" ]; then
echo "$0: error: You need to set \$SORTIX_PORTS_DIR" >&2
exit 1
elif ! [ -d "$SORTIX_PORTS_DIR" ] ||
[ "$(ls "$SORTIX_PORTS_DIR") | wc -l" = 0 ]; then
exit 0
elif ! has_command tix-vars; then
echo "$0: warning: Can't clean ports directory without Tix locally installed." >&2
exit 0
fi
# Make paths absolute for later use.
SORTIX_PORTS_DIR=$(make_dir_path_absolute "$SORTIX_PORTS_DIR")
# Clean all the packages.
for PACKAGE in $("$(dirname -- "$0")"/list-packages.sh 'all!'); do
if [ "$1" = distclean ]; then
DEVELOPMENT=$(tix-vars -d false $SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.port \
DEVELOPMENT)
if [ "$DEVELOPMENT" = true ]; then
case "$(cat "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version")" in
*.development)
echo "Port is in development: '$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE'"
continue
;;
esac
fi
if [ -e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" ]; then
echo "Removing '$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE'"
fi
rm -rf "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
rm -rf "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.upstream"
rm -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version"
rm -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version.new"
fi
if [ -e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" -o \
-e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version.new" ]; then
SOURCE_PORT=$(tix-vars -d '' $SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.port \
SOURCE_PORT)
if [ -z "$SOURCE_PORT" ] ||
[ -e "$SORTIX_PORTS_DIR/$SOURCE_PORT/$SOURCE_PORT" ]; then
tix-build \
--sysroot="/" \
--prefix= \
--destination="/" \
--start=clean \
--end=clean \
${SOURCE_PORT:+--source-port "$SORTIX_PORTS_DIR/$SOURCE_PORT/$SOURCE_PORT"} \
"$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
fi
fi
done