Subversion Repositories DevTools

Rev

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

Rev 2478 Rev 2764
Line 28... Line 28...
28
#   Globals
28
#   Globals
29
#
29
#
30
my $RM_DB;
30
my $RM_DB;
31
my $VERSION = "1.0.0";                      # Update this
31
my $VERSION = "1.0.0";                      # Update this
32
my %packageVcs;
32
my %packageVcs;
33
 
33
my %pkgInfo;
34
#
34
#
35
#   Options
35
#   Options
36
#
36
#
37
my $opt_verbose = 0;
37
my $opt_verbose = 0;
38
my $opt_help = 0;
38
my $opt_help = 0;
Line 112... Line 112...
112
    Message ("Check Complete OK");
112
    Message ("Check Complete OK");
113
    exit 0;
113
    exit 0;
114
}
114
}
115
 
115
 
116
 
116
 
117
foreach my $packageName ( $opt_package, @ARGV )
117
foreach my $fileName ( $opt_package, @ARGV )
118
{
118
{
119
    next unless ( defined $packageName );
119
    next unless ( defined $fileName );
-
 
120
    next if ( $fileName eq 'Dataman' );
-
 
121
 
120
    $packageName =~ s~\.data$~~;
122
    $fileName =~ s~\.data$~~;
121
    $packageName =~ s~\.svg$~~;
123
    $fileName =~ s~\.svg$~~;
-
 
124
    $fileName =~ s~\.importlog$~~;
-
 
125
    readPackageDataFile($fileName);
-
 
126
 
-
 
127
    foreach my $packageName( sort keys %pkgInfo )
-
 
128
    {
122
    getVcsData($packageName) if ( $opt_report <= 1 );
129
        getVcsData($packageName) if ( $opt_report <= 1 || $opt_report == 6 );
123
    readPackageData($packageName);
130
        processPackage($packageName);
-
 
131
    }
124
}
132
}
125
exit 0;
133
exit 0;
126
 
134
 
127
#-------------------------------------------------------------------------------
135
#-------------------------------------------------------------------------------
128
# Function        : getVcsData
136
# Function        : getVcsData
Line 137... Line 145...
137
{
145
{
138
    my ($packageName) = @_;
146
    my ($packageName) = @_;
139
    %packageVcs = ();
147
    %packageVcs = ();
140
    my $pkg_id = GetPkgIdByName ( $packageName );
148
    my $pkg_id = GetPkgIdByName ( $packageName );
141
    GetData_by_pkg_id ( $pkg_id, $packageName  );
149
    GetData_by_pkg_id ( $pkg_id, $packageName  );
142
#    DebugDumpData("packageVcs", \%packageVcs );
150
    #DebugDumpData("packageVcs", \%packageVcs );
143
}
151
}
144
 
152
 
145
#-------------------------------------------------------------------------------
153
#-------------------------------------------------------------------------------
146
# Function        : readPackageData
154
# Function        : readPackageDataFile
147
#
155
#
148
# Description     : Read in package data
156
# Description     : Read in the data file. It may contain data for more
-
 
157
#                   than one package - but this is rare
149
#
158
#
-
 
159
# Inputs          : 
-
 
160
#
150
# Inputs          : Name of the package
161
# Returns         : Fills in %pkgInfo
151
#
162
#
152
# Returns         : 
-
 
153
#
163
#
154
our %ScmVersions;
164
our %ScmVersions;
155
sub readPackageData
165
sub readPackageDataFile
156
{
166
{
-
 
167
    %pkgInfo = ();
157
    my ($pname) = @_;
168
    my ($pname) = @_;
158
    my $fname = $pname . '.data';
169
    my $fname = $pname . '.data';
159
    my @updateList;
-
 
160
    Verbose2 ('Reading Package Data: ' . $fname);
170
    Verbose2 ('Reading Package Data: ' . $fname);
161
return unless ( -f $fname );
171
return unless ( -f $fname );
162
    Error "Cannot locate $fname" unless ( -f $fname );
172
    Error "Cannot locate $fname" unless ( -f $fname );
163
    %ScmVersions = ();
173
    %ScmVersions = ();
164
    require $fname;
174
    require $fname;
165
 
175
 
166
    Error "Data in $fname is not valid\n"
176
    Error "Data in $fname is not valid\n"
167
        unless ( keys(%ScmVersions) >= 0 );
177
        unless ( keys(%ScmVersions) >= 0 );
168
 
178
 
-
 
179
    foreach (keys %ScmVersions)
-
 
180
    {
-
 
181
        my $entry = $ScmVersions{$_};
-
 
182
        $pkgInfo{$entry->{name}}{$_} = $entry;
-
 
183
    }
-
 
184
 
-
 
185
    %ScmVersions = ();
-
 
186
}
169
 
187
 
-
 
188
#-------------------------------------------------------------------------------
-
 
189
# Function        : processPackage
-
 
190
#
-
 
191
# Description     : Process data for one package
-
 
192
#
-
 
193
# Inputs          : Name of the package
-
 
194
#
-
 
195
# Returns         : 
-
 
196
#
-
 
197
sub processPackage
-
 
198
{
-
 
199
    my ($pname) = @_;
-
 
200
    Error ("Internal: Hash data not found")
-
 
201
        unless ( exists $pkgInfo{$pname});
-
 
202
    my $pkgData = $pkgInfo{$pname};
-
 
203
 
-
 
204
    my @updateList;
170
    my $essentialCount = 0;
205
    my $essentialCount = 0;
171
    my $errorCount = 0;
206
    my $errorCount = 0;
172
    my $ecount = 0;
207
    my $ecount = 0;
173
    my $notOk = 0;
208
    my $notOk = 0;
174
    my $transferred = 0;
209
    my $transferred = 0;
Line 176... Line 211...
176
    my $diffCount = 0;
211
    my $diffCount = 0;
177
    my $missingPVID = 0;
212
    my $missingPVID = 0;
178
    my $rippleProcessed = 0;
213
    my $rippleProcessed = 0;
179
    my $globalErrors = 0;
214
    my $globalErrors = 0;
180
    my $notProcessed = 0;
215
    my $notProcessed = 0;
181
    my $pkgBase = 0;
216
    my $prjBase = 0;
182
    my $pkgProject = 0;
217
    my $pkgProject = 0;
183
    my $badPaths = 0;
218
    my $badPaths = 0;
184
    my $adjustedPath = 0;
219
    my $adjustedPath = 0;
185
#    my $rtCount = 0;
220
#    my $rtCount = 0;
186
    my $rtErrorCount = 0;
221
    my $rtErrorCount = 0;
187
    
222
    
188
 
223
 
189
    foreach my $entry (sort {$a <=> $b}  keys(%ScmVersions) )
224
    foreach (sort {$a <=> $b}  keys(%{$pkgInfo{$pname}} ) )
190
    {
225
    {
-
 
226
        my $pkgEntry = $pkgInfo{$pname}{$_};
-
 
227
 
191
        $totalCount ++;
228
        $totalCount ++;
192
        $notProcessed++ unless $ScmVersions{$entry}{Scanned};
229
        $notProcessed++ unless $pkgEntry->{Scanned};
193
        $essentialCount++ if ( $ScmVersions{$entry}{Essential}  );
230
        $essentialCount++ if ( $pkgEntry->{Essential}  );
194
        $rippleProcessed++ if ( $ScmVersions{$entry}{rippleProcessed} );
231
        $rippleProcessed++ if ( $pkgEntry->{rippleProcessed} );
195
 
232
 
196
        $globalErrors++ if ( $ScmVersions{$entry}{data}{errFlags} eq 'e' );
233
        $globalErrors++ if ( ($pkgEntry->{data}{errFlags} || '') eq 'e' );
197
        $pkgBase++ if ( $ScmVersions{$entry}{data}{BadProjectBase} );
234
        $prjBase++ if ( $pkgEntry->{data}{BadProjectBase} );
198
        $pkgProject++ if ( $ScmVersions{$entry}{data}{BadMakeProject} );
235
        $pkgProject++ if ( $pkgEntry->{data}{BadMakeProject} );
199
        $badPaths++ if ( $ScmVersions{$entry}{data}{BadPath} );
236
        $badPaths++ if ( $pkgEntry->{data}{BadPath} );
200
        $adjustedPath++ if ( $ScmVersions{$entry}{data}{adjustedPath} );
237
        $adjustedPath++ if ( $pkgEntry->{data}{adjustedPath} );
201
        unless ( $ScmVersions{$entry}{TagCreated} )
238
        unless ( $pkgEntry->{TagCreated} )
202
        {
239
        {
203
            $errorCount++ if ( $ScmVersions{$entry}{Essential}  );
240
            $errorCount++ if ( $pkgEntry->{Essential}  );
204
            $ecount++;
241
            $ecount++;
205
            Verbose ("Package Not Processed: " . $ScmVersions{$entry}{vname} . ' - ' . ($ScmVersions{$entry}{data}{errStr} || 'Unspecified Error')  );
242
            Verbose ("Package Not Processed: " . $pkgEntry->{vname} . ' - ' . ($pkgEntry->{data}{errStr} || 'Unspecified Error')  );
206
 
243
 
207
            unless ( $ScmVersions{$entry}{DeadWood} ||  $ScmVersions{$entry}{locked} eq 'N' )
244
            unless ( $pkgEntry->{DeadWood} ||  $pkgEntry->{locked} eq 'N' )
208
            {
245
            {
209
                $notOk++;
246
                $notOk++;
210
#Warning ("Package Not OK: " . $ScmVersions{$entry}{vname} . ' - ' . ($ScmVersions{$entry}{data}{errStr} || 'Unspecified Error')  );
247
#Warning ("Package Not OK: " . $pkgEntry->{vname} . ' - ' . ($pkgEntry->{data}{errStr} || 'Unspecified Error')  );
211
            }
248
            }
212
 
249
 
213
        }
250
        }
214
 
251
 
215
#        $rtCount += $ScmVersions{$entry}{data}{ReleaseTag}{tCount} || 0;
252
#        $rtCount += $pkgEntry->{data}{ReleaseTag}{tCount} || 0;
216
#        $rtErrorCount += $ScmVersions{$entry}{data}{ReleaseTag}{eCount} || 0;
253
#        $rtErrorCount += $pkgEntry->{data}{ReleaseTag}{eCount} || 0;
217
    }
254
    }
218
 
255
 
219
    foreach my $entry (sort {$a <=> $b}  keys(%ScmVersions) )
256
    foreach my $pvid (sort {$a <=> $b}  keys(%{$pkgInfo{$pname}} ) )
220
    {
257
    {
-
 
258
        my $pkgEntry = $pkgInfo{$pname}{$pvid};
221
        if ( $ScmVersions{$entry}{TagCreated} )
259
        if ( $pkgEntry->{TagCreated} )
222
        {
260
        {
223
            $transferred++;
261
            $transferred++;
224
            my $done = '';
262
            my $done = '';
225
            my $rmRef = $ScmVersions{$entry}{rmRef} ;
263
            my $rmRef = $pkgEntry->{rmRef} ;
226
 
264
 
227
            my $include = 1;
265
            my $include = 1;
228
            if ( exists $packageVcs{$entry} )
266
            if ( exists $packageVcs{$pvid} )
229
            {
267
            {
-
 
268
                if ( $opt_report == 6 )
-
 
269
                {
-
 
270
                    $include = 0 if ( $packageVcs{$pvid} =~ m~^SVN::~ );
-
 
271
                }
-
 
272
                else
-
 
273
                {
230
                $include = 0 if ( ($packageVcs{$entry} eq $rmRef) );
274
                    $include = 0 if ( ($packageVcs{$pvid} eq $rmRef) );
-
 
275
                }
231
            }
276
            }
232
            else
277
            else
233
            {
278
            {
234
                $missingPVID++;
279
                $missingPVID++;
235
                $done = ' < Missing' unless $done;
280
                $done = ' < Missing' unless $done;
Line 238... Line 283...
238
 
283
 
239
            if ( $include || $opt_force)
284
            if ( $include || $opt_force)
240
            {
285
            {
241
                    $diffCount++;
286
                    $diffCount++;
242
                    $done = ' *' unless $done;
287
                    $done = ' *' unless $done;
243
                    push @updateList, $entry;
288
                    push @updateList, $pvid;
244
            }
289
            }
245
 
290
 
246
            Verbose ("Processed: " . $ScmVersions{$entry}{vname} . ' :: ' . ($rmRef || '???') . $done );
291
            Verbose ("Processed: " . $pkgEntry->{vname} . ' :: ' . ($rmRef || '???') . $done );
247
            
292
            
248
        }
293
        }
249
    }
294
    }
250
 
295
 
-
 
296
    if ( $opt_report == 6 )
-
 
297
    {
-
 
298
        # Display missing updates
-
 
299
        foreach my $entry ( @updateList )
-
 
300
        {
-
 
301
            print "$pname : $pkgData->{$entry}{vname}\n";
-
 
302
        }
-
 
303
        return;
-
 
304
    }
-
 
305
 
251
    if ( $opt_report == 5 )
306
    if ( $opt_report == 5 )
252
    {
307
    {
253
        #
308
        #
254
        #   Packages that use MakeProject
309
        #   Packages that use MakeProject
255
        #
310
        #
Line 262... Line 317...
262
    {
317
    {
263
        #
318
        #
264
        #   Just the packages that have no problems
319
        #   Just the packages that have no problems
265
        #   Short form
320
        #   Short form
266
        #
321
        #
267
#Debug0("$pname", $notOk ,$globalErrors ,$pkgBase ,$pkgProject ,$errorCount ,$notProcessed ,$rtErrorCount);
322
#Debug0("$pname", $notOk ,$globalErrors ,$prjBase ,$pkgProject ,$errorCount ,$notProcessed ,$rtErrorCount);
268
        return if ( $notOk ||$globalErrors || $pkgBase || $pkgProject ||  $errorCount || $notProcessed || $rtErrorCount || $badPaths);
323
        return if ( $notOk ||$globalErrors || $prjBase || $pkgProject ||  $errorCount || $notProcessed || $rtErrorCount || $badPaths);
269
        print ("$pname\n");
324
        print ("$pname\n");
270
        return;
325
        return;
271
    }
326
    }
272
 
327
 
273
    if ( $opt_report == 4 )
328
    if ( $opt_report == 4 )
Line 282... Line 337...
282
    }
337
    }
283
    
338
    
284
    
339
    
285
    if ( $opt_report )
340
    if ( $opt_report )
286
    {
341
    {
287
        return unless ($globalErrors || $pkgBase || $pkgProject ||  $errorCount || $notProcessed || $rtErrorCount || $badPaths);
342
        return unless ($globalErrors || $prjBase || $pkgProject ||  $errorCount || $notProcessed || $rtErrorCount || $badPaths);
288
    }
343
    }
289
 
344
 
290
    sub highlight
345
    sub highlight
291
    {
346
    {
292
        my ($value) = @_;
347
        my ($value) = @_;
Line 304... Line 359...
304
            ,"${tpref}Essential Packages        : $essentialCount"
359
            ,"${tpref}Essential Packages        : $essentialCount"
305
            ,"${tpref}Essential Packages Errors : $errorCount" . highlight($errorCount)
360
            ,"${tpref}Essential Packages Errors : $errorCount" . highlight($errorCount)
306
            ,"${tpref}Global Import Errors      : $globalErrors" . highlight($globalErrors)
361
            ,"${tpref}Global Import Errors      : $globalErrors" . highlight($globalErrors)
307
 
362
 
308
            ,"${tpref}Bad Source Paths          : $badPaths" . highlight($badPaths)
363
            ,"${tpref}Bad Source Paths          : $badPaths" . highlight($badPaths)
309
            ,"${tpref}PackageBase Error         : $pkgBase" . highlight($pkgBase)
364
            ,"${tpref}ProjectBase Error         : $prjBase" . highlight($prjBase)
310
            ,"${tpref}MakeProject Error         : $pkgProject" . highlight($pkgProject)
365
            ,"${tpref}MakeProject Error         : $pkgProject" . highlight($pkgProject)
311
            ,"${tpref}Adjusted Paths            : $adjustedPath" . highlight($adjustedPath && ($transferred - $adjustedPath))
366
            ,"${tpref}Adjusted Paths            : $adjustedPath" . highlight($adjustedPath && ($transferred - $adjustedPath))
312
            ,"${tpref}Not Transferred Packages  : $ecount"
367
            ,"${tpref}Not Transferred Packages  : $ecount"
313
            ,"${tpref}Transferred Packages      : $transferred" . highlight(!$transferred)
368
            ,"${tpref}Transferred Packages      : $transferred" . highlight(!$transferred)
314
#            ,"${tpref}Release Tags applied      : $rtCount"
369
#            ,"${tpref}Release Tags applied      : $rtCount"
Line 340... Line 395...
340
    #   Now do the RM Update
395
    #   Now do the RM Update
341
    #
396
    #
342
    Message('Updating Release Manager: ' . $opt_rm);
397
    Message('Updating Release Manager: ' . $opt_rm);
343
    foreach my $entry ( @updateList )
398
    foreach my $entry ( @updateList )
344
    {
399
    {
345
        intoReleaseManager ( $entry, $ScmVersions{$entry}{rmRef} );
400
        intoReleaseManager ( $entry, $pkgData->{$entry}{vname}  ,$pkgData->{$entry}{rmRef} );
346
    }
401
    }
347
}
402
}
348
 
403
 
349
#-------------------------------------------------------------------------------
404
#-------------------------------------------------------------------------------
350
# Function        : intoReleaseManager
405
# Function        : intoReleaseManager
351
#
406
#
352
# Description     : Update VCS tags in RM
407
# Description     : Update VCS tags in RM
353
#
408
#
354
# Inputs          : $pvid           - PVId
409
# Inputs          : $pvid           - PVId
-
 
410
#                   $name           - Package Version (text)
355
#                   $tag            - New Tag
411
#                   $tag            - New Tag
356
#
412
#
357
# Returns         : 
413
# Returns         : 
358
#
414
#
359
sub intoReleaseManager
415
sub intoReleaseManager
360
{
416
{
361
    my ($pvid, $new_tag ) = @_;
417
    my ($pvid, $name, $new_tag ) = @_;
362
    my @row;
418
    my @row;
363
    my $user = 3768;            # buildadm
419
    my $user = 3768;            # buildadm
364
 
420
 
365
    connectRM(\$RM_DB, $opt_verbose) unless $RM_DB;
421
    connectRM(\$RM_DB, $opt_verbose) unless $RM_DB;
366
 
422
 
-
 
423
    Verbose ("ToRm: $pvid, $name  - $new_tag");
367
    my $m_sqlstr =  "begin release_manager.PK_RMAPI.update_vcs_details($pvid, '$new_tag', $user); end;";
424
    my $m_sqlstr =  "begin release_manager.PK_RMAPI.update_vcs_details($pvid, '$new_tag', $user); end;";
368
    my $sth = $RM_DB->prepare($m_sqlstr);
425
    my $sth = $RM_DB->prepare($m_sqlstr);
369
    if ( defined($sth) )
426
    if ( defined($sth) )
370
    {
427
    {
371
        if ( $sth->execute( ) )
428
        if ( $sth->execute( ) )
Line 532... Line 589...
532
    -package=name      - Specify single package to be processed
589
    -package=name      - Specify single package to be processed
533
    -database=name     - Default: RELMANU1 (test db) Live: RELEASEM
590
    -database=name     - Default: RELMANU1 (test db) Live: RELEASEM
534
    -[no]force         - Force update of all entries
591
    -[no]force         - Force update of all entries
535
    -check=string      - Check operation with string
592
    -check=string      - Check operation with string
536
    -report            - Report on errors
593
    -report            - Report on errors
-
 
594
    -report=1          - Report on errors
537
    -report=2          - Report on errors, don't access RM
595
    -report=2          - Report on errors, don't access RM
-
 
596
    -report=3          - Packages that have no problems
-
 
597
    -report=4          - Packages that have global errors
-
 
598
    -report=5          - Packages that use MakeProject
-
 
599
    -report=6          - Display missing updates
538
 
600
 
539
=head1 OPTIONS
601
=head1 OPTIONS
540
 
602
 
541
=over 8
603
=over 8
542
 
604