source: create_distribution.py @ 5395

Last change on this file since 5395 was 5068, checked in by ole, 16 years ago

Refactored dirs to distribute into separate module and updated create and audit scripts.

File size: 7.8 KB
Line 
1"""Create a distribution of ANUGA from latest revision
2
3   This script is assumed to be run in the root directory of anuga
4   from a working sandpit connected to svn
5
6   It will create a distribution of ANUGA from the version which is
7   currently checked out.
8
9   To use the latest version run
10
11     svn up
12
13   before running this script. To use a specific revision (2187, say) run
14
15     svn up -r 2187
16
17   first assuming that create_distribution.py (this script) and anything
18   it depends on still work for that revision.
19
20   This script works only on Linux!
21"""
22
23from os import sep, system
24from os.path import join
25from tempfile import mktemp
26from sys import platform, stdout
27from anuga.utilities.system_tools import get_user_name, get_host_name
28from anuga.abstract_2d_finite_volumes.util import get_revision_number
29from anuga.abstract_2d_finite_volumes.util import store_version_info
30from anuga.config import major_revision
31
32from dirs_to_distribute import dirmap
33from anuga.utilities.data_audit_wrapper import IP_verified
34
35if platform == 'win32':
36    msg = 'This script is not written for Windows.'+\
37          'Please run it on a Unix platform'
38    raise Exception, msg
39
40
41# line separator
42lsep = '----------------------------------------------------------------------'
43
44
45# Get svn revision number and create
46# file with version info for release.
47# This will mean that the version currently checked out is
48# the one which will be released.
49
50svn_revision = get_revision_number()
51revision = '%s_%s' %(major_revision, svn_revision)
52print 'Creating ANUGA revision %s' %revision
53
54distro_filename = 'anuga-%s.tgz' %revision
55
56#-----------------------------------
57# Create directory for this release.
58# It will be named like
59#        anuga_release_1.0beta_4824
60#-----------------------------------
61release_dir = '~/anuga_release_%s' %revision
62s = 'mkdir %s' %release_dir
63try:
64    print s   
65    system(s)
66except:
67    pass
68
69#-----------------------------------------------------
70# Create temporary area for svn to export source files
71#-----------------------------------------------------
72distro_dir = mktemp()
73s = 'mkdir %s' %distro_dir
74print s   
75system(s)
76
77
78#---------------------------------------------------
79# Get the ANUGA directories flagged for distribution
80#---------------------------------------------------
81
82for source in dirmap:
83   
84    destination = join(distro_dir, dirmap[source])
85    s = 'svn export -r %d --quiet %s %s' %(svn_revision,
86                                           source,
87                                           destination)
88
89    print s
90    system(s)
91
92
93
94#-----------------------------
95# Get validation_files as well
96#-----------------------------
97#s = 'mkdir %s/anuga_validation' %distro_dir
98#system(s)
99#
100#s = 'svn export -r %d --quiet anuga_validation/okushiri_2005 %s/anuga_validation/okushiri'\
101#    %(svn_revision, distro_dir)
102#print s
103#system(s)
104
105#s = 'svn export -r %d --quiet anuga_validation/solitary_waves %s/anuga_validation/solitary_waves'\
106#    %(svn_revision, distro_dir)
107#print s
108#syst
109
110#s = 'svn export -r %d --quiet anuga_validation/automated_validation_tests %s/anuga_validation/automated_validation_tests'\
111#    %(svn_revision, distro_dir)
112#print s
113#system(s)
114
115# FIXME: Other validations in here as they appear!
116
117
118#---------------------------
119# Get demos from user manual
120#---------------------------
121#s = 'svn export -r %d --quiet anuga_core/documentation/user_manual/demos %s/anuga_demos'\
122#    %(svn_revision, distro_dir)
123#print s
124#system(s)
125
126
127
128# Store file with revision info for use with get_revision_number
129store_version_info(destination_path=distro_dir+'/anuga', verbose=True)
130
131
132#---------------------------
133# IP Data Audit
134#---------------------------
135print 'Verifying data IP'
136if not IP_verified(distro_dir, verbose=True):
137    msg = 'Files have not been verified for IP.\n'
138    msg += 'Each data file must have a license file with it.'
139    raise Exception, msg
140
141
142#------------------
143# Zip everything up
144#------------------
145s = 'cd %s;tar cvfz %s *' %(distro_dir, distro_filename)
146print s
147system(s)
148
149#----------------------------
150# Move distro to release area
151#----------------------------
152s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) 
153print s
154system(s)
155
156#---------
157# Clean up
158#---------
159s = '/bin/rm -rf %s/*' %(distro_dir) 
160print s
161system(s)
162
163
164#-----------------------------
165# Copy and rename anuga_viewer
166#-----------------------------
167s = '/bin/cp ./anuga_core/source/anuga_viewer/distros/anuga_viewer_1.0.tgz %s/anuga_viewer-%s.tgz' %(distro_dir, revision)
168print s
169system(s)
170
171#----------------------------
172# Move viewer to release area
173#----------------------------
174s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) 
175print s
176system(s)
177
178
179
180#----------------------------------------------
181# Compile and bundle up the LaTeX documentation
182#----------------------------------------------
183print
184print lsep
185print 'Preparing User Manual (see update_anuga_user_manual.log)'
186print lsep
187s = 'cd anuga_core/documentation/user_manual;'
188s += 'python update_anuga_user_manual.py --no_html'
189print s
190system(s + ' 1>update_anuga_user_manual.log 2>/dev/null')
191
192release_name = 'anuga_user_manual-%s.pdf' %revision
193s = '/bin/mv anuga_core/documentation/user_manual/anuga_user_manual.pdf %s/%s'\
194    %(release_dir, release_name)
195print s
196system(s)
197
198release_name = 'anuga_installation_guide-%s.pdf' %revision
199s = '/bin/mv anuga_core/documentation/user_manual/anuga_installation_guide.pdf %s/%s' %(release_dir, release_name)   
200   
201print s
202system(s)
203
204
205#----------------------------
206# Print list of release files
207#----------------------------
208print 'Done'
209print
210print
211print lsep
212print 'The release files are in %s:' %release_dir
213system('ls -la %s' %release_dir)
214print lsep
215print
216print
217
218
219#-------------------------------------
220# Copy release to various destinations
221#-------------------------------------
222answer = raw_input('Do you want to upload this to sourceforge? Y/N [Y]')
223if answer.lower() != 'n':
224   
225    print 'Uploading to sourceforge'
226
227    import os, os.path
228    release_dir = os.path.expanduser(release_dir)
229    os.chdir(release_dir)
230    print 'Reading from', os.getcwd()
231
232
233    from ftplib import FTP
234    ftp = FTP('upload.sourceforge.net')
235    print ftp.login() # Anonymous
236    print ftp.cwd('incoming')
237
238
239    for filename in os.listdir('.'):
240        print 'Uploading %s... ' %filename,
241        stdout.flush()
242
243        fid=open(filename, 'rb')
244        print ftp.storbinary('STOR %s' %filename, fid)
245        fid.close()
246
247    print 'FTP done'
248    print ftp.quit()
249
250    print
251    print lsep
252    print '    ********************* NOTE *************************'
253    print lsep
254    print 'To complete this release you must log into'
255    print 'http://sourceforge.net/projects/anuga as ANUGA admin'
256    print 'and complete the process by selecting File Releases '
257    print 'in the admin menu there.'
258    print lsep
259    print
260    print
261   
262
263
264#----------------------------
265# Throw away code to drop all files into the RAMP download area
266# This is hardwired for Ole but shows how such a thing can be done
267# automatically.
268
269if get_user_name() == 'ole' and get_host_name() == 'nautilus':
270
271
272    answer = raw_input('Do you want to move this to perlite and ANU? Y/N [Y]')
273    if answer.lower() == 'n':
274        import sys; sys.exit()
275
276       
277    #------------------------------
278    print 'Uploading to sourceforge'
279
280
281   
282
283    print 'Attempt to rsync data to perlite and datamining'
284    # Copy to NHIP
285    s = 'rsync -avz %s/* onielsen@cyclone:/d/cit/1/cit/natural_hazard_impacts/downloads/ANUGA_install/%s' %(release_dir, 'anuga_%s' %revision)
286    print s
287    system(s)
288   
289    #system('scp %s/*.pdf onielsen@cyclone:/d/cit/1/cit/risk_assessment_methods_project/downloads/ANUGA_install' %release_dir)#
290
291
292    # Copy to the ANU
293    #s = 'rsync -avz %s/* ole@datamining.anu.edu.au:public_html/software/anuga/%s' %(release_dir, 'anuga_%s' %revision)
294    #print s
295    #system(s)
296   
297   
Note: See TracBrowser for help on using the repository browser.