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