Changes between Initial Version and Version 1 of Ticket #9711, comment 51


Ignore:
Timestamp:
Oct 15, 2013, 7:04:21 PM (6 years ago)
Author:
mingwandroid
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #9711, comment 51

    initial v1  
    1 I've concluded that libfaketime is somewhat broken for the use case that gitian build requires. I think that some effort to make it do what it is supposed to do.
     1I've concluded that libfaketime is somewhat broken for the use case that gitian build requires.
    22
    33Some problems I've seen include:
     
    551. The fake time values are not setup correctly for early calls (at least in the MT version any that happen between semaphore creation and the getenv("FAKETIME")/getenv("FAKETIME_FMT") calls).
    662. Caching functionality is broken; it doesn't respect the "FAKETIME" env. var, merrily replacing it with "+0" instead as soon as it decides that the cached values are too old. This means that long running processes stop faking time properly early in their execution.
    7 3. nano-second values are never touched for the stat family of functions - or likely any that call fake_time - and gnumake uses nanoseconds for dependency checking. Without fixing this, the dependency timestamp check could be replaced with "rand()%1" (Mike's blog post mentions this in point 4 of "Remaining Build Reproducibility Issues [Millisecond and below timestamps are not fixed by libfaketime]")
     73. nano-second values are never touched for the stat family of functions - or likely any that call fake_time - and gnumake uses nanoseconds for dependency checking. Without fixing this, the dependency timestamp check could be replaced with "rand()&1" (Mike's blog post mentions this in point 4 of "Remaining Build Reproducibility Issues [Millisecond and below timestamps are not fixed by libfaketime]")
    88
    99I've got a messy patch for these issues that I can share?