MULTICS TECHNICAL BULLETIN MTB-712 To: MTB Distribution From: Richard A. Holmstedt/Gary Johnson/F. W. Martinson Date: May 15, 1985 Subject: Policy and Procedures for Software Integration. INTRODUCTION This bulletin defines policies and procedures associated with the installation and tracking of software modifications and the distribution of a Multics release. This document defines policies and procedures required to satisfy a B2 security rating as it pertains to Configuration Management. Refer to: MAB-052 Standards for Software Protection and STI. MAB-056 for a description of Procedures for Normal Installations. MAB-057 for a description of Procedures for Emergency Installation. MAB-063 for a description of Procedures for Creating and Distributing Critical Fixes. Requests for installation of software must conform to the standards documented in Procedures for Normal Installations (MAB056, Revision 2), Procedures for Emergency Installations (MAB057), or Policies and Procedures for Creating and Distributing Critical Fixes (MAB063). All software submissions must be sent to the System Integration Project Leader, or designate, who reviews the submission to insure conformity with applicable standards. When it has been determined that applicable standards have been satisfied, the submission is scheduled for installation and passed to the person responsible for installation of software into System_M libraries. _________________________________________________________________ Multics Project Internal working Documentation. Not to be reproduced or distributed outside of the Multics project. MULTICS TECHNICAL BULLETIN MTB-712 A normal request for system change is made via the Multics System Change Request (MSCR), accompanied with an approved Multics Change Request (MCR). Approval for installation by the Software Integration Project Leader, or designate, will include verification that all appropriate signatures of approval are present. The signature of the Security Coordinator must also be present if modifications involve the Trusted Computer Base (TCB). Installation of software into System_M libraries, completed under the standards associated with MAB057 and MAB063, do not require formal Multics Change Request (MCR) approval and are tracked in a lister database. Developers are required to submit an MCR for consideration within 30 days of software installation under the rules outlined in MAB057 or MAB063. An approved MCR will result in removal of the installation notice from the lister data base. Failure to obtain an approved MCR will result in removal of the associated software modification from the system libraries prior to release unless such software is retained by management directive. Software intended for distribution to customer sites must be submitted and installed in the system libraries, and be exposed to the user community on System_M. This system is physically located in Phoenix, Arizona. PREPARATION OF INSTALLATIONS Installations are prepared in a secure directory under the >special_ldd hierarchy. Access to directories in this hierarchy are limited as follows: sma *.SysDaemon.* sma *.SysMaint.* s *.Multics.* s *.SysAdmin.* null *.*.* The initial access for segments will be restricted to: rew *.SysMaint.* r *.Multics.* Installations will be categorized as online or hardcore. Online changes involve software to be installed into >sss, >tools, and >unb. Online changes are prepared under the sub-directory >special_ldd>online. The directory name will follow the convention of MCR_NUMBER-[date] (i.e., 6645-11/30/84). Directories will have associated MCR numbers as add names. Software included on the Multics System Tape, or software that is part of the Multics Communications System, are prepared under the MULTICS TECHNICAL BULLETIN MTB-712 sub-directory >special_ldd>hardcore. The primary directory name for the installation directory will be the hardcore version number, or the MCS version number being prepared. The directory has add names for each associated MCR. When hardcore and online changes require coordination, the version being prepared will be the primary name of the directory in both hierarchies: For example: >special_ldd>hardcore>41-0 >special_ldd>online>41-0 In the event a post bug fix (PBF), or Multics Emergency Change Request (MECR) installation is received, the procedures as outlined in MAB-056 and MAB-057 will be followed. The processing of a PBF or MECR will be the same as a normal installation. The major exception will be the lack of a Multics Change Request (MCR) form. This doesn't represent a problem to configuration management as the MCR for any MECR is to be submitted within 2 working weeks of installation as documented in MAB-057. The MECR installation will be tracked in the MECR tracking database until the MCR is approved and a standard MSCR is submitted. The MCR for the PBF will remain with the original system change request form. The only difference in preparation will occur in the directory name convention for online changes. 1) For MECR type installations the directory will be named for the MECR tracking number, i.e. P0100. 2) For PBF type installations, the directory will be named MCR_NUMBER.pbf. Where the MCR_NUMBER will provide a historical reference to the original change. When the MECR or PBF applies to hardcore, then the MCR number to which the PBF applies, or the MECR number will be noted in hardcore.changes.info. All paperwork assoiated with this type of change will then be processed as any other normal installation. Preparation of software installations involves several steps which must be individually completed without error or warning messages. These steps are: 1) Use the copy command to place all modified source modules, include files, and bindfiles into the installation working directory. 2) List the contents of the installation working directory and MULTICS TECHNICAL BULLETIN MTB-712 manually compare against the MSCR to insure that all required segments have been copied. 3) At this point, the manual check to assure all the modules are present, has been done. The installation will continue with the prepare_installation (pinst) absentee (see "Appendix A" for an example of the absentee). The following steps are the procedures followed in the absentee process: a) Complete a compare_ascii (cpa) on all source modules in the installation working directory. b) A peruse_crossreference (pcref) of all include files associated with the installation is done. Any source module using the modified include file, which is not already present, is copied from the system libraries. c) Delete all segments in >special_ldd>audit>CPA which have not been modified within the previous thirty (30) days. d) A compare of the submitted module will be made with the module installed in the library. The output from the compare will be placed into the >special_ldd>audit>CPA directory with the naming convention of SOURCE_NAME.cpa. When a segment with this name already exists in this directory, that indicates the module was part of another installation that has taken place within the last 30 days. The output from the compare will be printed, for review by the installer, to insure that the previous installation is not being backed out. When it appears to the installer that a previous installation is being backed out, the developer(s) involved will be notified so that corrective action can be taken. e) Create a directory under >special_ldd>audit>CPA with the name of the installation working directory, and place a copy of the compare output into that directory. (NOTE: The directories under >special_ldd>audit>CPA are dumped onto magnetic tape at the time of a Multics Release, or when quota restrictions require.) f) Check each module in the installation working directory using the display_pnotice command to insure proper copyright protection. g) Check each module for inclusion of proper self documenting error documentation. h) Compile each source module with appropriate compiler, using appropriate options (e.g., PL1 programs are compiled using -optimize and -map to generate the most MULTICS TECHNICAL BULLETIN MTB-712 efficient code and to create a .list segment). All modules must compile without error or warning messages. After the steps outlined above have been successfully completed, the source and object archives associated with the installation are copied into the installation working directory from the installed system libraries. These archives are then updated with the new modules. After being updated, the archives are sorted using the archive_sort command. All object archives are then bound using the bind command. Binding must occur without error or warning. Only after all these steps have been successfully completed, are changes ready for installation into the system libraries. To complete the installation, the create_update_seg (cus) command is used to generate an update.ec. The cus command searches the system library and marks new modules as 'replacements'. When a library module with a name matching a new module cannot be located, the installer is prompted to supply an appropriate library pathname. Following the successful creation of an update.ec, that segment is manually edited to provide a description of the change being installed. This description is placed into the online_changes.info or hardcore_changes.info segments which reside in the >documentation>iml_info_segments directory. This is done by means of links in the installation directory which lead to system segments used by the installation process. When update_seg is used to perform the actual installation, the command will require links to special installation specific segments: o Installations.log is an ascii segment used to document installation information including all modules installed. Information is automatically added when update_seg is used with the -log argument. o Installations.lock prevents separate installations from being simultaneously performed by gating installations. o Installations.info is a standard info file which contains a reverse chronological history of library changes made by update_seg. The link points to a changes segment in >documentation>aml>online.changes.info. At this point the installation is ready and can be installed with the update_seg command. The update.ec is run and monitored by the installer to assure no errors exists. A typical update.ec MULTICS TECHNICAL BULLETIN MTB-712 might appear as follows: &attach us in [time] -log Input: MCR 6885 and 6920: Installed bound_mseg_ (Standard). Changed the message segment primitive to store the complete process authorization, including the privileges, with each message in the segment. Also, fixed all reported problems in the ring-1 message segment. . &detach us rp bound_mseg_.s.archive >ldd>sss>s>== -ac -rb 1 5 5 -acl r * us rp bound_mseg_.archive >ldd>sss>o>== -ac -rb 1 5 5 -acl r * us rp mbx_mseg_.list >ldd>listings>sss>== -rb 1 5 5 -acl r * us rp mseg_.list >ldd>listings>sss>== -rb 1 5 5 -acl r * us rp mseg_add_.list >ldd>listings>sss>== -rb 1 5 5 -acl r * us rp mseg_create_.list >ldd>listings>sss>== -rb 1 5 5 -acl r * us rp mseg_util_.list >ldd>listings>sss>== -rb 1 5 5 -acl r * us rp queue_mseg_.list >ldd>listings>sss>== -rb 1 5 5 -acl r * us rp bound_mseg_ >sss>== -log -ss When the exec_com is executed, an installation segment, [time].io, is created. If no errors are detected the "update_seg install" command is executed. This command will physically move the segments into the appropriate libraries, update >documentation>aml>online.changes.info, and update >ldd>Installations.log. The Installations.log entry would appear as follows: ***** MCR 6885 and 6920: Installed bound_mseg_ (Standard). Changed the message segment primitive to store the complete process authorization, including the privileges, with each message in the segment. Also, fixed all reported problems in the ring-1 message segment. 12/05/84 1135.7 bound_mseg_ replaced in SSS replaced: mseg_ mseg_add_ mseg_util_ mseg_create_ mbx_mseg_ queue_mseg_ The developer will be informed by electronic mail that the installation has been completed. The MSCR form, along with the MCR, will then be filed in a MULTICS TECHNICAL BULLETIN MTB-712 cabinet, in chronological order and kept for permanent history. It will be the responsibility of the System Integration Project leader to keep this file, on site, at the Multics development center in Phoenix, Arizona. Under this procedure, to track all changes to a module, the Installations.log can be scanned for an individual module. The history of the MCR will be documented in the log along with the date. When the MCR is known the audit directory can be retrieved to examine the compare output segments. Knowing the MCR number and date will point to the physical installation forms which can then be located and pulled from the file. The backup tapes from the installation system in Phoenix will be kept for one year to make it possible to retrieve the installation and the library module in question. The audit directories will be available on the tape saves. The audit tapes will be kept in the System M tape library. In summary, the relevant documentation that each installation creates is: a) >ldd>Installations.log This is a total history of all installations for a complete release. The information contained within the log are dates, summary of installation, bound units installed, and modules replaced, added, or deleted. b) >special_ldd>audit>CPA>{Installation Directory}, where Installation Directory follows the convention of MCR_NUMBER-[date] (i.e., 6645-11/30/84). Within this directory will be found all compare ascii output of the changes made with a given installation. c) >documentation>aml>online_changes.info, this contains a brief description of the the changes made to online software, the MCR number, and bound units being installed. This information can also be found in the Installations.log for the release. d) >documentation>aml>hardcore_changes.info, this contains a brief description of the changes made to hardcore software, the hardcore version identifier, and the MCR number for the changes being installed. e) Multics System Change Request (MSCR), is the hardcopy forms submitted by the developer. This document contains all information for each system change. The documents MULTICS TECHNICAL BULLETIN MTB-712 are filled by date once an installation has been completed. The MSCR is retained for two major Multics Releases. With this information, anyone needing detailed information on an installation or module could start with the Installation.log and an editor. By doing a string search on the module name it will be quickly determined if the module has been modified, and when. Once the date has been determined, the MSCR for that installation can be pulled. This will provide detailed information about the installation, which can be verified with the information in the Installations.log. If the compare output for the module in question needs to be examined, the directory >special_ldd>audit>CPA>{MCR_NUMBER.DATE} can be located. This directory will contain all the information as outlined above. The Multics Release The Software Integration project will be responsible for the generation and publication of the Multics Software Release Bulletin and the Multics Software Release Installation Instructions. The Software Release Bulletin (SRB) is a composite of information provided by the developer, which is included on the MCR form submitted with the installation. The Installation Instructions are generated from information provided by the developer, which requires intervention by the site personnel to allow continued correct operation of the system. After a reasonable freeze and exposure period, the Master Multics Release tapes are dumped from the Multics development system in Phoenix. As part of the release preparation, a directory is created in >documentation>MRXX where XX is the major release indicator. Within this directory, and shipped to the customer site will be the SRB, SIB and error message documentation. The release includes a set of magnetic tapes, hardcopy dump maps, and accompanying documentation. For each release, a set of master tapes is generated and all dump maps reflect the contents of these master tapes. All tapes sent to the field are copies of the master tapes. Because of different lengths of magnetic tape reels, there may not be an exact correlation between a single tape and a dump map. MULTICS TECHNICAL BULLETIN MTB-712 Site personnel may assure themselves of the contents of the tapes by visually matching the maps produced from the reload operations against the master dump maps supplied. Tapes are verified using the following approach. The Master Development tapes are copied onto a Customer Service Division Master tape set for copy and distribution to the field. The development tapes are compared to the CSD tapes with copy_dump_tape command. Each set of tapes sent to the field are generated from the master set, then verified for correctness. The master release tapes are further verified by testing on a Multics system where the instructions for installing a system for the first time will be executed. The system is booted from scratch. The system then tested with the development test scripts and the Configuration Management Functional Test software. A system running the most recent prior release is also tested by updating it to the current release. The test scripts are again run to assure error free operation. MULTICS TECHNICAL BULLETIN MTB-712 APPENDIX A PREPARE INSTALLATION ABSENTEE The following is an abbreviated example of how an installation is checked and prepared with the absentee prepare_installation.absin. Some command lines in this example have been folded over due to line length consideration. All folded lines will be continued on the following line indented by two spaces. PINST.ABSIN &command_line off &if [nless &n 1] &then &goto USAGE &if [not [exists dir &1]] &then &goto NODIR cwd &1 &goto &ec_name &label pinst & da ** -a -bf sa ** rw *.SysMaint r *.Multics date_deleter >spec>temp>CPA 30 **.cpa do "if [exists seg >spec>temp>CPA>[before [string &(1)] .pl1].cpa] -then ""eor -rqt pmdc_l6 -q 3 -he Holmstedt -ds == -dupt >spec>temp>CPA>[before [string &(1)] .pl1].cpa"""([segs *.pl1]) do "fo >spec>temp>CPA>[before [string &(1)] .pl1].cpa -tc;gls &(1) -rename foo.bar;cpa foo.bar &(1) -he;dl foo.bar;ro"([segs *.pl1]) &if [not [exists dir >spec>temp>CPA>[st -wd -primary]]] &then cd >spec>temp>CPA>[st -wd -primary] sis >spec>temp>CPA>[st -wd -primary] r *.Multics r *.SysMaint null * do "answer yes -bf cp >spec>temp>CPA>[before [string &(1)] .pl1].cpa >spec>temp>CPA>[st -wd -primary]>==" ([segs *.pl1]) display_pnotice ([segs *.pl1]) extract_message_doc ([segs *.*]) [pd]>junk1 & if >spec>on goto ON, if not >spec>on goto HARD &if [equal [index &1 >on] 0] &then &goto HARD &label ON do "if [exists segment >ldd>incl>&(1)] -then ""answer no -bf lf [pcref &(1)] -lb sss.s""" ([segs *.incl.*]) do "if [exists segment >ldd>incl>&(1)] -then ""answer no -bf lf [pcref &(1)] -lb unb.s""" ([segs *.incl.*]) do "if [exists segment >ldd>incl>&(1)] -then ""answer no -bf lf [pcref &(1)] -lb t.s""" ([segs *.incl.*]) rdc ([segs *.rd]) pl1_macro ([segs **.pmac]) new_fortran ([segs *.fortran]) -ansi77 -round -ot -map do "ioa_ ""assembling &(1) "";cds &(1) -list" ([segs *.cds]) do "ioa_ ""assembling &(1) "";alm &(1) -list" ([segs *.alm]) do "ioa_ ""compiling &(1) "";pl1 &(1) -ot -map" ([segs *.pl1]) &label LISP do "ioa_ ""compiling &(1)"";lcp &(1) -list" ([segs *.lisp]) &quit &label HARD do "if [exists segment >ldd>incl>&(1)] -then ""answer no -bf lf [pcref &(1)] -lb h.s""" ([segs *.incl.*]) rdc ([segs *.rd]) pl1_macro ([segs **.pmac]) -target """bce""" do "ioa_ ""assembling &(1) "";cds &(1) -list" ([segs *.cds]) do "ioa_ ""assembling &(1) "";alm &(1) -list" ([segs *.alm]) do "ioa_ ""compiling &(1) "";pl1 &(1) -ot -list" ([segs *.pl1]) &quit &label USAGE sm [user name].sm pinst needs argument. &quit &label NODIR &print Bad path name given: &1 &quit