# [tex-k] Reproducible builds using pdftex

Karl Berry karl at freefriends.org
Mon May 2 23:28:21 CEST 2016

- What is the advantage of dealing with the two envvars
SOURCE_DATE_EPOCH and SOURCE_DATE_EPOCH_TEX_PRIMITIVES instead of one?

Mainly that it makes it harder to change the meaning of TeX primitives.
(People have to read more obscure doc, make another setting.)  I think
that is highly desirable.

Beyond that, I can imagine, at least in theory, that a document might
look at (not typeset) the value of \year etc. for some reason, and want
to get its current value, even while using SOURCE_DATE_EPOCH to get a
reproducible build.  After all, many manuals do not typeset \today.

Indeed, I can see an argument that tinkering with \year etc. is
subverting the stated intention of the document authors, not to mention
the 30+year history of those primitives, to typeset \today (\year etc.)
as something other than the current date/time.

In reality, using \today in a document expected to be rebuilt in
reproducible circumstances seems like a bug to me.  We can work around
it with these envvars for practical reasons, but to me it still feels
like a bug, albeit of course one that no one would have thought about
before the whole reproducible stuff started.  It's like calling
gettimeofday() or whatever and getting a result other than the current
time.

In fact, I can see another argument that if you need to pretend it's
three weeks ago, you should change the date on the system instead of
expecting every application to cater to your desires.  But I won't go
that far :).  Anyway ...

- And what will be the difference?

If you set them both to the same value, no difference.

In our build process, I think we will set both envvars to the same
value for all packages to be built.

Yes, that's what I had in mind would happen.  -k