From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] Build reproducibility
Date: Tue, 3 Sep 2013 19:13:06 +0200 [thread overview]
Message-ID: <20130903191306.601a2be0@skate> (raw)
In-Reply-To: <CAAXf6LUdJgRVK-BJJdJeH9QyutP_daHktchXMkTQ8M=R3U95mw@mail.gmail.com>
Dear Thomas De Schampheleire,
On Mon, 2 Sep 2013 15:18:09 +0200, Thomas De Schampheleire wrote:
> > Of course, if within the Buildroot project we are interested in
> > fixing such missing dependencies, then we can find a way of adding
> > randomness into the build order in our autobuilders. But clearly,
> > we do want to expose this randomness to our users.
>
> I think indeed we should try to set the dependencies right some way
> or another.
>
> If we assume that a package does not have any configurable options
> that would change its dependencies, a simple way to check if all
> dependencies are properly expressed is through:
> make clean toolchain foo
This is already done by the autobuilders. Thanks to the randomness of
the configuration, if a package fails to express a mandatory
dependency, sooner or later the autobuilders will generate a
configuration that has the package enabled but not one of its unknown
dependencies. The autobuilders have triggered such cases very quickly
in the past when a new package was added, so I'm pretty confident we
have good coverage on this one.
However, I think this suggestion misses the point of the current
discussion: we are talking about *optional* dependencies, i.e
functionality of a given package that are enabled if OpenSSL is
available, or disabled if OpenSSL is not available. Those optional
dependencies cannot be checked/discovered by a build such as "make
clean toolchain foo".
> Also, it's not necessary that each package gets build every night:
> once the dependencies are correct, they will stay correct until a
> version bump. This means we can spread out the execution of this type
> of tests over time, interleaving them with the already existing
> autobuilds with random configurations.
As stated above, for the mandatory dependencies, the autobuilders are
already finding them very quickly. Introduce a new package that lacks a
mandatory dependency expressed in its .mk file, and you'll see it very
quickly in the autobuilders.
> The make targets of buildroot itself are executed sequentially.
> Suppose that we keep a list of all targets executed, something like:
> python-source
> python-extract
> python-patch
> python-configure
> python-build
> python-install-target
> pyfoo-source
> pyfoo-extract
> pyfoo-build
> ...
>
> To reproduce a build, we can explicitly pass this list on the make
> command-line, roughly like:
> cat <target-list> | xargs make clean toolchain
Could be doable.
I've lost track. Are we talking about all of this to use "include
package/*/*.mk" in make 3.82 which doesn't guarantee sorting, or to be
able to do top-level parallel build?
Seeing how simple it is to get make 3.82 to behave like make 3.81 by
sorting the "include package/*/*.mk" inclusions, I don't think it's
worth doing anything but the fix that J?r?me has suggested.
Only the top-level parallel build would be a good enough to worry about
reproducibility of more complicated builds (and therefore the need to
list in which order the targets were built).
Best regards,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2013-09-03 17:13 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 [this message]
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
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=20130903191306.601a2be0@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.