Re: [PATCH v4 0/6] Reproducible build
From: Luca Boccassi <hidden>
Date: 2017-06-28 18:04:46
On Wed, 2017-06-28 at 17:04 +0100, Bruce Richardson wrote:
On Wed, Jun 28, 2017 at 08:57:33AM -0700, Stephen Hemminger wrote:quoted
On Wed, 28 Jun 2017 14:56:56 +0100 [off-list ref] wrote:quoted
From: Luca Boccassi <redacted> In the past couple of years a concerted effort among almost all Linux distros has been striving toward achieving reproducible builds. [1] This involves changes to the toolchain, new tools and CI systems. [2] v1 fixed the documentation, examples and linker script generation. v2 fixes all problems, which were caused by unstable order of headers inclusion, source files listing and object file listing when passing them to the compiler. DPDK's build, at least with the default configuration, is fully reproducible with this patch series as tested by the Reproducible Builds developers experimental toolchain. [3] v3 restores the first patch, which was eaten by git send-email. v4 drops the patch that reorders rebuilds, and adds a patch to make the inclusion of headers deterministic with regards to GCC embedding the full file path when expading __FILE__ and when writing the directory listing in the DWARF objects. It also drops the first 2 patches which have already been merged. [1] https://urldefense.proofpoint.com/v2/url?u=https-3A__reproduc ible- 2Dbuilds.org_&d=DwIBAg&c=IL_XqQWOjubgfqINi2jTzg&r=QTEM8ICX7t_SLgW P3qPWtKiwKMps487LPWQx- B9AqIc&m=HlHnLJOJRokDA9x9IHxyhvyPOnXIakHUFgofHP7STEQ&s=ibn1k95lSK CcbF9_9Gy4SpcLwLHaTD0aBr-Gm5uuCFQ&e= [2] https://urldefense.proofpoint.com/v2/url?u=https-3A__reproduc ible- 2Dbuilds.org_tools_&d=DwIBAg&c=IL_XqQWOjubgfqINi2jTzg&r=QTEM8ICX7 t_SLgWP3qPWtKiwKMps487LPWQx- B9AqIc&m=HlHnLJOJRokDA9x9IHxyhvyPOnXIakHUFgofHP7STEQ&s=u4leWgQouu DTOMv9EReHQMsopArSu9Xqc1uKe0cCqS0&e= [3] https://urldefense.proofpoint.com/v2/url?u=https-3A__wiki.deb ian.org_ReproducibleBuilds_ExperimentalToolchain- 23Us&d=DwIBAg&c=IL_XqQWOjubgfqINi2jTzg&r=QTEM8ICX7t_SLgWP3qPWtKiw KMps487LPWQx- B9AqIc&m=HlHnLJOJRokDA9x9IHxyhvyPOnXIakHUFgofHP7STEQ&s=I1iNIvHcZX YecfQKFo5HtwyhF7jogVTb-lGzBf0wHFg&e=Looks good. Looking ahead, how does this work with the proposed new build system? Is there an automated way to check new submissions so that new features don't undo this. Acked-by: Stephen Hemminger <stephen@networkplumber.org>https://urldefense.proofpoint.com/v2/url?u=http-3A__mesonbuild.com_Re producible- 2Dbuilds.html&d=DwIBAg&c=IL_XqQWOjubgfqINi2jTzg&r=QTEM8ICX7t_SLgWP3qP WtKiwKMps487LPWQx- B9AqIc&m=HlHnLJOJRokDA9x9IHxyhvyPOnXIakHUFgofHP7STEQ&s=0jXWXi5GtPcmXP RIXTNEoD1RhY54ig_799tJp4azboE&e= I'd hope if we switch build system, this shouldn't be a problem. It's definitely something to watch out for. /Bruce
Meson claims support for reproducible builds by default: http://mesonbuild.com/Reproducible-builds.html I am not very familiar with it, but I assume it means stable input/output to makefiles (list of sources/headers/objects etc). The most common cause for unreproducibility is usually embedding build timestamps - it was not the case for DPDK, but it might happen in the future, and it's worth keeping in mind. In general anything that uses find or wildcard to build lists (as opposed as a boolean - if <wildcard> exists; then) might cause problems. In terms of testing, Debian has setup a pretty good automated CI system: https://tests.reproducible-builds.org/debian/reproducible.html DPDK's page: https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/dpdk .html Every time we do an upload it will be tested there. -- Kind regards, Luca Boccassi