From: "Jérôme Pouiller" <jezz@sysmic.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 00/15] Reproducible builds
Date: Fri, 18 Nov 2016 09:49:51 +0100 [thread overview]
Message-ID: <abab99dd97db78785de3ba2f274cac65@sysmic.org> (raw)
In-Reply-To: <20161117150855.4b2c99b9@free-electrons.com>
On 2016-11-17 15:08, Thomas Petazzoni wrote:
[...]
> Another (unrelated) question: how can we test this stuff? You're
> providing the initial steps for it, but at some point, we will want to
> validate which packages behave properly and which packages don't behave
> properly. Have you already thought of automated testing we can do (in
> the autobuilders perhaps?) to exercise this "reproducible builds"
> functionality? Should we from time to time do a given builds twice,
> each time in a different environment (different date, different time,
> different user, different path, different timezone, different locale,
> etc.) ?
In a first time, compiling each configuration twice, diffing
$(TARGET_DIR)
and find guilty packages using packages-file-list.txt should be enough
to find
a many errors. We may also grep $TARGET_DIR for most common error
patterns
(hostname, user, ...)
In a second time, I think reproducible build is an excellent tool to
validate
top level parallelization.
Finally, for more accurate checks, we need to compile same configuration
on
different host. I didn't check autobuilder sources, but it seems it
would
involve a new autobuilder design.
> To what extent do we try to be reproducible? Do we try to have
> something that produces the same result when executed multiple times,
> but on the same machine, in the same environment (i.e only date/time
> changes) ? Or do we try to go the point where a given Buildroot .config
> gives a byte identical output regardless of the host machine on which
> you do the build? It would be great to know what our definition of
> "reproducible is", and document it in the help text of the
> BR2_REPRODUCIBLE option.
Ideally, "reproducible" mean that a binary result only depends on
Buildroot
version and user configuration (sure, if a custom script have a
non-reproducible
behavior, result won't be reproducible).
Currently, there are few known (and doubtless many unknown) bugs:
- build paths have to be the sames
- lzop shouldn't be used
BR,
--
J?r?me Pouiller
next prev parent reply other threads:[~2016-11-18 8:49 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-17 10:00 [Buildroot] [PATCH 00/15] Reproducible builds Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 01/15] gcc6: honor SOURCE_DATE_EPOCH Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 02/15] gcc5: " Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 03/15] reproducibility: generate SOURCE_DATE_EPOCH Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 04/15] reproducible: add '-n' to gzip invocations Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 05/15] fs/tar: make results reproducible Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 06/15] reproducibility/linux: override build timestamp Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 07/15] reproducibility/linux: inhibit build-id Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 08/15] reproducibility/busybox: disable build timestamps Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 09/15] reproducible: lock modification times in $TARGET_DIR Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 10/15] fakedate: new package Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 11/15] reproducible: enable fakedate Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 12/15] python2: generate reproducible .pyc Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 13/15] python3: " Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 14/15] python2: remove full path from .pyc Jérôme Pouiller
2016-11-17 10:00 ` [Buildroot] [PATCH 15/15] python3: " Jérôme Pouiller
2016-11-17 11:13 ` [Buildroot] [PATCH 00/15] Reproducible builds Thomas Petazzoni
2016-11-17 13:17 ` Jérôme Pouiller
2016-11-17 14:08 ` Thomas Petazzoni
2016-11-18 8:49 ` Jérôme Pouiller [this message]
2016-11-18 9:09 ` Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=abab99dd97db78785de3ba2f274cac65@sysmic.org \
--to=jezz@sysmic.org \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox