From 435a7c7739eed93acd783a7bca2755668f4e1d28 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Wed, 6 Jul 2011 17:53:58 +1000 Subject: Can now tell init-repository to only use a subset of modules Still useful to use init-repository because of all the other logic, such as repository urls. More general than --no-webkit, although it is still a valid convenience as the most common case. Also makes qt.pro check for existence of modules, since it is no longer certain that you'll have everything but webkit. Change-Id: Iaaaa30e24e0a793218e2e307bdde56067760c513 Reviewed-on: http://codereview.qt.nokia.com/1258 Reviewed-by: Qt Sanity Bot Reviewed-by: Rohan McGovern --- init-repository | 31 +++++++++++++++++++++++++++++++ qt.pro | 42 +++++++++++++++++++++++------------------- 2 files changed, 54 insertions(+), 19 deletions(-) diff --git a/init-repository b/init-repository index e80dcc0c..abb2b93c 100755 --- a/init-repository +++ b/init-repository @@ -87,6 +87,10 @@ Skip webkit and webkit examples submodules. It may be desirable to skip these modules due to the large size of the webkit git repository. +=item --module-subset=,... + +Only initialize the specified subset of modules given as the argument. Specified +modules must already exist in .gitmodules. =item --no-update @@ -300,6 +304,7 @@ sub parse_arguments 'protocol' => "", 'update' => 1 , 'webkit' => 1 , + 'module-subset' => "", ); GetOptionsFromArray(\@args, @@ -314,6 +319,7 @@ sub parse_arguments 'quiet' => \$self->{qw{ quiet }}, 'update!' => \$self->{qw{ update }}, 'webkit!' => \$self->{qw{ webkit }}, + 'module-subset=s' => \$self->{qw{ module-subset }}, 'help|?' => sub { pod2usage(1); }, 'http' => sub { $self->{protocol} = 'http'; }, @@ -349,6 +355,12 @@ sub parse_arguments # Replace any double trailing slashes from end of mirror $self->{'mirror-url'} =~ s{//+$}{/}; + if ($self->{'module-subset'}) { + $self->{'module-subset'} = { + map { $_ => 1 } split(qr{,}, $self->{'module-subset'}) + }; + } + return; } @@ -405,6 +417,21 @@ sub git_disable_webkit_submodule return; } +sub git_prune_submodules +{ + my ($self) = @_; + + my @configresult = qx(git config -l); + foreach my $line (@configresult) { + if ($line =~ /submodule\.([^.=]+)\.url=/) { + my $module_name = $1; + if (!$self->{'module-subset'}{$module_name}) { + $self->exe('git', 'config', '--remove', "submodule.$module_name"); + } + } + } +} + sub git_set_submodule_config { my ($self) = @_; @@ -593,6 +620,10 @@ sub run $self->git_disable_webkit_submodule; } + if ($self->{'module-subset'}) { + $self->git_prune_submodules; + } + $self->git_set_submodule_config; if ($self->{update}) { diff --git a/qt.pro b/qt.pro index 0d248c41..213abe97 100644 --- a/qt.pro +++ b/qt.pro @@ -87,25 +87,29 @@ module_qtfeedback.depends = module_qtbase module_qtdeclarative # not yet enabled by default module_qtfeedback.CONFIG = no_default_target no_default_install -SUBDIRS = \ - module_qtbase \ - module_qtsvg \ - module_qtphonon \ - module_qtxmlpatterns \ - module_qtscript \ - module_qtdeclarative \ - module_qtmultimedia \ - module_qttools \ - module_qttranslations \ - module_qtdoc \ - module_qlalr \ - module_qtqa \ - module_qtlocation \ - module_qtactiveqt \ - module_qtsensors \ - module_qtsystems \ - module_qtmultimediakit \ - module_qtfeedback \ +# 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. + +SUBDIRS = module_qtbase + +exists(qtsvg/qtsvg.pro): SUBDIRS += module_qtsvg +exists(qtphonon/qtphonon.pro): SUBDIRS += module_qtphonon +exists(qtxmlpatterns/qtxmlpatterns.pro): SUBDIRS += module_qtxmlpatterns +exists(qtscript/qtscript.pro): SUBDIRS += module_qtscript +exists(qtdeclarative/qtdeclarative.pro): SUBDIRS += module_qtdeclarative +exists(qtmultimedia/qtmultimedia.pro): SUBDIRS += module_qtmultimedia +exists(qttools/qttools.pro): SUBDIRS += module_qttools +exists(qttranslations/qttranslations.pro): SUBDIRS += module_qttranslations +exists(qtdoc/qtdoc.pro): SUBDIRS += module_qtdoc +exists(qlalr/qlalr.pro): SUBDIRS += module_qlalr +exists(qtqa/qtqa.pro): SUBDIRS += module_qtqa +exists(qtlocation/qtlocation.pro): SUBDIRS += module_qtlocation +exists(qtactiveqt/qtactiveqt.pro): SUBDIRS += module_qtactiveqt +exists(qtsensors/qtsensors.pro): SUBDIRS += module_qtsensors +exists(qtsystems/qtsystems.pro): SUBDIRS += module_qtsystems +exists(qtmultimediakit/qtmultimediakit.pro): SUBDIRS += module_qtmultimediakit +exists(qtfeedback/qtfeedback.pro): SUBDIRS += module_qtfeedback exists(qtwebkit/Tools/Scripts/build-webkit) { SUBDIRS += module_qtwebkit \ -- cgit v1.2.3