On 05/25/2013 03:17 PM, Tom Wijsman wrote:
> From an user perspective I was wondering if ninja in the Portage tree
> makes use of this faster incremental builds feature. Should I expect
> faster builds when trying this out?
> 

No, you will not see any significant speed increase because we always
start with an empty build directory in an ebuild. Nothing has changed in
that regard.

You may see small (~60 seconds) difference when compiling Chromium due
to faster target dependency resolution.

> From a maintainer's perspective, shouldn't the user be able to choose
> whether ninja or make is used and not the developer? Or does ninja
> really work out for the majority in a way nobody would complain?
> 

As a maintainer, it is nice to know exactly how the software is being
built in case of a bug report. This also helps if we need to report an
issue upstream.

I should clarify: ninja is not a *drop-in* replacement for make; it does
not parse Makefiles. Instead, it uses its own configuration format,
which may be generated using GYP or CMake.

The choice of build system should be transparent to the user. However, I
have no strong personal objection to making it configurable.

> From an upstream perspective, would it be problematic if people use
> make instead of ninja; or wouldn't it translate into problems upstream
> has to resolve? (To me, using ninja instead of make sounds like using
> llvm instead of gcc; correct me if I'm wrong, I'm fairly new to ninja.)
> 

So long as GYP supports emitting makefiles as well as ninja build files,
I don't think this will be a problem.

For Gentoo, I believe phajdan.jr simply chose to switch to ninja to more
closely mimic the normal upstream build process.

>> I'm wondering if we should create a more global function for calling
>> ninja in a consistent way. Maybe we should introduce a NINJAOPTS
>> variable for users to set in make.conf. Should we create a new eclass
>> for this, or just stick it in eutils?
> 
> If we don't allow the user to pick which make system is preferred,
> which I tried to suggest above; then I would prefer that we introduce
> a NINJAOPTS variable like you suggest to go alongside MAKEOPTS.
> 
> In the case the user is able to choose which make system is preferred,
> then MAKEOPTS should probably apply to that make system; unless we allow
> maintainer's to override the user, then splitting them is back in favor.
> 

Another thought would be to mimic scons-utils.eclass, which utilizes a
filtered copy of MAKEOPTS if SCONSOPTS is not defined.

> But well, this is based on preliminary thoughts without really
> properly knowing what the advantages and disadvantages here are.
> 

I believe the only real advantage to using ninja for building chromium
is to follow upstream's default build configuration. It should be pretty
transparent to the end user.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to