Mercurial > gnulib
changeset 18353:f5ee80c41809
maint.mk: speed up require_config_h_first
Instead of spawning three processes per file,
rewrite the check in perl and run it once for all the files.
* top/maint.mk (perl_config_h_first_): Define.
(sc_require_config_h_first): Use it in place of shell code.
author | Ján Tomko <jtomko@redhat.com> |
---|---|
date | Tue, 26 Jul 2016 16:28:16 +0200 |
parents | c397b02b9e03 |
children | 7d41849f49e3 |
files | ChangeLog top/maint.mk |
diffstat | 2 files changed, 24 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Jul 29 22:39:31 2016 -0700 +++ b/ChangeLog Tue Jul 26 16:28:16 2016 +0200 @@ -1,3 +1,11 @@ +2016-07-30 Ján Tomko <jtomko@redhat.com> + + maint.mk: speed up require_config_h_first + Instead of spawning three processes per file, + rewrite the check in perl and run it once for all the files. + * top/maint.mk (perl_config_h_first_): Define. + (sc_require_config_h_first): Use it in place of shell code. + 2016-07-26 Ján Tomko <jtomko@redhat.com> maint.mk: speed up sc_po_check
--- a/top/maint.mk Fri Jul 29 22:39:31 2016 -0700 +++ b/top/maint.mk Tue Jul 26 16:28:16 2016 +0200 @@ -437,17 +437,26 @@ halt='the above files do not include <config.h>' \ $(_sc_search_regexp) +# Print each file name for which the first #include does not match +# $(config_h_header). Like grep -m 1, this only looks at the first match. +perl_config_h_first_ = \ + -e 'BEGIN {$$ret = 0}' \ + -e 'if (/^\# *include\b/) {' \ + -e ' if (not m{^\# *include $(config_h_header)}) {' \ + -e ' print "$$ARGV\n";' \ + -e ' $$ret = 1;' \ + -e ' }' \ + -e ' \# Move on to next file after first include' \ + -e ' close ARGV;' \ + -e '}' \ + -e 'END {exit $$ret}' + # You must include <config.h> before including any other header file. # This can possibly be via a package-specific header, if given by cfg.mk. sc_require_config_h_first: @if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \ - fail=0; \ - for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do \ - grep '^# *include\>' $$i | $(SED) 1q \ - | grep -E '^# *include $(config_h_header)' > /dev/null \ - || { echo $$i; fail=1; }; \ - done; \ - test $$fail = 1 && \ + files=$$($(VC_LIST_EXCEPT) | grep '\.c$$') && \ + perl -n $(perl_config_h_first_) $$files || \ { echo '$(ME): the above files include some other header' \ 'before <config.h>' 1>&2; exit 1; } || :; \ else :; \