From 6f8d7390f1c3176ec174df6f9bcad099499fd749 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 15 Jul 2022 18:43:14 +0200 Subject: Use lexists instead of exists during fetch (#31509) --- lib/spack/spack/fetch_strategy.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index ed2e5eeb42..8f17e7768b 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -337,9 +337,7 @@ class URLFetchStrategy(FetchStrategy): continue try: - partial_file, save_file = self._fetch_from_url(url) - if save_file and (partial_file is not None): - llnl.util.filesystem.rename(partial_file, save_file) + self._fetch_from_url(url) break except FailedDownloadError as e: errors.append(str(e)) @@ -389,9 +387,7 @@ class URLFetchStrategy(FetchStrategy): @_needs_stage def _fetch_urllib(self, url): - save_file = None - if self.stage.save_filename: - save_file = self.stage.save_filename + save_file = self.stage.save_filename tty.msg('Fetching {0}'.format(url)) # Run urllib but grab the mime type from the http headers @@ -401,16 +397,18 @@ class URLFetchStrategy(FetchStrategy): # clean up archive on failure. if self.archive_file: os.remove(self.archive_file) - if save_file and os.path.exists(save_file): + if os.path.lexists(save_file): os.remove(save_file) msg = 'urllib failed to fetch with error {0}'.format(e) raise FailedDownloadError(url, msg) + if os.path.lexists(save_file): + os.remove(save_file) + with open(save_file, 'wb') as _open_file: shutil.copyfileobj(response, _open_file) self._check_headers(str(headers)) - return None, save_file @_needs_stage def _fetch_curl(self, url): @@ -471,7 +469,7 @@ class URLFetchStrategy(FetchStrategy): if self.archive_file: os.remove(self.archive_file) - if partial_file and os.path.exists(partial_file): + if partial_file and os.path.lexists(partial_file): os.remove(partial_file) if curl.returncode == 22: @@ -498,7 +496,9 @@ class URLFetchStrategy(FetchStrategy): "Curl failed with error %d" % curl.returncode) self._check_headers(headers) - return partial_file, save_file + + if save_file and (partial_file is not None): + fs.rename(partial_file, save_file) @property # type: ignore # decorated properties unsupported in mypy @_needs_stage @@ -613,7 +613,7 @@ class CacheURLFetchStrategy(URLFetchStrategy): # remove old symlink if one is there. filename = self.stage.save_filename - if os.path.exists(filename): + if os.path.lexists(filename): os.remove(filename) # Symlink to local cached archive. -- cgit v1.2.3-70-g09d2