issues.yml 89 KB
Newer Older
1
timestamps_from_cpp_macros:
Jérémy Bobbio's avatar
Jérémy Bobbio committed
2
  description: |
3
    The C pre-processor macros `__DATE__`, `__TIME__`,
Holger Levsen's avatar
Holger Levsen committed
4
    capture the current time, and thus will obviously make a build
Jérémy Bobbio's avatar
Jérémy Bobbio committed
5
    unreproducible.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
6
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros
7
  deterministic: True
8 9 10 11 12
timestamps_from_timestamp_macro:
  description: |
    The `__TIMESTAMP__` macro captures the file modification time, which
    should be deterministic (if the file is not modified at build time),
    but varies (at least with gcc) with timezone.
13
  deterministic: True
14 15 16 17
timestamps_from_cpp_macros_in_d:
  description: |
    The D compiler also support C-like `__DATE__` and `__TIME__` macros, which
    embed the build time/date into the object files.
18
  deterministic: True
19 20 21 22 23
timestamps_from_cpp_macros_in_haskell:
  description: |
    The Haskell compiler also support C-like `__DATE__` and `__TIME__` macros, which
    embed the build time/date into the object files.
    .
Jemimah O.'s avatar
Jemimah O. committed
24
    eg. https://sources.debian.net/src/darcs/latest/darcs/darcs.hs/#L85
25
  deterministic: True
Santiago Vila's avatar
Santiago Vila committed
26 27 28 29
timestamps_in_cpio_archive:
  description: |
    cpio archives capture build time in mtime of its members.
    Workaround: Set mtimes on disk before creating cpio archive
30
  deterministic: True
31 32 33 34 35 36
timestamps_in_h_generated_by_qdbusxml2cpp:
  description: |
    qdbusxml2cpp uses a timestamp for its anti-double-inclusion
    definition in C header it generates.
    e.g. '#define QUERYINTERFACE_H_1425457739'
  deterministic: True
37 38 39
timestamps_in_documentation_generated_by_phpdox:
  description: |
    phpdox adds a timestamp in manpages it generates (id="buildinfo")
Chris Lamb's avatar
Chris Lamb committed
40 41
    .
    /usr/share/php/TheSeer/phpDox/generator/enricher/build/Build.php ?
42 43 44
timestamps_in_documentation_generated_by_doxygen:
  description: |
    If Doxyfile contains HTML_TIMESTAMP = YES, Doxygen will add a
Jérémy Bobbio's avatar
Jérémy Bobbio committed
45 46
    timestamp to its generated documentation.
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByDoxygen
47
  deterministic: True
48 49 50
timestamps_in_manpages_generated_by_doxygen:
  description: |
    Doxygen uses timestamp in manpages it generates
51
    https://bugs.debian.org/785624
52 53
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInManpagesGeneratedByDoxygen
  deterministic: True
54 55 56 57
year_variable_in_documentation_generated_by_doxygen:
  description: |
    Doxygen docs can use $year which uses the current year, not one based on
    SOURCE_DATE_EPOCH.
58
  url: https://bugs.debian.org/863054
59
  deterministic: True
60 61 62
build_dir_in_documentation_generated_by_doxygen:
  description: |
    If FULL_PATH_NAMES = YES, doxygen will include a build path into the
63 64
    documentation based on dirname(1). (Can also include it via other means,
    including generating SVG images with build paths)
65 66 67 68
build_dir_in_tags_generated_by_doxygen:
  description: |
    Even if FULL_PATH_NAMES = NO, doxygen will include a build path into the
    "tags" files.
69 70
nondeterministic_ordering_in_documentation_generated_by_doxygen:
  description: |
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
71
    "Additional Inherited Members" has nondeterministic children in the (HTML?)
72
    docs.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
73 74 75 76
timestamps_in_manpages_generated_by_yat2m:
  description: |
    yat2m adds a timestamp in manpages it generates.
  deterministic: True
77
timestamps_in_manpages_generated_by_perl_extutils_command_mm:
78
  description: |
79
    ExtUtils::Command::MM adds current time, eg.
80 81
    .
    =head2 Sat Aug 13 11:14:56 2016: C<Module> L<RT::Extension::Spa
Chris Lamb's avatar
Chris Lamb committed
82
  url: https://bugs.debian.org/834190
83 84 85 86 87
timestamps_in_perllocal_pod_manpages_generated_by_perl_extutils_mm_unix:
  description: |
    ExtUtils::MM_Unix adds current time, eg.
    .
    =head2 Thu Sep  7 13:51:59 2017: C<Module> L<RT::Extension::Cust
Chris Lamb's avatar
Chris Lamb committed
88
  url: https://bugs.debian.org/835815
89 90 91
timestamps_in_documentation_generated_by_naturaldocs:
  description: |
    naturaldocs uses today's date
92
  url: https://bugs.debian.org/831377
93
  deterministic: True
94 95 96
timestamps_in_documentation_generated_by_asciidoc:
  description: |
    asciidoc adds a timestamp at the end of a generated HTML file.
97
    This timestamp is based on the date of the file but it can change depending on the TZ environment variable.
98
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByAsciidoc
99
  deterministic: True
100 101 102
timestamps_in_documentation_generated_by_man2html:
  description: |
    man2html adds a timestamp at the end of a generated HTML file.
103
    Patch at https://bugs.debian.org/796130 applied to our repo.
104
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByMan2Html
105
  deterministic: True
Jérémy Bobbio's avatar
Jérémy Bobbio committed
106 107 108
timestamps_in_dvi_generated_by_latex:
  description: |
    The creation date of the DVI file is the current time.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
109
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDviGeneratedByLaTeX
110
  deterministic: True
111
timestamps_in_ps_generated_by_dvips:
112
  description: |
Chris Lamb's avatar
Chris Lamb committed
113
    eg. %%CreationDate (or DVIPSSource?) in header
Chris Lamb's avatar
Chris Lamb committed
114
    .
Jemimah O.'s avatar
Jemimah O. committed
115
    https://sources.debian.net/src/texlive-bin/latest/texk/web2c/pdftexdir/pdftex.web/#L14449
Reiner Herrmann's avatar
Reiner Herrmann committed
116 117
    .
    DVIPSSource date Can be set to SOURCE_DATE_EPOCH by setting FORCE_SOURCE_DATE to 1.
118
  deterministic: True
119 120
blacklisted_on_jenkins:
  description: |
121
    Some packages have been blacklisted in our test infrastructure because
122 123 124
    their build hangs, takes too long, spawns processes that are not killed, or
    simply because they use too many resources for our current capacity. (This
    is purely practical step - we would like to test these packages.)
125 126
blacklisted_on_jenkins_armhf_only:
  description: |
127
    Some packages have been blacklisted only on armhf in our test infrastructure 
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
128 129 130
    because their builds take too long on the tiny armhf boards we're using.
    The mitigation against this is to add more architectures or to wait until
    we test against the debian archive, when it will become sensible to raise
131
    the 18h timeout for a single build.
Holger Levsen's avatar
Holger Levsen committed
132
    Until his happens, please rely on the amd64, i386 and arm64 tests.
Chris Lamb's avatar
Chris Lamb committed
133
diffoscope_runs_forever:
134
  url: https://reproducible.debian.net/index_breakages.html
135
  description: |
136
    Some packages cannot be analysed by diffoscope due to it running "forever".
137 138 139
    Currently the diffoscope process is killed after 120 minutes.
    https://reproducible.debian.net/index_breakages.html collects a list of currently 
    undiffable packages (as well as other issues with tests.reproducile-builds.org.
140 141
timestamps_in_maven_version_files:
  description: |
Chris Lamb's avatar
Chris Lamb committed
142
    Maven writes a timestamp to version.properties files.
143
  deterministic: True
144 145 146 147
timestamps_in_maven_metadata_local_xml_files:
  description: |
    Maven writes a timestamp to maven-metadata-local.xml files.
  deterministic: True
148 149 150
locale_differences_in_pom:
  description: |
    Some tool is writing .pom files with randomly ordered data.
151
  deterministic: True
Jérémy Bobbio's avatar
Jérémy Bobbio committed
152 153 154
timestamps_in_pe_binaries:
  description: |
    PE binaries contain a timestamp and maybe randomness in an UUID.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
155
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPEBinaries
156
  deterministic: True
157 158 159 160 161 162 163
randomness_in_documentation_generated_by_scilab:
  description: |
    Whilst this looks like randomness in section_XXXX links, I believe this is
    actually generated by the build system capturing the entire build path
    .
     <span·class="top"><a·href="section_be5547c931fe4d46ae907fad928a7cc2.html">ANN·toolbox</a></span>
    .
Jemimah O.'s avatar
Jemimah O. committed
164
    Source is likely https://sources.debian.net/src/scilab/latest/modules/helptools/macros/xmltoformat.sci/#L1569
165
randomness_in_documentation_generated_by_epydoc:
166
  description: |
Jérémy Bobbio's avatar
Jérémy Bobbio committed
167 168 169
    Epydoc will add timestamps to the HTML file it produces. It can also generates
    different class index depending on filesystem ordering. It might also output
    references to object with a memory address.
170
    Related bugs:
171
        https://bugs.debian.org/827416
Jérémy Bobbio's avatar
Jérémy Bobbio committed
172
  url: https://wiki.debian.org/ReproducibleBuilds/EpydocIssues
173 174
timestamps_in_python_code_generated_by_cheetah:
  description: |
Chris Lamb's avatar
Chris Lamb committed
175
    Cheetah embeds two timestamps into generated Python code by default.
176 177
    This can be disabled with a compiler flag.
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPythonCodeGeneratedByCheetah
178
  deterministic: True
179 180
random_order_in_python_environment_pickle:
  description: |
181
    Python doctrees writes a `environment.pickle.gz`, in a random order and embeds encoding in some `*.doctree.gz` files.
182
locale_dependent_order_in_devlibs_depends:
Chris Lamb's avatar
Chris Lamb committed
183
  url: https://bugs.debian.org/796330
184 185
  description: |
    devlibs:Depends is sorted in a locale-dependent way.
186
  deterministic: True
187
fontforge_resets_modification_time:
188 189 190 191
  description: |
    When a fontforge script is used, if the font loaded is modified
    in any way, then the font modification time is set to the current
    time.
192 193 194
    .
    Initial patch in https://bugs.debian.org/774274 but withdrawn after
    SOURCE_DATE_EPOCH proposal.
195 196
    .
    WIP patch at https://gist.githubusercontent.com/lamby/60a545b37b778e148702c342bbf86bd9/raw/19a39af51d669fde042b261236f65ba72f75662a/903_reproducubile_build.diff
197 198
    .
    Related upstream bug at https://github.com/fontforge/fontforge/issues/2490
Jérémy Bobbio's avatar
Jérémy Bobbio committed
199
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInFontsGeneratedWithFontForge
200
  deterministic: True
201 202 203 204
build_time_embedded_by_fontforge:
  description: |
    When a fontforge script is used, it can appear to use the current build
    time in embedded metadata in a field (not the "modification time").
205
varying_mtimes_in_data_tar_gz_or_control_tar_gz:
Jérémy Bobbio's avatar
Jérémy Bobbio committed
206 207 208
  description: |
    We currently adjust the file mtimes in dh_builddeb. Packages which
    calls `dpkg --build` directly should have a prior call to:
209
    `export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s)`
Jérémy Bobbio's avatar
Jérémy Bobbio committed
210
    and
211 212
    `find debian/tmp -newermt "@$$SOURCE_DATE_EPOCH" -print0 | \
         xargs -0r touch --no-dereference --date="@$$SOURCE_DATE_EPOCH"`
Jérémy Bobbio's avatar
Jérémy Bobbio committed
213
    Another option is to convert the build system to `dh`.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
214
  url: https://wiki.debian.org/ReproducibleBuilds/Howto#Members_of_control.tar_and_data.tar_have_varying_mtimes
215
  deterministic: True
216 217 218
timestamps_in_gzip_headers:
  description: |
    gzip stores a timestamp by default in its header.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
219
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInGzipHeaders
220
  deterministic: True
221 222 223
timestamps_in_png:
  description: |
    PNG can capture build time with the tIME chunk or custom keywords.
Chris Lamb's avatar
Chris Lamb committed
224
    These timestamps are currently removed by strip-nondeterminism, so are not visible to diffoscope anymore. Yet fixing the root cause would be nice.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
225
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPNG
226
  deterministic: True
227 228
timestamps_in_static_libraries:
  description: |
229 230 231
    .a files are ar archives. Since binutils 2.25-6 they should be deterministic
    by default, but there are some remaining buggy corner cases - see
    bug #843210 for example if the package uses binutils-multiarch.
232
    (#843210 has been fixed in sid now, hopefully this issue becomes moot now.)
233 234 235
    .
    Other tools that create ar archives directly should in theory be covered by
    strip-nondeterminism, but it is still good to patch them.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
236
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInStaticLibraries
237
  deterministic: True
238 239
timestamps_in_tarball:
  description: |
Chris Lamb's avatar
Chris Lamb committed
240
    Tarballs capture build time in mtime of its members.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
241
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInTarball
242
  deterministic: True
243 244 245
random_order_in_tarball:
  description: |
    The order of members inside the tarball varies.
246
  url: https://wiki.debian.org/ReproducibleBuilds/FileOrderInTarballs
247 248 249
timestamps_in_documentation_generated_by_javadoc:
  description: |
    javadoc will add timestamps to the HTML file it produces.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
250
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByJavadoc
251
  deterministic: True
Peter De Wachter's avatar
Peter De Wachter committed
252 253
random_order_in_documentation_generated_by_javadoc:
  description: |
Chris West (Faux)'s avatar
Chris West (Faux) committed
254
    Some entries inside individual "class-use" documentation pages are emitted in different orders.
255 256 257
    This appears to only happen with multi-module maven projects, i.e. possibly during
    `mvn javadoc:aggregate`.
    .
Chris West (Faux)'s avatar
Chris West (Faux) committed
258
    In `jacoco`, you can observe files are generated consistently in the individual submodule
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
259
    documentation folders, but then differently when aggregated. Maybe a coincidence.
Chris West (Faux)'s avatar
Chris West (Faux) committed
260
    .
261 262
    Historically, there were some other issues. These have disappeared, but it's not clear why.
    The major version of OpenJDK has changed since these issues were reported (was 7, now 8),
Chris West (Faux)'s avatar
Chris West (Faux) committed
263
    although the code that was believed to be at fault remains unchanged. These are detailed below.
264
    .
Chris West (Faux)'s avatar
Chris West (Faux) committed
265
    The `package-tree.html` file generated by javadoc used to contain an unsorted index.
266
    .
267
    Perhaps caused by packageFiles is a Map<String, List<JavaFileObject>> in
268 269
    openjdk-7-jdk -> ./langtools.tar.bz2 ->
    src/share/classes/com/sun/tools/javadoc/JavadocTool.java
270
    .
271 272 273 274
    There was also a locale-specific wrapping issue, which has disappeared.
    This may be because enough things are using javahelper, which sets the locale.
    .
    Likely cause is
275
    jdk9_dev/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/DocLocale.java +172
276 277
    .
    Workaround is
Jemimah O.'s avatar
Jemimah O. committed
278
    https://sources.debian.net/src/maven-debian-helper/latest/share/cdbs/1/class/maven.mk/?hl=136#L136
279 280 281
nondeterministic_java_bytecode:
  description: |
    Source unknown.
282 283 284
timestamps_in_documentation_generated_by_groovydoc:
  description: |
    Groovydoc will add timestamps to the HTML file it produces.
Jemimah O.'s avatar
Jemimah O. committed
285
    https://sources.debian.net/src/groovy/latest/src/main/org/codehaus/groovy/tools/groovydoc/gstringTemplates/topLevel/index-all.html/#L19
286
  deterministic: True
287 288 289 290
timestamps_in_jar:
  description: |
    jar (Java Archive) file stores mtimes. Most often of files generated during
    the build.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
291
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInJarFiles
292
  deterministic: True
293 294 295 296
timestamps_in_zip:
  description: |
    Zip archives stores mtimes. Most often of files generated during
    the build.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
297
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInZip
298
  deterministic: True
Juan Picca's avatar
Juan Picca committed
299 300
timestamps_difference_by_unzip:
  description: |
Reiner Herrmann's avatar
Reiner Herrmann committed
301 302
    Timestamps in files processed by zip/unzip have timezone variations.
    Setting TZ=UTC before calling zip/unzip the file can fix this.
303
  deterministic: True
304 305 306
timestamps_in_documentation_generated_by_groff:
  description: |
    groff will add a timestamps to documentation it produces.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
307
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByGroff
308
  deterministic: True
309 310 311 312
timestamps_in_pdf_generated_by_latex:
  description: |
    PDF files generated with pdftex and pdflatex will contain CreationDate and
    ModDate set to the current date and time.
Jérémy Bobbio's avatar
Jérémy Bobbio committed
313
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPDFGeneratedByLaTeX
314
  deterministic: True
315 316 317 318
timestamps_in_documentation_generated_by_htmldoc:
  description: |
    PDF files generated with htmldoc will contain CreationDate set to the current
    date and time.
319
    Fixed in 1.9.1.
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
320
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByHtmldoc
321
  deterministic: True
322 323 324
timestamps_in_header_or_footer_by_htmldoc_in_documentation:
  description: |
    PDF files generated with htmldoc contain date and time in PDF content if 'd' or 'D' options used in header/footer/tocfooter/tocheader parameters.
325
    Fixed in 1.9.1.
326
  deterministic: True
327 328 329 330
libtool_captures_shell_build-flags_build-path_path-env:
  description: |
    GNU libtool captures SHELL, build path, build flags and PATH environment in script.
  deterministic: True
331 332 333
randomness_in_documentation_generated_by_lua_ldoc:
  description: |
    'see also' is not ordered - see module.see
334 335 336
timestamps_in_documentation_generated_by_lua_ldoc:
  description: |
    lua-ldoc adds build timestamp, varying by the timezone
Jemimah O.'s avatar
Jemimah O. committed
337 338
    https://sources.debian.net/src/lua-ldoc/latest/ldoc/html/ldoc_ltp.lua/?hl=293#L293
    https://sources.debian.net/src/lua-ldoc/latest/ldoc.lua/?hl=784#L784
339
  deterministic: True
340
  url: https://bugs.debian.org/820240
341 342 343
pdf_created_by_ghostscript:
  description: |
    PDF files created by Ghostscript contain timestamps and ids.
Paul Wise's avatar
Paul Wise committed
344
  url: https://wiki.debian.org/ReproducibleBuilds/PdfGeneratedByGhostscript
345 346 347 348
serial_numbers_in_ogg:
  description: |
    Ogg streams must include unique serial numbers. By default oggenc includes
    random serial numbers in the header, which are seeded by the current time
349
    and the pid.
350
  url: https://wiki.debian.org/ReproducibleBuilds/OggSerialNumbers
351 352 353 354
serial_numbers_in_ogg_via_sox:
  description: |
    Ogg streams must include unique serial numbers. By default sox includes
    a random serial number in the header.
Jemimah O.'s avatar
Jemimah O. committed
355
  url: https://sources.debian.org/src/sox/latest/src/vorbis.c/#L334
356 357 358 359 360
timestamps_in_pdf_generated_by_apache_fop:
  description: |
    PDF files generated with Apache FOP will contain CreationDate and
    ModDate set to the current date and time.
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPDFGeneratedByApacheFOP
361
  deterministic: True
362 363 364
timestamps_in_documentation_generated_by_texi2html:
  description: |
    eg. "Created on March 1, 2015 by texi2html 1.82"
365
    texi2html now supports a specified date via --build-date parameter.
366
  deterministic: True
367 368 369 370 371
randomness_in_html_generated_by_texi2html:
  description: |
    texi2html's output varies, probably because of elements being processed
    in Perl hash order.
  url: https://wiki.debian.org/ReproducibleBuilds/RandomnessInHTMLGeneratedByTexi2html
372 373
python_wheel_package:
  description: |
Reiner Herrmann's avatar
Reiner Herrmann committed
374 375
    Wheel is embedding timestamps into whl files. The timestamp can be overridden
    by setting the WHEEL_FORCE_TIMESTAMP environment variable to an epoch value.
376
  url: https://wiki.debian.org/ReproducibleBuilds/PythonWheelPackage
377
  deterministic: True
378 379 380
random_order_in_java_jar_manifest_mf:
  description: |
    Java .jar files written by some tools have a random order in MANIFEST.MF.
381 382 383
user_in_java_jar_manifest:
  description: |
    Java .jar files contain user login in the `Built-By` of `MANIFEST.MF`.
384 385 386
timestamp_in_java_bnd_manifest:
  description: |
    bndtools bnd outputs Bnd-LastModified and other entropy
387
  deterministic: True
388 389 390
bundle_name_in_java_manifest_mf:
  description: |
    Bundle-Name, Bundle-Symbolic name
391 392 393
built_by-in_java_manifest_mf:
  description: |
    Built-By colon username
394 395 396
implementation_version_in_java_manifest_mf:
  description: |
    Captures build time, build host and kernel version with
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
397
    Implementation-Version and Implementation-Vendor in META-INF/MANIFEST.MF
398
  deterministic: True
399 400 401
timestamps_in_python_docutils:
  description: |
    Python docutils writes timestamps into its generated documentation.
402
  deterministic: True
403 404 405 406 407 408
random_order_in_files_generated_by_module_build:
  description: |
    Perl files generated with Module::Build contain an unsorted dependency list.
    .
    Fixed in libmodule-build-perl, but not in the module shipped by perl itself.
  url: https://bugs.debian.org/774869
Santiago Vila's avatar
Santiago Vila committed
409 410 411 412
users_and_groups_in_cpio_archive:
  description: |
    cpio archives capture user and group for each of its members.
    Solution: If owner does not matter, create cpio archive with "--owner 0:0"
413
  deterministic: True
414 415 416 417
users_and_groups_in_tarball:
  description: |
    Tarballs capture user and group for each of its members.
  url: https://wiki.debian.org/ReproducibleBuilds/UsersAndGroupsInTarballs
418
  deterministic: True
419 420 421
timestamps_in_emacs_autoloads:
  description: |
    Emacs "autoloads" comments contain a timestamp.
422 423
    At least some of these would be resolved by a fix for
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=799168
424
  url: https://bugs.debian.org/824050
425
  deterministic: True
426 427 428 429
timestamps_in_ruby_documentation:
  description: |
    Ruby's documentation generator outputs a file called "created.rid", which contains
    the time the documentation was generated.
430
  deterministic: True
431 432 433
timestamps_in_documentation_generated_by_sphinx:
  description: |
    "Last updated," etc.
434
  deterministic: True
Peter De Wachter's avatar
Peter De Wachter committed
435 436 437
randomness_in_documentation_generated_by_sphinx:
  description: |
    Sphinx might output references to memory addresses and generate a json index file
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
438
    with entries in random order or with non-deterministic values (eg. searchindex.js).
439
    See https://bugs.debian.org/822197 for memory address issue
Chris Lamb's avatar
Chris Lamb committed
440 441
    .
    searchindex.js needs sort_keys=True (jsonimpl.py) but the key values vary too.
Peter De Wachter's avatar
Peter De Wachter committed
442
  url: https://wiki.debian.org/ReproducibleBuilds/SphinxIssues
443 444
randomness_in_frozenset_representations_in_sphinx:
  description: |
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
445
    frozensets are non-deterministic
446
  url: https://github.com/sphinx-doc/sphinx/pull/5388
447 448
randomness_in_documentation_indices_generated_by_sphinx:
  description: |
449
    Sphinx can output genindex.html index entries in non-deterministic order.
450 451 452
    .
    There might be other missing sorts or dict key sorting beyond the pull
    request already sent.
453
  url: https://github.com/sphinx-doc/sphinx/pull/1699
454 455 456
randomness_in_property_annotations_generated_by_sphinx:
  description: |
    visit_desc_annotation in sphinx/writers/html.py (?) causes -- for example -- sets
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
457
    to be serialised in a nondeterministic order.
458 459 460 461 462 463
randomness_in_documentation_underscore_downloads_generated_by_sphinx:
  description: |
    eg. usr/share/doc/python-treq-doc/html/_downloads/04f29e03a7917886a0c8589f0f9018d6/basic_post.py.
    .
    Unclear why the source is duplicated. Likely regression/feature introduced
    in python-sphinx 1.8.3 or 1.8.2.
464
  url: https://github.com/sphinx-doc/sphinx/pull/6028
465 466 467 468
randomness_in_documentation_graphviz_generated_by_sphinx:
  description: |
    html/_images/graphviz-9e71e0f9ba91d0842b51211b676ec4adb7e7afb8.png varies
    on build path.
469 470 471 472 473
captures_build_path_in_sphinx_attr_links:
  description: |
    Sphinx docs can contain hyperlinks to other parts of the doc, which include
    part of the build path.
  deterministic: True
474 475 476 477 478 479
randomness_in_icc_colour_profiles:
  description: |
    International Color Consortium .icc colour profiles have some issue.
ppds_compressed_b64:
  description: |
    cups drivers have a field named ppds_compressed_b64 which has some issue.
480
  url: https://wiki.debian.org/ReproducibleBuilds/CupsPpdsIssues
481 482
zope_random_field_order_in_dzproduct:
  description: |
483 484
    Random order of entries in /usr/share/zope/Products/$package/.dzproduct generated
    by dh_installzope
485 486
    .
    Fixed in zope-debhelper 0.3.16.
487
  url: https://bugs.debian.org/776619
488 489 490
timestamps_in_files_installed_by_dh_kpatches:
  description: |
    Calls gzip without -n
491
  url: https://bugs.debian.org/776941
492
  deterministic: True
493 494 495
randomness_in_dh_cligacpolicy_scripts:
  description: |
    dh_cligacpolicy adds debhelper scripts in a random order
496
  url: https://bugs.debian.org/777185
497 498 499
needs_internet_access_to_build:
  description: |
    Packages which need to access sites on the internet during build.
Andrew Ayer's avatar
Andrew Ayer committed
500 501 502
timestamps_in_mdl_molfile:
  description: |
    MDL Molfiles (https://en.wikipedia.org/wiki/Chemical_table_file) contain a timestamp.
503
  deterministic: True
504
build_id_variation_requiring_further_investigation:
505
  description: |
506
    ld adds a Build ID in ELF binaries used to link external debug symbols.
507
    See https://fedoraproject.org/wiki/Releases/FeatureBuildId#Unique_build_ID for
508 509
    the spec.
    The default value is a SHA1 hash over the content of the binary. See
510
    the `--build-id` option in https://sourceware.org/binutils/docs-2.25/ld/Options.html
511 512 513 514 515 516 517 518 519
    for other behavior.
    Unless a different way to compute Build IDs has been specified, different Build IDs
    are the symptom of different binary content. The actual source of the
    difference might not be visible because the debug symbols might have been stripped
    (and they can contain filenames which can differ if the build path is different).
    There is no general solution for this problem. The source of the variation must
    be tracked and fixed. The issue can come from variations in order of object
    members or objects themselves, different content (e.g. `__DATE__` CPP
    macros or similar), or other interesting things.
520 521
    .
    Please don't tag issues with this issue until I find a place for this text ^
522 523 524
timestamps_in_documentation_generated_by_podman:
  description: |
    The module Pod::Man includes timestamps in its embedded manpages:
525
    https://sources.debian.net/src/perl/latest/cpan/podlators/lib/Pod/Man.pm/?hl=1700#L977
Chris Lamb's avatar
Chris Lamb committed
526
    They should be based on the mtime of the original file.
Reiner Herrmann's avatar
Reiner Herrmann committed
527
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInManpagesGeneratedByPodMan
528
  deterministic: True
529 530 531 532 533
timezones_manpages_podman:
  description: |
    This issue is similar to timestamps_in_documentation_generated_by_podman.
    The embedded timestamps are not from the actual build time, but instead deterministic ones
    that are only varying because of differing timezones between builds.
534
  url: https://bugs.debian.org/780259
535
  deterministic: True
Andrew Ayer's avatar
Andrew Ayer committed
536 537 538
timestamps_in_ada_library_information_files:
  description: |
    Ada Library Information (.ali) files contain the mtime of the Ada source (.ads) files that they index.
539 540
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInAdaLibraryInformationFiles
  deterministic: False
541
ftbfs_wdatetime:
542
  description: |
543
    FTBFS if dpkg-buildflags contains -Wdate-time.
544
  deterministic: True
545
ftbfs_build_depends_not_available_on_amd64:
546
  description: |
547
    Package build depends on some package(s), which are not available on amd64.
548
  deterministic: True
549
ftbfs_build-indep_not_build_on_some_archs:
550
  description: |
551
    These are packages where the build-indep target will fail to build on some archs. As this can be the desired behaviour we add those packages to this issue and have made sure that the build problems found in our infrastructure are not propagated to tracker.debian.org and DDPO.
552
  deterministic: True
553 554 555
ftbfs_environment:
  description: |
    FTBFS with some unrelated values of the environment variables (lang, timezone, ...)
556
  deterministic: True
557
different_pot_creation_date_in_gettext_mo_files:
558
  description: |
559
    Gettext .mo files in /usr/share/locale/*/LC_MESSAGES differ in their POT-Creation-Date.
560
    When using dh, they will be normalized by strip-nondeterminism.
561
  deterministic: True
562
  url: https://bugs.debian.org/792687
563 564
ftbfs_due_to_jenkins_semaphore_setup:
  description: |
565
    Something interesting in the Jenkins setup where semaphores could not be used correctly.
566
    .
567
    Should not affect any package anymore as /dev/shm has been fixed on all nodes and it's correct mounting is being monitored too.
568
ftbfs_in_jenkins_setup:
Chris West (Faux)'s avatar
Chris West (Faux) committed
569
  description: |
570
    Could be:
571
    1) jobs that try to bind to localhost ports which are in use by something in the
572
       jenkins machines. The occupied ports are: 22, 25, 80, 443, 3128, 3129, 4949, 34167
573 574 575
    2) the build tries to access a debian archive over http, which is something
       allowed but pbuilder doesn't support this yet (this should only be interesting
       for debian-installer)
576
    3) something else, the machine is heavily loaded all the time...
577 578 579 580
timestamps_in_description_files_generated_by_r-base-dev:
  description: |
    r-base-dev leaves a build timestamp (showing date + time + timezone) in
    the /usr/lib/R/library/*/Description files it generates.
581 582 583
    This is fixable with GNU R >= 3.2.0 from unstable. If your package uses the
    r-cran.mk template in debian/rules you should be fine. If not, see
    https://bugs.debian.org/782764 for reference how to fix your package.
584
  deterministic: True
585 586 587 588
timestamps_in_manpages_generated_by_latex2man:
  description: |
    Manpages generated with latex2man can (?) embed the date.
  deterministic: True
589
timestamps_in_manpages_generated_by_sphinx:
590
  description: |
591 592
    Manpages generated with Sphinx embed the build date.
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInManpagesGeneratedBySphinx
593
  deterministic: True
594
timestamps_in_manpages_generated_by_txt2man:
595 596
  description: |
    Manpages generated with txt2man embed the date.
Reiner Herrmann's avatar
Reiner Herrmann committed
597 598
    .
    Pass "-d $date" to txt2man to force a (reproducible) date.
Chris Lamb's avatar
Chris Lamb committed
599
  url: https://bugs.debian.org/790801
600
  deterministic: True
601
timestamps_in_manpages_generated_by_help2man:
602 603
  description: |
    Manpages generated with help2man embed the month and year by default.
604
    This is currently only detected on the 1st of a month, because we are varying the timezone to span more than a day.
605
  url: https://bugs.debian.org/787444
606
  deterministic: True
607 608 609
timestamps_in_manpages_generated_by_rst2man:
  description: |
    Manpages generated with rst2man embed the date
610
  url: https://bugs.debian.org/831779
611
fonts_in_pdf_files:
612 613
  description: |
    The internally used names/identifiers of fonts embedded into PDF files varies.
614
    The order of embedded fonts can also be different.
615 616 617 618 619 620 621 622 623 624 625
    .
    The order is only different if the date differs (set by TZ environment
    variable for example). If the date is the same, then the font name
    is reproducible. Difference in hour/minute/second resolution seems
    to be irrelevant.
    .
    The font name occurs in the /BaseFont field and in the /Fontname field.
    The name is of the form XXXXXX+YYY where the XXXXXX part is the one that
    varies and is called the subset_tag. It is generated in
    texk/web2c/pdftexdir/utils.c function make_subset_tag() from an MD5 sum
    over the font glyphs.
626 627 628
random_order_in_maven_plugin_xml:
  description: |
    mvn plugin.xml (-plugin packages) is generated in a random order.
629 630
    .
    Should be fixed in 3.3-1.
Jemimah O.'s avatar
Jemimah O. committed
631 632
    https://sources.debian.net/src/maven-plugin-tools/latest/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java/#L167
    https://sources.debian.net/src/maven-plugin-tools/latest/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java/#L166
633
  url: https://jira.codehaus.org/browse/MPLUGIN-261
634 635
timestamps_in_documentation_generated_by_edoc:
  description: |
636
    The Erlang documentation generator EDoc is embedding timestamps in its documentation.
637
  deterministic: True
638 639
timestamps_in_qch:
  description: |
640 641 642
    There has been done a lot of reproducible fixes in 5.5.0, so it is worth to
    wait entering this version sid before retrying.
    .
643 644
    qhelpgenerator inserts a timestamp into documentation (qch) files,
    which are sqlite3 databases.
645 646
    .
    sqlite3 databases appear to be reproducible in themselves, but qhelp
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
647
    generator is using various file IDs which become non-deterministic due to
648 649
    map access. For example
    .
Jemimah O.'s avatar
Jemimah O. committed
650
    https://sources.debian.net/src/qt4-x11/latest/tools/assistant/lib/qhelpgenerator.cpp/?hl=742#L742
651 652
    .
    I suspect we just need a few sorts (and some time to build qt4-x11...)
653
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInDatabaseGeneratedByQhelpgenerator
654
  deterministic: True
655 656 657
timestamps_in_java_stapler_files:
  description: |
    Another variation of timestamps_in_maven_version_files where someone's
Chris Lamb's avatar
Chris Lamb committed
658
    used the same properties writer.
659
  deterministic: True
660 661 662 663
timestamps_in_gjdoc_properties_files:
  description: |
    Another variation of timestamps_in_maven_version_files where someone's
    used the same doomed properties writer, this time in GNU Gjdoc API Documentation.
664
  deterministic: True
665 666 667 668 669
timestamps_manually_added_needs_further_investigation:
  description: |
    Packages which intentionally add the timestamp to their build or files,
    but aren't obviously using any tool or system which has this as a core issue.
    Interesting because they could be fixed by faketime'ing up the whole system.
670
  deterministic: True
671 672 673
uid_and_gid_in_jar:
  description: |
    Some tool has managed to write uid and gid as an extended attribute into a jar file.
674
  deterministic: True
675 676 677
timestamps_in_qmake_makefiles:
  description: |
    Some -dev packages ship generated qmake makefiles, which contain the generation time.
678
  deterministic: True
679 680 681 682 683
user_hostname_manually_added_requiring_further_investigation:
  description: |
    Packages which intentionally capture the username or hostname into a custom format,
    but aren't obviously using any tool or system which has this as a core issue.
    Interesting because they could be fixed by fixing these things at build time.
684
  deterministic: True
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
685
random_order_in_plexus_components_xml:
686 687
  description: |
    Plexus, a Java plugin framework, writes its components.xml in a random order.
688 689
timestamps_in_epub:
  description: |
690
    epub files are zip files, and hence have a timestamp in them.
691
  deterministic: True
692 693 694
timestamps_in_jsdoc_toolkit_documentation:
  description: |
    JsDoc Toolkit writes the documentation generation time into generated HTML.
695
  deterministic: True
696 697
randomness_in_objects_inv:
  description: |
698
    Some Gython documentation tool writes objects.inv files in a random order.
699 700 701 702 703
randomness_in_ocaml_custom_executables:
  description: |
    ocamlc -custom generates intermediate files with random names that end
    up in the executable.
  url: https://bugs.debian.org/786913
704 705
randomness_in_ocaml_preprocessed_files:
  description: |
706 707 708
    The native ocaml compiler generates intermediate files with random names
    if the source code is making use of a preprocessor. The paths to these
    temporary files end up in the debug data of the generated executables.
709
  url: https://bugs.debian.org/838188
710 711 712 713 714 715 716 717 718 719
randomness_in_ocaml_provides:
  description: |
    From dh_ocaml :-
    .
    75 ${ocaml:Provides} substvar which will be replaced by a name of the form
    76 libXXX-ocaml-dev-NNNN, where NNNN is an checksum computed from the interfaces
    77 of the modules provided by the library.
    .
    It may be that fixing randomness_in_ocaml_custom_executables implicitly
    fixes this.
720 721
    .
    Seems like this can affect Depends too. eg. labltk
722 723 724
timestamps_in_documentation_generated_by_ocamldoc:
  description: |
    eg. API listings in locale order
725 726 727
timestamp_in_pear_registry_files:
  description: |
    PEAR registry files are serialized PHP objects that contain a timestamp.
728 729
    .
    Registry.php in src:php-pear.
730
  url: https://bugs.debian.org/750697
731
  deterministic: True
732 733 734 735 736
berkeley_db_variation_requiring_further_investigation:
  description: |
    Berkeley databases are not reproducibly.
    This issue requires further poking to understand way.
    https://github.com/libzhuyin/libzhuyin/issues/7
737
  url: https://lists.alioth.debian.org/pipermail/reproducible-builds/Week-of-Mon-20150302/001188.html
738
different_due_to_umask:
739 740
  description: |
    Files have varying permissions because of different umasks.
741
  deterministic: True
742 743 744
build_path_in_qdoc:
  description: |
    eg. filepath elements
Chris Lamb's avatar
Chris Lamb committed
745 746
randomness_in_qdoc:
  description: |
747
    Non-deterministic order of <tag> and <file> elements in XML. See
Jemimah O.'s avatar
Jemimah O. committed
748
    https://sources.debian.net/src/qtbase-opensource-src/latest/src/tools/qdoc/helpprojectwriter.cpp/?hl=630#L787
Chris Lamb's avatar
Chris Lamb committed
749
    etc.
750 751 752 753 754 755
randomness_in_qdoc_page_id:
  description: |
    eg.
    <qtPageIndex>
      <page id="{0f990824-d820-4f11-a82f-790abc23751b}">
    ..etc
Reiner Herrmann's avatar
Reiner Herrmann committed
756 757 758 759
timestamps_in_python_version_numbers:
  description: |
    python-setuptools is appending the build date to a Python version number.
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPythonVersionNumbers
760
  deterministic: True
761 762 763 764
randomness_in_python_setuptools_requires_txt:
  description: |
    python-setuptools generates requires.txt files with contents in arbitrary
    order.
765
  url: https://bugs.debian.org/804249
Reiner Herrmann's avatar
Reiner Herrmann committed
766 767 768 769 770
timezone_variance_because_of_automake_mdate:
  description: |
    automake's mdate-sh script pretty-prints the modification time of a file.
    This output can influence further steps in the build process and make it unreproducible.
  url: https://wiki.debian.org/ReproducibleBuilds/TimezoneVarianceBecauseOfAutomakeMdate
771
  deterministic: True
772 773 774 775 776 777 778 779 780
timestamps_in_dictionaries:
  description: |
    Dictionaries built with dictfmt/dictzip (often called .dict.dz) contain timestamps:
      This file was converted from the original database on:
        $DATE
    dictzip gzip-compresses the dictionary and includes a timestamp in the header.
    .
    Call dictfmt with --without-time to prevent the timestamp in the dictionary.
  url: https://bugs.debian.org/776430
781
  deterministic: True
782 783 784 785
timestamps_in_manpages_generated_by_docbook2x:
  description: |
    docbook2x-man embeds the build date into generated manpages.
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInManpagesGeneratedByDocbook2x
786
  deterministic: True
787 788 789 790
leaks_path_environment_variable:
  description: |
    The environment variable PATH is embedded in the build result.
    Sometimes it's just leaked into some file (so "just" causing reproducibility issues), while sometimes this PATH is also used for building, which might give unexpected and broken results.
791 792 793 794
timestamps_in_manpages_generated_by_docbook_xsl:
  description: |
    docbook-xsl writes the build date into the header; sometimes driven by asciidoc, sometimes by xsltproc.
    Date change visible on Jenkins due to timezone changes.
795
  url: https://bugs.debian.org/791815
796
  deterministic: True
797 798 799
timestamps_in_documentation_generated_by_docbook_dbtimestamp:
  description: |
    dbtimestamp is an entity in docbook that inserts the current time.
800
  deterministic: True
801 802 803 804
timestamps_in_documentation_generated_by_rdtool:
  description: |
    RD is a document formatter used for ruby programs. When generating manpages, it embeds the
    current month and year.
805
    This is currently only detected on the 1st of a month, because we are varying the timezone to span more than a day.
806
  deterministic: True
807
  url: https://bugs.debian.org/820144
808 809 810
captures_kernel_version:
  description: |
    Stores the kernel version (uname -a, /proc/version, etc.) output, normally for debugging purposes.
811 812
    .
    Sub-issue: captures_kernel_version_via_CMAKE_SYSTEM
813
  deterministic: True
Jérémy Bobbio's avatar
Jérémy Bobbio committed
814 815 816 817
timestamps_in_allegro_dat_files:
  description: |
    `.dat` files from the Allegro framework are basically archives. The `dat`
    command line tool will add a DATE property with the file modification time.
818 819
    .
    The timestamp is believed to be generated by datedit_ftime2asc().
820
  deterministic: True
821 822 823 824 825
randomness_in_fat_lto_objects:
  description: |
    Objects built with `gcc -flto -ffat-lto-objects` will contain random strings
    in the form of `.gnu.lto_.inline.24c30dabb443e726`. They will change at
    each build.
826 827
    Temporary (?) solution: pass the full path of the source as the argument
    to `-frandom-seed`.
828
  url: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66305
829 830
randomness_in_c_files_generated_by_extutils_parsexs:
  description: |
831
    ExtUtils::ParseXS generates nondeterministic C files (differing order) out of .xs files.
832
    This leads to differently compiled objects.
833 834 835 836
    .
    There are some code copies, so we have the following bugs in total-
    https://bugs.debian.org/829295
    https://bugs.debian.org/829296
837 838
    .
    Fix is also required in ExtUtils::ParseXS in perl(-modules)
839
  url: https://bugs.debian.org/829295
840 841 842 843
timestamps_generated_by_eigenbase_resgen:
  description: |
    XOMGenTask adds timestamps to generated files, see src/org/eigenbase/xom/MetaGenerator.java line 1202.
    ResourceGenTask adds timestamps too but can be avoided using commentstyle with scm-safe value.
844
  deterministic: True
845 846 847 848 849 850
timestamps_in_documentation_generated_by_ur:
  description: |
    UR::Namespace::Command::Update::Doc in the libur-perl package generates documentation with embedded timestamps.
    .
    See doc_sections() in lib/Command/V1.pm and lib/Command/View/DocMethods.pm in the libur-perl source.
    .
851 852
    libur-perl 0.440-2 half-fixes that: only timezone handling is wrong.
    libur-perl 0.440-3 should fix that.
853
  deterministic: True
854 855 856
timestamps_from_tex4ht:
  description: |
    Tex4ht adds timestamps into the HTML output files.
akira's avatar
akira committed
857
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsFromTex4ht
858
  deterministic: True
859 860 861 862 863
timestamps_from_imake_in_xutils:
  url: https://bugs.debian.org/789964
  description: |
    The imake tool from xutils-dev defines a gzip command without `-n` that is used when compressing font files by other packages
  deterministic: True
864 865 866 867 868
snapshot_placeholder_replaced_with_timestamp_in_pom_properties:
  description: |
    pom.xml uses a <version> like 0.1-SNAPSHOT which is then replaced with the
    timestamp in the filename of the finished .jar. For example
    /usr/share/eclipse/dropins/cdt-pkg-config/eclipse/plugins/org.eclipse.cdt.managedbuilder.pkgconfig_0.8.0.201506071017.jar
Reiner Herrmann's avatar
Reiner Herrmann committed
869 870 871
different_encoding:
  description: |
    Files were built with different encoding (non-UTF-8 vs. UTF-8).
872
  deterministic: True
873
ftbfs_uninvestigated_unsatisfiable_dependencies:
Chris Lamb's avatar
Chris Lamb committed
874 875 876 877
  description: |
    Packages which fail to satisfy dependencies.  Some of these (but probably not all that many)
    actually have ftbfs_due_to_virtual_dependencies.
  deterministic: True
878 879 880
timestamps_in_documentation_generated_by_org_mode:
  description: |
    Org-mode adds timestamps (which also vary by TZ)
881
  deterministic: True
882 883 884
timestamps_in_pdf_generated_by_matplotlib:
  description: |
    eg. Creator (matplotlib 1.4.2, http://matplotlib.org)
885
  deterministic: True
886
  url: https://bugs.debian.org/827361
887 888 889 890
lynx_dump_varies_output_with_locale:
  description: |
    Packages use `lynx -dump in.html > out.txt`, but this varies by locale. See
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770011
891
  deterministic: True
892 893 894
elinks_dump_varies_output_with_locale:
  description: |
    Packages use `elinks -dump in.html > out.txt`, but this varies by locale.
895
  deterministic: True
896 897 898 899
debiandoc_sgml_timestamp:
  description: |
    <date> element in debiandoc-sgml results in build timestamp which
    additionally varies by locale.
900
  deterministic: True
901 902 903
docbook2txt_locale:
  description: |
    docbook2txt varies output based on locale, usually with non-ascii chars.
904
  deterministic: True
905 906 907 908
xmlto_txt_output_locale_specific:
  description: |
    xmlto "txt" output based on locale.
  deterministic: True
909 910 911 912
texinfo_mdate_sh_varies_by_timezone:
  description:
    If you use version.texi, mdate-sh will output a TZ-sensitive updated date.
    http://www.delorie.com/gnu/docs/automake/automake_81.html
913
  deterministic: True
914
random_order_in_javahelper_substvars:
915
  description:
916
    javahelper (jh_*, etc.) can generate Depends/Recommends substvars in a
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
917
    non-deterministic order. Untested patch is https://gist.github.com/4a219d84e8a4091acf58
918
  url: https://bugs.debian.org/835147
919 920 921
nroff_output_varies_by_locale_or_utf8:
  description:
    .. either in terms of non-ASCII chars and effects on text wrapping
922
  deterministic: True
923 924 925 926 927
collation_order_varies_by_locale:
  description:
    LC_COLLATE (or LC_ALL) causes a variation in the deterministic
    order produced by invocations like ls *.  This can usually be
    fixed with LC_COLLATE=C.UTF-8 or LC_COLLATE=C.
928
  deterministic: True
929 930 931 932 933
random_build_path_by_golang_compiler:
  description: |
    The golang compiler embeds paths with a random component into object files.
    Example:
    DW_AT_name        : (indirect string, offset: 0x1b1): /tmp/go-build175461345/github.com/docker/docker/pkg/term/_obj/tc_linux_cgo.cgo2.c
934
  url: https://bugs.debian.org/824806
935 936 937
images_in_pdf_generated_by_latex:
  description: |
    pdflatex does not generate reproducible pdfs, when there are more than four pictures and a tableofcontent.
Chris Lamb's avatar
Chris Lamb committed
938
    .
939
    The workaround so far is to use either optipng to optimize the pngs or switch to jpges.
Chris Lamb's avatar
Chris Lamb committed
940
    .
941
  url: https://bugs.debian.org/796490
942 943 944
random_order_in_python_doit_completion:
  description: |
    python-doit generates Bash and Zsh completion output in arbitrary order.
945 946
    .
    Forwarded upstream https://github.com/pydoit/doit/pull/100
947
  url: https://bugs.debian.org/797180
948 949 950 951 952
random_order_in_ibus_table_createdb_output:
  description: |
   ibus-table-createdb in ibus-table creates sqlite databases with
   non-deterministic order.
  url: https://bugs.debian.org/797521
953 954
random_order_in_antlr_output:
  description: |
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
955
    The ANTLR parser generator can have reordered source lines.
956
    Fixed in antlr3/3.5.2-3.
957 958 959 960 961
timestamps_in_tex_documents:
  description: |
    The TeX \today macro embeds the build date in the files generated
    from it (DVI, PS, PDF, etc.). This should probably be changed to
    honour SOURCE_DATE_EPOCH from the environment.
962 963
    .
    This can sometimes be explicit in the \maketitle command.
964
  deterministic: True
965 966 967
timestamps_added_by_blast2:
  description: |
    formatdb from blast2 adds a timestamp.
968
  deterministic: True
969 970 971 972 973 974 975 976 977 978
randomness_in_r_rdb_rds_databases:
  status:
    done
  description: |
    R creates .rdb files and .rds with some randomness. They are a serialisation of some
    sorts, related to lazy loading of modules?
    Randomness seems to come from using absolute paths in .rd[bs] files.
    .
    Is not related to https://bugs.debian.org/774031 / r_base_appends_built_header_to_description_files
    .
979
    We have a pending patch to fix most of these (463/478) packages at the time
980 981 982 983 984 985 986 987 988 989 990 991 992 993
    of writing) upstream in R:
    .
    https://stat.ethz.ch/pipermail/r-devel/2017-April/074138.html
    .
    When this is accepted into R upstream, commit 28d4af25 may be
    (un-)reverted to remove these packages. In the meantime, please do not
    remove this issue, nor mark it as deterministic, nor untag these packages.
    .
    The remaining ~15 packages are not completely fixed by this patch, so this
    issue should remain, even when our upstream patch is accepted. These
    packages will need to be investigated and fixed individually, see our blog
    post on how to do that:
    .
    https://reproducible.alioth.debian.org/blog/posts/reproducing-r-packages/
994 995 996 997
python-ply_compiled_parse_tables:
  description: |
    python-ply generates parse tables (eg. parsetab.py) that are
    non-deterministic.
998
    .
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
999
    This is a deeper issue than simply writing them out deterministically
1000
    ("write_table" in yacc.py) but rather further up the chain within PLY.
1001 1002
    .
  url: https://github.com/dabeaz/ply/issues/79
1003 1004
python-ply_lextokens:
  description: |
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1005
    python-ply generates _lextokens variables with nondeterministic ordering.
1006
  url: https://bugs.debian.org/890620
1007 1008 1009
ftbfs_due_to_disorderfs:
  description: |
    collect FTBFS related to disorderfs, eg. read errors, etc.
1010 1011 1012 1013
timestamps_in_manpages_generated_by_docbook_utils:
  description: |
    docbook2man from docbook-utils adds the build date into generated manpages, which also contain locale variations.
  url: https://bugs.debian.org/800797
1014
  deterministic: True
1015
python_shebang_and_dependency_nondeterministically_3_or_3_point_5:
1016 1017
  description: |
    The initial line of python programs is #!/usr/bin/python3.5 in build1 and #!/usr/bin/python3 in build2.
1018 1019 1020 1021 1022 1023 1024 1025 1026
    This is caused by us building multiple Python versions into separate
    directories under {build_dir} but then installing them to the *same*
    {destdir}.
    .
    If any of these builds complete in under 1 second, distutils may decide to
    skip copying files to {destdir} as it incorrectly believes them to be
    up-to-date. This will result in a package arbitrarily containing scripts
    with different version shebangs and, by extension, binary dependencies.
  url: https://bugs.debian.org/804339
1027 1028 1029 1030 1031
timestamps_in_directories:
  description: |
    Timestamps of one or more directories change from build1 to build2. This is probably a debhelper issue
    and it's different from varying_mtimes_in_data_tar_gz_or_control_tar_gz which is mainly for packages that
    do not try to build reproducibly yet.
1032
  url: https://bugs.debian.org/802005
1033
  deterministic: True
1034 1035 1036
random_order_in_static_libraries:
  description: |
    order of members in a static library change between build1 and build2
1037 1038 1039 1040 1041 1042 1043 1044 1045
random_order_in_md5sums:
  description: |
    order of files in md5sums (in control.tar.gz) differ from build1 to build2. This only happens in
    packages not using dh_md5sums and it's easily fixed by sorting the output of "find" before
    piping it to md5sum. Example:
    .
    cd debian/tmp && \
        find * -type f ! -regex "^DEBIAN/.*" -print0 |\
        LC_ALL=C sort -z | xargs -0r md5sum > DEBIAN/md5sums
1046 1047 1048 1049
ftbfs_uninvestigated_test_failures:
  description: |
    Packages that can compile their binaries without problems but then fail
    one or more tests for unidentified reasons.
1050 1051 1052
timestamps_in_pdf_content:
  description: |
    The timestamp is not in the PDF metadata, but embedded in the actual content (text).
1053 1054
    Note: Use timestamps_in_tex_documents instead, which is more specific, if the PDF was created
    by a TeX/LaTeX document using \today macro.
1055
  deterministic: True
1056 1057 1058
different_encoding_in_html_by_docbook_xsl:
  description: |
    Docbook XSL can vary the encoding it uses depending on locale.
1059 1060
timestamps_in_ppu_generated_by_fpc:
  description: |
Reiner Herrmann's avatar
Reiner Herrmann committed
1061
    The freepascal compiler (fpc) embeds timestamps into unit files (ppu).
1062
    This is not a problem when the source file is not modified at build time, but if eg. the source file is patched by a debian patch from quilt, the timestamp of this file is set to build time and propagated in the binary.
1063
  url: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPPUGeneratedByFPC
1064
  deterministic: True
1065 1066 1067 1068 1069
ftbfs_old_compat_debheper_compat_level:
  description: |
    debhelper 9.20151116 removed support for the compat levels 1, 2.
    So those packages now fail to build.
  url: https://lists.debian.org/debian-devel/2015/09/msg00257.html
1070
  deterministic: True
Reiner Herrmann's avatar
Reiner Herrmann committed
1071 1072 1073 1074
timestamps_in_documentation_generated_with_libwibble:
  description: |
    libwibble can generate manpages for applications using it.
    While doing so, it embeds the current date into the manpage.
Jemimah O.'s avatar
Jemimah O. committed
1075
  url: https://sources.debian.net/src/libwibble/latest/wibble/commandline/doc.cpp/#L320
1076
  deterministic: True
Reiner Herrmann's avatar
Reiner Herrmann committed
1077 1078 1079
copyright_year_in_documentation_generated_by_sphinx:
  description: |
    Sphinx is embedding the current year into copyright statements in generated documentation.
Reiner Herrmann's avatar
Reiner Herrmann committed
1080
  See also: https://bugs.debian.org/820895
Jemimah O.'s avatar
Jemimah O. committed
1081
  url: https://sources.debian.net/src/sphinx/latest/sphinx/themes/basic/layout.html/#L191
1082 1083 1084 1085 1086
timestamps_in_documentation_generated_by_glib_genpod:
  description: |
    Glib::GenPod in libglib-perl generates POD documentation that embeds
    the current year in a copyright notice.
    .
Jemimah O.'s avatar
Jemimah O. committed
1087
    https://sources.debian.net/src/libglib-perl/latest/lib/Glib/GenPod.pm/#L43
1088
    .
1089
    Fixed in libglib-perl 3:1.321-1.
1090
  deterministic: True
1091 1092 1093 1094
random_hashes_in_cython_output:
  description: |
    Cython generates .c/.cpp code from a Python-like syntax. Some of it is has
    random numbers in it.
1095 1096 1097 1098
random_order_in_cython_output:
  description: |
    Cython generates .c code from a Python-like syntax. Some of it is in
    non-deterministic order.
1099
  url: https://bugs.debian.org/806493
Reiner Herrmann's avatar
Reiner Herrmann committed
1100 1101 1102 1103
timestamps_in_python_code_generated_by_pyside:
  description: |
    The resource compiler from pyside-tools embeds a creation timestamp into the generated Python source.
  url: https://bugs.debian.org/806527
1104
  deterministic: True
1105 1106 1107 1108 1109
timestamps_in_sym_l_files_generated_by_malaga:
  description:
    Malaga, a system for automatic language analysis, includes the current time
    in its output header files.
    .
Jemimah O.'s avatar
Jemimah O. committed
1110 1111 1112
    https://sources.debian.net/src/malaga/latest/malaga_files.h/#L34
    https://sources.debian.net/src/malaga/latest/malaga_files.c/#L79
    https://sources.debian.net/src/malaga/latest/malaga_files.c/#L88
1113
  deterministic: True
1114 1115 1116
timestamps_in_edj_files_generated_by_edje_cc:
  description:
    /usr/bin/edje_cc from libedje-bin writes timestamps.
1117
  deterministic: True
1118 1119 1120
timestamps_in_copyright_added_by_perl_dist_zilla:
  description:
    distzilla adds "Copyright $current_year" to .pm files
1121
  deterministic: True
1122 1123
random_contents_in_dat_files_generated_by_chasen-dictutils_makemat:
  description:
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1124
    /usr/lib/x86_64-linux-gnu/chasen/makemat from chasen-dictutils generates
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1125
    .dat files with some random/non-deterministic contents.
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1126
    Solved by patch in https://bugs.debian.org/881231
1127 1128 1129 1130
timestamps_in_documentation_generated_by_pandoc:
  description:
    Pandoc writes a timestamp in the HTML and manpages it generates.
  deterministic: True
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1131
nondeterministic_output_generated_by_moarvm:
1132 1133 1134
  description:
    moarvm creates .moarvm files that have non-deterministic identifiers,
    possibly to ensure uniqueness. unknown source.
1135
    The upcoming 2019.04 moarvm release should fix all these issues.
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1136
nondeterministic_output_in_warnings_generated_by_breathe:
1137 1138 1139
  description:
    If you use "doxygenfunction" sphinx directive provided by breathe and the
    function is ambiguous, then the warning message injected into the docs can
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1140
    be non-deterministic.
Chris Lamb's avatar
Chris Lamb committed
1141
  url: https://bugs.debian.org/809186
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1142
qt_translate_noop_nondeterministic_ordering:
1143 1144
  description:
    QT_TRANSLATE_NOOP macro creates a sqlite database with entry IDs (?) that
Bernhard M. Wiedemann's avatar
Bernhard M. Wiedemann committed
1145
    are nondeterministic
1146 1147 1148 1149
build_date_in_manpage_generated_by_spf13_cobra:
  description: |
    'Auto generated by spf13/cobra'
    Fix merged upstream https://github.com/spf13/cobra/pull/735
1150 1151 1152 1153 1154 1155
timestamps_in_manpages_added_by_golang_cobra:
  description:
    Go's "cobra" doc generator adds timezone-varying timestamp of (what is
    probably) the current time.
    .
    Homepage is https://godoc.org/github.com/spf13/cobra
1156 1157 1158 1159
timestamps_in_manpages_added_by_golang_go_flags:
  description:
    golang-go-flags adds the current time to manpages.
  url: http://sources.debian.net/src/golang-go-flags/1.1-1/man.go/#L177
1160 1161 1162 1163 1164 1165 1166
lxqt_translate_desktop_binary_file_matched_under_certain_locales:
  description:
    The lxqt_translate_desktop QT/LXDE CMake utility methods calls grep which,
    under certain locales, generates a "Binary file matched" instead of the
    actual match.
    .
    Seems to be code-copied everywhere, alas.
1167 1168 1169
    .
    The affected packages have been already fixed upstream, no need to send
    more patches for this issue :)
1170 1171 1172
timestamps_in_manpages_generated_by_autogen:
  description: |
    autogen adds a timestamp in manpages it generates.
1173
  deterministic: True
1174 1175 1176 1177
captures_shell_variable_in_autofoo_script:
  description: |
    Something looking like autotools is capturing SHELL for use at
    runtime, which should probably be fixed to /bin/sh anyway.
1178
    .
Chris Lamb's avatar
Chris Lamb committed
1179
    Autotools also capturing the build path.
1180 1181 1182
varying_ordering_in_data_tar_gz_or_control_tar_gz:
  description: |
    Previously part of not_using_dh_builddeb
Jérémy Bobbio's avatar
Jérémy Bobbio committed
1183 1184 1185 1186
timestamps_generated_by_xbean_spring:
  description: |
    xbean-spring adds timestamps to files it adds in META-INF.
  deterministic: True