On Sat, Nov 26, 2016 at 03:34:44PM -0500, Robert Edmonds wrote:
> without the compiler. I will upload a new protobuf-c package with your
> patch shortly.

Great! I'll look into how far I can get with it.

> If this were the end of the dependency chain, then OK, we can upload a
> fixed protobuf-c and that's it. But it's not the end of the chain;
> protobuf-c build-depends on src:protobuf, and protobuf has a long
> history of being difficult to get building on all architectures at the
> same time (for instance, just have a look at the current buildd logs).
> Should we (Debian) look at how to get protobuf out of the dependency
> chain for bringing up new architectures?

I completely agree. When I filed this bug, I overlooked the
Build-Depends: libprotobuf-dev. Nevertheless, I think having
protobuf-c-compiler work for cross compilation would still be useful for
cross compiler end users.

> I'm at least partially responsible for this chain. Unbound build-depends
> on src:protobuf-c because of an optional feature which I turned on in
> the unbound build (--enable-dnstap) that requires protobuf-c. I also
> implemented changes in unbound (#828699) that allowed gnutls28 to
> build-depend on libunbound-dev for DANE support. Both of these are nice
> features to have and there are at least some users who would be
> disappointed if they were removed.

When I file patches for improving bootstrappability, I try hard not to
regress on such nice features. I consider the existence of such chains
as usual and try to work with them.

> Looking farther up the chain I see the audit ??? libprelude-dev
> build-dependency is due to --with-prelude being enabled in the audit
> build. Perhaps this feature could be targeted, similarly to #840262? I
> also wonder if the audisp-prelude plugin [0] could be split from
> src:audit and built by a separate source package. (It looks like the
> upstream developers prefer a monolithic repository, though.)

In general, splitting addon features to different source packages makes
bootstrapping easier as the Build-Depends become more fine grained.
Where feasible, I even prefer it to using build profiles.  Nevertheless,
dropping the audit -> libprelude dependency is not going to buy us much
as other bootstrap components need gnutls28 as well. For instance apt
uses curl, which uses gnutls82. If we want to go with a stage, then
likely gnutls28 is the place to add it.

I do note that staged builds have a significant maintenance cost.
Keeping stages working is non-trivial. Ensuring that their output is
compatible with unstaged builds is next to impossible. Thus I try to
avoid staged builds as much as I can - to the point of considering
larger dependency chains. Profiles such as <nopython> are slightly
better, because we can leverage reproducible builds to validate them
natively.

Helmut

Reply via email to