On Wed, 25 Nov 2009 14:13:58 -0700 Denis Dupeyron wrote: > A quick note to tell you that I have tried to look for examples of > breakage due to how mtime preservation is currently implemented in > portage. Unfortunately I didn't find anything, maybe because I'm not > knowledgeable enough or because I can't afford to spend any more time > on this. If any of you can provide an example then please do so. Portage uses two ways of merging a file: os.rename() and the manual way. os.rename() correctly preserves mtimes. Python's os.utime call, which is what Portage uses to preserve mtimes for files that it installs the hard way, and which is not a wrapper for the Unix utime call, uses an IEEE 754 double to handle timestamps. But a double only gives sixteen accurate decimal digits, and you've got ten to the left of the decimal point, leaving only six reliably preserved, with the remaining three digits being corrupted. Thus, packages can end up being installed with some files having accurately-preserved mtimes, and some having corrupted mtimes, which will lead to mtime comparisons giving incorrect results. -- Ciaran McCreesh