From: Zac Medico Date: Thu, 11 Dec 2008 03:23:24 +0000 (-0000) Subject: Make BinpkgFetcher synchronize the local timestamp of the downloaded file X-Git-Tag: v2.2_rc18~23 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=453c3a1b7a5568d0a06f2c77c86fd098e9af39ba;p=portage.git Make BinpkgFetcher synchronize the local timestamp of the downloaded file with the remote file, if the fetcher hasn't done it automatically. svn path=/main/trunk/; revision=12201 --- diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 632765490..de3ab6279 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -3462,6 +3462,30 @@ class BinpkgFetcher(SpawnProcess): def _set_returncode(self, wait_retval): SpawnProcess._set_returncode(self, wait_retval) + if self.returncode == os.EX_OK: + # If possible, update the mtime to match the remote package if + # the fetcher didn't already do it automatically. + bintree = self.pkg.root_config.trees["bintree"] + if bintree._remote_has_index: + remote_mtime = bintree._remotepkgs[self.pkg.cpv].get("MTIME") + if remote_mtime is not None: + try: + remote_mtime = float(remote_mtime) + except ValueError: + pass + else: + try: + local_mtime = os.stat(self.pkg_path).st_mtime + except OSError: + pass + else: + if remote_mtime != local_mtime: + try: + os.utime(self.pkg_path, + (remote_mtime, remote_mtime)) + except OSError: + pass + if self.locked: self.unlock()