PreviousZ | Contents\ | Index |
FIf you are the project leader for a stream, you must create new build <streams from time to time so you can build OpenVMS for your 8release. You may also have to create the stream you are Hproject-leading. This section tells you how to perform these operations.
EStreams are classified into build streams, and into Hrelease streams. Build streams are used for builds and Aestablish the files involved with each build, and are usually of Dinterest only to those engineers directly involved with source code >builds. Release streams are of general interest to all VDE or <VSC users, as they are the streams used for managing source code development.B
ETo create a build stream for the development stream that you project Flead, you must perform two operations: Create the build stream in the >VSC database and create a CMS class for that build stream. To <create the build stream in the VSC database, use the CREATE DSTREAM command. If you are the project leader for stream BIRCH, for Fexample, you could use the following command to create a build stream:
" VSCä CREATE STREAM BIRCH_BUILD -!_VSCä /PARENT=BIRCH /CMS_CLASS -_VSCä /REMARK="Build stream" |
FThe CREATE STREAM command does not create a CMS class for the stream, Abut the /CMS_CLASS qualifier specifies that a CMS class for each Cfacility should be maintained for the new stream as that stream is <modified with future VSC commands (such as INSERT or DELETE AGENERATION). How you create the CMS class initially is discussed shortly.
?Specification of a remark is required; if you omit the /REMARK /qualifier, VSC prompts you for a remark string.
BSpecification of a remark for the new stream is required. Digital Cstrongly recommends the remark indicate that the stream is a build stream. |
;For the OpenVMS VAX VDE library, the CREATE STREAM command Ctakes about 20 minutes. You should run this command after you have Gperformed all replacements that you want included in the build stream. GIt is best to run this command at less-busy times as it locks parts of ;the VSC database and can therefore prevent access by other users for various operations.
HTo create and populate a CMS class in each facility for the new stream, Fyou must run the SYSBLDCOM$:POPULATE_LIBRARIES.COM command procedure. =This procedure submits a separate batch job for each OpenVMS Efacility in order to populate the desired class as fast as possible. GThe whole operation is still time-consuming; it takes about four hours Ffor the OpenVMS VAX library. To run this command procedure, enter the following command at DCL level:
" 6$ @SYSBLDCOM$:POPULATE_LIBRARIES.COM BIRCH_BUILD BIRCH |
EIf you already have an existing CMS class you want to reuse, you can use the?SYSBLDCOM$:POP_REUSED_CLASS.COM command procedure instead. Its Einvocation is similar to that of POPULATE_LIBRARIES; the comments in the procedure give the details.D
=To create a development stream for a new OpenVMS release (in ?other words, a stream that most OpenVMS developers will use to Breserve and replace modules), you must make a number of decisions:
FTo create the stream, use the CREATE STREAM command, much the same as nexplained in Section 5.7.1 for build streams. To create a new Edevelopment stream MAPLE, for example, you might enter the following command:
" VSCä CREATE STREAM MAPLE -_VSCä /OWNER=SMITH -_VSCä /PARENT=BIRCH /MAIN -&_VSCä /CMS_CLASS /REPLACEMENT=QUEUE -#_VSCä /REMARK="New-feature stream" |
GThe use of the /OWNER qualifier specifies the owner of the new stream; Fthis person is typically the stream's project leader. If you use this ?qualifier, developers can later use the SHOW STREAM command to determine the stream's owner.
FThe /MAIN qualifier causes the new stream to become the last =stream on the main line of descent, and it causes VSC to use Cwhole-number CMS generation expressions for the stream. /MAIN also ;causes VSC to update all successor stream links to link to this new mainline stream.
AThe /PARENT qualifier is informational in some cases, but can be <critical during certain VSC operations such as CMS facility Euploads. It should always be specified, and it should always specify the correct parent stream.
FThe /[NO]MAIN and /PARENT qualifiers are central and necessary to the =CMS generation number selection process used within VSC, and DDigital recommands that these qualifiers be specified with care. In Hparticular, the /MAIN qualifier can and should be used only on Emainline streams, while /NOMAIN should be specified for non-mainline Estreams. Incorrect specification of /[NO]MAIN and/or /PARENT can and Fwill cause longer CMS generation numbers, and has been shown to cause Dboth confusion and consternation among developers accustomed to the Btypical (cardinal) progression of CMS generations that occurs for modules on the mainline. |
EJust as for build streams, the /CMS_CLASS qualifier specifies that a ?CMS class in each facility should be maintained for the stream.
FThe /REPLACEMENT qualifier specifies that the new stream requires all Dreplacements into the stream to be queued (as opposed to immediate) <replacements. Queued replacements go through the VSC review Cmechanism and give you control over when replacements are actually Cperformed. The /REMARK qualifier specifies a remark string for the :stream; if you omit this qualifier, VSC prompts you for a remark string.
BSpecification of a remark for the new stream is required. Digital Hstrongly recommends the remark indicate that the stream is a release or new-feature stream. |
rAs explained in Section 5.7.1, the CREATE STREAM command does not Dcreate and populate the CMS class for the stream. Instead, you must submit the$SYSBLDCOM$:POPULATE_LIBRARIES.COM orBSYSBLDCOM$:POP_REUSED_CLASS.COM command procedure at DCL level to Acreate and populate a CMS class for the stream in each facility. sSection 5.7.1 describes how you use these procedures. One of these Gprocedures should be run at the same time as you run the CREATE STREAM >command, and you must ensure that no VSC commands that update #the parent stream run at that time.
DWhen you create a new development stream, you often want to specify Hthat future replacements into some previously existing stream should be Fpropagated to the new stream. For example, if stream MAPLE is created Bfrom stream BIRCH, you may want all future changes to BIRCH to be Dpropagated to MAPLE so that MAPLE will contain all features and bug Dfixes that BIRCH contains. As a later stream, MAPLE will presumably Galso receive new features that are omitted from BIRCH. To specify this Hsort of stream successor relationship, you use the /SUCCESSOR qualifier 1to the MODIFY STREAM command. This is an example:
" )VSCä MODIFY STREAM BIRCH /SUCCESSOR=MAPLE |
FYou can specify multiple successors for a given stream if that is the Dbehavior you want. To do so, specify a parenthesized list of stream Hnames separated by commas with the /SUCCESSOR qualifier. Alternatively, Hspecify each successor stream with a separate MODIFY STREAM command. To Fcancel successor relationships, use the /NOSUCCESSOR qualifier to the 7MODIFY STREAM command. (The HELP text has the details.)
ATo confirm that you have established the successor relationships Dcorrectly, use the /SUCCESSOR qualifier to the SHOW STREAM command. $This example illustrates its output:
" 'VSCä SHOW STREAM/SUCCESSOR BIRCH, MAPLEStream BIRCH Successor chains: BIRCH -> MAPLE Stream MAPLE Successor chains: MAPLE (no successors) VSCä |
HWhen you create a new release stream, you should also determine whether <you want certain developers to review or be notified of all Ereplacements into the stream. In particular, you probably want to be Enotified of all such replacements yourself. To specify the reviewers Fand developers to notify, use the /REVIEWER and /NOTIFY qualifiers to qthe CREATE STREAM or MODIFY STREAM command. Section 5.6 describes these qualifiers.G
<The following code example shows how an OpenVMS development >stream is created and populated. The example is typical of an -OpenVMS mainline development stream.
GThe steps outlined below create a new mainline stream int the 8OpenVMS database, and a matching mainline stream in the @OpenVMS test database. It temporarily disables propogation from Fthe parent stream, as populating the stream can require some time. It Gthen populates the new mainline streams, disables propogation into the Gnew mainlines to prevent unintentional overwriting, and finally resets 6the proper propogation attribute on the parent stream.
7These operations should be performed only when the VSC Hdatabase is quiescent, as one typically wishes all modifications to the 5parent database to be propogated into the new stream.
" $ VDE Set Library VMS$ Create Stream - " /CMS_CLASS/NOINIT_CMS_CLASS - /noGENERATION - /DEFER - 4 /MAIN - ! warning: alters generation selection /Populate - /Frozen - 2 /Conference=YELLOW$NOTES:DRAGON-YELLOW.NOTE - /PARENT=CORAL - /NoSuccessor - /REPLACEMENT=QUEUE - ) /REMARK="Post-CORAL release stream"- DRAGON Modify Stream DRAGON - /Reviewer=(projectleader) - ( /NOTIFY=(projectleader,DRAGONbld) - DRAGON Modify Stream CORAL/NoSuccessor )Populate Stream DRAGON/From_Stream=CORAL Modify Stream DRAGON/NoPopulate %Modify Stream CORAL/Successor=DRAGON Exit $! $ VDE Set Library VMSTEST$ +Create Stream/CMS_CLASS/NOINIT_CMS_CLASS - /noGENERATION - /DEFER - 3 /MAIN - ! warning: alters generation selection /Populate - /Frozen - 3 /conference=YELLOW$NOTES:VMSTEST-YELLOW.NOTE - /PARENT=CORAL - /noSuccessor - /REPLACEMENT=QUEUE - ) /REMARK="Post-CORAL release stream"- DRAGON $! Modify Stream DRAGON - + /reviewer=(projectleader,testleader) - 1 /NOTIFY=(projectleader,testleader,DRAGONbld) Modify Stream CORAL/NoSuccessor )Populate Stream DRAGON/From_Stream=CORAL Modify Stream DRAGON/NoPopulate %Modify Stream CORAL/Successor=DRAGON Exit $ EXIT |
:The above example creates a mainline stream, which effectsa
3As a project leader, you can tailor how VSC or VDE Hresponds to certain situations using script files. Script files allow a >number of common operations to be customized to site-specific requirements.
sTable 5-5 contains a list of the available script types, and a Bbrief description of each. Script creation uses the CREATE SCRIPT ,command, and requires the CRESCRP privilege.
BUILD | |
N The build script sets up optional build-job definitions. This script is 6 executed at the start of each build-job process. | |
COMPILE | |
K The compile script contains the command(s) used to compile a module. L The compile script is called by a build job, and by a COMPILE command. | |
COPY | |
L copy command copies a module. The script is called as part of a build - job, and is called by the COPY command. | |
( DELETE_GENERATION | |
H The delete-generation script performs optional processing for the DELETE GENERATION command. | |
" DIFFERENCES | |
N The differences script is used to determine the differences between two G generations of a module. The script is called by the DIFFERENCES command. | |
FETCH | |
J The fetch script performs optional processing for the FETCH command. | |
( INSERT_GENERATION | |
H The insert-generation script performs optional processing for the INSERT GENERATION command. | |
LINK | |
N The link script links a module. This script is called by build jobs and by the LINK command. | |
! NEW_STREAM | |
L The new-stream script copies files for a particular facility from the H parent stream into a new stream. This script is called when a new stream is created. | |
NOKEEP | |
N The nokeep script performs optional processing for the REPLACE command. H Specifically, the nokeep script is called when the REPLACE/NOKEEP command is specified. | |
REPLACE | |
N The replace script performs optional processing for the REPLACE command.L If stream-specific reference directories are required, this script H can be used to update the reference directory on each replacement. | |
RESERVE | |
M The reserve script performs optional processing when a RESERVE command is entered.K Should notification of a reservation be required, a site-specific / reserve script can be coded to send mail. | |
# SET_FACILITY | |
G The set-facility script performs optional processing for the SET FACILITY command. | |
! SET_STREAM | |
L The set-stream script performs optional processing for the SET STREAM command. | |
STAGING | |
H The staging script copies a source file to a staging area for the 5 REPLACE command when the replacement is queued. | |
UNRESERVE | |
J The unreserve script performs optional processing for the UNRESERVE command. |
PreviousW | NextZ | Contents\ | Index |