On Tue, 2013-09-03 at 22:41 -0400, Peter Eisentraut wrote: > The maintainer-check target never really caught on, I think. Most > people don't run it, and that in turn annoys those who do. Also, it > doesn't provide much functionality. > > I propose that we get rid of it and roll the functionality into the > regular build.
Here is a patch for that. I also integrated Andrew's Perl version of duplicate_oids. The MSVC build needs to be updated separately, if they want to have that same functionality.
>From 1beea944acf339bc13a8759262a0c8c41fc1760c Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <pete...@gmx.net> Date: Wed, 11 Sep 2013 14:47:44 -0400 Subject: [PATCH 1/2] Replace duplicate_oids with Perl implementation It is more portable, more robust, and more readable. From: Andrew Dunstan <and...@dunslane.net> diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids index 82c12f3..f3d1136 100755 --- a/src/include/catalog/duplicate_oids +++ b/src/include/catalog/duplicate_oids @@ -1,30 +1,36 @@ -#!/bin/sh -# -# duplicate_oids -# -# src/include/catalog/duplicate_oids -# -# finds manually-assigned oids that are duplicated in the system tables. -# -# run this script in src/include/catalog. -# +#!/usr/bin/perl -# note: we exclude BKI_BOOTSTRAP relations since they are expected to have -# matching DATA lines in pg_class.h and pg_type.h +use strict; +use warnings; -cat pg_*.h toasting.h indexing.h | \ -egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \ -sed -n -e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \ - -e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \ - -e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ - -e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ - -e 's/^DECLARE_UNIQUE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ - -e 's/^DECLARE_TOAST([^,]*, *\([0-9][0-9]*\), *\([0-9][0-9]*\).*$/\1,\2/p' | \ -tr ',' '\n' | \ -sort -n | \ -uniq -d | \ -grep '.' +BEGIN +{ + @ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h)); +} -# nonzero exit code if lines were produced -[ $? -eq 1 ] -exit +my %oidcounts; + +while(<>) +{ + next if /^CATALOG\(.*BKI_BOOTSTRAP/; + next unless + /^DATA\(insert *OID *= *(\d+)/ || + /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/ || + /^CATALOG\([^,]*, *(\d+)/ || + /^DECLARE_INDEX\([^,]*, *(\d+)/ || + /^DECLARE_UNIQUE_INDEX\([^,]*, *(\d+)/ || + /^DECLARE_TOAST\([^,]*, *(\d+), *(\d+)/; + $oidcounts{$1}++; + $oidcounts{$2}++ if $2; +} + +my $found = 0; + +foreach my $oid (sort {$a <=> $b} keys %oidcounts) +{ + next unless $oidcounts{$oid} > 1; + $found = 1; + print "$oid\n"; +} + +exit $found; -- 1.8.4.rc3
>From 7474945c3f2ae3e0f1ff24654f8557106fa6d526 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <pete...@gmx.net> Date: Wed, 11 Sep 2013 14:34:28 -0400 Subject: [PATCH 2/2] Remove maintainer-check target, fold into normal build make maintainer-check was obscure and rarely called in practice, and many breakages were missed. Fold everything that make maintainer-check used to do into the normal build. Specifically: - Call duplicate_oids when genbki.pl is called. - Check for tabs in SGML files when the documentation is built. - Run msgfmt with the -c option during the regular build. Add an additional configure check to see whether we are using the GNU version. (make maintainer-check probably used to fail with non-GNU msgfmt.) Keep maintainer-check as around as phony target for the time being in case anyone is calling it. But it won't do anything anymore. diff --git a/GNUmakefile.in b/GNUmakefile.in index 17b1b3b..80116a1 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -70,8 +70,6 @@ $(call recurse,check-world,src/test src/pl src/interfaces/ecpg contrib,check) $(call recurse,installcheck-world,src/test src/pl src/interfaces/ecpg contrib,installcheck) -$(call recurse,maintainer-check,doc src config contrib) - GNUmakefile: GNUmakefile.in $(top_builddir)/config.status ./config.status $@ diff --git a/config/programs.m4 b/config/programs.m4 index c70a0c2..fd3a9a4 100644 --- a/config/programs.m4 +++ b/config/programs.m4 @@ -197,6 +197,11 @@ AC_DEFUN([PGAC_CHECK_GETTEXT], if test -z "$MSGFMT"; then AC_MSG_ERROR([msgfmt is required for NLS]) fi + AC_CACHE_CHECK([for msgfmt flags], pgac_cv_msgfmt_flags, +[if test x"$MSGFMT" != x"" && "$MSGFMT" --version 2>&1 | grep "GNU" >/dev/null; then + pgac_cv_msgfmt_flags=-c +fi]) + AC_SUBST(MSGFMT_FLAGS, $pgac_cv_msgfmt_flags) AC_CHECK_PROGS(MSGMERGE, msgmerge) AC_CHECK_PROGS(XGETTEXT, xgettext) ])# PGAC_CHECK_GETTEXT diff --git a/configure b/configure index c685ca3..db8e006 100755 --- a/configure +++ b/configure @@ -659,6 +659,7 @@ TCL_CONFIG_SH TCLSH XGETTEXT MSGMERGE +MSGFMT_FLAGS MSGFMT HAVE_POSIX_SIGNALS LDAP_LIBS_BE @@ -29171,6 +29172,19 @@ done $as_echo "$as_me: error: msgfmt is required for NLS" >&2;} { (exit 1); exit 1; }; } fi + { $as_echo "$as_me:$LINENO: checking for msgfmt flags" >&5 +$as_echo_n "checking for msgfmt flags... " >&6; } +if test "${pgac_cv_msgfmt_flags+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test x"$MSGFMT" != x"" && "$MSGFMT" --version 2>&1 | grep "GNU" >/dev/null; then + pgac_cv_msgfmt_flags=-c +fi +fi +{ $as_echo "$as_me:$LINENO: result: $pgac_cv_msgfmt_flags" >&5 +$as_echo "$pgac_cv_msgfmt_flags" >&6; } + MSGFMT_FLAGS=$pgac_cv_msgfmt_flags + for ac_prog in msgmerge do # Extract the first word of "$ac_prog", so it can be a program name with args. diff --git a/doc/Makefile b/doc/Makefile index 2e5e09e..aee3cc0 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -12,5 +12,5 @@ subdir = doc top_builddir = .. include $(top_builddir)/src/Makefile.global -all distprep html man install installdirs uninstall clean distclean maintainer-clean maintainer-check: +all distprep html man install installdirs uninstall clean distclean maintainer-clean: $(MAKE) -C src $@ diff --git a/doc/src/Makefile b/doc/src/Makefile index b0d4f1f..30d8838 100644 --- a/doc/src/Makefile +++ b/doc/src/Makefile @@ -4,5 +4,5 @@ subdir = doc/src top_builddir = ../.. include $(top_builddir)/src/Makefile.global -all distprep html man install installdirs uninstall clean distclean maintainer-clean maintainer-check: +all distprep html man install installdirs uninstall clean distclean maintainer-clean: $(MAKE) -C sgml $@ diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile index aeade13..50d9203 100644 --- a/doc/src/sgml/Makefile +++ b/doc/src/sgml/Makefile @@ -22,9 +22,9 @@ top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -all: html man +all: check-tabs html man -distprep: html distprep-man +distprep: check-tabs html distprep-man ifndef JADE @@ -301,7 +301,7 @@ MAKEINFO = makeinfo ## # Quick syntax check without style processing -check maintainer-check: postgres.sgml $(ALMOSTALLSGML) check-tabs +check: postgres.sgml $(ALMOSTALLSGML) check-tabs $(NSGMLS) $(SPFLAGS) $(SGMLINCLUDE) -s $< diff --git a/src/Makefile.global.in b/src/Makefile.global.in index bb732bb..96ef163 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -18,11 +18,11 @@ # # Meta configuration -standard_targets = all install installdirs uninstall distprep clean distclean maintainer-clean coverage check installcheck maintainer-check init-po update-po +standard_targets = all install installdirs uninstall distprep clean distclean maintainer-clean coverage check installcheck init-po update-po # these targets should recurse even into subdirectories not being built: standard_always_targets = distprep clean distclean maintainer-clean -.PHONY: $(standard_targets) install-strip html man installcheck-parallel +.PHONY: $(standard_targets) install-strip html man installcheck-parallel maintainer-check # make `all' the default target all: @@ -283,6 +283,7 @@ perl_embed_ldflags = @perl_embed_ldflags@ AWK = @AWK@ LN_S = @LN_S@ MSGFMT = @MSGFMT@ +MSGFMT_FLAGS = @MSGFMT_FLAGS@ MSGMERGE = @MSGMERGE@ PYTHON = @PYTHON@ TAR = @TAR@ diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile index c4d3f3c..eca15af 100644 --- a/src/backend/catalog/Makefile +++ b/src/backend/catalog/Makefile @@ -62,7 +62,8 @@ schemapg.h: postgres.bki ; # even in distribution tarballs. So this is cheating a bit, but it # will achieve the goal of updating the version number when it # changes. -postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure +postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids + cd $(top_srcdir)/src/include/catalog && ./duplicate_oids $(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS) .PHONY: install-data diff --git a/src/backend/common.mk b/src/backend/common.mk index 2e56151..5d599db 100644 --- a/src/backend/common.mk +++ b/src/backend/common.mk @@ -45,4 +45,4 @@ clean: clean-local clean-local: rm -f $(subsysfilename) $(OBJS) -$(call recurse,coverage maintainer-check) +$(call recurse,coverage) diff --git a/src/include/Makefile b/src/include/Makefile index c553e74..578a778 100644 --- a/src/include/Makefile +++ b/src/include/Makefile @@ -75,6 +75,3 @@ clean: distclean maintainer-clean: clean rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h - -maintainer-check: - cd catalog && ./duplicate_oids diff --git a/src/nls-global.mk b/src/nls-global.mk index 8f06e2d..da91c90 100644 --- a/src/nls-global.mk +++ b/src/nls-global.mk @@ -68,7 +68,7 @@ BACKEND_COMMON_GETTEXT_FLAGS = \ all-po: $(MO_FILES) %.mo: %.po - $(MSGFMT) -o $@ $< + $(MSGFMT) $(MSGFMT_FLAGS) -o $@ $< ifeq ($(word 1,$(GETTEXT_FILES)),+) po/$(CATALOG_NAME).pot: $(word 2, $(GETTEXT_FILES)) $(MAKEFILE_LIST) @@ -113,12 +113,6 @@ clean-po: rm -f po/$(CATALOG_NAME).pot -maintainer-check-po: $(ALL_PO_FILES) - for file in $^; do \ - $(MSGFMT) -c -v -o /dev/null $$file || exit 1; \ - done - - init-po: po/$(CATALOG_NAME).pot @@ -155,7 +149,6 @@ install: install-po installdirs: installdirs-po uninstall: uninstall-po clean distclean maintainer-clean: clean-po -maintainer-check: maintainer-check-po .PHONY: all-po install-po installdirs-po uninstall-po clean-po \ - maintainer-check-po init-po update-po + init-po update-po -- 1.8.4.rc3
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers