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,36 +39,37 @@ def scrub(b):
39
39
"freebsd" : ["bin/rustc" ],
40
40
}
41
41
42
- winnt_runtime_deps = ["libgcc_s_dw2-1.dll" , "libstdc++-6.dll" ]
42
+ winnt_runtime_deps = ["libgcc_s_dw2-1.dll" ,
43
+ "libstdc++-6.dll" ]
43
44
44
45
def parse_line (n , line ):
45
- global snapshotfile
46
+ global snapshotfile
46
47
47
- if re .match (r"\s*$" , line ): return None
48
+ if re .match (r"\s*$" , line ): return None
48
49
49
- if re .match (r"^T\s*$" , line ): return None
50
+ if re .match (r"^T\s*$" , line ): return None
50
51
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 () }
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 () }
56
57
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 ) }
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 )}
63
64
64
65
65
66
def partial_snapshot_name (date , rev , platform ):
66
- return ("rust-stage0-%s-%s-%s.tar.bz2"
67
- % (date , rev , platform ))
67
+ return ("rust-stage0-%s-%s-%s.tar.bz2"
68
+ % (date , rev , platform ))
68
69
69
70
def full_snapshot_name (date , rev , platform , hsh ):
70
- return ("rust-stage0-%s-%s-%s-%s.tar.bz2"
71
- % (date , rev , platform , hsh ))
71
+ return ("rust-stage0-%s-%s-%s-%s.tar.bz2"
72
+ % (date , rev , platform , hsh ))
72
73
73
74
74
75
def get_kernel (triple ):
@@ -85,22 +86,23 @@ def get_kernel(triple):
85
86
def get_cpu (triple ):
86
87
arch = triple .split ('-' )[0 ]
87
88
if arch == "i686" :
88
- return "i386"
89
+ return "i386"
89
90
return arch
90
91
91
92
def get_platform (triple ):
92
- return "%s-%s" % (get_kernel (triple ), get_cpu (triple ))
93
+ return "%s-%s" % (get_kernel (triple ), get_cpu (triple ))
93
94
94
95
95
96
def cmd_out (cmdline ):
96
- p = subprocess .Popen (cmdline , stdout = subprocess .PIPE )
97
+ p = subprocess .Popen (cmdline ,
98
+ stdout = subprocess .PIPE )
97
99
return scrub (p .communicate ()[0 ].strip ())
98
100
99
101
100
102
def local_rev_info (field ):
101
103
return cmd_out (["git" , "--git-dir=" + os .path .join (src_dir , ".git" ),
102
- "log" , "-n" , "1" ,
103
- "--format=%%%s" % field , "HEAD" ])
104
+ "log" , "-n" , "1" ,
105
+ "--format=%%%s" % field , "HEAD" ])
104
106
105
107
106
108
def local_rev_full_sha ():
@@ -133,10 +135,10 @@ def get_url_to_file(u,f):
133
135
os .rename (tmpf , f )
134
136
135
137
def snap_filename_hash_part (snap ):
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 )
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 )
140
142
141
143
def hash_file (x ):
142
144
h = sha_func ()
@@ -148,13 +150,13 @@ def get_winnt_runtime_deps():
148
150
runtime_deps = []
149
151
path_dirs = os .environ ["PATH" ].split (';' )
150
152
for name in winnt_runtime_deps :
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 )
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 )
158
160
return runtime_deps
159
161
160
162
def make_snapshot (stage , triple ):
@@ -166,31 +168,31 @@ def make_snapshot(stage, triple):
166
168
file0 = partial_snapshot_name (date , rev , platform )
167
169
168
170
def in_tar_name (fn ):
169
- cs = re .split (r"[\\/]" , fn )
170
- if len (cs ) >= 2 :
171
- return os .sep .join (cs [- 2 :])
171
+ cs = re .split (r"[\\/]" , fn )
172
+ if len (cs ) >= 2 :
173
+ return os .sep .join (cs [- 2 :])
172
174
173
175
tar = tarfile .open (file0 , "w:bz2" )
174
176
175
177
for name in snapshot_files [kernel ]:
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 ))
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 ))
188
190
189
191
if kernel == "winnt" :
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" )
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" )
194
196
195
197
tar .close ()
196
198
@@ -202,59 +204,59 @@ def in_tar_name(fn):
202
204
return file1
203
205
204
206
def curr_snapshot_rev ():
205
- i = 0
206
- found_snap = False
207
- date = None
208
- rev = None
207
+ i = 0
208
+ found_snap = False
209
+ date = None
210
+ rev = None
209
211
210
- f = open (snapshotfile )
211
- for line in f .readlines ():
212
- i += 1
213
- parsed = parse_line (i , line )
214
- if (not parsed ): continue
212
+ f = open (snapshotfile )
213
+ for line in f .readlines ():
214
+ i += 1
215
+ parsed = parse_line (i , line )
216
+ if (not parsed ): continue
215
217
216
- if parsed ["type" ] == "snapshot" :
217
- date = parsed ["date" ]
218
- rev = parsed ["rev" ]
219
- found_snap = True
220
- break
218
+ if parsed ["type" ] == "snapshot" :
219
+ date = parsed ["date" ]
220
+ rev = parsed ["rev" ]
221
+ found_snap = True
222
+ break
221
223
222
- if not found_snap :
223
- raise Exception ("no snapshot entries in file" )
224
+ if not found_snap :
225
+ raise Exception ("no snapshot entries in file" )
224
226
225
- return (date , rev )
227
+ return (date , rev )
226
228
227
229
def determine_curr_snapshot (triple ):
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 )
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 )
0 commit comments