[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 --------------------------# |
---|