source: create_distribution.py @ 5449

Last change on this file since 5449 was 5438, checked in by ole, 16 years ago

rsync -> scp in regard to datamining.anu.edu.au

File size: 7.9 KB
RevLine 
[3892]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
[4170]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
[5018]20   This script works only on Linux!
[3892]21"""
22
[4931]23from os import sep, system
[5068]24from os.path import join
[3892]25from tempfile import mktemp
[4531]26from sys import platform, stdout
[3937]27from anuga.utilities.system_tools import get_user_name, get_host_name
[4170]28from anuga.abstract_2d_finite_volumes.util import get_revision_number
29from anuga.abstract_2d_finite_volumes.util import store_version_info
[5016]30from anuga.config import major_revision
[3892]31
[5068]32from dirs_to_distribute import dirmap
[5018]33from anuga.utilities.data_audit_wrapper import IP_verified
[3892]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
[4531]41# line separator
42lsep = '----------------------------------------------------------------------'
[3892]43
[4168]44
[4531]45# Get svn revision number and create
[4168]46# file with version info for release.
[4170]47# This will mean that the version currently checked out is
[4168]48# the one which will be released.
49
[4170]50svn_revision = get_revision_number()
[3922]51revision = '%s_%s' %(major_revision, svn_revision)
[3934]52print 'Creating ANUGA revision %s' %revision
53
[3892]54distro_filename = 'anuga-%s.tgz' %revision
55
[4837]56#-----------------------------------
57# Create directory for this release.
58# It will be named like
59#        anuga_release_1.0beta_4824
60#-----------------------------------
[3902]61release_dir = '~/anuga_release_%s' %revision
62s = 'mkdir %s' %release_dir
63try:
[4170]64    print s   
[3902]65    system(s)
66except:
67    pass
68
[4837]69#-----------------------------------------------------
70# Create temporary area for svn to export source files
71#-----------------------------------------------------
[3892]72distro_dir = mktemp()
73s = 'mkdir %s' %distro_dir
[4170]74print s   
[3892]75system(s)
76
77
[5068]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
[3902]94#-----------------------------
[3892]95# Get validation_files as well
[4837]96#-----------------------------
[5068]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)
[3902]104
[5064]105#s = 'svn export -r %d --quiet anuga_validation/solitary_waves %s/anuga_validation/solitary_waves'\
106#    %(svn_revision, distro_dir)
107#print s
[5068]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
[5064]113#system(s)
[4012]114
[4837]115# FIXME: Other validations in here as they appear!
[3902]116
[3892]117
[4837]118#---------------------------
[3987]119# Get demos from user manual
[4837]120#---------------------------
[5068]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)
[3987]125
[4865]126
[5068]127
[5016]128# Store file with revision info for use with get_revision_number
129store_version_info(destination_path=distro_dir+'/anuga', verbose=True)
[4865]130
131
[5016]132#---------------------------
133# IP Data Audit
134#---------------------------
135print 'Verifying data IP'
[5028]136if not IP_verified(distro_dir, verbose=True):
[5016]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
[4802]142#------------------
143# Zip everything up
[4837]144#------------------
[4802]145s = 'cd %s;tar cvfz %s *' %(distro_dir, distro_filename)
[3987]146print s
147system(s)
148
[4837]149#----------------------------
[3987]150# Move distro to release area
[4837]151#----------------------------
[3987]152s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) 
153print s
154system(s)
155
[4837]156#---------
[3987]157# Clean up
[4837]158#---------
[4802]159s = '/bin/rm -rf %s/*' %(distro_dir) 
[3987]160print s
161system(s)
162
163
164#-----------------------------
[4531]165# Copy and rename anuga_viewer
[4837]166#-----------------------------
[4531]167s = '/bin/cp ./anuga_core/source/anuga_viewer/distros/anuga_viewer_1.0.tgz %s/anuga_viewer-%s.tgz' %(distro_dir, revision)
[3892]168print s
169system(s)
170
[4837]171#----------------------------
[4531]172# Move viewer to release area
[4837]173#----------------------------
[3892]174s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) 
175print s
176system(s)
[3902]177
[4531]178
179
[4837]180#----------------------------------------------
181# Compile and bundle up the LaTeX documentation
182#----------------------------------------------
[4531]183print
184print lsep
185print 'Preparing User Manual (see update_anuga_user_manual.log)'
186print lsep
[3922]187s = 'cd anuga_core/documentation/user_manual;'
188s += 'python update_anuga_user_manual.py --no_html'
189print s
[4531]190system(s + ' 1>update_anuga_user_manual.log 2>/dev/null')
[3922]191
[4122]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)
[3922]195print s
196system(s)
197
[4122]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   
[3922]201print s
202system(s)
203
204
[4837]205#----------------------------
206# Print list of release files
207#----------------------------
[3892]208print 'Done'
209print
210print
[4531]211print lsep
[3892]212print 'The release files are in %s:' %release_dir
213system('ls -la %s' %release_dir)
[4531]214print lsep
215print
216print
[3934]217
[4837]218
219#-------------------------------------
220# Copy release to various destinations
221#-------------------------------------
[4531]222answer = raw_input('Do you want to upload this to sourceforge? Y/N [Y]')
223if answer.lower() != 'n':
224   
225    print 'Uploading to sourceforge'
[3934]226
[4531]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
[3934]264#----------------------------
265# Throw away code to drop all files into the RAMP download area
[4532]266# This is hardwired for Ole but shows how such a thing can be done
267# automatically.
[3934]268
[3937]269if get_user_name() == 'ole' and get_host_name() == 'nautilus':
[3934]270
[4802]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
[4531]283    print 'Attempt to rsync data to perlite and datamining'
[4802]284    # Copy to NHIP
[4384]285    s = 'rsync -avz %s/* onielsen@cyclone:/d/cit/1/cit/natural_hazard_impacts/downloads/ANUGA_install/%s' %(release_dir, 'anuga_%s' %revision)
[3937]286    print s
287    system(s)
288   
[3990]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
[5438]293    #s = 'rsync -avz %s/* ole@datamining.anu.edu.au:public_html/software/anuga/%s' %(release_dir, 'anuga_%s' %revision)
294    s = 'scp -r %s ole@datamining.anu.edu.au:public_html/software/anuga' %(release_dir)       
[5423]295    print s
296    system(s)
[3990]297   
298   
Note: See TracBrowser for help on using the repository browser.