[Git][NTPsec/ntpsec][master] Address issue #268: Waf uses current date and time breaking repro builds

Eric S. Raymond gitlab at mg.gitlab.com
Sun Apr 16 18:41:48 UTC 2017


Eric S. Raymond pushed to branch master at NTPsec / ntpsec


Commits:
4e23794c by Eric S. Raymond at 2017-04-16T14:41:38-04:00
Address issue #268: Waf uses current date and time breaking repro builds

- - - - -


1 changed file:

- devel/packaging.txt


Changes:

=====================================
devel/packaging.txt
=====================================
--- a/devel/packaging.txt
+++ b/devel/packaging.txt
@@ -9,11 +9,10 @@ and boilerplate for default ntpd configuration.
 == Platforms without Python ==
 
 Many tools (actually, almost everything except the core daemon itself)
-have either been moved from C to Python or are in the process of
-translation.  This is an important step for improving maintainability
-and reducing attack surface.  However, we know that some platforms
-cannot support Python or choose not to include it in their core
-configuration.
+have been moved from C to Python. This is an important step for
+improving maintainability and reducing attack surface.  However, we
+know that some platforms cannot support Python or choose not to
+include it in their core configuration.
 
 For these platorms, we recommend using cx_Freeze to render the NTPsec
 Python programs, and all their imported modules, into standalone files.
@@ -49,5 +48,56 @@ not have Python installed and execute the programs there.
 There appears to be no speed advantage, or disadvantage, to running the
 binaries created by cx_freeze.
 
+== Non-reproducible builds ==
+
+Many Linux distributions now want binary-package builds to be fully
+reproducible - that is, the same sources always produce identical
+output.
+
+NTPsec *cannot* do this.  There are specific reasons it cannot.
+
+== Cross-era interoperability in modular calendar arithmetic ==
+
+The protocol necessarily uses time/date stamps of finite length in
+order to fit into fixed-size fields; they happen to have a 136-year
+cycle, but the problems this produces aren't dependent on the specific
+cycle length.  Thus, each instance of ntpd speaks time based on a
+specific epoch (cycle start date).  The epoch of era 0 was at the
+beginning of 1900; the epoch of era 1 will be in 2036.
+
+Two instances talking to each other have no way to know that they're
+based in the same era. To mitigate this problem, each instance
+has a pivot date and resolves incoming timestamps to the era that
+minimizes distance between now and the timestamp.  This procedure
+is part of the core protocol specification.
+
+An instance's pivot time is constructed from __TIME__/__DATE__ and
+thus binaries are intrinsically non-reproducible.  Any
+alternative to this most recent possible pivot would decrease
+the span of time in the future over which it can achieve timebase
+synchronization with instances from later eras, degrading function.
+
+== Disambiguation of NMEA dates ==
+
+Due to bad design of NMEA0183, the reporting protocol used by many
+GPS sensors, the NMEA driver in NTPsec sometimes has to make an
+assumption about what century it is.  Choice of a base-century
+hits the saame issues; using anything other than __TIME__/__DATE__
+would decrease the future span over which the driver's assumption
+is correct.  The alternative - trusting the system clock to report
+the right century - could produce very bad behavior near century
+boundaries.
+
+== Unpredictable leap seconds ==
+
+On first startup (that is, before it can fetch a leapsecond file)
+NTPsec also needs to make an assumption about UTC's offset from TAI.
+To do this it captures that offset at build time, again implying
+nonreproducibility of builds in the prsens of leap-offset bumps.
+
+Again, any attempt to change this would necessarily increase risks 
+by shortening the span over which an ntpd instance will speak correct
+UTC in the future.
+
 // end
 



View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/4e23794c37f6053fb2210831c27066059114ee58

---
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/4e23794c37f6053fb2210831c27066059114ee58
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ntpsec.org/pipermail/vc/attachments/20170416/f0f464ba/attachment.html>


More information about the vc mailing list