All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] Build reproducibility
Date: Tue, 3 Sep 2013 09:16:12 +0200	[thread overview]
Message-ID: <20130903091612.3216fb83@skate> (raw)
In-Reply-To: <87r4d6775s.fsf@dell.be.48ers.dk>

Dear Peter Korsgaard,

On Tue, 03 Sep 2013 08:26:07 +0200, Peter Korsgaard wrote:

>  Arnout>  Note that doing more randomized build order in the autobuilder also
>  Arnout> will not capture the latter scenario. You would have to compare the
>  Arnout> build result - but binary differences are likely because of changing
>  Arnout> timestamps or changing optimizations depending on memory randomness.
> 
> Exactly. I don't have any good ideas about how to detect this (besides
> building all packages in clean staging dirs, E.G. only populated with
> its explicit dependencies like afaik OE lite can do, but that would
> require quite some work), anyone?

Doing a per-package sysroot that is generated for each package before
it gets built, with only the explicitly listed dependencies, is indeed
the only way to ensure that a package is not seeing/using something
that isn't declared as a dependency.

This would certainly be nice to have (as it also helps top-level
parallel build, as was discussed with Fabio Porcedda some time ago),
but:

 1) I'm worried about the additional complexity inside Buildroot.

 2) I'm worried about the additional build time required to generate a
    per-package sysroot for each package. When building large stacks
    like X.org that has many small packages, but each have a lot of
    dependencies, the cost of creating a sysroot before building each
    package could be huge.

 3) We still need to provide the user a global sysroot with all
    libraries installed, so that he can use the toolchain generated by
    Buildroot to build his own libraries/applications. This would mean
    we would need to have two sysroots: the global sysroot, that gets
    incrementally populated with what all packages are installing, but
    that isn't used for building packages inside Buildroot, and a
    separate temporary sysroot, used when building the current package.
    Since the compiler would default to the 'global sysroot', we would
    have to pass --sysroot $(TMPSYSROOT) all the time, or have a
    separate wrapper, or something. Not impossible, but see (1).

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2013-09-03  7:16 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-30  8:31 [Buildroot] Build reproducibility Jérôme Pouiller
2013-08-30  8:31 ` [Buildroot] [PATCH] Fix build reproducibility in Make 3.82 Jérôme Pouiller
2013-09-03  6:13   ` Arnout Vandecappelle
2013-09-03  8:45     ` [Buildroot] [PATCH v2] " Jérôme Pouiller
2013-09-03  9:31       ` Arnout Vandecappelle
2013-09-07  6:06       ` Peter Korsgaard
2013-08-30 11:59 ` [Buildroot] Build reproducibility Thomas De Schampheleire
2013-08-30 12:44   ` Jérôme Pouiller
2013-08-30 12:52     ` Thomas Petazzoni
2013-09-02  8:44       ` Thomas De Schampheleire
2013-09-02  8:53         ` Thomas Petazzoni
2013-09-02 13:18           ` Thomas De Schampheleire
2013-09-03 17:13             ` Thomas Petazzoni
2013-09-05 19:56               ` Thomas De Schampheleire
2013-09-05 20:49                 ` Jérôme Pouiller
2013-09-02 16:11         ` Arnout Vandecappelle
2013-09-03  6:26           ` Peter Korsgaard
2013-09-03  7:16             ` Thomas Petazzoni [this message]
2013-09-03  7:47               ` Peter Korsgaard
2013-09-03 16:48                 ` Thomas Petazzoni
2013-09-03  8:15             ` Jérôme Pouiller
2013-09-03 16:54               ` 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=20130903091612.3216fb83@skate \
    --to=thomas.petazzoni@free-electrons.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.