version 1.3, 2007/12/05 00:03:02
|
version 1.12, 2009/07/29 21:25:44
|
|
|
Art's suggested release recipe: | 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 committed. |
1. Notify users (jsoc_dev@sun.stanford.edu) that a new release will be |
2. From a cluster-node (eg., n00), perform a clean sync to head as a non-Production user (cvs checkout -r HEAD JSOC). The -r rev option is sticky, which means that if you used -r Ver_3-2 on a previous checkout, that "cvs checkout JSOC" will check out Ver_3-2. Use "-r HEAD" to force the use of the head revision. 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: |
built. Allow users time to submit changes they want in the new |
|
release. This includes changes made by the CM that have not been |
|
committed. |
|
|
|
2. From a cluster-node (eg., n00), perform a clean sync to |
|
head as a non-Production user (cvs checkout -r HEAD JSOC). The -r rev |
|
option is sticky, which means that if you used -r Ver_3-2 on a |
|
previous checkout, that "cvs checkout JSOC" will check out Ver_3-2. |
|
Use "-r HEAD" to force the use of the head revision. |
|
|
|
3.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_version "V3R5" |
#define jsoc_vers_num (305) | #define jsoc_vers_num (305) |
| |
3. Repeat step 2 for all machine types supported. |
4. From the machine used in step 2, commit $JSOCROOT/base/jsoc_version.h. |
4. From the machine used in step 2, commit $JSOCROOT/base/libdrms/jsoc_version.h. |
|
5. From the machine used in step 2, create a tag for the new release. cd to $JSOCROOT. Run "cvs tag -c Ver_<MAJ>-<MIN> ." Replace <MAJ> with the major version number and <MIN> with the minor version number. |
5. Add a new file, JSOC/CM/V<MAJ>.<MIN>/release.notes. This has the |
6. Update the "Ver_LATEST" tag. This tag always points to the latest release. "cd $JSOCROOT; cvs rtag -r Ver_<MAJ>-<MIN> Ver_LATEST JSOC", where <MAJ> and <MIN> are the current release. |
release notes (see below). Commit. |
7. Once again, edit $JSOCROOT/base/libdrms/jsoc_version.h. The version macros should be of the form: |
|
|
6. From the machine used in step 2, create a tag for the new release. |
|
a. cd $JSOCROOT |
|
b. cvs tag -c Ver_<MAJ>-<MIN> . (Replace <MAJ> |
|
with the major version number and <MIN> with the minor version number.) |
|
c. cvs tag -d Ver_LATEST . |
|
d. cvs tag -c Ver_LATEST . |
|
|
|
7. The NetDRMS release version number should also be incremented and |
|
tagged: |
|
a. cd /tmp |
|
b. cvs checkout NETDRMSONLY (head version of netdrms-only files) |
|
c. cd JSOC |
|
d. cvs tag -c NetDRMS_Ver_<MAJ>-<MIN> . |
|
e. cvs tag -d Ver_DRMSLATEST . |
|
f. cvs tag -c Ver_DRMSLATEST . |
|
g. cd /tmp |
|
h. cvs checkout -r Ver_<MAJ>-<MIN> CORE |
|
i. cd JSOC |
|
j. cvs tag -c NetDRMS_Ver_<MAJ>-<MIN> . (minus excluded files) |
|
k. cvs tag -d Ver_DRMSLATEST . |
|
l. cvs tag -c Ver_DRMSLATEST . (minus excluded files) |
|
|
|
8. Now you must build all 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 do "cvs checkout -r Ver_<MAJ>-<MIN> |
|
JSOC" and build on all machines supported. |
|
|
|
9. Once again, edit $JSOCROOT/base/jsoc_version.h. The |
|
version macros should be of the form: |
| |
#define jsoc_version "V3R5X" | #define jsoc_version "V3R5X" |
#define jsoc_vers_num (-305) | #define jsoc_vers_num (-305) |
| |
The "X" and "-" denote that binaries were created from non-release code. | The "X" and "-" denote that binaries were created from non-release code. |
8. From the machine used in step 7, commit $JSOCROOT/base/libdrms/jsoc_version.h. You might have to run "cvs update -A base/libdrms/jsoc_version.h" to clear the stick flag created when you first sync'd in step 2 (if you used the "-r" flag). |
|
9. Ensure that the tag was successfully created and create actual release binaries (not just the binaries in your sandbox). Login as the production user, checkout the tagged files (cvs checkout -r Ver_<MAJ>-<MIN> JSOC) and build on all machines supported. |
10. From the machine used in step 9, commit |
10. Update the "working release". The source for these binaries lives in /home/jsoc/cvs/JSOC. cd to /home/jsoc/cvs, and do "cvs checkout -r Ver_<MAJ>-<MIN> JSOC" and build on all machines supported. |
$JSOCROOT/base/jsoc_version.h. You might have to run "cvs |
|
update -A base/jsoc_version.h" to clear the sticky flag created |
|
when you first sync'd in step 2 (if you used the "-r" flag). |
|
|
11. Send instructions for using the new release to users. | 11. Send instructions for using the new release to users. |
| |
================================================================================ | ================================================================================ |
Line 58 the working release get updated. WARNIN |
|
Line 104 the working release get updated. WARNIN |
|
since by the time you see them, another user may have edited them. Only the production | 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. | release is guaranteed to be stable and unchanged between releases. |
| |
Updating to this release |
Obtaining the Release |
----------------------- |
--------------------- |
Once you have a sandbox, you may want to update it to this release so that you |
To update your working directory to this release, or to check-out this release anew, |
get new functionality that is stable (the binaries build and run properly). |
please visit http://jsoc.stanford.edu/jsocwiki/CvsInit. Please keep in mind that |
The general way of doing this is to run "cvs update -APd -r Ver_3-8" from $JSOCROOT. |
users may have modified files since the release was created, so use of the |
The "-r" flag tells cvs to ensure that all your local files have the versions that |
scripts documented in the web page may result in a working directory whose |
compose the 3.8 Release. You would then need to run "make" from $JSOCROOT to |
content is not identical to the release. If updating, you can supply |
build the binaries. Alternatively, there is a script, $JSOCROOT/jsoc_update.csh |
the flag "-R" to the jsoc_update.csh and jsoc_sync.csh scripts to download the |
that can be used to both update to the latest release and to build JSOC on all |
latest release. This will ensure that your working directory has the exact, latest |
supported machines. To do this, run $JSOCROOT/jsoc_update.csh -R. The "-R" flag |
release versions of the files (eg., jsoc_sync.csh -R). If checking-out, |
tells cvs to update to the latest release before building on the supported |
you can supply the argument "-r Ver_LATEST" to the "cvs checkout" command |
machine types. This script generates log files for each machine type: |
to achieve the analogous result, but for a fresh checkout. WARNING: if you use |
$JSOCROOT/make_jsoc_linux_X86_64.log and $JSOCROOT/make_jsoc_linux_ia32.log. |
the "-R" or "-r" flags, please use only jsoc_update.csh or jsoc_sync.csh to update |
You should examine these logs to look for errors. Before updating to the release |
your sources thereafter. Use of "-R" or "-r Ver_LATEST" will result in a cvs |
with either of these alternatives, ensure that somewhere in your setup |
"sticky flag" being set. jsoc_update.csh and jsoc_sync.csh clear this sticky flag. |
"source $HOME/.setJSOCenv" exists. |
|
|
|
If You Don't Have a Sandbox |
|
--------------------------- |
|
You need a cvs "sandbox" to contain your view of a JSOC release: |
|
(There is no need to do this unless you're going to be a jsoc developer.) |
|
|
|
Set the env variables: |
|
CVSROOT=:ext:sunroom.stanford.edu:/home/cvsuser/cvsroot |
|
CVS_RSH=ssh |
|
|
|
Make a cvs dir and do: |
|
> cd /home/you/cvs |
|
> cvs checkout JSOC |
|
|
|
This will copy the LATEST version of all cvs depot files to /home/you/cvs/JSOC. |
|
These are not guaranteed to be stable. This is something you may want to do if |
|
you are a developer, perhaps you are fixing a broken build. If instead you want |
|
this stable release, then substitute "cvs checkout -r Ver_3-8 JSOC" for the above |
|
"cvs checkout JSOC" command. |
|
|
|
You would then make changes to the checked-out files, and commit them back to the |
|
depot with the "cvs commit files..." command. Only after running this command |
|
can users "see" your changes. To "see" your changes, a user would need to update |
|
their sandbox with the latest changes to the depot ("cd $JSOCROOT; cvs update -APd" ) |
|
| |
Additional Info | Additional Info |
--------------- | --------------- |