newprelink.write("-b "+x+"\n")
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()
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 = os.stat(x)[stat.ST_MTIME]
+ newldpathtime = long(os.stat(x).st_mtime)
lib_dirs.add(normalize_path(x))
except OSError, oe:
if oe.errno == errno.ENOENT:
# ignore this path because it doesn't exist
continue
raise
+ if newldpathtime == current_time:
+ sleep_for_mtime_granularity = True
if x in prev_mtimes:
if prev_mtimes[x] == newldpathtime:
pass
outfile.write("setenv %s '%s'\n" % (x, env[x]))
outfile.close()
+ if sleep_for_mtime_granularity:
+ while current_time == long(time.time()):
+ sleep(1)
+
def ExtractKernelVersion(base_dir):
"""
Try to figure out what kernel version we are running