1 | #!/usr/bin/env python |
---|
2 | #--------------------------------# |
---|
3 | # Author: V.garonne # |
---|
4 | # Mail: garonne@lal.in2p3.fr # |
---|
5 | # Description: script to export # |
---|
6 | # a CMT release to the web site # |
---|
7 | #--------------------------------# |
---|
8 | |
---|
9 | import sys, os |
---|
10 | import string |
---|
11 | import commands |
---|
12 | import shutil |
---|
13 | import socket |
---|
14 | import tarfile, gzip |
---|
15 | import threading |
---|
16 | |
---|
17 | # my own stuffs |
---|
18 | from utils.ssh_session import * |
---|
19 | from p3 import decrypt |
---|
20 | |
---|
21 | #--------------------# MAIN #-------------------------# |
---|
22 | #if __name__ == '__main__': |
---|
23 | def cmt_export (svnroot, version, wwwroot): |
---|
24 | # variables |
---|
25 | proxy = '.cmtproxy' |
---|
26 | preambule = 'cmt_export > ' |
---|
27 | platforms = [ |
---|
28 | 'OSF1-alpha', |
---|
29 | 'Linux-i686', |
---|
30 | 'Linux-x86_64', |
---|
31 | 'Linux-ia64', |
---|
32 | 'SunOS-sun4u', |
---|
33 | 'AIX-002064874C00', |
---|
34 | 'Darwin-PowerMacintosh', |
---|
35 | 'VisualC', |
---|
36 | 'CYGWIN_NT-5.1-i686', |
---|
37 | '' |
---|
38 | ] |
---|
39 | |
---|
40 | if not os.path.exists (proxy): |
---|
41 | print preambule + 'First create the proxy' |
---|
42 | sys.exit(-1) |
---|
43 | pool = eval(decrypt('.cmtproxy')) |
---|
44 | machine = 'OSF1-alpha' |
---|
45 | host = pool[machine]['machine'] |
---|
46 | user = pool[machine]['user'] |
---|
47 | pwd = pool[machine] ['pwd'] |
---|
48 | session = ssh_session (user='garonne', host='lx.lal.in2p3.fr', password=pwd, verbose=1) |
---|
49 | |
---|
50 | file = 'CMT-'+version+'.pacman' |
---|
51 | print file |
---|
52 | content = '''#----------------------------------------------------------- |
---|
53 | # Copyright Christian Arnault LAL-Orsay CNRS |
---|
54 | # arnault@lal.in2p3.fr |
---|
55 | # See the complete license in cmt_license.txt "http://www.cecill.info". |
---|
56 | #----------------------------------------------------------- |
---|
57 | |
---|
58 | description ('CMT %s') |
---|
59 | packageName ('CMT') |
---|
60 | version ('%s') |
---|
61 | |
---|
62 | pacmanVersionGE('3.13') |
---|
63 | |
---|
64 | { |
---|
65 | platformGE ('Linux') ; downloadUntar ('http://www.cmtsite.org/%s/CMT%sLinux-i686.tar.gz', 'CMTBASE') |
---|
66 | OR |
---|
67 | platformGE ('Cygwin') ; downloadUntar ('http://www.cmtsite.org/%s/CMT%sCYGWIN_NT-5.1-i686.tar.gz', 'CMTBASE') |
---|
68 | OR |
---|
69 | downloadUntar ('http://www.cmtsite.org/%s/CMT%s.tar.gz', 'CMTBASE') |
---|
70 | } |
---|
71 | |
---|
72 | cd ('$CMTBASE/%s/mgr') |
---|
73 | shellOutputContains ('./INSTALL', 'CMT installation terminated') |
---|
74 | { |
---|
75 | shellOutputContains ('. setup.sh; cmt version', '%s') |
---|
76 | OR shell ('. setup.sh; gmake') |
---|
77 | } |
---|
78 | shellOutputContains ('. setup.sh; cmt version', '%s') |
---|
79 | cd ()'''%(version,version,version, version,version,version,version,version,version,version,version) |
---|
80 | |
---|
81 | f =open (file, 'w+') |
---|
82 | f.write (content) |
---|
83 | f.close() |
---|
84 | session.scp (file, wwwroot + '/pacman/cache/.') |
---|
85 | |
---|
86 | # Second pacman Cache |
---|
87 | path = '/afs/cern.ch/atlas/software/kits/CMT' |
---|
88 | url = 'http://cern.ch/atlas-computing/links/kitsDirectory/CMT' |
---|
89 | content = '''#----------------------------------------------------------- |
---|
90 | # Copyright Christian Arnault LAL-Orsay CNRS |
---|
91 | # arnault@lal.in2p3.fr |
---|
92 | # See the complete license in cmt_license.txt "http://www.cecill.info". |
---|
93 | #----------------------------------------------------------- |
---|
94 | |
---|
95 | description ('CMT %s') |
---|
96 | packageName ('CMT') |
---|
97 | version ('%s') |
---|
98 | |
---|
99 | pacmanVersionGE('3.13') |
---|
100 | |
---|
101 | { |
---|
102 | platformGE ('Linux') ; downloadUntar ('http://cern.ch/atlas-computing/links/kitsDirectory/CMT/%s/CMT%sLinux-i686.tar.gz', 'CMTBASE') |
---|
103 | OR |
---|
104 | platformGE ('Cygwin') ; downloadUntar ('http://cern.ch/atlas-computing/links/kitsDirectory/CMT/%s/CMT%sCYGWIN_NT-5.1-i686.tar.gz', 'CMTBASE') |
---|
105 | OR |
---|
106 | downloadUntar ('http://cern.ch/atlas-computing/links/kitsDirectory/CMT/%s/CMT%s.tar.gz', 'CMTBASE') |
---|
107 | } |
---|
108 | |
---|
109 | cd ('$CMTBASE/%s/mgr') |
---|
110 | shellOutputContains ('./INSTALL', 'CMT installation terminated') |
---|
111 | { |
---|
112 | shellOutputContains ('. setup.sh; cmt version', '%s') |
---|
113 | OR shell ('. setup.sh; gmake') |
---|
114 | } |
---|
115 | shellOutputContains ('. setup.sh; cmt version', '%s') |
---|
116 | cd ()'''%(version,version,version, version,version,version,version,version,version,version,version) |
---|
117 | |
---|
118 | |
---|
119 | f =open (file, 'w+') |
---|
120 | f.write (content) |
---|
121 | f.close() |
---|
122 | |
---|
123 | machine = 'Linux-i686' |
---|
124 | host = pool[machine]['machine'] |
---|
125 | user = pool[machine]['user'] |
---|
126 | pwd = pool[machine] ['pwd'] |
---|
127 | session2 = ssh_session (user=user, host=host, password=pwd, verbose=1) |
---|
128 | session2.scp (file, path + '/pacman/cache/.') |
---|
129 | |
---|
130 | |
---|
131 | files = [ |
---|
132 | 'doc/CMTDoc.html', |
---|
133 | 'doc/CMTDoc.ps', |
---|
134 | 'doc/CMTDoc.pdf', |
---|
135 | 'doc/CMTFAQ.html', |
---|
136 | 'doc/CMTDownload.html', |
---|
137 | 'doc/ReleaseNotes.html', |
---|
138 | 'doc/ChangeLog.html', |
---|
139 | 'mgr/ChangeLog.php', |
---|
140 | 'doc/CMTFAQ.ps', |
---|
141 | 'doc/CMTFAQ.pdf' |
---|
142 | ] |
---|
143 | |
---|
144 | cmd = 'svn export '+ svnroot + version |
---|
145 | print preambule + cmd |
---|
146 | status, output = commands.getstatusoutput (cmd) |
---|
147 | print output |
---|
148 | |
---|
149 | #print preambule + 'Build the documentations' |
---|
150 | #make doxygen, doxygen must be installed localy |
---|
151 | #cmd = 'cd '+version+'/doc; rm -Rf Doxygen; doxygen' |
---|
152 | #print preambule + cmd |
---|
153 | #status, output = commands.getstatusoutput (cmd) |
---|
154 | #print output |
---|
155 | #print session.scp (version+'/doc/Doxygen', wwwroot, 'r') |
---|
156 | |
---|
157 | session.ssh ('mkdir -p '+ wwwroot +'/'+version) |
---|
158 | session2.ssh ('mkdir -p '+ path +'/'+version) |
---|
159 | for file in files: |
---|
160 | print session.scp (version+'/'+file, wwwroot + '/.') |
---|
161 | print session.scp (version+'/'+file, wwwroot + '/'+version + '/.') |
---|
162 | |
---|
163 | for platform in platforms: |
---|
164 | file = 'CMT'+version+platform+'.tar.gz' |
---|
165 | if os.path.exists(file): |
---|
166 | print file |
---|
167 | print session.scp (file, wwwroot + '/'+version+'/.') |
---|
168 | print session2.scp (file, path + '/'+version+'/.') |
---|
169 | |
---|
170 | cmd = 'svn co https://svn.lal.in2p3.fr:/projects/CMT/cmtsite' |
---|
171 | print preambule + cmd |
---|
172 | status, output = commands.getstatusoutput (cmd) |
---|
173 | print output |
---|
174 | |
---|
175 | print '\t You should manually the old release number by '+ version +' in the cmtsite/download.html file ? (y/n)' |
---|
176 | choice ='y' |
---|
177 | choice = raw_input('--> ') |
---|
178 | if choice!='y' and choice!='Y': sys.exit(-1) |
---|
179 | os.chdir('cmtsite') |
---|
180 | cmd = "svn commit -m 'update the version number for download.html'" |
---|
181 | print preambule + cmd |
---|
182 | status, output = commands.getstatusoutput (cmd) |
---|
183 | print output |
---|
184 | os.chdir('..') |
---|
185 | session.scp ('cmtsite/download.html', wwwroot + '/.') |
---|
186 | |
---|
187 | # Do the Clean up |
---|
188 | shutil.rmtree ('cmtsite') |
---|
189 | shutil.rmtree (version) |
---|
190 | #----------------------- End Of File --------------------------# |
---|