Re: [commit 1/3] Import gnulib's update-copyright script

Pedro Alves
2012-04-18T12:34:15Z

On 01/04/2012 08:19 AM, Joel Brobecker wrote:

> gdb/ChangeLog:
>
> * gnulib/extra/update-copyright: New file, imported from gnulib.

It looks like this file was simply copied over instead of imported with
gnulib-tool? If I reimport the gnulib/ directory from scratch, we lose it:

[pedro@brno][~/gdb/mygit/src/gdb]
>mv gnulib/ gnulib.org
[pedro@brno][~/gdb/mygit/src/gdb]
>~/src/gnulib/gnulib/gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib --m4-base=gnulib/m4 --doc-base=doc --tests-base=tests --aux-dir=gnulib/extra --no-libtool --macro-prefix=gl --no-vc-files inttypes memmem
...
[pedro@brno][~/gdb/mygit/src/gdb]
>git status
# On branch gnulib_fixes
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: gnulib/Makefile.in
# deleted: gnulib/extra/update-copyright
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If I pull the "update-copyright" gnulib module in addition, with:

[pedro@brno][~/gdb/mygit/src/gdb]
>~/src/gnulib/gnulib/gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib --m4-base=gnulib/m4 --doc-base=doc --tests-base=tests --aux-dir=gnulib/extra --no-libtool --macro-prefix=gl --no-vc-files inttypes memmem update-copyright

then we get it back, but, we get an older 2010 version, thus we end up with a non-empty diff, see below.

It doesn't look like we miss anything important for us. I think I'll apply this,
and then update gnulib (using gnulib-tool) to the current upstream version.
Even if we do miss something with the rollback, we're not going to be running
the script in the middle of the year anyway. :-)

Okay in principle?

[pedro@brno][~/gdb/mygit/src/gdb]
>git status
...
#
# modified: gnulib/Makefile.am
# deleted: gnulib/Makefile.in
# modified: gnulib/extra/update-copyright
# modified: gnulib/m4/gnulib-cache.m4
# modified: gnulib/m4/gnulib-comp.m4

diff --git i/gdb/gnulib/Makefile.am w/gdb/gnulib/Makefile.am
index 1296c01..e14ea74 100644
--- i/gdb/gnulib/Makefile.am
+++ w/gdb/gnulib/Makefile.am
@@ -9,7 +9,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib --m4-base=gnulib/m4 --doc-base=doc --tests-base=tests --aux-dir=gnulib/extra --no-libtool --macro-prefix=gl --no-vc-files inttypes memmem
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib --m4-base=gnulib/m4 --doc-base=doc --tests-base=tests --aux-dir=gnulib/extra --no-libtool --macro-prefix=gl --no-vc-files inttypes memmem update-copyright

AUTOMAKE_OPTIONS = 1.5 gnits

@@ -299,6 +299,13 @@ EXTRA_DIST += string.in.h

## end gnulib module string

+## begin gnulib module update-copyright
+
+
+EXTRA_DIST += $(top_srcdir)/gnulib/extra/update-copyright
+
+## end gnulib module update-copyright
+
## begin gnulib module warn-on-use

BUILT_SOURCES += warn-on-use.h
diff --git i/gdb/gnulib/extra/update-copyright w/gdb/gnulib/extra/update-copyright
index 082b749..28ff441 100755
--- i/gdb/gnulib/extra/update-copyright
+++ w/gdb/gnulib/extra/update-copyright
@@ -3,9 +3,9 @@ eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
if 0;
# Update an FSF copyright year list to include the current year.

-my $VERSION = '2012-02-05.21:39'; # UTC
+my $VERSION = '2009-12-28.11:09'; # UTC

-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2010 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -22,16 +22,12 @@ my $VERSION = '2012-02-05.21:39'; # UTC

# Written by Jim Meyering and Joel E. Denny

-# The arguments to this script should be names of files that contain
-# copyright statements to be updated. The copyright holder's name
-# defaults to "Free Software Foundation, Inc." but may be changed to
-# any other name by using the "UPDATE_COPYRIGHT_HOLDER" environment
-# variable.
+# The arguments to this script should be names of files that contain FSF
+# copyright statements to be updated. For example, you might wish to
+# use the update-copyright target rule in maint.mk from gnulib's
+# maintainer-makefile module.
#
-# For example, you might wish to use the update-copyright target rule
-# in maint.mk from gnulib's maintainer-makefile module.
-#
-# Iff a copyright statement is recognized in a file and the final
+# Iff an FSF copyright statement is recognized in a file and the final
# year is not the current year, then the statement is updated for the
# new year and it is reformatted to:
#
@@ -40,10 +36,10 @@ my $VERSION = '2012-02-05.21:39'; # UTC
# 3. Expand copyright year intervals. (See "Environment variables"
# below.)
#
-# A warning is printed for every file for which no copyright
+# A warning is printed for every file for which no FSF copyright
# statement is recognized.
#
-# Each file's copyright statement must be formatted correctly in
+# Each file's FSF copyright statement must be formated correctly in
# order to be recognized. For example, each of these is fine:
#
# Copyright @copyright{} 1990-2005, 2007-2009 Free Software
@@ -63,17 +59,23 @@ my $VERSION = '2012-02-05.21:39'; # UTC
# ## Copyright (C) 1990-2005, 2007-2009 Free Software
# # Foundation, Inc.
#
-# However, any correctly formatted copyright statement following
-# a non-matching copyright statements would be recognized.
+# The following copyright statement is not recognized because the
+# copyright holder is not the FSF:
+#
+# Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
#
-# The exact conditions that a file's copyright statement must meet
+# However, any correctly formatted FSF copyright statement following
+# either of the previous two copyright statements would be recognized.
+#
+# The exact conditions that a file's FSF copyright statement must meet
# to be recognized are:
#
-# 1. It is the first copyright statement that meets all of the
-# following conditions. Subsequent copyright statements are
+# 1. It is the first FSF copyright statement that meets all of the
+# following conditions. Subsequent FSF copyright statements are
# ignored.
# 2. Its format is "Copyright (C)", then a list of copyright years,
-# and then the name of the copyright holder.
+# and then the name of the copyright holder, which is "Free
+# Software Foundation, Inc.".
# 3. The "(C)" takes one of the following forms or is omitted
# entirely:
#
@@ -82,9 +84,9 @@ my $VERSION = '2012-02-05.21:39'; # UTC
# C. @copyright{}
# D. &copy;
#
-# 4. The "Copyright" appears at the beginning of a line, except that it
+# 4. The "Copyright" appears at the beginning of a line except that it
# may be prefixed by any sequence (e.g., a comment) of no more than
-# 5 characters -- including white space.
+# 5 characters.
# 5. Iff such a prefix is present, the same prefix appears at the
# beginning of each remaining line within the FSF copyright
# statement. There is one exception in order to support C-style
@@ -110,23 +112,17 @@ my $VERSION = '2012-02-05.21:39'; # UTC
# interval (such as 1990-2008). If unset or set to 0, all existing
# copyright year intervals in a reformatted FSF copyright statement
# are expanded instead.
-# If UPDATE_COPYRIGHT_USE_INTERVALS=2, convert a sequence with gaps
-# to the minimal containing range. For example, convert
-# 2000, 2004-2007, 2009 to 2000-2009.
# 3. For testing purposes, you can set the assumed current year in
# UPDATE_COPYRIGHT_YEAR.
# 4. The default maximum line length for a copyright line is 72.
# Set UPDATE_COPYRIGHT_MAX_LINE_LENGTH to use a different length.
-# 5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other
-# than "Free Software Foundation, Inc.".

use strict;
use warnings;

my $copyright_re = 'Copyright';
my $circle_c_re = '(?:\([cC]\)|@copyright{}|&copy;)';
-my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER};
-$holder ||= 'Free Software Foundation, Inc.';
+my $holder = 'Free Software Foundation, Inc.';
my $prefix_max = 5;
my $margin = $ENV{UPDATE_COPYRIGHT_MAX_LINE_LENGTH};
!$margin || $margin !~ m/^\d+$/
@@ -224,10 +220,6 @@ if (defined $stmt_re)
}))
)+
/$1-$3/gx;
-
- # When it's 2, emit a single range encompassing all year numbers.
- $ENV{UPDATE_COPYRIGHT_USE_INTERVALS} == 2
- and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1-$2/;
}

# Format within margin.
@@ -260,7 +252,7 @@ if (defined $stmt_re)
}
else
{
- print STDERR "$ARGV: warning: copyright statement not found\n";
+ print STDERR "$ARGV: warning: FSF copyright statement not found\n";
}

# Local variables:
diff --git i/gdb/gnulib/m4/gnulib-cache.m4 w/gdb/gnulib/m4/gnulib-cache.m4
index de1c994..e557bb7 100644
--- i/gdb/gnulib/m4/gnulib-cache.m4
+++ w/gdb/gnulib/m4/gnulib-cache.m4
@@ -15,13 +15,14 @@

# Specification in the form of a command-line invocation:
-# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib --m4-base=gnulib/m4 --doc-base=doc --tests-base=tests --aux-dir=gnulib/extra --no-libtool --macro-prefix=gl --no-vc-files inttypes memmem
+# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib --m4-base=gnulib/m4 --doc-base=doc --tests-base=tests --aux-dir=gnulib/extra --no-libtool --macro-prefix=gl --no-vc-files inttypes memmem update-copyright

# Specification in the form of a few gnulib-tool.m4 macro invocations:
gl_LOCAL_DIR([])
gl_MODULES([
inttypes
memmem
+ update-copyright
])
gl_AVOID([])
gl_SOURCE_BASE([gnulib])
diff --git i/gdb/gnulib/m4/gnulib-comp.m4 w/gdb/gnulib/m4/gnulib-comp.m4
index abde4aa..582e35d 100644
--- i/gdb/gnulib/m4/gnulib-comp.m4
+++ w/gdb/gnulib/m4/gnulib-comp.m4
@@ -38,6 +38,7 @@ AC_DEFUN([gl_EARLY],
# Code from module stddef:
# Code from module stdint:
# Code from module string:
+ # Code from module update-copyright:
# Code from module warn-on-use:
# Code from module wchar:
])
@@ -80,6 +81,7 @@ AC_DEFUN([gl_INIT],
gl_STDINT_H
# Code from module string:
gl_HEADER_STRING_H
+ # Code from module update-copyright:
# Code from module warn-on-use:
# Code from module wchar:
gl_WCHAR_H
@@ -226,6 +228,7 @@ AC_DEFUN([gltests_LIBSOURCES], [
AC_DEFUN([gl_FILE_LIST], [
build-aux/arg-nonnull.h
build-aux/c++defs.h
+ build-aux/update-copyright
build-aux/warn-on-use.h
lib/dummy.c
lib/inttypes.in.h