def FetchAndInstall(self, arch): """Fetch and install a new toolchain arch: Architecture to fetch, or 'list' to list """ # Fist get the URL for this architecture col = terminal.Color() print(col.Color(col.BLUE, "Downloading toolchain for arch '%s'" % arch)) url = self.LocateArchUrl(arch) if not url: print(("Cannot find toolchain for arch '%s' - use 'list' to list" % arch)) return 2 home = os.environ['HOME'] dest = os.path.join(home, '.buildman-toolchains') if not os.path.exists(dest): os.mkdir(dest) # Download the tar file for this toolchain and unpack it tmpdir, tarfile = self.Download(url) if not tarfile: return 1 print(col.Color(col.GREEN, 'Unpacking to: %s' % dest), end=' ') sys.stdout.flush() path = self.Unpack(tarfile, dest) os.remove(tarfile) os.rmdir(tmpdir) print() # Check that the toolchain works print(col.Color(col.GREEN, 'Testing')) dirpath = os.path.join(dest, path) compiler_fname_list = self.ScanPath(dirpath, True) if not compiler_fname_list: print('Could not locate C compiler - fetch failed.') return 1 if len(compiler_fname_list) != 1: print( col.Color( col.RED, 'Warning, ambiguous toolchains: %s' % ', '.join(compiler_fname_list))) toolchain = Toolchain(compiler_fname_list[0], True, True) # Make sure that it will be found by buildman if not self.TestSettingsHasPath(dirpath): print(("Adding 'download' to config file '%s'" % bsettings.config_fname)) bsettings.SetItem('toolchain', 'download', '%s/*/*' % dest) return 0
def FetchAndInstall(self, arch): """Fetch and install a new toolchain arch: Architecture to fetch, or 'list' to list """ # Fist get the URL for this architecture url = self.LocateArchUrl(arch) if not url: print ("Cannot find toolchain for arch '%s' - use 'list' to list" % arch) return 2 home = os.environ['HOME'] dest = os.path.join(home, '.buildman-toolchains') if not os.path.exists(dest): os.mkdir(dest) # Download the tar file for this toolchain and unpack it tmpdir, tarfile = self.Download(url) if not tarfile: return 1 print 'Unpacking to: %s' % dest, sys.stdout.flush() path = self.Unpack(tarfile, dest) os.remove(tarfile) os.rmdir(tmpdir) print # Check that the toolchain works print 'Testing' dirpath = os.path.join(dest, path) compiler_fname = self.ScanPath(dirpath, True) if not compiler_fname: print 'Could not locate C compiler - fetch failed.' return 1 toolchain = Toolchain(compiler_fname, True, True) # Make sure that it will be found by buildman if not self.TestSettingsHasPath(dirpath): print ("Adding 'download' to config file '%s'" % bsettings.config_fname) tools_dir = os.path.dirname(dirpath) bsettings.SetItem('toolchain', 'download', '%s/*' % tools_dir) return 0