aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinit-repository31
-rw-r--r--qt.pro42
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=<module1>,<module2>...
+
+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 \