From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [PATCH v2 2/2] Makefile: Only build dtc if needed
Date: Tue, 28 Apr 2020 11:52:16 -0400 [thread overview]
Message-ID: <20200428155216.GA4468@bill-the-cat> (raw)
In-Reply-To: <CAPnjgZ2GtGCEvNMB_b2KaNG_mE355QMCwpJFzn1Ez4zkdODTog@mail.gmail.com>
On Tue, Apr 28, 2020 at 09:41:14AM -0600, Simon Glass wrote:
> Hi Tom.
>
> On Tue, 28 Apr 2020 at 08:19, Tom Rini <trini@konsulko.com> wrote:
> >
> > On Mon, Apr 27, 2020 at 04:10:06PM -0700, Vagrant Cascadian wrote:
> > > On 2020-04-27, Simon Glass wrote:
> > > > On Sun, 26 Apr 2020 at 18:58, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > >>
> > > >> Am April 27, 2020 12:29:29 AM UTC schrieb Simon Glass <sjg@chromium.org>:
> > > >> >At present U-Boot always builds dtc if CONFIG_OF_CONTROL is defined.
> > > >> >This
> > > >> >is wasteful when the system already has a suitable version available.
> > > >> >
> > > >> >Update the Makefile logic to build dtc only if the version available is
> > > >> >too old.
> > > >> >
> > > >> >This saves about 2.5 seconds of elapsed time on a clean build for me.
> > > >> >
> > > >> >- Add a patch to bring back the dtc-version.sh script
> > > >> >- Update the check to make sure libfdt is available if needed
> > > >>
> > > >> U -Boot has been set up to create reproducible builds. With this
> > > >> patch dtc will have to be made a build dependency to provide
> > > >> reproducibility. Cf. https://www.debian.org/doc/debian-policy/ch-source.html#reproducibility
> > > >>
> > > >> This may require changes in the packaging of U-Boot in Linux
> > > >> distributions. Nothing to stop this patch, just something to keep in
> > > >> mind.
> > > >>
> > > >> You presume that future versions of dtc will always be backward
> > > >> compatible with U-Boot. Ok, we do the same for other tools like gcc
> > > >> too (with surprises at each new major release).
> > >
> > > In general when packaging for Debian, the preference is to not use
> > > embedded code copies if at all possible. This does require paying
> > > attention to backwards and forwards compatibility issues a bit.
> > >
> > > A simple example: The security team in Debian generally likes to fix a
> > > problem in a single source package, rather than an arbitrary number of
> > > source packages that happen to share some embedded copy of the code from
> > > who knows when...
> > >
> > > So at least from my perspective, I'd be happy to use the Debian packaged
> > > dtc (a.k.a. device-tree-compiler), rather than the one embedded in
> > > u-boot sources.
> > >
> > > Silently switching to the embedded copy sounds a little scary; I would
> > > prefer for that to be explicit... a build flag to specify one way or the
> > > other and failing is better that being too clever about autodetecting.
> > >
> > >
> > > > Should we disable this check (and always build dtc) when doing a
> > > > repeatable build? Is that SOURCE_DATE_EPOCH?
> > >
> > > And with my Reproducible Builds hat on, builds would ideally *always* be
> > > reproducible, given the same sources and toolchain... several
> > > distributions and software projects provide information sufficient to
> > > reproduce the build environment:
> > >
> > > https://reproducible-builds.org/docs/recording/
> > >
> > >
> > > While SOURCE_DATE_EPOCH is definitely one sign that the builder is
> > > explicitly attempting to be reproducible; It's a bit of a kludge to try
> > > and be more reproducible just because SOURCE_DATE_EPOCH is
> > > set. SOURCE_DATE_EPOCH should really only affect the behavior of date or
> > > time related things; even better would be to not embded time related
> >
> > This is probably one of those cases where we should just continue to act
> > like the linux kernel and always use and build our own copy of dtc.
> > Then, when someone convinces the kernel folks to change their ways, we
> > can adopt that.
>
> It seems that Vagrant wants to use the system dtc by default and
> require an explicit option to use the in-built dtc. I don't think that
> would work well for most users though.
Right, and this is where I disagree and point to the kernel. Get that
changed first.
> It is in my view somewhat mad to build dtc for every one of 1400
> boards as I do today when running buildman.
This is a different funny case. Perhaps ccache could be helpful here?
I think the way it's used in OpenEmbedded, such that you have a cache
that's more local to what's building vs global cache, could be helpful
here too. A ccache instance per CI job / world build could help. A
flag to buildman to support that could help, yes? Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200428/8a0ea818/attachment.sig>
next prev parent reply other threads:[~2020-04-28 15:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-27 0:29 [PATCH v2 1/2] Revert "kbuild: remove unused dtc-version.sh script" Simon Glass
2020-04-27 0:29 ` [PATCH v2 2/2] Makefile: Only build dtc if needed Simon Glass
2020-04-27 0:58 ` Heinrich Schuchardt
2020-04-27 22:25 ` Simon Glass
2020-04-27 23:10 ` Vagrant Cascadian
2020-04-28 14:19 ` Tom Rini
2020-04-28 15:41 ` Simon Glass
2020-04-28 15:52 ` Tom Rini [this message]
2020-04-28 22:40 ` Simon Glass
2020-04-30 15:05 ` Tom Rini
2020-05-01 4:04 ` Simon Glass
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=20200428155216.GA4468@bill-the-cat \
--to=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/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.