Compare commits

..

8 Commits

Author SHA1 Message Date
Qt Submodule Update Bot
57d4fc9ceb Updated submodules.
Change-Id: I2579c442085495cd179d00e09285797bbb08b3eb
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-10-12 06:20:26 +00:00
Qt Submodule Update Bot
2579c44208 Updated submodules.
Change-Id: Ic1fbc6dfde579eaba980664444feaf9083dd4d39
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-10-06 18:56:13 +00:00
Qt Submodule Update Bot
c1fbc6dfde Updated submodules.
Change-Id: I063e5f899e0d33d5afe15dfb00221bd5d93aab3b
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-29 19:15:45 +00:00
Qt Submodule Update Bot
063e5f899e Updated submodules.
Change-Id: If835537d9fe8076aaf7a8b6311dbdf30b01d1900
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-27 11:17:00 +00:00
Qt Submodule Update Bot
f835537d9f Updated submodules.
Change-Id: Ie4b9dc169153021a9204b6fdf3af9f58228fdf3e
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-24 04:32:16 +00:00
Qt Submodule Update Bot
e4b9dc1691 Updated submodules.
Change-Id: Iad31b8c5743bd4d9ff00b06466530193dd26853f
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-17 10:53:17 +00:00
Qt Submodule Update Bot
ad31b8c574 Updated submodules.
Change-Id: I0ba6e6ce435be779865b0ace08d74dd29800be9c
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-09-10 11:46:31 +00:00
Frederik Gladhorn
b68c8b9729 Adjust submodule branches
Change-Id: I6e3c7677499747fc10ff1a4e3eaa6e66a409c03e
2015-09-03 16:59:46 +02:00
55 changed files with 332 additions and 596 deletions

1
.gitattributes vendored
View File

@@ -1,6 +1,7 @@
.tag export-subst
.gitignore export-ignore
.gitattributes export-ignore
.gitmodules export-ignore
.commit-template export-ignore
init-repository export-ignore
README.git export-ignore

217
.gitmodules vendored
View File

@@ -1,270 +1,181 @@
[submodule "qtbase"]
path = qtbase
url = ../qtbase.git
branch = 5.6.1
status = essential
branch = 5.5.1
initrepo = true
[submodule "qtsvg"]
depends = qtbase
path = qtsvg
url = ../qtsvg.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtdeclarative"]
depends = qtbase
recommends = qtsvg qtxmlpatterns
path = qtdeclarative
url = ../qtdeclarative.git
branch = 5.6.1
status = essential
branch = 5.5.1
initrepo = true
[submodule "qtactiveqt"]
depends = qtbase
path = qtactiveqt
url = ../qtactiveqt.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtscript"]
depends = qtbase
recommends = qttools
path = qtscript
url = ../qtscript.git
branch = 5.6.1
status = deprecated
branch = 5.5.1
initrepo = true
[submodule "qtmultimedia"]
depends = qtbase
recommends = qtdeclarative
path = qtmultimedia
url = ../qtmultimedia.git
branch = 5.6.1
status = essential
branch = 5.5.1
initrepo = true
[submodule "qttools"]
depends = qtbase
recommends = qtdeclarative qtactiveqt qtwebkit
path = qttools
url = ../qttools.git
branch = 5.6.1
status = essential
branch = 5.5.1
initrepo = true
[submodule "qtxmlpatterns"]
depends = qtbase
path = qtxmlpatterns
url = ../qtxmlpatterns.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qttranslations"]
depends = qttools
path = qttranslations
url = ../qttranslations.git
branch = 5.6.1
status = essential
priority = 30
branch = 5.5.1
initrepo = true
[submodule "qtdoc"]
depends = qtdeclarative
path = qtdoc
url = ../qtdoc.git
branch = 5.6.1
status = essential
priority = 40
branch = 5.5.1
initrepo = true
[submodule "qtrepotools"]
path = qtrepotools
url = ../qtrepotools.git
branch = master
status = essential
qt = false
initrepo = true
[submodule "qtwebkit"]
depends = qtbase
recommends = qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns
path = qtwebkit
url = ../qtwebkit.git
branch = 5.6.1
status = obsolete
project = WebKit.pro
priority = 20
branch = 5.5.1
initrepo = true
[submodule "qtwebkit-examples"]
depends = qtwebkit qttools
path = qtwebkit-examples
url = ../qtwebkit-examples.git
branch = 5.6.1
status = obsolete
branch = 5.5.1
initrepo = true
[submodule "qtqa"]
depends = qtbase
path = qtqa
url = ../qtqa.git
branch = master
status = essential
priority = 50
initrepo = true
[submodule "qtlocation"]
depends = qtbase
recommends = qtdeclarative qtquickcontrols qtserialport qtsystems
path = qtlocation
url = ../qtlocation.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtsensors"]
depends = qtbase
recommends = qtdeclarative
path = qtsensors
url = ../qtsensors.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtsystems"]
depends = qtbase
recommends = qtdeclarative
path = qtsystems
url = ../qtsystems.git
branch = dev
status = ignore
[submodule "qtfeedback"]
depends = qtdeclarative
recommends = qtmultimedia
path = qtfeedback
url = ../qtfeedback.git
branch = master
status = ignore
[submodule "qtdocgallery"]
depends = qtdeclarative
path = qtdocgallery
url = ../qtdocgallery.git
branch = master
status = ignore
[submodule "qtpim"]
depends = qtdeclarative
path = qtpim
url = ../qtpim.git
branch = dev
status = ignore
[submodule "qtconnectivity"]
depends = qtbase
recommends = qtdeclarative qtandroidextras
path = qtconnectivity
url = ../qtconnectivity.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtwayland"]
depends = qtbase
recommends = qtdeclarative
path = qtwayland
url = ../qtwayland.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qt3d"]
depends = qtdeclarative qtimageformats
path = qt3d
url = ../qt3d.git
branch = 5.6.1
status = preview
branch = 5.5.1
initrepo = true
[submodule "qtimageformats"]
depends = qtbase
path = qtimageformats
url = ../qtimageformats.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtquick1"]
depends = qtscript
recommends = qtsvg qtxmlpatterns
path = qtquick1
url = ../qtquick1.git
branch = 5.6.1
status = obsolete
branch = 5.5.1
initrepo = true
[submodule "qtgraphicaleffects"]
depends = qtdeclarative
path = qtgraphicaleffects
url = ../qtgraphicaleffects.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtquickcontrols"]
depends = qtdeclarative
recommends = qtgraphicaleffects
path = qtquickcontrols
url = ../qtquickcontrols.git
branch = 5.6.1
status = essential
[submodule "qtserialbus"]
depends = qtserialport
path = qtserialbus
url = ../qtserialbus.git
branch = 5.6.1
status = preview
branch = 5.5.1
initrepo = true
[submodule "qtserialport"]
depends = qtbase
path = qtserialport
url = ../qtserialport.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtx11extras"]
depends = qtbase
path = qtx11extras
url = ../qtx11extras.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtmacextras"]
depends = qtbase
path = qtmacextras
url = ../qtmacextras.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtwinextras"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtwinextras
url = ../qtwinextras.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtandroidextras"]
depends = qtbase
path = qtandroidextras
url = ../qtandroidextras.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtenginio"]
depends = qtdeclarative
path = qtenginio
url = ../qtenginio.git
branch = 5.6.1
status = deprecated
branch = 1.2.1
initrepo = true
[submodule "qtwebsockets"]
depends = qtbase
recommends = qtdeclarative
path = qtwebsockets
url = ../qtwebsockets.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtwebchannel"]
depends = qtbase
recommends = qtdeclarative qtwebsockets
path = qtwebchannel
url = ../qtwebchannel.git
branch = 5.6.1
status = addon
branch = 5.5.1
initrepo = true
[submodule "qtwebengine"]
depends = qtquickcontrols qtwebchannel
recommends = qtlocation
path = qtwebengine
url = ../qtwebengine.git
branch = 5.6.1
status = addon
priority = 10
branch = 5.5.1
initrepo = true
[submodule "qtcanvas3d"]
depends = qtdeclarative
path = qtcanvas3d
url = ../qtcanvas3d.git
branch = 5.6.1
status = addon
[submodule "qtwebview"]
depends = qtdeclarative
recommends = qtwebengine
path = qtwebview
url = ../qtwebview.git
branch = 5.6.1
status = addon
[submodule "qtquickcontrols2"]
depends = qtquickcontrols
path = qtquickcontrols2
url = ../qtquickcontrols2.git
branch = 5.6.1
status = preview
[submodule "qtpurchasing"]
depends = qtbase
recommends = qtdeclarative
path = qtpurchasing
url = ../qtpurchasing.git
branch = dev
status = ignore
branch = 5.5.1
initrepo = true

27
README
View File

@@ -39,24 +39,11 @@ HOW TO BUILD QT5
The "bin" folder of the ICU installation should be appended to the PATH
environment variable in order to for the DLLs to be found at run-time.
Licensing:
----------
Opensource users:
<source_package> = qt-everywhere-opensource-src-<version>
<license> = -opensource
Commercial users:
<source_package> = qt-everywhere-enterprise-src-<version>
<license> = -commercial
Linux, Mac:
-----------
cd <path>/<source_package>
./configure -prefix $PWD/qtbase <license> -nomake tests
cd <path>/qt-everywhere-opensource-src-<version>
./configure -prefix $PWD/qtbase -opensource -nomake tests
make -j 4
Windows:
@@ -68,8 +55,8 @@ HOW TO BUILD QT5
* Python version 2.7 or later [http://www.activestate.com/activepython/]
* Ruby version 1.9.3 or later [http://rubyinstaller.org/]
cd <path>\<source_package>
configure -prefix %CD%\qtbase <license> -nomake tests
cd <path>\qt-everywhere-opensource-src-<version>
configure -prefix %CD%\qtbase -opensource -nomake tests
nmake // jom // mingw32-make
To accelerate the bootstrap of qmake with MSVC, it may be useful to pass
@@ -94,13 +81,13 @@ HOW TO BUILD QT5
Example for a release build:
(adjust the `-jN' parameter as appropriate for your system)
./configure -prefix $PWD/qtbase <license>
./configure -prefix $PWD/qtbase -opensource
make -j4
Example for a developer build:
(enables more autotests, builds debug version of libraries, ...)
./configure -developer-build <license>
./configure -developer-build -opensource
make -j4
See output of `./configure -help' for documentation on various options to
@@ -113,7 +100,7 @@ HOW TO BUILD QT5
a `make module-<foo>'. For example, to build only qtscript and qtwebkit,
and the modules they depend on:
./configure -prefix $PWD/qtbase <license>
./configure -prefix $PWD/qtbase -opensource
make -j4 module-qtscript module-qtwebkit
This can save a lot of time if you are only interested in a subset of Qt5.

View File

@@ -1,9 +0,0 @@
Continuous Integration
======================
This directory contains files used by Qt's Continuous Integration system (Coin).
provisioning
------------
Contains scripts that apply to different test machines in order to run automatic tests on them.

View File

@@ -1,31 +0,0 @@
function Verify-Checksum
{
Param (
[string]$File=$(throw("You must specify a filename to get the checksum of.")),
[string]$Expected=$(throw("Checksum required")),
[ValidateSet("sha1","md5")][string]$Algorithm="sha1"
)
$fs = new-object System.IO.FileStream $File, "Open"
$algo = [type]"System.Security.Cryptography.$Algorithm"
$crypto = $algo::Create()
$hash = [BitConverter]::ToString($crypto.ComputeHash($fs)).Replace("-", "")
$fs.Close()
if ($hash -ne $Expected) {
Write-Error "Checksum verification failed, got: '$hash' expected: '$Expected'"
}
}
function Extract-Zip
{
Param (
[string]$Source,
[string]$Destination
)
echo "Extracting '$Source' to '$Destination'..."
New-Item -ItemType Directory -Force -Path $Destination
$shell = new-object -com shell.application
$zipfile = $shell.Namespace($Source)
$destinationFolder = $shell.Namespace($Destination)
$destinationFolder.CopyHere($zipfile.Items())
}

View File

@@ -1,7 +0,0 @@
. "$PSScriptRoot\helpers.ps1"
$zip = "c:\users\qt\downloads\jom_1_1_0.zip"
Invoke-WebRequest -UseBasicParsing http://download.qt.io/official_releases/jom/jom_1_1_0.zip -OutFile $zip
Verify-Checksum $zip "C4149FE706B25738B4C4E54C73E180B9CAB55832"
Extract-Zip $zip C:\Utils\Jom

View File

@@ -1,70 +0,0 @@
#!/bin/env bash
#############################################################################
##
## Copyright (C) 2016 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the test suite of the Qt Toolkit.
##
## $QT_BEGIN_LICENSE:LGPL21$
## 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 http://www.qt.io/terms-conditions. For further
## information use the contact form at http://www.qt.io/contact-us.
##
## GNU Lesser General Public License Usage
## Alternatively, this file may be used under the terms of the GNU Lesser
## General Public License version 2.1 or version 3 as published by the Free
## Software Foundation and appearing in the file LICENSE.LGPLv21 and
## LICENSE.LGPLv3 included in the packaging of this file. Please review the
## following information to ensure the GNU Lesser General Public License
## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
##
## As a special exception, The Qt Company gives you certain additional
## rights. These rights are described in The Qt Company LGPL Exception
## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
##
## $QT_END_LICENSE$
##
#############################################################################
# This script installs the right ICU version
set -e
icuVersion="56.1"
icuLocation="/usr/lib64"
sha1="f2eab775c04ce5f3bdae6c47d06b62158b5d6753"
function Install7ZPackageFromURL {
url=$1
expectedSha1=$2
targetDirectory=$3
targetFile=`mktemp` || echo "Failed to create temporary file"
wget --tries=5 --waitretry=5 --output-document=$targetFile $url || echo "Failed to download '$url' multiple times"
echo "$expectedSha1 $targetFile" | sha1sum --check || echo "Failed to check sha1sum"
sudo /usr/local/bin/7z x -yo$targetDirectory $targetFile || echo "Failed to unzip $url archive"
rm $targetFile
}
echo "Installing custom ICU $icuVersion $sha1 packages on RHEL to $icuLocation"
baseBinaryPackageURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel6.6-x64.7z"
Install7ZPackageFromURL $baseBinaryPackageURL $sha1 "/usr/lib64"
echo "Installing custom ICU devel packages on RHEL"
sha1Dev="82f8b216371b848b8d36ecec7fe7b6e9b0dba0df"
develPackageURL="http://master.qt.io/development_releases/prebuilt/icu/prebuilt/$icuVersion/icu-linux-g++-Rhel6.6-x64-devel.7z"
tempDir=`mktemp -d` || echo "Failed to create temporary directory"
trap "sudo rm -fr $tempDir" EXIT
Install7ZPackageFromURL $develPackageURL $sha1Dev $tempDir
sudo cp -a $tempDir/lib/* /usr/lib64
sudo cp -a $tempDir/* /usr/
sudo /sbin/ldconfig

View File

@@ -1,4 +0,0 @@
# provides: odbc devel packages on RHEL
# version: provided by default Linux distribution repository
# needed for configure -plugin-sql-odbc in qtbase
sudo yum install -y unixODBC-devel

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -1,6 +0,0 @@
Set-ExecutionPolicy RemoteSigned -Force
# install jom
. "$PSScriptRoot\..\common\jom.ps1"
Set-ExecutionPolicy Restricted -Force

View File

@@ -39,128 +39,155 @@ use warnings;
package Qt::InitRepository;
sub printUsage($)
{
my ($ex) = @_;
=head1 NAME
print <<EOF ;
Usage:
./init-repository [options]
init-repository - initialize the Qt5 repository and all submodules
This script may be run after an initial `git clone' of Qt5 in order to
check out all submodules. It fetches them from canonical URLs inferred
from the clone's origin.
=head1 SYNOPSIS
Options:
Global options:
./init-repository [options]
--force, -f
Force initialization (even if the submodules are already checked
out).
This script may be run after an initial `git clone' of Qt5 in order to check
out all submodules.
--force-hooks
Force initialization of hooks (even if there are already hooks in
checked out submodules).
--quiet, -q
Be quiet. Will exit cleanly if the repository is already
initialized.
=head1 OPTIONS
Module options:
B<Global options:>
--module-subset=<module1>,<module2>...
Only initialize the specified subset of modules given as the
argument. Specified modules must already exist in .gitmodules. The
string "all" results in cloning all known modules. The strings
"essential", "addon", "preview", "deprecated", "obsolete", and
"ignore" refer to classes of modules; "default" maps to
"essential,addon,preview,deprecated", which corresponds with the
set of maintained modules and is also the default set. Module
names may be prefixed with a dash to exclude them from a bigger
set, e.g. "all,-ignore".
=over
--no-update
Skip the `git submodule update' command.
=item --force, -f
--branch
Instead of checking out specific SHA1s, check out the submodule
branches that correspond with the current supermodule commit. By
default, this option will cause local commits in the submodules to
be rebased. With --no-update, the branches will be checked out, but
their heads will not move.
Force initialization (even if the submodules are already checked out).
--ignore-submodules
Set git config to ignore submodules by default when doing operations
on the qt5 repo, such as `pull', `fetch', `diff' etc.
After using this option, pass `--ignore-submodules=none' to git to
override it as needed.
=item --force-hooks
Repository options:
Force initialization of hooks (even if there are already hooks in checked out
submodules).
--berlin
Switch to internal URLs and make use of the Berlin git mirrors.
(Implies `--mirror').
--oslo
Switch to internal URLs and make use of the Oslo git mirrors.
(Implies `--mirror').
=item --quiet, -q
--codereview-username <Gerrit/JIRA username>
Specify the user name for the (potentially) writable `gerrit' remote
for each module, for use with the Gerrit code review tool.
Be quiet. Will exit cleanly if the repository is already initialized.
If this option is omitted, the gerrit remote is created without a
username and port number, and thus relies on a correct SSH
configuration.
=back
--alternates <path to other Qt5 repo>
Adds alternates for each submodule to another full qt5 checkout.
This makes this qt5 checkout very small, as it will use the object
store of the alternates before unique objects are stored in its own
object store.
This option has no effect when using `--no-update'.
B<Module options:>
NOTE: This will make this repo dependent on the alternate, which is
potentially dangerous! The dependency can be broken by also using
the `--copy-objects' option, or by running "git repack -a" in each
submodule, where required. Please read the note about the `--shared'
option in the documentation of `git clone' for more information.
=over
--copy-objects
When `--alternates' is used, automatically do a "git repack -a" in
each submodule after cloning, to ensure that the repositories are
independent from the source used as a reference for cloning.
=item --no-webkit
Note that this negates the disk usage benefits gained from the use
of `--alternates'.
Skip webkit and webkit examples submodules.
It may be desirable to skip these modules due to the large size of the webkit
git repository.
--mirror <url-base>
Uses <url-base> as the base URL for submodule git mirrors.
=item --module-subset=<module1>,<module2>...
For example:
Only initialize the specified subset of modules given as the argument. Specified
modules must already exist in .gitmodules.
The string "all" results in cloning all known modules. The default is the set of
maintained modules.
Module names may be prefixed with a dash to exclude them from a bigger set.
--mirror user\@machine:/foo/bar/
=item --no-update
...will use the following as a mirror for qtbase:
Skip the `git submodule update' command.
user\@machine:/foo/bar/qt/qtbase.git
=item --branch
The mirror is permitted to contain a subset of the submodules; any
missing modules will fall back to the canonical URLs.
Instead of checking out specific SHA1s, check out the submodule branches that
correspond with the current supermodule commit.
By default, this option will cause local commits in the submodules to be rebased.
With --no-update, the branches will be checked out, but their heads will not move.
EOF
exit($ex);
}
=item --ignore-submodules
Set git config to ignore submodules by default when doing operations on the
qt5 repo, such as `pull', `fetch', `diff' etc.
After using this option, pass `--ignore-submodules=none' to git to override
it as needed.
=back
B<Repository options:>
=over
=item --berlin
Switch to internal URLs and make use of the Berlin git mirrors.
(Implies `--mirror').
=item --oslo
Switch to internal URLs and make use of the Oslo git mirrors.
(Implies `--mirror').
=item --codereview-username <Gerrit/JIRA username>
Specify the user name for the (potentially) writable `gerrit' remote
for each module, for use with the Gerrit code review tool.
If this option is omitted, the gerrit remote is created without a username
and port number, and thus relies on a correct SSH configuration.
=item --alternates <path to other Qt5 repo>
Adds alternates for each submodule to another full qt5 checkout. This makes
this qt5 checkout very small, as it will use the object store of the
alternates before unique objects are stored in its own object store.
This option has no effect when using `--no-update'.
B<NOTE:> This will make this repo dependent on the alternate, which is
potentially dangerous! The dependency can be broken by also using
the `--copy-objects' option, or by running C<git repack -a> in each
submodule, where required. Please read the note about the `--shared' option
in the documentation of `git clone' for more information.
=item --copy-objects
When `--alternates' is used, automatically do a C<git repack -a> in each
submodule after cloning, to ensure that the repositories are independent
from the source used as a reference for cloning.
Note that this negates the disk usage benefits gained from the use of
`--alternates'.
=item --mirror <url-base>
Uses <url-base> as the base URL for submodule git mirrors.
For example:
--mirror user@machine:/foo/bar/
...will use the following as a mirror for qtbase:
user@machine:/foo/bar/qt/qtbase.git
The mirror is permitted to contain a subset of the submodules; any
missing modules will fall back to the canonical URLs.
=back
=cut
use Carp qw( confess );
use English qw( -no_match_vars );
use Getopt::Long qw( GetOptions );
use Cwd qw( getcwd abs_path );
my $script_path = abs_path($0);
$script_path =~ s,[/\\][^/\\]+$,,;
use Getopt::Long qw( GetOptionsFromArray );
use Pod::Usage qw( pod2usage );
use Cwd qw( getcwd );
my $GERRIT_SSH_BASE
= 'ssh://@USER@codereview.qt-project.org@PORT@/';
@@ -200,7 +227,7 @@ sub exe
sub parse_arguments
{
my ($self) = @_;
my ($self, @args) = @_;
%{$self} = (%{$self},
'alternates' => "",
@@ -212,10 +239,11 @@ sub parse_arguments
'ignore-submodules' => 0 ,
'mirror-url' => "",
'update' => 1 ,
'webkit' => 1 ,
'module-subset' => "default",
);
GetOptions(
GetOptionsFromArray(\@args,
'alternates=s' => \$self->{qw{ alternates }},
'branch' => \$self->{qw{ branch }},
'codereview-username=s' => \$self->{qw{ codereview-username }},
@@ -226,9 +254,10 @@ sub parse_arguments
'mirror=s' => \$self->{qw{ mirror-url }},
'quiet' => \$self->{qw{ quiet }},
'update!' => \$self->{qw{ update }},
'webkit!' => \$self->{qw{ webkit }},
'module-subset=s' => \$self->{qw{ module-subset }},
'help|?' => sub { printUsage(1); },
'help|?' => sub { pod2usage(1); },
'berlin' => sub {
$self->{'mirror-url'} = $BER_MIRROR_URL_BASE;
@@ -236,13 +265,15 @@ sub parse_arguments
'oslo' => sub {
$self->{'mirror-url'} = $OSLO_MIRROR_URL_BASE;
},
) || printUsage(2);
) || pod2usage(2);
# Replace any double trailing slashes from end of mirror
$self->{'mirror-url'} =~ s{//+$}{/};
$self->{'module-subset'} =~ s/\bdefault\b/preview,essential,addon,deprecated/;
$self->{'module-subset'} = [ split(/,/, $self->{'module-subset'}) ];
if (!$self->{webkit}) {
push @{$self->{'module-subset'}}, "-qtwebkit", "-qtwebkit-examples";
}
return;
}
@@ -280,14 +311,6 @@ sub git_submodule_init
return;
}
use constant {
STS_PREVIEW => 1,
STS_ESSENTIAL => 2,
STS_ADDON => 3,
STS_DEPRECATED => 4,
STS_OBSOLETE => 5
};
sub git_clone_all_submodules
{
my ($self, $my_repo_base, $co_branch, @subset) = @_;
@@ -311,58 +334,22 @@ sub git_clone_all_submodules
while ($base =~ s,/(?!\.\./)[^/]+/\.\./,/,g) {}
$subbases{$mod} = $base;
} elsif ($2 eq "update") {
push @subset, '-'.$1 if ($3 eq 'none');
} elsif ($2 eq "status") {
if ($3 eq "preview") {
$subinits{$1} = STS_PREVIEW;
} elsif ($3 eq "essential") {
$subinits{$1} = STS_ESSENTIAL;
} elsif ($3 eq "addon") {
$subinits{$1} = STS_ADDON;
} elsif ($3 eq "deprecated") {
$subinits{$1} = STS_DEPRECATED;
} elsif ($3 eq "obsolete") {
$subinits{$1} = STS_OBSOLETE;
} elsif ($3 eq "ignore") {
delete $subinits{$1};
} else {
die("Invalid subrepo status '$3' for '$1'.\n");
}
push @subset, '-'.$1 if ($3 eq 'ignore');
} elsif ($2 eq "initrepo") {
$subinits{$1} = ($3 eq "yes" or $3 eq "true");
}
}
my %include = ();
foreach my $mod (@subset) {
my $del = ($mod =~ s/^-//);
my $fail = 0;
my @what;
if ($mod eq "all") {
@what = keys %subbases;
} elsif ($mod eq "essential") {
@what = grep { ($subinits{$_} || 0) eq STS_ESSENTIAL } keys %subbases;
} elsif ($mod eq "addon") {
@what = grep { ($subinits{$_} || 0) eq STS_ADDON } keys %subbases;
} elsif ($mod eq "preview") {
@what = grep { ($subinits{$_} || 0) eq STS_PREVIEW } keys %subbases;
} elsif ($mod eq "deprecated") {
@what = grep { ($subinits{$_} || 0) eq STS_DEPRECATED } keys %subbases;
} elsif ($mod eq "obsolete") {
@what = grep { ($subinits{$_} || 0) eq STS_OBSOLETE } keys %subbases;
} elsif ($mod eq "ignore") {
@what = grep { ($subinits{$_} || 0) eq 0 } keys %subbases;
} elsif (defined($subdirs{$mod})) {
push @what, $mod;
map { $include{$_} = 1; } keys %subbases;
} elsif ($mod eq "default") {
map { $include{$_} = 1; } grep { $subinits{$_} } keys %subbases;
} elsif ($mod =~ s/^-//) {
delete $include{$mod};
} else {
$fail = 1;
}
if ($del) {
print "Warning: excluding non-existent module '$mod'.\n"
if ($fail);
map { delete $include{$_} } @what;
} else {
die("Error: module subset names non-existent '$mod'.\n")
if ($fail);
map { $include{$_} = 1; } @what;
$include{$mod} = 1;
}
}
@@ -535,16 +522,11 @@ sub ensure_link
return if (!$self->{'force-hooks'} and -f $tgt);
unlink($tgt); # In case we have a dead symlink or pre-existing hook
print "Aliasing $src\n as $tgt ...\n" if (!$self->{quiet});
if ($^O ne "msys" && $^O ne "MSWin32") {
return if eval { symlink($src, $tgt) };
}
return if eval { symlink($src, $tgt) };
# Windows doesn't do (proper) symlinks. As the post_commit script needs
# them to locate itself, we write a forwarding script instead.
open SCRIPT, ">".$tgt or die "Cannot create forwarding script $tgt: $!\n";
# Make the path palatable for MSYS.
$src =~ s,\\,/,g;
$src =~ s,^(.):/,/$1/,g;
print SCRIPT "#!/bin/sh\nexec $src \"\$\@\"\n";
print SCRIPT "#!/bin/sh\nexec `dirname \$0`/$src \"\$\@\"\n";
close SCRIPT;
}
@@ -552,30 +534,19 @@ sub git_install_hooks
{
my ($self) = @_;
my $hooks = $script_path.'/qtrepotools/git-hooks';
return if (!-d $hooks);
return if (!-d 'qtrepotools/git-hooks');
my @configresult = qx(git config --list --local);
foreach my $line (@configresult) {
next if ($line !~ /submodule\.([^.=]+)\.url=/);
my $module = $1.'/.git';
if (!-d $module) {
open GITD, $module or die "Cannot open $module: $!\n";
my $gd = <GITD>;
close GITD;
chomp($gd);
$gd =~ s/^gitdir: // or die "Malformed .git file $module\n";
$module = $gd; # We expect it to be always absolute.
if (open COMD, $module.'/commondir') {
my $cd = <COMD>;
chomp($cd);
$module .= '/'.$cd;
$module = abs_path($module);
close COMD;
}
}
$self->ensure_link($hooks.'/gerrit_commit_msg_hook', $module.'/hooks/commit-msg');
$self->ensure_link($hooks.'/git_post_commit_hook', $module.'/hooks/post-commit');
# Force C locale as git submodule returns the localized string "Entering"
local $ENV{LC_ALL} = 'C';
chomp(my @modules = `git submodule foreach :`);
push @modules, "";
for my $module (@modules) {
$module =~ s,^Entering \'([^\']+)\'$,$1/,;
my $rel = $module;
$rel =~ s,[^/]+,..,g;
$rel .= "../../qtrepotools/git-hooks/";
$self->ensure_link($rel.'gerrit_commit_msg_hook', $module.'.git/hooks/commit-msg');
$self->ensure_link($rel.'git_post_commit_hook', $module.'.git/hooks/post-commit');
}
}
@@ -602,5 +573,5 @@ sub run
#==============================================================================
Qt::InitRepository->new()->run if (!caller);
Qt::InitRepository->new(@ARGV)->run if (!caller);
1;

127
qt.pro
View File

@@ -7,68 +7,89 @@ CONFIG -= build_pass # unhack, as it confuses Qt Creator
TEMPLATE = subdirs
# Extract submodules from .gitmodules.
lines = $$cat(.gitmodules, lines)
for (line, lines) {
mod = $$replace(line, "^\\[submodule \"([^\"]+)\"\\]$", \\1)
!equals(mod, $$line) {
module = $$mod
modules += $$mod
} else {
prop = $$replace(line, "^$$escape_expand(\\t)([^ =]+) *=.*$", \\1)
!equals(prop, $$line) {
val = $$replace(line, "^[^=]+= *", )
module.$${module}.$$prop = $$split(val)
} else {
error("Malformed line in .gitmodules: $$line")
}
}
defineReplace(moduleName) {
return(module_$$replace(1, -, _))
}
QMAKE_INTERNAL_INCLUDED_FILES += $$PWD/.gitmodules
modules = $$sort_depends(modules, module., .depends .recommends)
modules = $$reverse(modules)
for (mod, modules) {
equals(module.$${mod}.qt, false): \
next()
# Arguments: module name, [mandatory deps], [optional deps], [project file]
defineTest(addModule) {
contains(QT_SKIP_MODULES, $$1): return(false)
mod = $$moduleName($$1)
deps = $$eval(module.$${mod}.depends)
recs = $$eval(module.$${mod}.recommends)
for (d, $$list($$deps $$recs)): \
!contains(modules, $$d): \
error("'$$mod' depends on undeclared '$$d'.")
contains(QT_SKIP_MODULES, $$mod): \
next()
!isEmpty(QT_BUILD_MODULES):!contains(QT_BUILD_MODULES, $$mod): \
next()
project = $$eval(module.$${mod}.project)
isEmpty(project) {
!exists($$mod/$${mod}.pro): \
next()
$${mod}.subdir = $$mod
isEmpty(4) {
!exists($$1/$${1}.pro): return(false)
$${mod}.subdir = $$1
export($${mod}.subdir)
} else {
!exists($$mod/$$project): \
next()
$${mod}.file = $$mod/$$project
!exists($$1/$${4}): return(false)
$${mod}.file = $$1/$$4
$${mod}.makefile = Makefile
export($${mod}.file)
export($${mod}.makefile)
}
$${mod}.target = module-$$mod
for (d, deps) {
!contains(SUBDIRS, $$d) {
$${mod}.target =
break()
}
$${mod}.depends += $$d
for(d, 2) {
dn = $$moduleName($$d)
!contains(SUBDIRS, $$dn): \
return(false)
$${mod}.depends += $$dn
}
isEmpty($${mod}.target): \
next()
for (d, recs) {
contains(SUBDIRS, $$d): \
$${mod}.depends += $$d
for(d, 3) {
dn = $$moduleName($$d)
contains(SUBDIRS, $$dn): \
$${mod}.depends += $$dn
}
!isEmpty($${mod}.depends): \
export($${mod}.depends)
$${mod}.target = module-$$1
export($${mod}.target)
SUBDIRS += $$mod
export(SUBDIRS)
return(true)
}
# only qtbase is required to exist. The others may not - but it is the
# users responsibility to ensure that all needed dependencies exist, or
# it may not build.
ANDROID_EXTRAS =
android: ANDROID_EXTRAS = qtandroidextras
addModule(qtbase)
addModule(qtandroidextras, qtbase)
addModule(qtmacextras, qtbase)
addModule(qtx11extras, qtbase)
addModule(qtsvg, qtbase)
addModule(qtxmlpatterns, qtbase)
addModule(qtdeclarative, qtbase, qtsvg qtxmlpatterns)
addModule(qtquickcontrols, qtdeclarative, qtgraphicaleffects)
addModule(qtmultimedia, qtbase, qtdeclarative)
addModule(qtwinextras, qtbase, qtdeclarative qtmultimedia)
addModule(qtactiveqt, qtbase)
addModule(qtsystems, qtbase, qtdeclarative)
addModule(qtlocation, qtbase, qtdeclarative qtquickcontrols qtsystems)
addModule(qtsensors, qtbase, qtdeclarative)
addModule(qtconnectivity, qtbase $$ANDROID_EXTRAS, qtdeclarative)
addModule(qtfeedback, qtdeclarative, qtmultimedia)
addModule(qtpim, qtdeclarative)
addModule(qtwebsockets, qtbase, qtdeclarative)
addModule(qtwebchannel, qtbase, qtdeclarative qtwebsockets)
addModule(qtwebkit, qtbase, qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns, WebKit.pro)
addModule(qttools, qtbase, qtdeclarative qtactiveqt qtwebkit)
addModule(qtwebkit-examples, qtwebkit qttools)
addModule(qtimageformats, qtbase)
addModule(qt3d, qtdeclarative qtimageformats)
addModule(qtcanvas3d, qtdeclarative)
addModule(qtgraphicaleffects, qtdeclarative)
addModule(qtscript, qtbase, qttools)
addModule(qtquick1, qtscript, qtsvg qtxmlpatterns qtwebkit)
addModule(qtdocgallery, qtdeclarative)
addModule(qtwayland, qtbase, qtdeclarative)
addModule(qtserialport, qtbase)
addModule(qtenginio, qtdeclarative)
addModule(qtwebengine, qtquickcontrols qtwebchannel, qtwebkit qtlocation)
addModule(qttranslations, qttools)
addModule(qtdoc, qtdeclarative)
addModule(qtqa, qtbase)

2
qt3d

Submodule qt3d updated: 2270fae50f...0bcb6600db

2
qtbase

Submodule qtbase updated: 540978288e...6542161d5c

2
qtdoc

Submodule qtdoc updated: f63dd18eab...03117638dd

2
qtpim

Submodule qtpim updated: de4cfc6b53...18e3d741c3

Submodule qtpurchasing deleted from b5c6c76fac

2
qtqa

Submodule qtqa updated: 32893be6fa...dca1914237

Submodule qtquickcontrols2 deleted from 6ea6881ec8

Submodule qtserialbus deleted from ec7b4b2268

2
qtsvg

Submodule qtsvg updated: 0e69a7c86f...23f263b6aa

Submodule qttools updated: 2d838dd06e...0240288756

Submodule qtwebview deleted from 6d13d430ae