env_update: remove sleep_for_mtime_granularity
authorDavid James <davidjames@google.com>
Fri, 25 Mar 2011 17:10:54 +0000 (10:10 -0700)
committerZac Medico <zmedico@gentoo.org>
Fri, 25 Mar 2011 17:10:54 +0000 (10:10 -0700)
Instead of sleeping, use os.utime to avoid mtime ambiguity.

Change-Id: I359ececca19b6be9f5997ac5c8fe6fea6ea49dd5

Review URL: http://codereview.chromium.org/6676150

pym/portage/util/env_update.py

index 68531da59bc43feb3f1935d159b4d0f40da1c45e..e2cb97f02ab38c152c8402b284bc1573a3faaf69 100644 (file)
@@ -181,11 +181,6 @@ def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None,
                        newprelink.write("-b %s\n" % (x,))
                newprelink.close()
 
-       # Portage stores mtimes with 1 second granularity but in >=python-2.5 finer
-       # granularity is possible.  In order to avoid the potential ambiguity of
-       # mtimes that differ by less than 1 second, sleep here if any of the
-       # directories have been modified during the current second.
-       sleep_for_mtime_granularity = False
        current_time = long(time.time())
        mtime_changed = False
        lib_dirs = set()
@@ -205,8 +200,13 @@ def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None,
                                continue
                        raise
                if newldpathtime == current_time:
-                       sleep_for_mtime_granularity = True
-               if x in prev_mtimes:
+                       # Reset mtime to avoid the potential ambiguity of times that
+                       # differ by less than 1 second.
+                       newldpathtime -= 1
+                       os.utime(x, (newldpathtime, newldpathtime))
+                       prev_mtimes[x] = newldpathtime
+                       mtime_changed = True
+               elif x in prev_mtimes:
                        if prev_mtimes[x] == newldpathtime:
                                pass
                        else:
@@ -287,7 +287,3 @@ def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None,
        for x in env_keys:
                outfile.write("setenv %s '%s'\n" % (x, env[x]))
        outfile.close()
-
-       if sleep_for_mtime_granularity:
-               while current_time == long(time.time()):
-                       time.sleep(1)