123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/bin/sh
- exec guile -q -s "$0" "$@"
- !#
- ;; The use of certain identifiers as variable or parameter names has
- ;; been found to cause build problems on particular platforms. The
- ;; aim of this test is to cause "make check" to fail (on GNU/Linux,
- ;; which most Guile developers use) if we accidentally add new code
- ;; that uses those identifiers.
- (define bad-identifiers
- '(
- ;; On AIX 5.2 and 5.3, /usr/include/sys/timer.h includes:
- ;; #ifndef _LINUX_SOURCE_COMPAT
- ;; #define func_data t_union.data
- ;; #endif
- ;; So we want to avoid using func_data in Guile source code.
- "func_data"
- ;; More troublesome identifiers can be added into the list here.
- ))
- (use-modules (ice-9 regex) (ice-9 rdelim))
- (define bad-id-regexp
- (make-regexp (string-append "\\<("
- (string-join (map regexp-quote bad-identifiers) "|")
- ")\\>")))
- (define exit-status 0)
- ;; Non-exported code from (ice-9 ftw).
- (define (directory-files dir)
- (let ((dir-stream (opendir dir)))
- (let loop ((new (readdir dir-stream))
- (acc '()))
- (if (eof-object? new)
- (begin
- (closedir dir-stream)
- acc)
- (loop (readdir dir-stream)
- (if (or (string=? "." new) ;;; ignore
- (string=? ".." new)) ;;; ignore
- acc
- (cons (in-vicinity dir new) acc)))))))
- (define (directory-files-matching dir pattern)
- (let ((file-name-regexp (make-regexp pattern)))
- (filter (lambda (fn)
- (regexp-exec file-name-regexp fn))
- (directory-files dir))))
- (let loop ((file-names (directory-files-matching "../../libguile"
- "\\.[ch]$")))
- (or (null? file-names)
- (begin
- (with-input-from-file (car file-names)
- (lambda ()
- (let loop ((linenum 1) (line (read-line)))
- (or (eof-object? line)
- (begin
- (if (regexp-exec bad-id-regexp line)
- (begin
- (set! exit-status 1)
- (format (current-error-port)
- "~a:~a: ~a\n"
- (car file-names)
- linenum
- line)))
- (loop (+ linenum 1) (read-line)))))))
- (loop (cdr file-names)))))
-
- (exit exit-status)
- ;; Local Variables:
- ;; mode: scheme
- ;; End:
|