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