[Bf-committers] Removing Build Systems

Brecht Van Lommel brecht at blender.org
Sun Apr 12 23:58:00 CEST 2009


Hi,

> Ton Roosendaal wrote:
>> Well; I realize there are issues for merging, but for regular 
>> development the various users of each build system have always kept 
>> things work nicely.

This is not the case in my experience. I always end up updating all 
the build systems myself (except MSVC) because a user bugs me that the 
build is broken after my commit. So now I always do SCons, CMake and 
Makefiles updates.

blender at erwincoumans.com wrote:
> By the way, just like Ton I don't see the reason to drop build systems, just 
> because of temporarily inconvenience during 2.5 transition.

It's not a temporary inconvenience. Blender is always in development 
and in my experience build systems break all the time, for ffmpeg 
upgrades, bullet upgrades, blenfont, RNA, UI scripts, game player, .. 
Honestly I think I have spent about 2 weeks total on build system 
stuff in the 2.5 branch. Granted, that is partly because with RNA we 
try to do some tricky things, but it shouldn't be more complicated 
than necessary.

Blender building issues are a daily topic in #blendercoders, and it is 
often due to a build system being broken. The time spent maintaining 
all these build systems could also be spent making things work better 
out of the box or documenting the build process.

In my projects,
> I keep several build systems up-to-date as well (CMake, Makefiles, jam and 
> jam-generated msvc projectfiles).It can be a burden sometimes, but it helps 
> portability and makes some people happy. 

If it was actually for compatibility I would agree, but this is not 
the case.


Multiple build systems just complicate some things. Compiler and 
warnings flags are not consistent. So everyone sees different warnings 
and it's impossible to keep building blender warning free, and 
sometimes things break, because the declaration after statement 
warning is only in some build systems, etc. Then there are crashes 
that can only be reproduced with certain build systems or some 
dependency checking is not working correctly and things did not 
rebuild correct. Or you have to spend time tracking down bugs that 
were caused by some optimization flag that is only used in some 
particular build system.

And we have to ask for the 100th time "what build system do you use?", 
"try to do make clean", "oh you use scons, well I use this other build 
system, so I don't know what the option is called", "I tried cmake 
with the BF_DEBUG variable but I don't get a debug build", "yeah, you 
can't make a release with that build system, start over from the 
beginning with this other build system..".

I do really think we lose too much time on maintaining build systems.

Brecht.


More information about the Bf-committers mailing list