This is an offshoot of https://bugzilla.yoctoproject.org/show_bug.cgi?id=5866 providing a better specified deliverable. The goal of this enhancement is to build reproducible packages and images for: $ MACHINE=qemux86 bitbake core-image-minimal It is assumed the packages are Debian. The resulting Debian packages of this build are placed in the folder <builddir>/tmp/deploy/deb Repeating the build in a different folder will place the packages in: <builddir-different>/tmp/deploy/deb The build is deemed reproducible if all packages in both build folders are binary identical. This enhancement strongly depends on SOURCE_DATE_EPOCH support. https://bugzilla.yoctoproject.org/show_bug.cgi?id=11178
http://lists.openembedded.org/pipermail/openembedded-core/2018-April/149733.html
That xcb-proto patch has been integrated. Is that really the last piece for reproducible builds in this limited scope?
I will re-check. I am pretty sure this was the last one binary different for package for core-image-minimal, qemux86, qemux86-64. But the master is a moving target, so things may have changed. BTW, RPM and IPK packages are binary identical as well. On the downside, MACHINE like qemuarm, qemumips need som more work. But that is subject to another bug/enhancement which I will file.
So I checked core-image-minimal (qemux86-64) with poky-contrib/ross/sumo. (4ce51e515b575d89972a835cdead8df06b212558 go_runtime_1.9: pass BUILD_ flags) I got two packages that are binary different (out of 3950): python-xcbgen_1.12 and a new kid on the block (new, but easy to fix): bash-ptest_4.4.12 (I will attach the diffoscope outputs). So it seems python-xcbgen_1.12 patch has not been merged.
Created attachment 4280 [details] new problem (build host uninative reference)
Created attachment 4281 [details] notorious python-xcbgen
The only concrete mention in this bug is python-xcbgen, which should be covered now that Python has the SOURCE_DATE_EPOCH support integrated.
Recap: python-xcbgen isn't reproducible because it contains .pyc files which are compiled by the *host* python. Juro submitted a patch which made it use py3native if reprodicible builds were requested. I was instinctively against that because I don't want to pull py3native further into the bottom of the build tree. Then python-xcbgen got more complicated with pyc files being the wrong version and being regenerated and now its got a sstate hack to work around the fact that we're using host python to byte compile target code. I'm now thinking we need to two part plan: 1) just inherit python3native in this recipe, remove the cruft. Live with the build impact (rpm depends on it anyway, so its built early anyway). 2) Figure out a neater way to handle pyc files generally. Target packages and native that use py3native will need py3native to be present so they get built with the right version of Python. Native packages that don't use py3native are an interesting case...
Fixe by https://git.openembedded.org/openembedded-core/commit/?id=7709b2551c07cfad591bb37817474fd106e7c2f1