"""Create a distribution of ANUGA from latest revision This script is assumed to be run in the root directory of anuga from a working sandpit connected to svn It will create a distribution of ANUGA from the version which is currently checked out. To use the latest version run svn up before running this script. To use a specific revision (2187, say) run svn up -r 2187 first assuming that create_distribution.py (this script) and anything it depends on still work for that revision. This script works only on Linux """ from os import sep, system, remove from tempfile import mktemp from sys import platform, stdout from anuga.utilities.system_tools import get_user_name, get_host_name from anuga.abstract_2d_finite_volumes.util import get_revision_number from anuga.abstract_2d_finite_volumes.util import store_version_info from anuga.anuga_config import major_revision if platform == 'win32': msg = 'This script is not written for Windows.'+\ 'Please run it on a Unix platform' raise Exception, msg # Define main version manually # major_revision = '1.0beta' # line separator lsep = '----------------------------------------------------------------------' # Get svn revision number and create # file with version info for release. # This will mean that the version currently checked out is # the one which will be released. svn_revision = get_revision_number() revision = '%s_%s' %(major_revision, svn_revision) print 'Creating ANUGA revision %s' %revision distro_filename = 'anuga-%s.tgz' %revision # Create area directory release_dir = '~/anuga_release_%s' %revision s = 'mkdir %s' %release_dir try: print s system(s) except: pass # Export a clean directory tree from the working copy to a temporary dir distro_dir = mktemp() s = 'mkdir %s' %distro_dir print s system(s) s = 'svn export -r %d anuga_core/source/anuga %s/anuga' %(svn_revision, distro_dir) print s system(s) # Store file with revision info for use with get_revision_number store_version_info(destination_path=distro_dir+'/anuga', verbose=True) # Zip it up s = 'cd %s;tar cvfz %s *' %(distro_dir, distro_filename) print s system(s) # Move distro to release area s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) print s system(s) # Clean up s = '/bin/rm -rf %s/anuga' %(distro_dir) print s system(s) #----------------------------- # Get validation_files as well s = 'mkdir %s/anuga_validation' %distro_dir system(s) s = 'svn export anuga_validation/okushiri_2005 %s/anuga_validation/okushiri'\ %(distro_dir) print s system(s) s = 'svn export anuga_validation/solitary_waves %s/anuga_validation/solitary_waves'\ %(distro_dir) print s system(s) # Other validations in here!!! # Zip it up s = 'cd %s;tar cvfz anuga_validation-%s.tgz *'\ %(distro_dir, revision) print s system(s) # Move distro to release area s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) print s system(s) # Clean up s = '/bin/rm -rf %s/anuga_validation' %(distro_dir) print s system(s) #----------------------------- # Get demos from user manual #s = 'mkdir %s/anuga_demos' %distro_dir #system(s) s = 'svn export anuga_core/documentation/user_manual/demos %s/anuga_demos'\ %(distro_dir) print s system(s) # Zip it up s = 'cd %s;tar cvfz anuga_demos-%s.tgz *'\ %(distro_dir, revision) print s system(s) # Move distro to release area s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) print s system(s) # Clean up s = '/bin/rm -rf %s/anuga_demos' %(distro_dir) print s system(s) #----------------------------- # Copy and rename anuga_viewer s = '/bin/cp ./anuga_core/source/anuga_viewer/distros/anuga_viewer_1.0.tgz %s/anuga_viewer-%s.tgz' %(distro_dir, revision) print s system(s) # Move viewer to release area s = '/bin/mv %s/*.tgz %s' %(distro_dir, release_dir) print s system(s) #----------------------------- # Hey, why not compile and bundle up the LaTeX documentation as well print print lsep print 'Preparing User Manual (see update_anuga_user_manual.log)' print lsep s = 'cd anuga_core/documentation/user_manual;' s += 'python update_anuga_user_manual.py --no_html' print s system(s + ' 1>update_anuga_user_manual.log 2>/dev/null') release_name = 'anuga_user_manual-%s.pdf' %revision s = '/bin/mv anuga_core/documentation/user_manual/anuga_user_manual.pdf %s/%s'\ %(release_dir, release_name) print s system(s) release_name = 'anuga_installation_guide-%s.pdf' %revision s = '/bin/mv anuga_core/documentation/user_manual/anuga_installation_guide.pdf %s/%s' %(release_dir, release_name) print s system(s) #----------------------------- print 'Done' print print print lsep print 'The release files are in %s:' %release_dir system('ls -la %s' %release_dir) print lsep print print answer = raw_input('Do you want to upload this to sourceforge? Y/N [Y]') if answer.lower() != 'n': #------------------------------ print 'Uploading to sourceforge' import os, os.path release_dir = os.path.expanduser(release_dir) os.chdir(release_dir) print 'Reading from', os.getcwd() from ftplib import FTP ftp = FTP('upload.sourceforge.net') print ftp.login() # Anonymous print ftp.cwd('incoming') for filename in os.listdir('.'): print 'Uploading %s... ' %filename, stdout.flush() fid=open(filename, 'rb') print ftp.storbinary('STOR %s' %filename, fid) fid.close() print 'FTP done' print ftp.quit() print print lsep print ' ********************* NOTE *************************' print lsep print 'To complete this release you must log into' print 'http://sourceforge.net/projects/anuga as ANUGA admin' print 'and complete the process by selecting File Releases ' print 'in the admin menu there.' print lsep print print import sys; sys.exit() #---------------------------- # Throw away code to drop all files into the RAMP download area # This is hardwired for Ole but shows how such a thing can be done # automatically. if get_user_name() == 'ole' and get_host_name() == 'nautilus': print 'Attempt to rsync data to perlite and datamining' # Copy to RAMP s = 'rsync -avz %s/* onielsen@cyclone:/d/cit/1/cit/natural_hazard_impacts/downloads/ANUGA_install/%s' %(release_dir, 'anuga_%s' %revision) print s system(s) #system('scp %s/*.pdf onielsen@cyclone:/d/cit/1/cit/risk_assessment_methods_project/downloads/ANUGA_install' %release_dir)# # Copy to the ANU #s = 'rsync -avz %s/* ole@datamining.anu.edu.au:public_html/software/anuga/%s' %(release_dir, 'anuga_%s' %revision) #print s #system(s)