Re: build systems



On 10/11/2007, Ross Burton <ross burtonini com> wrote:
On Sat, 2007-11-10 at 11:44 +0100, Mikkel Kamstrup Erlandsen wrote:
> Totally wrong. I dare you build anything with a barebones linux
> install with only a shell and make. You need:
>
>  * A C compiler
>  * Tons and tones of -dev packages
>  * If you want to compile a fresh SVN/CVS checkout you need
> libtool/intltool/*tool/auto*/m4/<blah-di-blah>
>
> If I create an absolutely minimal installation and do "apt-get
> build-dep nautilus" how many development related packages would I end
> up with? 100? More?

Rob's point was regarding building from tarballs, not svn.  Yes, if you
build from svn you need the tools to rebuild the build environment.  But
if you build from a tarball, obviously you need the dependencies (glib,
etc), but apart from that you need a compiler and shell.  No Python, no
Perl, no random build tools which are not even packaged in major
distributions.

Yes, I am aware that Rob was referring to the tarball case.  However you still need a horde of build dependencies probably 95% header files and then a related set of scripts/tools to build most of the Gnome stack.

My point however is that you still need to install/compile a lot of dependencies - who cares if it is installing a script interpreter, build system, header files, what not. It is still just a load of extra packages to me.

Poky (an OpenEmbedded derivative) builds packages from scratch in a
clean environment, so I have two reasons to like autotools:

1) minimal dependencies.  No need to build Python and so on to actually
get started.  We do rebuild autotools because some older versions of
autoconf and so on don't know about certain architectures, but now days
this could probably go the Debian route and just replace
config.{guess,sub}.

Why compile a Makefile at all then? Why not just a shell script doing the same as make. The configure script is already done this way. Then we'd only have a bourne'ish shell and a C compiler as the only (executable) dependencies.

2) it cross-compiles with no pain.  Configure scripts know what tests
need to be performed on the host, and what need to be performed on the
target.  If a configure scripts wants to check that a file exists on the
target, it will refuse when cross-compiling because it clearly can't
tell.  There is a cache of known information which is populated with
test results such as this, so even complicated configure scripts like
glib and dbus which probe the target system heavily work without any
modifications.

 

I can live with adding another tool (hell, I'm going to have to live
with building Qt4 just to get qmake), but if a new build tool doesn't
cross-compile easily you can expect GNOME Mobile to die a sudden death.
Has anyone tested waf or the other new tools with a cross-build
environment?

In my ideal world a build system would be completely decoupled from the implementation - for example like Ant XML with the Java-isms converted to generic instructions. Such a system could be implemented using existing build tools such as waf, autotools, ant, or a completely custom framework. On release time it just compiles a "configure" and an a "compile" script and all are happy.

Cheers,
Mikkel


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]