qt5/init-repository

165 lines
5.3 KiB
Plaintext
Raw Normal View History

2011-04-27 10:34:00 +00:00
#!/usr/bin/perl -w
#############################################################################
##
## 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$
##
#############################################################################
my $force = 0;
my $quiet = 0;
my $nokia_developer = 0;
my $brisbane_mirror = 0;
2011-04-28 01:46:22 +00:00
my $no_webkit = 0;
my $no_update = 0;
2011-04-27 10:34:00 +00:00
sub system_v
{
if (!$quiet) {
print "+ ";
print @_;
print "\n";
}
return system(@_);
}
sub printUsage
{
print("$0 <options>\n");
2011-04-28 13:58:48 +00:00
print("-f\n\tForce initialization\n");
print("-q\n\tQuiet operation. Will exit cleanly if repository is already\n");
2011-04-27 10:34:00 +00:00
print("\tinitialized\n");
2011-04-28 13:58:48 +00:00
print("-nokia-developer\n\tSwitch to internal Nokia URLs.\n");
print("-brisbane-nokia-developer\n\tSwitch to internal Nokia URLs, and setup the brisbane mirrors.\n");
print("-no-webkit\n\tSkip webkit and webkit examples submodules.\n");
print("-no-update\n\t Skip the git submodule update command.\n");
2011-04-27 10:34:00 +00:00
}
while (@ARGV) {
my $arg = $ARGV[0];
if ($arg eq "-f") {
$force = 1;
} elsif ($arg eq "-q") {
$quiet = 1;
} elsif ($arg eq "-brisbane-nokia-developer") {
$nokia_developer = 1;
$brisbane_mirror = 1;
2011-04-27 10:34:00 +00:00
} elsif ($arg eq "-nokia-developer") {
$nokia_developer = 1;
} elsif ($arg eq "-h" || $arg eq "--help") {
printUsage();
exit 0;
2011-04-28 01:46:22 +00:00
} elsif ($arg eq "-no-webkit") {
$no_webkit = 1;
} elsif ($arg eq "-no-update") {
$no_update = 1;
2011-04-27 10:34:00 +00:00
} else {
die("Illegal argument: $arg");
}
shift;
}
if (`git config --get submodule.qtbase.url`) {
if ($force) {
my @configresult = `git config -l`;
foreach (@configresult) {
if (/(submodule\.[^.=]+\.url)=.*/) {
system_v("git config --unset $1");
}
}
} else {
exit 0 if ($quiet);
print("Will not reinitialize already initialized repository (use -f to force)!\n");
exit 1;
}
}
my $init_args = "";
$init_args = "-q" if ($quiet);
system_v("git submodule init $init_args");
2011-04-28 01:46:22 +00:00
if ($no_webkit){
system_v("git config --remove submodule.qtwebkit");
system_v("git config --remove submodule.qtwebkit-examples-and-demos");
}
2011-04-27 10:34:00 +00:00
if ($nokia_developer) {
my @configresult = `git config -l`;
foreach (@configresult) {
if (/(submodule\.[^.=]+\.url)=(.*)/) {
my $key = $1;
my $value = $2;
# WebKit is special, and has only external link.
if ($key ne "submodule.qtwebkit.url") {
2011-04-26 16:00:16 +00:00
# qt-labs projects are still hosted under qt internally.
$value =~ s,^git://gitorious\.org/qt-labs/,git://scm.dev.nokia.troll.no/qt/,;
$value =~ s,^git://gitorious\.org/,git://scm.dev.nokia.troll.no/,;
2011-04-27 10:34:00 +00:00
}
system_v("git config \"$key\" \"$value\"");
}
}
if ($brisbane_mirror) {
my $mirror_url = "git://bq-git.apac.nokia.com/qtsoftware/qt/";
my %exceptions = ("qtwebkit", "git://bq-git.apac.nokia.com/qtsoftware/research/gitorious-org-webkit-qtwebkit-mirror.git");
my @configresult2 = `git config -l`;
foreach (@configresult2) {
if(/submodule\.([^.=]+)\.url=(.*)/){
my $repo = $1;
my $url = $2;
my $this_mirror_url;
no warnings 'uninitialized';
if($exceptions{$repo} ne undef){
print("Alpha\n");
$this_mirror_url = $exceptions{$repo};
} else {
print("Beta\n");
$this_mirror_url = "$mirror_url$repo.git";
}
print("Using mirror $this_mirror_url to clone $url\n");
chdir($repo) or die "cd failed";#is there a continue instead of die?
system_v("git clone $this_mirror_url .");
system_v("git config remote.origin.url $url");
system_v("git remote add mirror $this_mirror_url");
chdir("..") or die "cd fail";
}
}
}
2011-04-27 10:34:00 +00:00
}
unless ($no_update){
system_v("git submodule update");
}