Bionic: Circular dependency between libicu60 and libicu-le-hb-dev??

Asked by Yaobin Wen on 2018-10-18

Hi,

I am trying to backport libicu60 from Ubuntu 18.04 onto Ubuntu 14.04 for my personal use.

When I was examining the libicu60's source package, I found a possible circular dependency between it and libicu-le-hb-dev. I'm not sure if I miss something so would like to ask about it. More details follow.

- 1). I'm using icu's source code from this page: https://packages.ubuntu.com/source/bionic/icu
  - 1.1). The page says the source code produces 5 binary packages, and "libicu60" and "libicu-dev" are two of them.
  - 1.2). The same page also says icu's build depends on "libicu-le-hb-dev".

- 2). I then look at "libicu-le-hb-dev"'s page here: https://packages.ubuntu.com/source/bionic/icu-le-hb
  - 2.1). Weirdly, the page says its build depends on "libicu-dev (>= 60.1)".

So here is the circular dependency I don't understand: "icu"'s build depends on "libicu-le-hb-dev" which is produced by "icu-le-hb" whose build depends on "libicu-dev" which is produced by "icu".

Did I overlook something?

Thanks for help!

Best,
Yaobin

Question information

Language:
English Edit question
Status:
Answered
For:
Ubuntu icu Edit question
Assignee:
No assignee Edit question
Last query:
2018-10-18
Last reply:
2018-10-18
Yaobin Wen (yaobinwen) said : #1

I tried to build the "icu" source code [1] on Ubuntu 18.04. Its configuration output and building process showed that "icu-le-hb" is actually optional.

On my Ubuntu 18.04 I don't have the "icu-le-hb"-related packages installed. The "configure.ac" file has the module check:

> PKG_CHECK_MODULES(ICULEHB, icu-le-hb, have_icu_le_hb=true, :)

It simply reported that my system didn't have it, and continued on the subsequent checks.

When I ran "make check" to build the code and run the tests, I didn't encounter any build errors and the tests all passed.

I then found in the email thread [2] where the same issue was discussed, quoting:

> The package I need to build have optional build dependency (libgpm-dev) which is not available on all platforms.
>
> If I just put it to Build-Depends, package will FTBFS on some platforms.

For my work at hand, I might probably simply remove the Build-Depends of "libicu-le-hb-dev" because it is anyway not available on Ubuntu 14.04.

But I still feel it not completely correct in some way for Ubuntu 18.04 because of the circular dependency.

References:

- [1] I used this source code: http://archive.ubuntu.com/ubuntu/pool/main/i/icu/icu_60.2.orig.tar.gz
- [2] Email thread: "optional package in Build-Depends (how?)": https://lists.debian.org/debian-mentors/2012/02/msg00710.html

Manfred Hampl (m-hampl) said : #2

Your assessment seems correct.

Instead of using packages.ubuntu.com (which is an information platform) you should go back to the source on launchpad.net/ubuntu, but this tells the same:

https://launchpad.net/ubuntu/bionic/+source/icu 60.2-3ubuntu3 which is the source for libicu-dev build-depends on libicu-le-hb-dev
https://launchpad.net/ubuntu/bionic/+source/icu-le-hb 1.0.3+git161113-4 which is the source for libicu-le-hb-dev build-depends on libicu-dev(>=60.1)

Digging through the different versions it seems that the build dependency on libicu-le-hb-dev was introduced in icu (60.2-1)

So the following sequence might be possible:
build libicu-dev from icu 60.1-1
build libicu-le-hb-dev from icu-le-hb
build libicu-dev from icu 60.2-3

You should consider creating a bug report against these two source packages.

Can you help with this problem?

Provide an answer of your own, or ask Yaobin Wen for more information if necessary.

To post a message you must log in.