Hello community,

here is the log from the commit of package kdesdk4-scripts for openSUSE:Factory 
checked in at 2016-01-10 13:05:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdesdk4-scripts (Old)
 and      /work/SRC/openSUSE:Factory/.kdesdk4-scripts.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdesdk4-scripts"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdesdk4-scripts/kdesdk4-scripts.changes  
2015-11-15 12:34:22.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kdesdk4-scripts.new/kdesdk4-scripts.changes     
2016-01-10 13:05:04.000000000 +0100
@@ -1,0 +2,9 @@
+Sun Dec 13 13:17:11 UTC 2015 - [email protected]
+
+- Update to KDE Applications 15.12.0
+   * KDE Applications 15.12.0 
+   * https://www.kde.org/announcements/announce-applications-15.12.0.php
+   * boo#958887
+
+
+-------------------------------------------------------------------

Old:
----
  kde-dev-scripts-15.08.3.tar.xz

New:
----
  kde-dev-scripts-15.12.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdesdk4-scripts.spec ++++++
--- /var/tmp/diff_new_pack.8WKxbQ/_old  2016-01-10 13:05:05.000000000 +0100
+++ /var/tmp/diff_new_pack.8WKxbQ/_new  2016-01-10 13:05:05.000000000 +0100
@@ -24,7 +24,7 @@
 License:        GPL-2.0 and GFDL-1.2
 Group:          System/GUI/KDE
 Url:            http://www.kde.org/
-Version:        15.08.3
+Version:        15.12.0
 Release:        0
 Source0:        %{rname}-%{version}.tar.xz
 Patch0:         %{rname}-4.14.3-fix-bashisms.patch

++++++ kde-dev-scripts-15.08.3.tar.xz -> kde-dev-scripts-15.12.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/CMakeLists.txt 
new/kde-dev-scripts-15.12.0/CMakeLists.txt
--- old/kde-dev-scripts-15.08.3/CMakeLists.txt  2015-10-26 23:50:43.000000000 
+0100
+++ new/kde-dev-scripts-15.12.0/CMakeLists.txt  2015-10-26 23:52:03.000000000 
+0100
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8)
+cmake_minimum_required(VERSION 2.8.9)
 project(kde-dev-scripts)
 
 find_package(KF5DocTools)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/c++-copy-class-and-file 
new/kde-dev-scripts-15.12.0/c++-copy-class-and-file
--- old/kde-dev-scripts-15.08.3/c++-copy-class-and-file 2015-10-26 
23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/c++-copy-class-and-file 2015-10-26 
23:52:03.000000000 +0100
@@ -28,8 +28,15 @@
 fi
 
 # Update build system
-perl -pi -e '$_ .= "$1'$newfile.cpp'\n" if (m/^(\s*)'$oldfile'\.cpp/)' 
CMakeLists.txt
-perl -pi -e '$_ .= "$1'$newfile.h'\n" if (m/^(\s*)'$oldfile'\.h/)' 
CMakeLists.txt
+if test -f CMakeLists.txt; then
+    buildsystemfile=CMakeLists.txt
+else
+    buildsystemfile=`ls -1 *.pro 2>/dev/null | head -n 1`
+fi
+if test -n "$buildsystemfile"; then
+    perl -pi -e '$_ .= "$1'$newfile.cpp'\n" if (m/^(\s*)'$oldfile'\.cpp/)' 
$buildsystemfile
+    perl -pi -e '$_ .= "$1'$newfile.h'\n" if (m/^(\s*)'$oldfile'\.h/)' 
$buildsystemfile
+fi
 
 # Rename class
 perl -pi -e "s/$oldname/$newname/g" $newfile.h $newfile.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/c++-rename-class-and-file 
new/kde-dev-scripts-15.12.0/c++-rename-class-and-file
--- old/kde-dev-scripts-15.08.3/c++-rename-class-and-file       2015-10-26 
23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/c++-rename-class-and-file       2015-10-26 
23:52:03.000000000 +0100
@@ -12,7 +12,9 @@
 newfile=`echo $newname | tr A-Z a-z`
 
 if [ ! -f $newfile.h ]; then
-    git mv $oldfile.h $newfile.h
+    if [ -f ${oldfile}.h ]; then
+        git mv $oldfile.h $newfile.h
+    fi
     git mv $oldfile.cpp $newfile.cpp
     if [ -f ${oldfile}_p.h ]; then
         git mv ${oldfile}_p.h ${newfile}_p.h
@@ -20,10 +22,20 @@
 fi
 
 # Update buildsystem
-perl -pi -e "s/$oldfile\.cpp/$newfile.cpp/" CMakeLists.txt
+if test -f CMakeLists.txt; then
+    buildsystemfile=CMakeLists.txt
+else
+    buildsystemfile=`ls -1 *.pro 2>/dev/null | head -n 1`
+fi
+if test -n "$buildsystemfile"; then
+    perl -pi -e 
"s/\b$oldfile\.cpp/\b$newfile.cpp/;s/\b$oldfile\.h/$newfile\.h/" 
$buildsystemfile
+fi
 
 # Rename class
-perl -pi -e "s/$oldname/$newname/g" $newfile.h $newfile.cpp
+if [ -f ${newfile}.h ]; then
+    perl -pi -e "s/$oldname/$newname/g" ${newfile}.h
+fi
+perl -pi -e "s/$oldname/$newname/g" $newfile.cpp
 if [ -f ${newfile}_p.h ]; then
     perl -pi -e "s/$oldname/$newname/g" ${newfile}_p.h
 fi
@@ -32,9 +44,13 @@
 newinclguard=`echo $newname | tr a-z A-Z`
 
 # Update include guard
-perl -pi -e "s/$oldinclguard/$newinclguard/g" $newfile.h
+if [ -f ${newfile}.h ]; then
+    perl -pi -e "s/$oldinclguard/$newinclguard/g" $newfile.h
+fi
+if [ -f ${newfile}_p.h ]; then
+    perl -pi -e "s/$oldinclguard/$newinclguard/g" ${newfile}_p.h
+fi
 
 # Update include in cpp file
-perl -pi -e 's/\b'$oldfile'\.h/'$newfile'\.h/' $newfile.cpp
-
+perl -pi -e 
's/\b'$oldfile'\.h/'$newfile'\.h/;s/\b'$oldfile'_p\.h/'$newfile'_p\.h/' 
$newfile.cpp
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/createtarball/config.ini 
new/kde-dev-scripts-15.12.0/createtarball/config.ini
--- old/kde-dev-scripts-15.08.3/createtarball/config.ini        2015-10-26 
23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/createtarball/config.ini        2015-10-26 
23:52:03.000000000 +0100
@@ -13,15 +13,6 @@
 docs         = no
 translations = no
 
-[rsibreak]
-mainmodule   = extragear
-submodule    = utils
-addPo        = plasma_applet_rsibreak
-remove       = makechangelog icons/artwork-v?.tar.gz rsibreak.kdevelop
-kde_release  = no
-version      = 0.11
-docs         = yes
-
 [phonon]
 mainmodule  = kdesupport
 submodule   = phonon
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/cxxmetric 
new/kde-dev-scripts-15.12.0/cxxmetric
--- old/kde-dev-scripts-15.08.3/cxxmetric       2015-10-26 23:50:43.000000000 
+0100
+++ new/kde-dev-scripts-15.12.0/cxxmetric       2015-10-26 23:52:03.000000000 
+0100
@@ -170,7 +170,9 @@
   @files = buildFileList(".");
 }
 else {
-  @files = @ARGV;
+    foreach my $arg ( @ARGV ) {
+        push @files, buildFileList($arg);
+    }
 }
 
 foreach my $file ( @files ) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kde-dev-scripts-15.08.3/kf5/add_missing_kpart_include.pl 
new/kde-dev-scripts-15.12.0/kf5/add_missing_kpart_include.pl
--- old/kde-dev-scripts-15.08.3/kf5/add_missing_kpart_include.pl        
2015-10-26 23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/kf5/add_missing_kpart_include.pl        
2015-10-26 23:52:03.000000000 +0100
@@ -1,22 +1,74 @@
 #!/usr/bin/perl -w
 
+# KParts was cleaned up to have one include file for each class, while in 
kdelibs4 #include <kparts/part.h> included many things
+# Usage: add_missing_kpart_include.pl *.h *.cpp
+# Recursive usage: find -iname "*.cpp" -o -iname "*.h" |xargs 
kde-dev-scripts/kf5/add_missing_kpart_include.pl
+#
 # Laurent Montel <[email protected]> (2014)
-# now we have a include for each kpart and not just #include <kparts/part.h>
-# find -iname "*.cpp" -o -iname "*.h" |xargs 
kde-dev-scripts/kf5/add_missing_kpart_include.pl
+# David Faure <[email protected]> (2014)
 
 use strict;
 use File::Basename;
 use lib dirname($0);
 use functionUtilkde;
 
+my @classes = (
+        'BrowserArguments',
+        'BrowserExtension',
+        'BrowserHostExtension',
+        'BrowserInterface',
+        'BrowserOpenOrSaveQuestion',
+        'BrowserRun',
+        'Event',
+        'FileInfoExtension',
+        'GUIActivateEvent',
+        'HistoryProvider',
+        'HtmlExtension',
+        'HtmlSettingsInterface',
+        'ListingFilterExtension',
+        'ListingNotificationExtension',
+        'LiveConnectExtension',
+        'MainWindow',
+        'OpenUrlArguments',
+        'OpenUrlEvent',
+        'Part',
+        'PartActivateEvent',
+        'PartBase',
+        'PartManager',
+        'PartSelectEvent',
+        'Plugin',
+        'ReadOnlyPart',
+        'ReadWritePart',
+        'ScriptableExtension',
+        'SelectorInterface',
+        'StatusBarExtension',
+        'TextExtension',
+        'WindowArgs'
+);
+
 foreach my $file (@ARGV) {
 
+    my %includesToBeAdded = ();
+    my %fwdDecls = ();
+    my $wasIncludingPartH = 0;
     my $modified;
     open(my $FILE, "<", $file) or warn "We can't open file $file:$!\n";
     my @l = map {
         my $orig = $_;
-        if (/public KParts::ReadOnlyPart/) {
-           $modified = 1;
+        foreach my $class (@classes) {
+            if (/class $class;/) {
+                $fwdDecls{$class} = 1;
+            }
+            if (/KParts::$class/ && !defined $fwdDecls{$class}) {
+                # include the necessary header, unless we saw a fwd decl
+                $includesToBeAdded{"KParts/$class"} = 1;
+                $modified = 1;
+            }
+        }
+        # get rid of lowercase includes, to avoid duplicates
+        if (/^#include .kparts\/(\w+).h/) {
+            $wasIncludingPartH = 1 if ($1 eq 'part');
+            $_ = "";
         }
         $modified ||= $orig ne $_;
         $_;
@@ -26,7 +78,11 @@
         open (my $OUT, ">", $file);
         print $OUT @l;
         close ($OUT);
-        functionUtilkde::addIncludeInFile($file, "kparts/readonlypart.h");
+        if ($wasIncludingPartH) {
+            foreach my $include (keys %includesToBeAdded) {
+                functionUtilkde::addIncludeInFile($file, $include);
+            }
+        }
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/kf5/convert-kcmdlineargs.pl 
new/kde-dev-scripts-15.12.0/kf5/convert-kcmdlineargs.pl
--- old/kde-dev-scripts-15.08.3/kf5/convert-kcmdlineargs.pl     2015-10-26 
23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/kf5/convert-kcmdlineargs.pl     2015-10-26 
23:52:03.000000000 +0100
@@ -81,7 +81,7 @@
               $_ = "";
             } else {
               if (defined $port_kapplicationAndK4AboutData) {
-                 $_ .= "    QApplication app(argc, argv); // TODO: move this 
to before the KAboutData initialization\n";
+                 $_ .= "    QApplication app(argc, argv); // PORTING SCRIPT: 
move this to before the KAboutData initialization\n";
                  $_ .= "    KAboutData::setApplicationData(aboutData);\n";
               }
               $_ .= "    parser.addVersionOption();\n";
@@ -90,7 +90,7 @@
                 $_ .= "    //PORTING SCRIPT: adapt aboutdata variable if 
necessary\n";
                 $_ .= "    aboutData.setupCommandLine(&parser);\n";
               }
-              $_ .= "    parser.process(app);\n";
+              $_ .= "    parser.process(app); // PORTING SCRIPT: move this to 
after any parser.addOption\n";
               if ( defined $use_aboutdata) {
                 $_ .= "    aboutData.processCommandLine(&parser);\n";
               }
@@ -153,7 +153,7 @@
                }
             } else {
               if (defined $port_kapplicationAndK4AboutData) {
-                 $_ .= "    QApplication app(argc, argv);\n";
+                 $_ .= "    QApplication app(argc, argv); // PORTING SCRIPT: 
move this to before the KAboutData initialization\n";
                  $_ .= "    QCommandLineParser parser;\n";
                  $_ .= "    KAboutData::setApplicationData(aboutData);\n";
               }
@@ -163,7 +163,7 @@
                 $_ .= "    //PORTING SCRIPT: adapt aboutdata variable if 
necessary\n";
                 $_ .= "    aboutData.setupCommandLine(&parser);\n";
               }
-              $_ .= "    parser.process(app);\n";
+              $_ .= "    parser.process(app); // PORTING SCRIPT: move this to 
after any parser.addOption\n";
               if ( defined $use_aboutdata) {
                 $_ .= "    aboutData.processCommandLine(&parser);\n";
               }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/kf5/convert-kmimetype.pl 
new/kde-dev-scripts-15.12.0/kf5/convert-kmimetype.pl
--- old/kde-dev-scripts-15.08.3/kf5/convert-kmimetype.pl        2015-10-26 
23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/kf5/convert-kmimetype.pl        2015-10-26 
23:52:03.000000000 +0100
@@ -140,7 +140,7 @@
 
         
s/KMimeType::findByPath\s*\((.*),\s*0\s*,\s*true\s*\)/db.mimeTypeForFile($1, 
QMimeDatabase::MatchExtension)/;
         s/KMimeType::findByPath\s*\(/db.mimeTypeForFile(/;
-        s/KMimeType::findByNameAndContent\s*\(/db.mimeTypeForNameAndData(/;
+        s/KMimeType::findByNameAndContent\s*\(/db.mimeTypeForFileNameAndData(/;
         
s/KMimeType::findByFileContent\s*\(\s*(\w+)\s*\)/db.mimeTypeForFile($1, 
QMimeDatabase::MatchContent)/;
         s/(\w+)->name() == KMimeType::defaultMimeType/$1.isDefault/;
         s/allParentMimeTypes/allAncestors/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/makeobj 
new/kde-dev-scripts-15.12.0/makeobj
--- old/kde-dev-scripts-15.08.3/makeobj 2015-10-26 23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/makeobj 2015-10-26 23:52:03.000000000 +0100
@@ -111,10 +111,14 @@
 cwd=$PWD
 
 # No CMakeList and no Makefile (and no .pro file either)? Maybe we need to go 
up then.
-while test ! -f CMakeLists.txt && test ! -f Makefile; do
+while test ! -f CMakeLists.txt && test ! -f Makefile ; do
     if test "`ls -1 *.pro 2>/dev/null`" && test -n "`ls -1 ../*.pro 
2>/dev/null`"; then
         break;
     fi
+    if test -f build.ninja; then
+        file=build.ninja
+        break;
+    fi
     dir="$dir/`basename \"$PWD\"`"
     cd ..
     if test X"$PWD" = X"/"; then
@@ -173,12 +177,23 @@
                 sed -e s,%ARCH%,\"$_arch\",g | \
                 sed -e s,%OS%,\"$_os\",g`"
       pwd="`echo $PWD | sed -e \"$OBJ_REPLACEMENT\"`"
+      if test ! -e $pwd; then
+         echo "no objdir found. Tried $pwd"
+         exit 1
+      fi
       if test ! -f "$pwd/$file"; then
-         # No objdir found. But if "make" will work in srcdir, then go ahead; 
might be a non-kde project.
+         # ninja requires building from the toplevel
+         cd -- "$pwd"
+         findup build.ninja
+         if test -n "$_hit"; then
+             pwd=`dirname $_hit`
+             file=build.ninja
+         fi
+         # No objdir with a Makefile found. But if "make" will work in srcdir, 
then go ahead; might be a non-kde project.
          test -f "$pwd/GNUmakefile" && file=GNUmakefile
          test -f "$pwd/makefile" && file=makefile
          if ! test -f "$pwd/$file"; then
-           echo "no objdir found. Tried $pwd"
+           echo "no Makefile or build.ninja found in $pwd"
            exit 1
          fi
       fi
@@ -199,13 +214,17 @@
     fi
     if test $using_new_unsermake -eq 1; then
         MAKE="`command -v unsermake`"
-       if test ! -x "$MAKE"; then
-               echo 'Makefile was created with unsermake, but there'
-               echo 'is no unsermake in $PATH'
-               exit 1
-       fi
-    else
+        if test ! -x "$MAKE"; then
+            echo 'Makefile was created with unsermake, but there'
+            echo 'is no unsermake in $PATH'
+            exit 1
+        fi
+    elif test -f "Makefile"; then
         MAKE="$GMAKE"
+    elif test -f "build.ninja"; then
+        MAKE="ninja"
+    else
+        echo "No Makefile or build.ninja found in $PWD!"
     fi
 fi
 LANG=en_US.UTF-8 $MAKE "${args[@]}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/qt4/functionUtilkde.pm 
new/kde-dev-scripts-15.12.0/qt4/functionUtilkde.pm
--- old/kde-dev-scripts-15.08.3/qt4/functionUtilkde.pm  2015-10-26 
23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/qt4/functionUtilkde.pm  2015-10-26 
23:52:03.000000000 +0100
@@ -15,6 +15,16 @@
        warn "files to commit: $@\n";
 }
 
+sub selectHeaderFile
+{
+    my ($newFile) = @_;
+    return 1 if -d $newFile;
+    if ( $newFile =~ /(\.h$)/ ) {
+       return 0;
+    }
+    return 1;
+}
+
 sub excludeFile
 {
     my ($newFile) = @_;
@@ -76,23 +86,33 @@
     return $result;
 }
 
-sub addIncludeInFile
+sub addAfterAllIncludes($$)
 {
-   local *F;
-   my ($file, $includefile) = @_;
-   open F, "+<", $file or do { print STDOUT "open($file) failed : \"$!\"\n"; 
next };
-   my $str = join '', <F>;
-   if( $str !~ /#include <$includefile>/ ) {
-    # Add the include after all others
-    if (!($str =~ s!(#include <.*#include <[^\n]*)!$1\n#include 
<$includefile>!smig)) {
-       # This failed, maybe there is only one include
-       $str =~ s!(#include <[^\n]*)!$1\n#include <$includefile>!smig;
+    local *F;
+    my ( $file, $theline ) = @_;
+    open F, "+<", $file or do { print STDOUT "open($file) failed : \"$!\"\n"; 
next };
+    my $str = join '', <F>;
+    if ( $str !~ /$theline/ ) {
+
+        # Add the include after all others
+        if ( !( $str =~ s!(#include <.*#include <[^\r\n]*)!$1\n$theline!smig ) 
) {
+
+            # This failed, maybe there is only one include
+            if ( ! ($str =~ s!(#include <[^\r\n]*)!$1\n$theline!smig ) ) {
+                warn "Couldn't add $theline\n in $file\n";
+            }
+        }
+        seek F, 0, 0;
+        print F $str;
+        truncate F, tell(F);
     }
-    seek F, 0, 0;
-    print F $str;
-    truncate F, tell(F);
-   }
-   close F;
+    close F;
+}
+
+sub addIncludeInFile($$)
+{
+    my ( $file, $includefile ) = @_;
+    addAfterAllIncludes($file, "#include <$includefile>");
 }
 
 sub removeIncludeInFile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/qt4/rename-private.pl 
new/kde-dev-scripts-15.12.0/qt4/rename-private.pl
--- old/kde-dev-scripts-15.08.3/qt4/rename-private.pl   1970-01-01 
01:00:00.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/qt4/rename-private.pl   2015-10-26 
23:52:03.000000000 +0100
@@ -0,0 +1,71 @@
+#!/usr/bin/perl -w
+
+# Usage: rename-private.pl
+
+use strict;
+use File::Basename;
+use lib dirname( $0 );
+use functionUtilkde;
+
+open(my $F, '-|', qw(find . -type f));
+my $file;
+while ($file = <$F>) {
+    chomp $file;
+    next if functionUtilkde::selectHeaderFile( $file);
+    $file =~ s/\.h$//;
+
+    open(my $HEADER, "$file.h") or warn "Unable to open file $file.h:$!\n";
+    my $modified;
+    my $classname;
+    my $fwddecl;
+    my @l = map {
+       my $orig = $_;
+       if (/^class [A-Z_]+_EXPORT (\w+)/) {
+           $classname = $1;
+       }
+       if (defined $classname && /class Private;/) {
+           $_ = "";
+           $fwddecl = "class ${classname}Private;";
+       } elsif (defined $classname && /\bPrivate\s*/) {
+           s/Private/${classname}Private/;
+       }
+
+       $modified ||= $orig ne $_;
+       $_;
+    } <$HEADER>;
+    close $HEADER;
+
+    if ($modified) {
+       open(my $OUT, ">$file.h");
+       print $OUT @l;
+       close $OUT;
+    }
+
+    if (defined $fwddecl) {
+       functionUtilkde::addAfterAllIncludes("$file.h", $fwddecl);
+    }
+
+    if (defined $classname) {
+
+       open(my $IMPL, "$file.cpp") or warn "Unable to open file 
$file.cpp:$!\n";
+
+       undef $modified;
+
+       @l = map {
+          my $orig = $_;
+
+          s/::Private/Private/g;
+          s/\bPrivate/${classname}Private/g;
+
+          $modified ||= $orig ne $_;
+          $_;
+       } <$IMPL>;
+       close $IMPL;
+
+       if ($modified) {
+           open(my $OUT, ">$file.cpp");
+           print $OUT @l;
+           close $OUT;
+       }
+   }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/relicensecheck.pl 
new/kde-dev-scripts-15.12.0/relicensecheck.pl
--- old/kde-dev-scripts-15.08.3/relicensecheck.pl       2015-10-26 
23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/relicensecheck.pl       2015-10-26 
23:52:03.000000000 +0100
@@ -5,6 +5,8 @@
 
 use strict;
 
+use List::Util qw(any);
+
 ### Please add your KDE (svn/git) account name in *alphabetical* order to the 
list
 ### below, then answer the following questions:
 ###
@@ -26,229 +28,284 @@
 ### For more information, see http://techbase.kde.org/Projects/KDE_Relicensing
 
 my %license_table = (
-    'afiestas'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
-    'hubner'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'aacid'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'abryant'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'adawit'        => ['gplv23', 'lgplv23',                      '+eV' ],
+    'ademko'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'adiaferia'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'afiestas'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'alexmerry'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'alund'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'amantia'       => ['gplv23', 'lgplv23'                     , '+eV' ],
     'amth'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'antlarr'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'apol'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'arnolddumas'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'asensi'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'aseigo'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'asserhal'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'beaulen'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'bensi'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'beschow'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'bgupta'        => [                     'gplv2+', 'lgplv2+', '+eV' ],
     'bieker'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'bischoff'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'bks'           => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'bport'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'bram'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'broulik'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'bruggie'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'bshah'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'capel'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'carewolf'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'cfeck'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'cgiboudeaux'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'chani'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'chehrlic'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'clee'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'coates'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'codrea'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
     'cordlandwehr'  => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'craig'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'cramblitt'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'cschumac'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'ctennis'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'cullmann'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
-    'danimo'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'dakon'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'danimo'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'dannya'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'deller'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
     'denis'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'deniskuplyakov'=> ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'dfaure'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'dhaumann'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'dherberth'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'domi'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'djarvie'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
     'dyp'           => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'egorov'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'ehamberg'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'eliasp'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'epignet'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'ereslibre'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'eros'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'ervin'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'eschepers'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+',       ],
     'eva'           => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'fabiank'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'fawcett'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'fengchao'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'fischer'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'fizz'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'flocati'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'fujioka'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'fux'           => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'garbanzo'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'gateau'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'geralds'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'giannaros'     => ['gplv23', 'lgplv23'                             ],
+    'graesslin'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'granroth'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'gregormi'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'groszdaniel'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'guymaurel'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'haeber'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'haeckel'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+',       ],
+    'harris'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'hausmann'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'hdhoang'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'hindenburg'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'hoelzer'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
-    'garbanzo'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
-    'giannaros'     => ['gplv23', 'lgplv23'                             ],
-    'graesslin'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
-    'groszdaniel'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'hrvojes'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'hubner'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'huerlimann'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'huftis'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'ilic'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'ivan'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'jbrouault'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'jehrichs'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'jekyllwu'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'jlee'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'johnflux'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'jones'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'jowenn'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'jriddell'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'jschroeder'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'jtamate'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'kainhofe'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'kfunk'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'kloecker'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'knight'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'knauss'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+ev' ],
     'kossebau'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'kylafas'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'lbeltrame'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'leinir'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'leonh'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'leonhard'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'lilachaze'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'lliehu'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'ltoscano'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'lueck'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'lvsouza'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'lypanov'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'majewsky'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'maragato '     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mardelle'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'martyn'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mbritton'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'mbroadst'      => ['gplv23', 'lgplv23'                     , '+eV' ],
+    'mecir'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'michaelhowell' => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'michalhumpula' => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'milliams'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mirko'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mkoller'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mlaurent'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mludwig'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'mmrozowski'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mpyne'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'mrphantom'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mssola'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'mueller'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
     'mwolff'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'nalvarez'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'narvaez'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'nhasan'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'nikitas'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'nsams'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
     'ogoffart'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'pdamsten'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'pgquiles'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'pino'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'pletourn'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'pupeno'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'raabe'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'rahn'          => ['gplv23', 'lgplv23'                     , '+eV' ],
     'ralfjung'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'ralsina'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'reiher'        => ['gplv23', 'lgplv23',                      '+eV' ],
+    'rich'          => ['gplv23', 'lgplv23'                     , '+eV' ],
     'richih'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'rkcosta'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'robbilla'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'romariorios'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'rpreukschas'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'rthomsen'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'ruedigergad'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'sanders'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'sandsmark'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'sars'          => ['gplv23', 'lgplv23',                      '+eV' ],
+    'saschpe'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'savernik'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'scarpino'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'schmeisser'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'schroder'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'schwarzer'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'sebas'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'skelly'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'smartins'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'sping'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'staikos'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'staniek'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'sune'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'taj'           => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
     'tenharmsel'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'teske'         => ['gplv23', 'lgplv23',                            ],
     'tfry'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'thiago'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'tmcguire'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'tnyblom'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'treat'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'turbov'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'uga'           => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'uwolfer'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'vandenoever'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'vhanda'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
-    'vkrause'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
+    'vkrause'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'vonreth'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'vrusu'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'waba'          => ['gplv23', 'lgplv23',                      '+eV' ],
     'wheeler'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+'        ],
     'whiting'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'willy'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'woebbe'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'wstephens'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
     'zack'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
-    'zecke'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ],
+    'zecke'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+', '+eV' ]
+);
 
+my %old_license_table = (
     ### below is the older table -- from before we offered the +eV option.
     ### This means that in theory some of these contributors might accept
     ### to add the +eV if we ask them nicely. If they refuse, move the line
     ### to the above part of the table so that we don't ask them again.
     'adridg'        => ['gplv23', 'lgplv23'                      ],
     'ahartmetz'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'amantia'       => ['gplv23', 'lgplv23'                      ],
     'annma'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'apaku'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'arendjr'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'aumuell'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
+    'bbroeksema'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'binner'        => ['gplv23', 'lgplv23'                      ],
     'bjacob'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'bmeyer'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'boemann'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'borgese'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'bram'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'braxton'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'bvirlet'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'cartman'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'cconnell'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'chani'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'charles'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'chehrlic'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'cies'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'clee'          => ['gplv23', 'lgplv23'                      ],
     'cniehaus'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'codrea'        => [                     'gplv2+', 'lgplv2+' ],
     'coolo'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'craig'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'cschlaeg'      => ['gplv23', 'lgplv23'                      ],
-    'cschumac'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'dannya'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'dimsuz'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'djurban'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'dmacvicar'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'dymo'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'edghill'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'emmott'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'epignet'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'ereslibre'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'espen'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'fela'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'fizz'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'fredrik'       => ['gplv23', 'lgplv23'                      ],
     'gladhorn'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'gogolok'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'goossens'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'granroth'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'gyurco'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'hausmann'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'harald'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'harris'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'hedlund'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'helio'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'howells'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'hschaefer'     => ['gplv23'                                 ],
-    'huerlimann'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'ilic'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'ingwa'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'isaac'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'jens'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'jlayt'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'johach'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'johnflux'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'jriddell'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'rodda'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'raggi'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'rjarosz'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'kainhofe'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'kleag'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'knight'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'krake'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'laidig'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'lunakl'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'lure'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'lypanov'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'marchand'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'martyn'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mattr'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'mbroadst'      => ['gplv23', 'lgplv23'                      ],
     'mcamen'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'menard'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mfranz'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mhunter'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'micron'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'milliams'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mkretz'        => ['gplv23', 'lgplv23'                      ],
     'mlarouche'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mm'            => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mrudolf'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'msoeken'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mstocker'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'mueller'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mutz'          => [                     'gplv2+', 'lgplv2+' ],
     'mvaldenegro'   => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'mwoehlke'      => ['gplv23', 'lgplv23'                      ],
     'nielsslot'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'ogoffart'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'okellogg'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'onurf'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'orzel'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
@@ -262,39 +319,49 @@
     'putzer'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'pvicente'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'quique'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'raabe'         => ['gplv23', 'lgplv23'                      ],
-    'rahn'          => ['gplv23', 'lgplv23'                      ],
-    'ralsina'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'rich'          => ['gplv23', 'lgplv23'                      ],
+    'raggi'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'rempt'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
+    'rjarosz'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
+    'rodda'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'roffet'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'rohanpm'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'schmeisser'    => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'sebsauer'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'shaforo'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'shipley'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'silberstorff'  => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'thiago'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'thorbenk'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'tilladam'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'toma'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'tokoe'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'treat'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
+    'toma'          => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'troeder'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'trueg'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'uwolfer'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
+    'trueg'         => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ], # NOTE: 
except k3b
     'wgreven'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'winterz'       => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
-    'wstephens'     => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'zachmann'      => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ],
     'zander'        => ['gplv23', 'lgplv23', 'gplv2+', 'lgplv2+' ]
-    # Do not add anything here. Use the first half of the table.
+    # Do not add anything here. Use license_table instead.
 );
 
 my %secondary_mail_addresses = (
     '[email protected]' => 'apol',
+    '[email protected]' => 'asensi',
     '[email protected]' => 'schmidt-domine',
     '[email protected]' => 'schmidt-domine',
+    '[email protected]' => 'alexmerry',
+    '[email protected]' => 'ikomissarov',
+    '[email protected]' => 'aacid',
+    '[email protected]' => 'guymaurel',
+    '[email protected]' => 'sune',
+    '[email protected]' => 'cfeck',
+    '[email protected]' => 'lvsouza',
+    '[email protected]' => 'dfaure',
+    '[email protected]' => 'ervin',
+    '[email protected]' => 'jlayt',
+    '[email protected]' => 'nlecureuil',
+    '[email protected]' => 'rkcosta',
+    '[email protected]' => 'bero',
+    '[email protected]' => 'valir',
+    '[email protected]' => 'domi'
 );
 
 my %ruletable;
@@ -302,6 +369,11 @@
 my %whitelist;
 my @blacklist_revs;
 
+foreach my $who (keys %old_license_table) {
+    die "$who in both tables" if defined $license_table{$who};
+    $license_table{$who} = $old_license_table{$who};
+}
+
 foreach my $who (keys %license_table) {
     foreach my $license(@{$license_table{$who}}) {
         $ruletable{$license}->{$who} = 1;
@@ -324,20 +396,35 @@
 defined $accountfile or die "Please write the path to kde-common/accounts in 
$configfile";
 
 my %authors = ();
-if ($accountfile) {
+my %authornames = ();
+sub parseAccountsFile($)
+{
+    my ($accountfile) = @_;
     open(ACCOUNTS, $accountfile) || die "Account file not found: $accountfile";
     while (<ACCOUNTS>) {
         # The format is nick name email.
         if (/([^\s]*)\s+([^\s].*[^\s])\s+([^\s]+)/) {
             $authors{$3} = "$1";
+            $authornames{$1} = "$2";
         }
         #elsif (/([^\s]*)\s+([^\s]*)/) {
         #    $authors{$1} = $2;
         #}
         else {
-            die "Couldn't parse $_";
+            die "$accountfile: couldn't parse $_";
         }
     }
+    close ACCOUNTS;
+}
+
+if ($accountfile) {
+    parseAccountsFile($accountfile);
+
+    # Also read the "disabled accounts" file
+    my $disabledaccountsfile = $accountfile;
+    $disabledaccountsfile =~ s/accounts$/disabled-accounts/;
+    die "I expected this to end with 'accounts': $accountfile" if 
($accountfile eq $disabledaccountsfile);
+    parseAccountsFile($disabledaccountsfile);
 }
 
 sub resolveEmail($) {
@@ -348,13 +435,90 @@
         $resolved = $secondary_mail_addresses{$email};
     }
     if (not defined $resolved) {
-        print STDERR "Could not find $email in $accountfile\n";
+        die "Could not find $email in $accountfile\n";
         return $email;
     }
     return $resolved;
 }
 
-my $file = $ARGV[0] || "";
+sub skipCommitByAuthor($) {
+    my ($author) = @_;
+    return ($author eq "scripty" or
+            $author eq "(no" or
+            $author eq "nobody\@localhost" or
+            $author eq "not.committed.yet" or
+            $author eq "null\@kde.org");
+}
+
+sub usage()
+{
+ print << "EOM";
+Usage:
+    relicensecheck.pl file
+
+    Output information on relicensing possibilities for <file>
+
+    relicensecheck.pl -g
+    relicensecheck.pl --generate-wiki
+
+    Generate the table for the wiki page
+EOM
+}
+
+my $generate_wiki = 0;
+my @arguments;
+sub parse_arguments(@)
+{
+    while (scalar @_) {
+        my $arg = shift @_;
+
+        if ($arg eq "-g" || $arg eq "--generate-wiki") {
+            $generate_wiki = 1;
+        } elsif ($arg eq "-?" || $arg eq "--?" || $arg eq "-h" || $arg eq 
"--help") {
+            usage();
+            exit 0;
+        } elsif ($arg eq "--") {
+            push @arguments, @_;
+            return;
+        } else {
+            push @arguments, $arg;
+        }
+    }
+}
+
+parse_arguments(@ARGV);
+
+if ($generate_wiki) {
+
+    print "{| border=\"1\"\n";
+    print "! Name !! GPLv2->GPLv2+ !! LGPLv2 -> LGPLv2+ !! GPLv2 -> GPLv2+v3 
!! LGPLv2 -> LGPLv2+LGPLv3 || KDE e.V. decides\n";
+    print "|-\n";
+    my @lines = ();
+    foreach my $who (keys %license_table) {
+        if (!defined $authornames{$who}) {
+            die "ERROR: unknown author $who\n";
+        }
+        # Example: print "|Adam, Till || YES || YES || YES || YES || NO\n";
+        my @licenses = @{$license_table{$who}};
+        my %licensesHash = map { $_ => 1 } @licenses;
+        my $gplv23 = exists($licensesHash{'gplv23'}) ? "YES" : "NO";
+        my $lgplv23 = exists($licensesHash{'lgplv23'}) ? "YES" : "NO";
+        my $gplv2plus = exists($licensesHash{'gplv2+'}) ? "YES" : "NO";
+        my $lgplv2plus = exists($licensesHash{'lgplv2+'}) ? "YES" : "NO";
+        my $eV = exists($licensesHash{'+eV'}) ? "YES" : "NO";
+        $eV = "" if (exists $old_license_table{$who});
+        push @lines, "|$authornames{$who} || $gplv2plus || $lgplv2plus || 
$gplv23 || $lgplv23 || $eV\n";
+    }
+    use locale;
+    foreach my $line (sort @lines) {
+        print $line;
+        print "|-\n";
+    }
+    print "|}\n";
+
+    exit 0;
+}
+my $file = $arguments[0] || "";
 
 die "need existing file: $file" if (! -r $file);
 
@@ -364,7 +528,7 @@
     open(IN, "-|") || exec 'svn', 'log', '-q', $file;
 } else {
     # Format the git output to match the format of svn log.
-    open(IN, "-|") || exec 'git', 'log', '--abbrev-commit', 
'--pretty=format:r%h | %ae ', $file;
+    open(IN, "-|") || exec 'git', 'log', '--follow', '--abbrev-commit', 
'--pretty=format:r%h | %ae ', $file;
 }
 while(<IN>) {
 
@@ -372,13 +536,13 @@
         my ($rev, $author) = ($1, $2);
         #print STDERR "rev=$rev author=$author\n";
 
+        next if skipCommitByAuthor($author);
+
         if (not $svn) {
             # Resolve email to account name
             $author = resolveEmail($author);
         }
 
-        next if ($author eq "scripty" or $author eq "(no");
-
         foreach my $license(keys %ruletable) {
             if (!defined($ruletable{$license}->{$author})) {
                 push(@{$blacklist{$license}->{$author}}, $rev);
@@ -409,7 +573,7 @@
             # b061712b kdecore/klockfile.cpp      (<[email protected]>   [...]
             if (m/^(\S+) (\S+) +\(<([^>]+)>/) {
                 my ($author) = $3;
-                next if ($author eq 'not.committed.yet');
+                next if skipCommitByAuthor($author);
                 $author = resolveEmail($author);
                 $loc_author{$author}++;
             } else {
@@ -439,7 +603,7 @@
     print "Summary:\n";
 
     foreach my $license(sort { $stat{$a} <=> $stat{$b} } keys %stat) {
-        printf "%5d commits possibly violating %s\n", $stat{$license}, $license
+        printf "%5d commits preventing relicensing to %s\n", $stat{$license}, 
$license
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-dev-scripts-15.08.3/wcgrep 
new/kde-dev-scripts-15.12.0/wcgrep
--- old/kde-dev-scripts-15.08.3/wcgrep  2015-10-26 23:50:43.000000000 +0100
+++ new/kde-dev-scripts-15.12.0/wcgrep  2015-10-26 23:52:03.000000000 +0100
@@ -71,7 +71,7 @@
        set -- .
 fi
 
-WCGREP_IGNORE=${WCGREP_IGNORE:-'.*~$\|\./\.git/.*\|.*/\.svn\(/\|$\)'}
+WCGREP_IGNORE=${WCGREP_IGNORE:-'.*~$\|.*/\.git/.*\|.*/\.svn\(/\|$\)'}
 WCGREP_GREPARGS="${WCGREP_GREPARGS:--HnI}"
 
 # Some OSes have GNU tools with "g" prefix, try that first


Reply via email to