diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-12-12 21:40:20 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-12-12 21:40:20 +0000 |
commit | 17b001da3ca19a5bb7ee0c0baa2ec7eea15928fc (patch) | |
tree | ecd4cecef06e4b631210db72da06b78f5199ecdc | |
parent | 0f8c48f5f8d1e0ba981bf47aee901ce18ff1183c (diff) | |
download | portage-17b001da3ca19a5bb7ee0c0baa2ec7eea15928fc.tar.gz portage-17b001da3ca19a5bb7ee0c0baa2ec7eea15928fc.tar.bz2 portage-17b001da3ca19a5bb7ee0c0baa2ec7eea15928fc.zip |
Make BinpkgFetcher synchronize the local timestamp of the downloaded file
with the remote file, if the fetcher hasn't done it automatically.
(trunk r12201)
svn path=/main/branches/2.1.6/; revision=12234
-rw-r--r-- | pym/_emerge/__init__.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 3c2cf87c2..a957b7136 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -3443,6 +3443,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() |