Menu

#4946 Omit (or set manually) PDF Metadata to have byte-for-byte reproducible buil;ds

New
nobody
None
Enhancement
2016-07-27
2016-07-27
No

On 26/07/16 21:25, Graham Percival wrote:

It would be nice if we could have byte-for-byte "reproducible" builds; i.e.
if the input file and the lilypond versions are the same, they would produce
identical output.

Currently we can set pdfmodDate, but the PDF metadata "CreationData" field
is still set to the current time. It would be great if we could either omit
that field, or set it manually.

Test case: compile this twice (keeping the first pdf), then compare the
files. Ideally they would produce identical output.

\version "2.19.45"
\header {
% Works great!
pdfmodDate = "D:20150811160000+01'00'"
% Doesn't change anything; not currently supported.
pdfcreationDate = "D:20150811160000+01'00'"
}
{ c'4 }

I will note that both ModDate and CreationDate are optional in the PDF spec
(according to David):
https://lists.gnu.org/archive/html/lilypond-user/2016-07/msg00162.html

Cheers,
- Graham

Discussion

  • David Kastrup

    David Kastrup - 2016-07-27

    I am skeptical that ModDate and CreationDate being optional by spec will buy us anything since LilyPond is not writing its PDF files itself and I would suspect ps2pdf to fill in those entries when nobody else does.

     
  • Thomas Morley

    Thomas Morley - 2016-07-27

    Here:
    http://lists.gnu.org/archive/html/lilypond-devel/2016-07/msg00065.html
    some sketch.
    Inserting there the following line seems to work
    (metadata-lookup-output 'pdfcreationDate 'creationDate "CreationDate")

    Ofcourse, data like
    File Modification Date/Time
    File Access Date/Time
    File Inode Change Date/Time
    will change.

    So I'm not not convinced either.

     

Log in to post a comment.