aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile7
-rwxr-xr-xaux/workflow/installcheck.sh60
2 files changed, 67 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 6658c9e..8807a48 100644
--- a/Makefile
+++ b/Makefile
@@ -36,6 +36,7 @@ dev-check: check public
sh aux/workflow/assert-changelog.sh -n $(NAME)
sh aux/workflow/assert-readme.sh -n $(NAME) -m $(MAILING_LIST)
sh aux/workflow/assert-manpages.sh -n $(NAME) -m $(MAILING_LIST)
+ $(MAKE) PREFIX=`mktemp -d` install installcheck uninstall uninstallcheck
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
@@ -46,6 +47,12 @@ uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/git-permalink
sh aux/workflow/manpages.sh -up $(DESTDIR)$(MANPREFIX) $(manpages)
+installcheck:
+ sh aux/workflow/installcheck.sh -x1 -l1 -f5 -p $(PREFIX)
+
+uninstallcheck:
+ sh aux/workflow/installcheck.sh -up $(PREFIX)
+
clean:
rm -rf public/ src/git-permalink $(manpages) README.*.md CHANGELOG.*.md
diff --git a/aux/workflow/installcheck.sh b/aux/workflow/installcheck.sh
new file mode 100755
index 0000000..e28f5d1
--- /dev/null
+++ b/aux/workflow/installcheck.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+set -eu
+
+while getopts 'p:x:l:f:u' flag; do
+ case "$flag" in
+ p)
+ PREFIX="$OPTARG"
+ ;;
+ x)
+ EXECUTABLES_EXPECTED="$OPTARG"
+ ;;
+ l)
+ SYMLINKS_EXPECTED="$OPTARG"
+ ;;
+ f)
+ FILES_EXPECTED="$OPTARG"
+ ;;
+ u)
+ UNINSTALL=1
+ ;;
+ *)
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+
+if [ -n "${UNINSTALL:-}" ]; then
+ if [ "$(find "$PREFIX" -type f | wc -l)" != 0 ]; then
+ printf 'When uninstalling, left over files in the PREFIX directory:\n'
+ find "$PREFIX" -type f
+ exit 1
+ fi
+ exit
+fi
+
+EXECUTABLES_ACTUAL="$(find "$PREFIX" -type f -perm -a=x | wc -l)"
+if [ "${EXECUTABLES_EXPECTED:-0}" != "$EXECUTABLES_ACTUAL" ]; then
+ printf 'Expected %s executables, found %s:\n' \
+ "$EXECUTABLES_EXPECTED" "$EXECUTABLES_ACTUAL" >&2
+ find "$PREFIX" -type f -perm -a=x
+ exit 1
+fi
+
+SYMLINKS_ACTUAL="$(find "$PREFIX" -type l | wc -l)"
+if [ "${SYMLINKS_EXPECTED:-0}" != "$SYMLINKS_ACTUAL" ]; then
+ printf 'Expected %s symlinks, found %s:\n' \
+ "$SYMLINKS_EXPECTED" "$SYMLINKS_ACTUAL" >&2
+ find "$PREFIX" -type l
+ exit 1
+fi
+
+FILES_ACTUAL="$(find "$PREFIX" -type f | wc -l)"
+if [ "${FILES_EXPECTED:-0}" != "$FILES_ACTUAL" ]; then
+ printf 'Expected %s files, found %s:\n' \
+ "$FILES_EXPECTED" "$FILES_ACTUAL" >&2
+ find "$PREFIX" -type f
+ exit 1
+fi