diff options
Diffstat (limited to 'pkgs/development/compilers/graalvm/001_mx.py.patch')
-rw-r--r-- | pkgs/development/compilers/graalvm/001_mx.py.patch | 260 |
1 files changed, 147 insertions, 113 deletions
diff --git a/pkgs/development/compilers/graalvm/001_mx.py.patch b/pkgs/development/compilers/graalvm/001_mx.py.patch index a87a030aa39..0477c6c556f 100644 --- a/pkgs/development/compilers/graalvm/001_mx.py.patch +++ b/pkgs/development/compilers/graalvm/001_mx.py.patch @@ -1,57 +1,31 @@ diff --git a/mx.py b/mx.py -index af7a9c2..08c0ea8 100755 +index a0b9315..b7d67a0 100755 --- a/mx.py +++ b/mx.py -@@ -4976,30 +4976,6 @@ class PackedResourceLibrary(ResourceLibrary): +@@ -238,21 +238,7 @@ def _check_file_with_sha1(path, sha1, sha1path, mustExist=True, newFile=False, l + f.write(value or sha1OfFile(path)) - def get_path(self, resolve): - extract_path = _make_absolute(self.extract_path, self.suite.dir) -- download_path = super(PackedResourceLibrary, self).get_path(resolve) -- if resolve and self._check_extract_needed(extract_path, download_path): -- extract_path_tmp = tempfile.mkdtemp(suffix=basename(extract_path), dir=dirname(extract_path)) -- try: -- # extract archive -- Extractor.create(download_path).extract(extract_path_tmp) -- # ensure modification time is up to date -- os.utime(extract_path_tmp, None) -- logv("Moving temporary directory {} to {}".format(extract_path_tmp, extract_path)) -- try: -- # attempt atomic overwrite -- os.rename(extract_path_tmp, extract_path) -- except OSError: -- # clean destination & re-try for cases where atomic overwrite doesn't work -- rmtree(extract_path, ignore_errors=True) -- os.rename(extract_path_tmp, extract_path) -- except OSError as ose: -- # Rename failed. Race with other process? -- if self._check_extract_needed(extract_path, download_path): -- # ok something really went wrong -- abort("Extracting {} failed!".format(download_path), context=ose) -- finally: -- rmtree(extract_path_tmp, ignore_errors=True) + if exists(path): +- if sha1Check and sha1: +- if not _sha1CachedValid() or (newFile and sha1 != _sha1Cached()): +- logv('Create/update SHA1 cache file ' + sha1path) +- _writeSha1Cached() - - return extract_path - - def _check_download_needed(self): -@@ -5900,7 +5876,7 @@ class HgConfig(VC): - - def update_to_branch(self, vcdir, branch, abortOnError=True): - cmd = ['update', branch] -- self.hg_command(vcdir, cmd, abortOnError=abortOnError) -+ self.run(['hg', vcdir] + cmd) - - def add(self, vcdir, path, abortOnError=True): - return self.run(['hg', '-q', '-R', vcdir, 'add', path]) == 0 -@@ -5937,7 +5913,7 @@ class HgConfig(VC): - return None - - def parent_info(self, vcdir, abortOnError=True): -- out = self.hg_command(vcdir, ["log", "-r", ".", "--template", "{author}|||{date|hgdate}"], abortOnError=abortOnError) -+ out = _check_output_str(["hg", '-R', vcdir, "log", "-r", ".", "--template", "{author}|||{date|hgdate}"]) - author, date = out.split("|||") - ts, _ = date.split(" ") - return self._sanitize_parent_info({ -@@ -8301,46 +8277,8 @@ class SuiteImport: +- if sha1 != _sha1Cached(): +- computedSha1 = sha1OfFile(path) +- if sha1 == computedSha1: +- warn('Fixing corrupt SHA1 cache file ' + sha1path) +- _writeSha1Cached(computedSha1) +- return True +- if logErrors: +- size = os.path.getsize(path) +- log_error('SHA1 of {} [size: {}] ({}) does not match expected value ({})'.format(TimeStampFile(path), size, computedSha1, sha1)) +- return False ++ return True + elif mustExist: + if logErrors: + log_error("'{}' does not exist".format(path)) +@@ -1057,46 +1043,8 @@ class SuiteImport: version = import_dict.get("version") suite_dir = None version_from = import_dict.get("versionFrom") @@ -100,7 +74,7 @@ index af7a9c2..08c0ea8 100755 @staticmethod def get_source_urls(source, kind=None): -@@ -8381,8 +8319,6 @@ class Suite(object): +@@ -1467,8 +1415,6 @@ class Suite(object): :type dists: list[Distribution] """ def __init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=False): @@ -109,7 +83,7 @@ index af7a9c2..08c0ea8 100755 self.imported_by = [] if primary else [importing_suite] self.mxDir = mxDir self.dir = dirname(mxDir) -@@ -8410,7 +8346,7 @@ class Suite(object): +@@ -1496,7 +1442,7 @@ class Suite(object): self._outputRoot = None self._preloaded_suite_dict = None self.vc = vc @@ -118,7 +92,7 @@ index af7a9c2..08c0ea8 100755 self._preload_suite_dict() self._init_imports() if load: -@@ -9310,7 +9246,9 @@ def get_dynamic_imports(): +@@ -2405,7 +2351,9 @@ class Repository(SuiteConstituent): class SourceSuite(Suite): """A source suite""" def __init__(self, mxDir, primary=False, load=True, internal=False, importing_suite=None, dynamicallyImported=False): @@ -129,7 +103,7 @@ index af7a9c2..08c0ea8 100755 Suite.__init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=dynamicallyImported) logvv("SourceSuite.__init__({}), got vc={}, vc_dir={}".format(mxDir, self.vc, self.vc_dir)) self.projects = [] -@@ -9359,17 +9297,7 @@ class SourceSuite(Suite): +@@ -2454,17 +2402,7 @@ class SourceSuite(Suite): """ Gets the release tag from VC or create a time based once if VC is unavailable """ @@ -148,7 +122,57 @@ index af7a9c2..08c0ea8 100755 def scm_metadata(self, abortOnError=False): scm = self.scm -@@ -12541,55 +12469,8 @@ def _attempt_download(url, path, jarEntryName=None): +@@ -2993,12 +2931,35 @@ def _find_suite_import(importing_suite, suite_import, fatalIfMissing=True, load= + Attempts to locate an existing suite in the local context + Returns the path to the mx.name dir if found else None + """ +- if mode == 'binary': +- # binary suites are always stored relative to the importing suite in mx-private directory +- return importing_suite._find_binary_suite_dir(suite_import.name) ++ warn("FAKE CLONE: " + str(suite_import)) ++ if (suite_import.name == "truffle"): ++ return join(get_env('TMP'), "source", "truffle", "mx.truffle") ++ if (suite_import.name == "graal-nodejs"): ++ return join(get_env('MX_GIT_CACHE_DIR'), "graaljs", "graal-nodejs", "mx.graal-nodejs") ++ if (suite_import.name == "truffleruby"): ++ return join(get_env('MX_GIT_CACHE_DIR'), "truffleruby", "mx.truffleruby") ++ if (suite_import.name == "graalpython"): ++ return join(get_env('MX_GIT_CACHE_DIR'), "graalpython", "mx.graalpython") ++ if (suite_import.name == "vm"): ++ return join(get_env('TMP'), "source", "vm", "mx.vm") ++ if (suite_import.name == "fastr"): ++ return join(get_env('MX_GIT_CACHE_DIR'), "fastr", "mx.fastr") ++ if (suite_import.name == "sdk"): ++ return join(get_env('TMP'), "source", "sdk", "mx.sdk") ++ if (suite_import.name == "graal-js"): ++ return join(get_env('MX_GIT_CACHE_DIR'), "graaljs", "graal-js", "mx.graal-js") ++ if (suite_import.name == "regex"): ++ return join(get_env('TMP'), "source", "regex", "mx.regex") ++ if (suite_import.name == "substratevm"): ++ return join(get_env('TMP'), "source", "substratevm", "mx.substratevm") ++ if (suite_import.name == "tools"): ++ return join(get_env('TMP'), "source", "tools", "mx.tools") ++ if (suite_import.name == "sulong"): ++ return join(get_env('TMP'), "source", "sulong", "mx.sulong") ++ if (suite_import.name == "compiler"): ++ return join(get_env('TMP'), "source", "compiler", "mx.compiler") + else: +- # use the SuiteModel to locate a local source copy of the suite +- return _suitemodel.find_suite_dir(suite_import) ++ return join(get_env('MX_GIT_CACHE_DIR'), suite_import.name) + + def _get_import_dir(url, mode): + """Return directory where the suite will be cloned to""" +@@ -3816,7 +3777,7 @@ def getmtime(name): + """ + Wrapper for builtin open function that handles long path names on Windows. + """ +- return os.path.getmtime(_safe_path(name)) ++ return 315532800 + + + def stat(name): +@@ -4062,57 +4023,8 @@ def _attempt_download(url, path, jarEntryName=None): return False def download(path, urls, verbose=False, abortOnError=True, verifyOnly=False): @@ -173,40 +197,91 @@ index af7a9c2..08c0ea8 100755 - url = m.group(1) - jarEntryName = m.group(2) - +- if not _opts.trust_http and (url.lower().startswith('http://') or url.lower().startswith('ftp://')): +- warn('Downloading from non-https URL {}. Use --trust-http mx option to suppress this warning.'.format(url)) +- - if verifyOnly: - try: - conn = _urlopen(url, timeout=10) - conn.close() -- return True - except (IOError, socket.timeout) as e: - _suggest_tlsv1_error(e) - verify_errors[url] = e -- continue +- else: +- for i in range(4): +- if i != 0: +- time.sleep(1) +- warn('Retry {} to download from {}'.format(i, url)) +- if _attempt_download(url, path, jarEntryName): +- return True # Download was successful - -- for i in range(4): -- if i != 0: -- time.sleep(1) -- warn('Retry {} to download from {}'.format(i, url)) -- res = _attempt_download(url, path, jarEntryName) -- if res is True: -- return True -- if res is False: -- break -- -- if abortOnError: +- if verifyOnly and len(verify_errors) < len(urls): # verify-mode at least one success -> success +- return True +- else: # Either verification error or no download was successful - msg = 'Could not download to ' + path + ' from any of the following URLs: ' + ', '.join(urls) -- if verifyOnly: +- if verifyOnly: # verify-mode -> print error details - for url, e in verify_errors.items(): - msg += '\n ' + url + ': ' + str(e) -- abort(msg) -- else: -- return False +- if abortOnError: +- abort(msg) +- else: +- warn(msg) +- return False + print("FAKE download(path={} urls={} verbose={} abortOnError={} verifyOnly={})".format(path, urls, verbose, abortOnError, verifyOnly)) + return True def update_file(path, content, showDiff=False): """ -@@ -13393,6 +13274,7 @@ class Archiver(SafeFileCreation): +@@ -7887,30 +7799,6 @@ class PackedResourceLibrary(ResourceLibrary): + + def get_path(self, resolve): + extract_path = _make_absolute(self.extract_path, self.suite.dir) +- download_path = super(PackedResourceLibrary, self).get_path(resolve) +- if resolve and self._check_extract_needed(extract_path, download_path): +- extract_path_tmp = tempfile.mkdtemp(suffix=basename(extract_path), dir=dirname(extract_path)) +- try: +- # extract archive +- Extractor.create(download_path).extract(extract_path_tmp) +- # ensure modification time is up to date +- os.utime(extract_path_tmp, None) +- logv("Moving temporary directory {} to {}".format(extract_path_tmp, extract_path)) +- try: +- # attempt atomic overwrite +- os.rename(extract_path_tmp, extract_path) +- except OSError: +- # clean destination & re-try for cases where atomic overwrite doesn't work +- rmtree(extract_path, ignore_errors=True) +- os.rename(extract_path_tmp, extract_path) +- except OSError as ose: +- # Rename failed. Race with other process? +- if self._check_extract_needed(extract_path, download_path): +- # ok something really went wrong +- abort("Extracting {} failed!".format(download_path), context=ose) +- finally: +- rmtree(extract_path_tmp, ignore_errors=True) +- + return extract_path + + def _check_download_needed(self): +@@ -8430,7 +8318,7 @@ class VC(_with_metaclass(ABCMeta, object)): + :param str branch: a branch name + :param bool abortOnError: if True abort on error + """ +- abort(self.kind + " update_to_branch is not implemented") ++ self.run(['hg', vcdir] + cmd) + + def is_release_from_tags(self, vcdir, prefix): + """ +@@ -8831,7 +8719,7 @@ class HgConfig(VC): + return None + + def parent_info(self, vcdir, abortOnError=True): +- out = self.hg_command(vcdir, ["log", "-r", ".", "--template", "{author}|||{date|hgdate}"], abortOnError=abortOnError) ++ out = _check_output_str(["hg", '-R', vcdir, "log", "-r", ".", "--template", "{author}|||{date|hgdate}"]) + author, date = out.split("|||") + ts, _ = date.split(" ") + return self._sanitize_parent_info({ +@@ -14069,6 +13957,7 @@ class Archiver(SafeFileCreation): def _add_zip(self, filename, archive_name, provenance): self._add_provenance(archive_name, provenance) @@ -214,44 +289,3 @@ index af7a9c2..08c0ea8 100755 self.zf.write(filename, archive_name) def _add_str_zip(self, data, archive_name, provenance): -@@ -18541,12 +18423,35 @@ def _find_suite_import(importing_suite, suite_import, fatalIfMissing=True, load= - Attempts to locate an existing suite in the local context - Returns the path to the mx.name dir if found else None - """ -- if mode == 'binary': -- # binary suites are always stored relative to the importing suite in mx-private directory -- return importing_suite._find_binary_suite_dir(suite_import.name) -+ warn("FAKE CLONE: " + str(suite_import)) -+ if (suite_import.name == "truffle"): -+ return join(get_env('TMP'), "source", "truffle", "mx.truffle") -+ if (suite_import.name == "graal-nodejs"): -+ return join(get_env('MX_GIT_CACHE_DIR'), "graaljs", "graal-nodejs", "mx.graal-nodejs") -+ if (suite_import.name == "truffleruby"): -+ return join(get_env('MX_GIT_CACHE_DIR'), "truffleruby", "mx.truffleruby") -+ if (suite_import.name == "graalpython"): -+ return join(get_env('MX_GIT_CACHE_DIR'), "graalpython", "mx.graalpython") -+ if (suite_import.name == "vm"): -+ return join(get_env('TMP'), "source", "vm", "mx.vm") -+ if (suite_import.name == "fastr"): -+ return join(get_env('MX_GIT_CACHE_DIR'), "fastr", "mx.fastr") -+ if (suite_import.name == "sdk"): -+ return join(get_env('TMP'), "source", "sdk", "mx.sdk") -+ if (suite_import.name == "graal-js"): -+ return join(get_env('MX_GIT_CACHE_DIR'), "graaljs", "graal-js", "mx.graal-js") -+ if (suite_import.name == "regex"): -+ return join(get_env('TMP'), "source", "regex", "mx.regex") -+ if (suite_import.name == "substratevm"): -+ return join(get_env('TMP'), "source", "substratevm", "mx.substratevm") -+ if (suite_import.name == "tools"): -+ return join(get_env('TMP'), "source", "tools", "mx.tools") -+ if (suite_import.name == "sulong"): -+ return join(get_env('TMP'), "source", "sulong", "mx.sulong") -+ if (suite_import.name == "compiler"): -+ return join(get_env('TMP'), "source", "compiler", "mx.compiler") - else: -- # use the SuiteModel to locate a local source copy of the suite -- return _suitemodel.find_suite_dir(suite_import) -+ return join(get_env('MX_GIT_CACHE_DIR'), suite_import.name) - - def _get_import_dir(url, mode): - """Return directory where the suite will be cloned to""" |