[rb-general] new tool: autoprovenance

Bernhard M. Wiedemann bernhardout at lsmod.de
Tue Oct 2 11:43:55 CEST 2018


Hi

when debugging reproducibility issues, it is often helpful to understand
how and where unreproducible files are created.
To help with this task, I created a new tool:

https://github.com/bmwiedemann/reproducibleopensuse/blob/master/autoprovenance

It is not specific to openSUSE.
It is just 60 lines of code, but amazingly powerful.


In openSUSE, I mostly use it with 1-year-old
https://github.com/bmwiedemann/reproducible-faketools/blob/master/bin/rpmbuild-strace
https://github.com/bmwiedemann/reproducibleopensuse/blob/master/stracebuild

which provides/uses a build wrapper to run the build with strace.



E.g. I used it with
https://build.opensuse.org/package/show/openSUSE:Factory/python-service_identity
that has unreproducible index.html files
and 'autoclassify' already told me that the diff is from parallelism

I attached a file with example autoprovenance output (to keep the long
lines intact)

There you can see that index.html is produced in the 'docs' dir by
sphinx-build
in the line below, you see that it was called by
["make", "-j8", "man", "singlehtml"]
which was called by /var/tmp/rpm-tmp.*
So that call is coming directly from the .spec file.

Below that, you can also see 2 sections on how the install part happens
for python2 and python3, but it is not so relevant here.

At some point, I also had the idea to create .dot graphs with graphviz
visualizing the call traces or another graph to show the flow of input
and output.

Ideas and PRs are welcome.

Ciao
Bernhard M.
-------------- next part --------------
stracebuild
autoprovenance index.html
"/home/abuild/rpmbuild/BUILD/service_identity-17.0.0/docs/_build/singlehtml/index.html" written
    by pid=7262 dir=/home/abuild/rpmbuild/BUILD/service_identity-17.0.0/docs exec="/usr/bin/sphinx-build", ["sphinx-build", "-b", "singlehtml", "-d", "_build/doctrees", ".", "_build/singlehtml"] - started
    by pid=7258 dir=/home/abuild/rpmbuild/BUILD/service_identity-17.0.0/docs exec="/usr/bin/make", ["make", "-j8", "man", "singlehtml"] - started
    by pid=7235 dir=/home/abuild/rpmbuild/BUILD/service_identity-17.0.0/docs exec="/bin/sh", ["/bin/sh", "-e", "/var/tmp/rpm-tmp.ndfEbx"] - started

"/home/abuild/rpmbuild/BUILDROOT/python-service_identity-17.0.0-0.x86_64/usr/share/doc/packages/python2-service_identity/index.html" written
    by pid=7394 dir=/home/abuild/rpmbuild/BUILD/service_identity-17.0.0 exec="/usr/bin/cp", ["cp", "-pr", "docs/_build/singlehtml/index.html", "/home/abuild/rpmbuild/BUILDROOT/python-service_identity-17.0.0-0.x86_64/usr/share/doc/packages/python2-service_identity"] - started
    by pid=7390 dir=/home/abuild/rpmbuild/BUILD/service_identity-17.0.0 exec="/bin/sh", ["/bin/sh", "-e", "/var/tmp/rpm-tmp.bSskWW"] - started

"/home/abuild/rpmbuild/BUILDROOT/python-service_identity-17.0.0-0.x86_64/usr/share/doc/packages/python3-service_identity/index.html" written
    by pid=7546 dir=/home/abuild/rpmbuild/BUILD/service_identity-17.0.0 exec="/usr/bin/cp", ["cp", "-pr", "docs/_build/singlehtml/index.html", "/home/abuild/rpmbuild/BUILDROOT/python-service_identity-17.0.0-0.x86_64/usr/share/doc/packages/python3-service_identity"] - started
    by pid=7542 dir=/home/abuild/rpmbuild/BUILD/service_identity-17.0.0 exec="/bin/sh", ["/bin/sh", "-e", "/var/tmp/rpm-tmp.MbjMcu"] - started



More information about the rb-general mailing list