On Fri, Feb 06, 2015 at 10:32:15AM +0000, Dimitri John Ledkov wrote:
> I thing ultimately we do want to drop icu-config. That would have to
> be a mass-bugfile "icu-config is to be dropped, which will make your
> package FTBFS", followed on by patches / MUs / NMUs, followed by
> dropping icu-config -> RC bugs, migration complete.

Yeah, we observed that we agree on the long term vision already.

> An interim solution could be to split icu-config binary into it's own
> M-A:nothing package, but imho that's too late for jessie, and makes
> not much sense for jessie+1 given that we would drop that.

Well, let me further that thought a bit. Packages that use icu-config,
do so by Build-Depending on libicu-dev, so libicu-dev would have to
depend on the that new package. Since that new package is M-A:no (it's
neither "none" nor "nothing" but "no"), libicu-dev would effectively
become M-A:no as its dependencies cannot be satisfied for multiple
architectures simultaneously. At that point we can merge the new package
into libicu-dev dropping M-A:same.

So the actual implementation of this sketch would be:
 * Move icu-config from icu-devtools to libicu-dev.
 * Turn libicu-dev M-A:no.
 * Add relevant Replaces.

> > Can you elaborate what is broken by dropping M-A:same? Most of the time,

> well one needs icu-devtools for build architecture, and icu-dev for
> host architecture. However, the full combination of tools used during
> compilation inside Ubuntu touch SDK need to compile native tools which
> happen to link against icu-dev, thus the enablement of making icu-dev
> to be M-A:same.

In this case, I suggest to keep Ubuntu independent of Debian. The
removal of M-A:same is meant to be temporary. Ubuntu doesn't have to
follow.

I think that removing M-A:same from libicu-dev is a fair compromise
between ensuring that nothing breaks natively and enabling some
cross-compilation.

I prepared a patch, but it is yet untested due to -ENOSPC here.

> Maybe we can be pragmatic and fix icu-config script to call into
> pkg-config and make it multiarch aware without changing any binary
> packages (that is not move things between binary packages, nor
> introduce new packages nor change the M-A headers on existing
> packages)?

As much as I'd like this to be possible: It isn't. In order for
pkg-config to work with cross-building properly it must be called via
the cross-wrapper i.e. as $(DEB_HOST_GNU_TYPE)-pkg-config. When
icu-config is invoked, we already no longer know which architecture is
destined to be the host architecture, so we do not know how we would
have to call pkg-config.

Helmut
diff -Nru icu-52.1/debian/changelog icu-52.1/debian/changelog
--- icu-52.1/debian/changelog   2015-01-22 03:47:39.000000000 +0100
+++ icu-52.1/debian/changelog   2015-02-06 19:39:01.000000000 +0100
@@ -1,3 +1,13 @@
+icu (52.1-7.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Move icu-config to a M-A:no package. (Closes: #776821)
+    + Move icu-config from icu-devtools to libicu-dev.
+    + Declare relevant Breaks and Replaces.
+    + Remove Multi-Arch:same from libicu-dev.
+
+ -- Helmut Grohne <hel...@subdivi.de>  Fri, 06 Feb 2015 19:29:44 +0100
+
 icu (52.1-7) unstable; urgency=high
 
   * Patch to CVE-2014-6591, CVE-2014-6585 a font parsing bug.
diff -Nru icu-52.1/debian/control icu-52.1/debian/control
--- icu-52.1/debian/control     2015-01-22 03:47:39.000000000 +0100
+++ icu-52.1/debian/control     2015-02-06 19:32:19.000000000 +0100
@@ -32,9 +32,10 @@
 Package: libicu-dev
 Section: libdevel
 Architecture: any
-Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${misc:Depends}, ${shlibs:Depends}, libicu52 (= ${binary:Version}), 
icu-devtools (>= ${binary:Version}), libc6-dev | libc-dev
+Replaces: icu-devtools (<< 52.1-7.1~)
+Breaks: icu-devtools (<< 52.1-7.1~)
 Suggests: icu-doc
 Description: Development files for International Components for Unicode
  ICU is a C++ and C library that provides robust and full-featured
diff -Nru icu-52.1/debian/icu-devtools.install 
icu-52.1/debian/icu-devtools.install
--- icu-52.1/debian/icu-devtools.install        2015-01-22 03:47:39.000000000 
+0100
+++ icu-52.1/debian/icu-devtools.install        2015-02-06 19:30:38.000000000 
+0100
@@ -1,3 +1,12 @@
-usr/bin
+usr/bin/derb
+usr/bin/genbrk
+usr/bin/gencfu
+usr/bin/gencnval
+usr/bin/gendict
+usr/bin/genrb
+usr/bin/icuinfo
+usr/bin/makeconv
+usr/bin/pkgdata
+usr/bin/uconv
 usr/sbin
 usr/share/man
diff -Nru icu-52.1/debian/libicu-dev.install icu-52.1/debian/libicu-dev.install
--- icu-52.1/debian/libicu-dev.install  2015-01-22 03:47:39.000000000 +0100
+++ icu-52.1/debian/libicu-dev.install  2015-02-06 19:30:52.000000000 +0100
@@ -1,3 +1,4 @@
+usr/bin/icu-config
 usr/lib/*/lib*.so
 usr/lib/*/lib*.a
 usr/lib/*/icu

Reply via email to