@@ -59,20 +59,33 @@ def delete_if_present(path, verbose):
59
59
60
60
61
61
def download (path , url , probably_big , verbose ):
62
+ for x in range (0 , 4 ):
63
+ try :
64
+ _download (path , url , probably_big , verbose , True )
65
+ return
66
+ except RuntimeError :
67
+ print ("\n spurious failure, trying again" )
68
+ _download (path , url , probably_big , verbose , False )
69
+
70
+
71
+ def _download (path , url , probably_big , verbose , exception ):
62
72
if probably_big or verbose :
63
73
print ("downloading {}" .format (url ))
64
74
# see http://serverfault.com/questions/301128/how-to-download
65
75
if sys .platform == 'win32' :
66
76
run (["PowerShell.exe" , "/nologo" , "-Command" ,
67
77
"(New-Object System.Net.WebClient)"
68
78
".DownloadFile('{}', '{}')" .format (url , path )],
69
- verbose = verbose )
79
+ verbose = verbose ,
80
+ exception = exception )
70
81
else :
71
82
if probably_big or verbose :
72
83
option = "-#"
73
84
else :
74
85
option = "-s"
75
- run (["curl" , option , "--retry" , "3" , "-Sf" , "-o" , path , url ], verbose = verbose )
86
+ run (["curl" , option , "--retry" , "3" , "-Sf" , "-o" , path , url ],
87
+ verbose = verbose ,
88
+ exception = exception )
76
89
77
90
78
91
def verify (path , sha_path , verbose ):
@@ -112,7 +125,7 @@ def unpack(tarball, dst, verbose=False, match=None):
112
125
shutil .move (tp , fp )
113
126
shutil .rmtree (os .path .join (dst , fname ))
114
127
115
- def run (args , verbose = False ):
128
+ def run (args , verbose = False , exception = False ):
116
129
if verbose :
117
130
print ("running: " + ' ' .join (args ))
118
131
sys .stdout .flush ()
@@ -122,7 +135,7 @@ def run(args, verbose=False):
122
135
code = ret .wait ()
123
136
if code != 0 :
124
137
err = "failed to run: " + ' ' .join (args )
125
- if verbose :
138
+ if verbose or exception :
126
139
raise RuntimeError (err )
127
140
sys .exit (err )
128
141
@@ -342,8 +355,12 @@ def build_bootstrap(self):
342
355
env = os .environ .copy ()
343
356
env ["CARGO_TARGET_DIR" ] = build_dir
344
357
env ["RUSTC" ] = self .rustc ()
345
- env ["LD_LIBRARY_PATH" ] = os .path .join (self .bin_root (), "lib" )
346
- env ["DYLD_LIBRARY_PATH" ] = os .path .join (self .bin_root (), "lib" )
358
+ env ["LD_LIBRARY_PATH" ] = os .path .join (self .bin_root (), "lib" ) + \
359
+ (os .pathsep + env ["LD_LIBRARY_PATH" ]) \
360
+ if "LD_LIBRARY_PATH" in env else ""
361
+ env ["DYLD_LIBRARY_PATH" ] = os .path .join (self .bin_root (), "lib" ) + \
362
+ (os .pathsep + env ["DYLD_LIBRARY_PATH" ]) \
363
+ if "DYLD_LIBRARY_PATH" in env else ""
347
364
env ["PATH" ] = os .path .join (self .bin_root (), "bin" ) + \
348
365
os .pathsep + env ["PATH" ]
349
366
if not os .path .isfile (self .cargo ()):
@@ -472,6 +489,8 @@ def build_triple(self):
472
489
ostype += 'abi64'
473
490
elif cputype in {'powerpc' , 'ppc' , 'ppc64' }:
474
491
cputype = 'powerpc'
492
+ elif cputype == 'sparcv9' :
493
+ pass
475
494
elif cputype in {'amd64' , 'x86_64' , 'x86-64' , 'x64' }:
476
495
cputype = 'x86_64'
477
496
else :
0 commit comments