Subversion Repositories DevTools

Rev

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

Rev 6177 Rev 6192
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 85... Line 86...
85
my $GBE_DPKG_REPLICA    = $ENV{'GBE_DPKG_REPLICA'};
86
my $GBE_DPKG_REPLICA    = $ENV{'GBE_DPKG_REPLICA'};
86
 
87
 
87
#
88
#
88
#   Globals
89
#   Globals
89
#
90
#
90
my @stopped = ();                         # Stopped entries
91
my @stopped = ();                               # Stopped entries
91
my @build_order = ();                     # Build Ordered list of entries
92
my @build_order = ();                           # Build Ordered list of entries
92
my %extern_deps;                          # Hash of external dependencies
93
my %extern_deps;                                # Hash of external dependencies
93
my %packages;                             # Hash of packages
94
my %packages;                                   # Hash of packages
94
my $currentPkgTag;                        # Tag of the current package - if any                                          
95
my $currentPkgTag;                              # Tag of the current package - if any                                          
-
 
96
my $scanDepth;                                  # Depth for build file scan
-
 
97
 
-
 
98
#
-
 
99
#   Known files
-
 
100
#
-
 
101
my $cacheFile  = $GBE_DPKG_SBOX . '/location_cache';
-
 
102
my $depthFile  = $GBE_DPKG_SBOX . '/scanDepth';
-
 
103
my $filterFile = $GBE_SANDBOX   . '/buildfilter';
95
 
104
 
96
#-------------------------------------------------------------------------------
105
#-------------------------------------------------------------------------------
97
# Function        : Mainline Entry Point
106
# Function        : Mainline Entry Point
98
#
107
#
99
# Description     :
108
# Description     :
Line 145... Line 154...
145
populate(@ARGV)                         if ( $cmd =~ m/^populate$/  );
154
populate(@ARGV)                         if ( $cmd =~ m/^populate$/  );
146
buildfilter(@ARGV)                      if ( $cmd =~ m/^buildfilter$/  );
155
buildfilter(@ARGV)                      if ( $cmd =~ m/^buildfilter$/  );
147
skipBuild(0, @ARGV)                     if ( $cmd =~ m/^skip$/  );
156
skipBuild(0, @ARGV)                     if ( $cmd =~ m/^skip$/  );
148
skipBuild(1, @ARGV)                     if ( $cmd =~ m/^unskip$/  );
157
skipBuild(1, @ARGV)                     if ( $cmd =~ m/^unskip$/  );
149
fingerPrintPkg(@ARGV)                   if ( $cmd =~ m/^finger/i );
158
fingerPrintPkg(@ARGV)                   if ( $cmd =~ m/^finger/i );
-
 
159
testLinks(@ARGV)                        if ( $cmd =~ m/^testlinks/i );
-
 
160
setScanDepth(@ARGV)                     if ( $cmd =~ m/^scandepth/i );
150
 
161
 
151
Error ("Unknown sandbox command: $cmd");
162
Error ("Unknown sandbox command: $cmd");
152
exit 1;
163
exit 1;
153
 
164
 
154
 
165
 
Line 342... Line 353...
342
{
353
{
343
    my (@cmd_opts ) = @_;
354
    my (@cmd_opts ) = @_;
344
    my $show = 0;
355
    my $show = 0;
345
    my $showUsage = 0;
356
    my $showUsage = 0;
346
    my $showFingerPrint = 0;
357
    my $showFingerPrint = 0;
-
 
358
    my $showDependencies = 1;
-
 
359
    my $showOrder = 1;
347
 
360
 
348
    Getopt::Long::Configure('pass_through');
361
    Getopt::Long::Configure('pass_through');
349
    getOptionsFromArray ( \@cmd_opts,
362
    getOptionsFromArray ( \@cmd_opts,
350
                          'verbose:+'   => \$show,
363
                          'verbose:+'       => \$show,
351
                          'usedby'      => \$showUsage,
364
                          'usedby'          => \$showUsage,
352
                          'fingerprint' => \$showFingerPrint,
365
                          'fingerprint!'    => \$showFingerPrint,
-
 
366
                          'dependencies!'   => \$showDependencies,
-
 
367
                          'buildorder!'     => \$showOrder,
353
                        ) || Error ("Invalid command line" );
368
                        ) || Error ("Invalid command line" );
354
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#cmd_opts >=0 );
369
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#cmd_opts >=0 );
355
    $showUsage = 1 if ($show >= 2);
370
    $showUsage = 1 if ($show >= 2);
356
 
371
 
357
    #
372
    #
Line 365... Line 380...
365
    #
380
    #
366
    Message ("Type       : " . ($opt_exact ? 'Exact' : 'Development') );
381
    Message ("Type       : " . ($opt_exact ? 'Exact' : 'Development') );
367
    Message ("Scope      : " . ($opt_allSandbox ? 'Entire Sandbox' : $packages{$currentPkgTag}{dname} ));
382
    Message ("Scope      : " . ($opt_allSandbox ? 'Entire Sandbox' : $packages{$currentPkgTag}{dname} ));
368
    Message ("Base       : $GBE_SANDBOX");
383
    Message ("Base       : $GBE_SANDBOX");
369
    Message ("Archive    : $GBE_DPKG_SBOX");
384
    Message ("Archive    : $GBE_DPKG_SBOX");
370
    Message ("BuildFilter: $GBE_BUILDFILTER" . ( (-f $GBE_SANDBOX . '/buildfilter')  ? ' - Local to sandbox' : ''));
385
    Message ("BuildFilter: $GBE_BUILDFILTER" . ( (-f $filterFile)  ? ' - Local to sandbox' : ''));
371
 
-
 
372
 
386
 
373
    Message ("Build Order");
387
    if ($showOrder)
374
    foreach my $pname ( @stopped )
-
 
375
    {
-
 
376
        Message( "    Level:" . "-"  . " [---] Name: " . $pname . ' (Stopped)');
-
 
377
    }
-
 
378
    foreach my $fe ( @build_order )
-
 
379
    {
388
    {
380
        displayHeader($fe, { indent => '    ', testFingerPrint =>  $showFingerPrint, showIcons => 1});
389
        Message ("Build Order");
381
 
-
 
382
        if ( $show )
390
        foreach my $pname ( @stopped )
383
        {
391
        {
384
            Message( DisplayPath ("        Path: $fe->{dir}" ));
392
            Message( "    Level:" . "--"  . " [---] Name: " . $pname . ' (Stopped)');
385
            foreach my $idep ( sort values %{$fe->{'ideps'}} )
-
 
386
            {
393
        }
387
                Message ("        I:$idep");
394
        foreach my $fe ( @build_order )
388
            }
395
        {
-
 
396
            displayHeader($fe, { indent => '    ', testFingerPrint =>  $showFingerPrint, showIcons => 1});
389
 
397
 
390
            foreach my $edep ( sort keys %{$fe->{'edeps'}} )
398
            if ( $show )
391
            {
399
            {
-
 
400
                Message( DisplayPath ("        Path: $fe->{dir}" ));
-
 
401
                foreach my $idep ( sort values %{$fe->{'ideps'}} )
-
 
402
                {
-
 
403
                    Message ("        I:$idep");
-
 
404
                }
-
 
405
 
-
 
406
                foreach my $edep ( sort keys %{$fe->{'edeps'}} )
-
 
407
                {
392
                my ($ppn,$ppv) = split( $; , $edep);
408
                    my ($ppn,$ppv) = split( $; , $edep);
393
                Message ("        E:$ppn $ppv");
409
                    Message ("        E:$ppn $ppv");
-
 
410
                }
394
            }
411
            }
395
        }
-
 
396
 
412
 
397
        if ($showUsage && exists($fe->{'usedBy'}))
413
            if ($showUsage && exists($fe->{'usedBy'}))
398
        {
-
 
399
            foreach my $edep ( sort {uc($a) cmp uc($b)} @{$fe->{'usedBy'}} )
-
 
400
            {
414
            {
-
 
415
                foreach my $edep ( sort {uc($a) cmp uc($b)} @{$fe->{'usedBy'}} )
-
 
416
                {
401
                Message ("        U:$packages{$edep}{dname}");
417
                    Message ("        U:$packages{$edep}{dname}");
-
 
418
                }
402
            }
419
            }
403
        }
420
        }
404
    }
421
    }
405
 
422
 
406
    #
423
    #
407
    #   External dependencies flags
424
    #   External dependencies flags
408
    #       * - Package does not exist in dpkg_archive
425
    #       * - Package does not exist in dpkg_archive
409
    #       + - Multiple versions of this package are used
426
    #       + - Multiple versions of this package are used
410
 
427
 
411
    Message("External Dependencies");
428
    if ($showDependencies)
412
    foreach my $de ( sort {uc($a) cmp uc($b)} keys %extern_deps )
-
 
413
    {
429
    {
414
        my @vlist = keys %{$extern_deps{$de}};
430
        Message("External Dependencies");
415
        my $flag = $#vlist ? '+' : '';
-
 
416
        foreach my $pve ( sort {uc($a) cmp uc($b)} @vlist )
431
        foreach my $de ( sort {uc($a) cmp uc($b)} keys %extern_deps )
417
        {
432
        {
418
            my ($pn,$pv) = split( $; , $pve );
433
            my @vlist = keys %{$extern_deps{$de}};
419
            my $exists = check_package_existance($pn,$pv  ) ? '' : '*';
434
            my $flag = $#vlist ? '+' : '';
420
            my $flags = sprintf ("%4.4s", $flag . $exists);
435
            foreach my $pve ( sort {uc($a) cmp uc($b)} @vlist )
421
            Message ("${flags}${pn} ${pv}");
-
 
422
            if ( $show || $showUsage )
-
 
423
            {
436
            {
-
 
437
                my ($pn,$pv) = split( $; , $pve );
424
                foreach my $pkg ( sort {uc($a) cmp uc($b)} @{$extern_deps{$de}{$pve}} )
438
                my $exists = check_package_existance($pn,$pv  ) ? '' : '*';
-
 
439
                my $flags = sprintf ("%4.4s", $flag . $exists);
-
 
440
                Message ("${flags}${pn} ${pv}");
-
 
441
                if ( $show || $showUsage )
425
                {
442
                {
-
 
443
                    foreach my $pkg ( sort {uc($a) cmp uc($b)} @{$extern_deps{$de}{$pve}} )
-
 
444
                    {
426
                    my $ppn = join ('.', split( $; , $pkg));
445
                        my $ppn = join ('.', split( $; , $pkg));
427
                    Message ("        U:$ppn");
446
                        Message ("        U:$ppn");
-
 
447
                    }
428
                }
448
                }
429
            }
-
 
430
 
449
 
-
 
450
            }
431
        }
451
        }
432
    }
452
    }
433
 
453
 
434
    if ( $show > 2 || $opt_verbose > 2 )
454
    if ( $show > 2 || $opt_verbose > 2 )
435
    {
455
    {
Line 562... Line 582...
562
    }
582
    }
563
 
583
 
564
    exit (0);
584
    exit (0);
565
}
585
}
566
 
586
 
-
 
587
#-------------------------------------------------------------------------------
-
 
588
# Function        : testLinks 
-
 
589
#
-
 
590
# Description     : Test the lnk files in the sandbox directory
-
 
591
#                   These may be stake after packages are deleted
-
 
592
#
-
 
593
# Inputs          : 
-
 
594
#
-
 
595
# Returns         : This function will not return
-
 
596
#
-
 
597
sub testLinks
-
 
598
{
-
 
599
    my ( @cmd_opts ) = @_;
-
 
600
    my $opt_delete;
-
 
601
 
-
 
602
    GetOptions (
-
 
603
                "help:+"        => \$opt_help,
-
 
604
                "manual:3"      => \$opt_help,
-
 
605
                'delete!'       => \$opt_delete,
-
 
606
                ) || Error ("Invalid command line" );
-
 
607
 
-
 
608
    SubCommandHelp( $opt_help, "Sandbox Test Links") if ($opt_help || ($#ARGV >= 0) );
-
 
609
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
-
 
610
 
-
 
611
    #
-
 
612
    #   Process all packages in the sandbox
-
 
613
    #
-
 
614
    foreach my $linkFile ( glob "$GBE_DPKG_SBOX/*/*.lnk")
-
 
615
    {
-
 
616
        my $pkg = TagFileRead($linkFile);
-
 
617
 
-
 
618
        $pkg =~ s~\\~/~g;
-
 
619
        if ($pkg =~ s~^GBE_SANDBOX/~$GBE_SANDBOX/~)
-
 
620
        {
-
 
621
                # If the target sandbox is in the 'deploymode' then the package
-
 
622
                # will not be in the expected location. It will be in a 'build/deploy'
-
 
623
                # subdir. Remove the pkg/name dir to get to the root of the package
-
 
624
                my @dirs = File::Spec->splitdir( $pkg );
-
 
625
                splice(@dirs, -2);
-
 
626
                my $deployBox = catdir(@dirs, 'build', 'deploy');
-
 
627
                $pkg = $deployBox if ( -d $deployBox);
-
 
628
        }
-
 
629
 
-
 
630
        unless ( -d $pkg )
-
 
631
        {
-
 
632
            if ($opt_delete)
-
 
633
            {
-
 
634
                Message ("Delete: $linkFile");
-
 
635
                unlink $linkFile;
-
 
636
            } 
-
 
637
            else
-
 
638
            {
-
 
639
                Message ("Broken link: $pkg", "Source link: $linkFile" );
-
 
640
            }
-
 
641
        }
-
 
642
 
-
 
643
    }
-
 
644
    
-
 
645
    exit (0);
-
 
646
}
-
 
647
 
-
 
648
#-------------------------------------------------------------------------------
-
 
649
# Function        : setScanDepth 
-
 
650
#
-
 
651
# Description     : Set the depth of the build file scan usd in this sandbox 
-
 
652
#
-
 
653
# Inputs          : Command line arguments
-
 
654
#
-
 
655
# Returns         : This function will not return
-
 
656
#
-
 
657
sub setScanDepth
-
 
658
{
-
 
659
    my ( @cmd_opts ) = @_;
-
 
660
    GetOptions (
-
 
661
                "help:+"        => \$opt_help,
-
 
662
                "manual:3"      => \$opt_help,
-
 
663
                ) || Error ("Invalid command line" );
-
 
664
 
-
 
665
    SubCommandHelp( $opt_help, "Sandbox Scan Depth") if ($opt_help || ($#ARGV > 0 ));
-
 
666
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
-
 
667
 
-
 
668
    if (defined $ARGV[0])
-
 
669
    {
-
 
670
        FileCreate($depthFile, $ARGV[0]);
-
 
671
 
-
 
672
        #
-
 
673
        #   Force a rescan of the cached information
-
 
674
        #
-
 
675
        unlink $cacheFile;
-
 
676
        exit 0;
-
 
677
    }
-
 
678
 
-
 
679
    #
-
 
680
    #   Report the current scan depth
-
 
681
    #
-
 
682
    getScanDepth();
-
 
683
    Information ("Build File scan depth: ". $scanDepth);
-
 
684
    exit (0);
-
 
685
 
-
 
686
}
-
 
687
 
-
 
688
#-------------------------------------------------------------------------------
-
 
689
# Function        : getScanDepth  
-
 
690
#
-
 
691
# Description     : Determine the build file scan depth for the current sandbox
-
 
692
#                   Non-default data is maintained in a data file    
-
 
693
#
-
 
694
# Inputs          : None
-
 
695
#
-
 
696
# Returns         : Nothing
-
 
697
#
-
 
698
 
-
 
699
sub getScanDepth
-
 
700
{
-
 
701
    my $depth = $SCANDEPTH;
-
 
702
    if ( -f $depthFile)
-
 
703
    {
-
 
704
        $depth = TagFileRead($depthFile);
-
 
705
        my $invalid = 0;
-
 
706
        if ($depth !~ m~^\d+$~) {
-
 
707
            $invalid = 1;
-
 
708
        } elsif ( $depth lt 0) {
-
 
709
            $invalid = 1;
-
 
710
        }
-
 
711
 
-
 
712
        if ($invalid)
-
 
713
        {
-
 
714
            unlink $depthFile;
-
 
715
            Warning ("Invalid scandepth file. File deleted.");
-
 
716
            $depth = $SCANDEPTH;
-
 
717
        }
-
 
718
    }
-
 
719
    $scanDepth = $depth;
-
 
720
}
-
 
721
 
567
 
722
 
568
#-------------------------------------------------------------------------------
723
#-------------------------------------------------------------------------------
569
# Function        : check_package_existance
724
# Function        : check_package_existance
570
#
725
#
571
# Description     : Determine if a given package-version exists
726
# Description     : Determine if a given package-version exists
Line 645... Line 800...
645
#                       @build_order - build ordered array of build entries
800
#                       @build_order - build ordered array of build entries
646
#
801
#
647
sub calc_sandbox_info
802
sub calc_sandbox_info
648
{
803
{
649
    my ($quiet) = @_;
804
    my ($quiet) = @_;
650
    my $cacheFile = $GBE_DPKG_SBOX . '/location_cache';
805
    getScanDepth();
-
 
806
 
651
    #
807
    #
652
    #   Start from the root of the sandbox
808
    #   Start from the root of the sandbox
653
    #
809
    #
654
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
810
    Error ("Command must be executed from within a Sandbox") unless ( $GBE_SANDBOX );
655
    my $startDir = Getcwd();
811
    my $startDir = Getcwd();
Line 684... Line 840...
684
 
840
 
685
        if ($rootFingerPrint eq $currentRootFingerPrint )
841
        if ($rootFingerPrint eq $currentRootFingerPrint )
686
        {
842
        {
687
            while (<$lf>)
843
            while (<$lf>)
688
            {
844
            {
-
 
845
                s~\s+$~~;
689
                my @locationEntry = split($;, $_);
846
                my @locationEntry = split($;, $_);
690
                my $pname = $locationEntry[0];
847
                my $pname = $locationEntry[0];
-
 
848
                if ($locationEntry[1] eq ':STOP:') {
-
 
849
                    push @stopped, $pname;
-
 
850
                    Verbose("Package contains stop file: $pname");
-
 
851
                    next;
-
 
852
                }
691
 
853
 
692
                #
854
                #
693
                #   Locate the build files in each package
855
                #   Locate the build files in each package
694
                #   Scan the build files and extract dependancy information
856
                #   Scan the build files and extract dependancy information
695
                #
857
                #
696
                my $bscanner = BuildFileScanner( $pname, 'build.pl',
858
                my $bscanner = BuildFileScanner( $pname, 'build.pl',
697
                                                         '--LocateAll',
859
                                                         '--LocateAll',
698
                                                         '--LimitDepth=4',
860
                                                         '--LimitDepth=' . $scanDepth,
699
                                                         '--ScanDependencies' );
861
                                                         '--ScanDependencies' );
700
                unless ($bscanner->setLocation($_)) {
862
                unless ($bscanner->setLocation($_)) {
701
                    Verbose("Build file missing: Force full scan");
863
                    Verbose("Build file missing: Force full scan");
702
                    @build_list = ();
864
                    @build_list = ();
703
                    last;
865
                    last;
Line 716... Line 878...
716
 
878
 
717
    unless (@build_list)
879
    unless (@build_list)
718
    {
880
    {
719
        Message ("Scanning sandbox for build files");
881
        Message ("Scanning sandbox for build files");
720
        FileCreate($cacheFile, $currentRootFingerPrint );
882
        FileCreate($cacheFile, $currentRootFingerPrint );
-
 
883
        Message ("Build File scan depth: ". $scanDepth) if ($SCANDEPTH ne $scanDepth);
721
 
884
 
722
        my @locationData;
885
        my @locationData;
723
        foreach my $pname ( glob("*") )
886
        foreach my $pname ( glob("*") )
724
        {
887
        {
725
            next if ( $pname =~ m~^\.~ );
888
            next if ( $pname =~ m~^\.~ );
Line 731... Line 894...
731
 
894
 
732
            if ( -f "$pname/stop" || -f "$pname/stop.$GBE_MACHTYPE" )
895
            if ( -f "$pname/stop" || -f "$pname/stop.$GBE_MACHTYPE" )
733
            {
896
            {
734
                push @stopped, $pname;
897
                push @stopped, $pname;
735
                Warning("Package contains stop file: $pname");
898
                Warning("Package contains stop file: $pname");
-
 
899
                push @locationData, join($;, $pname, ':STOP:');
736
                next;
900
                next;
737
            }
901
            }
738
 
902
 
739
            #
903
            #
740
            #   Locate the build files in each package
904
            #   Locate the build files in each package
741
            #   Scan the build files and extract dependancy information
905
            #   Scan the build files and extract dependancy information
742
            #
906
            #
743
            my $bscanner = BuildFileScanner( $pname, 'build.pl',
907
            my $bscanner = BuildFileScanner( $pname, 'build.pl',
744
                                                     '--LocateAll',
908
                                                     '--LocateAll',
745
                                                     '--LimitDepth=4',
909
                                                     '--LimitDepth=' . $scanDepth,
746
                                                     '--ScanDependencies' );
910
                                                     '--ScanDependencies' );
747
            $bscanner->scan();
911
            $bscanner->scan();
748
            my @blist = $bscanner->getInfo();
912
            my @blist = $bscanner->getInfo();
749
            unless ($quiet) {
913
            unless ($quiet) {
750
                Warning ("Package does not have build files: $pname") unless ( @blist );
914
                Warning ("Package does not have build files: $pname") unless ( @blist );
Line 1755... Line 1919...
1755
    #
1919
    #
1756
    #   Write out a new file
1920
    #   Write out a new file
1757
    #
1921
    #
1758
    if ($modified)
1922
    if ($modified)
1759
    {
1923
    {
1760
        FileCreate($GBE_DPKG_SBOX . '/buildfilter', @filter_list);
1924
        FileCreate($filterFile, @filter_list);
1761
    }
1925
    }
1762
 
1926
 
1763
    #
1927
    #
1764
    # This command does not return
1928
    # This command does not return
1765
    #
1929
    #
Line 1997... Line 2161...
1997
    my $indent = $args->{indent} || '';
2161
    my $indent = $args->{indent} || '';
1998
    my $showPath = $args->{showPath};
2162
    my $showPath = $args->{showPath};
1999
 
2163
 
2000
    my ($status, $estatus) = addBuildInfo($fe, $args);
2164
    my ($status, $estatus) = addBuildInfo($fe, $args);
2001
 
2165
 
2002
    my $msg1 = $indent . 'Level:' . $fe->{level} . " [$status]" . ' Name: ' . $fe->{dname} . $estatus;
2166
    my $msg1 = $indent . sprintf('Level:%02d [%s] Name: %s', $fe->{level}, $status, $fe->{dname} . $estatus );
2003
    if ( $showPath) {
2167
    if ( $showPath) {
2004
        my $msg1Len = length($msg1);
2168
        my $msg1Len = length($msg1);
2005
        if ($msg1Len < 80) {
2169
        if ($msg1Len < 80) {
2006
            $msg1 .= ' ' . '=' x (79 - $msg1Len);
2170
            $msg1 .= ' ' . '=' x (79 - $msg1Len);
2007
        }
2171
        }
Line 2351... Line 2515...
2351
    delete              - Delete the sandbox
2515
    delete              - Delete the sandbox
2352
    info [[-v]-v]       - Sandbox information. -v: Be more verbose
2516
    info [[-v]-v]       - Sandbox information. -v: Be more verbose
2353
    buildfilter         - Modify and display sandbox buildfilter
2517
    buildfilter         - Modify and display sandbox buildfilter
2354
    [un]skip            - Mark a package to be skipped during the build
2518
    [un]skip            - Mark a package to be skipped during the build
2355
    fingerprint         - Various fingerprint operations
2519
    fingerprint         - Various fingerprint operations
-
 
2520
    testlinks           - Test / Delete broken package symlinks
-
 
2521
    scandepth           - Set/Display the build file scan depth
2356
    cmd                 - Do commands in all sandbox components
2522
    cmd                 - Do commands in all sandbox components
2357
    all                 - Do 'build', if required, then a make in all components
2523
    all                 - Do 'build', if required, then a make in all components
2358
    build               - Force 'build and make' in all sandbox components
2524
    build               - Force 'build and make' in all sandbox components
2359
    make                - Do 'make' in all sandbox components
2525
    make                - Do 'make' in all sandbox components
2360
    clean               - Do 'make clean' in all sandbox components
2526
    clean               - Do 'make clean' in all sandbox components
Line 2822... Line 2988...
2822
    -justPackage=name[,name]   - Build named packages
2988
    -justPackage=name[,name]   - Build named packages
2823
    -ignorePackage=name[,name] - Do not build named packages
2989
    -ignorePackage=name[,name] - Do not build named packages
2824
    -entireSandbox             - Process the entire sandbox
2990
    -entireSandbox             - Process the entire sandbox
2825
    -users                     - Process package users, not dependencies
2991
    -users                     - Process package users, not dependencies
2826
    -fingerprint               - Display fingerprint information
2992
    -fingerprint               - Display fingerprint information
-
 
2993
    -[no]dependencies          - Display external dependencies (default)
-
 
2994
    -[no]buildorder            - Display build order (default)
2827
 
2995
 
2828
=head2 OPTIONS
2996
=head2 OPTIONS
2829
 
2997
 
2830
=over
2998
=over
2831
 
2999
 
Line 2845... Line 3013...
2845
 
3013
 
2846
This option will cause the information display to include that status of each packages fingerprint.
3014
This option will cause the information display to include that status of each packages fingerprint.
2847
 
3015
 
2848
This will slow down the display as the calculation can be time consuming.
3016
This will slow down the display as the calculation can be time consuming.
2849
 
3017
 
-
 
3018
=item B<-[no]dependencies>
-
 
3019
 
-
 
3020
This option will cause the information display to include all the external dependencies.
-
 
3021
 
-
 
3022
=item B<-[no]buildorder>
-
 
3023
 
-
 
3024
This option will cause the information display to include all the build order.
-
 
3025
 
2850
=back
3026
=back
2851
 
3027
 
2852
=head2 DESCRIPTION
3028
=head2 DESCRIPTION
2853
 
3029
 
2854
The 'info' command will display information about the build order and the
3030
The 'info' command will display information about the build order and the
Line 3375... Line 3551...
3375
 
3551
 
3376
This command allows the simple creation of a small development environment that
3552
This command allows the simple creation of a small development environment that
3377
is not tied to the larger Development Environment. It may then be used in a
3553
is not tied to the larger Development Environment. It may then be used in a
3378
disconnected mode to perform development.
3554
disconnected mode to perform development.
3379
 
3555
 
-
 
3556
=head1 Sandbox Test Links
-
 
3557
 
-
 
3558
=head2 NAME
-
 
3559
 
-
 
3560
Test and delete sandbox link files
-
 
3561
 
-
 
3562
=head2 SYNOPSIS
-
 
3563
 
-
 
3564
jats sandbox testlinks [options]
-
 
3565
 
-
 
3566
 Command Options
-
 
3567
    -help[=n]               - Command specific help, [n=1,2,3]
-
 
3568
    -man                    - Same as -help=3
-
 
3569
    -[no]delete             - Delete bad links
-
 
3570
 
-
 
3571
=head2 ARGUMENTS
-
 
3572
 
-
 
3573
This command does not take any arguments
-
 
3574
 
-
 
3575
=head2 OPTIONS
-
 
3576
 
-
 
3577
The 'fingerprint' command takes the following options:
-
 
3578
 
-
 
3579
=over 8
-
 
3580
 
-
 
3581
=item -[no]delete
-
 
3582
 
-
 
3583
This option will delete the link files if they are bad.
-
 
3584
 
-
 
3585
=back
-
 
3586
 
-
 
3587
=head2 DESCRIPTION
-
 
3588
 
-
 
3589
The 'testlinks' command, will by default, examine symbolic links within the sandbox and report on
-
 
3590
broken links.
-
 
3591
 
-
 
3592
An option allows the broken links to be deleted.
-
 
3593
 
-
 
3594
Each package in the sandbox will have a symbolic link to the packages 'package' area. If a package is removed
-
 
3595
from the sandbox the link file may be left in the sandbox and cause a 'build' to fail.
-
 
3596
 
-
 
3597
=head2 EXAMPLES
-
 
3598
 
-
 
3599
The command
-
 
3600
 
-
 
3601
    jats sandbox testlinks
-
 
3602
 
-
 
3603
will test the symbolic links in the sandbox metadata.
-
 
3604
 
-
 
3605
=head1 Sandbox Scan Depth
-
 
3606
 
-
 
3607
=head2 NAME
-
 
3608
 
-
 
3609
Set and Display the build file scanner depth
-
 
3610
 
-
 
3611
=head2 SYNOPSIS
-
 
3612
 
-
 
3613
jats sandbox scandepth [options] [depth]
-
 
3614
 
-
 
3615
 Command Options
-
 
3616
    -help[=n]               - Command specific help, [n=1,2,3]
-
 
3617
    -man                    - Same as -help=3
-
 
3618
 
-
 
3619
=head2 ARGUMENTS
-
 
3620
 
-
 
3621
This command takes one optional argument. A positive number that control the 
-
 
3622
depth of the build filter scanner.
-
 
3623
 
-
 
3624
The default value is '3'. Deeper scans may be required for sandboxes containing badly formed 
-
 
3625
packages. The tradoff is speed for all sandbox operations.
-
 
3626
 
-
 
3627
Setting the scan depth will force a rescan of the sandbox build files on the next command that
-
 
3628
requires the information.
-
 
3629
 
-
 
3630
=head2 OPTIONS
-
 
3631
 
-
 
3632
The scandepth command only accepts the standard help and man options.
-
 
3633
 
-
 
3634
=head2 DESCRIPTION
-
 
3635
 
-
 
3636
The scandepth command, will by default, display the current value for the build file scanner.
-
 
3637
 
-
 
3638
If a numeric argument is provided this will set the future build file scan depth.
-
 
3639
 
-
 
3640
=head2 EXAMPLES
-
 
3641
 
-
 
3642
The command
-
 
3643
 
-
 
3644
    jats sandbox scandepth 5
-
 
3645
 
-
 
3646
will set future build file scan to a maximum of 5 directories below the root of the sandbox.
-
 
3647
 
3380
=cut
3648
=cut
3381
 
3649