2011-05-06 00:52:54 +00:00
|
|
|
#!/usr/bin/env perl
|
2011-04-27 10:34:00 +00:00
|
|
|
#############################################################################
|
|
|
|
##
|
|
|
|
## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
|
|
|
## All rights reserved.
|
|
|
|
## Contact: Nokia Corporation (qt-info@nokia.com)
|
|
|
|
##
|
|
|
|
## This file is part of the utilities of the Qt Toolkit.
|
|
|
|
##
|
|
|
|
## $QT_BEGIN_LICENSE:LGPL$
|
|
|
|
## No Commercial Usage
|
|
|
|
## This file contains pre-release code and may not be distributed.
|
|
|
|
## You may use this file in accordance with the terms and conditions
|
|
|
|
## contained in the Technology Preview License Agreement accompanying
|
|
|
|
## this package.
|
|
|
|
##
|
|
|
|
## 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 as published by the Free Software
|
|
|
|
## Foundation and appearing in the file LICENSE.LGPL included in the
|
|
|
|
## packaging of this file. Please review the following information to
|
|
|
|
## ensure the GNU Lesser General Public License version 2.1 requirements
|
|
|
|
## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
|
|
##
|
|
|
|
## In addition, as a special exception, Nokia gives you certain additional
|
|
|
|
## rights. These rights are described in the Nokia Qt LGPL Exception
|
|
|
|
## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
|
|
##
|
|
|
|
## If you have questions regarding the use of this file, please contact
|
|
|
|
## Nokia at qt-info@nokia.com.
|
|
|
|
##
|
|
|
|
##
|
|
|
|
##
|
|
|
|
##
|
|
|
|
##
|
|
|
|
##
|
|
|
|
##
|
|
|
|
##
|
|
|
|
## $QT_END_LICENSE$
|
|
|
|
##
|
|
|
|
#############################################################################
|
|
|
|
|
2011-04-28 04:19:42 +00:00
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
=head2 Global options:
|
|
|
|
|
|
|
|
=over
|
|
|
|
|
|
|
|
=item --force, -f
|
|
|
|
|
|
|
|
Force initialization (even if the submodules are already checked out).
|
|
|
|
|
|
|
|
|
|
|
|
=item --quiet, -q
|
|
|
|
|
|
|
|
Be quiet. Will exit cleanly if the repository is already initialized.
|
|
|
|
|
|
|
|
=back
|
|
|
|
|
|
|
|
|
|
|
|
=head2 Module options:
|
|
|
|
|
|
|
|
=over
|
|
|
|
|
|
|
|
=item --no-webkit
|
|
|
|
|
|
|
|
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 --no-update
|
|
|
|
|
|
|
|
Skip the `git submodule update' command.
|
|
|
|
|
|
|
|
|
|
|
|
=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
|
|
|
|
|
|
|
|
|
|
|
|
=head2 Repository options:
|
|
|
|
|
|
|
|
=over
|
|
|
|
|
|
|
|
=item --nokia-developer
|
|
|
|
|
|
|
|
Switch to internal Nokia URLs.
|
|
|
|
|
|
|
|
|
|
|
|
=item --brisbane
|
|
|
|
|
|
|
|
Switch to internal Nokia URLs and make use of the Brisbane git mirrors.
|
|
|
|
(Implies `--mirror' and `--mirror-webkit').
|
|
|
|
|
|
|
|
|
|
|
|
=item --ssh
|
|
|
|
|
|
|
|
Use the SSH protocol for git operations. This may be useful if the git
|
|
|
|
protocol is blocked by a firewall. Note that this requires a user account
|
|
|
|
with an uploaded SSH key on all servers used. (Implies `--nokia-developer').
|
|
|
|
|
|
|
|
|
|
|
|
=item --http
|
|
|
|
|
|
|
|
Use the HTTP protocol for git operations. This may be useful if the git
|
|
|
|
protocol is blocked by a firewall. Note that this only works with the
|
|
|
|
external Gitorious server.
|
|
|
|
|
|
|
|
|
|
|
|
=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/qtbase.git
|
|
|
|
|
|
|
|
|
|
|
|
=item --mirror-webkit <url>
|
|
|
|
|
|
|
|
Uses <url> as the URL for the webkit git mirror.
|
|
|
|
|
|
|
|
=back
|
|
|
|
|
|
|
|
=cut
|
|
|
|
|
|
|
|
use Carp qw( confess );
|
|
|
|
use English qw( -no_match_vars );
|
|
|
|
use Getopt::Long qw( GetOptionsFromArray );
|
|
|
|
use Pod::Usage qw( pod2usage );
|
|
|
|
|
|
|
|
my %PROTOCOLS = (
|
|
|
|
'internal' => 'git://scm.dev.nokia.troll.no/' ,
|
|
|
|
'ssh' => 'git@scm.dev.nokia.troll.no:' ,
|
|
|
|
'http' => 'http://git.gitorious.org/' ,
|
2011-05-04 17:49:18 +00:00
|
|
|
);
|
2011-04-27 10:34:00 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
my %STAGING_REPOS = map { $_ => "git://gitorious.org/qt/$_.git" } qw(
|
|
|
|
qt3support-staging
|
|
|
|
qtactiveqt-staging
|
|
|
|
qtbase-earth-staging
|
|
|
|
qtbase-staging
|
|
|
|
qtdeclarative-staging
|
|
|
|
qtdoc-staging
|
|
|
|
qtmultimedia-staging
|
|
|
|
qtphonon-staging
|
|
|
|
qtqa-staging
|
|
|
|
qtscript-staging
|
|
|
|
qtsvg-staging
|
|
|
|
qttools-staging
|
|
|
|
qttranslations-staging
|
|
|
|
qtwebkit-examples-and-demos-staging
|
|
|
|
qtxmlpatterns-staging
|
2011-05-05 14:37:24 +00:00
|
|
|
);
|
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
my $BNE_MIRROR_URL_BASE
|
|
|
|
= 'git://bq-git.apac.nokia.com/qtsoftware/qt/';
|
2011-05-05 14:37:24 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
my $BNE_MIRROR_WEBKIT_URL
|
|
|
|
= 'git://bq-git.apac.nokia.com/qtsoftware/research/gitorious-org-webkit-qtwebkit-mirror.git';
|
2011-05-05 14:37:24 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
sub new
|
2011-04-27 10:34:00 +00:00
|
|
|
{
|
2011-05-06 00:52:54 +00:00
|
|
|
my ($class, @arguments) = @_;
|
|
|
|
|
|
|
|
my $self = {};
|
|
|
|
bless $self, $class;
|
|
|
|
$self->parse_arguments(@arguments);
|
|
|
|
|
|
|
|
return $self;
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
# Like `system', but possibly log the command, and die on non-zero exit code
|
|
|
|
sub exe
|
2011-04-27 10:34:00 +00:00
|
|
|
{
|
2011-05-06 00:52:54 +00:00
|
|
|
my ($self, @cmd) = @_;
|
|
|
|
|
|
|
|
if (!$self->{quiet}) {
|
|
|
|
print "+ @cmd\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (system(@cmd) != 0) {
|
|
|
|
confess "@cmd exited with status $CHILD_ERROR";
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
sub parse_arguments
|
|
|
|
{
|
|
|
|
my ($self, @args) = @_;
|
|
|
|
|
|
|
|
%{$self} = (%{$self},
|
|
|
|
'alternates' => "",
|
|
|
|
'detach-alternates' => 0 ,
|
|
|
|
'force' => 0 ,
|
|
|
|
'ignore-submodules' => 0 ,
|
|
|
|
'mirror-url' => "",
|
|
|
|
'mirror-webkit-url' => "",
|
|
|
|
'nokia-developer' => 0 ,
|
|
|
|
'protocol' => "",
|
|
|
|
'update' => 1 ,
|
|
|
|
'webkit' => 1 ,
|
|
|
|
);
|
|
|
|
|
|
|
|
GetOptionsFromArray(\@args,
|
|
|
|
'alternates=s' => \$self->{qw{ alternates }},
|
|
|
|
'copy-objects' => \$self->{qw{ detach-alternates }},
|
|
|
|
'force' => \$self->{qw{ force }},
|
|
|
|
'ignore-submodules' => \$self->{qw{ ignore_submodules }},
|
|
|
|
'mirror-webkit=s' => \$self->{qw{ mirror-webkit-url }},
|
|
|
|
'mirror=s' => \$self->{qw{ mirror-url }},
|
|
|
|
'nokia-developer' => \$self->{qw{ nokia-developer }},
|
|
|
|
'quiet' => \$self->{qw{ quiet }},
|
|
|
|
'update!' => \$self->{qw{ update }},
|
|
|
|
'webkit!' => \$self->{qw{ webkit }},
|
|
|
|
|
|
|
|
'help|?' => sub { pod2usage(1); },
|
|
|
|
'http' => sub { $self->{protocol} = 'http'; },
|
|
|
|
'ssh|ssh-protocol' => sub { $self->{protocol} = 'ssh'; },
|
|
|
|
|
|
|
|
'brisbane|brisbane-nokia-developer' => sub {
|
|
|
|
$self->{'nokia-developer'} = 1;
|
|
|
|
$self->{'protocol'} = 'internal';
|
|
|
|
$self->{'mirror-url'} = $BNE_MIRROR_URL_BASE;
|
|
|
|
$self->{'mirror-webkit-url'} = $BNE_MIRROR_WEBKIT_URL;
|
|
|
|
},
|
|
|
|
|
|
|
|
'nokia-developer' => sub {
|
|
|
|
$self->{'nokia-developer'} = 1;
|
|
|
|
$self->{'protocol'} = 'internal';
|
|
|
|
},
|
|
|
|
) || pod2usage(2);
|
|
|
|
|
|
|
|
if ($self->{'nokia-developer'} && $self->{'protocol'} eq 'http') {
|
|
|
|
print "*** Ignoring use of HTTP protocol, as it's only usable with external server\n";
|
|
|
|
$self->{'protocol'} = '';
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
|
|
|
|
# Replace any double trailing slashes from end of mirror
|
|
|
|
$self->{'mirror-url'} =~ s{//+$}{/};
|
|
|
|
|
|
|
|
return;
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
sub check_if_already_initialized
|
|
|
|
{
|
|
|
|
my ($self) = @_;
|
|
|
|
|
|
|
|
# We consider the repo as `initialized' if submodule.qtbase.url is set
|
|
|
|
if (qx(git config --get submodule.qtbase.url)) {
|
|
|
|
if ($self->{force}) {
|
|
|
|
my @configresult = qx(git config -l);
|
|
|
|
foreach (@configresult) {
|
|
|
|
# Example line: submodule.qtqa.url=git://gitorious.org/qt/qtqa.git
|
|
|
|
if (/(submodule\.[^.=]+)\.url=.*/) {
|
|
|
|
$self->exe('git', 'config', '--remove-section', $1);
|
|
|
|
}
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
else {
|
|
|
|
exit 0 if ($self->{quiet});
|
|
|
|
print "Will not reinitialize already initialized repository (use -f to force)!\n";
|
|
|
|
exit 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub git_submodule_init
|
|
|
|
{
|
|
|
|
my ($self) = @_;
|
|
|
|
|
|
|
|
my @init_args;
|
|
|
|
if ($self->{quiet}) {
|
|
|
|
push @init_args, '--quiet';
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
$self->exe('git', 'submodule', 'init', @init_args);
|
|
|
|
|
|
|
|
return;
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
sub git_disable_webkit_submodule
|
|
|
|
{
|
|
|
|
my ($self) = @_;
|
|
|
|
|
|
|
|
$self->exe('git', 'config', '--remove', 'submodule.qtwebkit');
|
|
|
|
$self->exe('git', 'config', '--remove', 'submodule.qtwebkit-examples-and-demos');
|
|
|
|
|
|
|
|
return;
|
2011-04-28 01:46:22 +00:00
|
|
|
}
|
2011-04-27 10:34:00 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
sub git_set_submodule_config
|
|
|
|
{
|
|
|
|
my ($self) = @_;
|
|
|
|
|
|
|
|
my @configresult = qx(git config -l);
|
|
|
|
my $protocol = $self->{protocol};
|
|
|
|
my $url_base_for_protocol = $PROTOCOLS{$protocol};
|
|
|
|
|
|
|
|
GITCONFIG:
|
|
|
|
foreach my $line (@configresult) {
|
|
|
|
# Example line: submodule.qtqa.url=git://gitorious.org/qt/qtqa.git
|
|
|
|
next GITCONFIG if ($line !~ /(submodule\.[^.=]+\.url)=(.*)/);
|
|
|
|
|
|
|
|
my $key = $1;
|
2011-05-03 09:08:50 +00:00
|
|
|
my $value = $2;
|
2011-05-06 00:52:54 +00:00
|
|
|
|
2011-05-04 17:49:18 +00:00
|
|
|
if ($protocol) {
|
2011-04-26 16:03:52 +00:00
|
|
|
# WebKit is special, and has only external link.
|
2011-05-06 00:52:54 +00:00
|
|
|
if ($key ne 'submodule.qtwebkit.url') {
|
2011-04-26 16:00:16 +00:00
|
|
|
# qt-labs projects are still hosted under qt internally.
|
2011-05-06 00:52:54 +00:00
|
|
|
if ($protocol ne 'http') {
|
|
|
|
$value =~ s,^git://gitorious\.org/qt-labs/,${url_base_for_protocol}qt/,;
|
|
|
|
}
|
|
|
|
$value =~ s,^git://gitorious\.org/,$url_base_for_protocol,;
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
|
|
|
|
$self->exe('git', 'config', $key, $value);
|
|
|
|
|
|
|
|
if ($self->{'ignore-submodules'}) {
|
2011-05-04 17:45:05 +00:00
|
|
|
$key =~ s,\.url,.ignore,;
|
2011-05-06 00:52:54 +00:00
|
|
|
$self->exe('git', 'config', $key, 'all');
|
2011-05-04 17:45:05 +00:00
|
|
|
}
|
2011-04-27 10:34:00 +00:00
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
|
|
|
|
return;
|
2011-05-03 09:08:50 +00:00
|
|
|
}
|
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
sub git_clone_all_submodules
|
|
|
|
{
|
|
|
|
my ($self) = @_;
|
2011-05-05 14:37:24 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
# manually clone each repo here, so we can easily use reference repos, mirrors and
|
|
|
|
# add all staging repos
|
|
|
|
my @configresult = qx(git config -l);
|
|
|
|
foreach my $line (@configresult) {
|
|
|
|
if ($line =~ /submodule\.([^.=]+)\.url=(.*)/) {
|
|
|
|
$self->git_clone_one_submodule($1, $2);
|
|
|
|
}
|
|
|
|
}
|
2011-05-05 14:37:24 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
$self->exe('git', 'submodule', 'update');
|
2011-05-05 14:37:24 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
return;
|
|
|
|
}
|
2011-05-05 14:37:24 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
sub git_clone_one_submodule
|
|
|
|
{
|
|
|
|
my ($self, $submodule, $url) = @_;
|
2011-05-05 14:37:24 +00:00
|
|
|
|
2011-05-06 00:52:54 +00:00
|
|
|
my $alternates = $self->{ 'alternates' };
|
|
|
|
my $mirror_url = $self->{ 'mirror-url' };
|
|
|
|
my $mirror_webkit_url = $self->{ 'mirror-webkit-url' };
|
|
|
|
my $protocol = $self->{protocol};
|
|
|
|
my $url_base_for_protocol = $PROTOCOLS{$protocol};
|
|
|
|
|
|
|
|
# `--reference FOO' args for the clone, if any.
|
|
|
|
my @reference_args;
|
|
|
|
|
|
|
|
if ($alternates) {
|
|
|
|
# alternates is a qt5 repo, so the submodule will be under that.
|
|
|
|
if (-d "$alternates/$submodule") {
|
|
|
|
@reference_args = ('--reference', "$alternates/$submodule");
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print " *** $alternates/$submodule not found, ignoring alternate for this submodule\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
my $mirror;
|
|
|
|
if ($mirror_url && ($submodule ne 'qtwebkit')) {
|
|
|
|
$mirror = $mirror_url.$submodule;
|
|
|
|
$mirror .= ".git" unless (-d $mirror); # Support local disk mirror
|
|
|
|
}
|
|
|
|
elsif ($mirror_webkit_url && ($submodule eq 'qtwebkit')) {
|
|
|
|
$mirror = $mirror_webkit_url;
|
|
|
|
}
|
|
|
|
|
|
|
|
my $do_clone = (! -d "$submodule/.git");
|
|
|
|
if ($do_clone) {
|
|
|
|
$self->exe('git', 'clone', @reference_args, ($mirror ? $mirror : $url), $submodule);
|
|
|
|
}
|
|
|
|
|
|
|
|
chdir($submodule) or confess "chdir $submodule: $OS_ERROR";
|
|
|
|
|
|
|
|
if (!$do_clone) {
|
|
|
|
$self->exe('git', 'fetch', ($mirror ? $mirror : $url));
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($mirror) {
|
|
|
|
$self->exe('git', 'config', 'remote.origin.url', $url);
|
|
|
|
$self->exe('git', 'remote', 'add', 'mirror', $mirror);
|
|
|
|
}
|
|
|
|
|
|
|
|
my %current_remotes;
|
|
|
|
for my $line (qx(git remote show)) {
|
|
|
|
chomp $line;
|
|
|
|
$current_remotes{$line} = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
# We assume that any staging starting with `$submodule-' relates to this
|
|
|
|
# submodule. For example, for the `qtbase' module, `qtbase-staging'
|
|
|
|
# and `qtbase-earth-staging' are considered as related staging repos.
|
|
|
|
my @staging = grep { /^\Q$submodule\E-/; } keys %STAGING_REPOS;
|
|
|
|
|
|
|
|
STAGING:
|
|
|
|
foreach my $staging_repo (@staging) {
|
|
|
|
# nothing to do if remote already exists
|
|
|
|
next STAGING if ($current_remotes{$staging_repo});
|
|
|
|
|
|
|
|
my $staging_repo_url = $STAGING_REPOS{$staging_repo};
|
|
|
|
if ($protocol) {
|
|
|
|
if ($protocol ne 'http') {
|
|
|
|
$staging_repo_url =~ s,^git://gitorious\.org/qt-labs/,${url_base_for_protocol}qt/,;
|
2011-05-04 21:07:30 +00:00
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
$staging_repo_url =~ s,^git://gitorious\.org/,$url_base_for_protocol,;
|
2011-04-28 06:02:39 +00:00
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
$self->exe('git', 'remote', 'add', $staging_repo, $staging_repo_url);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($self->{'detach-alternates'}) {
|
|
|
|
$self->exe('git', 'repack', '-a');
|
|
|
|
|
|
|
|
my $alternates_path = '.git/objects/info/alternates';
|
|
|
|
unlink($alternates_path) || confess "unlink $alternates_path: $OS_ERROR";
|
2011-04-28 06:02:39 +00:00
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
|
|
|
|
chdir("..") or confess "cd ..: $OS_ERROR";
|
|
|
|
|
|
|
|
return;
|
2011-04-28 11:25:41 +00:00
|
|
|
}
|
2011-05-06 00:52:54 +00:00
|
|
|
|
|
|
|
sub run
|
|
|
|
{
|
|
|
|
my ($self) = @_;
|
|
|
|
|
|
|
|
$self->check_if_already_initialized;
|
|
|
|
$self->git_submodule_init;
|
|
|
|
|
|
|
|
if (!$self->{webkit}) {
|
|
|
|
$self->git_disable_webkit_submodule;
|
|
|
|
}
|
|
|
|
|
|
|
|
$self->git_set_submodule_config;
|
|
|
|
|
|
|
|
if ($self->{update}) {
|
|
|
|
$self->git_clone_all_submodules;
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
#==============================================================================
|
|
|
|
|
|
|
|
Qt::InitRepository->new(@ARGV)->run if (!caller);
|
|
|
|
1;
|