When integer mtime is desired, use stat_obj[stat.ST_MTIME] instead of the
authorZac Medico <zmedico@gentoo.org>
Mon, 21 Dec 2009 03:03:51 +0000 (03:03 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 21 Dec 2009 03:03:51 +0000 (03:03 -0000)
float st_mtime in order to avoid rounding *up* in some rare cases.

svn path=/main/trunk/; revision=15125

12 files changed:
pym/_emerge/BinpkgFetcher.py
pym/_emerge/actions.py
pym/_emerge/main.py
pym/portage/__init__.py
pym/portage/cache/flat_hash.py
pym/portage/cache/metadata.py
pym/portage/cvstree.py
pym/portage/dbapi/bintree.py
pym/portage/dbapi/porttree.py
pym/portage/dbapi/vartree.py
pym/portage/eclass_cache.py
pym/portage/update.py

index fbf34df72506661d0e573a3c807f1e45a7ebfdf0..bd8b141f3ece3d7ca971c3ab0b08105a7f380ba1 100644 (file)
@@ -7,6 +7,7 @@ try:
        from urllib.parse import urlparse as urllib_parse_urlparse
 except ImportError:
        from urlparse import urlparse as urllib_parse_urlparse
+import stat
 import sys
 import portage
 from portage import os
@@ -115,7 +116,7 @@ class BinpkgFetcher(SpawnProcess):
                                                pass
                                        else:
                                                try:
-                                                       local_mtime = long(os.stat(self.pkg_path).st_mtime)
+                                                       local_mtime = os.stat(self.pkg_path)[stat.ST_MTIME]
                                                except OSError:
                                                        pass
                                                else:
index d14b6c3a1be4903010e3b25402937b974682e378..1d7fdc6863789cb6dfafa4ead2ae2dd9199502dd 100644 (file)
@@ -2566,7 +2566,7 @@ def git_sync_timestamps(settings, portdir):
                        if ec in updated_ec_mtimes:
                                continue
                        ec_path = os.path.join(ec_dir, ec + ".eclass")
-                       current_mtime = long(os.stat(ec_path).st_mtime)
+                       current_mtime = os.stat(ec_path)[stat.ST_MTIME]
                        if current_mtime != ec_mtime:
                                os.utime(ec_path, (ec_mtime, ec_mtime))
                        updated_ec_mtimes[ec] = ec_mtime
index f1da3bd5f6810cf6aa1be66bed1671e7c4d061de..98b8478a8765a176c680cbef064d7df6e03c2cd8 100644 (file)
@@ -6,6 +6,7 @@ from __future__ import print_function
 
 import logging
 import signal
+import stat
 import sys
 import textwrap
 import platform
@@ -106,7 +107,7 @@ def chk_updated_info_files(root, infodirs, prev_mtimes, retval):
                                continue
                        inforoot=normpath(root+z)
                        if os.path.isdir(inforoot):
-                               infomtime = long(os.stat(inforoot).st_mtime)
+                               infomtime = os.stat(inforoot)[stat.ST_MTIME]
                                if inforoot not in prev_mtimes or \
                                        prev_mtimes[inforoot] != infomtime:
                                                regen_infodirs.append(inforoot)
@@ -196,7 +197,7 @@ def chk_updated_info_files(root, infodirs, prev_mtimes, retval):
                                                del e
 
                                #update mtime so we can potentially avoid regenerating.
-                               prev_mtimes[inforoot] = long(os.stat(inforoot).st_mtime)
+                               prev_mtimes[inforoot] = os.stat(inforoot)[stat.ST_MTIME]
 
                        if badcount:
                                out.eerror("Processed %d info files; %d errors." % \
index 0e26acbc8564d6ded345d48bb09e134ecb2de78b..04f5cea521b55c974cd2d9732b3f273ae2ec9289 100644 (file)
@@ -1121,7 +1121,7 @@ def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None,
        for lib_dir in portage.util.unique_array(specials["LDPATH"]+['usr/lib','usr/lib64','usr/lib32','lib','lib64','lib32']):
                x = os.path.join(target_root, lib_dir.lstrip(os.sep))
                try:
-                       newldpathtime = long(os.stat(x).st_mtime)
+                       newldpathtime = os.stat(x)[stat.ST_MTIME]
                        lib_dirs.add(normalize_path(x))
                except OSError as oe:
                        if oe.errno == errno.ENOENT:
@@ -9035,7 +9035,7 @@ def _global_updates(trees, prev_mtimes):
                        if len(errors) == 0:
                                # Update our internal mtime since we
                                # processed all of our directives.
-                               timestamps[mykey] = long(mystat.st_mtime)
+                               timestamps[mykey] = mystat[stat.ST_MTIME]
                        else:
                                for msg in errors:
                                        writemsg("%s\n" % msg, noiselevel=-1)
index 49d7ce6a0c756cd4088905fa1b37d21220ddd263..93411580584f943c5c767fd95b2efa8cb09f259d 100644 (file)
@@ -48,7 +48,7 @@ class database(fs_template.FsBased):
                                if '_mtime_' not in d:
                                        # Backward compatibility with old cache
                                        # that uses mtime mangling.
-                                       d['_mtime_'] = long(_os.fstat(myf.fileno()).st_mtime)
+                                       d['_mtime_'] = _os.fstat(myf.fileno())[stat.ST_MTIME]
                                return d
                        finally:
                                myf.close()
index 2704bd5135a3fd14cfae5a4a2c0c853a51868400..650658afc41652eb2f7644a8716a9abbcb1eed8a 100644 (file)
@@ -5,6 +5,7 @@
 
 import errno
 import re
+import stat
 import sys
 from portage import os
 from portage import _encodings
@@ -110,7 +111,7 @@ class database(flat_hash.database):
                        except EnvironmentError:
                                pass
                        else:
-                               existing_mtime = long(existing_st.st_mtime)
+                               existing_mtime = existing_st[stat.ST_MTIME]
                                if values['_mtime_'] == existing_mtime and \
                                        existing_content == new_content:
                                        return
index 1f352efebb10246345ba8de39b42c506bb72753b..ca9d56d2f140fe6221325e8b9777c4714ce6c538 100644 (file)
@@ -7,6 +7,7 @@ from __future__ import print_function
 
 import codecs
 import re
+import stat
 import sys
 import time
 
@@ -274,7 +275,7 @@ def getentries(mydir,recursive=0):
                                entries["files"][file]["status"]=["exists"]
                        try:
                                mystat=os.stat(mydir+"/"+file)
-                               mytime = time.asctime(time.gmtime(long(mystat.st_mtime)))
+                               mytime = time.asctime(time.gmtime(mystat[stat.ST_MTIME]))
                                if "status" not in entries["files"][file]:
                                        entries["files"][file]["status"]=[]
                                if mytime==entries["files"][file]["date"]:
index d4039e39604256aefc183638bf98f3350999b27b..e817e3d035b6cbf3b2a96297e3079b30470ea107 100644 (file)
@@ -509,7 +509,7 @@ class binarytree(object):
                                                match = None
                                                for d in possibilities:
                                                        try:
-                                                               if long(d["MTIME"]) != long(s.st_mtime):
+                                                               if long(d["MTIME"]) != s[stat.ST_MTIME]:
                                                                        continue
                                                        except (KeyError, ValueError):
                                                                continue
@@ -614,7 +614,7 @@ class binarytree(object):
                                        d = metadata.get(mycpv, {})
                                        if d:
                                                try:
-                                                       if long(d["MTIME"]) != long(s.st_mtime):
+                                                       if long(d["MTIME"]) != s[stat.ST_MTIME]:
                                                                d.clear()
                                                except (KeyError, ValueError):
                                                        d.clear()
@@ -627,7 +627,7 @@ class binarytree(object):
 
                                        d["CPV"] = mycpv
                                        d["SLOT"] = slot
-                                       d["MTIME"] = str(long(s.st_mtime))
+                                       d["MTIME"] = str(s[stat.ST_MTIME])
                                        d["SIZE"] = str(s.st_size)
 
                                        d.update(zip(self._pkgindex_aux_keys,
@@ -968,7 +968,7 @@ class binarytree(object):
 
                d["CPV"] = cpv
                st = os.stat(pkg_path)
-               d["MTIME"] = str(long(st.st_mtime))
+               d["MTIME"] = str(st[stat.ST_MTIME])
                d["SIZE"] = str(st.st_size)
 
                rel_path = self._pkg_paths[cpv]
index 825ca821c9cf80cf6560071e8b05279461bc3b4c..7536f7972f8aca7e29da155fd32c0c7271bca8dc 100644 (file)
@@ -672,7 +672,7 @@ class portdbapi(dbapi):
                mydata["repository"] = self._repository_map.get(mylocation, "")
 
                mydata["INHERITED"] = ' '.join(mydata.get("_eclasses_", []))
-               mydata["_mtime_"] = long(st.st_mtime)
+               mydata["_mtime_"] = st[stat.ST_MTIME]
 
                eapi = mydata.get("EAPI")
                if not eapi:
index 5e555041be357d698f884345624bb4cba4e80de5..17315eee2bb9fcfb5c6dd71a26e7330281e72ee1 100644 (file)
@@ -51,6 +51,7 @@ from collections import deque
 import re, shutil, stat, errno, copy, subprocess
 import logging
 import os as _os
+import stat
 import sys
 import time
 import warnings
@@ -962,7 +963,7 @@ class vardbapi(dbapi):
                if mysplit[0] == '*':
                        mysplit[0] = mysplit[0][1:]
                try:
-                       mystat = os.stat(self.getpath(mysplit[0]))[stat.ST_MTIME]
+                       mystat = os.stat(self.getpath(mysplit[0])).st_mtime
                except OSError:
                        mystat = 0
                if use_cache and mycp in self.cpcache:
@@ -1238,7 +1239,7 @@ class vardbapi(dbapi):
                        if e.errno != errno.ENOENT:
                                raise
                        raise KeyError(mycpv)
-               mydir_mtime = long(mydir_stat.st_mtime)
+               mydir_mtime = mydir_stat[stat.ST_MTIME]
                pkg_data = self._aux_cache["packages"].get(mycpv)
                pull_me = cache_these.union(wants)
                mydata = {"_mtime_" : mydir_mtime}
@@ -1306,7 +1307,7 @@ class vardbapi(dbapi):
                results = []
                for x in wants:
                        if x == "_mtime_":
-                               results.append(long(st.st_mtime))
+                               results.append(st[stat.ST_MTIME])
                                continue
                        try:
                                myf = codecs.open(
@@ -4279,7 +4280,7 @@ class dblink(object):
                                                                        cfgprot = cfgfiledict["IGNORE"]
                                                                        if not moveme:
                                                                                zing = "---"
-                                                                               mymtime = long(mystat.st_mtime)
+                                                                               mymtime = mystat[stat.ST_MTIME]
                                                                else:
                                                                        moveme = 1
                                                                        cfgprot = 1
index 26019400b89bd8f69ce019a911a61fa9733d8dba..39e29d540c86f0e5ab0fb3720cc2d0422771d8bd 100644 (file)
@@ -5,6 +5,7 @@
 
 __all__ = ["cache"]
 
+import stat
 import sys
 import warnings
 from portage.util import normalize_path
@@ -95,7 +96,7 @@ class cache(object):
                                if not y.endswith(".eclass"):
                                        continue
                                try:
-                                       mtime = long(os.stat(os.path.join(x, y)).st_mtime)
+                                       mtime = os.stat(os.path.join(x, y))[stat.ST_MTIME]
                                except OSError:
                                        continue
                                ys=y[:-eclass_len]
index 3df7b08f3ac3af8eb0869376f676e2afe13dce29..b6fa40017509bf7fb5f9632cf8471e28b9f72df1 100644 (file)
@@ -122,7 +122,7 @@ def grab_updates(updpath, prev_mtimes=None):
                file_path = os.path.join(updpath, myfile)
                mystat = os.stat(file_path)
                if file_path not in prev_mtimes or \
-               long(prev_mtimes[file_path]) != long(mystat.st_mtime):
+               long(prev_mtimes[file_path]) != mystat[stat.ST_MTIME]:
                        content = codecs.open(_unicode_encode(file_path,
                                encoding=_encodings['fs'], errors='strict'),
                                mode='r', encoding=_encodings['repo.content'], errors='replace'