Source: icu
Version: 60.2-1
Severity: important
User: helm...@debian.org
Usertags: rebootstrap

icu introduces a build dependency cycle with icu-le-hb. Doing so breaks
architecture bootstrap. The full cycle is:

src:icu Build-Depends: libicu-le-hb-dev
libicu-le-hb-dev is built from src:icu-le-hb
src:icu-le-hb Build-Depends: libicu-dev
libicu-dev is built from src:icu

I haven't fully understood the reason of the new dependency yet, so I
cannot easily suggest a cure. One thing that strikes me as odd is that
these source packages seem to be fully interdependent. That suggests
that merging them into a single multi-tarball source package might work.

Reading http://userguide.icu-project.org/layoutengine/paragraph suggests
that doing so may be impossible, because that'd require adding harfbuzz
to icu's Build-Depends introducing yet another dependency cycle with
harfbuzz.

An alternative may be splitting icu-lx into separate binary packages
libiculx60 and libicu-lx-dev. Then we could add a build profile
pkg.icu.nolayoutex to skip generating these packages. Downstream users
would have to add an explicit dependency on libicu-lx-dev to get that
functionality.

An even better variant would be splitting icu-lx into a fully separate
source package if possible. Potentially moving icu-lx into libicu-le-hb
might work.

These ideas concentrate on the src:icu -> libicu-le-hb-dev edge. As far
as I understand, trying to build src:icu-le-hb without libicu-dev
doesn't make any sense at all (and still produces a cycle via harfbuzz).

Do you see any other options? Which route do you prefer?

Helmut

Reply via email to