source: create_distribution.py @ 7885

Last change on this file since 7885 was 7610, checked in by nariman, 14 years ago

mingw version update

File size: 9.6 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
[7489]25import os
[3892]26from tempfile import mktemp
[4531]27from sys import platform, stdout
[3937]28from anuga.utilities.system_tools import get_user_name, get_host_name
[4170]29from anuga.abstract_2d_finite_volumes.util import get_revision_number
30from anuga.abstract_2d_finite_volumes.util import store_version_info
[5016]31from anuga.config import major_revision
[3892]32
[5068]33from dirs_to_distribute import dirmap
[5018]34from anuga.utilities.data_audit_wrapper import IP_verified
[3892]35
[7506]36
[3892]37if platform == 'win32':
38    msg = 'This script is not written for Windows.'+\
39          'Please run it on a Unix platform'
40    raise Exception, msg
41
42
[4531]43# line separator
44lsep = '----------------------------------------------------------------------'
[3892]45
[4168]46
[4531]47# Get svn revision number and create
[4168]48# file with version info for release.
[4170]49# This will mean that the version currently checked out is
[4168]50# the one which will be released.
51
[4170]52svn_revision = get_revision_number()
[3922]53revision = '%s_%s' %(major_revision, svn_revision)
[3934]54print 'Creating ANUGA revision %s' %revision
55
[7489]56anuga_release_name = 'anuga-%s' % revision
57distro_filename = '%s.tgz' % anuga_release_name
[3892]58
[4837]59#-----------------------------------
60# Create directory for this release.
61# It will be named like
62#        anuga_release_1.0beta_4824
63#-----------------------------------
[5540]64release_area = '~/anuga_releases'
[7489]65s = 'mkdir %s' % release_area
[5540]66try:
67    print s   
68    system(s)
69except:
70    pass
71
72
[7489]73   
74release_dir = release_area + '/%s' % anuga_release_name
75s = 'mkdir %s' % release_dir
[3902]76try:
[4170]77    print s   
[3902]78    system(s)
79except:
80    pass
81
[4837]82#-----------------------------------------------------
83# Create temporary area for svn to export source files
84#-----------------------------------------------------
[3892]85distro_dir = mktemp()
[7489]86s = 'mkdir %s' % distro_dir
[4170]87print s   
[3892]88system(s)
89
90
[5068]91#---------------------------------------------------
92# Get the ANUGA directories flagged for distribution
93#---------------------------------------------------
94
95for source in dirmap:
96   
97    destination = join(distro_dir, dirmap[source])
[7489]98   
99    s = 'svn export -r %d --quiet %s %s' % (svn_revision,
100                                            source,
101                                            destination)
[5068]102
103    print s
104    system(s)
105
106
107
[3902]108
[5016]109# Store file with revision info for use with get_revision_number
110store_version_info(destination_path=distro_dir+'/anuga', verbose=True)
[4865]111
112
[5016]113#---------------------------
114# IP Data Audit
115#---------------------------
116print 'Verifying data IP'
[5028]117if not IP_verified(distro_dir, verbose=True):
[5016]118    msg = 'Files have not been verified for IP.\n'
119    msg += 'Each data file must have a license file with it.'
[6124]120    raise Exception, msg
[5016]121
122
[7607]123   
124
125#----------------------------------------------
126# Compile and bundle up the LaTeX documentation
127#----------------------------------------------
128print
129print lsep
130print 'Preparing User Manual (see update_anuga_user_manual.log)'
131print lsep
132s = 'cd anuga_core/documentation/user_manual;'
133s += 'python update_anuga_user_manual.py --no_html'
134print s
135system(s + ' 1>update_anuga_user_manual.log 2>/dev/null')
136
137# Copy to distro_dir to become part of one tarball
138release_name = 'anuga_user_manual-%s.pdf' % revision
139s = '/bin/mv anuga_core/documentation/user_manual/anuga_user_manual.pdf %s/%s'\
140    %(distro_dir, release_name)
141print s
142system(s)
143
144release_name = 'anuga_installation_guide-%s.pdf' % revision
145s = '/bin/mv anuga_core/documentation/user_manual/anuga_installation_guide.pdf %s/%s' %(distro_dir, release_name)   
146print s
147system(s)
148
149release_name = 'anuga_whats_new-%s.pdf' % revision
150s = '/bin/mv anuga_core/documentation/user_manual/anuga_whats_new.pdf %s/%s' %(distro_dir, release_name)   
151print s
152system(s)
153   
154   
155   
156   
157   
158   
159   
[4802]160#------------------
161# Zip everything up
[4837]162#------------------
[7489]163s = 'cd %s;tar cvfz %s *' % (distro_dir, distro_filename)
[3987]164print s
165system(s)
166
[4837]167#----------------------------
[3987]168# Move distro to release area
[4837]169#----------------------------
[7489]170s = '/bin/mv %s/*.tgz %s' % (distro_dir, release_dir) 
[3987]171print s
172system(s)
173
[4837]174#---------
[3987]175# Clean up
[4837]176#---------
[7489]177s = '/bin/rm -rf %s/*' % (distro_dir) 
[3987]178print s
179system(s)
180
181
[7489]182#----------------------------------------------
183# Generate Windows installer
184#----------------------------------------------
[3892]185
[7489]186root = os.getcwd()
187from installation_files.windows.installer import create_config
[3902]188
[7489]189os.chdir('installation_files/windows')
[4531]190
[7489]191# Create ANUGA dir for NSI installer
192try:
[7506]193    os.mkdir('files/%s' % anuga_release_name)
194    os.mkdir('files/anuga_viewer')
195    os.mkdir('files/prereqs')
196    os.mkdir('files/prereqs/netcdf')
[7489]197except:
198    pass
[4531]199
[7489]200# and unpack ANUGA into it
201s = 'cd files/%s; tar xvfz %s/%s' % (anuga_release_name,
202                                     release_dir, 
203                                     distro_filename)
204print s
205system(s)
206
207# Must be replaced by local folder to where SourceForge version is downloaded
[7506]208anuga_viewer_folder = 'anuga_viewer'
[7489]209python = 'python-2.5.4.msi'
[7506]210numpy = 'numpy-1.3.0-win32-superpack-python2.5.exe'
211scientific_python = 'ScientificPython-2.9.0.win32-py2.5.exe'
[7513]212matplotlib = 'matplotlib-0.99.0.win32-py2.5.exe'
[7506]213netcdf_folder = 'netcdf'
[7610]214mingw = 'MinGW-5.1.6.exe'
[7489]215
216# Generate NSI file
217create_config(revision,
218              anuga_release_name,
219              anuga_viewer_folder,
220              python,
221              numpy,
222              scientific_python,
[7513]223              matplotlib,
[7489]224              netcdf_folder,
225              mingw)
226
227# Package up files necessary to compile the installer on Windows and
228# move to release area
229
230try:
231    # Cleanup in case there was something left from a previous attempt
232    s = 'cd %s; /bin/rm -rf windows_installer' % release_dir
233    print s
234    system(s)
235except:
236    pass   
237   
238# Create subdirectories for windows installer
239s = 'cd %s; mkdir windows_installer; mkdir windows_installer/files'\
240    % release_dir
241print s
242system(s)
243
244
245# Copy installion scrips and imagery across
246s = 'cp *.bmp *.nsh *.nsi *.ico %s/windows_installer' % release_dir
247print s
248system(s)
249
250# Copy actual files used by Windows installer across
[7506]251s = 'cd files; cp -r * %s/windows_installer/files' % release_dir
[7489]252print s
253system(s)                                                       
254
255# Come back to starting directory
256os.chdir(root)
257                                                     
258# Grab license file from anuga_core and copy to installer
259s = 'cp anuga_core/source/anuga/LICENSE.txt %s/windows_installer/files'\
260    % release_dir                                                       
261print s
262os.system(s)
263
264print 'NSI installer created'
265
266
[3922]267
[4837]268#----------------------------
269# Print list of release files
270#----------------------------
[3892]271print 'Done'
272print
273print
[4531]274print lsep
[3892]275print 'The release files are in %s:' %release_dir
276system('ls -la %s' %release_dir)
[4531]277print lsep
278print
279print
[3934]280
[4837]281
282#-------------------------------------
283# Copy release to various destinations
284#-------------------------------------
[7489]285# FIXME (Ole): I don't think this is the way any more
286# due to changes at SourceForge.
287
[4531]288answer = raw_input('Do you want to upload this to sourceforge? Y/N [Y]')
289if answer.lower() != 'n':
290   
291    print 'Uploading to sourceforge'
[3934]292
[4531]293    import os, os.path
294    release_dir = os.path.expanduser(release_dir)
295    os.chdir(release_dir)
296    print 'Reading from', os.getcwd()
297
298
[5748]299    s = 'rsync -avP -e ssh *.* uniomni@frs.sourceforge.net:uploads/'
[5746]300    print s
301    os.system(s)
[4531]302
[5746]303   
[4531]304
[5746]305    #from ftplib import FTP
306    #ftp = FTP('upload.sourceforge.net')
307    #print ftp.login() # Anonymous
308    #print ftp.cwd('incoming')
309    #
310    #for filename in os.listdir('.'):
311    #    print 'Uploading %s... ' %filename,
312    #    stdout.flush()
313    #
314    #    fid=open(filename, 'rb')
315    #    print ftp.storbinary('STOR %s' %filename, fid)
316    #    fid.close()
317    #
318    #print 'FTP done'
319    #print ftp.quit()
[4531]320
321    print
322    print lsep
323    print '    ********************* NOTE *************************'
324    print lsep
325    print 'To complete this release you must log into'
326    print 'http://sourceforge.net/projects/anuga as ANUGA admin'
327    print 'and complete the process by selecting File Releases '
328    print 'in the admin menu there.'
329    print lsep
330    print
331    print
332   
333
334
[6426]335# Copy to the ANU
336#s = 'rsync -avz %s/* ole@datamining.anu.edu.au:public_html/software/anuga/%s' %(release_dir, 'anuga_%s' %revision)
337s = 'scp -r %s ole@datamining.anu.edu.au:public_html/software/anuga' %(release_dir)       
338print s
339system(s)
340   
341   
[3934]342#----------------------------
343# Throw away code to drop all files into the RAMP download area
[4532]344# This is hardwired for Ole but shows how such a thing can be done
345# automatically.
[3934]346
[6426]347
[3937]348if get_user_name() == 'ole' and get_host_name() == 'nautilus':
[3934]349
[4802]350
[6426]351    answer = raw_input('Do you want to move this to the GA NAS? Y/N [Y]')
[4802]352    if answer.lower() == 'n':
353        import sys; sys.exit()
354
355       
356
[4531]357    print 'Attempt to rsync data to perlite and datamining'
[5746]358    # Copy to Georisk
[7406]359    s = 'rsync -avz %s/* onielsen@cyclone:georisk/downloads/ANUGA_install/%s' %(release_dir, 'anuga_%s' % revision)
[3937]360    print s
361    system(s)
362   
[3990]363    #system('scp %s/*.pdf onielsen@cyclone:/d/cit/1/cit/risk_assessment_methods_project/downloads/ANUGA_install' %release_dir)#
364   
[6426]365print 'Remember to update' 
366print '    anuga_whats_new.tex'
367print '    sourceforge'
[5540]368   
Note: See TracBrowser for help on using the repository browser.