Subversion Repositories DevTools

Rev

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

Rev 391 Rev 1273
Line 52... Line 52...
52
#
52
#
53
my $opt_debug   = $ENV{'GBE_DEBUG'};        # Allow global debug
53
my $opt_debug   = $ENV{'GBE_DEBUG'};        # Allow global debug
54
my $opt_verbose = $ENV{'GBE_VERBOSE'};      # Allow global verbose
54
my $opt_verbose = $ENV{'GBE_VERBOSE'};      # Allow global verbose
55
my $opt_help = 0;                           # Help level
55
my $opt_help = 0;                           # Help level
56
my $opt_exact = 0;                          # Exact (escrow) build
56
my $opt_exact = 0;                          # Exact (escrow) build
-
 
57
my $opt_toPackage;                          # Control recursion
-
 
58
my $opt_fromPackage;                        # Control recursion
-
 
59
my @opt_exactPackage;                       # Control recursion
-
 
60
my @opt_ignorePackage;                      # Control recursion
57
 
61
 
58
#
62
#
59
#   Globals - Provided by the JATS environment
63
#   Globals - Provided by the JATS environment
60
#
64
#
61
my $USER         = $ENV{'USER'};
65
my $USER         = $ENV{'USER'};
Line 72... Line 76...
72
my $GBE_DPKG_STORE = $ENV{'GBE_DPKG_STORE'};
76
my $GBE_DPKG_STORE = $ENV{'GBE_DPKG_STORE'};
73
 
77
 
74
#
78
#
75
#   Globals
79
#   Globals
76
#
80
#
-
 
81
my @stopped = ();                         # Stopped entries
77
my @build_order = ();                     # Build Ordered list of entries
82
my @build_order = ();                     # Build Ordered list of entries
78
my %extern_deps;                          # Hash of external dependencies
83
my %extern_deps;                          # Hash of external dependencies
79
my %packages;                             # Hash of packages
84
my %packages;                             # Hash of packages
80
 
85
 
81
 
86
 
Line 233... Line 238...
233
{
238
{
234
    GetOptions (
239
    GetOptions (
235
                "help:+"        => \$opt_help,
240
                "help:+"        => \$opt_help,
236
                "manual:3"      => \$opt_help,
241
                "manual:3"      => \$opt_help,
237
                "verbose:+"     => \$opt_verbose,
242
                "verbose:+"     => \$opt_verbose,
-
 
243
                'topackage:s'   => \$opt_toPackage,
-
 
244
                'frompackage:s' => \$opt_fromPackage,
-
 
245
                'justpackage:s' => \@opt_exactPackage,
-
 
246
                'ignorepackage:s' => \@opt_ignorePackage,
238
                ) || Error ("Invalid command line" );
247
                ) || Error ("Invalid command line" );
239
 
248
 
240
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#ARGV >=0 );
249
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#ARGV >=0 );
241
 
250
 
242
    #
251
    #
243
    #   Determine Sandbox information
252
    #   Determine Sandbox information
244
    #   Populate global variables
253
    #   Populate global variables
245
    #
254
    #
246
    calc_sandbox_info();
255
    calc_sandbox_info(1);
247
 
256
 
248
    #
257
    #
249
    #   Display information
258
    #   Display information
250
    #
259
    #
251
    Message ("Type   : " . ($opt_exact ? 'Exact' : 'Development') );
260
    Message ("Type   : " . ($opt_exact ? 'Exact' : 'Development') );
252
    Message ("Base   : $GBE_SANDBOX");
261
    Message ("Base   : $GBE_SANDBOX");
253
    Message ("Archive: $GBE_DPKG_SBOX");
262
    Message ("Archive: $GBE_DPKG_SBOX");
254
 
263
 
-
 
264
 
255
    Message ("Build Order");
265
    Message ("Build Order");
-
 
266
    foreach my $pname ( @stopped )
-
 
267
    {
-
 
268
        Message( "    Level:" . "-"  . " Name: " . $pname . ' (Stopped)');
-
 
269
    }
256
    foreach my $fe ( @build_order )
270
    foreach my $fe ( @build_order )
257
    {
271
    {
258
        Message( "    Level:" . $fe->{level} . " Name: " . $fe->{dname} );
272
        Message( "    Level:" . $fe->{level} . " Name: " . $fe->{dname} . ($fe->{buildActive} ? '' : ' (Build Suppressed)'));
259
        Message( DisplayPath ("        Path: $fe->{dir}" )) if $opt_verbose;
273
        Message( DisplayPath ("        Path: $fe->{dir}" )) if $opt_verbose;
260
 
274
 
261
        if ( $opt_verbose )
275
        if ( $opt_verbose )
262
        {
276
        {
263
            foreach my $idep ( sort values %{$fe->{'ideps'}} )
277
            foreach my $idep ( sort values %{$fe->{'ideps'}} )
Line 348... Line 362...
348
# Function        : calc_sandbox_info
362
# Function        : calc_sandbox_info
349
#
363
#
350
# Description     : Examine the sandbox and determine all the important
364
# Description     : Examine the sandbox and determine all the important
351
#                   information
365
#                   information
352
#
366
#
-
 
367
#                   Operation will be modified by
353
# Inputs          : None
368
#                       $opt_toPackage
-
 
369
#                       $opt_fromPackage
-
 
370
#                       @opt_exactPackage
-
 
371
#                       @opt_ignorePackage
-
 
372
#
-
 
373
# Inputs          : info                - True: Just for info
-
 
374
#                                               Keep supressed packages
354
#
375
#
355
# Returns         : Will exit if not in a sandbox
376
# Returns         : Will exit if not in a sandbox
356
#                   Populates global variables
377
#                   Populates global variables
357
#                       @build_order - build ordered array of build entries
378
#                       @build_order - build ordered array of build entries
358
#
379
#
359
sub calc_sandbox_info
380
sub calc_sandbox_info
360
{
381
{
-
 
382
    my ($info) = @_;
-
 
383
 
361
    #
384
    #
362
    #   Start from the root of the sandbox
385
    #   Start from the root of the sandbox
363
    #
386
    #
364
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
387
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
365
    chdir ($GBE_SANDBOX) || Error ("Cannot chdir to $GBE_SANDBOX");
388
    chdir ($GBE_SANDBOX) || Error ("Cannot chdir to $GBE_SANDBOX");
Line 378... Line 401...
378
        next unless ( -d $pname );
401
        next unless ( -d $pname );
379
        Verbose ("Package discovered: $pname");
402
        Verbose ("Package discovered: $pname");
380
 
403
 
381
        if ( -f "$pname/stop" || -f "$pname/stop.$GBE_MACHTYPE" )
404
        if ( -f "$pname/stop" || -f "$pname/stop.$GBE_MACHTYPE" )
382
        {
405
        {
-
 
406
            push @stopped, $pname;
383
            Warning("Package contains stop file: $pname");
407
            Warning("Package contains stop file: $pname");
384
            next;
408
            next;
385
        }
409
        }
386
 
410
 
387
        push @dirlist, $pname;
411
        push @dirlist, $pname;
Line 410... Line 434...
410
    my %depends;
434
    my %depends;
411
    my %multi;
435
    my %multi;
412
    foreach my $be ( @build_list )
436
    foreach my $be ( @build_list )
413
    {
437
    {
414
        Verbose( DisplayPath ("Build file: " . $be->{dir} . " Name: " . $be->{file} ));
438
        Verbose( DisplayPath ("Build file: " . $be->{dir} . " Name: " . $be->{file} ));
415
 
-
 
416
        #
439
        #
417
        #   Sandbox vs Exact processing
440
        #   Sandbox vs Exact processing
418
        #       Set a suitable display name
441
        #       Set a suitable display name
419
        #       Set a suitable tag
442
        #       Set a suitable tag
420
        #
443
        #
Line 431... Line 454...
431
        push @{$multi{$be->{dname}}},$be->{dir};
454
        push @{$multi{$be->{dname}}},$be->{dir};
432
 
455
 
433
        #
456
        #
434
        #   Add into dependency struct
457
        #   Add into dependency struct
435
        #
458
        #
436
        $depends{$be->{tag}}{entry} = $be;
459
        $depends{$be->{tag}} = $be;
437
        $depends{$be->{tag}}{depends} = $be->{depends};
-
 
438
    }
460
    }
439
 
461
 
440
    foreach my $dname ( sort keys %multi )
462
    foreach my $dname ( sort keys %multi )
441
    {
463
    {
442
        ReportError ("Multiple builders for : $dname", @{$multi{$dname}} )
464
        ReportError ("Multiple builders for : $dname", @{$multi{$dname}} )
Line 455... Line 477...
455
 
477
 
456
    #
478
    #
457
    #   Remove any dependencies to 'external' packages
479
    #   Remove any dependencies to 'external' packages
458
    #   These will not be met internally and can be regarded as constant
480
    #   These will not be met internally and can be regarded as constant
459
    #
481
    #
-
 
482
    #   Split 'depends' into internal (ideps) and external (edeps)
-
 
483
    #       edeps : External Dependencies
-
 
484
    #               Key:        Name;Version
-
 
485
    #               Value:      'tag' - index into packages
-
 
486
    #       ideps : Internal Dependencies
-
 
487
    #               Key:        'tag'   - Index into packages
-
 
488
    #               Value:      'dname' - Display Name
-
 
489
    #
460
    foreach my $key ( keys %depends )
490
    foreach my $key ( keys %depends )
461
    {
491
    {
462
        foreach my $build ( keys( %{$depends{$key}{depends}} ))
492
        foreach my $build ( keys( %{$depends{$key}{depends}} ))
463
        {
493
        {
464
            unless (exists $depends{$build})
494
            unless (exists $depends{$build})
465
            {
495
            {
466
                push @{$extern_deps{$build} {$depends{$key}{depends}{$build}} }, $key;
-
 
467
 
-
 
468
                $depends{$key}{entry}{'edeps'}{$depends{$key}{depends}{$build}} = 1;
496
                $depends{$key}{'edeps'}{$depends{$key}{depends}{$build}} = $build;
469
                delete ($depends{$key}{depends}{$build}) ;
497
                delete ($depends{$key}{depends}{$build}) ;
470
                Verbose2( "Not in set: $build");
498
                Verbose2( "Not in set: $build");
471
            }
499
            }
472
            else
500
            else
473
            {
501
            {
474
                $depends{$key}{entry}{'ideps'}{$build} = $depends{$build}{entry}{dname};
502
                $depends{$key}{'ideps'}{$build} = $depends{$build}{dname};
475
            }
503
            }
476
        }
504
        }
477
    }
505
    }
478
 
506
 
479
#DebugDumpData ("depends", \%depends );
507
#DebugDumpData ("depends", \%depends );
480
#DebugDumpData ("External Depends", \%extern_deps );
-
 
481
 
508
 
482
 
509
 
483
    #
510
    #
484
    #   Determine package build order
511
    #   Determine package build order
485
    #       Scan the list of packages in the build set and determine
512
    #       Scan the list of packages in the build set and determine
486
    #       those with no dependencies. These can be built.
513
    #       those with no dependencies. These can be built.
487
    #       Remove those packages as dependents from all packages
514
    #       Remove those packages as dependents from all packages
488
    #       Repeat.
515
    #       Repeat.
489
    #
516
    #
-
 
517
    my $scan_active = $opt_fromPackage ? 0 : 1;
-
 
518
    my $scan_start = 0;
-
 
519
    my $scan_stop = 0;
-
 
520
    my %notFound;
-
 
521
    my %found;
-
 
522
 
-
 
523
    #   Elements in @opt_exactPackage may be comma seperated names
-
 
524
    #   Split them out
-
 
525
    if ( @opt_exactPackage )
-
 
526
    {
-
 
527
        foreach ( @opt_exactPackage )
-
 
528
        {
-
 
529
            $notFound{$_} = 1 foreach ( split(/\s*,\s*/,$_) );
-
 
530
        }
-
 
531
        @opt_exactPackage = keys %notFound;
-
 
532
    }
-
 
533
 
-
 
534
    if ( @opt_ignorePackage )
-
 
535
    {
-
 
536
        foreach ( @opt_ignorePackage )
-
 
537
        {
-
 
538
            $found{$_} = 1 foreach ( split(/\s*,\s*/,$_) );
-
 
539
        }
-
 
540
        @opt_ignorePackage = keys %found;
-
 
541
    }
-
 
542
    
-
 
543
 
490
    while ( $more )
544
    while ( $more )
491
    {
545
    {
492
        $more = 0;
546
        $more = 0;
493
        $level++;
547
        $level++;
494
        my @build;
548
        my @build;
Line 503... Line 557...
503
        }
557
        }
504
 
558
 
505
        foreach my $build ( @build )
559
        foreach my $build ( @build )
506
        {
560
        {
507
            $more = 1;
561
            $more = 1;
508
            my $fe = $depends{$build}{entry};
562
            my $fe = $depends{$build};
-
 
563
            my $scan_add = $scan_active ? 1 : 0;
-
 
564
            
-
 
565
 
-
 
566
            if ( @opt_exactPackage )
-
 
567
            {
-
 
568
                $scan_add = 0;
-
 
569
                foreach my $pname ( @opt_exactPackage )
-
 
570
                {
-
 
571
                    if ( (($fe->{mname} eq $pname) || ($fe->{name} eq $pname)))
-
 
572
                    {
-
 
573
                        $scan_add = 1;
-
 
574
                        delete $notFound{$pname};
-
 
575
                    }
-
 
576
                }
-
 
577
            }
-
 
578
 
-
 
579
            if ( @opt_ignorePackage )
-
 
580
            {
-
 
581
                foreach my $pname ( @opt_ignorePackage )
-
 
582
                {
-
 
583
                    if ( (($fe->{mname} eq $pname) || ($fe->{name} eq $pname)))
-
 
584
                    {
-
 
585
                        $scan_add = 0;
-
 
586
                        delete $found{$pname};
-
 
587
                    }
-
 
588
                }
-
 
589
            }
-
 
590
            
-
 
591
            
-
 
592
            if ( $opt_toPackage && (($fe->{mname} eq $opt_toPackage) || ($fe->{name} eq $opt_toPackage)))
-
 
593
            {
-
 
594
                $scan_add = 0;
-
 
595
                $scan_active = 0;
-
 
596
                $scan_stop = 1;
-
 
597
            }
-
 
598
 
-
 
599
            if ( $opt_fromPackage && (($fe->{mname} eq $opt_fromPackage) || ($fe->{name} eq $opt_fromPackage)))
-
 
600
            {
-
 
601
                $scan_add = 1;
-
 
602
                $scan_active = 1;
-
 
603
                $scan_start = 1;
-
 
604
            }
-
 
605
 
509
            $fe->{level} = $level;
606
            $fe->{level} = $level;
-
 
607
            $fe->{buildActive} = $scan_add;
510
            $packages{$build} = $fe;
608
            $packages{$build} = $fe;
511
            push @build_order, $fe;
609
            push (@build_order, $fe) if ( $scan_add || $info );
512
            delete $depends{$build};
610
            delete $depends{$build};
513
            delete $fe->{depends};                          # remove now its not needed
611
            delete $fe->{depends};                          # remove now its not needed
514
        }
612
        }
515
 
613
 
516
        foreach my $key ( keys %depends )
614
        foreach my $key ( keys %depends )
Line 521... Line 619...
521
            }
619
            }
522
        }
620
        }
523
    }
621
    }
524
 
622
 
525
    #
623
    #
-
 
624
    #   Detect bad user specifications
-
 
625
    #
-
 
626
    ReportError ("Specified FromPackage not found: $opt_fromPackage") if ( $opt_fromPackage && !$scan_start );
-
 
627
    ReportError ("Specified ToPackage not found: $opt_toPackage") if ( $opt_toPackage && !$scan_stop );
-
 
628
    ReportError ("Specified ExactPackages not found: ", keys( %notFound) ) if ( %notFound );
-
 
629
    ReportError ("Specified IgnorePackages not found: ", keys( %found) ) if ( %found );
-
 
630
    ErrorDoExit();
-
 
631
 
-
 
632
    #
-
 
633
    #   Calculate the external dependencies
-
 
634
    #       Only process packages that are a part of the build
-
 
635
    #
-
 
636
    #   extern_deps structure
-
 
637
    #       Hash key: 'tag'   - Index into packages
-
 
638
    #          Value: Hash of:
-
 
639
    #                 Key  : Name;Version
-
 
640
    #                 Value: Array of: 'tags' (Index into packages)
-
 
641
    #                                   of packages that use the external
-
 
642
    #                                   component.
-
 
643
    {
-
 
644
        Verbose ("Calculate external dependencies");
-
 
645
        %extern_deps = ();
-
 
646
 
-
 
647
        foreach my $key ( keys %packages )
-
 
648
        {
-
 
649
                next unless ( $packages{$key}{buildActive} );
-
 
650
                next unless ( $packages{$key}{'edeps'} );
-
 
651
                foreach ( keys %{$packages{$key}{'edeps'}} )
-
 
652
                {
-
 
653
                    push @{$extern_deps{$packages{$key}{'edeps'}{$_}} {$_} }, $key;
-
 
654
                }
-
 
655
        }
-
 
656
    }
-
 
657
 
-
 
658
    #
526
    #   Just to be sure to be sure
659
    #   Just to be sure to be sure
527
    #
660
    #
528
    if ( keys %depends )
661
    if ( keys %depends )
529
    {
662
    {
530
        #DebugDumpData ("depends", \%depends );
663
        #DebugDumpData ("depends", \%depends );
531
        Error( "Internal algorithm error: Bad dependancy walk",
664
        Error( "Internal algorithm error: Bad dependancy walk",
532
               "Possible circular dependency");
665
               "Possible circular dependency");
533
    }
666
    }
534
 
667
 
-
 
668
#   DebugDumpData("Packages", \%packages);
535
#   DebugDumpData ("Order", \@build_order);
669
#   DebugDumpData ("Order", \@build_order);
536
#   DebugDumpData("External Depends", \%extern_deps );
670
#   DebugDumpData("External Depends", \%extern_deps );
537
}
671
}
538
 
672
 
539
#-------------------------------------------------------------------------------
673
#-------------------------------------------------------------------------------
Line 553... Line 687...
553
sub cmd
687
sub cmd
554
{
688
{
555
    my ($hcmd, @cmds ) = @_;
689
    my ($hcmd, @cmds ) = @_;
556
 
690
 
557
    Getopt::Long::Configure('pass_through');
691
    Getopt::Long::Configure('pass_through');
558
    GetOptions (
692
    getOptionsFromArray ( \@cmds,
559
                "help:+"        => \$opt_help,
693
                "help:+"        => \$opt_help,
560
                "manual:3"      => \$opt_help,
694
                "manual:3"      => \$opt_help,
-
 
695
                'topackage:s'   => \$opt_toPackage,
-
 
696
                'frompackage:s' => \$opt_fromPackage,
-
 
697
                'justpackage:s' => \@opt_exactPackage,
-
 
698
                'ignorepackage:s' => \@opt_ignorePackage,
561
                ) || Error ("Invalid command line" );
699
                ) || Error ("Invalid command line" );
562
 
700
 
563
    SubCommandHelp( $opt_help, $hcmd) if ($opt_help  );
701
    SubCommandHelp( $opt_help, $hcmd) if ($opt_help  );
564
 
702
 
565
    #
703
    #
Line 602... Line 740...
602
 
740
 
603
    #
741
    #
604
    #   Extract and options
742
    #   Extract and options
605
    #
743
    #
606
    Getopt::Long::Configure('pass_through');
744
    Getopt::Long::Configure('pass_through');
607
    GetOptions (
745
    getOptionsFromArray ( \@cmd_opts,
608
                "help:+"        => \$opt_help,
746
                "help:+"        => \$opt_help,
609
                "manual:3"      => \$opt_help,
747
                "manual:3"      => \$opt_help,
-
 
748
                'topackage:s'   => \$opt_toPackage,
-
 
749
                'frompackage:s' => \$opt_fromPackage,
-
 
750
                'justpackage:s' => \@opt_exactPackage,
-
 
751
                'ignorepackage:s' => \@opt_ignorePackage,
610
                ) || Error ("Invalid command line" );
752
                ) || Error ("Invalid command line" );
611
 
753
 
612
    SubCommandHelp( $opt_help, "Command $cmd") if ($opt_help );
754
    SubCommandHelp( $opt_help, "Command $cmd") if ($opt_help );
613
 
755
 
614
    #
756
    #
Line 671... Line 813...
671
 
813
 
672
    #
814
    #
673
    #   Extract and options
815
    #   Extract and options
674
    #
816
    #
675
    Getopt::Long::Configure('pass_through');
817
    Getopt::Long::Configure('pass_through');
676
    GetOptions (
818
    getOptionsFromArray ( \@cmds,
677
                "help:+"        => \$opt_help,
819
                "help:+"        => \$opt_help,
678
                "manual:3"      => \$opt_help,
820
                "manual:3"      => \$opt_help,
-
 
821
                'topackage:s'   => \$opt_toPackage,
-
 
822
                'frompackage:s' => \$opt_fromPackage,
-
 
823
                'justpackage:s' => \@opt_exactPackage,
-
 
824
                'ignorepackage:s' => \@opt_ignorePackage,
679
                ) || Error ("Invalid command line" );
825
                ) || Error ("Invalid command line" );
680
 
826
 
681
    SubCommandHelp( $opt_help, "Clean") if ($opt_help );
827
    SubCommandHelp( $opt_help, "Clean") if ($opt_help );
682
 
828
 
683
    #
829
    #
Line 716... Line 862...
716
#
862
#
717
sub cache
863
sub cache
718
{
864
{
719
    my (@opts) = @_;
865
    my (@opts) = @_;
720
 
866
 
721
    GetOptions (
867
    getOptionsFromArray ( \@opts,
722
                "help:+"        => \$opt_help,
868
                "help:+"        => \$opt_help,
723
                "manual:3"      => \$opt_help,
869
                "manual:3"      => \$opt_help,
-
 
870
                'topackage:s'   => \$opt_toPackage,
-
 
871
                'frompackage:s' => \$opt_fromPackage,
-
 
872
                'justpackage:s' => \@opt_exactPackage,
-
 
873
                'ignorepackage:s' => \@opt_ignorePackage,
724
                ) || Error ("Invalid command line" );
874
                ) || Error ("Invalid command line" );
725
 
875
 
726
    SubCommandHelp( $opt_help, "Cache") if ($opt_help || $#ARGV >= 0 );
876
    SubCommandHelp( $opt_help, "Cache") if ($opt_help || $#ARGV >= 0 );
727
 
877
 
728
    #
878
    #
Line 731... Line 881...
731
    #
881
    #
732
    Message("Cache External Dependencies");
882
    Message("Cache External Dependencies");
733
    calc_sandbox_info();
883
    calc_sandbox_info();
734
 
884
 
735
    #
885
    #
736
    #   Walk the list of external despondencies and cache each one
886
    #   Walk the list of external dependencies and cache each one
737
    #
887
    #
738
    foreach my $de ( sort keys %extern_deps )
888
    foreach my $de ( sort keys %extern_deps )
739
    {
889
    {
740
        my @vlist = keys %{$extern_deps{$de}};
890
        my @vlist = keys %{$extern_deps{$de}};
741
        foreach my $pve ( @vlist )
891
        foreach my $pve ( @vlist )
Line 1133... Line 1283...
1133
        Error("GetDepends:Prepare failure" );
1283
        Error("GetDepends:Prepare failure" );
1134
    }
1284
    }
1135
}
1285
}
1136
 
1286
 
1137
#-------------------------------------------------------------------------------
1287
#-------------------------------------------------------------------------------
-
 
1288
# Function        : getOptionsFromArray
-
 
1289
#
-
 
1290
# Description     : Like getOptions, but handles an array
-
 
1291
#                   Provided as the version of Perl used does not have one
-
 
1292
#
-
 
1293
# Inputs          : pArray                  - Ref to array
-
 
1294
#                   ....                    - GetOptions arguments
-
 
1295
#
-
 
1296
# Returns         : 
-
 
1297
#
-
 
1298
sub getOptionsFromArray
-
 
1299
{
-
 
1300
    my ($pArray, %args) = @_;
-
 
1301
 
-
 
1302
    local ( @ARGV );
-
 
1303
    @ARGV = @$pArray;
-
 
1304
    my $rv = GetOptions ( %args );
-
 
1305
    @$pArray = @ARGV;
-
 
1306
 
-
 
1307
    return $rv;
-
 
1308
}
-
 
1309
 
-
 
1310
 
-
 
1311
#-------------------------------------------------------------------------------
1138
# Function        : SubCommandHelp
1312
# Function        : SubCommandHelp
1139
#
1313
#
1140
# Description     : Provide help on a subcommand
1314
# Description     : Provide help on a subcommand
1141
#
1315
#
1142
# Inputs          : $help_level             - Help Level 1,2,3
1316
# Inputs          : $help_level             - Help Level 1,2,3
Line 1199... Line 1373...
1199
 Options:
1373
 Options:
1200
    -help[=n]          - Display help with specified detail
1374
    -help[=n]          - Display help with specified detail
1201
    -help -help        - Detailed help message
1375
    -help -help        - Detailed help message
1202
    -man               - Full documentation
1376
    -man               - Full documentation
1203
 
1377
 
-
 
1378
 Common Options:
-
 
1379
    -fromPackage=name          - Start building from package
-
 
1380
    -toPackage=name            - Stop building after package
-
 
1381
    -justPackage=name[,name]   - Build named packages
-
 
1382
    -ignorePackage=name[,name] - Do not build named packages
-
 
1383
 
1204
 Commands:
1384
 Commands:
1205
    help                - Same as -help
1385
    help                - Same as -help
1206
    create              - Create a sandbox in the current directory
1386
    create              - Create a sandbox in the current directory
1207
    populate            - Populate the sandbox with packages
1387
    populate            - Populate the sandbox with packages
1208
    delete              - Delete the sandbox
1388
    delete              - Delete the sandbox
Line 1250... Line 1430...
1250
 
1430
 
1251
=item B<-man>
1431
=item B<-man>
1252
 
1432
 
1253
Prints the manual page and exits. This is the same a -help=3
1433
Prints the manual page and exits. This is the same a -help=3
1254
 
1434
 
-
 
1435
=item B<-fromPackage=name>
-
 
1436
 
-
 
1437
This option is available in all commands that process multiple packages.
-
 
1438
Package processing will start at the named package.
-
 
1439
 
-
 
1440
The default operation is to process all packages.
-
 
1441
 
-
 
1442
=item B<-toPackage=name>
-
 
1443
 
-
 
1444
This option is available in all commands that process multiple packages.
-
 
1445
Package processing will stop at the named package.
-
 
1446
 
-
 
1447
The default operation is to process all packages.
-
 
1448
 
-
 
1449
=item B<-justPackge=name[,name]>
-
 
1450
 
-
 
1451
This option is available in all commands that process multiple packages. The
-
 
1452
named packages will be processed in the correct build order. Packages that are not
-
 
1453
named will be skipped.
-
 
1454
 
-
 
1455
Multiple packages can be named either by separating names with a comma, or
-
 
1456
with multiple options.
-
 
1457
 
-
 
1458
=item B<-ignorePackge=name[,name]>
-
 
1459
 
-
 
1460
This option is available in all commands that process multiple packages. The
-
 
1461
named packages will not be processed.
-
 
1462
 
-
 
1463
Multiple packages can be named either by separating names with a comma, or
-
 
1464
with multiple options.
-
 
1465
 
-
 
1466
The exclusion of a package takes precedence over its inclusion.
-
 
1467
 
1255
=back
1468
=back
1256
 
1469
 
1257
=head1 DESCRIPTION
1470
=head1 DESCRIPTION
1258
 
1471
 
1259
This program is the primary tool for the maintenance of Development Sandboxes.
1472
This program is the primary tool for the maintenance of Development Sandboxes.