11
11
import re , os , sys , glob , tarfile , shutil , subprocess , tempfile , distutils .spawn
12
12
13
13
try :
14
- import hashlib
15
- sha_func = hashlib .sha1
14
+ import hashlib
15
+ sha_func = hashlib .sha1
16
16
except ImportError :
17
- import sha
18
- sha_func = sha .new
17
+ import sha
18
+ sha_func = sha .new
19
19
20
20
def scrub (b ):
21
- if sys .version_info >= (3 ,) and type (b ) == bytes :
22
- return b .decode ('ascii' )
23
- else :
24
- return b
21
+ if sys .version_info >= (3 ,) and type (b ) == bytes :
22
+ return b .decode ('ascii' )
23
+ else :
24
+ return b
25
25
26
26
src_dir = scrub (os .getenv ("CFG_SRC_DIR" ))
27
27
if not src_dir :
28
- raise Exception ("missing env var CFG_SRC_DIR" )
28
+ raise Exception ("missing env var CFG_SRC_DIR" )
29
29
30
30
snapshotfile = os .path .join (src_dir , "src" , "snapshots.txt" )
31
31
download_url_base = "http://static.rust-lang.org/stage0-snapshots"
@@ -39,37 +39,36 @@ def scrub(b):
39
39
"freebsd" : ["bin/rustc" ],
40
40
}
41
41
42
- winnt_runtime_deps = ["libgcc_s_dw2-1.dll" ,
43
- "libstdc++-6.dll" ]
42
+ winnt_runtime_deps = ["libgcc_s_dw2-1.dll" , "libstdc++-6.dll" ]
44
43
45
44
def parse_line (n , line ):
46
- global snapshotfile
45
+ global snapshotfile
47
46
48
- if re .match (r"\s*$" , line ): return None
47
+ if re .match (r"\s*$" , line ): return None
49
48
50
- if re .match (r"^T\s*$" , line ): return None
49
+ if re .match (r"^T\s*$" , line ): return None
51
50
52
- match = re .match (r"\s+([\w_-]+) ([a-fA-F\d]{40})\s*$" , line )
53
- if match :
54
- return { "type" : "file" ,
55
- "platform" : match .group (1 ),
56
- "hash" : match .group (2 ).lower () }
51
+ match = re .match (r"\s+([\w_-]+) ([a-fA-F\d]{40})\s*$" , line )
52
+ if match :
53
+ return { "type" : "file" ,
54
+ "platform" : match .group (1 ),
55
+ "hash" : match .group (2 ).lower () }
57
56
58
- match = re .match (r"([ST]) (\d{4}-\d{2}-\d{2}) ([a-fA-F\d]+)\s*$" , line );
59
- if ( not match ) :
60
- raise Exception ("%s:%d:E syntax error: " % (snapshotfile , n ))
61
- return {"type" : "snapshot" ,
62
- "date" : match .group (2 ),
63
- "rev" : match .group (3 )}
57
+ match = re .match (r"([ST]) (\d{4}-\d{2}-\d{2}) ([a-fA-F\d]+)\s*$" , line );
58
+ if not match :
59
+ raise Exception ("%s:%d:E syntax error: " % (snapshotfile , n ))
60
+ return { "type" : "snapshot" ,
61
+ "date" : match .group (2 ),
62
+ "rev" : match .group (3 ) }
64
63
65
64
66
65
def partial_snapshot_name (date , rev , platform ):
67
- return ("rust-stage0-%s-%s-%s.tar.bz2"
68
- % (date , rev , platform ))
66
+ return ("rust-stage0-%s-%s-%s.tar.bz2"
67
+ % (date , rev , platform ))
69
68
70
69
def full_snapshot_name (date , rev , platform , hsh ):
71
- return ("rust-stage0-%s-%s-%s-%s.tar.bz2"
72
- % (date , rev , platform , hsh ))
70
+ return ("rust-stage0-%s-%s-%s-%s.tar.bz2"
71
+ % (date , rev , platform , hsh ))
73
72
74
73
75
74
def get_kernel (triple ):
@@ -86,23 +85,22 @@ def get_kernel(triple):
86
85
def get_cpu (triple ):
87
86
arch = triple .split ('-' )[0 ]
88
87
if arch == "i686" :
89
- return "i386"
88
+ return "i386"
90
89
return arch
91
90
92
91
def get_platform (triple ):
93
- return "%s-%s" % (get_kernel (triple ), get_cpu (triple ))
92
+ return "%s-%s" % (get_kernel (triple ), get_cpu (triple ))
94
93
95
94
96
95
def cmd_out (cmdline ):
97
- p = subprocess .Popen (cmdline ,
98
- stdout = subprocess .PIPE )
96
+ p = subprocess .Popen (cmdline , stdout = subprocess .PIPE )
99
97
return scrub (p .communicate ()[0 ].strip ())
100
98
101
99
102
100
def local_rev_info (field ):
103
101
return cmd_out (["git" , "--git-dir=" + os .path .join (src_dir , ".git" ),
104
- "log" , "-n" , "1" ,
105
- "--format=%%%s" % field , "HEAD" ])
102
+ "log" , "-n" , "1" ,
103
+ "--format=%%%s" % field , "HEAD" ])
106
104
107
105
108
106
def local_rev_full_sha ():
@@ -135,10 +133,10 @@ def get_url_to_file(u,f):
135
133
os .rename (tmpf , f )
136
134
137
135
def snap_filename_hash_part (snap ):
138
- match = re .match (r".*([a-fA-F\d]{40}).tar.bz2$" , snap )
139
- if not match :
140
- raise Exception ("unable to find hash in filename: " + snap )
141
- return match .group (1 )
136
+ match = re .match (r".*([a-fA-F\d]{40}).tar.bz2$" , snap )
137
+ if not match :
138
+ raise Exception ("unable to find hash in filename: " + snap )
139
+ return match .group (1 )
142
140
143
141
def hash_file (x ):
144
142
h = sha_func ()
@@ -150,13 +148,13 @@ def get_winnt_runtime_deps():
150
148
runtime_deps = []
151
149
path_dirs = os .environ ["PATH" ].split (';' )
152
150
for name in winnt_runtime_deps :
153
- for dir in path_dirs :
154
- matches = glob .glob (os .path .join (dir , name ))
155
- if matches :
156
- runtime_deps .append (matches [0 ])
157
- break
158
- else :
159
- raise Exception ("Could not find runtime dependency: %s" % name )
151
+ for dir in path_dirs :
152
+ matches = glob .glob (os .path .join (dir , name ))
153
+ if matches :
154
+ runtime_deps .append (matches [0 ])
155
+ break
156
+ else :
157
+ raise Exception ("Could not find runtime dependency: %s" % name )
160
158
return runtime_deps
161
159
162
160
def make_snapshot (stage , triple ):
@@ -168,31 +166,31 @@ def make_snapshot(stage, triple):
168
166
file0 = partial_snapshot_name (date , rev , platform )
169
167
170
168
def in_tar_name (fn ):
171
- cs = re .split (r"[\\/]" , fn )
172
- if len (cs ) >= 2 :
173
- return os .sep .join (cs [- 2 :])
169
+ cs = re .split (r"[\\/]" , fn )
170
+ if len (cs ) >= 2 :
171
+ return os .sep .join (cs [- 2 :])
174
172
175
173
tar = tarfile .open (file0 , "w:bz2" )
176
174
177
175
for name in snapshot_files [kernel ]:
178
- dir = stage
179
- if stage == "stage1" and re .match (r"^lib/(lib)?std.*" , name ):
180
- dir = "stage0"
181
- fn_glob = os .path .join (triple , dir , name )
182
- matches = glob .glob (fn_glob )
183
- if not matches :
184
- raise Exception ("Not found file with name like " + fn_glob )
185
- if len (matches ) == 1 :
186
- tar .add (matches [0 ], "rust-stage0/" + in_tar_name (matches [0 ]))
187
- else :
188
- raise Exception ("Found stale files: \n %s\n "
189
- "Please make a clean build." % "\n " .join (matches ))
176
+ dir = stage
177
+ if stage == "stage1" and re .match (r"^lib/(lib)?std.*" , name ):
178
+ dir = "stage0"
179
+ fn_glob = os .path .join (triple , dir , name )
180
+ matches = glob .glob (fn_glob )
181
+ if not matches :
182
+ raise Exception ("Not found file with name like " + fn_glob )
183
+ if len (matches ) == 1 :
184
+ tar .add (matches [0 ], "rust-stage0/" + in_tar_name (matches [0 ]))
185
+ else :
186
+ raise Exception ("Found stale files: \n %s\n "
187
+ "Please make a clean build." % "\n " .join (matches ))
190
188
191
189
if kernel == "winnt" :
192
- for path in get_winnt_runtime_deps ():
193
- tar .add (path , "rust-stage0/bin/" + os .path .basename (path ))
194
- tar .add (os .path .join (os .path .dirname (__file__ ), "third-party" ),
195
- "rust-stage0/bin/third-party" )
190
+ for path in get_winnt_runtime_deps ():
191
+ tar .add (path , "rust-stage0/bin/" + os .path .basename (path ))
192
+ tar .add (os .path .join (os .path .dirname (__file__ ), "third-party" ),
193
+ "rust-stage0/bin/third-party" )
196
194
197
195
tar .close ()
198
196
@@ -204,59 +202,59 @@ def in_tar_name(fn):
204
202
return file1
205
203
206
204
def curr_snapshot_rev ():
207
- i = 0
208
- found_snap = False
209
- date = None
210
- rev = None
205
+ i = 0
206
+ found_snap = False
207
+ date = None
208
+ rev = None
211
209
212
- f = open (snapshotfile )
213
- for line in f .readlines ():
214
- i += 1
215
- parsed = parse_line (i , line )
216
- if (not parsed ): continue
210
+ f = open (snapshotfile )
211
+ for line in f .readlines ():
212
+ i += 1
213
+ parsed = parse_line (i , line )
214
+ if (not parsed ): continue
217
215
218
- if parsed ["type" ] == "snapshot" :
219
- date = parsed ["date" ]
220
- rev = parsed ["rev" ]
221
- found_snap = True
222
- break
216
+ if parsed ["type" ] == "snapshot" :
217
+ date = parsed ["date" ]
218
+ rev = parsed ["rev" ]
219
+ found_snap = True
220
+ break
223
221
224
- if not found_snap :
225
- raise Exception ("no snapshot entries in file" )
222
+ if not found_snap :
223
+ raise Exception ("no snapshot entries in file" )
226
224
227
- return (date , rev )
225
+ return (date , rev )
228
226
229
227
def determine_curr_snapshot (triple ):
230
- i = 0
231
- platform = get_platform (triple )
232
-
233
- found_file = False
234
- found_snap = False
235
- hsh = None
236
- date = None
237
- rev = None
238
-
239
- f = open (snapshotfile )
240
- for line in f .readlines ():
241
- i += 1
242
- parsed = parse_line (i , line )
243
- if (not parsed ): continue
244
-
245
- if found_snap and parsed ["type" ] == "file" :
246
- if parsed ["platform" ] == platform :
247
- hsh = parsed ["hash" ]
248
- found_file = True
249
- break ;
250
- elif parsed ["type" ] == "snapshot" :
251
- date = parsed ["date" ]
252
- rev = parsed ["rev" ]
253
- found_snap = True
254
-
255
- if not found_snap :
256
- raise Exception ("no snapshot entries in file" )
257
-
258
- if not found_file :
259
- raise Exception ("no snapshot file found for platform %s, rev %s" %
260
- (platform , rev ))
261
-
262
- return full_snapshot_name (date , rev , platform , hsh )
228
+ i = 0
229
+ platform = get_platform (triple )
230
+
231
+ found_file = False
232
+ found_snap = False
233
+ hsh = None
234
+ date = None
235
+ rev = None
236
+
237
+ f = open (snapshotfile )
238
+ for line in f .readlines ():
239
+ i += 1
240
+ parsed = parse_line (i , line )
241
+ if (not parsed ): continue
242
+
243
+ if found_snap and parsed ["type" ] == "file" :
244
+ if parsed ["platform" ] == platform :
245
+ hsh = parsed ["hash" ]
246
+ found_file = True
247
+ break ;
248
+ elif parsed ["type" ] == "snapshot" :
249
+ date = parsed ["date" ]
250
+ rev = parsed ["rev" ]
251
+ found_snap = True
252
+
253
+ if not found_snap :
254
+ raise Exception ("no snapshot entries in file" )
255
+
256
+ if not found_file :
257
+ raise Exception ("no snapshot file found for platform %s, rev %s" %
258
+ (platform , rev ))
259
+
260
+ return full_snapshot_name (date , rev , platform , hsh )
0 commit comments