[devscripts] 03/04: licensecheck: fix digia © and license extraction (Closes: #789074)

dod at debian.org dod at debian.org
Sun Jun 21 10:34:40 UTC 2015


This is an automated email from the git hooks/post-receive script.

dod pushed a commit to branch master
in repository devscripts.

commit bfbd20a0ec1ccc5464c8d82b106d3b30923bf1a0
Author: Dominique Dumont <dod at debian.org>
Date:   Sun Jun 21 12:30:41 2015 +0200

    licensecheck: fix digia © and license extraction (Closes: #789074)
    
    in Digia's case, the owner contains "or", so this keyword was removed
    from $copyright_disindicator_regex
    
    I've also fixed the license extraction from Digia file. This was broken
    in 2.15.4 and 2.15.3 (and possibly before, but I did not test)
    
    The fix consists in tweaking the regex and testing alternate versions
    before unique versions.
---
 debian/changelog               |  4 +++-
 scripts/licensecheck.pl        | 16 ++++++++--------
 test/licensecheck/lgpl-digia.c | 32 ++++++++++++++++++++++++++++++++
 test/test_licensecheck         |  1 +
 4 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 4edea9a..0404aa7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
 devscripts (2.15.6) UNRELEASED; urgency=low
 
-  * licensecheck: extract © owner when © and owners are specified on 2 lines.
+  * licensecheck:
+    * extract © owner when © and owners are specified on 2 lines.
+    * fix digia © and license extraction (Closes: #789074)
 
  -- Dominique Dumont <dod at debian.org>  Fri, 19 Jun 2015 07:42:55 +0200
 
diff --git a/scripts/licensecheck.pl b/scripts/licensecheck.pl
index b2e7250..fa8ec74 100755
--- a/scripts/licensecheck.pl
+++ b/scripts/licensecheck.pl
@@ -171,6 +171,7 @@ my $default_ignore_regex = qr!
 my $default_check_regex = '\.(c(c|pp|xx)?|h(h|pp|xx)?|f(77|90)?|go|groovy|scala|clj|p(l|m)|xs|sh|php|py(|x)|rb|java|js|vala|el|sc(i|e)|cs|pas|inc|dtd|xsl|mod|m|tex|mli?|(c|l)?hs)$';
 
 
+# also used to cleanup
 my $copyright_indicator_regex
     = qr!
          (?:copyright	# The full word
@@ -184,9 +185,9 @@ my $copyright_indicator_regex_with_capture = qr!$copyright_indicator_regex(?::\s
 
 my $copyright_disindicator_regex
     = qr!
-     \b(?:info(?:rmation)?	# Discussing copyright information
+	    \b(?:info(?:rmation)?	# Discussing copyright information
             |(notice|statement|claim|string)s?	# Discussing the notice
-            |or|is|in|to        # Part of a sentence
+            |is|in|to        # Part of a sentence
             |(holder|owner)s?       # Part of a sentence
             |ownership              # Part of a sentence
             )\b
@@ -391,10 +392,9 @@ sub parse_copyright {
 	#print "match against ->$data<-\n";
         if ($data =~ $copyright_indicator_regex_with_capture) {
             $match = $1;
-
             # Ignore lines matching "see foo for copyright information" etc.
             if ($match !~ $copyright_disindicator_regex) {
-                # De-cruft
+		# De-cruft
                 $match =~ s/([,.])?\s*$//;
                 $match =~ s/$copyright_indicator_regex//igx;
                 $match =~ s/^\s+//;
@@ -491,7 +491,9 @@ sub parselicense {
     my $extrainfo = "";
     my $license = "";
 
-    if ($licensetext =~ /version ([^, ]+?)[.,]? (?:\(?only\)?.? )?(?:of the GNU (Affero )?(Lesser |Library )?General Public License )?(as )?published by the Free Software Foundation/i or
+    if ($licensetext =~ /version ([^ ]+)(?: of the License)?,? or(?: \(at your option\))? version (\d(?:[.-]\d+)*)/) {
+	$gplver = " (v$1 or v$2)";
+    } elsif ($licensetext =~ /version ([^, ]+?)[.,]? (?:\(?only\)?.? )?(?:of the GNU (Affero )?(Lesser |Library )?General Public License )?(as )?published by the Free Software Foundation/i or
 	$licensetext =~ /GNU (?:Affero )?(?:Lesser |Library )?General Public License (?:as )?published by the Free Software Foundation[;,] version ([^, ]+?)[.,]? /i) {
 
 	$gplver = " (v$1)";
@@ -499,8 +501,6 @@ sub parselicense {
 	$gplver = " (v$1)";
     } elsif ($licensetext =~ /either version ([^ ]+)(?: of the License)?, or (?:\(at your option\) )?any later version/) {
 	$gplver = " (v$1 or later)";
-    } elsif ($licensetext =~ /either version ([^ ]+)(?: of the License)?, or \(at your option\) version (\d(?:[\.-]\d+)*)/) {
-	$gplver = " (v$1 or v$2)";
     } elsif ($licensetext =~ /GPL\sas\spublished\sby\sthe\sFree\sSoftware\sFoundation,\sversion\s([\d.]+)/i ) {
 	$gplver = " (v$1)";
     }
@@ -537,7 +537,7 @@ sub parselicense {
 	$license = "GPL$gplver$extrainfo $license";
     }
 
-    if ($licensetext =~ /is\s(?:distributed.*?terms|being\s+released).*?\b(L?GPL)\b/) {
+    if ($licensetext =~ /(?:is|may be)\s(?:(?:distributed|used).*?terms|being\s+released).*?\b(L?GPL)\b/) {
         my $v = $gplver || ' (unversioned/unknown version)';
         $license = "$1$v $license";
     }
diff --git a/test/licensecheck/lgpl-digia.c b/test/licensecheck/lgpl-digia.c
new file mode 100644
index 0000000..fbff4e7
--- /dev/null
+++ b/test/licensecheck/lgpl-digia.c
@@ -0,0 +1,32 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
diff --git a/test/test_licensecheck b/test/test_licensecheck
index a92d448..bc0d8d7 100755
--- a/test/test_licensecheck
+++ b/test/test_licensecheck
@@ -67,6 +67,7 @@ testLGPL() {
     license "lgpl-variation.c" "LGPL (v3 or later)"
     license "lgpl-no-version.h" "LGPL (unversioned/unknown version)"
     license2  "-m --copyright" "lgpl-big-blue.h" "LGPL (v2.1)	2000, 2010 IBM Corporation and others. All rights reserved"
+    license2  "-m --copyright" "lgpl-digia.c" "LGPL (v2.1 or v3)	2014 Digia Plc and/or its subsidiary(-ies)"
 }
 
 testGPL() {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git



More information about the devscripts-devel mailing list