From 154f6c859ea9f0fb35f3a8e2ad9566fd9126d3ab Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 26 Sep 2012 12:04:46 +0200 Subject: [PATCH] Add installer target. Requires Qt Installer Framwork (IFW) Change-Id: Id78c05f86cc104d29d4ed3ba02baefa20d49fe4f Reviewed-by: Tim Jenssen --- dist/installer/ifw/config/config.xml.in | 24 + dist/installer/ifw/config/logo.png | Bin 0 -> 4256 bytes dist/installer/ifw/config/watermark.png | Bin 0 -> 12983 bytes .../meta/installscript.qs | 155 ++++++ .../meta/license.txt | 504 ++++++++++++++++++ .../meta/package.xml.in | 15 + .../meta/package.xml.in | 9 + qtcreator.pro | 15 +- scripts/packageIfw.py | 132 +++++ 9 files changed, 851 insertions(+), 3 deletions(-) create mode 100644 dist/installer/ifw/config/config.xml.in create mode 100644 dist/installer/ifw/config/logo.png create mode 100644 dist/installer/ifw/config/watermark.png create mode 100644 dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/installscript.qs create mode 100644 dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/license.txt create mode 100644 dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/package.xml.in create mode 100644 dist/installer/ifw/packages/org.qtproject.qtcreator/meta/package.xml.in create mode 100755 scripts/packageIfw.py diff --git a/dist/installer/ifw/config/config.xml.in b/dist/installer/ifw/config/config.xml.in new file mode 100644 index 00000000000..39fe7f4f00f --- /dev/null +++ b/dist/installer/ifw/config/config.xml.in @@ -0,0 +1,24 @@ + + + Qt Creator + {version} + Qt Creator + Qt Creator Maintenance + Qt Project + http://qt-project.org + + logo.png + watermark.png + QtCreatorUninstaller + + @homeDir@/QtCreator + /opt/QtCreator + + + + I have read and understood the terms contained in the above license agreements. + I do not accept the terms contained in the above license agreements. + + + + diff --git a/dist/installer/ifw/config/logo.png b/dist/installer/ifw/config/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d892f85fe2c11f273bc66774fad74c3deeddb989 GIT binary patch literal 4256 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 VS$HzlhJk^B!PC{xWt~$(69C8rLmmJC literal 0 HcmV?d00001 diff --git a/dist/installer/ifw/config/watermark.png b/dist/installer/ifw/config/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44c44f4c651679158c733d9e5a8a0c4319cd57 GIT binary patch literal 12983 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 + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/package.xml.in b/dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/package.xml.in new file mode 100644 index 00000000000..ed2cf104c98 --- /dev/null +++ b/dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/package.xml.in @@ -0,0 +1,15 @@ + + + Qt Creator Application + The IDE of choice for Qt development. + {version} + {date} + org.qtproject.qtcreator.application + + + + + true + true + org.qtproject.qtcreator + diff --git a/dist/installer/ifw/packages/org.qtproject.qtcreator/meta/package.xml.in b/dist/installer/ifw/packages/org.qtproject.qtcreator/meta/package.xml.in new file mode 100644 index 00000000000..122ca71cad4 --- /dev/null +++ b/dist/installer/ifw/packages/org.qtproject.qtcreator/meta/package.xml.in @@ -0,0 +1,9 @@ + + + Qt Creator + Installs the Qt Creator IDE. + {version} + {date} + org.qtproject.qtcreator + + diff --git a/qtcreator.pro b/qtcreator.pro index 4720d20b0ed..587f17633e2 100644 --- a/qtcreator.pro +++ b/qtcreator.pro @@ -27,6 +27,7 @@ PATTERN = $${PLATFORM}$(INSTALL_EDITION)-$${QTCREATOR_VERSION}$(INSTALL_POSTFIX) macx { APPBUNDLE = "$$OUT_PWD/bin/Qt Creator.app" BINDIST_SOURCE = "$$OUT_PWD/bin/Qt Creator.app" + BINDIST_INSTALLER_SOURCE = $$BINDIST_SOURCE deployqt.commands = $$PWD/scripts/deployqtHelper_mac.sh \"$${APPBUNDLE}\" codesign.commands = codesign -s \"$(SIGNING_IDENTITY)\" \"$${APPBUNDLE}\" dmg.commands = $$PWD/scripts/makedmg.sh $$OUT_PWD/bin qt-creator-$${PATTERN}.dmg @@ -34,6 +35,7 @@ macx { QMAKE_EXTRA_TARGETS += codesign dmg } else { BINDIST_SOURCE = "$(INSTALL_ROOT)$$QTC_PREFIX" + BINDIST_INSTALLER_SOURCE = "$$BINDIST_SOURCE/*" deployqt.commands = $$PWD/scripts/deployqt.py -i \"$(INSTALL_ROOT)$$QTC_PREFIX\" deployqt.depends = install win32 { @@ -43,13 +45,20 @@ macx { } } +INSTALLER_ARCHIVE = $$OUT_PWD/qt-creator-$${PATTERN}-installer-archive.7z + +bindist.depends = deployqt bindist.commands = 7z a -mx9 $$OUT_PWD/qt-creator-$${PATTERN}.7z \"$$BINDIST_SOURCE\" +bindist_installer.depends = deployqt +bindist_installer.commands = 7z a -mx9 $$OUT_PWD/qt-creator-$${PATTERN}-installer-archive.7z \"$$BINDIST_INSTALLER_SOURCE\" +installer.depends = bindist_installer +installer.commands = $$PWD/scripts/packageIfw.py -i \"$(IFW_PATH)\" -s $${QTCREATOR_VERSION} -a \"$$INSTALLER_ARCHIVE\" "qt-creator-$${PATTERN}-installer" win32 { deployqt.commands ~= s,/,\\\\,g bindist.commands ~= s,/,\\\\,g + bindist_installer.commands ~= s,/,\\\\,g + installer.commands ~= s,/,\\\\,g } -bindist.depends = deployqt - -QMAKE_EXTRA_TARGETS += deployqt bindist +QMAKE_EXTRA_TARGETS += deployqt bindist bindist_installer installer diff --git a/scripts/packageIfw.py b/scripts/packageIfw.py new file mode 100755 index 00000000000..b78cb548f28 --- /dev/null +++ b/scripts/packageIfw.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python +################################################################################ +# Copyright (c) 2011 Nokia Corporation +# All rights reserved. +# +# 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 Nokia Corporation, 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. +################################################################################ + +import os +import sys +import datetime +import getopt +import subprocess +import fnmatch +import tempfile +import shutil +import inspect + +def usage(): + print 'Usage: %s [-v|--version-string=versionstring] [-i|--installer-path=/path/to/installerfw] [-a|--archive=archive.7z] ' % os.path.basename(sys.argv[0]) + +def substitute_file(infile, outfile, substitutions): + with open(infile, 'r') as f: + template = f.read() + with open(outfile, 'w') as f: + f.write(template.format(**substitutions)) + +def ifw_template_dir(): + script_dir = os.path.dirname(inspect.getfile(inspect.currentframe())) + source_dir = os.path.normpath(os.path.join(script_dir, '..')); + return os.path.normpath(os.path.join(source_dir, 'dist', 'installer', 'ifw')) + +def main(): + try: + opts, args = getopt.gnu_getopt(sys.argv[1:], 'hv:i:a:', ['help', 'version-string=', 'installer-path=', 'archive']) + except: + usage() + sys.exit(2) + + if len(args) < 1: + usage() + sys.exit(2) + + version = '' + ifw_location = '' + archive = '' + for o, a in opts: + if o in ('-h', '--help'): + usage() + sys.exit(0) + if o in ('-v', '--version-string'): + version = a + if o in ('-i', '--installer-path'): + ifw_location = a + if o in ('-a', '--archive'): + archive = a + + if (version == ''): + raise Exception('Version not specified (--version-string)!') + + if (ifw_location == ''): + raise Exception('Installer framework location not specified (--installer-path)!') + + if (archive == ''): + raise Exception('Archive not specified (--archive)!') + + installer_name = args[0] + if sys.platform == 'darwin': + installer_name = installer_name + '.dmg' + + try: + temp_dir = tempfile.mkdtemp() + except: + raise Exception('Failed to create a temporary directory!') + + try: + substs = {} + substs['version'] = version + substs['date'] = datetime.date.today().isoformat() + + template_dir = ifw_template_dir() + out_config_dir = os.path.join(temp_dir,'config') + out_packages_dir = os.path.join(temp_dir, 'packages') + + shutil.copytree(os.path.join(template_dir, 'packages'), os.path.join(temp_dir, 'packages')) + shutil.copytree(os.path.join(template_dir, 'config'), os.path.join(temp_dir, 'config')) + + for root, dirnames, filenames in os.walk(out_packages_dir): + for template in fnmatch.filter(filenames, '*.in'): + substitute_file(os.path.join(root, template), os.path.join(root, template[:-3]), substs) + os.remove(os.path.join(root, template)) + + for root, dirnames, filenames in os.walk(out_config_dir): + for template in fnmatch.filter(filenames, '*.in'): + substitute_file(os.path.join(root, template), os.path.join(root, template[:-3]), substs) + os.remove(os.path.join(root, template)) + + data_path = os.path.join(out_packages_dir, 'org.qtproject.qtcreator.application', 'data') + if not os.path.exists(data_path): + os.makedirs(data_path) + shutil.copy(archive, data_path) + + ifw_call = [os.path.join(ifw_location, 'bin', 'binarycreator'), '-c', os.path.join(out_config_dir, 'config.xml'), '-p', out_packages_dir, installer_name, '--offline-only' ] + subprocess.check_call(ifw_call, stderr=subprocess.STDOUT) + finally: + print 'Cleaning up...' + shutil.rmtree(temp_dir) + print 'Done.' + +if __name__ == '__main__': + main()