1 |
Ciaran McCreesh posted on Wed, 25 Nov 2009 21:27:18 +0000 as excerpted: |
2 |
|
3 |
> Portage uses two ways of merging a file: os.rename() and the manual way. |
4 |
> |
5 |
> os.rename() correctly preserves mtimes. |
6 |
> |
7 |
> Python's os.utime call, which is what Portage uses to preserve mtimes |
8 |
> for files that it installs the hard way, and which is not a wrapper for |
9 |
> the Unix utime call, uses an IEEE 754 double to handle timestamps. But a |
10 |
> double only gives sixteen accurate decimal digits, and you've got ten to |
11 |
> the left of the decimal point, leaving only six reliably preserved, with |
12 |
> the remaining three digits being corrupted. |
13 |
> |
14 |
> Thus, packages can end up being installed with some files having |
15 |
> accurately-preserved mtimes, and some having corrupted mtimes, which |
16 |
> will lead to mtime comparisons giving incorrect results. |
17 |
|
18 |
That's a great explanation (thanks, I now know the details to the degree |
19 |
I'd be interested), but what was asked for was examples of breakage, aka |
20 |
actual bugs. I seem to remember either you or someone else mentioning |
21 |
that there had been a couple issues already, and I'll take the claim at |
22 |
face value, but actual bug numbers would be nice. =:^) |
23 |
|
24 |
-- |
25 |
Duncan - List replies preferred. No HTML msgs. |
26 |
"Every nonfree program has a lord, a master -- |
27 |
and if you use the program, he is your master." Richard Stallman |