Subversion Repositories DevTools

Rev

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

Rev 1131 Rev 5105
Line 66... Line 66...
66
#                       --SrcFile=xxx
66
#                       --SrcFile=xxx
67
#                       --SrcFileNoCopy=xxx
67
#                       --SrcFileNoCopy=xxx
68
#                       --Comment=xxx           - Add comment to Manifst
68
#                       --Comment=xxx           - Add comment to Manifst
69
#                       --NoManifestVersion     - Create unversioned Manifest File
69
#                       --NoManifestVersion     - Create unversioned Manifest File
70
#                       --PkgSubdir=xxx         - Specifies packaging subdir
70
#                       --PkgSubdir=xxx         - Specifies packaging subdir
71
#                       --ImportManifest=Package[,--Subdir=subdir] - Import Manifest from package
71
#                       --ImportManifest=Package[,--Subdir=subdir,--ReWrite] - Import Manifest from package
72
#
72
#
73
# Returns         : Nothing
73
# Returns         : Nothing
74
#
74
#
75
sub ManifestFiles
75
sub ManifestFiles
76
{
76
{
Line 146... Line 146...
146
                next;
146
                next;
147
            }
147
            }
148
            $pkg_subdir = $1;
148
            $pkg_subdir = $1;
149
 
149
 
150
        } elsif ( m/^--ImportManifest=(.+)/i ) {
150
        } elsif ( m/^--ImportManifest=(.+)/i ) {
151
            my $import_info = ImportManifest($1);
151
            my $import_info = ImportManifest($1, $tier, $name);
152
#DebugDumpData("ImportInfo", $import_info );
152
#DebugDumpData("ImportInfo", $import_info );
153
            push @files, {'manifest' => $import_info };
153
            push @files, {'manifest' => $import_info };
154
 
154
 
155
            #
155
            #
156
            #   Fill in details unless already provided
156
            #   Fill in details unless already provided
Line 336... Line 336...
336
    #-------------------------------------------------------------------------------
336
    #-------------------------------------------------------------------------------
337
    # Function        : ImportManifest
337
    # Function        : ImportManifest
338
    #
338
    #
339
    # Description     : Import an existing manifest
339
    # Description     : Import an existing manifest
340
    #
340
    #
-
 
341
    # Inputs          : Args    - PackageName[,Subdir=name,--ReWrite]
341
    # Inputs          : Args
342
    #                   tier    - May be null
342
    #                           PackageName[,Subdir=name]
343
    #                   name    - May be null
343
    #
344
    #
344
    # Returns         : A hash of data to be used later
345
    # Returns         : A hash of data to be used later
345
    #
346
    #
346
    sub ImportManifest
347
    sub ImportManifest
347
    {
348
    {
348
        my ($args) = @_;
349
        my ($args, $tier, $name) = @_;
349
        my @file_contents;
350
        my @file_contents;
350
        my @file_list;
351
        my @file_list;
351
 
352
 
352
        #
353
        #
353
        #   Locate the mugfile subdir
354
        #   Locate the mugfile subdir
Line 357... Line 358...
357
        my $pkg_dir;
358
        my $pkg_dir;
358
        my $pkg_root;
359
        my $pkg_root;
359
        my $manifest;
360
        my $manifest;
360
        my $first_tier;
361
        my $first_tier;
361
        my $first_name;
362
        my $first_name;
-
 
363
        my $rewrite;
362
 
364
 
363
        #
365
        #
364
        #   Extract sub options
366
        #   Extract sub options
365
        #       --Subdir=xxxx,yyyy,zzzz
367
        #       --Subdir=xxxx,yyyy,zzzz
-
 
368
        #       --ReWrite
366
        #
369
        #
367
        if ( $package_name =~ m/(.*?),--Subdir=(.*)/ )
370
        if ( $package_name =~ m/(.*?)(,.*)/ )
368
        {
371
        {
369
            $package_name = $1;
372
            $package_name = $1;
-
 
373
            my @subargs = split(',--', $2);
-
 
374
            foreach ( @subargs)
-
 
375
            {
-
 
376
                next unless (length($_) > 0);
-
 
377
                if (m~^Subdir=(.*)~i){
370
            @dirs = split( ',', $2 );
378
                    @dirs = split( ',', $1 );
-
 
379
 
-
 
380
                } elsif (m~^ReWrite~i) {
-
 
381
                    $rewrite = 1;
-
 
382
 
-
 
383
                } else {
-
 
384
                    ReportError("ManifestFiles: Unknown suboption to ImportManifest:" . $_);
-
 
385
                }
-
 
386
            }
371
        }
387
        }
372
 
388
 
373
        my $package = GetPackageEntry( $package_name );
389
        my $package = GetPackageEntry( $package_name );
374
        unless ( $package )
390
        unless ( $package )
375
        {
391
        {
376
            ReportError ("ManifestFiles: Package not known to build: $package_name");
392
            ReportError ("ManifestFiles: Package not known to build: $package_name");
377
            return undef;
393
            return undef;
378
        }
394
        }
379
 
395
 
-
 
396
        if (defined ($rewrite) && ( !defined($tier) || !defined($name)))
-
 
397
        {
-
 
398
            ReportError ("ManifestFiles: ImportManifest. --ReWrite cannot be used unless tier and name are specified");
-
 
399
            return undef;
-
 
400
        }
-
 
401
 
380
        foreach my $subdir ( @dirs )
402
        foreach my $subdir ( @dirs )
381
        {
403
        {
382
            my $dir = "$package->{'ROOT'}/$subdir";
404
            my $dir = "$package->{'ROOT'}/$subdir";
383
            my $root = $package->{'ROOT'};
405
            my $root = $package->{'ROOT'};
384
            if ( -d $dir )
406
            if ( -d $dir )
Line 387... Line 409...
387
                         "Ignoring: $subdir" )if ( $pkg_dir );
409
                         "Ignoring: $subdir" )if ( $pkg_dir );
388
                $pkg_dir = $dir;
410
                $pkg_dir = $dir;
389
                $pkg_root = $root;
411
                $pkg_root = $root;
390
            }
412
            }
391
        }
413
        }
-
 
414
 
-
 
415
        unless ($pkg_dir)
-
 
416
        {
392
        ReportError ("Package directory not found in package: $package_name")
417
            ReportError ("Package directory not found in package: $package_name");
393
            unless $pkg_dir;
418
            return undef;
-
 
419
        }
394
 
420
 
395
        #
421
        #
396
        #   Determine Manifest File name
422
        #   Determine Manifest File name
397
        #
423
        #
398
        foreach my $file ( glob ($pkg_dir . '/Manifest*' ) )
424
        foreach my $file ( glob ($pkg_dir . '/Manifest*' ) )
Line 401... Line 427...
401
                Warning ("Multiple Manifest Files find. Only the first will be used",
427
                Warning ("Multiple Manifest Files find. Only the first will be used",
402
                         "Using: $manifest",
428
                         "Using: $manifest",
403
                         "Ignoring: $file" ) if ( $manifest );
429
                         "Ignoring: $file" ) if ( $manifest );
404
                $manifest = $file;
430
                $manifest = $file;
405
        }
431
        }
-
 
432
 
-
 
433
        unless ($manifest)
-
 
434
        {
406
        ReportError ("ImportManifest. No Manifest found: $package_name")
435
            ReportError ("ImportManifest. No Manifest found: $package_name");
407
            unless $manifest;
436
            return undef;
-
 
437
        }
408
 
438
 
409
 
439
 
410
        #
440
        #
411
        #   
441
        #   
412
        #
442
        #
Line 417... Line 447...
417
            #   Clean traling whitespace ( line-feed and new lines )
447
            #   Clean traling whitespace ( line-feed and new lines )
418
            #   Comment out [Version] data
448
            #   Comment out [Version] data
419
            #
449
            #
420
            s~\s+$~~;
450
            s~\s+$~~;
421
            s~(\s*\[Version])~#$1~;
451
            s~(\s*\[Version])~#$1~;
422
            push @file_contents, $_;
-
 
423
 
452
 
424
            #
453
            #
425
            #   Part lines and determine files
454
            #   Part lines and determine files
426
            #
455
            #
427
            next unless ( $_ );
456
            next unless ( $_ );
Line 431... Line 460...
431
#            print "---------- $_\n";
460
#            print "---------- $_\n";
432
#            print "T: $atier, N:$aname, F:$afile\n";
461
#            print "T: $atier, N:$aname, F:$afile\n";
433
            push @file_list, $afile;
462
            push @file_list, $afile;
434
 
463
 
435
            #
464
            #
436
            #   Capture first tier and name
465
            #   Rewrite the name and tier
437
            #
466
            #
-
 
467
            if ($rewrite)
-
 
468
            {
-
 
469
                $_ = join(',', $name, $tier, $afile);
-
 
470
                $first_tier = $tier;
-
 
471
                $first_name = $name;
-
 
472
            }
-
 
473
            else
-
 
474
            {
-
 
475
                #
-
 
476
                #   Capture first tier and name
-
 
477
                #
438
            $first_tier = $atier unless ( defined $first_tier );
478
                $first_tier = $atier unless ( defined $first_tier );
439
            $first_name = $aname unless ( defined $first_name );
479
                $first_name = $aname unless ( defined $first_name );
-
 
480
            }
-
 
481
        }
-
 
482
        continue
440
 
483
        {
-
 
484
            push @file_contents, $_;
441
        }
485
        }
442
        close MF;
486
        close MF;
443
 
487
 
444
        #
488
        #
445
        #   Create a hash of data that describes the manifest that has
489
        #   Create a hash of data that describes the manifest that has
Line 452... Line 496...
452
                  'file_base' => $pkg_dir,
496
                  'file_base' => $pkg_dir,
453
                  'manifest' => $manifest,
497
                  'manifest' => $manifest,
454
                  'pkg_dir' => $pkg_root,
498
                  'pkg_dir' => $pkg_root,
455
                  'tier' => $first_tier,
499
                  'tier' => $first_tier,
456
                  'name' => $first_name,
500
                  'name' => $first_name,
-
 
501
                  'rewrite' => $rewrite,
457
                };
502
                };
458
    }
503
    }
459
}
504
}
460
 
505
 
461
#-------------------------------------------------------------------------------
506
#-------------------------------------------------------------------------------