Subversion Repositories DevTools

Rev

Rev 6192 | Rev 6276 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6192 Rev 6198
Line 64... Line 64...
64
my @opt_ignorePackage;                      # Control recursion
64
my @opt_ignorePackage;                      # Control recursion
65
my $opt_allSandbox;                         # Extend scope to entire sandbox
65
my $opt_allSandbox;                         # Extend scope to entire sandbox
66
my $opt_processUsedBy;                      # Process dependants(consumers) not dependents(children)
66
my $opt_processUsedBy;                      # Process dependants(consumers) not dependents(children)
67
my $opt_keepgoing;                          # Ignore errors
67
my $opt_keepgoing;                          # Ignore errors
68
my $opt_reScan;                             # Rescan for buildfiles
68
my $opt_reScan;                             # Rescan for buildfiles
-
 
69
my $opt_multiBuilders = 0;                  # How handle packages with multiple bulders: 0:Error, 1:Report, 2:Ignore
69
 
70
 
70
#
71
#
71
#   Globals - Provided by the JATS environment
72
#   Globals - Provided by the JATS environment
72
#
73
#
73
my $USER            = $ENV{'USER'};
74
my $USER            = $ENV{'USER'};
Line 92... Line 93...
92
my @build_order = ();                           # Build Ordered list of entries
93
my @build_order = ();                           # Build Ordered list of entries
93
my %extern_deps;                                # Hash of external dependencies
94
my %extern_deps;                                # Hash of external dependencies
94
my %packages;                                   # Hash of packages
95
my %packages;                                   # Hash of packages
95
my $currentPkgTag;                              # Tag of the current package - if any                                          
96
my $currentPkgTag;                              # Tag of the current package - if any                                          
96
my $scanDepth;                                  # Depth for build file scan
97
my $scanDepth;                                  # Depth for build file scan
-
 
98
my $maxDname = 0;                               # Pretty display
97
 
99
 
98
#
100
#
99
#   Known files
101
#   Known files
100
#
102
#
101
my $cacheFile  = $GBE_DPKG_SBOX . '/location_cache';
103
my $cacheFile  = $GBE_DPKG_SBOX . '/location_cache';
102
my $depthFile  = $GBE_DPKG_SBOX . '/scanDepth';
104
my $depthFile  = $GBE_DPKG_SBOX . '/scanDepth';
103
my $filterFile = $GBE_SANDBOX   . '/buildfilter';
105
my $filterFile = $GBE_DPKG_SBOX . '/buildfilter';
104
 
106
 
105
#-------------------------------------------------------------------------------
107
#-------------------------------------------------------------------------------
106
# Function        : Mainline Entry Point
108
# Function        : Mainline Entry Point
107
#
109
#
108
# Description     :
110
# Description     :
Line 355... Line 357...
355
    my $show = 0;
357
    my $show = 0;
356
    my $showUsage = 0;
358
    my $showUsage = 0;
357
    my $showFingerPrint = 0;
359
    my $showFingerPrint = 0;
358
    my $showDependencies = 1;
360
    my $showDependencies = 1;
359
    my $showOrder = 1;
361
    my $showOrder = 1;
-
 
362
    my $showPath = 0;
360
 
363
 
361
    Getopt::Long::Configure('pass_through');
364
    Getopt::Long::Configure('pass_through');
362
    getOptionsFromArray ( \@cmd_opts,
365
    getOptionsFromArray ( \@cmd_opts,
363
                          'verbose:+'       => \$show,
366
                          'verbose:+'       => \$show,
364
                          'usedby'          => \$showUsage,
367
                          'usedby'          => \$showUsage,
365
                          'fingerprint!'    => \$showFingerPrint,
368
                          'fingerprint!'    => \$showFingerPrint,
366
                          'dependencies!'   => \$showDependencies,
369
                          'dependencies!'   => \$showDependencies,
367
                          'buildorder!'     => \$showOrder,
370
                          'buildorder!'     => \$showOrder,
-
 
371
                          'path!'           => \$showPath,
368
                        ) || Error ("Invalid command line" );
372
                        ) || Error ("Invalid command line" );
369
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#cmd_opts >=0 );
373
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#cmd_opts >=0 );
370
    $showUsage = 1 if ($show >= 2);
374
    $showUsage = 1 if ($show >= 2);
371
 
375
 
372
    #
376
    #
Line 385... Line 389...
385
    Message ("BuildFilter: $GBE_BUILDFILTER" . ( (-f $filterFile)  ? ' - Local to sandbox' : ''));
389
    Message ("BuildFilter: $GBE_BUILDFILTER" . ( (-f $filterFile)  ? ' - Local to sandbox' : ''));
386
 
390
 
387
    if ($showOrder)
391
    if ($showOrder)
388
    {
392
    {
389
        Message ("Build Order");
393
        Message ("Build Order");
390
        foreach my $pname ( @stopped )
394
        foreach my $pname ( @stopped ) {
391
        {
-
 
392
            Message( "    Level:" . "--"  . " [---] Name: " . $pname . ' (Stopped)');
395
            Message( "    Level:" . "--"  . " [---] Name: " . $pname . ' (Stopped)');
393
        }
396
        }
-
 
397
 
394
        foreach my $fe ( @build_order )
398
        foreach my $fe ( @build_order )
395
        {
399
        {
396
            displayHeader($fe, { indent => '    ', testFingerPrint =>  $showFingerPrint, showIcons => 1});
400
            displayHeader($fe, { indent => '    ', testFingerPrint =>  $showFingerPrint, showSimplePath => $showPath });
397
 
401
 
398
            if ( $show )
402
            if ( $show )
399
            {
403
            {
400
                Message( DisplayPath ("        Path: $fe->{dir}" ));
404
                Message( DisplayPath ("        Path: $fe->{dir}" ));
401
                foreach my $idep ( sort values %{$fe->{'ideps'}} )
405
                foreach my $idep ( sort values %{$fe->{'ideps'}} )
Line 544... Line 548...
544
        {
548
        {
545
            my $ifaceDir = getpkgInterface($pe);
549
            my $ifaceDir = getpkgInterface($pe);
546
            if ($ifaceDir)
550
            if ($ifaceDir)
547
            {
551
            {
548
                Message ("Generate Fingerprint");
552
                Message ("Generate Fingerprint");
-
 
553
                Verbose ("Fingerprint file: $tagFile");
549
                FileCreate( $tagFile, genPkgFingerPrint($pe,'Generation') );
554
                FileCreate( $tagFile, genPkgFingerPrint($pe,'Generation') );
550
            }
555
            }
551
            else
556
            else
552
            {
557
            {
553
                Warning("Package has not been built. Cannot generate fingerprint: $pkgName");
558
                Warning("Package has not been built. Cannot generate fingerprint: $pkgName");
Line 800... Line 805...
800
#                       @build_order - build ordered array of build entries
805
#                       @build_order - build ordered array of build entries
801
#
806
#
802
sub calc_sandbox_info
807
sub calc_sandbox_info
803
{
808
{
804
    my ($quiet) = @_;
809
    my ($quiet) = @_;
-
 
810
    my $buildFileDepth = 0;
805
    getScanDepth();
811
    getScanDepth();
806
 
812
 
807
    #
813
    #
808
    #   Start from the root of the sandbox
814
    #   Start from the root of the sandbox
809
    #
815
    #
Line 878... Line 884...
878
 
884
 
879
    unless (@build_list)
885
    unless (@build_list)
880
    {
886
    {
881
        Message ("Scanning sandbox for build files");
887
        Message ("Scanning sandbox for build files");
882
        FileCreate($cacheFile, $currentRootFingerPrint );
888
        FileCreate($cacheFile, $currentRootFingerPrint );
883
        Message ("Build File scan depth: ". $scanDepth) if ($SCANDEPTH ne $scanDepth);
-
 
884
 
889
 
885
        my @locationData;
890
        my @locationData;
886
        foreach my $pname ( glob("*") )
891
        foreach my $pname ( glob("*") )
887
        {
892
        {
888
            next if ( $pname =~ m~^\.~ );
893
            next if ( $pname =~ m~^\.~ );
Line 914... Line 919...
914
                Warning ("Package does not have build files: $pname") unless ( @blist );
919
                Warning ("Package does not have build files: $pname") unless ( @blist );
915
                Warning ("Package has multiple build files: $pname") if ( $#blist > 0 );
920
                Warning ("Package has multiple build files: $pname") if ( $#blist > 0 );
916
            }
921
            }
917
            push @build_list, @blist;
922
            push @build_list, @blist;
918
            push @locationData, $bscanner->getLocation();
923
            push @locationData, $bscanner->getLocation();
-
 
924
 
-
 
925
            #
-
 
926
            #   Determine max build file depth - just to show user
-
 
927
            #
-
 
928
            foreach ( @blist)
-
 
929
            {
-
 
930
                my $count = () = $_->{dir} =~ m~/~g;
-
 
931
                $buildFileDepth = $count if ($count > $buildFileDepth)
-
 
932
            }
-
 
933
            
-
 
934
 
919
        }
935
        }
-
 
936
        Message ("Max Build File Depth : " . ($buildFileDepth + 1));
-
 
937
        Message ("Build File Scan Depth: ". $scanDepth) if ($SCANDEPTH ne $scanDepth);
-
 
938
 
920
 
939
 
921
        #
940
        #
922
        #   Save (cache) location information
941
        #   Save (cache) location information
923
        #
942
        #
924
        FileAppend($cacheFile, @locationData);
943
        FileAppend($cacheFile, @locationData);
Line 942... Line 961...
942
        #       Set a suitable tag
961
        #       Set a suitable tag
943
        #
962
        #
944
        $be->{dname} = $opt_exact ? $be->{full}    : $be->{mname};
963
        $be->{dname} = $opt_exact ? $be->{full}    : $be->{mname};
945
        $be->{tag}   = $opt_exact ? $be->{fullTag} : $be->{package};
964
        $be->{tag}   = $opt_exact ? $be->{fullTag} : $be->{package};
946
        $be->{fname} = join ('_', $be->{name}, $be->{version});
965
        $be->{fname} = join ('_', $be->{name}, $be->{version});
-
 
966
        if (length ($be->{dname}) > $maxDname ) {
-
 
967
             $maxDname = length ($be->{dname});
-
 
968
        }
947
 
969
 
948
#        DebugDumpData ("be", $be );
970
#        DebugDumpData ("be", $be );
949
 
971
 
950
        #
972
        #
951
        #   Catch multiple builds for the same package
973
        #   Catch multiple builds for the same package
952
        #   Report later - when we have all
974
        #   Report later - when we have all
953
        #
975
        #
954
        next unless ( $be->{dname} );
976
        next unless ( $be->{dname} );
955
        push @{$multi{$be->{dname}}},$be->{dir};
977
        push @{$multi{$be->{dname}}},$be;
956
 
-
 
957
        #
-
 
958
        #   Add into dependency struct
-
 
959
        #
-
 
960
        $depends{$be->{tag}} = $be;
-
 
961
    }
978
    }
962
 
979
 
-
 
980
    #
-
 
981
    #   Detect, process and report packages that have multiple builders
-
 
982
    #       An error that can be ignored
-
 
983
    #
963
    foreach my $dname ( sort keys %multi )
984
    foreach my $dname ( sort keys %multi )
964
    {
985
    {
965
        ReportError ("Multiple builders for : $dname", @{$multi{$dname}} )
986
        my $errFn = $opt_multiBuilders ? \&Warning : \&ReportError;
966
            if ( scalar @{$multi{$dname}} > 1 );
987
        if ( scalar @{$multi{$dname}} > 1 )
-
 
988
        {
-
 
989
            my @dirList;
-
 
990
            foreach my $be (@{$multi{$dname}}) {
-
 
991
                push @dirList, $be->{dir};
-
 
992
            }           
-
 
993
            &$errFn("Multiple builders for : $dname", @dirList ) unless $opt_multiBuilders > 1;
-
 
994
        }
-
 
995
        else
-
 
996
        {
-
 
997
            #
-
 
998
            #   Add into dependency struct
-
 
999
            #
-
 
1000
            foreach my $be (@{$multi{$dname}}) {
-
 
1001
                $depends{$be->{tag}} = $be;
-
 
1002
            }
-
 
1003
        }
967
    }
1004
    }
-
 
1005
    %multi = ();
968
    ErrorDoExit();
1006
    ErrorDoExit();
969
 
1007
 
970
#DebugDumpData ("depends", \%depends );
1008
#DebugDumpData ("depends", \%depends );
971
 
1009
 
972
    #
1010
    #
Line 1312... Line 1350...
1312
# Returns         : Will exit
1350
# Returns         : Will exit
1313
#
1351
#
1314
sub cmd
1352
sub cmd
1315
{
1353
{
1316
    my ($hcmd, @cmd_opts ) = @_;
1354
    my ($hcmd, @cmd_opts ) = @_;
-
 
1355
    my $opt_reverse;
1317
 
1356
 
1318
    Getopt::Long::Configure('pass_through');
1357
    Getopt::Long::Configure('pass_through');
-
 
1358
    getOptionsFromArray ( \@cmd_opts,
-
 
1359
                          'reverse!' => \$opt_reverse,
1319
    getOptionsFromArray ( \@cmd_opts ) || Error ("Invalid command line" );
1360
                          ) || Error ("Invalid command line" );
1320
    SubCommandHelp( $opt_help, $hcmd) if ($opt_help  );
1361
    SubCommandHelp( $opt_help, $hcmd) if ($opt_help  );
1321
 
1362
 
1322
    #
1363
    #
1323
    #   Determine Sandbox information
1364
    #   Determine Sandbox information
1324
    #   Populate global variables
1365
    #   Populate global variables
1325
    #
1366
    #
1326
    calc_sandbox_info();
1367
    calc_sandbox_info();
-
 
1368
    if ($opt_reverse) {
-
 
1369
        @build_order = reverse @build_order;
-
 
1370
    }
1327
    foreach my $fe ( @build_order )
1371
    foreach my $fe ( @build_order )
1328
    {
1372
    {
1329
        my $active = displayHeader($fe, { showPath => 1 });
1373
        my $active = displayHeader($fe, { showPath => 1 });
1330
 
1374
 
1331
        if ($active)
1375
        if ($active)
Line 1447... Line 1491...
1447
                        if ($opt_keepgoing)
1491
                        if ($opt_keepgoing)
1448
                        {
1492
                        {
1449
                            Warning( "Build Cmd failure - Keep going");
1493
                            Warning( "Build Cmd failure - Keep going");
1450
                            next;
1494
                            next;
1451
                        }
1495
                        }
1452
                        Error ("Build Cmd failure");
1496
                        Error ("Build Cmd failure: $dir");
1453
                    }
1497
                    }
1454
 
1498
 
1455
                    #
1499
                    #
1456
                    #   Skip make if we have a prebuilt package
1500
                    #   Skip make if we have a prebuilt package
1457
                    #
1501
                    #
Line 1466... Line 1510...
1466
                            if ($opt_keepgoing)
1510
                            if ($opt_keepgoing)
1467
                            {
1511
                            {
1468
                                Warning( "Make Cmd failure - Keep going");
1512
                                Warning( "Make Cmd failure - Keep going");
1469
                                next;
1513
                                next;
1470
                            }
1514
                            }
1471
                            Error ("Make Cmd failure");
1515
                            Error ("Make Cmd failure: $dir");
1472
                        }
1516
                        }
1473
                    }
1517
                    }
1474
                }
1518
                }
1475
 
1519
 
-
 
1520
                Verbose ("Save fingerprint: $tagFile");
1476
                FileCreate( $tagFile, genPkgFingerPrint($fe,'Generation') );
1521
                FileCreate( $tagFile, genPkgFingerPrint($fe,'Generation') );
1477
            }
1522
            }
1478
            else
1523
            else
1479
            {
1524
            {
1480
                Message ("No file changes since last build. Skipping")
1525
                Message ("No file changes since last build. Skipping")
Line 1483... Line 1528...
1483
    }
1528
    }
1484
 
1529
 
1485
    exit 0;
1530
    exit 0;
1486
}
1531
}
1487
 
1532
 
1488
 
-
 
1489
#-------------------------------------------------------------------------------
1533
#-------------------------------------------------------------------------------
1490
# Function        : clean
1534
# Function        : clean
1491
#
1535
#
1492
# Description     : Execute a command in all the sandboxes
1536
# Description     : Execute a command in all the sandboxes
1493
#                       Locate the base of the sandbox
1537
#                       Locate the base of the sandbox
Line 2108... Line 2152...
2108
sub getOptionsFromArray
2152
sub getOptionsFromArray
2109
{
2153
{
2110
    my ($pArray, %args) = @_;
2154
    my ($pArray, %args) = @_;
2111
 
2155
 
2112
    #
2156
    #
-
 
2157
    #   Helper to parse --multiBuilders
-
 
2158
    #
-
 
2159
    my $parseMulti = sub {
-
 
2160
        my ($ref, $value) = @_;
-
 
2161
        $value = 'error' unless length($value);
-
 
2162
        my %valid = (error => 0, report => 1, ignore => 2);
-
 
2163
        unless (exists $valid{lc $value}) {
-
 
2164
            die ("Invalid option for  --$ref->{name}\n");
-
 
2165
        };
-
 
2166
        $opt_multiBuilders = $valid{lc $value};
-
 
2167
    };
-
 
2168
 
-
 
2169
 
-
 
2170
    #
2113
    #   Common arguments
2171
    #   Common arguments
2114
    #
2172
    #
2115
    my %commonOptions = (
2173
    my %commonOptions = (
2116
        'help|h:+'          => \$opt_help,
2174
        'help|h:+'          => \$opt_help,
2117
        'manual:3'          => \$opt_help,
2175
        'manual:3'          => \$opt_help,
Line 2122... Line 2180...
2122
        'ignorepackage:s'   => sub{ opts_add2List( \@opt_ignorePackage, @_ )},
2180
        'ignorepackage:s'   => sub{ opts_add2List( \@opt_ignorePackage, @_ )},
2123
        'entireSandBox!'    => \$opt_allSandbox,
2181
        'entireSandBox!'    => \$opt_allSandbox,
2124
        'users!'            => \$opt_processUsedBy,
2182
        'users!'            => \$opt_processUsedBy,
2125
        'keepgoing!'        => \$opt_keepgoing,
2183
        'keepgoing!'        => \$opt_keepgoing,
2126
        'rescan!'           => \$opt_reScan,
2184
        'rescan!'           => \$opt_reScan,
-
 
2185
        'multiBuilders:s'   => $parseMulti, 
2127
        );
2186
        );
2128
 
2187
 
2129
    #
2188
    #
2130
    #   Merge in the user options
2189
    #   Merge in the user options
2131
    #
2190
    #
Line 2141... Line 2200...
2141
}
2200
}
2142
 
2201
 
2143
#-------------------------------------------------------------------------------
2202
#-------------------------------------------------------------------------------
2144
# Function        : displayHeader 
2203
# Function        : displayHeader 
2145
#
2204
#
2146
# Description     : Display a build header
2205
# Description     : Display a build header, if the entry is active
-
 
2206
#                   ie: Between a --From and --To
2147
#
2207
#
2148
# Inputs          : $fe             - Build entry
2208
# Inputs          : $fe             - Build entry
-
 
2209
#                   Hash of options
2149
#                   $indent         - Indent text
2210
#                       indent          => Text       - Indent text
2150
#                   $showPath       - Boolean
2211
#                       showPath        => Bool
-
 
2212
#                       showSimplePath  => Bool
-
 
2213
#                       testFingerPrint => Bool
2151
#
2214
#
2152
# Returns         : True if this entry is to be fully process
2215
# Returns         : True if this entry is to be fully process
2153
#                   False if its being skipped 
2216
#                   False if its being skipped 
2154
#
2217
#
2155
sub displayHeader
2218
sub displayHeader
2156
{
2219
{
2157
    my $fe = shift @_;
2220
    my $fe = shift @_;
-
 
2221
    if ($fe->{buildActive} || $fe->{buildSkip})
-
 
2222
    {
2158
    my $args = pop @_ if (@_ > 0 and UNIVERSAL::isa($_[-1],'HASH'));
2223
        my $args = pop @_ if (@_ > 0 and UNIVERSAL::isa($_[-1],'HASH'));
2159
    #    my ($fe, %args) = @_;
2224
        #    my ($fe, %args) = @_;
2160
 
-
 
2161
    my $indent = $args->{indent} || '';
-
 
2162
    my $showPath = $args->{showPath};
-
 
2163
 
-
 
2164
    my ($status, $estatus) = addBuildInfo($fe, $args);
-
 
2165
 
2225
 
-
 
2226
        my $indent = $args->{indent} || '';
-
 
2227
        my $showPath = $args->{showPath};
-
 
2228
        my $showSimplePath = $args->{showSimplePath};
-
 
2229
 
-
 
2230
        my ($status, $estatus) = addBuildInfo($fe, $args);
-
 
2231
        $estatus = '' if $showSimplePath;
-
 
2232
         
2166
    my $msg1 = $indent . sprintf('Level:%02d [%s] Name: %s', $fe->{level}, $status, $fe->{dname} . $estatus );
2233
        my $msg1 = $indent . sprintf('Level:%02d [%s] Name: %s', $fe->{level}, $status, $fe->{dname} . $estatus );
-
 
2234
        if ($showSimplePath) {
-
 
2235
            my $msg1Len = length($msg1);
-
 
2236
            $msg1 = sprintf("%-*s Path: %s", 26 + $maxDname ,$msg1, $fe->{dir}); 
-
 
2237
        }
2167
    if ( $showPath) {
2238
        if ( $showPath) {
2168
        my $msg1Len = length($msg1);
2239
            my $msg1Len = length($msg1);
2169
        if ($msg1Len < 80) {
2240
            if ($msg1Len < 80) {
2170
            $msg1 .= ' ' . '=' x (79 - $msg1Len);
2241
                $msg1 .= ' ' . '=' x (79 - $msg1Len);
-
 
2242
            }
2171
        }
2243
        }
-
 
2244
        Message( $msg1 ,  $showPath ? DisplayPath ("        Path: $fe->{dir}" ) : undef);
2172
    }
2245
    }
2173
    Message( $msg1 ,  $showPath ? DisplayPath ("        Path: $fe->{dir}" ) : undef);
-
 
2174
 
2246
 
2175
   return $fe->{buildActive};
2247
   return $fe->{buildActive};
2176
}
2248
}
2177
 
2249
 
2178
#-------------------------------------------------------------------------------
2250
#-------------------------------------------------------------------------------
Line 2503... Line 2575...
2503
    -fromPackage=name          - Start building from package
2575
    -fromPackage=name          - Start building from package
2504
    -justPackage=name[,name]   - Build named packages
2576
    -justPackage=name[,name]   - Build named packages
2505
    -ignorePackage=name[,name] - Do not build named packages
2577
    -ignorePackage=name[,name] - Do not build named packages
2506
    -entireSandbox             - Process the entire sandbox
2578
    -entireSandbox             - Process the entire sandbox
2507
    -users                     - Process package users, not dependencies
2579
    -users                     - Process package users, not dependencies
-
 
2580
 Options common to all commands:
2508
    -[no]keepgoing             - Ignore errors
2581
    -[no]keepgoing             - Ignore errors
2509
    -[no]reScan                - Recalculate and cache sandbox structure
2582
    -[no]reScan                - Recalculate and cache sandbox structure
-
 
2583
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
2510
 
2584
 
2511
 Commands:
2585
 Commands:
2512
    help                - Same as -help
2586
    help                - Same as -help
2513
    create              - Create a sandbox in the current directory
2587
    create              - Create a sandbox in the current directory
2514
    populate            - Populate the sandbox with packages
2588
    populate            - Populate the sandbox with packages
Line 2618... Line 2692...
2618
 
2692
 
2619
The package names can be specified as a mix of the three forms described under the '-toPackage' option.
2693
The package names can be specified as a mix of the three forms described under the '-toPackage' option.
2620
 
2694
 
2621
=item B<-[no]entireSandbox>
2695
=item B<-[no]entireSandbox>
2622
 
2696
 
2623
This option will override the automatic package localisation that will occur if the user starts the comamnd
2697
This option will override the automatic package localisation that will occur if the user starts the command
2624
within a subdirectory of a package within the sandbox and will process the entire sabdbox.
2698
within a subdirectory of a package within the sandbox and will process the entire sanbbox.
2625
 
2699
 
2626
If the user start the command within a subdirectory of a package then the sandbox commands will be localised
2700
If the user start the command within a subdirectory of a package then the sandbox commands will be localised
2627
to the current package and the dependencies of the package.
2701
to the current package and the dependencies of the package.
2628
 
2702
 
2629
=item B<-[no]users>
2703
=item B<-[no]users>
Line 2654... Line 2728...
2654
 
2728
 
2655
If a package is added or removed from the sandbox, then the sandbox will need to be rescanned.
2729
If a package is added or removed from the sandbox, then the sandbox will need to be rescanned.
2656
Jats will detect when a package has been added or removed, but if the internal structure of the
2730
Jats will detect when a package has been added or removed, but if the internal structure of the
2657
packages has changed the cached data may be incorrect. 
2731
packages has changed the cached data may be incorrect. 
2658
 
2732
 
-
 
2733
=item B<-multiBuilders=mode>
-
 
2734
 
-
 
2735
If a package-name can be built by multiple packages then the sandbox processing will
-
 
2736
normally report an error.
-
 
2737
 
-
 
2738
This option allow the error to be reported as a warning or to be ignored altogether. The named package will be 
-
 
2739
excluded from the build set.
-
 
2740
 
-
 
2741
Valid values for 'mode' are: error, report and ignore.  The default mode is 'error'.
-
 
2742
 
2659
=back
2743
=back
2660
 
2744
 
2661
=head1 DESCRIPTION
2745
=head1 DESCRIPTION
2662
 
2746
 
2663
This program is the primary tool for the maintenance of Development Sandboxes.
2747
This program is the primary tool for the maintenance of Development Sandboxes.
Line 2764... Line 2848...
2764
 
2848
 
2765
=head2 SYNOPSIS
2849
=head2 SYNOPSIS
2766
 
2850
 
2767
jats sandbox populate [command options] [packageName packageVersion]
2851
jats sandbox populate [command options] [packageName packageVersion]
2768
 
2852
 
2769
 Command Options
2853
 Common Options:
2770
    -help[=n]                  - Command specific help, [n=1,2,3]
2854
    -help[=n], -man            - Command specific help, [n=1,2,3]
2771
    -toPackage=name            - Stop building after package
2855
    -toPackage=name            - Stop building after package
2772
    -fromPackage=name          - Start building from package
2856
    -fromPackage=name          - Start building from package
2773
    -justPackage=name[,name]   - Build named packages
2857
    -justPackage=name[,name]   - Build named packages
2774
    -ignorePackage=name[,name] - Do not build named packages
2858
    -ignorePackage=name[,name] - Do not build named packages
2775
    -entireSandbox             - Process the entire sandbox
2859
    -entireSandbox             - Process the entire sandbox
2776
    -users                     - Process package users, not dependencies
2860
    -users                     - Process package users, not dependencies
-
 
2861
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
-
 
2862
    -[no]keepgoing             - Ignore errors
-
 
2863
    -[no]reScan                - Recalculate and cache sandbox structure
-
 
2864
 Command Specific Options
2777
    -excludePackage=name[,name]- Do not extract named package
2865
    -excludePackage=name[,name]- Do not extract named package
2778
    -recurse[=n]               - Locate dependencies within packages
2866
    -recurse[=n]               - Locate dependencies within packages
2779
    -all                       - Populate with all dependencies
2867
    -all                       - Populate with all dependencies
2780
    -missing                   - Locate missing packages
2868
    -missing                   - Locate missing packages
2781
    -show                      - Show packages that would be extracted
2869
    -show                      - Show packages that would be extracted
Line 2977... Line 3065...
2977
 
3065
 
2978
=head2 SYNOPSIS
3066
=head2 SYNOPSIS
2979
 
3067
 
2980
jats sandbox info [command options]
3068
jats sandbox info [command options]
2981
 
3069
 
2982
 Command Options
3070
 Common Options:
2983
    -help[=n]                  - Command specific help, [n=1,2,3]
3071
    -help[=n], -man            - Command specific help, [n=1,2,3]
2984
    -verbose[=n]               - Display more information
-
 
2985
    -usedby                    - Display package usage information
-
 
2986
    -toPackage=name            - Stop building after package
3072
    -toPackage=name            - Stop building after package
2987
    -fromPackage=name          - Start building from package
3073
    -fromPackage=name          - Start building from package
2988
    -justPackage=name[,name]   - Build named packages
3074
    -justPackage=name[,name]   - Build named packages
2989
    -ignorePackage=name[,name] - Do not build named packages
3075
    -ignorePackage=name[,name] - Do not build named packages
2990
    -entireSandbox             - Process the entire sandbox
3076
    -entireSandbox             - Process the entire sandbox
2991
    -users                     - Process package users, not dependencies
3077
    -users                     - Process package users, not dependencies
-
 
3078
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
-
 
3079
    -[no]keepgoing             - Ignore errors
-
 
3080
    -[no]reScan                - Recalculate and cache sandbox structure
-
 
3081
 Command Specific Options
-
 
3082
    -verbose[=n]               - Display more information
-
 
3083
    -usedby                    - Display package usage information
2992
    -fingerprint               - Display fingerprint information
3084
    -fingerprint               - Display fingerprint information
2993
    -[no]dependencies          - Display external dependencies (default)
3085
    -[no]dependencies          - Display external dependencies (default)
2994
    -[no]buildorder            - Display build order (default)
3086
    -[no]buildorder            - Display build order (default)
-
 
3087
    -[no]path                  - Display path to package
2995
 
3088
 
2996
=head2 OPTIONS
3089
=head2 OPTIONS
2997
 
3090
 
2998
=over
3091
=over
2999
 
3092
 
Line 3021... Line 3114...
3021
 
3114
 
3022
=item B<-[no]buildorder>
3115
=item B<-[no]buildorder>
3023
 
3116
 
3024
This option will cause the information display to include all the build order.
3117
This option will cause the information display to include all the build order.
3025
 
3118
 
-
 
3119
=item B<-[no]path>
-
 
3120
 
-
 
3121
This option will cause the information display to include all the path to the build file
-
 
3122
 
3026
=back
3123
=back
3027
 
3124
 
3028
=head2 DESCRIPTION
3125
=head2 DESCRIPTION
3029
 
3126
 
3030
The 'info' command will display information about the build order and the
3127
The 'info' command will display information about the build order and the
Line 3278... Line 3375...
3278
 
3375
 
3279
=head2 SYNOPSIS
3376
=head2 SYNOPSIS
3280
 
3377
 
3281
jats sandbox all [command options] [arguments]
3378
jats sandbox all [command options] [arguments]
3282
 
3379
 
3283
 Command Options
3380
 Common Options:
3284
    -help[=n]                  - Command specific help, [n=1,2,3]
3381
    -help[=n], -man            - Command specific help, [n=1,2,3]
3285
    -toPackage=name            - Stop building after package
3382
    -toPackage=name            - Stop building after package
3286
    -fromPackage=name          - Start building from package
3383
    -fromPackage=name          - Start building from package
3287
    -justPackage=name[,name]   - Build named packages
3384
    -justPackage=name[,name]   - Build named packages
3288
    -ignorePackage=name[,name] - Do not build named packages
3385
    -ignorePackage=name[,name] - Do not build named packages
3289
    -entireSandbox             - Process the entire sandbox
3386
    -entireSandbox             - Process the entire sandbox
3290
    -users                     - Process package users, not dependencies
3387
    -users                     - Process package users, not dependencies
-
 
3388
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
3291
    -[no]keepgoing             - Ignore errors
3389
    -[no]keepgoing             - Ignore errors
-
 
3390
    -[no]reScan                - Recalculate and cache sandbox structure
-
 
3391
 Command Specific Options
3292
    -[no]skip                  - Skip if no source change (default:skip)
3392
    -[no]skip                  - Skip if no source change (default:skip)
3293
 
3393
 
3294
 
3394
 
3295
=head2 ARGUMENTS
3395
=head2 ARGUMENTS
3296
 
3396
 
Line 3340... Line 3440...
3340
 
3440
 
3341
=head2 SYNOPSIS
3441
=head2 SYNOPSIS
3342
 
3442
 
3343
jats sandbox build [command options] [arguments]
3443
jats sandbox build [command options] [arguments]
3344
 
3444
 
3345
 Command Options
3445
 Common Options:
3346
    -help[=n]                  - Command specific help, [n=1,2,3]
3446
    -help[=n], -man            - Command specific help, [n=1,2,3]
3347
    -toPackage=name            - Stop building after package
3447
    -toPackage=name            - Stop building after package
3348
    -fromPackage=name          - Start building from package
3448
    -fromPackage=name          - Start building from package
3349
    -justPackage=name[,name]   - Build named packages
3449
    -justPackage=name[,name]   - Build named packages
3350
    -ignorePackage=name[,name] - Do not build named packages
3450
    -ignorePackage=name[,name] - Do not build named packages
3351
    -entireSandbox             - Process the entire sandbox
3451
    -entireSandbox             - Process the entire sandbox
3352
    -users                     - Process package users, not dependencies
3452
    -users                     - Process package users, not dependencies
-
 
3453
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
3353
    -[no]keepgoing             - Ignore errors
3454
    -[no]keepgoing             - Ignore errors
-
 
3455
    -[no]reScan                - Recalculate and cache sandbox structure
-
 
3456
 Command Specific Options
3354
    -[no]skip                  - Skip if no source change (default:skip)
3457
    -[no]skip                  - Skip if no source change (default:skip)
3355
 
3458
 
3356
=head2 ARGUMENTS
3459
=head2 ARGUMENTS
3357
 
3460
 
3358
Arguments are passed to the 'make' phase of the process.
3461
Arguments are passed to the 'make' phase of the process.
Line 3388... Line 3491...
3388
 
3491
 
3389
=head2 SYNOPSIS
3492
=head2 SYNOPSIS
3390
 
3493
 
3391
jats sandbox clean|clobber [command options]
3494
jats sandbox clean|clobber [command options]
3392
 
3495
 
3393
 Command Options
3496
 Common Options:
3394
    -help[=n]                  - Command specific help, [n=1,2,3]
3497
    -help[=n], -man            - Command specific help, [n=1,2,3]
3395
    -toPackage=name            - Stop building after package
3498
    -toPackage=name            - Stop building after package
3396
    -fromPackage=name          - Start building from package
3499
    -fromPackage=name          - Start building from package
3397
    -justPackage=name[,name]   - Build named packages
3500
    -justPackage=name[,name]   - Build named packages
3398
    -ignorePackage=name[,name] - Do not build named packages
3501
    -ignorePackage=name[,name] - Do not build named packages
3399
    -entireSandbox             - Process the entire sandbox
3502
    -entireSandbox             - Process the entire sandbox
3400
    -users                     - Process package users, not dependencies
3503
    -users                     - Process package users, not dependencies
-
 
3504
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
3401
    -[no]keepgoing             - Ignore errors
3505
    -[no]keepgoing             - Ignore errors
-
 
3506
    -[no]reScan                - Recalculate and cache sandbox structure
3402
 
3507
 
3403
=head2 ARGUMENTS
3508
=head2 ARGUMENTS
3404
 
3509
 
3405
None
3510
None
3406
 
3511
 
3407
=head2 OPTIONS
3512
=head2 OPTIONS
3408
 
3513
 
3409
=over
-
 
3410
 
-
 
3411
=item B<-[no]keepgoing>
-
 
3412
 
-
 
3413
This options controls the behaviour of the command when an error is encountered.
-
 
3414
 
-
 
3415
The default operation is to terminate the command on the package with the
-
 
3416
error. This can be modified so that errors are ignored.
3514
The are no command specific options.
3417
 
-
 
3418
=back
-
 
3419
 
3515
 
3420
=head2 DESCRIPTION
3516
=head2 DESCRIPTION
3421
 
3517
 
3422
The 'clean' command will perform a 'jats make clean' in all components in the
3518
The 'clean' command will perform a 'jats make clean' in all components in the
3423
sandbox.
3519
sandbox.
Line 3433... Line 3529...
3433
 
3529
 
3434
=head2 SYNOPSIS
3530
=head2 SYNOPSIS
3435
 
3531
 
3436
jats sandbox make [command options] [arguments]
3532
jats sandbox make [command options] [arguments]
3437
 
3533
 
3438
 Command Options
3534
 Common Options:
3439
    -help[=n]                  - Command specific help, [n=1,2,3]
3535
    -help[=n], -man            - Command specific help, [n=1,2,3]
3440
    -toPackage=name            - Stop building after package
3536
    -toPackage=name            - Stop building after package
3441
    -fromPackage=name          - Start building from package
3537
    -fromPackage=name          - Start building from package
3442
    -justPackage=name[,name]   - Build named packages
3538
    -justPackage=name[,name]   - Build named packages
3443
    -ignorePackage=name[,name] - Do not build named packages
3539
    -ignorePackage=name[,name] - Do not build named packages
3444
    -entireSandbox             - Process the entire sandbox
3540
    -entireSandbox             - Process the entire sandbox
3445
    -users                     - Process package users, not dependencies
3541
    -users                     - Process package users, not dependencies
-
 
3542
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
-
 
3543
    -[no]keepgoing             - Ignore errors
-
 
3544
    -[no]reScan                - Recalculate and cache sandbox structure
3446
 
3545
 
3447
=head2 ARGUMENTS
3546
=head2 ARGUMENTS
3448
 
3547
 
3449
Arguments are passed to the 'make' phase of the process.
3548
Arguments are passed to the 'make' phase of the process.
3450
 
3549
 
Line 3467... Line 3566...
3467
 
3566
 
3468
=head2 SYNOPSIS
3567
=head2 SYNOPSIS
3469
 
3568
 
3470
jats sandbox cmd [command options] [arguments]
3569
jats sandbox cmd [command options] [arguments]
3471
 
3570
 
3472
 Command Options
3571
 Common Options:
3473
    -help[=n]                  - Command specific help, [n=1,2,3]
3572
    -help[=n], -man            - Command specific help, [n=1,2,3]
3474
    -[no]keepgoing             - Ignore errors
-
 
3475
    -toPackage=name            - Stop building after package
3573
    -toPackage=name            - Stop building after package
3476
    -fromPackage=name          - Start building from package
3574
    -fromPackage=name          - Start building from package
3477
    -justPackage=name[,name]   - Build named packages
3575
    -justPackage=name[,name]   - Build named packages
3478
    -ignorePackage=name[,name] - Do not build named packages
3576
    -ignorePackage=name[,name] - Do not build named packages
3479
    -entireSandbox             - Process the entire sandbox
3577
    -entireSandbox             - Process the entire sandbox
3480
    -users                     - Process package users, not dependencies
3578
    -users                     - Process package users, not dependencies
-
 
3579
    -multiBuilders=mode        - Handle conflicting packages. error|report|ignore
-
 
3580
    -[no]keepgoing             - Ignore errors
-
 
3581
    -[no]reScan                - Recalculate and cache sandbox structure
-
 
3582
 Command Specific Options
-
 
3583
    -[no]reverse               - Reverse the processing order
3481
 
3584
 
3482
=head2 ARGUMENTS
3585
=head2 ARGUMENTS
3483
 
3586
 
3484
Arguments are passed to a JATS command.
3587
Arguments are passed to a JATS command.
3485
 
3588
 
3486
=head2 OPTIONS
3589
=head2 OPTIONS
3487
 
3590
 
3488
=over
-
 
-
 
3591
The 'cmd' command takes the following options:
3489
 
3592
 
3490
=item B<-[no]keepgoing>
3593
=over 8
3491
 
3594
 
3492
This options controls the behaviour of the command when an error is encountered.
3595
=item -[no]reverse
3493
 
3596
 
3494
The default operation is to terminate the command on the package with the
3597
This option will controlls the order in which the packages will be processed.
-
 
3598
 
3495
error. This can be modified so that errors are ignored.
3599
The default option is 'noreverse'. Packages will be processed in the build order.
3496
 
3600
 
3497
=back
3601
=back
3498
 
3602
 
3499
=head2 DESCRIPTION
3603
=head2 DESCRIPTION
3500
 
3604