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

72 lines
2.2 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-build; 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")
# Detect all packages.
get_all_packages() {
for PACKAGE in $(ls "$SORTIX_PORTS_DIR"); do
if [ -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info" ]; then
echo $PACKAGE
fi
done
}
# Clean all the packages.
for PACKAGE in $(get_all_packages); do
SOURCE_PACKAGE=$( (SOURCE_PACKAGE= &&
. $SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info &&
echo "$SOURCE_PACKAGE") )
DEVELOPMENT=$( (DEVELOPMENT= &&
. $SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info &&
echo "$DEVELOPMENT") )
if [ -e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" -o \
-e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version.new" ]; then
if [ -z "$SOURCE_PACKAGE" ] ||
[ -e "$SORTIX_PORTS_DIR/$SOURCE_PACKAGE/$SOURCE_PACKAGE" ]; then
tix-build \
--sysroot="/" \
--host=$HOST \
--prefix= \
--destination="/" \
--start=clean \
--end=clean \
${SOURCE_PACKAGE:+--source-package "$SORTIX_PORTS_DIR/$SOURCE_PACKAGE/$SOURCE_PACKAGE"} \
"$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
fi
if [ "$DEVELOPMENT" = true ]; then
case "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" in
*.development)
echo "Port is in development: '$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE'"
continue
;;
esac
fi
# TODO: New top-level makefile target for this.
echo "Removing '$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE'"
rm -rf "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
rm -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version"
rm -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version.new"
fi
done