summaryrefslogtreecommitdiffstats
path: root/src/designer
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-03-14 09:07:57 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-03-28 08:08:47 +0000
commit0779a2ee5db5eb009e027ba08628e2172b2e7632 (patch)
treee708f0a938b883106ef15c144a4afe51838bd537 /src/designer
parentcbaa6a900b806589029110e2b9ba531e1d5ab7f8 (diff)
Qt Designer/generate_ui tool: Observe licenses of source files
Replace the hardcoded licenses in the .xsl files and replace by a special @LICENSE@ keyword. Read out the license from the source files in qttools/qtbase respectively and create temporary .xsl files with the keywords replaced accordingly. Use the same mechanism for the #include directive in the ui4.cpp source. Change-Id: I8a7937013041397954a30c676a9b699e0332a1e0 Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/designer')
-rw-r--r--src/designer/data/generate_header.xsl51
-rw-r--r--src/designer/data/generate_impl.xsl53
-rwxr-xr-xsrc/designer/data/generate_ui75
3 files changed, 59 insertions, 120 deletions
diff --git a/src/designer/data/generate_header.xsl b/src/designer/data/generate_header.xsl
index 459d852f9..334d3a73c 100644
--- a/src/designer/data/generate_header.xsl
+++ b/src/designer/data/generate_header.xsl
@@ -401,56 +401,7 @@
<xsl:template match="xs:schema">
-<xsl:text>/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
+<xsl:text>@LICENSE@
//
// W A R N I N G
// -------------
diff --git a/src/designer/data/generate_impl.xsl b/src/designer/data/generate_impl.xsl
index 0f271c559..049ac00df 100644
--- a/src/designer/data/generate_impl.xsl
+++ b/src/designer/data/generate_impl.xsl
@@ -822,60 +822,11 @@
<xsl:template match="xs:schema">
-<xsl:text>/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
+<xsl:text>@LICENSE@
// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT!
</xsl:text>
- <xsl:text>#include "ui4_p.h"&endl;</xsl:text>
+ <xsl:text>#include "@HEADER@"&endl;</xsl:text>
<xsl:text>&endl;</xsl:text>
<xsl:text>&endl;</xsl:text>
<xsl:text>QT_BEGIN_NAMESPACE&endl;</xsl:text>
diff --git a/src/designer/data/generate_ui b/src/designer/data/generate_ui
index b88a769c7..4c723a61c 100755
--- a/src/designer/data/generate_ui
+++ b/src/designer/data/generate_ui
@@ -17,10 +17,12 @@
use strict;
+use File::Basename;
use File::Spec;
use File::Copy;
use IO::File;
use File::Path;
+use File::Temp;
my $USAGE=<<EOF;
Usage: generate_ui
@@ -46,6 +48,40 @@ my $qtXmlPatterns = File::Spec->catfile($qtDir, 'bin', 'xmlpatterns');
print 'uic at: ',$uicDir, ' Designer at: ',$designerDir, ' uilib at: ',$uiLibDir,' XML at ',$xmlDir,"\n";
die ('Invalid folder structure') unless -d $xmlDir && -d $uicDir && -d $uiLibDir;
+# Read out license delimited by '/** .. **/' from a C++ source
+sub readCppLicense
+{
+ my ($fileName) = @_;
+ my $license = '';
+ my $file = new IO::File('<' . $fileName) or die ('Unable to open ' . $fileName . ' for reading: ' . $!);
+ while (my $line = <$file>) {
+ $license .= $line;
+ last if index($line, '*****/') >= 0;
+ }
+ $file->close();
+ return $license;
+}
+
+# Replace special keys in XSL files and return a handle to temporary file
+sub replaceXslKeys
+{
+ my ($xslSourceFileName, $license, $uiHeaderName) = @_;
+
+ my $xslSourceFile = new IO::File('<' . $xslSourceFileName) or die ('Unable to open ' . $xslSourceFileName . ' for reading: ' . $!);
+ my $xsl = '';
+ while (my $line = <$xslSourceFile>) {
+ $xsl .= $line;
+ }
+ $xslSourceFile->close();
+ $xsl =~ s/\@LICENSE\@/$license/g;
+ $xsl =~ s/\@HEADER\@/$uiHeaderName/g if defined $uiHeaderName;
+
+ my $xslHandle = File::Temp->new(DIR => dirname($xslSourceFileName), SUFFIX => '.xsl');
+ print $xslHandle $xsl;
+ $xslHandle->close();
+ return $xslHandle;
+}
+
# Run xalan. Note: xmlpatterns currently reports a syntax error on the sheets
sub runXSLT
{
@@ -59,31 +95,32 @@ sub runXSLT
my $uiLibImpl = File::Spec->catfile($uiLibDir, 'ui4.cpp');
my $uiLibHeader = File::Spec->catfile($uiLibDir, 'ui4_p.h');
+my $license = readCppLicense($uiLibImpl);
+
+print "Running XSLT processor for uilib header...\n";
+
+my $ui4Xsd = File::Spec->catfile($xmlDir, 'ui4.xsd');
+my $headerXslSource = File::Spec->catfile($xmlDir, 'generate_header.xsl');
+my $headerXsl = replaceXslKeys($headerXslSource, $license);
+runXSLT($ui4Xsd, $headerXsl->filename, $uiLibHeader);
-print "Running XSLT processor for header...\n";
-runXSLT(File::Spec->catfile($xmlDir, 'ui4.xsd'),
- File::Spec->catfile($xmlDir, 'generate_header.xsl'),
- $uiLibHeader);
-print "Running XSLT processor for source...\n";
-runXSLT(File::Spec->catfile($xmlDir, 'ui4.xsd'),
- File::Spec->catfile($xmlDir, 'generate_impl.xsl'),
- $uiLibImpl);
+print "Running XSLT processor for uilib source...\n";
+my $implXslSource = File::Spec->catfile($xmlDir, 'generate_impl.xsl');
+my $implXsl = replaceXslKeys($implXslSource, $license, 'ui4_p.h');
+runXSLT($ui4Xsd, $implXsl->filename, $uiLibImpl);
-# uic: Header is called 'ui4.h' instead of 'ui4_p.h'. Use header as is, fix include in source.
+# uic: Header is called 'ui4.h' instead of 'ui4_p.h'
my $uicImpl = File::Spec->catfile($uicDir, 'ui4.cpp');
my $uicHeader = File::Spec->catfile($uicDir, 'ui4.h');
+$license = readCppLicense($uicImpl);
-File::Copy::copy($uiLibHeader, $uicHeader) or die ('Unable to copy ' . $uiLibHeader . ' ' . $uicHeader . ' ' . $!);
-
-my $uiLibImplHandle = new IO::File('<' . $uiLibImpl) or die ('Unable to read ' . $uiLibImpl . ':' . $!);
-my $uicImplHandle = new IO::File('>' . $uicImpl) or die ('Unable to write ' . $uicImpl . ':' . $!);
-while (my $line = <$uiLibImplHandle>) {
- $line =~ s/ui4_p\.h/ui4.h/;
- print $uicImplHandle $line;
-}
+print "Running XSLT processor for uic header...\n";
+$headerXsl = replaceXslKeys($headerXslSource, $license);
+runXSLT($ui4Xsd, $headerXsl->filename, $uicHeader);
-$uiLibImplHandle->close();
-$uicImplHandle->close();
+print "Running XSLT processor for uic source...\n";
+$implXsl = replaceXslKeys($implXslSource, $license, 'ui4.h');
+runXSLT($ui4Xsd, $implXsl->filename, $uicImpl);
system('git', 'diff');