-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathRelease_instructions
467 lines (345 loc) · 17.2 KB
/
Release_instructions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
********************** Warning **********************************
This is no longer being maintained. The contents are now in the
Release Instructions section of the Manual. At least the
catalog maintenance section and the manual preparation section are
out of date.
*******************************************************************
Instructions for making a release of SCHED
================== Before a release: ===========================
Get the latest versions of the Vex and plot code from
JIVE and Franco. Note I have not had contact with Franco
for a long time (as of Feb. 2012).
Make sure VERSION and VERNUM in versched.f are up to date.
Make sure the version on the manual first page is current.
Make sure sched_work is synced with the svn repository. This
should include the results of updating the manual
Make sure that the leap seconds in $SCHED/src/Sla/dat.f and
in $PLANET_DATA/naif0007.tls (or equivalent like naif0010.tls)
are up to date. If there is a change here, update the slalib.a
in my other programming areas.
================== Set environment variables ====================
Set the NEWVER in the window where this work is being done so
that script segments below can be used with a cut-and-paste
Also check a couple of places below (other machines) where the
version number is also needed.
setenv NEWVER 10.1
setenv TARDIR /users/cwalker/files/sched_ARCHIVE_nonSVN/TARFILES
================== Compile ======================================
Go to the base directory for the release.
Compile and link SCHED for each target architecture.
Run "source ./Verify" in the examples directory after each compile
to make sure it works. The compilations are without satellite
tracking unless otherwise noted. Doing multiple compilations has
been useful for finding bugs that don't affect all types of machine.
Architectures are (with local usable machines):
LINUX64GFORTRAN 64 bit Intel linux compiled with gfortran (noatak).
Need to reset PGPLOT_DIR and PGPLOT_FONT
LINUX64SPICE 64 bit Intel linux compiled with g77 with
satellite tracking (noatak).
LINUX64 64 bit Intel linux without spice
OSX_INTEL Intel Mac compiled with gfortran (stikine or lodore).
SUN Sun Solaris compiled with f77 (shire).
Note some Sun's have too little memory for the default
parameter settings.
The following architectures used to be supported, but have been
retired:
LINUX 32 bit Intel linux machine compiled with g77 (dave).
SCHED no longer used on such machines at the AOC
LINUX64 64 bit Intel linux machine compiled with g77 without
satellite tracking. (noatak)
OSXPPC PowerPC Mac. (horton. No longer supported and I no longer
have the machine.)
To compile on a given machine, login to that machine.
1. Make sure $SCHED is set properly. You can use the normal
development directory. Just be sure to revert to the
default compilation when finished.
2. Use the appropriate configure file to make a makefile (
(eg configureLinuxSpice64). Someday, get a proper
configure script.
3. Clean out previous efforts, then compile and link using make.
4. Copy the binary to the right subdirectory in bin.
5. Test the examples. (more under examples below)
cd $SCHED/src
configureLinuxSpice64
make clean (gmake clean on the Sun)
make (gmake on the Sun)
cp ../bin/sched ../bin/LINUX64SPICE/
cd ../examples
source ./Verify
less testruns.out
In the final step, look for unexpected differences. Run times
will be different, and often there will be last-digit differences
due to different rounding schemes.
================= Setup files and catalogs ======================
! (jhj 2/6/20) The makesetup feature seems to be no longer in use and
! thus setups (.set files) are simply put into the setups directory.
!
! Update the setup files from the master:
!
! cd $SCHED/setups
! makesetup
!
! Update the stations, freq, and messages files for which
! the masters are in subdirectories.
cd $SCHED/catalogs
Update
** Update the source and locations catalogs from a geodetic solution.
there are tools for doing this in the RELATED_CODE directory
(NEWLOC and NEWSRC). The detritus from updates, including all
the input catalogs are in subdirectories in:
/home/noatak/cwalker/code/Calibration/GetCatalogs.
Careful, with the need to update VLA pad positions, this is a bit
of a minefield.
Update the versions in these catalogs.
================= Examples ======================================
Update the examples, run Verify, and clean up the area.
Check that testruns.out shows a clean comparison after Verify.
Do this for all architectures. Occasionally a problem only shows
up on one. Use "source ./Verify" to pass the redefined $SCHED if
this is not the trunk version (sched_work).
cd $SCHED/examples
source ./Verify
Newstd
schclean "*"
Can check some crd files with cksched on a Sun.
Can check some vex files on a 64 bit Linux machine with
/home/swc/software/VLBADIFX-TRUNK/bin/vexpeek
================= Document the release ===========================
Write a release note. This will be mainly a link to the manual
update section.
Check the README and README.ftp files in $SCHED.
================= Manual =========================================
The examples in the manual are grabbed from ../examples starting
from where latex is being run. So this should be done in
$SCHED/doc, the normal place in a distribution. The inserttex
scheme used in the past has been replace with verbatiminput.
Process the manual. latex will probably need to be run up to
3 times to get all the links right.
The local icons switch keeps users from having to go to
NRAO for the up etc buttons.
The -link option controls how deep the automatic contents pages
go at each level. Without it, the contents on the top level
page are long enough to frighten off users.
The -long_titles 5 causes the node names to be based on the section
headings. This makes for referable names that won't keep changing.
cd $SCHED/doc
latex sched.tex (may need several repeats to get internal links right)
!
! --> latex2html appears to be obsolete. Use htlatex instead. (jhj 2/10/20)
! --> See also README_latex2html in the doc directory.
!
! latex2html -local_icons -link 2 -long_titles 5 sched.tex
!
! Put copies of the examples and catalogs in appropriate subdirectories
! in the directory with the html files to allow simple links.
! Don't worry about setups here for now.
! Give user write privileges to make other maintenance easier.
/bin/rm -r sched/catalogs/*
/bin/rm -r sched/examples/*
tar cf - ../catalogs/sources.vlba* ../catalogs/sources.petrov \
../catalogs/sources.rfc* ../catalogs/sources.gfsc* \
../catalogs/freq.dat ../catalogs/freq_RDBE.dat \
../catalogs/stations.dat ../catalogs/stations_RDBE.dat \
../catalogs/locations.dat ../catalogs/peak.cmd \
../catalogs/linefreqs.dat \
../examples/*.key ../examples/*.com \
../examples/*.set ../examples/egcentsrc.dat \
| (cd sched; tar xfp -)
chmod u+w sched/catalogs/*
================= Test plotting =================================
Test the plot functions on egplan.key. Verify does not make plots.
Do this at some point on a different machine (like a Sun).
For 2002Jul02, there was a bug in plotxy and plotuv that
only showed up on a Sun.
================= Make the release version =======================
Make a directory for the new version.
setenv SCHEDNEW ~/files/sched_$NEWVER
mkdir $SCHEDNEW
cd $SCHEDNEW
Check out the current SCHED. It lands in a subdirectory, so move
it up, including the .svn files. Don't be alarmed about messages
indicating sched/. and sched/.. can't be moved.
svn checkout https://svn.aoc.nrao.edu/repos/sched/trunk/sched
mv sched/* .
mv sched/.* .
# Copy over the examples/Stdout files, the execute modules, the setup
# files, the html manual, and PGPLOT installation stuff, none of which
# are under svn (they are fast changing, bulky, and can be derived from
# files that are in svn).
# The --delete deletes files on the receiving side that are not on the
# sending side and is useful when updating, say, a beta release that
# is not being done from scratch.
rsync -auv --delete --exclude ".svn" $SCHED/bin $SCHEDNEW
rsync -auv --delete --exclude ".svn" $SCHED/examples/Stdout $SCHEDNEW/examples
rsync -auv --delete --exclude ".svn" --exclude "AAA_OLD" $SCHED/setups $SCHEDNEW
rsync -auv --delete --exclude ".svn" $SCHED/doc/sched $SCHEDNEW/doc
rsync -auv --delete --exclude ".svn" --exclude "*.o" $SCHED/PGPLOT $SCHEDNEW
# Optional - and not when the above rsyncs were run:
# For a machine with an svn version (not the tar version), you may wish
# to update the manual to have a local version. This is the case for
# my laptop lodore where I have not gotten latex2html working yet.
# type on the target machine:
cd $SCHED/doc/sched
rsync -auv --delete --exclude ".svn" \
-e "ssh -A [email protected] ssh" \
noatak.aoc.nrao.edu:/users/cwalker/files/sched_work/doc/sched/\* .
Test the completeness using an rsync dry run. The release directory
was filled with an svn checkout and some limited rsyncs, so it could
have missed something. Also if some iteration happened, it might not
be complete. Note that lines that end with a / are just an indication
of having entered the directory. They don't indicate a missing file.
rsync -auvn --exclude ".svn" --exclude "TEST" --exclude "*.o" \
--exclude "*TEMP*" --exclude "*OLD*" --exclude "RELATED_CODE" \
--exclude "*~" --exclude "*old*" --exclude "*save*" \
--exclude "*new*" \
../sched_work/* .
================= Make the tar file =======================
# Make the tar file. Don't include the binaries.
# First be sure there are not old copies in the archive and ftp areas.
# Populate the ftp area.
# Also be sure to clean out the Verify output with schclean "*"
# Otherwise the file will twice as big as needed.
# Note the excludes include the lib directory which has the NAIF software.
# Without that, the satellite version cannot be linked. Without that,
# anyone wanting to do satellite tracking will need the AOC version or
# a special export.
# Also the RELATED_CODE directory is excluded as users shouldn't need it.
# But the PGPLOT directory is included because users may well want it.
cd $SCHED/examples
schclean "*"
cd $SCHED or maybe to $SCHEDNEW
tar --exclude "bin/*/sched" --exclude "bin/sched" \
--exclude ".svn" --exclude "*.o" --exclude "*~" \
--exclude "lib" --exclude "core*" --exclude "TEST" \
--exclude "RELATED_CODE" \
-cf $TARDIR/sched_$NEWVER.tar .
gzip $TARDIR/sched_$NEWVER.tar
To include the binaries:
tar --exclude "bin/sched" \
--exclude ".svn" --exclude "*.o" --exclude "*~" \
--exclude "lib" --exclude "core*" --exclude "TEST" \
--exclude "RELATED_CODE" \
-cf $TARDIR/sched_$NEWVER.tar .
gzip $TARDIR/sched_$NEWVER.tar
================= Test the release ==============================
This will not use the spice stuff so it will not be the internal release.
Clean out sched_temp first if needed.
Unpack the source distribution into /users/cwalker/sched_temp and
test the compilation without the satellite stuff
Use the makefile that does not use the spice package (run configureLinux)
Check testruns.out at the end.
This is best done in a sacrificial window so the changed environment
variables don't haunt you later.
setenv SCHTEST /users/cwalker/files/sched_temp
setenv SCHED $SCHTEST
cd $SCHTEST
chmod u+w $SCHTEST/catalogs/*
/bin/rm -r *
tar -xvf $TARDIR/sched_{$NEWVER}.tar.gz --gunzip
cd src
configureLinux64
make
cd ../examples
Verify
Maybe run the "Dry Run" rsync above to check for completeness.
Kill the window to dump the unwanted $SCHED etc. or at least:
setenv SCHED /users/cwalker/files/sched_work
================== Put files on the ftp site =======================
# Remove the sched executable in the bare bin area, leaving only those
# in the machine subdirectories.
mkdir $FTP/sched/sched_$NEWVER
mkdir $FTP/sched/sched_$NEWVER/binaries
cp $TARDIR/sched_$NEWVER.tar.gz $FTP/sched/sched_$NEWVER/
rsync -auv bin/* $FTP/sched/sched_$NEWVER/binaries
# Copy over README.ftp if it has changed.
================== Put the documentation on the web =============
Copy documentation to the web server master files on noatak.
May need to be from the branch if there is one.
My cron jobs will move them to the main web server or run
/users/cwalker/bin/backup_noatak afterwards.
What is $SCHED/doc/sched should be all that is needed.
Careful with the big delete (rm) below (that's why the cd ~ first)
The initial removal of the catalogs etc directories is because the
cp -r copied too much into those places.
Create the release area, then copy the html documentation without
the symlinks to the catalogs etc. Then copy the catalogs etc.
Some catalog files are write protected.
The chmod and /bin/rm steps are only needed if getting rid of an
old attempt.
setenv WEBDIR /home/noatak/cwalker/webnrao
cd ~
mkdir $WEBDIR/sched_$NEWVER
cp -R $SCHEDNEW/doc/sched/* $WEBDIR/sched_$NEWVER/
When actually doing the release, update the link from generic sched
to the version directory.
Warning - when doing a quick test, beware of a cached link. Hit reload.
cd $WEBDIR
/bin/rm sched
ln -s sched_{$NEWVER} sched
cd $SCHED
================== Announce the release ===========================
Send the email announcement to:
[email protected],scistaff,analysts,pperley,vlbaops.
Preliminary releases can go to:
[email protected],analysts,pperley,vlbaops
Also, at some point to
Tell the computer people (helpdesk) to place the update in the computer areas.
Include the following:
The new release is in /users/cwalker/files/sched_11.0
The executables (sched, schclean) are in machine specific
subdirectories under bin. They go in /usr/local/bin. For the
in-house linux64 versions, use the one with the SPICE libraries
(LINUX64SPICE). These support spacecraft tracking. I am no longer
trying to support LINUX32 or MACPPC.
The manual is in doc/sched/* and goes in
http://www.aoc.nrao.edu/software/sched/*
The catalogs and setups are in separate directories that go in
/usr/local/sched. Note that the subdirectories in catalogs
directory (Master_NRAO etc) should not be included.
# I think that is all. It's still too much.
================== If a tagged version is wanted ===================
There is demand for tagging the releases, so here are the instructions.
This basically marks a revision as the tag (release).
To do so from trunk ( There is a slight variation for a branch origen):
svn copy https://svn.aoc.nrao.edu/repos/sched/trunk \
https://svn.aoc.nrao.edu/repos/sched/tags/sched_$NEWVER \
-m "Tagging SCHED $NEWVER for maintenance"
To backfit a tag to other than the latest version:
svn copy -r 276 https://svn.aoc.nrao.edu/repos/sched/trunk/sched \
https://svn.aoc.nrao.edu/repos/sched/tags/sched_9.3 \
-m "Tagging release 9.3 of sched."
================== SVN branch and other SVN info ======================
OPTIONAL (I normally don't do this)
Under some circumstances, it might be useful to have a full copy of a
release that is maintained with svn. This involves making a branch
or tag (I think they are equivalent), and then checking it out to
a new directory. Then to be really useful, the items not maintained
in svn should be copied in. I tried this with my first post-svn
release in 2009, but found it too much work to maintain, so abandoned the
practice. But the instructions are here in case. They have been
edited since they were last tried, so watch for gotchas.
Make the branch - just a different directory than the tag.
svn copy https://svn.aoc.nrao.edu/repos/sched/trunk \
https://svn.aoc.nrao.edu/repos/sched/branch/SCHED-$NEWVER \
-m "Branching the 8.0 release of SCHED"
setenv SCHEDBASE ~/files/sched_branch$NEWVER
mkdir $SCHEDBASE
cd $SCHEDBASE
svn checkout https://svn.aoc.nrao.edu/repos/sched/branch/SCHED-$NEWVER/ .
# Don't drop the period at the end of the last command (= current directory)
# Copy over the examples/Stdout files, the execute modules, and the html.
# The exclusion of .svn files shouldn't be needed, but just in case...
cd $SCHEDNEW
rsync -auv --exclude ".svn" bin $SCHEDBASE
rsync -auv --exclude ".svn" examples/Stdout $SCHEDBASE/examples
rsync -auv --exclude ".svn" doc/sched $SCHEDBASE/doc
================ SVN HINTS: ================================
In order to ignore some files in svn status etc.
Note the "." on the end of the second one.
ignore.txt is needed for the second form.
cd examples
svn propset svn:ignore "*" Stdout
svn propset svn:ignore -F ignore.txt .
cd ../doc
svn propset svn:ignore "*" sched