(file) Return to release.howto CVS log (file) (dir) Up to [Development] / JSOC / CM

File: [Development] / JSOC / CM / release.howto (download)
Revision: 1.13, Thu Jun 2 22:30:38 2011 UTC (12 years, 3 months ago) by arta
Branch: MAIN
CVS Tags: Ver_LATEST, Ver_9-5, Ver_9-41, Ver_9-4, Ver_9-3, Ver_9-2, Ver_9-1, Ver_9-0, Ver_8-8, Ver_8-7, Ver_8-6, Ver_8-5, Ver_8-4, Ver_8-3, Ver_8-2, Ver_8-12, Ver_8-11, Ver_8-10, Ver_8-1, Ver_8-0, Ver_7-1, Ver_7-0, Ver_6-4, Ver_6-3, Ver_6-2, Ver_6-1, Ver_6-0, Ver_5-14, Ver_5-13, NetDRMS_Ver_LATEST, NetDRMS_Ver_9-5, NetDRMS_Ver_9-41, NetDRMS_Ver_9-4, NetDRMS_Ver_9-3, NetDRMS_Ver_9-2, NetDRMS_Ver_9-1, NetDRMS_Ver_9-0, NetDRMS_Ver_8-8, NetDRMS_Ver_8-7, NetDRMS_Ver_8-6, NetDRMS_Ver_8-5, NetDRMS_Ver_8-4, NetDRMS_Ver_8-12, NetDRMS_Ver_8-11, NetDRMS_Ver_8-10, HEAD
Changes since 1.12: +20 -40 lines
Update the release howto to use dlsource.pl, which makes it easy to update CVS tags and do checkouts.

Art's suggested release recipe:

1. Notify users (jsoc_dev@sun.stanford.edu) that a new release will be
built.  Allow users time to submit changes they want in the new
release.  This includes changes made by the CM that have not been

2. Update $JSOCROOT/base/jsoc_version.h to the latest release version
and build again (make clean, make universe).  The version macros
should be of the form:

#define jsoc_version "V3R5"
#define jsoc_vers_num (305)

cvs commit $JSOCROOT/base/jsoc_version.h.

3. Add a new file, JSOC/CM/V<MAJ>.<MIN>/release.notes. This has the
release notes (see below).  Commit.

4. Create a tag for the new release.
  a. Create the full-JSOC-release tags
       i. /home/jsoc/dlsource.pl -o tag -f sdp -t Ver_<MAJ>-<MIN>
      ii. /home/jsoc/dlsource.pl -o untag -f sdp -t Ver_LATEST
     iii. /home/jsoc/dlsource.pl -o tag -f sdp -t Ver_LATEST
  b. Create the NetDRMS-release tags
       i. /home/jsoc/dlsource.pl -o tag -f net -t NetDRMS_Ver_<MAJ>-<MIN>
      ii. /home/jsoc/dlsource.pl -o untag -f net -t Ver_DRMSLATEST
     iii. /home/jsoc/dlsource.pl -o tag -f net -t Ver_DRMSLATEST

5. Now you must build all production release executables with the release jsoc
version numbers in place ("V3R5" and "305" in this example). Ensure
that the tag was successfully created and create actual release
binaries (not just the binaries in your sandbox).  Login as the 'jsoc'
user, cd to /home/jsoc/cvs, and run "/home/jsoc/dlsource.pl -o checkout 
-f sdp -r Ver_<MAJ>-<MIN>" and build on all machines supported. Do the same in 

6. Edit $JSOCROOT/base/jsoc_version.h, but not the version of this file
in a production directory.The version macros should be of the form:

#define jsoc_version "V3R5X"
#define jsoc_vers_num (-305)

The "X" and "-" denote that binaries were created from non-release code.

commit $JSOCROOT/base/jsoc_version.h.

7. Send instructions for using the new release to users.

Example New Release Instructions

                       Release Notes JSOC V3.8         12Sep2007
                       -----------------------         ---------

A release is a set of files, each having a specific version.  And a release typcially
has a version number because over time you have newer and newer releases of the 
same product.  For example, a hypothetical 1.3 release may contain fileA#1.8, 
fileB#1.2, fileC#2.2 and a 1.4 release may contain fileA#2.5, fileB#2.1, fileC#2.9. 
JSOC releases are similarly versioned and contain a set of such files.  JSOC release
code is guaranteed to compile on cluster nodes (eg., n00, n02).  The resulting binaries
have been minimally tested.  At the time of the creation of the release, the
release versions of each file will be the most recent.  But as time passes, newer versions 
of some files will be made, and there is no guarantee that these changes will
not destabilize JSOC (ie., they may cause JSOC to no longer compile or execute

There are several ways to use this release.  If you wish to simply use pre-built
binaries, you can simply use the production binaries, which are located at 
/home/production/cvs/JSOC.  Every time a release is created, the binaries in
this location get updated.  Only the production user can update these binaries.
So, you could run /home/production/cvs/JSOC/bin/linux_x86_64/show_keys, for example.
If instead you want to work with stable source files, then you must have a sandbox,
which is a local copy (in your home directory) of the files in the cvs depot.  
You would probably want to work with a sandbox if you plan on making eventual 
changes to the depot files.  Changes you make to your sandbox files are not visible 
to other users until you "commit" those changes back to the cvs depot.  Please see
"If You Don't Have a Sandbox" below for more information on how to create a sandbox.  
There is also a "working" release which resides in in /home/jsoc/cvs/JSOC.  New 
files may be placed here and existing files may be edited for common use before the 
next official release.  Each time a release gets created, the source and binaries of 
the working release get updated.  WARNING: the files you see here may not be stable 
since by the time you see them, another user may have edited them. Only the production 
release is guaranteed to be stable and unchanged between releases.

Obtaining the Release
To update your working directory to this release, or to check-out this release anew, 
please visit http://jsoc.stanford.edu/jsocwiki/CvsInit. Please keep in mind that
users may have modified files since the release was created, so use of the 
scripts documented in the web page may result in a working directory whose
content is not identical to the release.  If updating, you can supply 
the flag "-R" to the jsoc_update.csh and jsoc_sync.csh scripts to download the
latest release.  This will ensure that your working directory has the exact, latest
release versions of the files (eg., jsoc_sync.csh -R). If checking-out, 
you can supply the argument "-r Ver_LATEST" to the "cvs checkout" command
to achieve the analogous result, but for a fresh checkout.  WARNING: if you use 
the "-R" or "-r" flags, please use only jsoc_update.csh or jsoc_sync.csh to update 
your sources thereafter.  Use of "-R" or "-r Ver_LATEST" will result in a cvs
"sticky flag" being set.  jsoc_update.csh and jsoc_sync.csh clear this sticky flag.

Additional Info
If you are unfamiliar with the use of cvs see the file:

There's a linux4 cvs gui at xim:/usr/bin/lincvs
Also on our jsoc web page:


Use the Apache cvs gui to see the diffs. For example, go to
and click on the name in the File column and then click on
"diffs to previous #" to see the diffs.

End Example New Release Instructions

--Art Amezcua 9/12/2007


Make sure the cvs/JSOC/base/jsoc_version.h is updated.

A release is done from a sandbox. Get the production user sandbox to work:

> cd /home/production/cvs/JSOC

d00:/home/production/cvs/JSOC>  $JSOCROOT/jsoc_update.csh

Do a sanity check on the make log files:

When all the makes are ok, tag all the most recent revisions in the repository:

> cvs -d /home/cvsuser/cvsroot rtag -r HEAD Ver_1-0 JSOC

To remove this tag do:

> cvs -d /home/cvsuser/cvsroot rtag -d Ver_1-0 JSOC

NOTE: Tell users about Phil's script cvs/JSOC/jsoc_update.csh  to do
their release update.

***************OLD STUFF BELOW******************************************

Resync with the repository:

> cvs update -APd >& cvsupdate.log

Inspect cvsupdate.log for any "C " status.

       C file
         A  conflict  was detected while trying to merge your changes to file
         with changes from the source repository.  file  (the  copy  in  your
         working  directory) is now the result of attempting to merge the two
         revisions; an unmodified copy of your file is also in  your  working
         directory, with the name .#file.revision where revision is the revi-
         sion that your modified file started from.  Resolve the conflict 

Check for any files that have not been commited (not Status: Up-to-date):

> cvsstatus	(NOTE: s/b an alias for $JSOCROOT/scripts/cvsstatus.pl)

Determine if any modified files need to be committed or replaced with the
repository version before proceeding.

Get the all the makes to work:
> ssh production@lws               (and then again for d00 and n00(32bit))
> cd /home/production/cvs/JSOC
####(OLD) > setenv ORACLE_HOME /u01/app/oracle/product/10.1.0/db_1
> ./configure -force  (for n00: ./configure -force -client)
(may have to do a make cleandep; make depend)
(ignore modification time in future msgs)

> make clean
> make -j 4 >& make.log.lws        (run 4 jobs in parallel for speed)

############## ONLY HAD TO DO THIS THE FIRST TIME ############################
!!!!!!!!!!!!!!!!!Check that libsum, sumsapi, and sum dirs use gcc !!!!!!!!!!!
!!!!!!!!!!! Don't have to do this if gcc is already in the Makefile !!!!!!!!!
Now go to the dirs that need to have the gcc compile and edit Makefile:
cd /home2/production/cvs/JSOC/base/
cd sums/libs/pg
vi Makefile
***ADD after the line:
include ../../make.mk

###Mod by JA after configure is run#########################
CC = gcc
CFLAGS = -std=gnu99 -g -Wall -O0 -Wno-comment -Wno-parentheses

And then do
>make clean
And do the same for cd ../sumsapi/ and cd ../sum/
############## ONLY HAD TO DO THIS THE FIRST TIME ############################

Karen Tian
Powered by
ViewCVS 0.9.4