Bug#906906: icu FTCBFS: fails linking -licu-le-hb in the native pass
Hey folks, > Meanwhile, Matthijs can you tell us how the OpenTTD layout work goes? > May you have any ETA from its upstream? It would be good to drop > icu-le-hb very soon. As already noted elsewhere, I just uploaded an OpenTTD version without the iculx and icu-le-hb dependency. Not sure how that affects this bug exactly, but I'm confident you guys will figure that out :-) Gr. Matthijs signature.asc Description: PGP signature
Bug#906906: icu FTCBFS: fails linking -licu-le-hb in the native pass
> Meanwhile, Matthijs can you tell us how the OpenTTD layout work goes? > May you have any ETA from its upstream? It would be good to drop > icu-le-hb very soon. There's not much progress here. I haven't got time to really work on this, and haven't gotten around to pushing at this since we first spotted the issue a few months ago. Previously I've discussed this with upstream through IRC, but this week I opened up an upstream bug report for this, but not much is happening there yet: https://github.com/OpenTTD/OpenTTD/issues/6922 Gr. Matthijs signature.asc Description: PGP signature
Bug#906906: icu FTCBFS: fails linking -licu-le-hb in the native pass
Control: tags -1 = patch > Indeed, several downstream projects don't follow ICU development and > still use icu-config for library detection. ICU upstream doesn't force > the pkg-config library detection either. That's why I still need to > ship icu-config which is the barrier of co-installation of multi-arch > packages. Whether to ship icu-config is not a matter of this bug. That's tracked and discussed in #898820. It is only relevant in so far as it reduces the solution space of this bug. This bug solely seeks making icu cross buildable (not bootstrappable or coinstallable). > The way of dependency is intentional. Not all ICU dependent programs > need icu-le-hb but all icu-le-hb dependent packages need ICU. The dependency is not changed by my patch. Dropping the dependency is tracked and discussed in #898571 and #898806. I only referenced them here to explain the approach taken by my patch: It makes the additional native build pass (that only happens for cross building) build without le-hb. The cross build pass (that integrates with le-hb) does not depend on the native build pass integrating with le-hb. > I would like to. Of course, I can do an intermediate step to break > the dependency cycle. But the best would be to drop icu-le-hb for > being unmaintained and mainly unneeded. Only OpenTTD uses it and its > maintainers are noted even via Debian[1] that icu-le-hb and its > functionality is long deprecated. I'm in favour of the long-term solution without intermediate solutions provided that it is ready in time for buster. > As noted above, it would break OpenTTD big when cross building. You > need to manually bootstrap ICU as I had to with native builds. Yes, > first build it without icu-le-hb and remove the layoutex library from > the installation. Then build icu-le-hb with the new ICU and install > it. Then you can build without disabling the layoutex library and be > able to build OpenTTD as well. This I remove the patch tag. Well, this patch does not solve the bootstrapping problem. It solely solves the cross building part. The cross build of icu will build a native icu without le-hb and use that and a bootstrapped libicu-le-hb-dev to cross build an icu with le-hb. The resulting package should look exactly the same. I actually verified that a successful cross build inculdes the le-hb integration. It wasn't fully bit-identical, but icu isn't reproducible even in native builds. In any case, OpenTTD is not broken. > But if your intention is to cross-build ICU only and don't mind if > OpenTTD is unbuildable, then add back the patch tag and I'll upload > this change somewhen. I don't see how this patch breaks OpenTTD. On the other hand, it also doesn't solve the bootstrap problem. > Meanwhile, Matthijs can you tell us how the OpenTTD layout work goes? > May you have any ETA from its upstream? It would be good to drop > icu-le-hb very soon. Yes, please. Helmut
Bug#906906: icu FTCBFS: fails linking -licu-le-hb in the native pass
Control: tags -1 -patch +moreinfo On Wed, Aug 22, 2018 at 6:09 AM Helmut Grohne wrote: > icu fails to cross build from source, because the native build pass > fails linking -licu-le-hb. It turns out that icu does not Build-Depends: > libicu-le-hb-dev:native, so this is quite expected. Adding the > dependency is not going to help though, because libicu-le-hb-dev Depends > on libicu-dev (which is a problem, see 898571 and #898806) and since > libicu-dev is not M-A:same (see #898820) and is thus not coinstallable. Indeed, several downstream projects don't follow ICU development and still use icu-config for library detection. ICU upstream doesn't force the pkg-config library detection either. That's why I still need to ship icu-config which is the barrier of co-installation of multi-arch packages. The way of dependency is intentional. Not all ICU dependent programs need icu-le-hb but all icu-le-hb dependent packages need ICU. > Yes, you really need to fix the dependency cycle soon. I would like to. Of course, I can do an intermediate step to break the dependency cycle. But the best would be to drop icu-le-hb for being unmaintained and mainly unneeded. Only OpenTTD uses it and its maintainers are noted even via Debian[1] that icu-le-hb and its functionality is long deprecated. > In the mean time, we can perform the native build pass without > libicu-le-hb-dev. The host build pass still uses the library and thus > cross building succeeds. It still isn't bootstrappable, but being cross > buildable is part of the way. Please consider applying the attached > patch. As noted above, it would break OpenTTD big when cross building. You need to manually bootstrap ICU as I had to with native builds. Yes, first build it without icu-le-hb and remove the layoutex library from the installation. Then build icu-le-hb with the new ICU and install it. Then you can build without disabling the layoutex library and be able to build OpenTTD as well. This I remove the patch tag. But if your intention is to cross-build ICU only and don't mind if OpenTTD is unbuildable, then add back the patch tag and I'll upload this change somewhen. Meanwhile, Matthijs can you tell us how the OpenTTD layout work goes? May you have any ETA from its upstream? It would be good to drop icu-le-hb very soon. Regards, Laszlo/GCS [1] https://bugs.debian.org/897233
Bug#906906: icu FTCBFS: fails linking -licu-le-hb in the native pass
Source: icu Version: 60.2-6 Tags: patch User: helm...@debian.org Usertags: rebootstrap icu fails to cross build from source, because the native build pass fails linking -licu-le-hb. It turns out that icu does not Build-Depends: libicu-le-hb-dev:native, so this is quite expected. Adding the dependency is not going to help though, because libicu-le-hb-dev Depends on libicu-dev (which is a problem, see 898571 and #898806) and since libicu-dev is not M-A:same (see #898820) and is thus not coinstallable. Yes, you really need to fix the dependency cycle soon. In the mean time, we can perform the native build pass without libicu-le-hb-dev. The host build pass still uses the library and thus cross building succeeds. It still isn't bootstrappable, but being cross buildable is part of the way. Please consider applying the attached patch. Helmut diff --minimal -Nru icu-60.2/debian/changelog icu-60.2/debian/changelog --- icu-60.2/debian/changelog 2018-05-10 17:14:59.0 +0200 +++ icu-60.2/debian/changelog 2018-08-21 22:39:01.0 +0200 @@ -1,3 +1,10 @@ +icu (60.2-6.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix FTCBFS: Build the native pass without libicu-le-hb-dev. (Closes: #-1) + + -- Helmut Grohne Tue, 21 Aug 2018 22:39:01 +0200 + icu (60.2-6) unstable; urgency=medium * Build with Paragraph Layout API. diff --minimal -Nru icu-60.2/debian/rules icu-60.2/debian/rules --- icu-60.2/debian/rules 2018-04-24 18:45:42.0 +0200 +++ icu-60.2/debian/rules 2018-08-21 22:39:01.0 +0200 @@ -25,7 +25,7 @@ ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) dh_auto_configure -- --enable-static else - dh_auto_configure -B $(CURDIR)/build-native -- --host=$(DEB_BUILD_GNU_TYPE) + dh_auto_configure -B $(CURDIR)/build-native -- --host=$(DEB_BUILD_GNU_TYPE) --disable-layoutex dh_auto_build -B $(CURDIR)/build-native dh_auto_configure -- --enable-static --with-cross-build=$(CURDIR)/build-native endif