Thread (65 messages) read the whole thread 65 messages, 6 authors, 2017-08-18

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help