62 lines
1.9 KiB
Scheme
Executable File
62 lines
1.9 KiB
Scheme
Executable File
#!/bin/sh
|
|
#| -*- scheme -*-
|
|
tmp="/tmp/path-compare-$$"
|
|
if [ -x "$PLTHOME/bin/racket" ]; then
|
|
"$PLTHOME/bin/racket" -r "$0" "$@"
|
|
else
|
|
"racket" -r "$0" "$@"
|
|
fi > "$tmp" || exit 1
|
|
cd "`dirname \"$0\"`"
|
|
if diff "paths-configure-snapshot" "$tmp"; then
|
|
echo "PATHS OK"; rm "$tmp"; exit 0
|
|
else echo "*** PATHS DATA MISMATCH (see $tmp) ***"; exit 1
|
|
fi
|
|
|#
|
|
|
|
;; Extract path information from the configure script, so it can be compared
|
|
;; to a snapshot and generate an error each time things change
|
|
|
|
(define configure-path
|
|
(simplify-path
|
|
(build-path
|
|
;; (find-executable-path
|
|
;; (find-system-path 'exec-file) (find-system-path 'collects-dir) #t)
|
|
(find-system-path 'exec-file)
|
|
'up 'up "src" "configure")))
|
|
(unless (file-exists? configure-path)
|
|
(error "Cannot find `configure':" configure-path))
|
|
|
|
(define current-match (make-parameter #f))
|
|
(define (match? . bytess)
|
|
(cond [(regexp-match (byte-regexp (apply bytes-append bytess))
|
|
(current-input-port))
|
|
=> (lambda (m) (current-match (car m)) #t)]
|
|
[else #f]))
|
|
(define (show-match)
|
|
(write-bytes (current-match)))
|
|
|
|
(with-input-from-file configure-path
|
|
(lambda ()
|
|
(if (match? #"\n# Installation directory options.\n"
|
|
#"(?:#[^\n]*\n)+"
|
|
#"(?:[a-z]+=[^\n]+\n)+"
|
|
#"\n")
|
|
(show-match)
|
|
(error "Did not find first block"))
|
|
(if (match? #"\n#+ Install targets #+\n\n"
|
|
#"unixstyle=no\n"
|
|
#"if (?:[^\n]+\n)+fi\n\n"
|
|
#"MAKE_COPYTREE=no\n"
|
|
#"if [^\n]+\n"
|
|
#"(?: +[^\n]+\n)+"
|
|
#"else\n"
|
|
#"(?: +[^\n]+\n)+"
|
|
#"fi\n\n")
|
|
(show-match)
|
|
(error "Did not find second block"))
|
|
(if (match? #"\n +echo \">>> Installation targets:\"\n"
|
|
#"(?: +echo [^\n]+\n)+")
|
|
(show-match)
|
|
(error "Did not find third block"))))
|
|
(exit)
|