diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-03-14 09:07:57 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-03-28 08:08:47 +0000 |
commit | 0779a2ee5db5eb009e027ba08628e2172b2e7632 (patch) | |
tree | e708f0a938b883106ef15c144a4afe51838bd537 /src/designer | |
parent | cbaa6a900b806589029110e2b9ba531e1d5ab7f8 (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.xsl | 51 | ||||
-rw-r--r-- | src/designer/data/generate_impl.xsl | 53 | ||||
-rwxr-xr-x | src/designer/data/generate_ui | 75 |
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'); |