Syntax check for copyright statements.
authorBruno Haible <bruno@clisp.org>
Sun, 13 Nov 2011 18:14:12 +0000 (19:14 +0100)
committerBruno Haible <bruno@clisp.org>
Sun, 13 Nov 2011 18:14:12 +0000 (19:14 +0100)
* check-copyright: New file.
* Makefile (sc_check_copyright): New rule.

ChangeLog
Makefile
check-copyright [new file with mode: 0755]

index b6bf5b2..bde2a08 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-11-13  Bruno Haible  <bruno@clisp.org>
+
+       Syntax check for copyright statements.
+       * check-copyright: New file.
+       * Makefile (sc_check_copyright): New rule.
+
 2011-11-13  Simon Josefsson  <simon@josefsson.org>
 
        * build-aux/git-version-gen: Add --prefix to configure the tag
index cb1d7cd..af33ecc 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -117,6 +117,11 @@ sc_check_sym_list:
          <(sed -n /^_intprops_name/,/^_intprops_syms_re/p top/maint.mk \
             |sed '/^_/d;s/^  //;s/     *\\$$//')
 
+# Ensure that the copyright statements in files and in the module descriptions
+# are consistent.
+sc_check_copyright:
+       ./check-copyright
+
 # Regenerate some files that are stored in the repository.
 regen: MODULES.html
 
diff --git a/check-copyright b/check-copyright
new file mode 100755 (executable)
index 0000000..355d46e
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# Copyright (C) 2011 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
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+error=0
+for module in `./gnulib-tool --list`; do
+  module_license=`./gnulib-tool --extract-license $module`
+  if test "$module_license" = 'GPLed build tool'; then
+    module_license='GPL'
+  fi
+  for file in `./gnulib-tool --extract-filelist $module | grep '^\(lib\|build-aux\)/'`; do
+    if grep 'GNU General Public' $file > /dev/null; then
+      if grep 'version 3 or later' $file > /dev/null \
+         || grep 'either version 3' $file > /dev/null; then
+        file_license='GPL'
+      else
+        if grep 'version 2 or later' $file > /dev/null \
+           || grep 'either version 2' $file > /dev/null; then
+          file_license='GPLv2+'
+        else
+          file_license='GPL??'
+        fi
+      fi
+    else
+      if grep 'Lesser General' $file > /dev/null; then
+        if grep 'version 3 or later' $file > /dev/null \
+           || grep 'either version 3' $file > /dev/null; then
+          file_license='LGPL'
+        else
+          if grep 'version 2 or later' $file > /dev/null \
+             || grep 'version 2 of the License, or' $file > /dev/null \
+             || grep 'version 2\.1 of the License, or' $file > /dev/null; then
+            file_license='LGPLv2+'
+          else
+            file_license='LGPL??'
+          fi
+        fi
+      else
+        file_license='??'
+      fi
+    fi
+    if test "$file_license" != "$module_license"; then
+      if test $error = 0; then
+        echo "Module License File License   File name"
+        echo "============== ============== ====================================="
+      fi
+      printf '%-14s %-14s %s\n' "$module_license" "$file_license" "$file"
+      error=1
+    fi
+  done
+done
+exit $error