@@ -59,20 +59,33 @@ def delete_if_present(path, verbose):
5959
6060
6161def 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 ):
6272 if probably_big or verbose :
6373 print ("downloading {}" .format (url ))
6474 # see http://serverfault.com/questions/301128/how-to-download
6575 if sys .platform == 'win32' :
6676 run (["PowerShell.exe" , "/nologo" , "-Command" ,
6777 "(New-Object System.Net.WebClient)"
6878 ".DownloadFile('{}', '{}')" .format (url , path )],
69- verbose = verbose )
79+ verbose = verbose ,
80+ exception = exception )
7081 else :
7182 if probably_big or verbose :
7283 option = "-#"
7384 else :
7485 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 )
7689
7790
7891def verify (path , sha_path , verbose ):
@@ -112,7 +125,7 @@ def unpack(tarball, dst, verbose=False, match=None):
112125 shutil .move (tp , fp )
113126 shutil .rmtree (os .path .join (dst , fname ))
114127
115- def run (args , verbose = False ):
128+ def run (args , verbose = False , exception = False ):
116129 if verbose :
117130 print ("running: " + ' ' .join (args ))
118131 sys .stdout .flush ()
@@ -122,7 +135,7 @@ def run(args, verbose=False):
122135 code = ret .wait ()
123136 if code != 0 :
124137 err = "failed to run: " + ' ' .join (args )
125- if verbose :
138+ if verbose or exception :
126139 raise RuntimeError (err )
127140 sys .exit (err )
128141
@@ -342,8 +355,12 @@ def build_bootstrap(self):
342355 env = os .environ .copy ()
343356 env ["CARGO_TARGET_DIR" ] = build_dir
344357 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 ""
347364 env ["PATH" ] = os .path .join (self .bin_root (), "bin" ) + \
348365 os .pathsep + env ["PATH" ]
349366 if not os .path .isfile (self .cargo ()):
@@ -472,6 +489,8 @@ def build_triple(self):
472489 ostype += 'abi64'
473490 elif cputype in {'powerpc' , 'ppc' , 'ppc64' }:
474491 cputype = 'powerpc'
492+ elif cputype == 'sparcv9' :
493+ pass
475494 elif cputype in {'amd64' , 'x86_64' , 'x86-64' , 'x64' }:
476495 cputype = 'x86_64'
477496 else :
0 commit comments