[Bio] / ReleaseTools / newrel Repository:
ViewVC logotype

View of /ReleaseTools/newrel

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (download) (annotate)
Tue Dec 23 13:43:25 2003 UTC (15 years, 10 months ago) by efrank
Branch: MAIN
CVS Tags: V00-00-07
Changes since 1.2: +29 -8 lines

Modify newrel so that it copies top level makefile from ReleaseTools
into the new release and then does make installdirs.

The ReleaseTools to use is the one in the PackageVersions file given
to newrel.  If ReleaseTools isn't in that file, a warning is printed
but we do as much as we can.

#!/bin/sh

########################################################################
# Given a definition, creates a new release.  Eventually, we want
# something more sophisticated, but for now we just read a file
# that defines all the packages to include in the release, along with
# tag names.  An example of more sophisticated would be to help the
# user form that file by looking at a test release and the underlying
# release it is based upon.
#
# Usage:
#    newrel <releaseName> -f <PackageVersionsFileName>
#        makes new dir called <releaseName> in release area, copies
#        the PackageVersionsFile there and fills the directory
#        with packages as specified.
#
#        Note, <releaseName> is just name, e.g., 1.2.3. No path.
#
# PackageVersions is a list of
#  <PackageName> <version>
# e.g.,
#   ReleaseTools V00-00-05
#   FigCommon V00-00-01
#   FigKernelPackages V00-00-02
#   FigKernelScripts V00-00-01
#   FigPeer2PeerTools V00-00-00
#   FigWebPages V00-00-00
#   FigWebServices V00-00-02
########################################################################


#-----------------------------------------------------------------------
#++ vars

releaseArea=""                     # $RTROOT/dist/releases, if RTROOT set
packageVersionsFileName=""         # Command arg from user. 
newReleaseName=""                  # Command arg passed by user.
newReleasePathAndName=""           # $releaseArea/$newReleaseName 
invokedFromDir=`pwd`


#-----------------------------------------------------------------------
#++ process options

   set -- `getopt f: $*`
   if [ $? = 0 ]; then
       while [ $1 != -- ]
	 do
	 case $1 in
	     -f) packageVersionsFileName=$2; shift;;
	 esac
	 shift
       done
       shift
   fi
   

#-----------------------------------------------------------------------
#++ check for correct number of arguments
#
   if [ "$#" -ne 1 ]; then
       echo "Usage: newrel <releaseName> -f <PackageVersionsFileName>"
       exit 2
   fi
   newReleaseName=$1

   echo "Add code to enforce naming rules for release name...should be form i.j.k"
   echo

   if [ $packageVersionsFileName = "" ]; then
       echo "You must give a PackageVersions file name via -f "
       exit 2
   fi

#-----------------------------------------------------------------------
# ++ Does the PackageVersionsFile exist?

   if [ ! -r $packageVersionsFileName ]; then 
       echo "PackageVersionsFile $packageVersionsFileName not readable"
       exit 2
   fi
 

#-----------------------------------------------------------------------
#++ Validate format of PackageVersions
#   Require all packages have tag names.  None are HEAD

   echo "Add code to Validate format of PackageVersions.  Require all packages have tag names.  None are HEAD"
   echo

#-----------------------------------------------------------------------
#++ Sanity check the release

   if [ -z "$RTROOT" ]; then
       echo "No RTROOT set"
       exit 2
   fi

   releaseArea=$RTROOT/dist/releases

   if [ ! -r "$releaseArea" ]; then
       echo "No release Areas: " $releaseArea
       exit 2
   fi

   newReleasePathAndName=$releaseArea/$newReleaseName 

   if [ -r $newReleasePathAndName ]; then
       echo "Release $newReleaseName already exists in release area, $releaseArea"
       exit 2
   fi

#-----------------------------------------------------------------------
#++ OK, make the new release directory and put config file there
#   and PackageVersions file 

   # Don't know how PackageVersions file was specified to us.  Could be
   # absolute path or not.  Just remember where we are so we can do the
   # copy, below

   invokedFromDir=`pwd`
 
   # Warp us there, Mr. Sulu

   cd $releaseArea
   mkdir $newReleaseName

   if [ ! -r $newReleaseName ]; then
       echo "Failed to make new release directory"
       exit 2
   fi
   
   cd $newReleaseName

   # put in a rgConfig that points to ourselves.  This will let us
   # call other ReleaseTools tools to help us build this thing.

   echo "baserelname=$newReleaseName" > rtConfig

   if [ ! -r  rtConfig ]; then
       echo "Failed to make rtConfig file...you clean up the mess"
       exit 2
   fi

   # copy in the PackageVersions file.  Note that we make sure it
   # goes in with the right name, "PackageVersions"

   cd $invokedFromDir
   cp -p $packageVersionsFileName $newReleasePathAndName/PackageVersions

   installedPackageVersionsFile=$newReleasePathAndName/PackageVersions

   cd $newReleasePathAndName

#-----------------------------------------------------------------------
#++ Load it with the packages.

   # this uses the PackageVersions we just dumped in

   cd $newReleasePathAndName
   for pkg in `awk '{print $1 }' $installedPackageVersionsFile` ; do
       echo getting $pkg
       packageVer=`grep $pkg $installedPackageVersionsFile | awk '{print $2}'`
       echo cvs co  -r $packageVer  $pkg
       cvs co  -r $packageVer  $pkg
   done

#-----------------------------------------------------------------------
#++ Now that we have the packages, make the directory structure for
#  the release. We do that by deferring to the makefile in ReleaseTools.
#  Since the version of ReleaseTools can change release to release, we
#  use the info in the PackageVersions file we were called with.

   cd $newReleasePathAndName
   if [ -r ReleaseTools ]; then
       cp -p ReleaseTools/Makefile.top Makefile
       make installdirs
   else
       echo "WARNING: No ReleaseTools in PackageVersions.  You're going to regret it...continuing anyway."
   fi


#-----------------------------------------------------------------------
#++ Zorch all the CVS directories.

   cd $newReleasePathAndName

   # brain fade...can't get -exec to work for me and am in rush:

   rm -rf `find . -type d -name CVS -print`

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3