texi2html_captures_users_gecos
texi2html_captures_users_gecos:
description:
Difference in the "This documented was generated on/by" line, documented in the notes of the 'texi2html' package.
Sub-issue of captures_users_gecos
timestamps_in_org_mode_html_output:
description: |
emacs' org-mode can convert .org to .html on the command line, eg
.
$ emacs README.org --batch -f org-html-export-to-html --kill
.
This adds some timestamps, including
.
Created: 2016-09-24 sam 14:54
.
Looks like can be be overridden per-document but the patch from 824050 may
be able to be adapted for fixing org-mode mode generally.
records_build_flags:
description: |
Records $CFLAGS, which vary intentionally due to the «-fdebug-prefix-map=${BUILDPATH}=.»,
«-ffile-prefix-map=${BUILDPATH}=.» or «-fmacro-prefix-map=${BUILDPATH}=.» flags.
.
We have a patch pending to GCC to fix this issue centrally:
.
https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00182.html
.
Though the patch is currently unlikely to be merged. If/when this
is accepted, this issue should be fixed for all packages and you
should not need to fix it specifically in your package.
.
There is also a work-in-progress patch to dpkg that could address this issue:
.
https://bugs.debian.org/985553
.
For more background information see:
.
• https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20160822/006788.html
• https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20160905/006984.html
• https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20160912/007076.html
deterministic: False # XXX FIXME this is also true
records_build_flags_from_ecbuild:
description: |
ecbuild generates a PACKAGE_ecbuild_config.h that contains the
build flags.
https://sources.debian.org/src/ecbuild/3.7.1-1/cmake/ecbuild_config.h.in/#L44-L48
.
Parent issue: records_build_flags
clilibs_line_order:
description: |
[armhf/i386 only, so may be disorderfs related]
Line order in 'clilibs' differs, in cli/mono packages.
url: https://bugs.debian.org/851809
pdf_id_varying_due_to_build_path:
description: |
The PDF /ID is generated based on timestamps (which are now deterministic) and the path of the source file.
texlive needs to be fixed to strip the build path prefix while generating the ID.
build_id_differences_only:
description: |
The Build ID differs, but there are no other differences.
.
Specifically, NT_GNU_BUILD_ID, .gnu_debuglink, and
/usr/lib/debug/build-id/* filenames differ, but there are no other
differences.
.
[On 'sope' seen also a difference in a .GCC.command.line section; compare 'records_build_flags'.]
.
If there _are_ other differences (or if diffoscope output is truncated),
don't tag with this issue, but look for the root problem, as explained
under build_id_variation_requiring_further_investigation.
.
When this occurs on unstable but not on testing, it's likely a form
of captures_build_path. If it uses the cmake buildsystem, very
likely to be cmake_rpath_contains_build_path.
captures_build_path_via_assert:
description: |
Absolute paths to source file names are embedded through assert(), which
embeds the value of the __FILE__ macro in the .data section, or via
filenames in debug symbols, which shows in the .text and .debug_str sections.
.
We have a pending patch to GCC to fix this in one central place.
.
https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00182.html
.
If/when this is accepted, this issue should be fixed for all packages and
you should not need to fix it specifically in your package.
.
For more background information see:
.
• https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20160822/006788.html
• https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20160905/006984.html
• https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20160912/007076.html
captures_build_arch:
description: |
Captures the build arch (`uname -m`, typically i686 v. x86_64).
captures_build_arch_via_ecbuild:
description: |
ecbuild generates a PACKAGE_ecbuild_config.h that embeds the
running kernel architecture.
.
Parent issue: captures_build_arch
graphviz_nondeterministic_output:
description: |
graphviz appears to use a non-deterministic algorithm to optimally lay out
notes optimally. This can appear in class hierarchy documentation, etc. Can
presumably affect images of all complexity but, obviously, more likely to
affect images with lots of nodes.
.
see https://twitter.com/Graphviz/status/1039632469782396929
bin_sh_is_bash:
description: |
Various issues that are caused from whether /bin/sh is dash or bash.
unrelated_ftbfs:
description: |
FTBFS on tests.r-b.o and on buildd.d.o, and for the same reason.
deterministic: True
sphinx_htmlhelp_readdir_sensitive:
description: |
[armhf,i386] The [FILES] section of sphinx htmlhelp (*.hhp) files appears in readdir() order:
sphinx/builders/htmlhelp.py:223: for root, dirs, files in os.walk(outdir):
.
The current test setup shows this on armhf/i386 only since it doesn't use disorderfs on amd64.
url: https://bugs.debian.org/884010
txt2man_dash_p:
description: |
«txt2man -p» parses the build path for the package name and version.
.
Fix: replace the -p by explicit -t TITLE -s SECTION -v "foo Reference Manual" -r "$$(dpkg-parsechangelog -SSource)-$$(dpkg-parsechangelog -SVersion)"
deterministic: True
randomness_in_browserify_output:
description: |
Node.js compiler. Generates, for example, bundle.js files with sourceMappingURL=
randomness
randomness_in_browserify_lite_output:
description: |
browserify-lite "bundles client-side JavaScript using Node.js-style module
syntax", mostly concatenating it. The output is non-deterministic.
url: https://github.com/andrewrk/browserify-lite/pull/14
nondeterministic_output_from_uglifyjs:
description: |
uglifyjs does not create deterministic output in, for example, JS dicts.
nondeterministic_ordering_in_python_wheel_metadata_versions:
description: |
src:wheel generates METADATA files with Requires-Dist lines with
non-deterministic ordering.
.
In python-pip's urllib3-1.15.1.dist-info/METADATA, a Requires-Dist header has two version constraints; they appear in random order.
.
Reproduces in amd64/unstable but not on other archs, so may be non-deterministic (eg hash order).
.
Example:
│ │ │ │ │ -Requires-Dist: PySocks (>=1.5.6,<2.0); extra == 'socks'
│ │ │ │ │ +Requires-Dist: PySocks (<2.0,>=1.5.6); extra == 'socks'
url: https://bugs.debian.org/845325
timestamp_in_tables_generated_by_casacore_measuresdata:
description: |
src:casacore's measuresdata script generates .dat files that embed the
build date
translations_missing_due_to_intltool_merge:
description: |
A file contains a list of «Name[xx] = "String"» lines, where «xx» is a language code;
some or all of the lines are present in one build only.
.
Possibly a bug (race condition between multiple invocations?) in intltool-merge. Maybe fixed by https://bugs.launchpad.net/intltool/+bug/1687644 and https://bugs.debian.org/950444
.
Also occurs in .directory files?
deterministic: False
help2man_puts_traceback_in_generated_man_page:
description: |
A man page generated by help2man consists of a traceback and nothing else; see #851336 for an example.
.
That's not a reproducibility bug, but we catch it when the traceback contains abspaths that embed $SOURCE_ROOT_DIR.
deterministic: False
captures_kernel_version_via_CMAKE_SYSTEM:
description: |
Uses CMAKE_SYSTEM, which embeds `uname -sr` output; the -r (version) varies.
.
Instead, use CMAKE_SYSTEM_NAME (`uname -s`), which shouldn't vary.
.
May also be triggered by use of CMAKE_HOST_SYSTEM,
CMAKE_HOST_SYSTEM_VERSION or CMAKE_SYSTEM_VERSION.
.
Parent issue: captures_kernel_version
deterministic: False
captures_kernel_version_via_ecbuild:
description: |
ecbuild generates a PACKAGE_ecbuild_config.h that embeds the
running kernel version.
https://sources.debian.org/src/ecbuild/3.7.1-1/cmake/ecbuild_config.h.in/#L32
.
Parent issue: captures_kernel_version
python_versioneer_uses_parentdir:
description: |
Embedded copies of versioneer use the build path to calculate a version.
eg. https://bugs.debian.org/852482
absolute_build_paths_in_dot_packlist_file_generated_by_perl_extutils_packlist:
description: |
ExtUtils::Packlist adds absolute build directories:
33 =item __find_relocations
34
35 Works out what absolute paths in the configuration have been located at run
36 time relative to $^X, and generates a regexp that matches them
.
Are they of any use in a Debian context? If not, the files could just be
removed by some Perl helper, etc.
timestamp_and_build_path_captured_by_python_cheetah:
description: |
│ │ │ │ +__CHEETAH_genTime__ = 1520634040.436206
│ │ │ │ +__CHEETAH_genTimestamp__ = 'Sat Mar 10 12:20:40 2018'
│ │ │ │ +__CHEETAH_src__ = '/build/xmds2-2.2.3+dfsg/2nd/xpdeint/Features/AsciiFormat.tmpl'
│ │ │ │ +__CHEETAH_srcLastModified__ = 'Mon Jul 23 13:42:26 2012'
deterministic: True
formatdb_from_ncbi_blastplus_captures_build_time:
description: |
formatdb calls such as [1] capture the build time.
The build time is captured in [2] and written out in [3].
[1] https://sources.debian.net/src/metastudent-data/latest/Makefile.am/#L24
[2] http://sources.debian.net/src/ncbi-blast%2B/latest/c%2B%2B/src/objtools/blast/seqdb_writer/writedb_impl.cpp/#L78-L87
[3] http://sources.debian.net/src/ncbi-blast%2B/latest/c%2B%2B/src/objtools/blast/seqdb_writer/writedb_files.cpp/#L267
deterministic: True
randomness_in_t3g_files_generated_tslmendian:
description: |
Looks like arbitrary memory?
randomness_in_swf_files_generated_by_as3compile:
status:
done
description: |
as3compile (src:sfwtools) generates non-deterministic .swf files.
nondeterminism_in_java_classes_generated_by_jxc:
description: |
The "JAXB schema compiler" jxc (src: openjdk-{6,7} etc.) generates .class
files from .xml files. There is some non-determinism in the generated code.
timestamps_in_episode_files_generated_by_jxc:
description: |
The "JAXB schema compiler" jxc (src: openjdk-{6,7} etc.) generates .episode
files with the current timestamp.
timestamp_in_fonts_generated_by_opentype:
description: |
opentype generates .ttf files with a timestamp of the current time.
randomness_in_binaries_generated_by_ruby_mkmf:
description: |
I think it's a timestamp that is used as part of the makefile (etc.)
generation.
.
/usr/bin/ruby2.3 -r ./siteconf20180314-61474-whhjsn.rb extconf.rb
filesystem_ordering_in_pak_files_generated_by_simutrans_makeobj:
description: |
Loops over input directory in filesystem ordering.
timestamp_in_jboss_messagebundle_generated_code:
description: |
JBoss @MessageBundle (translation) generated classes contain a generation date and time. This
timestamp is only retained in the generated code, so doesn't appear in the binary unless you
generate documentation from it.
https://sources.debian.net/src/jboss-logging-tools/latest/processor/src/main/java/org/jboss/logging/processor/generator/model/ClassModel.java/#L146
deterministic: True
portable_executable_strong_name_varies:
description: |
Some sort of signing system. See the sn tool.
timestamps_in_manpages_created_by_libwibble:
description: |
libwibble ("Library of various useful C++ code") can generate manpages but
they use the current time.
.
http://sources.debian.net/src/libwibble/latest/wibble/commandline/doc.cpp/#L232
url: https://bugs.debian.org/861672
timestamps_in_cbd_files_generated_by_canna_mkbindic:
description: |
timestamps added by mkbindic from canna package
url: https://bugs.debian.org/861955
gcc_captures_build_path:
description: |
Captures build path, e.g., /build/1st/foo-42.0 v. /build/foo-42.0/2nd
.
Until early 2024 we varied the build path when testing packages from unstable
and experimental, which we have stopped doing now as the build path is recorded
as part of the environment and thus can be used when rebuilding.
.
This issue is kept here for the time being.
.
dpkg-buildflags version 1.20.6+ sets -ffile-prefix-map by default
(and -fdebug-prefix-map in older versions) which fixes this issue
in many cases, but not all (see: records_build_flags).
.
There are patches submitted upstream to address this specific issue, but they
are unlikely to be merged at this point:
.
https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00513.html
.
When this is accepted into GCC upstream, we could remove this note.
In the meantime, please do not remove this issue, nor mark it as deterministic,
nor untag these packages.
deterministic: False
apxs_captures_build_path:
description: |
apxs or apxs2 tools used to build apache modules do not use
default *FLAGS. The compiled objects may embed the build path as a
result.
.
apxs can pass arguments to the compiler using
"-Wc,-ffile-prefix-map=$(CURDIR)=."
ocaml_captures_build_path:
description: |
Captures build path, e.g., /build/1st/foo-42.0 v. /build/foo-42.0/2nd
deterministic: False
ocaml_dune_captures_build_path:
description: |
Captures build path, e.g., /build/1st/foo-42.0/_build v. /build/foo-42.0/2nd/_build
deterministic: False
jellyfish_creates_nondeterministic_json:
description: |
/usr/bin/jellyfish can generate non-deterministic JSON.
deterministic: False
url: https://bugs.debian.org/863015
timestamps_in_javascript_generated_by_node_grunt_banner:
description: |
Grunt's support for adding a banner (in src:node-grunt) has a templating
system that uses the current time, not SOURCE_DATE_EPOCH.
url: https://bugs.debian.org/867753
build_path_captured_by_valac:
description: |
Presumably to generate a unique name, valac generates C preprocessor defines such as
.
___HOME_FAB_CD2_CAIRO_DOCK_PLUG_INS_DBUS_INTERFACES_VALA_SRC_CDAPPLET_H__
.
... which contain the build path.
timestamps_in_source_generated_by_rcc:
description: |
resource files generated by Qt's resource compiler (rcc) depend on mtimes
of the input files, which may have been generated at build time.
.
There is an upstream bug https://bugreports.qt.io/browse/QTBUG-62511 and a
corresponding merged pull request https://codereview.qt-project.org/202999.
.
A temporary solution is to add '--format-version 1' to the rcc command line.
deterministic: True
build_path_captured_by_python_numpy_misc_util:
description: |
numpy/distutils/misc_util.py in src:python-numpy writes the full source
filename to generated files.
url: https://bugs.debian.org/872459
deterministic: True
nondeterministic_output_generated_by_gcab:
description: |
gcab generates .cab files that vary due to encoding timezone
url: https://bugs.debian.org/872460
deterministic: True
captures_build_dir_in_qmake_prl_files:
description: |
QMAKE_PRL_BUILD_DIR contains the absolute build path.
deterministic: True
build_path_captured_in_assembly_objects:
description: |
This is issue has been fixed for GCC 13 on 2022-11-02.
.
Before GNU as didn't support BUILD_PATH_PREFIX_MAP, so objects compiled from
assembly sources captured the build path.
.
Before GNU "as" only supported --debug-prefix-map=BUILDPATH=. which can
sometimes be passed via ASMFLAGS, ASFLAGS, or similar variables.
url: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93371
timestamps_in_ifo_files_generated_by_python_stardicter:
description: |
python{,3}-stardicter generates .ifo files with the current date.
.
Upstreamed here: https://github.com/nijel/stardicter/pull/2
url: https://bugs.debian.org/881089
randomness_in_files_generated_by_pinyin_gen_binary_files:
description: |
/usr/bin/gen_binary_files from libpinyin-utils generates non-deterministic
output.
build_path_in_files_generated_by_qdbusxml2cpp:
description: |
eg. The command line was qdbusxml2cpp -m -i pimcommon/metatype.h -p imapresourcesettings
timestamps_in_rcc_files_generated_by_rcc:
description: |
/usr/lib/qt5/bin/rcc from qtbase5-dev-tools (src qtbase-opensource-src)
embeds a last modified timestamp in the generated .rcc file.
.
http://sources.debian.net/src/qtbase-opensource-src/latest/src/tools/rcc/rcc.cpp/#L207-L212
nondeterminism_in_documentation_generated_by_pydoctor:
description: |
eg. non-deterministic HTML id attributes.
url: https://bugs.debian.org/884254
nondeterminism_in_files_generated_by_rime_deployer:
description: |
Looks like struct mem?
gfortran_mod_captures_build_path:
description: |
gfortran generates .mod and .smod files that can capture the build path.
A patch for gfortran : https://bugs.debian.org/889133
Also, a small workaround script to fix mod files is here:
https://sources.debian.org/src/eccodes/latest/debian/sanitize-mod/
timestamps_in_pdf_generated_by_rsvg_convert:
description: |
PDF files generated with rsvg-convert will contain CreationDate set to the
current date and time.
.
Forwarded upstream https://gitlab.gnome.org/GNOME/librsvg/merge_requests/10
deterministic: True
url: https://bugs.debian.org/890027
randomness_in_berkeley_db_files:
description: |
Creating an empty Berkeley DB file (or ones with the same contents) results
in a different file.
.
This comes from:
https://sources.debian.org/src/db5.3/latest/src/os/os_uid.c/#L20 but
it's unclear where to "set" this only on the creation case - we definitely
want the uid to change if one adds stuff later.
.
Compounding this, the debugging tools *additionally* return random data for
the uid/hash fields (!), so presumably srand is being called when you do a
"db_dump -d a /path/to/my.db" which is obviously broken.
captures_build_path_in_mdb_files:
description: |
cli/mono packages can generate mdb files that contain build paths.
randomness_in_binaries_generated_by_golang:
description: |
Fixed upstream, but a new src:golang-go has not yet been uploaded to Debian.
url: https://salsa.debian.org/go-team/packages/dh-golang/merge_requests/6
timestamps_in_preamble_generated_by_node_package_preamble:
description: |
node-package-preamble outputs the current date which is then included by a
bunch of packages.
url:
https://github.com/mbostock/preamble/pull/4
random_order_in_javahelper_manifest_files:
description: |
javahelper writes MANIFEST.MF files with non-deterministic ordering.
url: https://bugs.debian.org/893504
build_path_in_apertium_mode_files:
description: |
eg. lt proc path
nondeterminism_in_apertium_lrx_bin_files_generated_by_lrx_comp:
description: |
The lrx-comp utility from apertium-lex-tools generates bin files with
nondeterministic contents.
nondeterminism_in_files_generated_by_hfst:
description: |
The hfst utilities generate non-deterministic .hfst files.
build_path_in_mip_files_generated_by_irafcl:
description: |
/usr/bin/irafcl from the iraf package creates .mip files with the absolute
filename.
build_path_in_index_files_generated_by_qdoc:
description: |
eg. .index files have a filepath XML attribute.
member_search_index_json:
description: |
openjdk creates member-search-index.json files in zip files that appear to
use the current time?
variations_from_march_native:
description: |
when packages invoke gcc or g++ with -march=native or -mcpu=native or
-mtune=native, the resulting binaries will vary depending on the build
system's CPU type. When such binaries are built on newer CPUs, they can
cause segfaults when run on older CPUs due to invalid opcode.
See also https://bugzilla.opensuse.org/show_bug.cgi?id=1100677
doxygen_fails_to_create_all_links_in_example_code:
description: |
doxygen-generated documentation *might* miss a few links to documented
classes in example code.
python_sphinx_gallery_adds_timing_to_output:
description: |
Adds total running time to HTML and RST output. to HTML and RST output.
url: https://bugs.debian.org/901307
jekyll_site_time_timestamp:
description: |
The Jekyll site generator uses Time.now as site.time.
url: https://github.com/jekyll/jekyll/pull/7187
randomness_in_pdf2htmlex_html_output:
description: |
Converts PDFs to HTML, font headers are nondeterministic.
randomness_in_python_changelog_references:
description: |
The python-changelog library generates references in a nondeterministic order.
url: https://bitbucket.org/zzzeek/changelog/pull-requests/1/please-make-the-references-reproducible/diff
cmake_rpath_contains_build_path:
description: |
When an executable is linked with a shared library from the same project,
RPATH will contain the build path. Even if this is stripped on installation,
the build-id will remain unchanged.
.
With CMake 3.14+, packages can set `-DCMAKE_BUILD_RPATH_USE_ORIGIN=ON` to
fix the issue. This is done automatically when using the currently
experimental debhelper compat level v14.
https://cmake.org/cmake/help/latest/prop_tgt/BUILD_RPATH_USE_ORIGIN.html
.
When working with older CMake versions, the `CMAKE_SKIP_RPATH` option can be
enabled instead, but it may be required to also set `LD_LIBRARY_PATH` while
running tests.
url: https://gitlab.kitware.com/cmake/cmake/issues/18413
build_path_in_texi_figure_documentation:
description: |
eg. "@float Figure,fig:qn_closed_single" in octave-queueing.
deterministic: True
randomness_in_fonts_created_by_fontcustom:
description: |
fontcustom appears to embed the build date, some kind of version and some
other randomness.
cflags_recorded_in_ada_ali_files:
description: |
The GCC Ada compiler writes build flags into
/usr/lib/*/ada/adalib/*.ali, including *-prefix-map and hence the
build path.
.
This is similar to build_path_captured_in_assembly_objects.
Until BUILD_PATH_PREFIX_MAP is a reality,
sed -i '/^A -f[a-z]\+-prefix-map=/d' debian/tmp/usr/lib/*/ada/adalib/*/*.ali
Packages using dh-ada-library>=7.7 require no intervention.
.
Parent issue: records_build_flags
paths_vary_due_to_usrmerge:
description: |
eg. /bin/ vs /usr/bin/ or /lib vs. /usr/lib
timestamp_added_by_gnuradio_grcc:
description: |
.grc files are compiled by grcc and adds a Generated timestamp header that
varies by timezone.
.
Code is in ./grc/core/generator/flow_graph.tmpl
url: https://bugs.debian.org/914252
randomness_in_intercal_files:
description: |
dot io files
timestamps_embedded_in_manpages_by_scdoc:
description: |
YYYY-MM-DD
.
https://sources.debian.org/src/scdoc/latest/src/main.c/#L71
buildpath_in_binaries_generated_by_ada_compiler:
description: |
Hint: for music123, seems related with captures_build_path_via_assert.
randomness_in_ids_generated_by_org-html-publish-to-html:
description: |
eg. outline-container-orgb2aa480 vs outline-container-org7a7f99f
ftbfs_due_to_f-file-prefix-map:
description: |
An example of failure related to this are programs that expect
__FILE__ to expand to some absolute path, but instead finding themselves
a relative one.
.
In our unstable and experimental build systems we export
DEB_BUILD_OPTIONS=reproducible=+all
that makes dpkg-buildflags enable the reproducible/fixfilepath feature, adding
-ffile-prefix-map=BUILDPATH=.
to CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS and FCFLAGS.
randomness_in_postgres_opcodes:
description: |
randomness in bc files
buildpath_in_postgres_opcodes:
description: |
buildpath in bc files.
.
Possibly via using the source_filename variable in
postgres*/src/tools/pgindent/pgindent.
timestamps_in_pdf_generated_by_daps:
description: |
PDF files generated with daps contain the CreationDate.
randomness_in_prolog_saved_stage:
description: |
`.pvm` files
build_path_in_typelib_files_generated_by_gir_compiler:
description: |
absolute build path
randomness_in_perl6_precompiled_libraries:
description:
See https://wiki.debian.org/Perl6PreCompProposal and
https://bugs.debian.org/1002496 for more information.
build_date_in_egg_info_directory_name:
description:
setup.cfg file contains tag_date=true which results in date-specific egg-info dir.
randomness_in_output_from_perl_deparse:
description:
generates list of constants in nondeterministic order
randomness_in_fontconfig_uuid_files:
description:
This is usually a runtime problem but if fontconfig is called in a build it
can effect build artifacts too. See
https://redmine.tails.boum.org/code/issues/16732 and countless upstream
threads.
codadef_coda_data_files:
description:
.codadef files are zip files but are not yet normalised by
strip-nondeterminism (added 20190703 in 6a40d5dbfa).
timestamps_in_manpages_generated_by_lopsubgen:
description:
Uses localtime(3) instead of SOURCE_DATE_EPOCH.
url: https://bugs.debian.org/931854
umask_in_java_jar_file:
description:
Permissions differ between builds
timezone_specific_files_due_to_haskell_devscripts:
description:
haskell-devscripts runs touch -d ... on very old files without an
explicit timezone.
url: https://bugs.debian.org/933834
captures_varying_number_of_build_path_directory_components:
description:
eg. /tmp/buildd/one/two vs /tmp/buildd/one/two/three can result in
relative URIs (eg. ../../../usr/some/share/dir) differing.
embeds_build_data_via_node_preamble:
description:
eg "Copyright 2019 Mike Bostock"
url: https://bugs.debian.org/935790
ghc_captures_build_path_via_tempdir:
description: |
A filename of the form "/tmp/ghcXXXX_0" is embedded into the binaries.
buildpath_in_code_generated_by_bison:
description: |
Without `--no-lines` (and I think `--name-prefix`) the output will include
the absolute build path.
nondeterministic_defaults_in_documentation_generated_by_python_traitlets:
description: |
python-traitlets can generate .rst doctrings for various values. If the
value is of their "Set" type, then the repr() value of this is
nondeterministic.
url: https://bugs.debian.org/942342
nondeterministic_devhelp_documentation_generated_by_gtk_doc:
description: |
gtk-doc can generate .devhelp2 files (or similar) with non-deterministic
headers such as "Index of new API in 1.2.3".
.
Also random ordering?
url: https://bugs.debian.org/946331
markdown_random_email_address_html_entities:
description: |
/usr/bin/markdown will use srand-om email addresses in HTML in an attempt to thwart
spammers. This binary is provided by both markdown and
libtext-markdown-perl which both have/had issues (see https://bugs.debian.org/947608
for the former and https://bugs.debian.org/947708 for the latter)
url: https://bugs.debian.org/947708
captures_build_path_via_haskell_adddependentfile:
description: |
adds build path in p_hi via addDependentFile
png_generated_by_plantuml_captures_kernel_version_and_builddate:
description: |
plantuml can generate PNG images of UML state diagrams. the iTXt component
of these images contains a bunch of system properties that vary between
build such as the OS Version (kernel version) as well as a timezone-varying
date as part of plantuml's own version string identifier. See
src/net/sourceforge/plantuml/version/Version.java etc.
random_identifiers_in_epub_files_generated_by_asciidoc:
description: |
The "a2x" tool from asciidoc appears to inject random bookId UUIDs or
similar like _idm45416569061424 into the generated files.
dpkg-dev_extracts_origtgz_with_bad_permissions:
description: |
dpkg-dev uses 0777 instead of the permissions in the orig tarball
when extracting (after umask filtering), so the permission bits of
files in the working copy are wrong; this can affect archives
created at build time from these files
url: https://bugs.debian.org/796257
build_path_in_code_generated_by_dgbus_codegen:
description: |
C ifdefs use the absolute build path (eg. ___BUILD_1ST_PACKAGE_1.0)
random_argument_handling_in_javatools_jh_build:
description:
Conflict in handling of -o option leads to nondeterministic behaviour.
url: https://bugs.debian.org/951573
openstack_pkg_tools_python_shebang_and_dependencies:
description:
Timing/race etc. causing nondeterminstic shebangs and package dependencies.
url: https://bugs.debian.org/952762
nondeterministic_gtk_icon_cache:
description:
Possible filesystem ordering or hash table nondeterminism.
url: https://bugs.debian.org/953105
nondeterministic_vo_files_generated_by_coq:
description:
Unknown source in .vo files generated by some Coq tool.
captures_build_path_in_vo_files_generated_by_coq:
description:
Build path embedded in .vo files generated by some Coq tool.
nondeterministic_checksum_generated_by_coq:
description:
/var/lib/coq/md5sums/packagename.checksum contains a short, nondeterminstic string.
captures_build_path_in_hd5_database_files:
description:
Absolute build path stored in headers, see h5py. Might be caused by
libhdf5-dev low-level itself.
ros_dynamic_reconfigure_captures_build_path:
description:
eg. srcfile as well as other reference to the original source files.
cargo_installs_crates2_json:
description:
cargo install adds an unreproducible .crates2.json file to /usr (!)
url: https://bugs.debian.org/958301
uids_gids_in_tarballs_generated_by_cmake_kde_package_app_templates:
description:
eg. kde_package_app_templates(...)
https://api.kde.org/ecm/kde-module/KDEPackageAppTemplates.html
captures users, umask, etc.
gem2deb_install_mkmf_log:
description:
gem2deb is meant to remove mkmf.log files since 2014 but some packages
still install it.
url: https://bugs.debian.org/964772
nondeterministic_order_of_debhelper_snippets_added_by_dh_fortran_mod:
description:
iterates over Fortran compilers in a non-deterministic order
url: https://bugs.debian.org/965255
nondeterministic_version_generated_by_python_param:
description:
python3-param will parse the version differently between the two builds
when the toplevel directory does not match package-version format.
captures_build_path_via_quicktest_h_qml:
description:
quicktest.h-based tests capture the absolute build path. Possibly via
QTEST_SET_MAIN_SOURCE_PATH in qtdeclarative5-dev.
rollup_embeds_build_path:
description: |
rollup generates module files that embed the buildpath.
.
eg. var moduleName_some_directory_components = module;
return moduleName;
build_path_captured_by_nim:
description: |
nim appears to embed absolute paths to source files, possibly
as part of assert-style debugging?
build_path_captured_by_octave:
description: |
octave packages embed the build path, typically with a /src suffix.
build_path_captured_by_pyuic5:
description: |
"Form implementation generated from reading ui file '%s'"
build_path_captured_by_rust:
description: |
rustlang seems to embed full build paths in various ways.
build_path_in_direct_url_json_file_generated_by_flit:
description: |
'{"url": "file://build/path", "dir_info": {"editable": false}}'
timestamps_in_3d_files_created_by_survex:
description: |
cave surveying files appear to have a UNIX timestamp in their headers
build_path_added_by_src2man_from_txt2man:
description: |
eg. "Extracted by src2man from /build/path/file.h"
build_path_in_record_file_generated_by_pybuild_flit_plugin:
description: |
The flit plugin for pybuild includes the build path into the RECORD file
if it fails to transform the path into a relative one
.
See also https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/17
url: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=969352
build_path_in_header_generated_by_glib_genmarshal:
description: |
glib-genmarshal includes the build path in code comments by default,
e.g. BOOLEAN:INT,INT,BOXED (%s). It should be invokved with
--skip-source to omit these.
random_uuid_in_notebooks_generated_by_nbsphinx:
description: |
alt HTML tag generated by uuid.uuid4().hex
https://sources.debian.org/src/nbsphinx/0.8.0+ds-1/src/nbsphinx.py/#L1315
url: https://sourceforge.net/p/docutils/mailman/message/58746996/
kodi_package_captures_build_path_in_source_filename_hash:
description: |
kodi-* packages sometimes have strange paths like SIDCodec.cpp.b78d5642 in
the binary (without the build path). The string suffix does not vary
between builds in the same build path, suggesting its a hash of the build
path.
.
Disabling Link-Time Optimization (LTO) and/or Debug Fission solves this
issue.
url: https://salsa.debian.org/multimedia-team/kodi-media-center/kodi-audiodecoder-fluidsynth/-/commit/ec87abd2c45b6c18f36352c049dfdf425f3a0911
timestamps_in_documentation_generated_by_mandoc:
description: |
mandoc (src:mdocml) generates manual pages using the current date. It
interpolates a Mdocdate variable in manual pages, for instance.
absolute_path_in_cmake_file_generated_by_meson:
description: |
The meson build system can generate .cmake files, but they can contain
absolute pathnames. The exact equivalent line in Cmake itself strips
the path component.
url: https://bugs.debian.org/1000327
random_temporary_filenames_embedded_by_mesonpy:
description: |
The mesonpy build system plugin (?) builds .so shared objects in a ./meson-XXXXX
temporary filename, so even with CFLAGS correctly passing prefix-map etc.
the generated binaries are nondeterministic.
non_deterministic_doc_base_file_for_javadoc:
description: |
Some packages have both a hand-written .doc-base file and a .doc-base
file generated from Javadoc, and non-deterministically install one
or the other. Example: https://bugs.debian.org/1001218
dynstr_section_longer_by_two_bytes_which_are_NULs:
description: |
The .dynstr section on the right build is longer by two bytes.
The value of those two bytes is 0x00 0x00.
.
stlink=1.7.0+ds-1 is currently in both bullseye and sid; is reproducible on
the former but not on the latter; and has this issue. The issue could be
caused by a difference in some build dependency between the two suites (for
some common build dependency of all packages having this issue); or by
a difference in the variations tested in the two suites.
.
The only difference in variations (per current "Variations tested" page) is
the build path variation.
.
If the package uses the cmake buildsystem, this is likely a form
of cmake_rpath_contains_build_path issue.
.
So, is there any any chance that this issue is caused by the build path
variation? Perhaps the number of extra bytes is 2
because the build path in build #2 is two bytes longer than in build
#1?
erlang_escript_file:
description:
Possible inline ZIP file.
extended_attributes_in_jar_file_created_without_manifest:
description: |
Creating a jar file with the -M flag causes jar(1) to add extended
attributes to the last file added to the archive. As files are not added in
a deterministic order (if, say, a directory is specified on the
command-line), this means that even if the files are subsequently sorted,
the extended attribute is moved around independently as well. First seen
in src:threeb via
https://salsa.debian.org/reproducible-builds/strip-nondeterminism/-/issues/19.
Submitted to upstream - "We will review your report and have assigned it an
internal review ID 9073223"
url: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8286712
mono_mastersummary_xml_files_inherit_filesystem_ordering:
description: |
Generated by mono.
url: https://bugs.debian.org/1010854
ada_gprbuild_gcc_records_temp_paths:
description: |
In the -dbgsym package for an Ada library, the output of
readelf --debug-dump=info /usr/lib/usr/lib/debug/.build-id/*/*.debug
matches
DW_AT_producer GNU Ada -g -gnate[cm]=/tmp/GNAT-TEMP-[digits].TMP
.
The files are created by gprbuild for GCC subprocesses.
The enumeration order varies during parallel builds.
This issue differs from gcc_captures_build_path and cannot be
solved by *-file-prefix-map.
.
Fix: pass -cargs:ada -gno-record-gcc-switches -gargs to gprbuild.
Packages using debian_packaging.mk from gnat>=11.2 require no
intervention.
ada_gpr_embeds_build_path:
description: |
dh-ada-library writes -l options into a .gpr file, but also
unwanted local -L options.
nondetermistic_js_output_from_webpack:
description: |
Compressed Javascript generated by webpack uses arbitrary numbers when
minifying code. Unknown cause.
nondeterministic_ids_in_html_output_generated_by_python_sphinx_panels:
description: |
python3-sphinx-panels generates unique identifiers using uuid4, resulting
in documentation that is not reproducible.
url: https://bugs.debian.org/1017475
haskell_abi_hash_differences:
description: |
the interface/abi hash in .hi files differs between builds. Curiously, the
order of these fields appears to differ too, but that might be downstream
of the former issue.
usr_lib_debug_dotdwz_dir_inherits_build_user:
description: |
/usr/lib/debug/.dwz/i386-linux-gnu/ inherits the build user from the
surrounding environment. Unknown source.
uid_variation_in_dbgsym_packages:
description: |
Unknown cause. Might be 32-bit specific.
python_module_embeds_build_path_in_empty_dirs:
description: |
eg. /build/1st/python-installer-0.5.1+dfsg1/debian/python3-installer/usr/bin/
Unknown cause. Recent (~2022-11-10) regression? Does not end up on
installed system as they are empty directories.
manpages_generated_by_node_marked_man_vary_on_build_timezone:
description: |
Occurs if SOURCE_DATE_EPOCH is +/- 12 hours of month changeing over (and
build timezones are deliberately extreme)
bugs: https://bugs.debian.org/1030724
build_path_in_line_annotations_added_by_ruby_ragel:
description: |
ragel is a library to compile finite state machines into code, similar to
Bison/YACC etc. It can add line annotations that use the absolute build
path.
.
This can be disabled by appending the `-L` flag when calling ragel.
timestamp_in_documentation_using_sphinx_zzzeeksphinx_theme:
bugs: https://bugs.debian.org/1042955
description: |
zzzeeksphinx includes a 'Documentation last generated: ${datetime.datetime.now().strftime("%c")}'
nondeterminstic_order_of_pkgconfig_dependencies_generated_by_meson:
url: https://bugs.debian.org/1056117
description: |
eg. "Requires.private: pixman-1, aml >= 0.3.0, aml < 0.4.0, […]"
vs "Requires.private: pixman-1, aml < 0.4.0, aml >= 0.3.0, […]"
Code is in `mesonbuild/modules/pkgconfig.py` in `src:meson`.
unsorted_cache_file_by_vlc-cache-gen:
description: |
File lists are generated in the plugins.dat file, which varies
with the readdir() order.
timestamps_added_by_librime:
description: |
Rime Input Method Engine (RIME) related packages that use src:librime can
ship YAML schema files with embedded timestamps.
.
There appears to be an optional configuration variable in rime,
-DRIME_NO_TIMESTAMP, to disable this at runtime.