Provided by: shapetools_1.4pl6-14_amd64 bug


       shape_releas - shapeTools RMS construction of releases and prereleases


       shape prerelease

       shape release

       shape plprerelease

       shape plrelease

       shape extractrelease [RELEASENAME=<releaseId>] [(PARTIAL)RELEASEBASE=<path>]


       The  heart  of  the  shapeTools  Release  Management  System is its mechanism for creating
       prereleases and releases of the managed software system.  These functions can  be  invoked
       from  any node of the system source repository and from any private workspace. Hence, each
       node system can be (pre)released independently.  Constructing a (pre)release of a non-leaf
       node  (a  node  containing  no  subsystems)  requires  all  subsystems to be (pre)released
       beforehand and incorporates the existing (pre)releases in the new (pre)release.

       Prereleases are part of the systematic preparation of a release. They give a glance on how
       a  release  will  look  like  in  the  current  development state. They should be used for
       internal publication and integration testing. When a prerelease has proved  to  be  stable
       enough  to  be released to the outside world, it should be declared as new system release.
       This mechanism allows an arbitrary number of release test cycles without prematurely using
       the anticipated release number.

       The general algorithm of the shape_RMS release functions is the following.

       1) check release preconditions
           Before  a release process is sent on its way, the system is checked for releasability.
           If any of the required preconditions is not met, the system is not releasable and  the
           release  process  stops.   First,  each  subsystem  -  if  there  are  any - has to be
           (pre)released beforehand. Release building requires all  subsystems  to  be  released,
           prereleases need the subsystems to be prereleased. The second condition, only applying
           to prereleases, requires that no foreign  update  locks  are  active  on  any  of  the
           components going into the (pre)release. It is advisable, that no changes to any of the
           node components are unsaved (pending), no matter who is the author.  However,  if  the
           user  who  triggered  the  release process has pending changes on any components to be
           released, these will be saved automatically and the update locks  given  up.   Pending
           changes with update locks by other users let the release process fail.

       2) generate release name
           Each release and prerelease has an identification string, built from the node name and
           a two part release number. Prerelease names additionally contain a  prerelease  serial
           number,  Patchlevel  releases  and prereleases also the patchlevel number. The release
           number is taken from the node's automatically maintained release identification  file.
           The  generated  release identification string is tagged to any component being part of
           the (pre)release.

       3) invoke releases of subsystems
           Prereleases and releases invoke  all  subsystems  of  the  current  node.   Prerelease
           building includes the most recent prerelease of each subsystem, while release building
           includes the most recent subsystem releases. Each of  the  subsystem  components  get,
           additionally  to  the  subsystem  release  name  they  already have, the freshly build
           release name tagged on as symbolic name. Symbolic names may be used as surrogates  for
           version numbers (see vadm(1)).

       4) save release components and set attributes
           After  all components of the included subsystems have been marked, all direct parts of
           a the released node get the release identification string as symbolic name. In case of
           building  a  prerelease,  if any of the direct components has a busy version differing
           from the last saved version (pending changes) and an update lock set by the  user  who
           triggered  the  prerelease  building, it is saved automatically before (see also 1. ).
           All node component versions (from subsystems or direct  components)  are  additionally
           set to an appropriate version state (see below).

       5) install components in release area
           The  last  step  is  the  installation  of  all  marked  component versions (subsystem
           components and node components)  in  one  of  the  two  release  areas.  Releases  and
           prereleases  that have been made from the top node of the source repository are copied
           to the release area. All other  releases,  representing  only  a  part  of  the  whole
           development, are installed in the partial release area.

       Shape  prerelease  saves  the  current  state  of development.  According to the algorithm
       described above, all unsaved node system components are saved and the most recent  version
       of each component is included in the new prerelease. A prerelease additionally invokes the
       most recent prerelease or release  (whichever  is  the  newest)  of  each  subsystem.  All
       component   versions   going  into  the  prerelease  may  further  be  identified  by  the
       automatically generated prerelease name, having the form
            <system_name>-<generation>.<revision>pre<prerelease_number> (e.g. shapeTools-1.3pre5).
       The prerelease serial number is maintained automatically. It starts with 1. All prerelease
       component versions are set to the state proposed. Prereleases of  the  whole  system  (the
       prerelease  action  was  invoked from the top node) cause all component versions be set to
       state accessed. A copy of the prerelease is  extracted  from  the  source  repository  and
       established installed in either the release area of the partial release area, depending on
       whether the prerelease comprises the whole system of or just a part.

       Shape release declares a previously constructed prerelease as new release. The most recent
       prerelease  of  the current node is taken as basis. If the node contains subsystems, shape
       release requires the most recent  release  of  each  subsystem  to  be  included.  If  any
       subsystem  has  a prerelease more recent than it's last release, shape gives a warning and
       asks for confirmation to proceed.  Due  to  technical  reasons,  it  does  this  for  each
       component.  Don't  get  confused  when you have to confirm multiple times. The new release
       gets a name of the form
            <system_name>-<generation>.<revision> (e.g. shapeTools-1.3).
       The generation and revision number are derived from the system's automatically  maintained
       release  identification  file.  With  each release, a new version of this file is created.
       Declaring a new generation for  the  release  file  (see  Save(1))  increases  the  system
       generation  number.  All  component  versions  of  the release are set to state published,
       except when a releases of the whole system is constructed (shape release from  the  system
       tree  top node). In this case, the state of all component versions is set to frozen.  Like
       prereleases, a copy of the release is extracted from the source repository and written  to
       one of the release area or the partial release area.

       Shape  plprerelease  and  shape plrelease (shape patchlevel(pre)release) are basically the
       same as prerelease and release. The only difference is  the  form  of  the  identification
       string.  Patchlevel prereleases are named
            <system_name>-<gen>.<rev>pl<patchlevel>pre<prerel_num> (e.g. shapeTools-1.3pl5pre2)
       and patchlevel releases
            <system_name>-<gen>.<rev>pl<patchlevel> (e.g. shapeTools-1.3pl5).
       The  idea  of  patchlevel  releases  is  to  construct releases that are not to be shipped
       completely but rather as a patch to an existing release. Of course, real releases may also
       be shipped as patches, so this is rather a naming convention.

       Shape extractrelease extracts a copy of a certain release or prerelease from the project's
       central source repository and installs it in the release area or the partial release  area
       (depending  on  whether  it  is  a  (pre)release of the whole system or just a part of the
       system). When called without further settings, it installs the most recent  (pre)releases.
       The  installed  copy  represents a source distribution of the system or system part. It is
       totally independent of the development environment.

       An explicit release identification  may  be  given  to  shape  extractrelease  by  setting
       RELEASENAME=<release_identification>  on  the  command  line.  Setting  one  of the macros
       RELEASEBASE or PARTIALRELEASEBASE on the command line  redefines  the  path  to  the  base
       directory  of  the  release  tree.  (Pre)releases  of  the  whole  system  are  copied  to
       RELEASEBASE, all others to PARTIALRELEASEBASE.   Check  your  Shapefile  for  the  default
       settings  of  these  two  macros.   Subdirectories  will be automatically created there as