diff options
author | Roland McGrath <roland@hack.frob.com> | 2011-07-02 15:52:51 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2011-07-02 15:52:51 -0700 |
commit | ea5ee9f73d7b9d143d04e6b91020fe9dc7b18a40 (patch) | |
tree | 7f734582fe608af5316458e08258bb5ad9d2304b | |
parent | 1b74661a6b93a892ecb1c717dedeedba5c2a976c (diff) | |
download | glibc-ea5ee9f73d7b9d143d04e6b91020fe9dc7b18a40.tar.gz glibc-ea5ee9f73d7b9d143d04e6b91020fe9dc7b18a40.tar.xz glibc-ea5ee9f73d7b9d143d04e6b91020fe9dc7b18a40.zip |
Rewrite local headers check to be more robust and informative.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rwxr-xr-x | scripts/check-local-headers.sh | 31 |
3 files changed, 23 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog index 2ef1710c3c..70c31cb745 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-07-02 Roland McGrath <roland@hack.frob.com> + * scripts/check-local-headers.sh: Rewritten using awk. + Match by word, not by line. Print error messages for matches. + * Makefile ($(objpfx)check-local-headers.out): Pass AWK in to it. + * Makerules [shlib-lds-flags empty]: ($(common-objpfx)libc_pic.opts): New target. ($(common-objpfx)libc_pic.os.clean): New target. diff --git a/Makefile b/Makefile index aac255713d..287f671c17 100644 --- a/Makefile +++ b/Makefile @@ -284,7 +284,8 @@ endif endif $(objpfx)check-local-headers.out: scripts/check-local-headers.sh - scripts/check-local-headers.sh "$(includedir)" "$(objpfx)" > $@ + AWK='$(AWK)' scripts/check-local-headers.sh \ + "$(includedir)" "$(objpfx)" > $@ ifneq ($(PERL),no) installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \ diff --git a/scripts/check-local-headers.sh b/scripts/check-local-headers.sh index d15e9a4416..b73078d364 100755 --- a/scripts/check-local-headers.sh +++ b/scripts/check-local-headers.sh @@ -1,5 +1,5 @@ #! /bin/bash -# Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc. +# Copyright (C) 2005,2007,2009,2011 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -23,18 +23,21 @@ objpfx="$2" # To avoid long paths. cd "$objpfx" - # Search all dependency files for file names in the include directory. # There are a few system headers we are known to use. -if fgrep "$includedir" */*.{o,os,oS}.d | -fgrep -v "$includedir/asm" | -fgrep -v "$includedir/linux" | -fgrep -v "$includedir/selinux" | -fgrep -v "$includedir/sys/capability.h" | -fgrep -v "$includedir/gd" | -fgrep -v "$includedir/nss3"; then - # If we found a match something is wrong. - exit 1 -fi - -exit 0 +exec ${AWK} -v includedir="$includedir" ' +BEGIN { + status = 0 + exclude = "^" includedir \ + "/(asm[-/]|linux/|selinux/|gd|nss3/|sys/capability\\.h)" +} +/^[^ ]/ && $1 ~ /.*:/ { obj = $1 } +{ + for (i = 1; i <= NF; ++i) { + if ($i ~ ("^" includedir) && $i !~ exclude) { + print "***", obj, "uses", $i + status = 1 + } + } +} +END { exit status }' */*.{o,os,oS}.d |