Bug#874102: texlive-bin: please make the PDF IDs reproducible
Source: texlive-bin
Version: 2017.20170613.44572-5
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: buildpath toolchain
X-Debbugs-Cc: reproducible-bugs@lists.alioth.debian.org
Hi,
Whilst working on the Reproducible Builds effort [0], we noticed
that texlive-bin was generating PDFs that vary in their "ID" field.
The ID varies because texlive generates it based on the build path
being included in the digest.
For more info, please see:
http://tug.org/pipermail/tex-live/2017-June/040398.html
http://tug.org/pipermail/tex-live/2017-July/040419.html
http://tug.org/pipermail/tex-live/2017-September/040573.html
Patch attached.
[0] https://reproducible-builds.org/
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby@debian.org / chris-lamb.co.uk
`-
diff --git a/debian/patches/reproducible-pdf-ids b/debian/patches/reproducible-pdf-ids
new file mode 100644
index 0000000..f1441d6
--- /dev/null
+++ b/debian/patches/reproducible-pdf-ids
@@ -0,0 +1,32 @@
+--- texlive-bin-2017.20170613.44572.orig/texk/web2c/pdftexdir/utils.c
++++ texlive-bin-2017.20170613.44572/texk/web2c/pdftexdir/utils.c
+@@ -707,29 +707,13 @@ void printID(strnumber filename)
+ md5_byte_t digest[16];
+ char id[64];
+ char *file_name;
+- char pwd[4096];
+ /* start md5 */
+ md5_init(&state);
+ /* get the time */
+ initstarttime();
+ md5_append(&state, (const md5_byte_t *) start_time_str, strlen(start_time_str));
+ /* get the file name */
+- if (getcwd(pwd, sizeof(pwd)) == NULL)
+- pdftex_fail("getcwd() failed (%s), path too long?", strerror(errno));
+-#ifdef WIN32
+- {
+- char *p;
+- for (p = pwd; *p; p++) {
+- if (*p == '\\')
+- *p = '/';
+- else if (IS_KANJI(p))
+- p++;
+- }
+- }
+-#endif
+ file_name = makecstring(filename);
+- md5_append(&state, (const md5_byte_t *) pwd, strlen(pwd));
+- md5_append(&state, (const md5_byte_t *) "/", 1);
+ md5_append(&state, (const md5_byte_t *) file_name, strlen(file_name));
+ /* finish md5 */
+ md5_finish(&state, digest);
diff --git a/debian/patches/series b/debian/patches/series
index 65b6637..076b59b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -14,3 +14,4 @@ disable-seetex-stdin-tests
upupstream-xdvi-desktop-file
mf-xt-fix-expose-events
fix-gcc7-errors
+reproducible-pdf-ids
Reply to: