Bug#906906: icu FTCBFS: fails linking -licu-le-hb in the native pass

2018-11-17 Thread Matthijs Kooijman
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

2018-10-04 Thread Matthijs Kooijman
> 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

2018-08-22 Thread Helmut Grohne
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

2018-08-22 Thread GCS
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

2018-08-21 Thread Helmut Grohne
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