Hi everyone,

I'm sure the answer to the question asked in the subject of this thread
opener ranges somewhere between "yes" and "OH YEAH BRING IT TO ME ALREADY".

Our build system, you might know, is full of traps, and hard not to
break in subtle ways. So it is with extreme care that I landed bug
907365 and bug 915648 (on m-i currently), which will bring you improved
build times, but only if you opt in for it. I need volunteers ready to
maybe have their builds broken occasionally, but likely not.

The first reason you need to opt in is that I didn't want to risk
breaking releng builds. The second reason is that while we now do have
a way to push some options by default on developer builds while not
touching releng builds, I didn't want to leave people with broken builds
and no alternative other than doing a releng-like build.

At this point, you might ask, "how do I opt-in?". Here you are. Add the
following to your .mozconfig:

    export MOZ_PSEUDO_DERECURSE=1

That's it.

Before jumping ahead and building like crazy, you should know that it
currently doesn't work with pymake because of bug 918652. You can try to
remove the assert as noted in the bug, but your warranty will be void.
As far as my testing goes, pymake still works properly without the
assert.

There are four things the two aforementioned landed bugs do:
- Make the tree traversal less recursive. Instead of doing make -C foo,
  and from foo, make -C bar, we now do make -C foo and make -C foo/bar
  from top-level. This in itself is kind of boring (but
  (un?)surprisingly required a lot of preparation), but opens a lot of
  possibilities.
- For the compile and tools steps, do everything in parallel instead of
  sequentially. As there are no interdependencies between the things
  built in those steps, it's supposed not to break.
- For the export step, do everything in parallel instead of
  sequentially. As there *are* interdependencies between the things
  built in this step, it's possible it brings up some race conditions.
  Some manual dependencies have been added to overcome the known
  problems, but if you do get a build failure during make export with
  MOZ_PSEUDO_DERECURSE=1 please file a bug and rebuild with
  MOZ_PSEUDO_DERECURSE=no-parallel-export, or without
  MOZ_PSEUDO_DERECURSE (both need mach configure). The former will
  keep the parallel builds on the compile and tools steps.
- Prepare the field for more improvements.

If you have any build failure with MOZ_PSEUDO_DERECURSE=1 or
MOZ_PSEUDO_DERECURSE=no-parallel-export, please file a bug, or ping me
on irc. Fortunately, you can get back to having working builds by just
building without MOZ_PSEUDO_DERECURSE.

When it is demonstrated to be robust, it will be made the default for
non-releng builds (not for windows until bug 918652 is fixed somehow
in-tree).

More to come in the next few days. Stay tuned.

Mike
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to