On 9/4/13 3:04 AM, Mike Hommey wrote:
On Wed, Sep 04, 2013 at 10:57:26AM +0100, L. David Baron wrote:
The way the tier build works is that we effectively make export in all
directories of a same tier before make libs. In practice, this means
xpcom had access to every header in platform already, and any tier built
before platform, for that matter. So only app headers weren't available
to xpcom, and that's not a lot of them.

So, really, nothing was already there to prevent backwards dependencies.
At least not in a very long time (I don't remember if we ever did
(make export; make libs) recursively directory by directory instead of
tier by tier.)

So I was assuming that xpcom was in a different tier from layout;
apparently that's not the case.  (I thought it was originally, but
my memory could be wrong.)

You're right, this was changed in bug 528250
http://hg.mozilla.org/mozilla-central/rev/b7b5c61b1af8

But is it correct that this change means we no longer have the
backwards-dependency checking for things in different tiers?

Yes, but since most things are in the platform tier, and the platform
tier is almost last (there's only the app tier after it), it wasn't much
relevant. What probably matters most to protect is js, and js standalone
builds should provide that protection.

It's worth explicitly mentioning that tiers limit the ability of the build system to build concurrently. So, we have to choose between speed and a moving/complex target of "dependency correctness." We have chosen to sacrifice this dependency correctness to achieve faster build speeds.

If we want to keep ensuring dependency correctness, I believe we should accomplish that via static analysis, compiler plugins, standalone builds, or special build modes.
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to