bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: maint.mk and NEWS footer


From: Jim Meyering
Subject: Re: maint.mk and NEWS footer
Date: Wed, 06 Jan 2010 20:39:36 +0100

Eric Blake wrote:
> I noticed that NEWS_hash in maint.mk doesn't work for m4.  Why?  Because m4
> uses long-hand copyright years, and lists enough years that the
> regex '^Copyright.*Free Software' no longer matches.  In other words, adding
> 2010 to the copyright changed the old news hash.
>
> For that matter, NEWS_hash is using 'sed | grep -v'.  It seeems like it should
> be possible to sanitize the copyright line(s) all within the sed, without
> having to use a secondary grep process.  But I'm not fluent enough with sed to
> quickly write a script that can sanitize both styles into a single 
> recognizable
> line:
>
> Copyright (C) 1992, 1993, 1994, 2004, 2005, 2006, 2007, 2008, 2009, 2010
> Free Software Foundation, Inc.
>
> Copyright (C) 2001-2010 Free Software Foundation, Inc.

This should do it

  perl -0777 -pe 's/^Copyright.+?Free\sSoftware\sFoundation,\sInc\.//ms'

Here's an untested patch:

diff --git a/top/maint.mk b/top/maint.mk
index 40f306e..6e472fe 100644
--- a/top/maint.mk
+++ b/top/maint.mk
@@ -550,7 +550,8 @@ sc_const_long_option:
 NEWS_hash =                                                            \
   $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p'             \
        $(srcdir)/NEWS                                                  \
-     | grep -v '^Copyright .*Free Software'                            \
+     | perl -0777 -pe                                                  \
+       's/^Copyright.+?Free\sSoftware\sFoundation,\sInc\.//ms'         \
      | md5sum -                                                                
\
      | sed 's/ .*//')

> Meanwhile, with the recent GFDL change [1], the coreutils NEWS hash also ended
> up with an alteration, detected by 'make syntax-check' (via
> sc_immutable_NEWS).  Therefore, how about this patch, which just ignores the
> NEWS footer altogether (to be applied before the amended coreutils patch, so
> that I'm only updating the coreutils hash once)?
>
> [1] http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/19496
>
> However, if this patch is applied, everyone using maint.mk will need to do a
> one-time run of 'make update-NEWS-hash' to update their saved hash the footer
> discarded.

IMHO, that's fine.

> Yes, this patch did not use portable spacing of the sed {} command, but anyone
> running GNUMakefile probably has a decent sed on their PATH and doesn't have 
> to
> obey the portability rule of putting { and } on their own lines.
>
> Comments?
...
>  NEWS_hash =                                                          \
> -  $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p'           \
> -       $(srcdir)/NEWS                                                        
> \
> -     | grep -v '^Copyright .*Free Software'                          \
> +  $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,/^Copyright/ { \
> +       /^Copyright/d; p }' $(srcdir)/NEWS                            \
>       | md5sum -
>       \
>       | sed 's/ .*//')

Requiring a decent sed isn't a big problem, but...
Did you consider using perl or awk?
For perl, this should work:

  $$(perl -ne '(/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/.../^Copyright/) && 
!/^Copyright/ and print' $(srcdir)/NEWS ...

Then I realized that the patch above would probably be enough.
The GFDL version number will not be changing often.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]