On 01/15/2015 11:21 AM, Ehsan Akhgari wrote:
> On 2015-01-14 8:37 PM, Steve Fink wrote:
>> On 01/14/2015 11:26 AM, Ehsan Akhgari wrote:
>>>  From now on, the only supported build mode is unified compilation.  I
>>> am planning to follow-up with removing support for the
>>> --disable-unified-compilation configure option altogether in bug
>>> 1121000.
>>
>> I commented in the bug, but I guess this is probably a better forum.
>>
>> Why is the configure option being removed?
>
> Because unsupported build configurations that are *guaranteed* to not
> be maintained are not worth keeping around.  I am 90% sure that
> --disable-unified-compilation would have been broken since yesterday. 
> :-)

But that's not the point. I totally agree that non-unified builds will
get broken immediately and will stay broken most of the time. That's not
in question. The point is how hard it is for someone who comes along and
wants to fix our codebase to be valid C++, even if that fix is not
permanent.

Specifically, what I imagine happening is this: we start out nowish with
nonunified builds working. Within a day, they're busted. After some
time, somebody who gains from them being correct wants to fix them, and
uses --disable-unified-builds to do so. Rinse, repeat. The amount of
breakage to fix each time is determined by the time between fixes.

If this hypothetical person has to go through every moz.build and change
UNIFIED_SOURCES to SOURCES, or FILES_PER_UNIFIED_FILE to 1, then they're
less likely to do it, and the interval between fixes will grow, and
eventually the code base will be rotten enough that nobody will want to
deal with it. Oh, except that people will occasionally add new files and
uncover breakage that wasn't their fault because they shift around the
boundaries. Which isn't awful, because you'll only have to fix a
localized area, but it is guaranteed to baffle many of the people who
hit it until they've been educated. More overhead to contributing, more
"specialness" in our codebase.

If you were saying that the --disable-unified-builds mechanism itself is
likely to break, then I couldn't really argue with removing it. Is there
a simpler way to accomplish the same thing? A
FORCE_MAX_FILES_PER_UNIFIED_FILE_EVERYWHERE=1 setting in the toplevel
moz.build or something? It doesn't need to be pretty, but it should be
easier than

  for f in **/moz.build; do echo "FILES_PER_UNIFIED_FILE=1" >> $f; done

(assuming that even works, and note that you'll need zsh for the '**'
thing).

>
> > I understand always building
>> unified in automation, but not having a straightforward way at all to
>> see if your code is buggy seems... suboptimal. If someone wants to go
>> through occasionally and make our codebase valid C++, how should they do
>> it after this change?
>
> Switch the UNIFIED_SOURCES variable to SOURCES in the moz.build file.
> That still works.
>


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

Reply via email to