Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
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

  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