This reverts commit 76fd6e8f2953347ea0bf7a57b643968784bc9acc.
The change caused that two installation files were needed -
one executable and one dat file. Many users did not find it acceptable.
We need to figure out something else.
Change-Id: Ief12cd47f9897cee8a234d8611a5c18296d42b1c
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Signing was not possible for maintenancetool since metadata was
added to binary. Separated metadata to installer.dat like in OS X.
Task-number: QTIFW-667
Change-Id: I74ef307c51a2f43059475dd943d6f0910925fa86
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
The mkdmg.sh script which is used to create .dmg files made some effort
to calculate the size of the file system contained in the .dmg file.
However, it neglected to consider that a .dmg file is not always
(never?) totally empty. A sample session on OS X 10.10.5 shows:
$ hdiutil create /tmp/foo.dmg -megabytes 33 -ov -volname foo -type UDIF -fs HFS+
... <a lot more dots here>
created: /tmp/foo.dmg
$ hdid /tmp/foo.dmg
/dev/disk3 GUID_partition_scheme
/dev/disk3s1 Apple_HFS /Volumes/foo
$ df /Volumes/foo
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk3s1 67504 1584 65920 3% 196 8240 2% /Volumes/foo
About 792kB are apparently used for bookkeeping (in ".Trashes" and
".fseventsd") directories.
Since mkdmg.sh failed to account for these 792kB, the .dmg file it
creates was occasionally too small, causing an error message to be
printed by the 'cp' command in the mkdmg.sh script (but that error
message was never printed anywhere, at least I never noticed when
executing binarycreator - always only when running mkdmg.sh directly).
Instead of fixing the allocated size, let's just make use of the
'-srcfolder' argument to 'hdiutil create' which does all of this
automatically. It requires no copying around or calculating sizes, which
not only makes the script much simpler, it also avoids the
above-mentioned issue but also makes the script run faster: about 30%
faster in my experiments.
With this, the mkdmg.sh script is so small (just one hdiutil and one rm
call) that we may just as well drop it completely and perform those
operations straight from the C++ code.
A final nice side-effect is that '-srcfolder' can be specified multiple
times: this makes it very easy to copy multiple directory trees in the
resulting .dmg file. This in turn is useful to create nicely styled .dmg
files with custom background image and icon arrangements.
Change-Id: I54d63a00e56d1ee9fa61c2690ca42d512fda37b1
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
This patch introduces -s/--sign switches for binarycreator which are
only available on OS X. Using these switches, a 'Code Signing Identity'
can be configured which should be used for signing the generated .app
bundle.
Signing the application bundles avoids that Apple's Gatekeeper complains
about the application coming from an unidentified publisher.
Change-Id: I507c6cac0b99faf19faf48c21e47a2df054b0b11
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
This change will introduce new element 'Checkable' for package.
Setting checkable to false will hide checkbox. Useful if use case
is to install one sub item instead of all sub items.
Change-Id: I8c731e77353b6da539dddcecdc8495b28ef5f7ea
Task-number: QTIFW-773
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
When asking binarycreator to create an app bundle on OS X, temporary
files are created in /tmp via, the name of which is determined via
DMG=`mktemp "/tmp/$VOL.XXXXXX.dmg"`
However, on OS X, this doesn't actually create a random file name. OS X
uses the BSD implementation of 'mktemp'. The man page explains:
The trailing `Xs' are replaced with the current process number and/or
a unique letter combination.
Note the *trailing*. Hence, on OS X, the 'XXXXXX' part should be at the
end of the template.
This manifested as a problem in case creation of the .dmg file is
aborted (e.g. via Ctrl+C) in which case the temporary file is not
removed. In that case, a subsequent attempt to create a .dmg will fail
since mktemp fails to create the temporary file - since it's already
there! The only remedy is to remove the temporary file by hand.
Alas, 'hdiutil' and 'hdid' apparently depend on the file extension in
order to detect the file format. So it's not just a matter of changing
the template for mktemp. Instead, let's pass just '$VOL.XXXXXX' to
mktemp but then tack on the file extension when using the file name.
Change-Id: I7a1a548df24054e01630c441f259031045703ff3
Task-number: QTIFW-780
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
...by simply not using any timeout anymore. I believe this was the
original intention of the code (it's arguably hideous that the default
value of the waitForFinished() method is a 30000ms timeout).
What happened for me is that the mkdmg.sh script took longer than 30
seconds. As a consequence
1. the 'waitForFinished()' call returned
2. The mkdgm.sh script was deleted
3. The QProcess object went out of scope, terminating the shell process
4. The binarycreator process terminated successfully
The resulting .dmg file seemed plausible (it was fairly large already)
but it wasn't usable yet since the hdiutil process started by mkdmg.sh
was still running, i.e. the .dmg file was still growing. Hence, the
caller of binarycreator (e.g. some CI system) continued processing a
malformed .dmg file (and the temporary file created by mkdmg.sh never
got deleted).
Last but not least, proper error handling would have been nice of course
but I considered that to be out of scope for this particular commit.
Change-Id: I767ff89d20802306189660804cea617c148a943e
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Reviewed-by: Katja Marttila <katja.marttila@theqtcompany.com>
Change constructor to take the a package manager argument. Add a
package manager member to the operation. Remove setter function.
Change-Id: Iffb860e24089beb6496ac4ee479d547a29463728
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Prefer using the stream operator logic instead of using
QString::fromLatin1. Add a noquote() where a QString should be printed
without any quotes/escapes.
This also fixes the tests with Qt 5.5, where QString's are further
escaped.
Change-Id: Ie3afd14b9355101d3c0b52f30f66ec759c76526c
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
* Enclose file paths in ""
* Localize file paths with QDir::toNativeSeparators.
* Make sure sentences end with a '.'
* Append error details always by ':', e.g.
tr("Failed to copy file '%1': %2").(...)
* Use 'directory' instead of 'folder' everywhere
Change-Id: Ie045f429f72ad5045c96537465c5fb9d2e99d250
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Convert to new signal/slot syntax where it does not make things more
complicated: connections where the signal or slot is an overloaded
method, or where the receiver method is not in a QObject, are left alone.
The new syntax allows compile-time checking of the connection.
Change-Id: I2cc3c93b9812797bd67f64a8728569491eeec668
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
The placeholder of the first argument to QString::tr() is %1, not %0.
Change-Id: I69fcddb42ddbfda27dfb4430f03ebef156280c64
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Stop on file errors. Better verbose/ help output. Add support
for compression level. Do not hide symbols in statically build
lib7z to use e.g. CPercentPrinter symbol in dynamic IFW builds.
Task-number: QTIFW-695
Change-Id: I18e2ea58b5f1880bfb7f3ed84e34b8810f864188
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
We need the core engine in operations anyway, so pass the pointer
to the create function instead of setting it on our own after the
operation was created. The only reason to introduce the static
was the ~UpdateOperation() destructor, which now can get the value
from its internal data instead of using the static instance call.
Change-Id: Ide27542837355ec8c642a6687ca02977983f84fa
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
The tag was added once component script is parsed and we did
know that addElevatedOperation is called from script. However,
the initial commit 7ccd0acdcf35b957e9e7d04cd81902bac362ad04 did
not append the node to the parent package update node. Now we
decided to have the option statically and declarative available,
so we can remove the warning.
Task-number: QTIFW-670
Change-Id: I8cd8f702391d7bf80fc4c42074e1fd6d2d4abc57
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
As requested use positional arguments instead of options to run
the devtool. Should help unifying further additions to the tool.
Change-Id: I794a7f7956d86082111f8aa1b14012c3695c965d
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Add QT_STRICT_ITERATORS to disallow implicit conversions
between iterator and const_iterator. This avoids potential
detaches of the Qt containers.
Change-Id: I79d381f531ddda9ac402c6f5c63cdc7c6808a0bd
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Use the Version value defined in config.xml as the product version
exclusively instead of sometimes using it as the repository format
version in components.xml (which must be 1.0.0) and sometimes as the
product version.
Change-Id: I63864947bf131ac6e246a2aaf6febdda0555c13d
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
In qtbase commit 4255ba40ab073af (Qt 5.3.0 and newer) the plugins are
added automatically, based on the Qt module one links against.
Therefore just remove the QTPLUGIN line (similar to commit 807de07).
Change-Id: I776627639fa30a289daafa38dd42835a6b7f53e1
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Generated Updates.xml was missing DownloadableArchives property and
component size was not calculated properly in case package directory
contains files that are packaged into 7zip archives by the installer.
Change-Id: I73e3d16b73cfbe25cb8b2e55b9c93f48b1ecdb1c
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
This is now an error, we had the warning long enough.
Change-Id: I8272dd3c886dae54045f97bc33fa96c17bc7eb33
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Extract binary data based on list of available package names when using
"devtool --dump" or "--create-offline-repository" installer option. An
entry in meta data resource only exists if the component actually has
meta data (e.g. a script) so it is not possible to rely on sub
directory structure after copying meta data to extract binary data.
Change-Id: Icd70d3495a921229f0043360b93905dc36cf6514
Task-number: QTIFW-574
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>