Subversion Repositories DevTools

Rev

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

Rev 6314 Rev 6364
Line 80... Line 80...
80
#                       --Dmf                   - Generate the Device Management Framework
80
#                       --Dmf                   - Generate the Device Management Framework
81
#                                                 combined archive ZIP file.
81
#                                                 combined archive ZIP file.
82
#                       --DmfVersion=xxxx       - Generate the Device Management Framework
82
#                       --DmfVersion=xxxx       - Generate the Device Management Framework
83
#                                                 combined archive ZIP using a modified
83
#                                                 combined archive ZIP using a modified
84
#                                                 version number; only for testing!
84
#                                                 version number; only for testing!
85
#                       --LineLength=nnn        - Limit line length. Default is 79                          
85
#                       --LineLength=nnn        - Limit line length. Default is 79
-
 
86
#                       --SubManifest           - Create a sub-manifest (not installable). Manifest will have no version.
-
 
87
#                                                 Gives a default name, tier and subdir if not explicitly provided.
86
#
88
#
87
# Returns         : Nothing
89
# Returns         : Nothing
88
#
90
#
89
sub ManifestFiles
91
sub ManifestFiles
90
{
92
{
Line 102... Line 104...
102
    my $imported_manifest = 0;
104
    my $imported_manifest = 0;
103
    my $include_md5 = 0;
105
    my $include_md5 = 0;
104
    my $generate_dmf = 0;
106
    my $generate_dmf = 0;
105
    my $dmf_version = $::ScmBuildVersionFull;
107
    my $dmf_version = $::ScmBuildVersionFull;
106
    my $useDefaultLineWidth = 1;
108
    my $useDefaultLineWidth = 1;
-
 
109
    my $is_sub_manifest = 0;
107
 
110
 
108
    #
111
    #
109
    #   Collect user options
112
    #   Collect user options
110
    #
113
    #
111
    foreach ( @elements )
114
    foreach ( @elements )
Line 194... Line 197...
194
 
197
 
195
        } elsif ( m/^--LineLength=(\d+)$/i ) {
198
        } elsif ( m/^--LineLength=(\d+)$/i ) {
196
            $ManifestLineWidth = $1;
199
            $ManifestLineWidth = $1;
197
            $useDefaultLineWidth = 0;
200
            $useDefaultLineWidth = 0;
198
 
201
 
-
 
202
        } elsif (m/^--SubManifest/i) {
-
 
203
            $is_sub_manifest = 1;
-
 
204
            $Manifest_has_version = 0;
-
 
205
            $name = $::ScmPlatform
-
 
206
                unless $name;
-
 
207
            $pkg_subdir = $name
-
 
208
                unless $pkg_subdir;
-
 
209
            $tier = 0
-
 
210
                unless defined($tier);
-
 
211
 
199
        } else {
212
        } else {
200
            ReportError ("ManifestFiles: Unknown option or argument: $_");
213
            ReportError ("ManifestFiles: Unknown option or argument: $_");
201
 
214
 
202
        }
215
        }
203
    }
216
    }
Line 238... Line 251...
238
    $data{pkgsubdir} = $pkg_subdir;
251
    $data{pkgsubdir} = $pkg_subdir;
239
    $data{md5} = $include_md5;
252
    $data{md5} = $include_md5;
240
    $data{dmf} = $generate_dmf;
253
    $data{dmf} = $generate_dmf;
241
    $data{arch} = $default_arch;
254
    $data{arch} = $default_arch;
242
    $data{dmf_version} = $dmf_version;
255
    $data{dmf_version} = $dmf_version;
-
 
256
    $data{is_sub_manifest} = $is_sub_manifest;
243
 
257
 
244
#DebugDumpData("DirectiveData", \%data );
258
#DebugDumpData("DirectiveData", \%data );
245
 
259
 
246
    push @Manifests, \%data;
260
    push @Manifests, \%data;
247
    return;
261
    return;
Line 571... Line 585...
571
#
585
#
572
sub _ImportManifest
586
sub _ImportManifest
573
{
587
{
574
    my ($args, $tier, $name) = @_;
588
    my ($args, $tier, $name) = @_;
575
    my @file_contents;
589
    my @file_contents;
576
    my @file_list;
590
    my @item_list;
577
 
591
 
578
    #
592
    #
579
    #   Locate the mugfile subdir
593
    #   Locate the mugfile subdir
580
    #
594
    #
581
    my $package_name = $args;
595
    my $package_name = $args;
Line 677... Line 691...
677
 
691
 
678
        #
692
        #
679
        #   Part lines and determine files
693
        #   Part lines and determine files
680
        #
694
        #
681
        next unless ( $_ );
695
        next unless ( $_ );
682
        next if ( m~\s*#~ );
696
        if (( m~\s*#~ ) || ( m~\s*\[~ )) {
-
 
697
            push @item_list, { 'comment' => $_ };
683
        next if ( m~\s*\[~ );
698
            next;
-
 
699
        }
684
        my( $aname, $atier, $afile) = split(/\s*\,\s*/, $_);
700
        my( $aname, $atier, $afile, @additionnal_info) = split(/\s*\,\s*/, $_);
685
#            print "---------- $_\n";
701
#            print "---------- $_\n";
686
#            print "T: $atier, N:$aname, F:$afile\n";
702
#            print "T: $atier, N:$aname, F:$afile\n";
-
 
703
        my $file =  { 'file_name' => $afile
-
 
704
                    , 'file_info' => \@additionnal_info
-
 
705
                    };
687
        push @file_list, $afile;
706
        push @item_list, $file;
688
 
707
 
689
        #
708
        #
690
        #   Rewrite the name and tier
709
        #   Rewrite the name and tier
691
        #
710
        #
692
        if ($rewrite)
711
        if ($rewrite)
Line 715... Line 734...
715
    #   just been read in.
734
    #   just been read in.
716
    #
735
    #
717
    $package_dirs{$pkg_root}{used} = 1;
736
    $package_dirs{$pkg_root}{used} = 1;
718
    $manifest =~ s~.*/~~;
737
    $manifest =~ s~.*/~~;
719
    return { 'contents' => \@file_contents,
738
    return { 'contents' => \@file_contents,
720
              'files' => \@file_list,
739
              'items' => \@item_list,
721
              'file_base' => $pkg_dir,
740
              'file_base' => $pkg_dir,
722
              'manifest' => $manifest,
741
              'manifest' => $manifest,
723
              'pkg_dir' => $pkg_root,
742
              'pkg_dir' => $pkg_root,
724
              'tier' => $first_tier,
743
              'tier' => $first_tier,
725
              'name' => $first_name,
744
              'name' => $first_name,
Line 790... Line 809...
790
 
809
 
791
    open (MF, '>', $manifest_file ) || Error ("Cannot create the Manifest file: $manifest_file");
810
    open (MF, '>', $manifest_file ) || Error ("Cannot create the Manifest file: $manifest_file");
792
 
811
 
793
    binmode (MF);
812
    binmode (MF);
794
 
813
 
-
 
814
    if ($Manifests[0]->{is_sub_manifest} == 1) {
-
 
815
        print_mf ("# Package $::ScmBuildPackage $::ScmBuildVersion built: $::CurrentTime");
-
 
816
    } else {
795
    print_mf ("# PackageName: $::ScmBuildPackage");
817
        print_mf ("# PackageName: $::ScmBuildPackage");
796
    print_mf ("# PackageVersion: $::ScmBuildVersion");
818
        print_mf ("# PackageVersion: $::ScmBuildVersion");
797
    print_mf ("# BuildDate: $::CurrentTime");
819
        print_mf ("# BuildDate: $::CurrentTime");
798
    print_mf ("#");
820
        print_mf ("#");
799
    print_mf ("[Version],$::ScmBuildVersion");
821
        print_mf ("[Version],$::ScmBuildVersion");
800
    print_mf ("#");
822
        print_mf ("#");
-
 
823
    }
801
 
824
 
802
    #
825
    #
803
    #   Process each tier in the order presented in the source file
826
    #   Process each tier in the order presented in the source file
804
    #
827
    #
805
    my $last_was_comment = 0;
828
    my $last_was_comment = 0;
806
    foreach my $entry ( @Manifests )
829
    foreach my $entry ( @Manifests )
807
    {
830
    {
808
    #print_mf ("#");
-
 
809
 
831
 
810
#DebugDumpData ( "Manifest Entry", $entry );
832
#DebugDumpData ( "Manifest Entry", $entry );
811
 
833
 
812
        my $tier = $entry->{tier};
834
        my $tier = $entry->{tier};
813
        my $name = $entry->{name};
835
        my $name = $entry->{name};
Line 840... Line 862...
840
            print_mf ('#') if ( $last_was_comment );
862
            print_mf ('#') if ( $last_was_comment );
841
            if ( my $file = $fentry->{'file'} )
863
            if ( my $file = $fentry->{'file'} )
842
            {
864
            {
843
                my $base_file = StripDir( $file );
865
                my $base_file = StripDir( $file );
844
                my @items = ($name, $tier, $base_file);
866
                my @items = ($name, $tier, $base_file);
845
 
-
 
846
                if ($include_md5) {
867
                if ($include_md5) {
847
                    my $md5 = digest_file_hex($file, 'MD5');
868
                    my $md5 = digest_file_hex($file, 'MD5');
848
                    push @items, "MD5=$md5" ;
869
                    push @items, "MD5=$md5" ;
849
                }
870
                }
850
                if (exists $entry->{fileVersions} && exists $entry->{fileVersions}{$file} ) {
871
                if (exists $entry->{fileVersions} && exists $entry->{fileVersions}{$file} ) {
851
                    push @items, "VERSION=" . $entry->{fileVersions}{$file};
872
                    push @items, "VERSION=" . $entry->{fileVersions}{$file};
852
                }
873
                }
853
 
-
 
854
                print_mf (join (',', @items));
874
                print_mf (join (',', @items));
855
                PackageFile ('*', $file, '--Subdir=' . $pkgdir, '--Strip' );
875
                PackageFile ('*', $file, '--Subdir=' . $pkgdir, '--Strip' );
856
                $last_was_comment = 0;
876
                $last_was_comment = 0;
857
            }
877
            }
858
 
878
 
Line 867... Line 887...
867
                $last_was_comment = 0;
887
                $last_was_comment = 0;
868
                #
888
                #
869
                #   Insert the entire manifest
889
                #   Insert the entire manifest
870
                #   Items are:
890
                #   Items are:
871
                #        contents
891
                #        contents
872
                #        files
892
                #        items:
-
 
893
                #               file_name + arrays of file_info
-
 
894
                #           or  comment line to copy
873
                #        file_base
895
                #        file_base
874
                #        manifest
896
                #        manifest
875
                #
897
                #
876
#DebugDumpData ( "Embedded Manifest Entry", $emf );
898
#DebugDumpData ( "Embedded Manifest Entry", $emf );
-
 
899
                if ($emf->{'rewrite'}) {
877
                print_mf ( '## Included Manifest: ' .  $emf->{'manifest'}  );
900
                    foreach my $item ( @{$emf->{'items'}}) {
-
 
901
                        if (defined($item->{'file_name'}))
-
 
902
                        {
-
 
903
                            my @items = ($name, $tier, $item->{'file_name'});
-
 
904
                            my $md5_added = 0;
-
 
905
                            foreach my $info (@{$item->{'file_info'}}) {
-
 
906
                                push @items, $info;
-
 
907
                                $md5_added = 1 if ($info =~ m~^MD5=~i);
-
 
908
                            }
-
 
909
                            if ($include_md5 && $md5_added == 0) { # add md5 if requested and not already added from submanifest
-
 
910
                                my $md5 = digest_file_hex($emf->{'file_base'} . '/' . $item->{'file_name'}, 'MD5');
-
 
911
                                push @items, "MD5=$md5";
-
 
912
                            }
-
 
913
                            print_mf (join (',', @items));
-
 
914
                            PackageFile ('*', $emf->{'file_base'}. '/' . $item->{'file_name'}, '--Subdir=' . $pkgdir, '--Strip' );
-
 
915
                        }
-
 
916
                        elsif (defined($item->{'comment'})) {
-
 
917
                            print_mf($item->{'comment'});
-
 
918
                        }
-
 
919
                    }
-
 
920
                    print_mf('#');
-
 
921
                }
-
 
922
                else {
878
                print_mf ($_) foreach  ( @{$emf->{'contents'}} );
923
                    print_mf ($_) foreach  ( @{$emf->{'contents'}} );
-
 
924
                    foreach my $item ( @{$emf->{'items'}}) {
879
                PackageFile ('*', $emf->{'file_base'}. '/' . $_, '--Subdir=' . $pkgdir, '--Strip' )foreach  ( @{$emf->{'files'}});;
925
                        PackageFile ('*', $emf->{'file_base'}. '/' . $item->{'file_name'}, '--Subdir=' . $pkgdir, '--Strip' )
880
                print_mf ( '## End Included Manifest' );
926
                            if (defined($item->{'file_name'}));
-
 
927
                    }
-
 
928
                    print_mf('#');
-
 
929
                }
881
            }
930
            }
882
        }
931
        }
883
 
932
 
884
        #
933
        #
885
        #   Expand out the entire MUG directory
934
        #   Expand out the entire MUG directory
Line 907... Line 956...
907
    }
956
    }
908
 
957
 
909
    #
958
    #
910
    #   Complete the creation of the Manifest File
959
    #   Complete the creation of the Manifest File
911
    #
960
    #
912
    print_mf ("#");
-
 
913
    print_mf ("# End of File");
961
    print_mf ("# end of $::ScmBuildPackage");
914
    close MF;
962
    close MF;
915
    ErrorDoExit();
963
    ErrorDoExit();
916
 
964
 
917
    #
965
    #
918
    #   Sanity test of packages that did not provide a debian file
966
    #   Sanity test of packages that did not provide a debian file