Subversion Repositories DevTools

Rev

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

Rev 4698 Rev 4706
Line 56... Line 56...
56
 
56
 
57
#
57
#
58
#   Package information
58
#   Package information
59
#
59
#
60
my @Packages;
60
my @Packages;
61
my @packageItems = qw( PV_ID RTAG_ID NAME VERSION PKG_ID PROJ_ID RNINFO);
61
my @packageItems = qw( PV_ID RTAG_ID NAME VERSION PKG_ID PROJ_ID RNINFO BUILD_TYPE BS_ID);
62
my %rmConfig;
62
my %rmConfig;
63
 
63
 
64
#-------------------------------------------------------------------------------
64
#-------------------------------------------------------------------------------
65
# Function        : Main Entry
65
# Function        : Main Entry
66
#
66
#
Line 156... Line 156...
156
#-------------------------------------------------------------------------------
156
#-------------------------------------------------------------------------------
157
# Function        : LocatePackages 
157
# Function        : LocatePackages 
158
#
158
#
159
# Description     : Locate packages in need of Release Notes
159
# Description     : Locate packages in need of Release Notes
160
#
160
#
161
#                   Note: Exclude manually built packages that do not have a build standard
-
 
162
#                         ie:  unit_test_br_st_saftp 1.0.1000.sea
-
 
163
#
-
 
164
# Inputs          : None
161
# Inputs          : None
165
#
162
#
166
# Returns         : Nothing
163
# Returns         : Nothing
167
#                   Populates the @Packages array
164
#                   Populates the @Packages array
168
#
165
#
169
sub LocatePackages
166
sub LocatePackages
170
{
167
{
171
 
-
 
172
    my $m_sqlstr =
168
    my $m_sqlstr =
173
            "SELECT * from
169
            "SELECT * from
174
            (
170
            (
175
                SELECT pv.pv_id, 
171
                SELECT pv.pv_id, 
176
                       rc.rtag_id, 
172
                       rc.rtag_id, 
177
                       pkg.pkg_name, 
173
                       pkg.pkg_name, 
178
                       pv.pkg_version, 
174
                       pv.pkg_version, 
179
                       pv.pkg_id, 
175
                       pv.pkg_id, 
180
                       rt.proj_id , 
176
                       rt.proj_id , 
181
                       pv.release_notes_info,
177
                       pv.release_notes_info,
-
 
178
                       pv.build_type,
-
 
179
                       pv.BS_ID,
182
                       TRUNC(sysdate - pv.modified_stamp ) AS age , 
180
                       TRUNC(sysdate - pv.modified_stamp ) AS age , 
183
                       row_number() OVER (PARTITION BY pv.pv_id, pkg.pkg_name, pv.pkg_version ORDER BY rc.rtag_id) rn
181
                       row_number() OVER (PARTITION BY pv.pv_id, pkg.pkg_name, pv.pkg_version ORDER BY rc.rtag_id) rn
184
                FROM release_manager.package_versions pv, 
182
                FROM release_manager.package_versions pv, 
185
                     release_manager.release_content rc, 
183
                     release_manager.release_content rc, 
186
                     release_manager.packages pkg, 
184
                     release_manager.packages pkg, 
Line 189... Line 187...
189
                AND pkg.pkg_id = pv.pkg_id
187
                AND pkg.pkg_id = pv.pkg_id
190
                AND rc.rtag_id = rt.rtag_id
188
                AND rc.rtag_id = rt.rtag_id
191
                AND pv.pv_id IN (SELECT pv_id 
189
                AND pv.pv_id IN (SELECT pv_id 
192
                                 FROM release_manager.package_versions 
190
                                 FROM release_manager.package_versions 
193
                                 WHERE (release_notes_info IS null 
191
                                 WHERE (release_notes_info IS null 
194
                                     OR release_notes_info like 'MSG:%' )
192
                                     OR (release_notes_info like 'MSG:%' AND release_notes_info != 'MSG:5' ))
195
                                 AND pv.dlocked = 'Y'
193
                                 AND pv.dlocked = 'Y'
196
                                 AND pv.build_type != 'M'
-
 
197
                                 AND pv.BS_ID != 3
-
 
198
                                 AND pv.modified_stamp > (sysdate - $opt_age)
194
                                 AND pv.modified_stamp > (sysdate - $opt_age)
199
                                 )
195
                                 )
200
            )
196
            )
201
            where rn = 1";
197
            where rn = 1";
202
 
198
 
Line 222... Line 218...
222
                       rc.rtag_id, 
218
                       rc.rtag_id, 
223
                       pkg.pkg_name, 
219
                       pkg.pkg_name, 
224
                       pv.pkg_version, 
220
                       pv.pkg_version, 
225
                       pv.pkg_id, 
221
                       pv.pkg_id, 
226
                       rt.proj_id, 
222
                       rt.proj_id, 
227
                       pv.release_notes_info
223
                       pv.release_notes_info,
-
 
224
                       pv.build_type,
-
 
225
                       pv.BS_ID
228
                FROM release_manager.package_versions pv, 
226
                FROM release_manager.package_versions pv, 
229
                     release_manager.release_content rc, 
227
                     release_manager.release_content rc, 
230
                     release_manager.packages pkg, 
228
                     release_manager.packages pkg, 
231
                     release_manager.release_tags rt
229
                     release_manager.release_tags rt
232
                WHERE pv.pv_id = rc.pv_id
230
                WHERE pv.pv_id = rc.pv_id
Line 260... Line 258...
260
    #DebugDumpData("Entry", $entry);
258
    #DebugDumpData("Entry", $entry);
261
    Message("-------------------- $entry->{NAME}, $entry->{VERSION}") if $opt_status || $opt_verbose;
259
    Message("-------------------- $entry->{NAME}, $entry->{VERSION}") if $opt_status || $opt_verbose;
262
 
260
 
263
    my $pkgBase = catdir($GBE_DPKG, $entry->{NAME}, $entry->{VERSION});
261
    my $pkgBase = catdir($GBE_DPKG, $entry->{NAME}, $entry->{VERSION});
264
    Verbose("Processing: $pkgBase");
262
    Verbose("Processing: $pkgBase");
265
    unless (-d $pkgBase) {
-
 
266
        Warning("Package not in archive: $pkgBase");
-
 
267
        return;
-
 
268
    }
-
 
269
 
263
 
270
    #
264
    #
271
    #   Make the target Package Version Writable and Ensure that the doc directory
265
    #   Handle special class of packages
-
 
266
    #       Manually Built
-
 
267
    #       No Build Standard
-
 
268
    #       Not in dpkg_archive
-
 
269
    #   Example: unit_test_br_kcm_ct_saftp
272
    #   exists. This is done via a script that is invoked with SUDO, partially to
270
    #   This type of package appears to be a place holder
273
    #   interwork with the existing system  
271
    #   Still needs some level of processing
274
    #
272
    #
275
    runSudoCommand('make_writable', 'dpkg_archive', $entry->{NAME},$entry->{VERSION});
-
 
276
    runSudoCommand('make_docFolder', 'dpkg_archive', $entry->{NAME},$entry->{VERSION}, 'doc');
-
 
277
 
-
 
278
    #
-
 
279
    #   Get the basic data required for the Release Note
-
 
280
    #   jats jats_get_releasenote_data.pl -pvid=1002782
-
 
281
    #
-
 
282
    $outfile = catdir($tempdir, join('_',$entry->{NAME},$entry->{VERSION})) . '.xml';
-
 
283
    $rv = localTool('jats_get_releasenote_data', '-verbose', $opt_verbose, '-pvid', $entry->{PV_ID}, '-outfile', $outfile );
-
 
284
 
-
 
285
    #
-
 
286
    #   Generate the actual release note and update the Release Manager
273
    if ($entry->{BUILD_TYPE}  eq 'M' && $entry->{BS_ID} == 3 && ! -d $pkgBase)
287
    #   jats jats_gen_releasenote.pl -releasenote=mcrdemo_1.2.3157.cr.xml -UpdateRmFiles
-
 
288
    unless ($rv)
-
 
289
    {
274
    {
290
        $rv = localTool('jats_gen_releasenote.pl', '-verbose', $opt_verbose, '-UpdateRmFiles', '-releasenote', $outfile);
275
        Verbose ("Placeholder package detected");
-
 
276
        #DebugDumpData("Entry", $entry);
-
 
277
        updatePlaceHolderRmNoteInfo($entry);
-
 
278
        $rv = 0;
291
    }
279
    }
-
 
280
    else
-
 
281
    {
-
 
282
        #
-
 
283
        #
-
 
284
        unless (-d $pkgBase) {
-
 
285
            Warning("Package not in archive: $pkgBase");
-
 
286
            return;
-
 
287
        }
292
 
288
 
-
 
289
        #
-
 
290
        #   Make the target Package Version Writable and Ensure that the doc directory
-
 
291
        #   exists. This is done via a script that is invoked with SUDO, partially to
-
 
292
        #   interwork with the existing system  
293
    #
293
        #
-
 
294
        runSudoCommand('make_writable', 'dpkg_archive', $entry->{NAME},$entry->{VERSION});
-
 
295
        runSudoCommand('make_docFolder', 'dpkg_archive', $entry->{NAME},$entry->{VERSION}, 'doc');
-
 
296
 
-
 
297
        #
-
 
298
        #   Get the basic data required for the Release Note
-
 
299
        #   jats jats_get_releasenote_data.pl -pvid=1002782
-
 
300
        #
-
 
301
        $outfile = catdir($tempdir, join('_',$entry->{NAME},$entry->{VERSION})) . '.xml';
-
 
302
        $rv = localTool('jats_get_releasenote_data', '-verbose', $opt_verbose, '-pvid', $entry->{PV_ID}, '-outfile', $outfile );
-
 
303
 
-
 
304
        #
-
 
305
        #   Generate the actual release note and update the Release Manager
-
 
306
        #   jats jats_gen_releasenote.pl -releasenote=mcrdemo_1.2.3157.cr.xml -UpdateRmFiles
-
 
307
        unless ($rv)
-
 
308
        {
-
 
309
            $rv = localTool('jats_gen_releasenote.pl', '-verbose', $opt_verbose, '-UpdateRmFiles', '-releasenote', $outfile);
-
 
310
        }
-
 
311
 
-
 
312
        #
294
    #   Release note complete - or failed
313
        #   Release note complete - or failed
295
    #       Make the target PackageVersion ReadOnly
314
        #       Make the target PackageVersion ReadOnly
296
    #       Signal End of Package Processing - which will trigger blat
315
        #       Signal End of Package Processing - which will trigger blat
297
    #
316
        #
298
    #   Do this even if we have a Release Note Failure
317
        #   Do this even if we have a Release Note Failure
299
    #
318
        #
300
    runSudoCommand('make_readonly', 'dpkg_archive', $entry->{NAME},$entry->{VERSION});
319
        runSudoCommand('make_readonly', 'dpkg_archive', $entry->{NAME},$entry->{VERSION});
-
 
320
    }
301
 
321
 
302
    #    make_release_changed 
322
    #    make_release_changed 
303
    #       archive=archive-path 
323
    #       archive=archive-path 
304
    #       pkg_name="package-name" 
324
    #       pkg_name="package-name" 
305
    #       pkg_version="package-version" 
325
    #       pkg_version="package-version" 
Line 330... Line 350...
330
 
350
 
331
    Error ("Did not generate Release Note: $entry->{NAME}, $entry->{VERSION}") if ($rv);
351
    Error ("Did not generate Release Note: $entry->{NAME}, $entry->{VERSION}") if ($rv);
332
}
352
}
333
 
353
 
334
#-------------------------------------------------------------------------------
354
#-------------------------------------------------------------------------------
-
 
355
# Function        : updatePlaceHolderRmNoteInfo 
-
 
356
#
-
 
357
# Description     : Insert Release Note Info into the Release Manager Database
-
 
358
#                   This has the side effect that RM will see the Release Note
-
 
359
#                   as being fully generated.
-
 
360
#
-
 
361
#                   Used only by special PlaceHolder packages
-
 
362
#
-
 
363
# Inputs          : $entry          - Hash of useful infomation
-
 
364
#
-
 
365
# Returns         : 
-
 
366
#
-
 
367
sub updatePlaceHolderRmNoteInfo
-
 
368
{
-
 
369
    my ($entry) = @_;
-
 
370
 
-
 
371
    executeRmQuery (
-
 
372
        'updateRmNoteInfo', 
-
 
373
        'update release_manager.package_versions set release_notes_info=\'MSG:5\' where pv_id=' . $entry->{PV_ID}
-
 
374
        );
-
 
375
}
-
 
376
 
-
 
377
#-------------------------------------------------------------------------------
335
# Function        : localTool 
378
# Function        : localTool 
336
#
379
#
337
# Description     : Run a jats tool from the same directory as this script 
380
# Description     : Run a jats tool from the same directory as this script 
338
#
381
#
339
# Inputs          : $name           - Name of the script
382
# Inputs          : $name           - Name of the script
Line 374... Line 417...
374
 
417
 
375
    #
418
    #
376
    #   Determine interested users
419
    #   Determine interested users
377
    #
420
    #
378
    my $m_sqlstr = "SELECT U.user_email, prj.proj_name, rt.rtag_name, pkg.pkg_name, pv.pkg_version ,pv.pv_id, rt.rtag_id
421
    my $m_sqlstr = "SELECT U.user_email, prj.proj_name, rt.rtag_name, pkg.pkg_name, pv.pkg_version ,pv.pv_id, rt.rtag_id
379
        FROM PACKAGE_INTEREST PI, 
422
        FROM RELEASE_MANAGER.PACKAGE_INTEREST PI, 
380
             PACKAGES PKG, 
423
             RELEASE_MANAGER.PACKAGES PKG, 
381
             PACKAGE_VERSIONS PV, 
424
             RELEASE_MANAGER.PACKAGE_VERSIONS PV, 
382
             USERS U,
425
             RELEASE_MANAGER.USERS U,
383
             RELEASE_TAGS RT, 
426
             RELEASE_MANAGER.RELEASE_TAGS RT, 
384
             PROJECTS PRJ 
427
             RELEASE_MANAGER.PROJECTS PRJ 
385
        WHERE PKG.PKG_ID = PI.PKG_ID 
428
        WHERE PKG.PKG_ID = PI.PKG_ID 
386
          AND RT.RTAG_ID = $entry->{RTAG_ID}
429
          AND RT.RTAG_ID = $entry->{RTAG_ID}
387
          AND PV.PV_ID = $entry->{PV_ID}
430
          AND PV.PV_ID = $entry->{PV_ID}
388
          AND PV.PKG_ID = PKG.PKG_ID 
431
          AND PV.PKG_ID = PKG.PKG_ID 
389
          AND PRJ.PROJ_ID = RT.PROJ_ID 
432
          AND PRJ.PROJ_ID = RT.PROJ_ID 
Line 618... Line 661...
618
    }
661
    }
619
    return $pHash;
662
    return $pHash;
620
}
663
}
621
 
664
 
622
#-------------------------------------------------------------------------------
665
#-------------------------------------------------------------------------------
-
 
666
# Function        : executeRmQuery 
-
 
667
#
-
 
668
# Description     : Execute a simple RM query. One that does not expect any return data
-
 
669
#
-
 
670
# Inputs          : $fname           - OprName, for error reporting
-
 
671
#                   $m_sqlstr        - SQL String
-
 
672
#
-
 
673
# Returns         : Will exit on error
-
 
674
#
-
 
675
sub executeRmQuery
-
 
676
{
-
 
677
    my ($fname, $m_sqlstr) = @_;
-
 
678
 
-
 
679
    #
-
 
680
    #   Connect to the Database - once
-
 
681
    #
-
 
682
    connectRM(\$RM_DB, 0) unless $RM_DB;
-
 
683
 
-
 
684
    Verbose2('ExecuteQuery:', $fname);
-
 
685
    #
-
 
686
    #   Create the full SQL statement
-
 
687
    #
-
 
688
    my $sth = $RM_DB->prepare($m_sqlstr);
-
 
689
    if ( defined($sth) )
-
 
690
    {
-
 
691
        if ( $sth->execute() )
-
 
692
        {
-
 
693
            $sth->finish();
-
 
694
        }
-
 
695
        else
-
 
696
        {
-
 
697
            Error("$fname: Execute failure: $m_sqlstr", $sth->errstr() );
-
 
698
        }
-
 
699
    }
-
 
700
    else
-
 
701
    {
-
 
702
        Error("$fname: Prepare failure");
-
 
703
    }
-
 
704
}
-
 
705
 
-
 
706
#-------------------------------------------------------------------------------
623
#   Documentation
707
#   Documentation
624
#
708
#
625
 
709
 
626
=pod
710
=pod
627
 
711