Subversion Repositories DevTools

Rev

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

Rev 6306 Rev 6314
Line 33... Line 33...
33
#
33
#
34
my @Manifests;                      # Manifest entries
34
my @Manifests;                      # Manifest entries
35
my $Manifest_has_version = 1;       # Create Manifest_xxxx by default
35
my $Manifest_has_version = 1;       # Create Manifest_xxxx by default
36
my %package_dirs;                   # Package dirs discovered and used
36
my %package_dirs;                   # Package dirs discovered and used
37
my $pkg_subdir;                     # Alternate packaging
37
my $pkg_subdir;                     # Alternate packaging
-
 
38
my $ManifestLineWidth;              # Max length of lines
38
 
39
 
39
#-------------------------------------------------------------------------------
40
#-------------------------------------------------------------------------------
40
# Function        : BEGIN
41
# Function        : BEGIN
41
#
42
#
42
# Description     : Setup directive hooks
43
# Description     : Setup directive hooks
Line 79... Line 80...
79
#                       --Dmf                   - Generate the Device Management Framework
80
#                       --Dmf                   - Generate the Device Management Framework
80
#                                                 combined archive ZIP file.
81
#                                                 combined archive ZIP file.
81
#                       --DmfVersion=xxxx       - Generate the Device Management Framework
82
#                       --DmfVersion=xxxx       - Generate the Device Management Framework
82
#                                                 combined archive ZIP using a modified
83
#                                                 combined archive ZIP using a modified
83
#                                                 version number; only for testing!
84
#                                                 version number; only for testing!
-
 
85
#                       --LineLength=nnn        - Limit line length. Default is 79                          
84
#
86
#
85
# Returns         : Nothing
87
# Returns         : Nothing
86
#
88
#
87
sub ManifestFiles
89
sub ManifestFiles
88
{
90
{
Line 99... Line 101...
99
    my $default_prod = '';
101
    my $default_prod = '';
100
    my $imported_manifest = 0;
102
    my $imported_manifest = 0;
101
    my $include_md5 = 0;
103
    my $include_md5 = 0;
102
    my $generate_dmf = 0;
104
    my $generate_dmf = 0;
103
    my $dmf_version = $::ScmBuildVersionFull;
105
    my $dmf_version = $::ScmBuildVersionFull;
-
 
106
    my $useDefaultLineWidth = 1;
104
 
107
 
105
    #
108
    #
106
    #   Collect user options
109
    #   Collect user options
107
    #
110
    #
108
    foreach ( @elements )
111
    foreach ( @elements )
Line 133... Line 136...
133
        } elsif ( m~^--Apk=(.+)~ ) {
136
        } elsif ( m~^--Apk=(.+)~ ) {
134
            my $apkData = _LocateApkFile($1, $default_arch);
137
            my $apkData = _LocateApkFile($1, $default_arch);
135
            my ($fname, $fversion) = split($;, $apkData);
138
            my ($fname, $fversion) = split($;, $apkData);
136
            $fileVersions{$fname} = $fversion;
139
            $fileVersions{$fname} = $fversion;
137
            push @files, {'file' => $fname };
140
            push @files, {'file' => $fname };
-
 
141
            $useDefaultLineWidth = 0;
138
 
142
 
139
        } elsif ( m~^--SrcFile=(.+)~ ) {
143
        } elsif ( m~^--SrcFile=(.+)~ ) {
140
            push @files, {'file' => LocatePreReq($1)};
144
            push @files, {'file' => LocatePreReq($1)};
141
 
145
 
142
        } elsif ( m~^--SrcFileNoCopy=(.+)~ ) {
146
        } elsif ( m~^--SrcFileNoCopy=(.+)~ ) {
Line 176... Line 180...
176
            $tier = $import_info->{'tier'} unless ( defined $tier );
180
            $tier = $import_info->{'tier'} unless ( defined $tier );
177
            $name = $import_info->{'name'} unless ( defined $name );
181
            $name = $import_info->{'name'} unless ( defined $name );
178
            $imported_manifest = 1;
182
            $imported_manifest = 1;
179
 
183
 
180
        } elsif (m/^--Md5/i) {
184
        } elsif (m/^--Md5/i) {
181
            $include_md5 = 1
185
            $include_md5 = 1;
-
 
186
            $useDefaultLineWidth = 0;
182
 
187
 
183
        } elsif (m/^--Dmf/i) {
188
        } elsif (m/^--Dmf/i) {
184
            $generate_dmf = 1
189
            $generate_dmf = 1
185
 
190
 
186
        } elsif ( m/^--DmfVersion=(.+)/ ) {
191
        } elsif ( m/^--DmfVersion=(.+)/ ) {
187
            $generate_dmf = 1;
192
            $generate_dmf = 1;
188
            $dmf_version = $1;
193
            $dmf_version = $1;
189
 
194
 
-
 
195
        } elsif ( m/^--LineLength=(\d+)$/i ) {
-
 
196
            $ManifestLineWidth = $1;
-
 
197
            $useDefaultLineWidth = 0;
-
 
198
 
190
        } else {
199
        } else {
191
            ReportError ("ManifestFiles: Unknown option or argument: $_");
200
            ReportError ("ManifestFiles: Unknown option or argument: $_");
192
 
201
 
193
        }
202
        }
194
    }
203
    }
Line 205... Line 214...
205
    ReportError ("ManifestFiles: Must specify files to add to Manifest")
214
    ReportError ("ManifestFiles: Must specify files to add to Manifest")
206
        unless ( $mug_dir ||  @files || $imported_manifest);
215
        unless ( $mug_dir ||  @files || $imported_manifest);
207
    ErrorDoExit();
216
    ErrorDoExit();
208
 
217
 
209
    #
218
    #
-
 
219
    #   Set ManifestLineWidth
-
 
220
    #   The default is largely historical - for MOS
-
 
221
    #   
-
 
222
    unless (defined $ManifestLineWidth) {
-
 
223
        $ManifestLineWidth = $useDefaultLineWidth ? 79 : 0;
-
 
224
    }
-
 
225
    Verbose("ManifestLineWidth:$ManifestLineWidth");
-
 
226
 
-
 
227
    #
210
    #   Save information for processing at the end of the parsing phase
228
    #   Save information for processing at the end of the parsing phase
211
    #   Data collected from ALL the ManifestFiles directives will be collected
229
    #   Data collected from ALL the ManifestFiles directives will be collected
212
    #   and processed into one Manifest file
230
    #   and processed into one Manifest file
213
    #
231
    #
214
    my %data;
232
    my %data;
Line 821... Line 839...
821
 
839
 
822
            print_mf ('#') if ( $last_was_comment );
840
            print_mf ('#') if ( $last_was_comment );
823
            if ( my $file = $fentry->{'file'} )
841
            if ( my $file = $fentry->{'file'} )
824
            {
842
            {
825
                my $base_file = StripDir( $file );
843
                my $base_file = StripDir( $file );
826
                my @extraItems;
844
                my @items = ($name, $tier, $base_file);
-
 
845
 
827
                if ($include_md5) {
846
                if ($include_md5) {
828
                    my $md5 = digest_file_hex($file, 'MD5');
847
                    my $md5 = digest_file_hex($file, 'MD5');
829
                    push @extraItems, "MD5=$md5" ;
848
                    push @items, "MD5=$md5" ;
830
                }
849
                }
831
 
-
 
832
                if (exists $entry->{fileVersions} && exists $entry->{fileVersions}{$file} ) {
850
                if (exists $entry->{fileVersions} && exists $entry->{fileVersions}{$file} ) {
833
                    push @extraItems, "VERSION=" . $entry->{fileVersions}{$file};
851
                    push @items, "VERSION=" . $entry->{fileVersions}{$file};
834
                }
-
 
835
                if (@extraItems) {
-
 
836
                    print_mf ('--NoCheckLineWidth', "$name,$tier,$base_file," . join (',', @extraItems));
-
 
837
                } else {
-
 
838
                    print_mf ("$name,$tier,$base_file");
-
 
839
                }
852
                }
-
 
853
 
-
 
854
                print_mf (join (',', @items));
840
                PackageFile ('*', $file, '--Subdir=' . $pkgdir, '--Strip' );
855
                PackageFile ('*', $file, '--Subdir=' . $pkgdir, '--Strip' );
841
                $last_was_comment = 0;
856
                $last_was_comment = 0;
842
            }
857
            }
843
 
858
 
844
            if ( my $file = $fentry->{'filenocopy'} )
859
            if ( my $file = $fentry->{'filenocopy'} )
Line 876... Line 891...
876
        {
891
        {
877
            foreach my $file ( glob ($mugdir . '/*.mug' ) )
892
            foreach my $file ( glob ($mugdir . '/*.mug' ) )
878
            {
893
            {
879
                next unless ( -f $file );
894
                next unless ( -f $file );
880
                my $base_file = StripDir($file);
895
                my $base_file = StripDir($file);
-
 
896
 
-
 
897
                my @items = ($name, $tier, $base_file);
-
 
898
 
881
                if ($include_md5) {
899
                if ($include_md5) {
882
                    my $md5 = digest_file_hex($file, 'MD5');
900
                    my $md5 = digest_file_hex($file, 'MD5');
883
                    print_mf ('--NoCheckLineWidth', "$name,$tier,$base_file,MD5=$md5");
-
 
884
                } else {
-
 
885
                    print_mf ("$name,$tier,$base_file");
901
                    push @items, "MD5=$md5" ;
886
                }
902
                }
-
 
903
                print_mf (join (',', @items));
887
                PackageFile ('*', $file, '--Subdir=mug', '--Strip' );
904
                PackageFile ('*', $file, '--Subdir=mug', '--Strip' );
888
            }
905
            }
889
        }
906
        }
890
    }
907
    }
891
 
908
 
Line 930... Line 947...
930
    # Returns         :
947
    # Returns         :
931
    #
948
    #
932
 
949
 
933
    sub print_mf
950
    sub print_mf
934
    {
951
    {
935
        my $check_line_width = 1;
-
 
936
 
-
 
937
        if ($_[0] eq '--NoCheckLineWidth')
-
 
938
        {
-
 
939
            shift @_;
-
 
940
            $check_line_width = 0;
-
 
941
        }
-
 
942
 
-
 
943
        foreach  ( @_ )
952
        foreach  ( @_ )
944
        {
953
        {
-
 
954
            my $ll = length ($_);
945
            ReportError ( "Manifest line too long",
955
            ReportError ( "Manifest line too long: $ll. Max is $ManifestLineWidth.",
946
                    "Line: $_" ) if ( $check_line_width && length ($_) > 79);
956
                    "Line: $_" ) if ( $ManifestLineWidth && $ll > $ManifestLineWidth);
947
            print MF $_ . "\n";
957
            print MF $_ . "\n";
948
        }
958
        }
949
    }
959
    }
950
}
960
}
951
 
961