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