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
