Subversion Repositories DevTools

Rev

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

Rev 7304 Rev 7306
Line 47... Line 47...
47
use Pod::Usage;                             # required for help support
47
use Pod::Usage;                             # required for help support
48
use Getopt::Long qw(:config require_order); # Stop on non-option
48
use Getopt::Long qw(:config require_order); # Stop on non-option
49
use Digest;
49
use Digest;
50
 
50
 
51
my $VERSION = "1.0.0";                      # Update this
51
my $VERSION = "1.0.0";                      # Update this
-
 
52
my $SCANDEPTH = 3;                          # Almost a constant
52
 
53
 
53
#
54
#
54
#   Options
55
#   Options
55
#
56
#
56
my $opt_debug   = $ENV{'GBE_DEBUG'};        # Allow global debug
57
my $opt_debug   = $ENV{'GBE_DEBUG'};        # Allow global debug
Line 84... Line 85...
84
my $GBE_DPKG_REPLICA    = $ENV{'GBE_DPKG_REPLICA'};
85
my $GBE_DPKG_REPLICA    = $ENV{'GBE_DPKG_REPLICA'};
85
 
86
 
86
#
87
#
87
#   Globals
88
#   Globals
88
#
89
#
89
my @stopped = ();                         # Stopped entries
90
my @stopped = ();                               # Stopped entries
90
my @build_order = ();                     # Build Ordered list of entries
91
my @build_order = ();                           # Build Ordered list of entries
91
my %extern_deps;                          # Hash of external dependencies
92
my %extern_deps;                                # Hash of external dependencies
92
my %packages;                             # Hash of packages
93
my %packages;                                   # Hash of packages
93
my $currentPkgTag;                        # Tag of the current package - if any                                          
94
my $currentPkgTag;                              # Tag of the current package - if any                                          
-
 
95
my $scanDepth;                                  # Depth for build file scan
-
 
96
 
-
 
97
#
-
 
98
#   Known files
-
 
99
#
-
 
100
my $cacheFile  = $GBE_DPKG_SBOX . '/location_cache';
-
 
101
my $depthFile  = $GBE_DPKG_SBOX . '/scanDepth';
-
 
102
my $filterFile = $GBE_SANDBOX   . '/buildfilter';
94
 
103
 
95
#-------------------------------------------------------------------------------
104
#-------------------------------------------------------------------------------
96
# Function        : Mainline Entry Point
105
# Function        : Mainline Entry Point
97
#
106
#
98
# Description     :
107
# Description     :
Line 139... Line 148...
139
buildfilter(@ARGV)                      if ( $cmd =~ m/^buildfilter$/  );
148
buildfilter(@ARGV)                      if ( $cmd =~ m/^buildfilter$/  );
140
skipBuild(0, @ARGV)                     if ( $cmd =~ m/^skip$/  );
149
skipBuild(0, @ARGV)                     if ( $cmd =~ m/^skip$/  );
141
skipBuild(1, @ARGV)                     if ( $cmd =~ m/^unskip$/  );
150
skipBuild(1, @ARGV)                     if ( $cmd =~ m/^unskip$/  );
142
fingerPrintPkg(@ARGV)                   if ( $cmd =~ m/^finger/i );
151
fingerPrintPkg(@ARGV)                   if ( $cmd =~ m/^finger/i );
143
testLinks(@ARGV)                        if ( $cmd =~ m/^testlinks/i );
152
testLinks(@ARGV)                        if ( $cmd =~ m/^testlinks/i );
-
 
153
setScanDepth(@ARGV)                     if ( $cmd =~ m/^scandepth/i );
144
 
154
 
145
Error ("Unknown sandbox command: $cmd");
155
Error ("Unknown sandbox command: $cmd");
146
exit 1;
156
exit 1;
147
 
157
 
148
 
158
 
Line 332... Line 342...
332
{
342
{
333
    my (@cmd_opts ) = @_;
343
    my (@cmd_opts ) = @_;
334
    my $show = 0;
344
    my $show = 0;
335
    my $showUsage = 0;
345
    my $showUsage = 0;
336
    my $showFingerPrint = 0;
346
    my $showFingerPrint = 0;
-
 
347
    my $showDependencies = 1;
-
 
348
    my $showOrder = 1;
337
 
349
 
338
    Getopt::Long::Configure('pass_through');
350
    Getopt::Long::Configure('pass_through');
339
    getOptionsFromArray ( \@cmd_opts,
351
    getOptionsFromArray ( \@cmd_opts,
340
                          'verbose:+'   => \$show,
352
                          'verbose:+'       => \$show,
341
                          'usedby'      => \$showUsage,
353
                          'usedby'          => \$showUsage,
342
                          'fingerprint' => \$showFingerPrint,
354
                          'fingerprint!'    => \$showFingerPrint,
-
 
355
                          'dependencies!'   => \$showDependencies,
-
 
356
                          'buildorder!'     => \$showOrder,
343
                        ) || Error ("Invalid command line" );
357
                        ) || Error ("Invalid command line" );
344
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#cmd_opts >=0 );
358
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#cmd_opts >=0 );
345
    $showUsage = 1 if ($show >= 2);
359
    $showUsage = 1 if ($show >= 2);
346
 
360
 
347
    #
361
    #
Line 354... Line 368...
354
    #   Display information
368
    #   Display information
355
    #
369
    #
356
    Message ("Scope      : " . ($opt_allSandbox ? 'Entire Sandbox' : $packages{$currentPkgTag}{dname} ));
370
    Message ("Scope      : " . ($opt_allSandbox ? 'Entire Sandbox' : $packages{$currentPkgTag}{dname} ));
357
    Message ("Base       : $GBE_SANDBOX");
371
    Message ("Base       : $GBE_SANDBOX");
358
    Message ("Archive    : $GBE_DPKG_SBOX");
372
    Message ("Archive    : $GBE_DPKG_SBOX");
359
    Message ("BuildFilter: $GBE_BUILDFILTER" . ( (-f $GBE_SANDBOX . '/buildfilter')  ? ' - Local to sandbox' : ''));
373
    Message ("BuildFilter: $GBE_BUILDFILTER" . ( (-f $filterFile)  ? ' - Local to sandbox' : ''));
360
 
374
 
361
 
-
 
362
    Message ("Build Order");
375
    if ($showOrder)
363
    foreach my $pname ( @stopped )
-
 
364
    {
-
 
365
        Message( "    Level:" . "-"  . " [---] Name: " . $pname . ' (Stopped)');
-
 
366
    }
-
 
367
    foreach my $fe ( @build_order )
-
 
368
    {
376
    {
369
        displayHeader($fe, { indent => '    ', testFingerPrint =>  $showFingerPrint, showIcons => 1});
377
        Message ("Build Order");
370
 
-
 
371
        if ( $show )
378
        foreach my $pname ( @stopped )
372
        {
379
        {
373
            Message( DisplayPath ("        Path: $fe->{dir}" ));
380
            Message( "    Level:" . "--"  . " [---] Name: " . $pname . ' (Stopped)');
374
            foreach my $idep ( sort values %{$fe->{'ideps'}} )
-
 
375
            {
381
        }
376
                Message ("        I:$idep");
382
        foreach my $fe ( @build_order )
377
            }
383
        {
-
 
384
            displayHeader($fe, { indent => '    ', testFingerPrint =>  $showFingerPrint, showIcons => 1});
378
 
385
 
379
            foreach my $edep ( sort keys %{$fe->{'edeps'}} )
386
            if ( $show )
380
            {
387
            {
-
 
388
                Message( DisplayPath ("        Path: $fe->{dir}" ));
-
 
389
                foreach my $idep ( sort values %{$fe->{'ideps'}} )
-
 
390
                {
-
 
391
                    Message ("        I:$idep");
-
 
392
                }
-
 
393
 
-
 
394
                foreach my $edep ( sort keys %{$fe->{'edeps'}} )
-
 
395
                {
381
                my ($ppn,$ppv) = split( $; , $edep);
396
                    my ($ppn,$ppv) = split( $; , $edep);
382
                Message ("        E:$ppn $ppv");
397
                    Message ("        E:$ppn $ppv");
-
 
398
                }
383
            }
399
            }
384
        }
-
 
385
 
400
 
386
        if ($showUsage && exists($fe->{'usedBy'}))
401
            if ($showUsage && exists($fe->{'usedBy'}))
387
        {
-
 
388
            foreach my $edep ( sort {uc($a) cmp uc($b)} @{$fe->{'usedBy'}} )
-
 
389
            {
402
            {
-
 
403
                foreach my $edep ( sort {uc($a) cmp uc($b)} @{$fe->{'usedBy'}} )
-
 
404
                {
390
                Message ("        U:$packages{$edep}{dname}");
405
                    Message ("        U:$packages{$edep}{dname}");
-
 
406
                }
391
            }
407
            }
392
        }
408
        }
393
    }
409
    }
394
 
410
 
395
    #
411
    #
396
    #   External dependencies flags
412
    #   External dependencies flags
397
    #       * - Package does not exist in dpkg_archive
413
    #       * - Package does not exist in dpkg_archive
398
    #       + - Multiple versions of this package are used
414
    #       + - Multiple versions of this package are used
399
 
415
 
400
    Message("External Dependencies");
416
    if ($showDependencies)
401
    foreach my $de ( sort {uc($a) cmp uc($b)} keys %extern_deps )
-
 
402
    {
417
    {
403
        my @vlist = keys %{$extern_deps{$de}};
418
        Message("External Dependencies");
404
        my $flag = $#vlist ? '+' : '';
-
 
405
        foreach my $pve ( sort {uc($a) cmp uc($b)} @vlist )
419
        foreach my $de ( sort {uc($a) cmp uc($b)} keys %extern_deps )
406
        {
420
        {
407
            my ($pn,$pv) = split( $; , $pve );
421
            my @vlist = keys %{$extern_deps{$de}};
408
            my $exists = check_package_existance($pn,$pv  ) ? '' : '*';
422
            my $flag = $#vlist ? '+' : '';
409
            my $flags = sprintf ("%4.4s", $flag . $exists);
423
            foreach my $pve ( sort {uc($a) cmp uc($b)} @vlist )
410
            Message ("${flags}${pn} ${pv}");
-
 
411
            if ( $show || $showUsage )
-
 
412
            {
424
            {
-
 
425
                my ($pn,$pv) = split( $; , $pve );
413
                foreach my $pkg ( sort {uc($a) cmp uc($b)} @{$extern_deps{$de}{$pve}} )
426
                my $exists = check_package_existance($pn,$pv  ) ? '' : '*';
-
 
427
                my $flags = sprintf ("%4.4s", $flag . $exists);
-
 
428
                Message ("${flags}${pn} ${pv}");
-
 
429
                if ( $show || $showUsage )
414
                {
430
                {
-
 
431
                    foreach my $pkg ( sort {uc($a) cmp uc($b)} @{$extern_deps{$de}{$pve}} )
-
 
432
                    {
415
                    my $ppn = join ('.', split( $; , $pkg));
433
                        my $ppn = join ('.', split( $; , $pkg));
416
                    Message ("        U:$ppn");
434
                        Message ("        U:$ppn");
-
 
435
                    }
417
                }
436
                }
418
            }
-
 
419
 
437
 
-
 
438
            }
420
        }
439
        }
421
    }
440
    }
422
 
441
 
423
    if ( $show > 2 || $opt_verbose > 2 )
442
    if ( $show > 2 || $opt_verbose > 2 )
424
    {
443
    {
Line 559... Line 578...
559
# Description     : Test the lnk files in the sandbox directory
578
# Description     : Test the lnk files in the sandbox directory
560
#                   These may be stake after packages are deleted
579
#                   These may be stake after packages are deleted
561
#
580
#
562
# Inputs          : 
581
# Inputs          : 
563
#
582
#
564
# Returns         : 
583
# Returns         : This function will not return
565
#
584
#
566
sub testLinks
585
sub testLinks
567
{
586
{
568
    my ( @cmd_opts ) = @_;
587
    my ( @cmd_opts ) = @_;
569
    my $opt_delete;
588
    my $opt_delete;
Line 572... Line 591...
572
                "help:+"        => \$opt_help,
591
                "help:+"        => \$opt_help,
573
                "manual:3"      => \$opt_help,
592
                "manual:3"      => \$opt_help,
574
                'delete!'       => \$opt_delete,
593
                'delete!'       => \$opt_delete,
575
                ) || Error ("Invalid command line" );
594
                ) || Error ("Invalid command line" );
576
 
595
 
577
    SubCommandHelp( $opt_help, "Sandbox Test Links") if ($opt_help || $#ARGV >= 0 );
596
    SubCommandHelp( $opt_help, "Sandbox Test Links") if ($opt_help || ($#ARGV >= 0) );
578
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
597
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
579
 
598
 
580
    #
599
    #
581
    #   Process all packages in the sandbox
600
    #   Process all packages in the sandbox
582
    #
601
    #
Line 612... Line 631...
612
    }
631
    }
613
    
632
    
614
    exit (0);
633
    exit (0);
615
}
634
}
616
 
635
 
-
 
636
#-------------------------------------------------------------------------------
-
 
637
# Function        : setScanDepth 
-
 
638
#
-
 
639
# Description     : Set the depth of the build file scan usd in this sandbox 
-
 
640
#
-
 
641
# Inputs          : Command line arguments
-
 
642
#
-
 
643
# Returns         : This function will not return
-
 
644
#
-
 
645
sub setScanDepth
-
 
646
{
-
 
647
    my ( @cmd_opts ) = @_;
-
 
648
    GetOptions (
-
 
649
                "help:+"        => \$opt_help,
-
 
650
                "manual:3"      => \$opt_help,
-
 
651
                ) || Error ("Invalid command line" );
-
 
652
 
-
 
653
    SubCommandHelp( $opt_help, "Sandbox Scan Depth") if ($opt_help || ($#ARGV > 0 ));
-
 
654
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
-
 
655
 
-
 
656
    if (defined $ARGV[0])
-
 
657
    {
-
 
658
        FileCreate($depthFile, $ARGV[0]);
-
 
659
 
-
 
660
        #
-
 
661
        #   Force a rescan of the cached information
-
 
662
        #
-
 
663
        unlink $cacheFile;
-
 
664
        exit 0;
-
 
665
    }
-
 
666
 
-
 
667
    #
-
 
668
    #   Report the current scan depth
-
 
669
    #
-
 
670
    getScanDepth();
-
 
671
    Information ("Build File scan depth: ". $scanDepth);
-
 
672
    exit (0);
-
 
673
 
-
 
674
}
-
 
675
 
-
 
676
#-------------------------------------------------------------------------------
-
 
677
# Function        : getScanDepth  
-
 
678
#
-
 
679
# Description     : Determine the build file scan depth for the current sandbox
-
 
680
#                   Non-default data is maintained in a data file    
-
 
681
#
-
 
682
# Inputs          : None
-
 
683
#
-
 
684
# Returns         : Nothing
-
 
685
#
-
 
686
 
-
 
687
sub getScanDepth
-
 
688
{
-
 
689
    my $depth = $SCANDEPTH;
-
 
690
    if ( -f $depthFile)
-
 
691
    {
-
 
692
        $depth = TagFileRead($depthFile);
-
 
693
        my $invalid = 0;
-
 
694
        if ($depth !~ m~^\d+$~) {
-
 
695
            $invalid = 1;
-
 
696
        } elsif ( $depth lt 0) {
-
 
697
            $invalid = 1;
-
 
698
        }
-
 
699
 
-
 
700
        if ($invalid)
-
 
701
        {
-
 
702
            unlink $depthFile;
-
 
703
            Warning ("Invalid scandepth file. File deleted.");
-
 
704
            $depth = $SCANDEPTH;
-
 
705
        }
-
 
706
    }
-
 
707
 
-
 
708
    $scanDepth = $depth;
-
 
709
}
-
 
710
 
617
 
711
 
618
#-------------------------------------------------------------------------------
712
#-------------------------------------------------------------------------------
619
# Function        : check_package_existance
713
# Function        : check_package_existance
620
#
714
#
621
# Description     : Determine if a given package-version exists
715
# Description     : Determine if a given package-version exists
Line 744... Line 838...
744
#                       @build_order - build ordered array of build entries
838
#                       @build_order - build ordered array of build entries
745
#
839
#
746
sub calc_sandbox_info
840
sub calc_sandbox_info
747
{
841
{
748
    my ($quiet) = @_;
842
    my ($quiet) = @_;
749
    my $cacheFile = $GBE_DPKG_SBOX . '/location_cache';
843
    my $buildFileDepth = 0;
-
 
844
    getScanDepth();
-
 
845
 
750
    #
846
    #
751
    #   Start from the root of the sandbox
847
    #   Start from the root of the sandbox
752
    #
848
    #
753
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
849
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
754
    my $startDir = Getcwd();
850
    my $startDir = Getcwd();
Line 783... Line 879...
783
 
879
 
784
        if ($rootFingerPrint eq $currentRootFingerPrint )
880
        if ($rootFingerPrint eq $currentRootFingerPrint )
785
        {
881
        {
786
            while (<$lf>)
882
            while (<$lf>)
787
            {
883
            {
-
 
884
                s~\s+$~~;
788
                my @locationEntry = split($;, $_);
885
                my @locationEntry = split($;, $_);
789
                my $pname = $locationEntry[0];
886
                my $pname = $locationEntry[0];
-
 
887
                if ($locationEntry[1] eq ':STOP:') {
-
 
888
                    push @stopped, $pname;
-
 
889
                    Verbose("Package contains stop file: $pname");
-
 
890
                    next;
-
 
891
                }
790
 
892
 
791
                #
893
                #
792
                #   Locate the build files in each package
894
                #   Locate the build files in each package
793
                #   Scan the build files and extract dependancy information
895
                #   Scan the build files and extract dependancy information
794
                #
896
                #
795
                my $bscanner = BuildFileScanner( $pname, 'build.pl',
897
                my $bscanner = BuildFileScanner( $pname, 'build.pl',
796
                                                         '--LocateAll',
898
                                                         '--LocateAll',
797
                                                         '--LimitDepth=4',
899
                                                         '--LimitDepth=' . $scanDepth,
798
                                                         '--ScanDependencies' );
900
                                                         '--ScanDependencies' );
799
                unless ($bscanner->setLocation($_)) {
901
                unless ($bscanner->setLocation($_)) {
800
                    Verbose("Build file missing: Force full scan");
902
                    Verbose("Build file missing: Force full scan");
801
                    @build_list = ();
903
                    @build_list = ();
802
                    last;
904
                    last;
Line 830... Line 932...
830
 
932
 
831
            if ( -f "$pname/stop" || -f "$pname/stop.$GBE_MACHTYPE" )
933
            if ( -f "$pname/stop" || -f "$pname/stop.$GBE_MACHTYPE" )
832
            {
934
            {
833
                push @stopped, $pname;
935
                push @stopped, $pname;
834
                Warning("Package contains stop file: $pname");
936
                Warning("Package contains stop file: $pname");
-
 
937
                push @locationData, join($;, $pname, ':STOP:');
835
                next;
938
                next;
836
            }
939
            }
837
 
940
 
838
            #
941
            #
839
            #   Locate the build files in each package
942
            #   Locate the build files in each package
840
            #   Scan the build files and extract dependancy information
943
            #   Scan the build files and extract dependancy information
841
            #
944
            #
842
            my $bscanner = BuildFileScanner( $pname, 'build.pl',
945
            my $bscanner = BuildFileScanner( $pname, 'build.pl',
843
                                                     '--LocateAll',
946
                                                     '--LocateAll',
844
                                                     '--LimitDepth=4',
947
                                                     '--LimitDepth=' . $scanDepth,
845
                                                     '--ScanDependencies' );
948
                                                     '--ScanDependencies' );
846
            $bscanner->scan();
949
            $bscanner->scan();
847
            my @blist = $bscanner->getInfo();
950
            my @blist = $bscanner->getInfo();
848
            unless ($quiet) {
951
            unless ($quiet) {
849
                Warning ("Package does not have build files: $pname") unless ( @blist );
952
                Warning ("Package does not have build files: $pname") unless ( @blist );
850
                Warning ("Package has multiple build files: $pname") if ( $#blist > 0 );
953
                Warning ("Package has multiple build files: $pname") if ( $#blist > 0 );
851
            }
954
            }
852
            push @build_list, @blist;
955
            push @build_list, @blist;
853
            push @locationData, $bscanner->getLocation();
956
            push @locationData, $bscanner->getLocation();
-
 
957
 
-
 
958
            #
-
 
959
            #   Determine max build file depth - just to show user
-
 
960
            #
-
 
961
            foreach ( @blist)
-
 
962
            {
-
 
963
                my $count = () = $_->{dir} =~ m~/~g;
-
 
964
                $buildFileDepth = $count if ($count > $buildFileDepth)
-
 
965
            }
-
 
966
            
-
 
967
 
854
        }
968
        }
-
 
969
        Message ("Max Build File Depth : " . ($buildFileDepth + 1));
-
 
970
        Message ("Build File Scan Depth: ". $scanDepth) if ($SCANDEPTH ne $scanDepth);
-
 
971
 
855
 
972
 
856
        #
973
        #
857
        #   Save (cache) location information
974
        #   Save (cache) location information
858
        #
975
        #
859
        FileAppend($cacheFile, @locationData);
976
        FileAppend($cacheFile, @locationData);
Line 1860... Line 1977...
1860
    #
1977
    #
1861
    #   Write out a new file
1978
    #   Write out a new file
1862
    #
1979
    #
1863
    if ($modified)
1980
    if ($modified)
1864
    {
1981
    {
1865
        FileCreate($GBE_DPKG_SBOX . '/buildfilter', @filter_list);
1982
        FileCreate($filterFile, @filter_list);
1866
    }
1983
    }
1867
 
1984
 
1868
    #
1985
    #
1869
    # This command does not return
1986
    # This command does not return
1870
    #
1987
    #
Line 2102... Line 2219...
2102
    my $indent = $args->{indent} || '';
2219
    my $indent = $args->{indent} || '';
2103
    my $showPath = $args->{showPath};
2220
    my $showPath = $args->{showPath};
2104
 
2221
 
2105
    my ($status, $estatus) = addBuildInfo($fe, $args);
2222
    my ($status, $estatus) = addBuildInfo($fe, $args);
2106
 
2223
 
2107
    my $msg1 = $indent . 'Level:' . $fe->{level} . " [$status]" . ' Name: ' . $fe->{dname} . $estatus;
2224
    my $msg1 = $indent . sprintf('Level:%02d [%s] Name: %s', $fe->{level}, $status, $fe->{dname} . $estatus );
2108
    if ( $showPath) {
2225
    if ( $showPath) {
2109
        my $msg1Len = length($msg1);
2226
        my $msg1Len = length($msg1);
2110
        if ($msg1Len < 80) {
2227
        if ($msg1Len < 80) {
2111
            $msg1 .= ' ' . '=' x (79 - $msg1Len);
2228
            $msg1 .= ' ' . '=' x (79 - $msg1Len);
2112
        }
2229
        }
Line 2457... Line 2574...
2457
    info [[-v]-v]       - Sandbox information. -v: Be more verbose
2574
    info [[-v]-v]       - Sandbox information. -v: Be more verbose
2458
    buildfilter         - Modify and display sandbox buildfilter
2575
    buildfilter         - Modify and display sandbox buildfilter
2459
    [un]skip            - Mark a package to be skipped during the build
2576
    [un]skip            - Mark a package to be skipped during the build
2460
    fingerprint         - Various fingerprint operations
2577
    fingerprint         - Various fingerprint operations
2461
    testlinks           - Test / Delete broken package symlinks
2578
    testlinks           - Test / Delete broken package symlinks
-
 
2579
    scandepth           - Set/Display the build file scan depth
2462
    cmd                 - Do commands in all sandbox components
2580
    cmd                 - Do commands in all sandbox components
2463
    all                 - Do 'build', if required, then a make in all components
2581
    all                 - Do 'build', if required, then a make in all components
2464
    build               - Force 'build and make' in all sandbox components
2582
    build               - Force 'build and make' in all sandbox components
2465
    make                - Do 'make' in all sandbox components
2583
    make                - Do 'make' in all sandbox components
2466
    clean               - Do 'make clean' in all sandbox components
2584
    clean               - Do 'make clean' in all sandbox components
Line 2914... Line 3032...
2914
    -justPackage=name[,name]   - Build named packages
3032
    -justPackage=name[,name]   - Build named packages
2915
    -ignorePackage=name[,name] - Do not build named packages
3033
    -ignorePackage=name[,name] - Do not build named packages
2916
    -entireSandbox             - Process the entire sandbox
3034
    -entireSandbox             - Process the entire sandbox
2917
    -users                     - Process package users, not dependencies
3035
    -users                     - Process package users, not dependencies
2918
    -fingerprint               - Display fingerprint information
3036
    -fingerprint               - Display fingerprint information
-
 
3037
    -[no]dependencies          - Display external dependencies (default)
-
 
3038
    -[no]buildorder            - Display build order (default)
2919
 
3039
 
2920
=head2 OPTIONS
3040
=head2 OPTIONS
2921
 
3041
 
2922
=over
3042
=over
2923
 
3043
 
Line 2937... Line 3057...
2937
 
3057
 
2938
This option will cause the information display to include that status of each packages fingerprint.
3058
This option will cause the information display to include that status of each packages fingerprint.
2939
 
3059
 
2940
This will slow down the display as the calculation can be time consuming.
3060
This will slow down the display as the calculation can be time consuming.
2941
 
3061
 
-
 
3062
=item B<-[no]dependencies>
-
 
3063
 
-
 
3064
This option will cause the information display to include all the external dependencies.
-
 
3065
 
-
 
3066
=item B<-[no]buildorder>
-
 
3067
 
-
 
3068
This option will cause the information display to include all the build order.
-
 
3069
 
2942
=back
3070
=back
2943
 
3071
 
2944
=head2 DESCRIPTION
3072
=head2 DESCRIPTION
2945
 
3073
 
2946
The 'info' command will display information about the build order and the
3074
The 'info' command will display information about the build order and the
Line 3503... Line 3631...
3503
=head2 DESCRIPTION
3631
=head2 DESCRIPTION
3504
 
3632
 
3505
The 'testlinks' command, will by default, examine symbolic links within the sandbox and report on
3633
The 'testlinks' command, will by default, examine symbolic links within the sandbox and report on
3506
broken links.
3634
broken links.
3507
 
3635
 
3508
An option allwos the broken links to be deleted.
3636
An option allows the broken links to be deleted.
3509
 
3637
 
3510
Each package in the sandbox will have a symbolic link to the packages 'package' area. If a package is removed
3638
Each package in the sandbox will have a symbolic link to the packages 'package' area. If a package is removed
3511
from the sandbox the link file may be left in the sandbox and cause a 'build' to fail.
3639
from the sandbox the link file may be left in the sandbox and cause a 'build' to fail.
3512
 
3640
 
3513
=head2 EXAMPLES
3641
=head2 EXAMPLES
Line 3516... Line 3644...
3516
 
3644
 
3517
    jats sandbox testlinks
3645
    jats sandbox testlinks
3518
 
3646
 
3519
will test the symbolic links in the sandbox metadata.
3647
will test the symbolic links in the sandbox metadata.
3520
 
3648
 
-
 
3649
=head1 Sandbox Scan Depth
-
 
3650
 
-
 
3651
=head2 NAME
-
 
3652
 
-
 
3653
Set and Display the build file scanner depth
-
 
3654
 
-
 
3655
=head2 SYNOPSIS
-
 
3656
 
-
 
3657
jats sandbox scandepth [options] [depth]
-
 
3658
 
-
 
3659
 Command Options
-
 
3660
    -help[=n]               - Command specific help, [n=1,2,3]
-
 
3661
    -man                    - Same as -help=3
-
 
3662
 
-
 
3663
=head2 ARGUMENTS
-
 
3664
 
-
 
3665
This command takes one optional argument. A positive number that control the 
-
 
3666
depth of the build filter scanner.
-
 
3667
 
-
 
3668
The default value is '3'. Deeper scans may be required for sandboxes containing badly formed 
-
 
3669
packages. The tradoff is speed for all sandbox operations.
-
 
3670
 
-
 
3671
Setting the scan depth will force a rescan of the sandbox build files on the next command that
-
 
3672
requires the information.
-
 
3673
 
-
 
3674
=head2 OPTIONS
-
 
3675
 
-
 
3676
The scandepth command only accepts the standard help and man options.
-
 
3677
 
-
 
3678
=head2 DESCRIPTION
-
 
3679
 
-
 
3680
The scandepth command, will by default, display the current value for the build file scanner.
-
 
3681
 
-
 
3682
If a numeric argument is provided this will set the future build file scan depth.
-
 
3683
 
-
 
3684
=head2 EXAMPLES
-
 
3685
 
-
 
3686
The command
-
 
3687
 
-
 
3688
    jats sandbox scandepth 5
-
 
3689
 
-
 
3690
will set future build file scan to a maximum of 5 directories below the root of the sandbox.
-
 
3691
 
3521
=cut
3692
=cut
3522
 
3693