author | andysimpson |
Thu, 24 Sep 2009 09:33:30 +0100 | |
changeset 60 | 3efaaf387e1a |
parent 59 | e86c659b78a0 |
child 62 | 9e7536b80766 |
permissions | -rw-r--r-- |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
1 |
#! perl |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
2 |
|
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
3 |
# Copyright (c) 2009 Symbian Foundation Ltd |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
4 |
# This component and the accompanying materials are made available |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
5 |
# under the terms of the License "Eclipse Public License v1.0" |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
6 |
# which accompanies this distribution, and is available |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
7 |
# at the URL "http://www.eclipse.org/legal/epl-v10.html". |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
8 |
# |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
9 |
# Initial Contributors: |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
10 |
# Symbian Foundation Ltd - initial contribution. |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
11 |
# |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
12 |
# Contributors: |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
13 |
# |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
14 |
# Description: |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
15 |
# Perl script to clone or update all of the Foundation MCL repositories |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
16 |
|
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
17 |
use strict; |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
18 |
use Getopt::Long; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
19 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
20 |
sub Usage($) |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
21 |
{ |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
22 |
my ($msg) = @_; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
23 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
24 |
print "$msg\n\n" if ($msg ne ""); |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
25 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
26 |
print <<'EOF'; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
27 |
clone_all_repositories - simple script for cloning Symbian repository tree |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
28 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
29 |
This script will clone repositories, or pull changes into a previously |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
30 |
cloned repository. The script will prompt for your username and |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
31 |
password, which will be needed to access the SFL repositories, or you can |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
32 |
supply them with command line arguments. |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
33 |
|
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
34 |
The list of packages can be supplied in a text file using the -packagelist |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
35 |
option, which is capable of reading the build-info.xml files supplied with |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
36 |
Symbian PDKs. Supplying a build-info.xml file will cause the clone or update |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
37 |
operation to use the exact revision for each of the relevant repositories. |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
38 |
|
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
39 |
Important: |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
40 |
This script uses https access to the repositories, so the username and |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
41 |
password will be stored as cleartext in the .hg/hgrc file for each repository. |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
42 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
43 |
Used with the "-mirror" option, the script will copy both MCL and FCL |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
44 |
repositories into the same directory layout as the Symbian website, and will |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
45 |
use the Mercurial "--noupdate" option when cloning. |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
46 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
47 |
Options: |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
48 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
49 |
-username username at the Symbian website |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
50 |
-password password to go with username |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
51 |
-mirror create a "mirror" of the Symbian repository tree |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
52 |
-packagelist file containing the URLs for the packages to be processed |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
53 |
-retries number of times to retry a failed operation (default 1) |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
54 |
-verbose print the underlying "hg" commands before executing them |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
55 |
-n do nothing - don't actually execute the commands |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
56 |
-help print this help information |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
57 |
-exec execute command on each repository |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
58 |
-filter <RE> only process repository paths matching regular expression <RE> |
50
88f86cd8d99b
clone_all_packages.pl - Enabled 'dummyrun' to be set from the command line using '-d' (or -'dummyrun') to help with trying out --exec style commands.
MattD <mattd@symbian.org>
parents:
47
diff
changeset
|
59 |
-dummyrun Dummy Run, don't execute any Mercurial commands. |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
60 |
|
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
61 |
The -exec option processes the rest of the command line, treating it as |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
62 |
a command to apply to each repository in turn. Some keywords are expanded |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
63 |
to repository-specific values, and "hg" is always expanded to "hg -R %REPO%" |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
64 |
|
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
65 |
%REPO% relative path to the repository |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
66 |
%WREPO% relative path to repository, with Windows path separators |
43
ddf62a543fb6
Added %HREPO% and %WHREPO%, to assist in cloning from network drives
William Roberts <williamr@symbian.org>
parents:
40
diff
changeset
|
67 |
%HREPO% path to the repository on the server |
ddf62a543fb6
Added %HREPO% and %WHREPO%, to assist in cloning from network drives
William Roberts <williamr@symbian.org>
parents:
40
diff
changeset
|
68 |
%WHREPO% path to the repository on the server, with Windows separators |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
69 |
%URL% URL of the master repository |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
70 |
%PUSHURL% URL suitable for pushing (always includes username & password) |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
71 |
%REV% revision associated with the repository (defaults to "tip") |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
72 |
|
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
73 |
It's often useful to use "--" to separate the exec command from the options |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
74 |
to this script, e.g. "-exec -- hg update -C tip" |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
75 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
76 |
EOF |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
77 |
exit (1); |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
78 |
} |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
79 |
|
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
80 |
my @clone_options = (); # use ("--noupdate") to clone without extracting the source |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
81 |
my @pull_options = (); # use ("--rebase") to rebase your changes when pulling |
7
2184cc44590a
Clone from developer.symbian.org (Bug 79) and use https for SFL packages
William Roberts <williamr@symbian.org>
parents:
5
diff
changeset
|
82 |
my $hostname = "developer.symbian.org"; |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
83 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
84 |
my $username = ""; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
85 |
my $password = ""; |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
86 |
my $mirror = 0; # set to 1 if you want to mirror the repository structure |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
87 |
my $retries = 1; # number of times to retry problem repos |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
88 |
my $verbose = 0; # turn on more tracing |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
89 |
my $do_nothing = 0; # print the hg commands, don't actually do them |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
90 |
my $help = 0; |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
91 |
my $exec = 0; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
92 |
my $filter = ""; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
93 |
my @packagelist_files = (); |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
94 |
|
38
759027e1c6b3
Improved robustness of package list location searching.
thomase
parents:
37
diff
changeset
|
95 |
my $program_path = $0; |
37
a1155a089aba
Updated script to use external lists of repositories managed dynamically by SCM people.
thomase
parents:
36
diff
changeset
|
96 |
|
38
759027e1c6b3
Improved robustness of package list location searching.
thomase
parents:
37
diff
changeset
|
97 |
# Analyse the rest of command-line parameters |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
98 |
if (!GetOptions( |
12
dda0176e838b
Fix mistake in -password and -username options, tweak the (doomed) sfl repository screen scraping
William Roberts <williamr@symbian.org>
parents:
11
diff
changeset
|
99 |
"u|username=s" => \$username, |
dda0176e838b
Fix mistake in -password and -username options, tweak the (doomed) sfl repository screen scraping
William Roberts <williamr@symbian.org>
parents:
11
diff
changeset
|
100 |
"p|password=s" => \$password, |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
101 |
"m|mirror" => \$mirror, |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
102 |
"r|retries=i" => \$retries, |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
103 |
"v|verbose" => \$verbose, |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
104 |
"n" => \$do_nothing, |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
105 |
"h|help" => \$help, |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
106 |
"e|exec" => \$exec, |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
107 |
"f|filter=s" => \$filter, |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
108 |
"l|packagelist=s" => \@packagelist_files, |
50
88f86cd8d99b
clone_all_packages.pl - Enabled 'dummyrun' to be set from the command line using '-d' (or -'dummyrun') to help with trying out --exec style commands.
MattD <mattd@symbian.org>
parents:
47
diff
changeset
|
109 |
"d|dummyrun" => \$do_nothing, |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
110 |
)) |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
111 |
{ |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
112 |
Usage("Invalid argument"); |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
113 |
} |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
114 |
|
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
115 |
Usage("Too many arguments") if (scalar @ARGV > 0 && !$exec); |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
116 |
Usage("Too few arguments for -exec") if (scalar @ARGV == 0 && $exec); |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
117 |
Usage("") if ($help); |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
118 |
|
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
119 |
# Important: This script uses http access to the repositories, so |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
120 |
# the username and password will be stored as cleartext in the |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
121 |
# .hg/hgrc file in each repository. |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
122 |
|
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
123 |
my $needs_id = 1; # assumed necessary for clone/pull |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
124 |
|
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
125 |
my @exec_cmd = @ARGV; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
126 |
if ($exec) |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
127 |
{ |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
128 |
if ($exec_cmd[0] eq "hg") |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
129 |
{ |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
130 |
shift @exec_cmd; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
131 |
unshift @exec_cmd, "hg", "-R", "%REPO%"; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
132 |
} |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
133 |
if ($verbose) |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
134 |
{ |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
135 |
print "* Exec template = >", join("<,>", @exec_cmd), "<\n"; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
136 |
} |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
137 |
$needs_id = grep /URL%/,@exec_cmd; # only need id if using %URL% or %PUSHURL% |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
138 |
} |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
139 |
|
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
140 |
if ($needs_id && $username eq "" ) |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
141 |
{ |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
142 |
print "Username: "; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
143 |
$username = <STDIN>; |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
144 |
chomp $username; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
145 |
} |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
146 |
if ($needs_id && $password eq "" ) |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
147 |
{ |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
148 |
print "Password: "; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
149 |
$password = <STDIN>; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
150 |
chomp $password; |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
151 |
} |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
152 |
|
30
cf4bd27a8280
Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents:
29
diff
changeset
|
153 |
my %export_control_special_case = ( |
cf4bd27a8280
Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents:
29
diff
changeset
|
154 |
"oss/MCL/sf/os/security" => 1, |
cf4bd27a8280
Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents:
29
diff
changeset
|
155 |
"oss/FCL/sf/os/security" => 1, |
cf4bd27a8280
Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents:
29
diff
changeset
|
156 |
); |
cf4bd27a8280
Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents:
29
diff
changeset
|
157 |
|
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
158 |
sub do_system(@) |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
159 |
{ |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
160 |
my (@cmd) = @_; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
161 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
162 |
if ($verbose) |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
163 |
{ |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
164 |
print "* ", join(" ", @cmd), "\n"; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
165 |
} |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
166 |
return 0 if ($do_nothing); |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
167 |
|
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
168 |
return system(@cmd); |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
169 |
} |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
170 |
|
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
171 |
my %revisions; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
172 |
|
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
173 |
sub process_one_repo($) |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
174 |
{ |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
175 |
my ($package) = @_; |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
176 |
my @dirs = split /\//, $package; |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
177 |
my $license = shift @dirs; |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
178 |
my $repotree = shift @dirs; # remove the MCL or FCL repo tree information |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
179 |
my $destdir = pop @dirs; # ignore the package name, because Mercurial will create that |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
180 |
|
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
181 |
if ($mirror) |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
182 |
{ |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
183 |
# Mirror the full directory structure, so put back the license & repotree dirs |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
184 |
unshift @dirs, $repotree; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
185 |
unshift @dirs, $license; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
186 |
} |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
187 |
|
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
188 |
# Ensure the directories already exist as far as the parent of the repository |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
189 |
my $path = ""; |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
190 |
foreach my $dir (@dirs) |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
191 |
{ |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
192 |
$path = ($path eq "") ? $dir : "$path/$dir"; |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
193 |
if (!-d $path) |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
194 |
{ |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
195 |
mkdir $path; |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
196 |
} |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
197 |
} |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
198 |
|
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
199 |
$path .= "/$destdir"; # this is where the repository will go |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
200 |
|
7
2184cc44590a
Clone from developer.symbian.org (Bug 79) and use https for SFL packages
William Roberts <williamr@symbian.org>
parents:
5
diff
changeset
|
201 |
my $repo_url = "https://$username:$password\@$hostname/$package/"; |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
202 |
my $repo_push_url =$repo_url; |
30
cf4bd27a8280
Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents:
29
diff
changeset
|
203 |
if ($license ne "sfl" && !$export_control_special_case{$package}) |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
204 |
{ |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
205 |
# user registration is not required for reading public package repositories |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
206 |
$repo_url = "http://developer.symbian.org/$package/"; |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
207 |
} |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
208 |
|
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
209 |
my @rev_options = (); |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
210 |
my $revision = $revisions{$package}; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
211 |
if (defined($revision)) |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
212 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
213 |
@rev_options = ("--rev", $revision); |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
214 |
} |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
215 |
else |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
216 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
217 |
$revision = "tip"; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
218 |
# and leave the rev_options list empty |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
219 |
} |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
220 |
|
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
221 |
my $ret; |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
222 |
if ($exec) |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
223 |
{ |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
224 |
# iteration functionality - process the keywords |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
225 |
my $wpath = $path; |
43
ddf62a543fb6
Added %HREPO% and %WHREPO%, to assist in cloning from network drives
William Roberts <williamr@symbian.org>
parents:
40
diff
changeset
|
226 |
my $wpackage = $package; |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
227 |
$wpath =~ s/\//\\/g; # win32 path separator |
43
ddf62a543fb6
Added %HREPO% and %WHREPO%, to assist in cloning from network drives
William Roberts <williamr@symbian.org>
parents:
40
diff
changeset
|
228 |
$wpackage =~ s/\//\\/g; # win32 path separator |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
229 |
my @repo_cmd = (); |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
230 |
foreach my $origcmd (@exec_cmd) |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
231 |
{ |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
232 |
my $cmd = $origcmd; # avoid altering the original |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
233 |
$cmd =~ s/%REPO%/$path/; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
234 |
$cmd =~ s/%WREPO%/$wpath/; |
43
ddf62a543fb6
Added %HREPO% and %WHREPO%, to assist in cloning from network drives
William Roberts <williamr@symbian.org>
parents:
40
diff
changeset
|
235 |
$cmd =~ s/%HREPO%/$package/; |
ddf62a543fb6
Added %HREPO% and %WHREPO%, to assist in cloning from network drives
William Roberts <williamr@symbian.org>
parents:
40
diff
changeset
|
236 |
$cmd =~ s/%WHREPO%/$wpackage/; |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
237 |
$cmd =~ s/%URL%/$repo_url/; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
238 |
$cmd =~ s/%PUSHURL%/$repo_push_url/; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
239 |
$cmd =~ s/%REV%/$revision/; |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
240 |
push @repo_cmd, $cmd; |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
241 |
} |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
242 |
print "Processing $path...\n"; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
243 |
$ret = do_system(@repo_cmd); |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
244 |
} |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
245 |
elsif (-d "$path/.hg") |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
246 |
{ |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
247 |
# The repository already exists, so just do an update |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
248 |
|
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
249 |
print "Updating $destdir from $package...\n"; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
250 |
$ret = do_system("hg", "pull", @pull_options, "-R", $path, $repo_url, @rev_options); |
40
0c8b7325c98e
Add extra login to do "hg update" after "hg pull" if not mirroring - to match clone_BOM.pl
William Roberts <williamr@symbian.org>
parents:
39
diff
changeset
|
251 |
if ($ret == 0 && ! $mirror) |
0c8b7325c98e
Add extra login to do "hg update" after "hg pull" if not mirroring - to match clone_BOM.pl
William Roberts <williamr@symbian.org>
parents:
39
diff
changeset
|
252 |
{ |
0c8b7325c98e
Add extra login to do "hg update" after "hg pull" if not mirroring - to match clone_BOM.pl
William Roberts <williamr@symbian.org>
parents:
39
diff
changeset
|
253 |
$ret = do_system("hg", "update", "-R", $path, @rev_options) |
0c8b7325c98e
Add extra login to do "hg update" after "hg pull" if not mirroring - to match clone_BOM.pl
William Roberts <williamr@symbian.org>
parents:
39
diff
changeset
|
254 |
} |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
255 |
} |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
256 |
else |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
257 |
{ |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
258 |
# Clone the repository |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
259 |
|
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
260 |
print "Cloning $destdir from $package...\n"; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
261 |
$ret = do_system("hg", "clone", @clone_options, $repo_url, $path, @rev_options); |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
262 |
} |
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
263 |
|
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
264 |
$ret = $ret >> 8; # extract the exit status |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
265 |
print "* Exit status $ret for $path\n\n" if ($verbose); |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
266 |
return $ret; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
267 |
} |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
268 |
|
45
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
269 |
my $add_implied_FCL_repos = 0; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
270 |
if (scalar @packagelist_files == 0) |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
271 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
272 |
# Read the package list files alongside the script itself |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
273 |
|
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
274 |
# Extract the path location of the program and locate package list files |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
275 |
$program_path =~ s/\\/\//g; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
276 |
$program_path =~ s/(^.*\/)[^\/]+$/$1/; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
277 |
foreach my $file ("sf_mcl_packages.txt", "sftools_mcl_packages.txt", "other_packages.txt") |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
278 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
279 |
push @packagelist_files, $program_path.$file; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
280 |
} |
45
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
281 |
$add_implied_FCL_repos = 1; # lists only contain the MCL repo locations |
5
c34a018f3291
Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff
changeset
|
282 |
} |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
283 |
|
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
284 |
my @all_packages = (); |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
285 |
|
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
286 |
foreach my $file (@packagelist_files) |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
287 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
288 |
print "* reading package information from $file...\n" if ($verbose); |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
289 |
open PKG_LIST, "<$file" or die "Can't open $file: $!\n"; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
290 |
foreach my $line (<PKG_LIST>) |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
291 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
292 |
chomp($line); |
59
e86c659b78a0
Fix Bug 387 - full newline processing as per "perlport" guidance
William Roberts <williamr@symbian.org>
parents:
50
diff
changeset
|
293 |
$line =~ s/\015//g; # remove CR, in case we are processing Windows text files on Linux |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
294 |
|
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
295 |
my $revision; # set when processing build-info listings |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
296 |
|
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
297 |
# build-info.xml format |
47
8e73266ba54f
Cope with PDK 2.0.c variation on build-info.xml format
William Roberts <williamr@symbian.org>
parents:
46
diff
changeset
|
298 |
# <baseline>//v800008/Builds01/mercurial_master_prod/sfl/MCL/sf/adaptation/stubs/#7:e086c7f635d5</baseline> |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
299 |
# <baseline>//v800008/Builds01/mercurial_master_prod/sfl/MCL/sf/adaptation/stubs/#:e086c7f635d5</baseline> |
47
8e73266ba54f
Cope with PDK 2.0.c variation on build-info.xml format
William Roberts <williamr@symbian.org>
parents:
46
diff
changeset
|
300 |
# <baseline>//v800008/Builds01/mercurial_master_prod/sfl/MCL/sf/adaptation/stubs/#e086c7f635d5</baseline> |
8e73266ba54f
Cope with PDK 2.0.c variation on build-info.xml format
William Roberts <williamr@symbian.org>
parents:
46
diff
changeset
|
301 |
if ($line =~ /<baseline>(.*)#(\d*:)?([0-9a-fA-F]+)<\/baseline>/i) |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
302 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
303 |
$line = $1; # discard the wrapping |
47
8e73266ba54f
Cope with PDK 2.0.c variation on build-info.xml format
William Roberts <williamr@symbian.org>
parents:
46
diff
changeset
|
304 |
$revision = $3; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
305 |
} |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
306 |
|
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
307 |
# Look for the oss/MCL/ prefix to a path e.g. |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
308 |
# https://developer.symbian.org/oss/FCL/interim/contrib/WidgetExamples |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
309 |
if ($line =~ /((oss|sfl)\/(FCL|MCL)\/.*)\s*$/) |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
310 |
{ |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
311 |
my $repo_path = $1; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
312 |
$repo_path =~ s/\/$//; # remove trailing slash, if any |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
313 |
|
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
314 |
push @all_packages, $repo_path; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
315 |
$revisions{$repo_path} = $revision if (defined $revision); |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
316 |
next; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
317 |
} |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
318 |
} |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
319 |
close PKG_LIST; |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
320 |
} |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
321 |
|
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
322 |
if ($mirror) |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
323 |
{ |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
324 |
push @clone_options, "--noupdate"; |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
325 |
|
45
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
326 |
if ($add_implied_FCL_repos) |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
327 |
{ |
45
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
328 |
# Assume that every MCL has a matching FCL. As we are mirroring, |
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
329 |
# we can process both without them overlapping in the local filesystem |
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
330 |
my @list_with_fcls = (); |
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
331 |
foreach my $package (@all_packages) |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
332 |
{ |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
333 |
push @list_with_fcls, $package; |
45
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
334 |
if ($package =~ /MCL/) |
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
335 |
{ |
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
336 |
$package =~ s/MCL/FCL/; |
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
337 |
push @list_with_fcls, $package; |
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
338 |
} |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
339 |
} |
45
00e1ecc15345
Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents:
43
diff
changeset
|
340 |
@all_packages = @list_with_fcls; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
341 |
} |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
342 |
} |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
343 |
|
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
344 |
my @problem_packages = (); |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
345 |
my $total_packages = 0; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
346 |
|
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
347 |
foreach my $package (@all_packages) |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
348 |
{ |
15
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
349 |
if ($filter && $package !~ /$filter/) |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
350 |
{ |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
351 |
next; # skip repos which don't match the filter |
880bb4a0a72d
Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents:
12
diff
changeset
|
352 |
} |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
353 |
my $err = process_one_repo($package); |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
354 |
$total_packages++; |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
355 |
push @problem_packages, $package if ($err < 0 || $err > 127); |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
356 |
} |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
357 |
|
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
358 |
# retry problem packages |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
359 |
|
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
360 |
my $attempt = 0; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
361 |
while ($attempt < $retries && scalar @problem_packages) |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
362 |
{ |
11
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
363 |
$attempt++; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
364 |
printf "\n\n------------\nRetry attempt %d on %d packages\n", |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
365 |
$attempt, scalar @problem_packages; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
366 |
print join("\n", @problem_packages, ""), "\n"; |
319764718a57
Add proper usage and more options (Bug 80). Add prototype screen-scraping to read repository list.
William Roberts <williamr@symbian.org>
parents:
10
diff
changeset
|
367 |
|
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
368 |
my @list = @problem_packages; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
369 |
@problem_packages = (); |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
370 |
foreach my $package (@list) |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
371 |
{ |
39
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
372 |
my $err = process_one_repo($package); |
674034f6180c
Add -packagelist option, which also supports build-info.xml to provide the equivalent of the clone_BOM.pl script
William Roberts <williamr@symbian.org>
parents:
38
diff
changeset
|
373 |
push @problem_packages, $package if ($err < 0 || $err > 127); |
10
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
374 |
} |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
375 |
} |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
376 |
|
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
377 |
printf "\n------------\nProcessed %d packages, of which %d reported errors\n", |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
378 |
$total_packages, scalar @problem_packages; |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
379 |
if (scalar @problem_packages) |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
380 |
{ |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
381 |
print join("\n", @problem_packages, ""); |
ccca32510405
Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents:
7
diff
changeset
|
382 |
} |