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

Re: upstream advise page about circular dependencies (bootstrapping)

+++ Simon McVittie [2013-02-12 16:58 +0000]:
> Either GLib or pkg-config should document how you can avoid this cycle
> by doing a "stage 1" build of one project or the other. pkg-config used
> to have an embedded subset of GLib which it could use instead of the
> system copy to break this cycle, but I think the recommended way these
> days is GLib without pkg-config, which you can do by turning the
> information that pkg-config would have given you into configure
> arguments, something like this:
>     ./configure \
>         PKG_CONFIG=false \
>         ZLIB_CFLAGS=-I/usr/include ZLIB_LIBS="-L/usr/lib -lz" \
>         LIBFFI_CFLAGS=-I/usr/include LIBFFI_LIBS="-L/usr/lib -lffi" \
>         --disable-libelf \
>         --with-pcre=internal
> There is a tension here between the way we want to build high-quality
> packages for the real distribution (no embedded code copies, no
> duplication, full functionality, regression tests) and the ability to
> build them without dependency cycles (which often implies reduced
> functionality or testing, or an embedded code copy).

Exactly. Many of the things that make cross-building and cycle-removal
difficult are good computer science/software practice. 

> There's a good reason why the /DebianBootstrap effort is based on doing
> "stage 1" builds with just enough functionality to break the cycle,
> rather than on eliminating cycles altogether.
> I think the advice to upstreams should be "keep it *possible* to build
> your software without cycles (perhaps with degraded functionality), and
> document how".
> > libdbus-glib-1-dev -> src:dbus
> > python-dbus -> src:dbus
> Both are easily broken by building src:dbus with reduced test coverage
> and reduced features, currently documented via comments in
> debian/control. I plan to upload a version to experimental that supports
> "stage1" builds, as soon as the current bootstrapping proposals solidify
> far enough that that's possible.

There is a patch for the necessary Build-profile foo here:


I'm collecting the set needed there for a basic build-chroot bootstrap
there until we are in a position to upstream this stuff in Debian or
Ubuntu (I.e the spec and tools support is nailed down and Debian is
unfrozen for such things)

Principal hats:  Linaro, Emdebian, Wookware, Balloonboard, ARM

Reply to: