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