1. Deciding a new Build System for GNOME
1.1. Current problems with the autotools toolchain
- Hard to learn: a few different languages and tons of conventions (M4, make, .am, .in), being one of the most annoying obstacles for new contributors.
- Really hard to parse programaticaly: stopping proper GUI and IDE support (although Anjuta has some support for it).
- Really hard to extend: M4 function definition is hard to learn and for proper support everything has to go mainstream through the FSF.
- Hard to maintain: lack of discipline and experience can turn an autoconf and automake script into a really hard to understand piece of code.
- Hard to port out of a UNIX system: setting up a windows environment for an autotools package is a hazard, hard stopper for windows contributions and automated building and packaging.
1.2. Requisites for a replacement
- Free software
- One single language to use for configure and build time.
- Platforms: unix/win32/osx, avoid unix dependencies such as bash/awk/sed
- Should not be harder to learn than autotools
- Needs to integrate with jhbuild
- Should be possible to extend (eg Vala support)
- i18n: gettext/intltool must be possible
- pkg-config support
- gtk-doc support
- Templates like glib-mkenum
- Need to support building of tarballs (make dist)
- Documented, Tutorial and a Manual
Wishlist, things that are nice to havebut they should not stop the initial migration:
- Cross-compilation
- Building of binary win32 (msi) and OSX (bundle) packages
- Avoid copyright assignments for upstream contribution
- Should allow builds where source dir != build dir
1.3. Current available contenders
1.3.1. WAF
Python based, easy to extend, gnome support.
1.3.2. Quagmire
1.3.2.1. Pros
- No new external dependencies or new build-time dependencies. Just include the quagmire.mk file in your module.
- Not yet another new language to learn.
- Keeps the familiar ./configure, make, make install idiom.
- No need for Gnome to sign off on it: as no dependency blessing is required. Modules can just move to it when they are ready. Include the version you want to use.
- Compatible with a number of existing Gnome i10n make files including gnome-doc-utils. It's just Makefiles.
- KISS
1.3.2.2. Cons
- Depends on make
- no autoconf replacement support yet
1.3.3. CMake
KDE4 choice, support for generating XCode packages and frameworks and VisualStudio project files
1.4. Proposed Roadmap
Item
Status
Comments
Decide features we need to do a migrate
to do
Create a table of proposed build systems x features
to do
Check the KDE build system migration and see what we can learn
to do
TimJ has some comments about this
An obvious option will eventually appear
to do
Start migrate some modules
to do