aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@theqtcompany.com>2016-01-22 10:41:17 +0100
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2016-01-22 10:42:38 +0100
commitd758a3b055f822f268fcfa6524f63b611a9fbc26 (patch)
tree53c1b334f849d768a7e987446844a7f0b025cea4
parentd2b26ede9c43b3543e4dbd3af33acc0b17a36467 (diff)
parent273821d69c58f9c32b4e154dd7cebae1bc481877 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
-rw-r--r--.gitattributes1
-rw-r--r--.gitmodules65
-rwxr-xr-xinit-repository203
-rw-r--r--qt.pro136
4 files changed, 204 insertions, 201 deletions
diff --git a/.gitattributes b/.gitattributes
index df15048e..084cdfd6 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,7 +1,6 @@
.tag export-subst
.gitignore export-ignore
.gitattributes export-ignore
-.gitmodules export-ignore
.commit-template export-ignore
init-repository export-ignore
README.git export-ignore
diff --git a/.gitmodules b/.gitmodules
index 27798005..f7c1926a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,193 +4,258 @@
branch = dev
initrepo = true
[submodule "qtsvg"]
+ depends = qtbase
path = qtsvg
url = ../qtsvg.git
branch = dev
initrepo = true
[submodule "qtdeclarative"]
+ depends = qtbase
+ recommends = qtsvg qtxmlpatterns
path = qtdeclarative
url = ../qtdeclarative.git
branch = dev
initrepo = true
[submodule "qtactiveqt"]
+ depends = qtbase
path = qtactiveqt
url = ../qtactiveqt.git
branch = dev
initrepo = true
[submodule "qtscript"]
+ depends = qtbase
+ recommends = qttools
path = qtscript
url = ../qtscript.git
branch = dev
initrepo = true
[submodule "qtmultimedia"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtmultimedia
url = ../qtmultimedia.git
branch = dev
initrepo = true
[submodule "qttools"]
+ depends = qtbase
+ recommends = qtdeclarative qtactiveqt qtwebkit
path = qttools
url = ../qttools.git
branch = dev
initrepo = true
[submodule "qtxmlpatterns"]
+ depends = qtbase
path = qtxmlpatterns
url = ../qtxmlpatterns.git
branch = dev
initrepo = true
[submodule "qttranslations"]
+ depends = qttools
path = qttranslations
url = ../qttranslations.git
branch = dev
initrepo = true
+ priority = 30
[submodule "qtdoc"]
+ depends = qtdeclarative
path = qtdoc
url = ../qtdoc.git
branch = dev
initrepo = true
+ priority = 40
[submodule "qtrepotools"]
path = qtrepotools
url = ../qtrepotools.git
branch = master
initrepo = true
+ qt = false
[submodule "qtwebkit"]
+ depends = qtbase
+ recommends = qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns
path = qtwebkit
url = ../qtwebkit.git
branch = dev
+ project = WebKit.pro
+ priority = 20
[submodule "qtwebkit-examples"]
+ depends = qtwebkit qttools
path = qtwebkit-examples
url = ../qtwebkit-examples.git
branch = dev
[submodule "qtqa"]
+ depends = qtbase
path = qtqa
url = ../qtqa.git
branch = master
initrepo = true
+ priority = 50
[submodule "qtlocation"]
+ depends = qtbase
+ recommends = qtdeclarative qtquickcontrols qtserialport qtsystems
path = qtlocation
url = ../qtlocation.git
branch = dev
initrepo = true
[submodule "qtsensors"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtsensors
url = ../qtsensors.git
branch = dev
initrepo = true
[submodule "qtsystems"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtsystems
url = ../qtsystems.git
branch = dev
[submodule "qtfeedback"]
+ depends = qtdeclarative
+ recommends = qtmultimedia
path = qtfeedback
url = ../qtfeedback.git
branch = master
[submodule "qtdocgallery"]
+ depends = qtdeclarative
path = qtdocgallery
url = ../qtdocgallery.git
branch = master
[submodule "qtpim"]
+ depends = qtdeclarative
path = qtpim
url = ../qtpim.git
branch = dev
[submodule "qtconnectivity"]
+ depends = qtbase
+ recommends = qtdeclarative qtandroidextras
path = qtconnectivity
url = ../qtconnectivity.git
branch = dev
initrepo = true
[submodule "qtwayland"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtwayland
url = ../qtwayland.git
branch = dev
initrepo = true
[submodule "qt3d"]
+ depends = qtdeclarative qtimageformats
path = qt3d
url = ../qt3d.git
branch = dev
initrepo = true
[submodule "qtimageformats"]
+ depends = qtbase
path = qtimageformats
url = ../qtimageformats.git
branch = dev
initrepo = true
[submodule "qtquick1"]
+ depends = qtscript
+ recommends = qtsvg qtxmlpatterns
path = qtquick1
url = ../qtquick1.git
branch = dev
[submodule "qtgraphicaleffects"]
+ depends = qtdeclarative
path = qtgraphicaleffects
url = ../qtgraphicaleffects.git
branch = dev
initrepo = true
[submodule "qtquickcontrols"]
+ depends = qtdeclarative
+ recommends = qtgraphicaleffects
path = qtquickcontrols
url = ../qtquickcontrols.git
branch = dev
initrepo = true
[submodule "qtserialbus"]
+ depends = qtserialport
path = qtserialbus
url = ../qtserialbus.git
branch = dev
[submodule "qtserialport"]
+ depends = qtbase
path = qtserialport
url = ../qtserialport.git
branch = dev
initrepo = true
[submodule "qtx11extras"]
+ depends = qtbase
path = qtx11extras
url = ../qtx11extras.git
branch = dev
initrepo = true
[submodule "qtmacextras"]
+ depends = qtbase
path = qtmacextras
url = ../qtmacextras.git
branch = dev
initrepo = true
[submodule "qtwinextras"]
+ depends = qtbase
+ recommends = qtdeclarative qtmultimedia
path = qtwinextras
url = ../qtwinextras.git
branch = dev
initrepo = true
[submodule "qtandroidextras"]
+ depends = qtbase
path = qtandroidextras
url = ../qtandroidextras.git
branch = dev
initrepo = true
[submodule "qtenginio"]
+ depends = qtdeclarative
path = qtenginio
url = ../qtenginio.git
branch = dev
initrepo = true
[submodule "qtwebsockets"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtwebsockets
url = ../qtwebsockets.git
branch = dev
initrepo = true
[submodule "qtwebchannel"]
+ depends = qtbase
+ recommends = qtdeclarative qtwebsockets
path = qtwebchannel
url = ../qtwebchannel.git
branch = dev
initrepo = true
[submodule "qtwebengine"]
+ depends = qtquickcontrols qtwebchannel
+ recommends = qtlocation
path = qtwebengine
url = ../qtwebengine.git
branch = dev
initrepo = true
+ priority = 10
[submodule "qtcanvas3d"]
+ depends = qtdeclarative
path = qtcanvas3d
url = ../qtcanvas3d.git
branch = dev
initrepo = true
[submodule "qtwebview"]
+ depends = qtdeclarative
+ recommends = qtwebengine
path = qtwebview
url = ../qtwebview.git
branch = dev
initrepo = true
[submodule "qtquickcontrols2"]
+ depends = qtquickcontrols
path = qtquickcontrols2
url = ../qtquickcontrols2.git
branch = dev
initrepo = true
[submodule "qtpurchasing"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtpurchasing
url = ../qtpurchasing.git
branch = dev
diff --git a/init-repository b/init-repository
index 91c0519f..f0407f63 100755
--- a/init-repository
+++ b/init-repository
@@ -39,149 +39,120 @@ use warnings;
package Qt::InitRepository;
-=head1 NAME
-
-init-repository - initialize the Qt5 repository and all submodules
-
-=head1 SYNOPSIS
-
- ./init-repository [options]
-
-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 OPTIONS
-
-B<Global options:>
-
-=over
-
-=item --force, -f
-
-Force initialization (even if the submodules are already checked out).
-
-
-=item --force-hooks
-
-Force initialization of hooks (even if there are already hooks in checked out
-submodules).
-
-
-=item --quiet, -q
-
-Be quiet. Will exit cleanly if the repository is already initialized.
-
-=back
-
-
-B<Module options:>
-
-=over
-
-=item --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 default is the set of
-maintained modules.
-Module names may be prefixed with a dash to exclude them from a bigger set.
-
-=item --no-update
-
-Skip the `git submodule update' command.
-
-=item --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.
-
-=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
-
+sub printUsage($)
+{
+ my ($ex) = @_;
-B<Repository options:>
+ print <<EOF ;
+Usage:
+ ./init-repository [options]
-=over
+ 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.
-=item --berlin
+Options:
+ Global options:
-Switch to internal URLs and make use of the Berlin git mirrors.
-(Implies `--mirror').
+ --force, -f
+ Force initialization (even if the submodules are already checked
+ out).
-=item --oslo
+ --force-hooks
+ Force initialization of hooks (even if there are already hooks in
+ checked out submodules).
-Switch to internal URLs and make use of the Oslo git mirrors.
-(Implies `--mirror').
+ --quiet, -q
+ Be quiet. Will exit cleanly if the repository is already
+ initialized.
+ Module options:
-=item --codereview-username <Gerrit/JIRA username>
+ --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 default is
+ the set of maintained modules. Module names may be prefixed with a
+ dash to exclude them from a bigger set.
-Specify the user name for the (potentially) writable `gerrit' remote
-for each module, for use with the Gerrit code review tool.
+ --no-update
+ Skip the `git submodule update' command.
-If this option is omitted, the gerrit remote is created without a username
-and port number, and thus relies on a correct SSH configuration.
+ --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.
+ --ignore-submodules
+ Set git config to ignore submodules by default when doing operations
+ on the qt5 repo, such as `pull', `fetch', `diff' etc.
-=item --alternates <path to other Qt5 repo>
+ After using this option, pass `--ignore-submodules=none' to git to
+ override it as needed.
-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.
+ Repository options:
-This option has no effect when using `--no-update'.
+ --berlin
+ Switch to internal URLs and make use of the Berlin git mirrors.
+ (Implies `--mirror').
-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.
+ --oslo
+ Switch to internal URLs and make use of the Oslo git mirrors.
+ (Implies `--mirror').
+ --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.
-=item --copy-objects
+ If this option is omitted, the gerrit remote is created without a
+ username and port number, and thus relies on a correct SSH
+ configuration.
-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.
+ --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.
-Note that this negates the disk usage benefits gained from the use of
-`--alternates'.
+ This option has no effect when using `--no-update'.
+ 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.
-=item --mirror <url-base>
+ --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.
-Uses <url-base> as the base URL for submodule git mirrors.
+ Note that this negates the disk usage benefits gained from the use
+ of `--alternates'.
-For example:
+ --mirror <url-base>
+ Uses <url-base> as the base URL for submodule git mirrors.
- --mirror user@machine:/foo/bar/
+ For example:
-...will use the following as a mirror for qtbase:
+ --mirror user\@machine:/foo/bar/
- user@machine:/foo/bar/qt/qtbase.git
+ ...will use the following as a mirror for qtbase:
-The mirror is permitted to contain a subset of the submodules; any
-missing modules will fall back to the canonical URLs.
+ user\@machine:/foo/bar/qt/qtbase.git
-=back
+ The mirror is permitted to contain a subset of the submodules; any
+ missing modules will fall back to the canonical URLs.
-=cut
+EOF
+ exit($ex);
+}
use Carp qw( confess );
use English qw( -no_match_vars );
-use Getopt::Long qw( GetOptionsFromArray );
-use Pod::Usage qw( pod2usage );
+use Getopt::Long qw( GetOptions );
use Cwd qw( getcwd );
my $GERRIT_SSH_BASE
@@ -222,7 +193,7 @@ sub exe
sub parse_arguments
{
- my ($self, @args) = @_;
+ my ($self) = @_;
%{$self} = (%{$self},
'alternates' => "",
@@ -237,7 +208,7 @@ sub parse_arguments
'module-subset' => "default",
);
- GetOptionsFromArray(\@args,
+ GetOptions(
'alternates=s' => \$self->{qw{ alternates }},
'branch' => \$self->{qw{ branch }},
'codereview-username=s' => \$self->{qw{ codereview-username }},
@@ -250,7 +221,7 @@ sub parse_arguments
'update!' => \$self->{qw{ update }},
'module-subset=s' => \$self->{qw{ module-subset }},
- 'help|?' => sub { pod2usage(1); },
+ 'help|?' => sub { printUsage(1); },
'berlin' => sub {
$self->{'mirror-url'} = $BER_MIRROR_URL_BASE;
@@ -258,7 +229,7 @@ sub parse_arguments
'oslo' => sub {
$self->{'mirror-url'} = $OSLO_MIRROR_URL_BASE;
},
- ) || pod2usage(2);
+ ) || printUsage(2);
# Replace any double trailing slashes from end of mirror
$self->{'mirror-url'} =~ s{//+$}{/};
@@ -563,5 +534,5 @@ sub run
#==============================================================================
-Qt::InitRepository->new(@ARGV)->run if (!caller);
+Qt::InitRepository->new()->run if (!caller);
1;
diff --git a/qt.pro b/qt.pro
index be193c55..f8d3d4d3 100644
--- a/qt.pro
+++ b/qt.pro
@@ -7,100 +7,68 @@ CONFIG -= build_pass # unhack, as it confuses Qt Creator
TEMPLATE = subdirs
-defineReplace(moduleName) {
- return(module_$$replace(1, -, _))
+# 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")
+ }
+ }
}
+QMAKE_INTERNAL_INCLUDED_FILES += $$PWD/.gitmodules
-# Arguments: module name, [mandatory deps], [optional deps], [project file]
-defineTest(addModule) {
- for(d, $$list($$2 $$3)): \
- !contains(MODULES, $$d): \
- error("'$$1' depends on not (yet) declared '$$d'.")
- MODULES += $$1
- export(MODULES)
+modules = $$sort_depends(modules, module., .depends .recommends)
+modules = $$reverse(modules)
+for (mod, modules) {
+ equals(module.$${mod}.qt, false): \
+ next()
- contains(QT_SKIP_MODULES, $$1): return(false)
- !isEmpty(QT_BUILD_MODULES):!contains(QT_BUILD_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'.")
- isEmpty(4) {
- !exists($$1/$${1}.pro): return(false)
- $${mod}.subdir = $$1
- export($${mod}.subdir)
+ 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
} else {
- !exists($$1/$${4}): return(false)
- $${mod}.file = $$1/$$4
+ !exists($$mod/$$project): \
+ next()
+ $${mod}.file = $$mod/$$project
$${mod}.makefile = Makefile
- export($${mod}.file)
- export($${mod}.makefile)
}
+ $${mod}.target = module-$$mod
- for(d, 2) {
- dn = $$moduleName($$d)
- !contains(SUBDIRS, $$dn): \
- return(false)
- $${mod}.depends += $$dn
+ for (d, deps) {
+ !contains(SUBDIRS, $$d) {
+ $${mod}.target =
+ break()
+ }
+ $${mod}.depends += $$d
}
- for(d, 3) {
- dn = $$moduleName($$d)
- contains(SUBDIRS, $$dn): \
- $${mod}.depends += $$dn
+ isEmpty($${mod}.target): \
+ next()
+ for (d, recs) {
+ contains(SUBDIRS, $$d): \
+ $${mod}.depends += $$d
}
- !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(qtgraphicaleffects, qtdeclarative)
-addModule(qtquickcontrols, qtdeclarative, qtgraphicaleffects)
-addModule(qtquickcontrols2, qtquickcontrols)
-addModule(qtmultimedia, qtbase, qtdeclarative)
-addModule(qtwinextras, qtbase, qtdeclarative qtmultimedia)
-addModule(qtactiveqt, qtbase)
-addModule(qtsystems, qtbase, qtdeclarative)
-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(qtserialport, qtbase)
-addModule(qtlocation, qtbase, qtdeclarative qtquickcontrols qtserialport qtsystems)
-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(qtscript, qtbase, qttools)
-addModule(qtquick1, qtscript, qtsvg qtxmlpatterns)
-addModule(qtdocgallery, qtdeclarative)
-addModule(qtwayland, qtbase, qtdeclarative)
-addModule(qtserialbus, qtserialport)
-addModule(qtenginio, qtdeclarative)
-addModule(qtwebengine, qtquickcontrols qtwebchannel, qtlocation)
-addModule(qtwebview, qtdeclarative, qtwebengine)
-addModule(qtpurchasing, qtbase, qtdeclarative)
-addModule(qttranslations, qttools)
-addModule(qtdoc, qtdeclarative)
-addModule(qtqa, qtbase)