clone_packages/clone_all_packages.pl
author Simon Howkins <simonh@symbian.org>
Fri, 06 Nov 2009 12:10:52 +0000
changeset 98 5adea361d896
parent 96 bf4111f05106
child 115 671e371caeef
permissions -rw-r--r--
Bug 881: "Automatic creation of release note content broken by config change" Added a new option to allow the caller to specify where the publish location is. Minor improvements to formatting of output. Turned on warnings, and fixed most of those that appeared. Greatly simplified the checking of the script arguments. Removed code which was noted to be unnecessary, and was. Declared some variables more closely to the code that uses them.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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.
96
bf4111f05106 clone_all_packages.pl - Added optional '-webhost' parameter.
MattD <mattd@symbian.org>
parents: 94
diff changeset
    60
-webhost       Web Mercurial host (defaults to developer.symbian.org)
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
    61
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
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
    63
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
    64
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
    65
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
%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
    67
%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
    68
%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
    69
%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
    70
%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
    71
%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
    72
%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
    73
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
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
    75
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
    76
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
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
    78
  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
    79
  }
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
    80
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
    81
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
    82
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
    83
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
    84
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 $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
    86
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
    87
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
    88
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
    89
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
    90
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
    91
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
    92
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
    93
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
    94
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
    95
38
759027e1c6b3 Improved robustness of package list location searching.
thomase
parents: 37
diff changeset
    96
my $program_path = $0;
37
a1155a089aba Updated script to use external lists of repositories managed dynamically by SCM people.
thomase
parents: 36
diff changeset
    97
38
759027e1c6b3 Improved robustness of package list location searching.
thomase
parents: 37
diff changeset
    98
# 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
    99
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
   100
    "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
   101
    "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
   102
    "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
   103
    "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
   104
    "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
   105
    "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
   106
    "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
   107
    "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
   108
    "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
   109
    "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
   110
    "d|dummyrun" => \$do_nothing,
96
bf4111f05106 clone_all_packages.pl - Added optional '-webhost' parameter.
MattD <mattd@symbian.org>
parents: 94
diff changeset
   111
    "w|webhost=s" => \$hostname,
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
   112
    ))
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
  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
   115
  }
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
   116
  
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
   117
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
   118
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
   119
Usage("") if ($help);
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   120
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   121
# 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
   122
# 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
   123
# .hg/hgrc file in each repository.
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   124
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
   125
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
   126
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
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
   128
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
   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
  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
   131
    {
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
    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
   133
    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
   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
  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
   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
    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
   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
  $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
   140
  }
880bb4a0a72d Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents: 12
diff changeset
   141
880bb4a0a72d Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents: 12
diff changeset
   142
if ($needs_id && $username eq "" )
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   143
  {
10
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   144
  print "Username: ";
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   145
  $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
   146
  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
   147
  }
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
   148
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
   149
  {
10
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   150
  print "Password: ";
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   151
  $password = <STDIN>;
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   152
  chomp $password;
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   153
  }
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   154
30
cf4bd27a8280 Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents: 29
diff changeset
   155
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
   156
  "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
   157
  "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
   158
  );
cf4bd27a8280 Add special case handling for export controlled OSS repositories (currently sf/os/security)
William Roberts <williamr@symbian.org>
parents: 29
diff changeset
   159
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
   160
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
   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
  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
   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
  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
   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
    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
   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 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
   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
  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
   171
  }
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
   172
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
   173
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
   174
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
   175
sub process_one_repo($)
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   176
  {
10
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   177
  my ($package) = @_;
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   178
  my @dirs = split /\//, $package;
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   179
  my $license = shift @dirs;
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   180
  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
   181
  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
   182
  
10
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   183
  if ($mirror)
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   184
    {
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   185
    # 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
   186
    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
   187
    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
   188
    }
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   189
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   190
  # 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
   191
  my $path = "";
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   192
  foreach my $dir (@dirs)
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   193
    {
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   194
    $path = ($path eq "") ? $dir : "$path/$dir";
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   195
    if (!-d $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
      mkdir $path;
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
    }
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   200
  
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   201
  $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
   202
7
2184cc44590a Clone from developer.symbian.org (Bug 79) and use https for SFL packages
William Roberts <williamr@symbian.org>
parents: 5
diff changeset
   203
  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
   204
  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
   205
  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
   206
    {
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   207
    # user registration is not required for reading public package repositories
96
bf4111f05106 clone_all_packages.pl - Added optional '-webhost' parameter.
MattD <mattd@symbian.org>
parents: 94
diff changeset
   208
    $repo_url = "http://$hostname/$package/";
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   209
    }
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   210
  
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
   211
  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
   212
  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
   213
  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
   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
    @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
   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
  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
   218
    {
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
    $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
   220
    # 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
   221
    }
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
   222
  
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
   223
  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
   224
  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
   225
    {
880bb4a0a72d Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents: 12
diff changeset
   226
    # 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
   227
    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
   228
    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
   229
    $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
   230
    $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
   231
    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
   232
    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
   233
      {
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
      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
   235
      $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
   236
      $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
   237
      $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
   238
      $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
   239
      $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
   240
      $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
   241
      $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
   242
      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
   243
      }
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
    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
   245
    $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
   246
    }
880bb4a0a72d Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents: 12
diff changeset
   247
  elsif (-d "$path/.hg")
5
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
    # 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
   250
    
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   251
    print "Updating $destdir from $package...\n";
94
8b3aad972b66 Fix Bug 489 by moving the "--rev xxx" options to the correct place in the command line
William Roberts <williamr@symbian.org>
parents: 62
diff changeset
   252
    $ret = do_system("hg", "pull", @pull_options, @rev_options, "-R", $path, $repo_url);
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
   253
    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
   254
      {
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
   255
      $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
   256
      }
5
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
  else
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
    # Clone the repository
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   261
    
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   262
    print "Cloning $destdir from $package...\n";
94
8b3aad972b66 Fix Bug 489 by moving the "--rev xxx" options to the correct place in the command line
William Roberts <williamr@symbian.org>
parents: 62
diff changeset
   263
    $ret = do_system("hg", "clone", @clone_options, @rev_options, $repo_url, $path);
5
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   264
    }
c34a018f3291 Re-introduce the clone_all_packages.pl script
William Roberts <williamr@symbian.org>
parents:
diff changeset
   265
  
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
   266
  $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
   267
  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
   268
  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
   269
  }
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
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
   271
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
   272
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
   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
  # 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
   275
  
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
  # 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
   277
  $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
   278
  $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
   279
  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
   280
    {
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
   281
    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
   282
    }
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
   283
  $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
   284
  }
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
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
   287
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
   288
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
   289
  {
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
  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
   291
  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
   292
  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
   293
    {
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
    chomp($line);
62
9e7536b80766 removed duplicate lines due to faulty merge
tahirm@symbian.org
parents: 59
diff changeset
   295
59
e86c659b78a0 Fix Bug 387 - full newline processing as per "perlport" guidance
William Roberts <williamr@symbian.org>
parents: 50
diff changeset
   296
    $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
   297
    
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
   298
    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
   299
    
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
   300
    # 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
   301
    # <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
   302
    # <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
   303
    # <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
   304
    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
   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
      $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
   307
      $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
   308
      }
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
 
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
    # 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
   311
    # 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
   312
    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
   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
      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
   315
      $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
   316
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
      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
   318
      $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
   319
      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
   320
      }
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
   321
    }
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
   322
  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
   323
  }
10
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   324
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   325
if ($mirror)
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   326
  {
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   327
  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
   328
  
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
   329
  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
   330
    {
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
   331
    # 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
   332
    # 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
   333
    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
   334
    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
   335
      {
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
   336
      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
   337
      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
   338
        {
00e1ecc15345 Change -mirror so that explicit package lists don't get the "implied FCLs" added.
William Roberts <williamr@symbian.org>
parents: 43
diff changeset
   339
        $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
   340
        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
   341
        }
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
   342
      }
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
   343
    @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
   344
    }
10
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   345
  }
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
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
   348
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
   349
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   350
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
   351
  {
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
   352
  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
   353
    {
880bb4a0a72d Add the -exec and -filter options to clone_all_repositories, giving simple "iterator" functionality
William Roberts <williamr@symbian.org>
parents: 12
diff changeset
   354
    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
   355
    }
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
   356
  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
   357
  $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
   358
  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
   359
  }
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   360
  
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   361
# 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
   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
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
   364
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
   365
  {
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
   366
  $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
   367
  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
   368
    $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
   369
  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
   370
    
10
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   371
  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
   372
  @problem_packages = ();
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   373
  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
   374
    {
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
   375
    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
   376
    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
   377
   }
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   378
  }
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   379
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   380
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
   381
  $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
   382
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
   383
  {
ccca32510405 Prompt for username and password (Bug 80), support retries and repo mirroring
William Roberts <williamr@symbian.org>
parents: 7
diff changeset
   384
  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
   385
  }