[Debian-pan-maintainers] Bug#1078268: pyfai: please make the package build reproducible

James Addison jay at jp-hosting.net
Fri Aug 9 12:18:34 BST 2024


Source: pyfai
Severity: wishlist
X-Debbugs-Cc: reproducible-bugs at lists.alioth.debian.org
User: reproducible-builds at lists.alioth.debian.org
Usertags: buildpath cpu

Dear Maintainer,

I'm an occasional volunteer contributor to the Reproducible Builds[1] project,
and noticed that the pyFAI package failed a recent automated build
reproducibility test[2], as also reported in recent Salsa CI reprotest
results[3].

I'm aware of two causes of non-determinism in the build so far:


The first cause of non-determinism is the use of temporary directory paths by
the meson-python build process; the resulting paths are embedded in some of the
extension modules (for example, this[4] CRC32 module) produced in the output
binary package.

The meson-python build generates and uses a temporary, randomized build
directory path only when no build-dir setting is already configured.  So we may
be able to resolve this problem by choosing an appropriate static build-dir.

It appears that the Debian numpy package encountered a similar problem and
applied[5] that same style of fix.


The second non-deterministic output appears to be due to dynamic-evaluation of
a 'threadpoolsize' default argument value for a Python initializer[6], which
is set to the current host's CPU count.  This would generally only be relevant
at runtime, except for the fact that the documentation package, built using
the Sphinx 'autodoc' extension, renders the evaluated value in the output HTML
docs.  That behaviour can be disabled using the 'autodoc_preserve_defaults'[7]
configuration setting.


I'll prepare patches and corresponding merge requests on Salsa to configure a
fixed build-dir for the meson-python build process, and to configure Sphinx
autodoc to preserve argument default signatures as they appear (unevaluated)
in the source code.

Regards,
James

[1] - https://reproducible-builds.org/

[2] - https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/pyfai.html

[3] - https://salsa.debian.org/science-team/pyfai/-/jobs/6077934

[4] - https://sources.debian.org/src/pyfai/2024.05-3/src/pyFAI/ext/meson.build/#L106-L107

[5] - https://salsa.debian.org/python-team/packages/numpy/-/commit/ece4cae7ceb221783be5ab56b46b1daf196dbc1f

[6] - https://sources.debian.org/src/pyfai/2024.05-3/src/pyFAI/multi_geometry.py/?hl=62#L59-L62

[7] - https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#confval-autodoc_preserve_defaults



More information about the Debian-pan-maintainers mailing list