Commit ffb90dff authored by Tobias Hunger's avatar Tobias Hunger Committed by hjk

Update copyright check script

Use perl instead of bash and avoid lots of rereading of the file,
making the script much faster to run.

Change-Id: Ic898f324b2952c593b89d8efca8ea1e344cf5858
Reviewed-by: default avatarhjk <qthjk@ovi.com>
parent ecf8b82c
......@@ -3,8 +3,8 @@
# Prepend a copyright header to all files given on the command line.
# Sample usage:
# find . -type f -name \*.cpp -o -name \*.h | \
# xargs ~/bin/hasCopyright.sh | grep ": NO COPYRIGHT" | grep "^./src/" | \
# cut -d ':' -f1 | xargs ~/bin/fixCopyright.sh /tmp/copyright.txt
# xargs ~/bin/hasCopyright.pl | grep ": No copyright, NOK" | grep "^./src/" | \
# cut -d ':' -f1 | xargs ~/bin/fixCopyright.sh dist/copyright_template.txt
COPYRIGHT_HEADER=$1
......
#!/usr/bin/perl -w
# Report possible problems with copy right headers
#
# Sample usage:
# find . -type f | xargs ./scripts/hasCopyright.pl
use strict;
shift; # remove script
sub canIgnoreNoCopyright {
my $file = shift;
return 1 if ($file =~ /\.png$/ or
$file =~ /\.ico$/ or
$file =~ /\.svg$/ or
$file =~ /\.xpm$/ or
$file =~ /\.dia$/ or
$file =~ /\/Doxyfile$/ or
$file =~ /\.qmlproject$/ or
$file =~ /\.pr[oi]$/ or
$file =~ /\.qbs$/ or
$file =~ /\.qrc$/ or
$file =~ /\.txt$/i or
$file =~ /\/README[^\/]*$/i or
$file =~ /\/LICENSE.LGPL$/i or
$file =~ /\.ui$/i or
$file =~ /\.xml$/ or
$file =~ /\.css$/ or
$file =~ /\.metainfo$/ or
$file =~ /\.json$/ or
$file =~ /\.pl$/ or
$file =~ /\.py$/ or
$file =~ /\.sh$/ or
$file =~ /\.bat$/ or
$file =~ /\.patch$/ or
$file =~ /\.sed$/ or
$file =~ /\.pro\.user$/ or
$file =~ /\.plist$/ or
$file =~ /\.qdocconf$/i or
$file =~ /\.qdocinc/);
return 0;
}
while (1) {
my $file = shift;
last unless $file;
my $hasCopyright = 0;
my $hasCurrent = 0;
my $hasContact = 0;
my $hasCommercial = 0;
my $hasLGPL = 0;
my $hasGPL = 0;
my $hasDigia = 0;
my $linecount = 0;
if ($file !~ /\.png$/) {
open(my $fh, "<", $file) or die "Could not open $file.\n";
while (<$fh>) {
$linecount++;
last if ($linecount > 50);
$hasCopyright = 1 if $_ =~ /Copyright/i;
$hasCurrent = 1 if $_ =~ /\(c\).*\s2012/i;
$hasContact = 1 if $_ =~ /Contact: http:\/\/www.qt-project.org\/legal/;
$hasCommercial = 1 if $_ =~ /Commercial License Usage/;
$hasDigia = 1 if $_ =~ /Digia Plc/;
$hasLGPL = 1 if $_ =~ /GNU Lesser General Public License Usage/;
$hasGPL = 1 if $_ =~ /GNU General Public License Usage/;
}
close $fh;
}
unless ($hasCopyright) {
print "$file\t";
if (canIgnoreNoCopyright($file)) {
print "Warning\t";
} else {
print "ERROR\t";
}
print "No copyright\n";
next;
}
unless ($hasCurrent) {
print "$file\tERROR\tcopyright outdated\n";
next;
}
unless ($hasDigia) {
print "$file\tERROR\tNo digia\n";
next;
}
unless ($hasContact) {
print "$file\tERROR\tWrong contact\n";
next;
}
unless ($hasCommercial) {
print "$file\tERROR\tNo commercial license\n";
next;
}
unless ($hasLGPL) {
print "$file\tERROR\tNo LGPL license\n";
next;
}
unless ($hasGPL) {
print "$file\tERROR\tNo GPL license\n";
next;
}
print "$file\tinfo\tCopyright OK\n";
} # loop over files
exit 0;
#!/bin/sh
# Scan files given on the command line for a copyright header.
# Only the first 15 lines will be examined and must contain the
# string 'Copyright'.
#
# Sample usage:
# find . -type f -name \*.cpp -o -name \*.h | xargs ./scripts/hasCopyright.sh
for i in "$@" ; do
if test -f "$i" && test -s "$i" ; then
if head -n 35 "$1" | grep "info@qt.nokia.com" > /dev/null 2>&1 ; then
echo "$i: OLD EMAIL IN USE!"
elif head -n 35 "$i" | grep Copyright > /dev/null 2>&1 ; then
if head -n 35 "$i" | grep "GNU Lesser General Public License" > /dev/null 2>&1 &&
head -n 35 "$i" | grep "Other Usage" > /dev/null 2>&1 ; then
echo "$i: Copyright ok"
else
echo "$i: WRONG COPYRIGHT"
fi
else
echo "$i: NO COPYRIGHT"
fi
fi
done
......@@ -413,14 +413,26 @@ void TargetSetupPage::import(const Utils::FileName &path, const bool silent)
// find interesting makefiles
QString makefile = path.toString() + QLatin1Char('/') + file;
Utils::FileName qmakeBinary = QtSupport::QtVersionManager::findQMakeBinaryFromMakefile(makefile);
if (qmakeBinary.isEmpty())
QFileInfo fi = qmakeBinary.toFileInfo();
Utils::FileName canonicalQmakeBinary = Utils::FileName::fromString(fi.canonicalFilePath());
if (canonicalQmakeBinary.isEmpty())
continue;
if (QtSupport::QtVersionManager::makefileIsFor(makefile, m_proFilePath) != QtSupport::QtVersionManager::SameProject)
continue;
// Find version:
version = vm->qtVersionForQMakeBinary(qmakeBinary);
foreach (QtSupport::BaseQtVersion *v, vm->versions()) {
QFileInfo vfi = v->qmakeCommand().toFileInfo();
Utils::FileName current = Utils::FileName::fromString(vfi.canonicalFilePath());
if (current == canonicalQmakeBinary) {
version = v;
break;
}
}
// Create a new version if not found:
if (!version) {
// Do not use the canonical path here...
version = QtSupport::QtVersionFactory::createQtVersionFromQMakePath(qmakeBinary);
if (!version)
continue;
......
......@@ -347,8 +347,7 @@ void BaseQtVersion::fromMap(const QVariantMap &map)
QString string = map.value(QLatin1String(QTVERSIONQMAKEPATH)).toString();
if (string.startsWith(QLatin1Char('~')))
string.remove(0, 1).prepend(QDir::homePath());
const QString canonical = QFileInfo(string).canonicalFilePath();
ctor(Utils::FileName::fromString(canonical.isEmpty() ? string : canonical));
ctor(Utils::FileName::fromString(string));
}
QVariantMap BaseQtVersion::toMap() const
......
......@@ -635,18 +635,18 @@ static QString filterForQmakeFileDialog()
void QtOptionsPageWidget::addQtDir()
{
Utils::FileName qtVersion = Utils::FileName::fromString(
QFileInfo(QFileDialog::getOpenFileName(this,
tr("Select a qmake Executable"),
QString(),
filterForQmakeFileDialog(),
0,
QFileDialog::DontResolveSymlinks)).canonicalFilePath());
QFileDialog::getOpenFileName(this,
tr("Select a qmake executable"),
QString(),
filterForQmakeFileDialog(),
0,
QFileDialog::DontResolveSymlinks));
if (qtVersion.isNull())
return;
BaseQtVersion *version = QtVersionManager::instance()->qtVersionForQMakeBinary(qtVersion);
if (version) {
// Already exist
QMessageBox::warning(this, tr("Qt Version Already Registered"),
QMessageBox::warning(this, tr("Qt known"),
tr("This Qt version was already registered as \"%1\".")
.arg(version->displayName()));
return;
......
......@@ -629,7 +629,7 @@ Utils::FileName QtVersionManager::findQMakeBinaryFromMakefile(const QString &mak
// Is qmake still installed?
QFileInfo fi(qmakePath);
if (fi.exists())
return Utils::FileName::fromString(fi.canonicalFilePath());
return Utils::FileName(fi);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment