On Tue, Aug 18, 2020 at 10:12:07PM +0200, Helmut Grohne wrote:
> > I'm not sure whether the package not being a leaf has that much to do
> > with it. Honestly, I feel like blaming libmaxminddb for bootstrappability
> > issues is a bit odd. The chain I think is:
> >   isc-dhcp-client(?) -> bind9 -> libmaxminddb -> pandoc -> <bunch of 
> > Haskell>
> > with Haskell being particularly hard to bootstrap. Did I get that right?
> 
> The cycle seems wrong to me. isc-dhcp-client Build-Depends on
> libbind-export-dev, which is built from src:bind9-libs and doesn't
> depend on something built from libmaxminddb. So this particular cycle is
> already solved at the bind level by splitting the bind source package.
> 
> This is not to say that there would be no cycle. I haven't checked, but
> it isn't this cycle.

Ah, apologies then. Not sure what the cycle is in that case :)

> That said, if you want to break a cycle using cross compilation (which
> is not applicable to all bootstrap scenarios), libmaxminddb would have
> to be cross buildable, which presently isn't the case. This is due to
> all the perl-ish dependencies. Do I understand correctly, that you only
> need them for running unit tests? If yes, please annotate them
> <!nocheck>.

Not all, but from what I saw in the bug you filed, you figured that out
already :) Thanks for that bug report, I applied that patch in git.

> > All that said, I don't want to be an obstacle here and would be happy to
> > help, as long as what we end up doing makes overall sense :)
> 
> Speaking of sense: Having the libmaxminddb.3 manual page in the
> libmaxminddb0 packages certainly does not make sense. You added the
> developer documentation to the shared library package. A much better
> place would be libmaxminddb-dev. Unfortunately, that doesn't help us in
> any way with solving the bootstrapping problem at hand.

Whoops! Thanks for spotting that! Fixed that in git as well.

> So let's talk about alternatives.
> 
> 1. nodoc. There is a build profile/option called nodoc. I really hate
>    it, because it makes things unreproducible and I like things to be
>    reproducible. However, making the manual pages optional via a nodoc
>    profile certainly solves the bootstrap cycle. It's just inconvenient
>    for the bootstrapper and requires manual work. I don't like it, but
>    it really is a solution.
> 
> 2. Try a different converter. ronn (written in ruby) is such a
>    converter. I'm not sure whether ruby cycles with libmaxminddb in some
>    other way.

Hmmm alright. That's helpful! 

I gave ronn a look just now, attempting to convert the mmdblookup
manpage. The output is broken, apparently due to apjanke/ronn-ng#57
(very new), apjanke/ronn-ng#33 (old), as well as the requirement to use
section 2 markdown headers instead of section 1 (the latter being
relatively easy to workaround in the Perl script, though). I also did
not check for current or potential bootstrap cycles.

Best,
Faidon

Reply via email to