1 |
Art's suggested release recipe: |
2 |
|
3 |
1. Notify users (jsoc_dev@sun.stanford.edu) that a new release will be |
4 |
built. Allow users time to submit changes they want in the new |
5 |
release. This includes changes made by the CM that have not been |
6 |
committed. |
7 |
|
8 |
2. Update $JSOCROOT/base/jsoc_version.h to the latest release version |
9 |
and build again (make clean, make universe). The version macros |
10 |
should be of the form: |
11 |
|
12 |
#define jsoc_version "V3R5" |
13 |
#define jsoc_vers_num (305) |
14 |
|
15 |
cvs commit $JSOCROOT/base/jsoc_version.h. |
16 |
|
17 |
3. Add a new file, JSOC/CM/V<MAJ>.<MIN>/release.notes. This has the |
18 |
release notes (see below). Commit. |
19 |
|
20 |
4. Create a tag for the new release. |
21 |
a. Create the full-JSOC-release tags |
22 |
i. /home/jsoc/dlsource.pl -o tag -f sdp -t Ver_<MAJ>-<MIN> |
23 |
ii. /home/jsoc/dlsource.pl -o untag -f sdp -t Ver_LATEST |
24 |
iii. /home/jsoc/dlsource.pl -o tag -f sdp -t Ver_LATEST |
25 |
b. Create the NetDRMS-release tags |
26 |
i. /home/jsoc/dlsource.pl -o tag -f net -t NetDRMS_Ver_<MAJ>-<MIN> |
27 |
ii. /home/jsoc/dlsource.pl -o untag -f net -t Ver_DRMSLATEST |
28 |
iii. /home/jsoc/dlsource.pl -o tag -f net -t Ver_DRMSLATEST |
29 |
|
30 |
5. Now you must build all production release executables with the release jsoc |
31 |
version numbers in place ("V3R5" and "305" in this example). Ensure |
32 |
that the tag was successfully created and create actual release |
33 |
binaries (not just the binaries in your sandbox). Login as the 'jsoc' |
34 |
user, cd to /home/jsoc/cvs, and run "/home/jsoc/dlsource.pl -o checkout |
35 |
-f sdp -r Ver_<MAJ>-<MIN>" and build on all machines supported. Do the same in |
36 |
/home/jsoc/cvs/Development/. |
37 |
|
38 |
6. Edit $JSOCROOT/base/jsoc_version.h, but not the version of this file |
39 |
in a production directory.The version macros should be of the form: |
40 |
|
41 |
#define jsoc_version "V3R5X" |
42 |
#define jsoc_vers_num (-305) |
43 |
|
44 |
The "X" and "-" denote that binaries were created from non-release code. |
45 |
|
46 |
commit $JSOCROOT/base/jsoc_version.h. |
47 |
|
48 |
7. Send instructions for using the new release to users. |
49 |
|
50 |
================================================================================ |
51 |
Example New Release Instructions |
52 |
|
53 |
|
54 |
Release Notes JSOC V3.8 12Sep2007 |
55 |
----------------------- --------- |
56 |
|
57 |
A release is a set of files, each having a specific version. And a release typcially |
58 |
has a version number because over time you have newer and newer releases of the |
59 |
same product. For example, a hypothetical 1.3 release may contain fileA#1.8, |
60 |
fileB#1.2, fileC#2.2 and a 1.4 release may contain fileA#2.5, fileB#2.1, fileC#2.9. |
61 |
JSOC releases are similarly versioned and contain a set of such files. JSOC release |
62 |
code is guaranteed to compile on cluster nodes (eg., n00, n02). The resulting binaries |
63 |
have been minimally tested. At the time of the creation of the release, the |
64 |
release versions of each file will be the most recent. But as time passes, newer versions |
65 |
of some files will be made, and there is no guarantee that these changes will |
66 |
not destabilize JSOC (ie., they may cause JSOC to no longer compile or execute |
67 |
properly). |
68 |
|
69 |
There are several ways to use this release. If you wish to simply use pre-built |
70 |
binaries, you can simply use the production binaries, which are located at |
71 |
/home/production/cvs/JSOC. Every time a release is created, the binaries in |
72 |
this location get updated. Only the production user can update these binaries. |
73 |
So, you could run /home/production/cvs/JSOC/bin/linux_x86_64/show_keys, for example. |
74 |
If instead you want to work with stable source files, then you must have a sandbox, |
75 |
which is a local copy (in your home directory) of the files in the cvs depot. |
76 |
You would probably want to work with a sandbox if you plan on making eventual |
77 |
changes to the depot files. Changes you make to your sandbox files are not visible |
78 |
to other users until you "commit" those changes back to the cvs depot. Please see |
79 |
"If You Don't Have a Sandbox" below for more information on how to create a sandbox. |
80 |
There is also a "working" release which resides in in /home/jsoc/cvs/JSOC. New |
81 |
files may be placed here and existing files may be edited for common use before the |
82 |
next official release. Each time a release gets created, the source and binaries of |
83 |
the working release get updated. WARNING: the files you see here may not be stable |
84 |
since by the time you see them, another user may have edited them. Only the production |
85 |
release is guaranteed to be stable and unchanged between releases. |
86 |
|
87 |
Obtaining the Release |
88 |
--------------------- |
89 |
To update your working directory to this release, or to check-out this release anew, |
90 |
please visit http://jsoc.stanford.edu/jsocwiki/CvsInit. Please keep in mind that |
91 |
users may have modified files since the release was created, so use of the |
92 |
scripts documented in the web page may result in a working directory whose |
93 |
content is not identical to the release. If updating, you can supply |
94 |
the flag "-R" to the jsoc_update.csh and jsoc_sync.csh scripts to download the |
95 |
latest release. This will ensure that your working directory has the exact, latest |
96 |
release versions of the files (eg., jsoc_sync.csh -R). If checking-out, |
97 |
you can supply the argument "-r Ver_LATEST" to the "cvs checkout" command |
98 |
to achieve the analogous result, but for a fresh checkout. WARNING: if you use |
99 |
the "-R" or "-r" flags, please use only jsoc_update.csh or jsoc_sync.csh to update |
100 |
your sources thereafter. Use of "-R" or "-r Ver_LATEST" will result in a cvs |
101 |
"sticky flag" being set. jsoc_update.csh and jsoc_sync.csh clear this sticky flag. |
102 |
|
103 |
Additional Info |
104 |
--------------- |
105 |
If you are unfamiliar with the use of cvs see the file: |
106 |
JSOC/CM/working_with_sandbox.txt. |
107 |
|
108 |
There's a linux4 cvs gui at xim:/usr/bin/lincvs |
109 |
Also on our jsoc web page: |
110 |
|
111 |
http://jsoc.stanford.edu/cvs/JSOC/ |
112 |
|
113 |
Use the Apache cvs gui to see the diffs. For example, go to |
114 |
http://jsoc.stanford.edu/cvs/JSOC/base/drms/ |
115 |
and click on the name in the File column and then click on |
116 |
"diffs to previous #" to see the diffs. |
117 |
|
118 |
End Example New Release Instructions |
119 |
================================================================================ |
120 |
|
121 |
--Art Amezcua 9/12/2007 |
122 |
|
123 |
|
124 |
|
125 |
|
126 |
/home/jim/cvs/JSOC/CM/release.howto |
127 |
|
128 |
Make sure the cvs/JSOC/base/jsoc_version.h is updated. |
129 |
|
130 |
A release is done from a sandbox. Get the production user sandbox to work: |
131 |
|
132 |
> cd /home/production/cvs/JSOC |
133 |
|
134 |
d00:/home/production/cvs/JSOC> $JSOCROOT/jsoc_update.csh |
135 |
|
136 |
Do a sanity check on the make log files: |
137 |
$JSOCROOT/make_jsoc_linux_X86_64.log |
138 |
#$JSOCROOT/make_jsoc_linux_ia64.log |
139 |
$JSOCROOT/make_jsoc_linux_ia32.log |
140 |
|
141 |
|
142 |
----------------------------------------------------------------------------- |
143 |
When all the makes are ok, tag all the most recent revisions in the repository: |
144 |
|
145 |
> cvs -d /home/cvsuser/cvsroot rtag -r HEAD Ver_1-0 JSOC |
146 |
|
147 |
To remove this tag do: |
148 |
|
149 |
> cvs -d /home/cvsuser/cvsroot rtag -d Ver_1-0 JSOC |
150 |
|
151 |
NOTE: Tell users about Phil's script cvs/JSOC/jsoc_update.csh to do |
152 |
their release update. |
153 |
|
154 |
|
155 |
|
156 |
***************OLD STUFF BELOW****************************************** |
157 |
----------------------------------------------------------------------------- |
158 |
|
159 |
Resync with the repository: |
160 |
|
161 |
> cvs update -APd >& cvsupdate.log |
162 |
|
163 |
Inspect cvsupdate.log for any "C " status. |
164 |
|
165 |
C file |
166 |
A conflict was detected while trying to merge your changes to file |
167 |
with changes from the source repository. file (the copy in your |
168 |
working directory) is now the result of attempting to merge the two |
169 |
revisions; an unmodified copy of your file is also in your working |
170 |
directory, with the name .#file.revision where revision is the revi- |
171 |
sion that your modified file started from. Resolve the conflict |
172 |
|
173 |
----------------------------------------------------------------------------- |
174 |
Check for any files that have not been commited (not Status: Up-to-date): |
175 |
|
176 |
> cvsstatus (NOTE: s/b an alias for $JSOCROOT/scripts/cvsstatus.pl) |
177 |
|
178 |
Determine if any modified files need to be committed or replaced with the |
179 |
repository version before proceeding. |
180 |
|
181 |
----------------------------------------------------------------------------- |
182 |
Get the all the makes to work: |
183 |
> ssh production@lws (and then again for d00 and n00(32bit)) |
184 |
> cd /home/production/cvs/JSOC |
185 |
####(OLD) > setenv ORACLE_HOME /u01/app/oracle/product/10.1.0/db_1 |
186 |
> ./configure -force (for n00: ./configure -force -client) |
187 |
(may have to do a make cleandep; make depend) |
188 |
(ignore modification time in future msgs) |
189 |
|
190 |
> make clean |
191 |
> make -j 4 >& make.log.lws (run 4 jobs in parallel for speed) |
192 |
|
193 |
############## ONLY HAD TO DO THIS THE FIRST TIME ############################ |
194 |
!!!!!!!!!!!!!!!!!Check that libsum, sumsapi, and sum dirs use gcc !!!!!!!!!!! |
195 |
!!!!!!!!!!! Don't have to do this if gcc is already in the Makefile !!!!!!!!! |
196 |
Now go to the dirs that need to have the gcc compile and edit Makefile: |
197 |
cd /home2/production/cvs/JSOC/base/ |
198 |
cd sums/libs/pg |
199 |
vi Makefile |
200 |
***ADD after the line: |
201 |
include ../../make.mk |
202 |
|
203 |
###Mod by JA after configure is run######################### |
204 |
CC = gcc |
205 |
CFLAGS = -std=gnu99 -g -Wall -O0 -Wno-comment -Wno-parentheses |
206 |
|
207 |
And then do |
208 |
>make clean |
209 |
>make |
210 |
And do the same for cd ../sumsapi/ and cd ../sum/ |
211 |
############## ONLY HAD TO DO THIS THE FIRST TIME ############################ |
212 |
|
213 |
|
214 |
|