[420] | 1 | #!/usr/bin/env python
|
---|
| 2 | #--------------------------------#
|
---|
| 3 | # Author: V.garonne #
|
---|
| 4 | # Mail: garonne@lal.in2p3.fr #
|
---|
| 5 | # Description: script to create #
|
---|
| 6 | # automaticaly a release #
|
---|
| 7 | #--------------------------------#
|
---|
| 8 |
|
---|
| 9 | import pexpect
|
---|
| 10 | import sys, os
|
---|
| 11 | import string
|
---|
| 12 | import commands
|
---|
| 13 | import shutil
|
---|
| 14 | import socket
|
---|
| 15 | import tarfile, gzip
|
---|
| 16 |
|
---|
| 17 | # my own stuffs
|
---|
| 18 | from utils.ssh_session import *
|
---|
| 19 |
|
---|
| 20 | def cmt_finalize_release (root, version):
|
---|
| 21 | svnroot = root + '/HEAD'
|
---|
| 22 | path = 'tmp/CMT/'
|
---|
| 23 | preambule = 'build_release > '
|
---|
| 24 | hostname = socket.gethostname()
|
---|
| 25 | tarballs = list()
|
---|
| 26 | platforms = [
|
---|
| 27 | 'OSF1-alpha',
|
---|
| 28 | 'Linux-i686',
|
---|
| 29 | 'Linux-x86_64',
|
---|
| 30 | 'Linux-ia64',
|
---|
| 31 | 'SunOS-sun4u',
|
---|
| 32 | 'AIX-002064874C00',
|
---|
| 33 | 'VisualC',
|
---|
| 34 | 'CYGWIN_NT-5.1-i686',
|
---|
| 35 | 'Darwin-PowerMacintosh'
|
---|
| 36 | ]
|
---|
| 37 | here = os.getcwd()
|
---|
| 38 |
|
---|
| 39 | # do a new fresh temp directory
|
---|
| 40 | if os.path.exists('tmp'):
|
---|
| 41 | shutil.rmtree('tmp')
|
---|
| 42 | os.makedirs (path)
|
---|
| 43 | os.chdir (path)
|
---|
| 44 |
|
---|
| 45 | # first do a checkout of the HEAD
|
---|
| 46 | print preambule +'first do a svn co of the last version'
|
---|
| 47 | cmd = 'svn co '+ svnroot
|
---|
| 48 | print preambule + cmd
|
---|
| 49 | status, output = commands.getstatusoutput (cmd)
|
---|
| 50 | if status:
|
---|
| 51 | print output
|
---|
| 52 | #
|
---|
| 53 | # User Questions
|
---|
| 54 | print preambule + 'Before doing a CMT release, did you check that :'
|
---|
| 55 | print '\t You have change manually the old release number by '+ version +' in the doc/CMTDoc.xml file ? (y/n)'
|
---|
| 56 | choice ='y'
|
---|
| 57 | choice = raw_input('--> ')
|
---|
| 58 | if choice!='y' and choice!='Y': sys.exit(-1)
|
---|
| 59 | print '\t and the CMT requirements file (only when major release changes) ? (y/n)'
|
---|
| 60 | choice = raw_input('--> ')
|
---|
| 61 | if choice!='y' and choice!='Y': sys.exit(-1)
|
---|
| 62 | print preambule + 'now we can proceed to the release'
|
---|
| 63 | #
|
---|
| 64 | print preambule + 'Build the documentations'
|
---|
| 65 | #make doxygen, doxygen must be installed localy
|
---|
| 66 | cmd = 'cd HEAD/doc; rm -Rf Doxygen; doxygen'
|
---|
| 67 | print preambule + cmd
|
---|
| 68 | status, output = commands.getstatusoutput (cmd)
|
---|
| 69 | print output
|
---|
| 70 | # make the pdf, htlm2ps must be installed
|
---|
| 71 | cmd = 'cd HEAD/mgr; make pdf; make gendoc'
|
---|
| 72 | print preambule + cmd
|
---|
| 73 | status, output = commands.getstatusoutput (cmd)
|
---|
| 74 | print output
|
---|
| 75 |
|
---|
| 76 | print '\t You should change manually the ReleaseNotes.html '
|
---|
| 77 | choice = raw_input('--> ')
|
---|
| 78 | if choice!='y' and choice!='Y': sys.exit(-1)
|
---|
| 79 |
|
---|
| 80 | print preambule + 'commit version to the HEAD'
|
---|
| 81 | os.chdir('HEAD')
|
---|
| 82 | cmd = "svn commit -m 'version "+ version +"'"
|
---|
| 83 | print preambule + cmd
|
---|
| 84 | status, output = commands.getstatusoutput (cmd)
|
---|
| 85 | print output
|
---|
| 86 | os.chdir('..')
|
---|
| 87 |
|
---|
| 88 | print preambule + 'Tag version', version
|
---|
| 89 | cmd = "svn copy -m 'move HEAD' " + svnroot + ' ' + root + '/' + version
|
---|
| 90 | print preambule + cmd
|
---|
| 91 | status, output = commands.getstatusoutput (cmd)
|
---|
| 92 | print output
|
---|
| 93 | shutil.rmtree('HEAD')
|
---|
| 94 |
|
---|
| 95 | cmd = "svn co " + root + '/' + version
|
---|
| 96 | print preambule + cmd
|
---|
| 97 | status, output = commands.getstatusoutput (cmd)
|
---|
| 98 | print output
|
---|
| 99 | os.chdir (version)
|
---|
| 100 |
|
---|
| 101 | # User Question
|
---|
| 102 | content = '''
|
---|
| 103 | //-----------------------------------------------------------
|
---|
| 104 | // Copyright Christian Arnault LAL-Orsay CNRS
|
---|
| 105 | // arnault@lal.in2p3.fr
|
---|
| 106 | // See the complete license in cmt_license.txt "http://www.cecill.info".
|
---|
| 107 | //-----------------------------------------------------------
|
---|
| 108 |
|
---|
| 109 | #ifndef __cmt_version_h__
|
---|
| 110 | #define __cmt_version_h__
|
---|
| 111 |
|
---|
| 112 | #define CMTVERSION "%s"
|
---|
| 113 |
|
---|
| 114 | #endif
|
---|
| 115 | '''%(version)
|
---|
| 116 |
|
---|
| 117 |
|
---|
| 118 | print preambule + 'Change the version number in the cmt_version.h file'
|
---|
| 119 | f = open ('source/cmt_version.h', 'w+')
|
---|
| 120 | f.write (content)
|
---|
| 121 | f.close ()
|
---|
| 122 |
|
---|
| 123 | print '\t Prepare the ../doc/download.html file'
|
---|
| 124 | f = open ('doc/CMTDownload1.html','r')
|
---|
| 125 | content = f.read ()
|
---|
| 126 | f.close
|
---|
| 127 | content = content + ' <tr><td><a href="CMT%s.tar.gz">Source kit</a> </td></tr>\n'%(version)
|
---|
| 128 | for platform in platforms:
|
---|
| 129 | content = content + ' <tr><td><a href="CMT%s%s.tar.gz">%s</a> </td></tr>\n'%(version, platform, platform)
|
---|
| 130 | f = open ('doc/CMTDownload2.html','r')
|
---|
| 131 | content = content + f.read ()
|
---|
| 132 | f.close
|
---|
| 133 | f = open ('doc/CMTDownload.html', 'w+')
|
---|
| 134 | f.write (content)
|
---|
| 135 | f.close ()
|
---|
| 136 | cmd = "svn add " + 'doc/CMTDownload.html'
|
---|
| 137 | print preambule + cmd
|
---|
| 138 | status, output = commands.getstatusoutput (cmd)
|
---|
| 139 | print output
|
---|
| 140 |
|
---|
| 141 | print preambule + 'commit version'
|
---|
| 142 | cmd = "svn commit -m 'version "+ version +"'"
|
---|
| 143 | print preambule + cmd
|
---|
| 144 | status, output = commands.getstatusoutput (cmd)
|
---|
| 145 | print output
|
---|
| 146 | os.chdir (here)
|
---|
| 147 | shutil.rmtree ('tmp')
|
---|
| 148 |
|
---|
| 149 | #--------------------# MAIN #-------------------------#
|
---|
| 150 | if __name__ == '__main__':
|
---|
| 151 | pass
|
---|
| 152 | #----------------------- End Of File --------------------------# |
---|