diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2016-01-22 10:41:17 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2016-01-22 10:42:38 +0100 |
commit | d758a3b055f822f268fcfa6524f63b611a9fbc26 (patch) | |
tree | 53c1b334f849d768a7e987446844a7f0b025cea4 | |
parent | d2b26ede9c43b3543e4dbd3af33acc0b17a36467 (diff) | |
parent | 273821d69c58f9c32b4e154dd7cebae1bc481877 (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: I62519dfde84c16a7dfe1b6f225e40e6f16d3105c
-rw-r--r-- | .gitattributes | 1 | ||||
-rw-r--r-- | .gitmodules | 65 | ||||
-rwxr-xr-x | init-repository | 203 | ||||
-rw-r--r-- | qt.pro | 136 |
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; @@ -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) |