aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow/repocheck.sh
diff options
context:
space:
mode:
Diffstat (limited to 'aux/workflow/repocheck.sh')
-rwxr-xr-xaux/workflow/repocheck.sh184
1 files changed, 0 insertions, 184 deletions
diff --git a/aux/workflow/repocheck.sh b/aux/workflow/repocheck.sh
deleted file mode 100755
index 688410a..0000000
--- a/aux/workflow/repocheck.sh
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/bin/sh
-set -eu
-
-if [ -n "${RECURSIVE_CHECK:-}" ]; then
- exit
-fi
-export RECURSIVE_CHECK=true
-
-. aux/lib.sh
-
-REPODIR="$PWD"
-
-INSTALLCHECK=false
-while getopts 'x:l:f:' flag; do
- case "$flag" in
- x)
- EXECUTABLES="$OPTARG"
- INSTALLCHECK=true
- ;;
- l)
- SYMLINKS="$OPTARG"
- INSTALLCHECK=true
- ;;
- f)
- FILES="$OPTARG"
- INSTALLCHECK=true
- ;;
- *)
- exit 2
- ;;
- esac
-done
-shift $((OPTIND - 1))
-
-assert_no_diffs() {
- if [ -n "$(git status -s)" ]; then
- echo 'Repository left dirty.' >&2
- git status >&2
- exit 1
- fi
-}
-
-assert_installed_files() {
- if [ -n "${EXECUTABLES:-}" ]; then
- ACTUAL="$(find "$1" -type f -perm -u=x | wc -l)"
- if [ "$EXECUTABLES" != "$ACTUAL" ]; then
- printf 'Expected %s executables, found %s:\n' \
- "$EXECUTABLES" "$ACTUAL" >&2
- echo "find $1 -type f -perm -u=x:" >&2
- find "$1" -type f -perm -u=x >&2
- exit 1
- fi
- fi
-
- if [ -n "${SYMLINKS:-}" ]; then
- ACTUAL="$(find "$1" -type l | wc -l)"
- if [ "$SYMLINKS" != "$ACTUAL" ]; then
- printf 'Expected %s symlinks, found %s:\n' \
- "$SYMLINKS" "$ACTUAL" >&2
- echo "find $1 -type l:" >&2
- find "$1" -type l >&2
- exit 1
- fi
- fi
-
- if [ -n "${FILES:-}" ]; then
- ACTUAL="$(find "$1" -type f | wc -l)"
- if [ "$FILES" != "$ACTUAL" ]; then
- printf 'Expected %s files, found %s:\n' \
- "$FILES" "$ACTUAL" >&2
- echo "find $1 -type f:" >&2
- find "$1" -type f >&2
- exit 1
- fi
- fi
-}
-
-assert_uninstalled_files() {
- if [ "$(find "$1" \( -type f -o -type l \) | wc -l)" != 0 ]; then
- echo 'Left-over files after uninstall' >&2
- echo "find $1 \( -type f -o -type l \):"
- find "$1" \( -type f -o -type l \)
- exit 1
- fi
-}
-
-assert_install() {
- if [ "$INSTALLCHECK" != 'true' ]; then
- return
- fi
-
- make clean
-
- echo 'Asserting "canonical" install path' >&2
- INSTALL1="$(mkdtemp)"
- make PREFIX="$INSTALL1"
- make check PREFIX="$INSTALL1"
- make install PREFIX="$INSTALL1"
- assert_installed_files "$INSTALL1"
- make uninstall PREFIX="$INSTALL1"
- assert_uninstalled_files "$INSTALL1"
-
- make clean
-
- echo 'Asserting "straigh-forward" install path' >&2
- INSTALL2="$(mkdtemp)"
- make install PREFIX="$INSTALL2"
- assert_installed_files "$INSTALL2"
- make uninstall PREFIX="$INSTALL2"
- assert_uninstalled_files "$INSTALL2"
-
- make clean
-
- echo 'Asserting "idempotent" install path' >&2
- INSTALL3="$(mkdtemp)"
- make install PREFIX="$INSTALL3"
- make install PREFIX="$INSTALL3"
- assert_installed_files "$INSTALL3"
- make uninstall PREFIX="$INSTALL3"
- make uninstall PREFIX="$INSTALL3"
- assert_uninstalled_files "$INSTALL3"
-
- make clean
-
- echo 'Asserting "destdir" install path' >&2
- DESTDIR="$(mkdtemp)"
- INSTALL4="$(mkdtemp)"
- make install DESTDIR="$DESTDIR" PREFIX="$INSTALL4"
- assert_installed_files "$DESTDIR/$INSTALL4"
- make uninstall DESTDIR="$DESTDIR" PREFIX="$INSTALL4"
- assert_uninstalled_files "$DESTDIR/$INSTALL4"
-}
-
-assert_clean_clone() {
- CLONEDIR="$(mkdtemp)"
- cd "$CLONEDIR"
-
- git clone "$REPODIR" .
-
- make clean public dev-check
- assert_no_diffs
- make clean
- assert_no_diffs
-
- if [ -n "$(git clean -ffdx --dry-run)" ]; then
- echo '"make clean" left files:' >&2
- git clean -ffdx --dry-run >&2
- echo "Clone directory: $CLONEDIR" >&2
- exit 1
- fi
-
- rm -rf aux/
- make clean check || {
- echo 'Cannot run "make check" without "aux/".' >&2
- echo "Clone directory: $CLONEDIR" >&2
- exit 1
- }
-
- assert_install
-
- cd - > /dev/null
-}
-
-assert_clean_checkout() {
- CHECKOUTDIR="$(mkdtemp)"
- git --work-tree="$CHECKOUTDIR" checkout HEAD -- .
- cd "$CHECKOUTDIR"
-
- FILECOUNT="$(find . -type f | wc -l)"
- make clean public dev-check
- make clean
- if [ "$FILECOUNT" != "$(find . -type f | wc -l)" ]; then
- echo 'File count mismatch after "make clean".' >&2
- echo "Checkout directory: $CHECKOUTDIR" >&2
- exit 1
- fi
-
- assert_install
-
- cd - > /dev/null
-}
-
-assert_clean_clone
-assert_clean_checkout