On Mon, Feb 02, 2015 at 05:32:19PM +0000, Dimitri John Ledkov wrote:
> huh? I don't see a trivial one-line fix here, dropping M-A:foreign
> from devtools will revoke cross-compilation of packages of all -dev
> packages that depend on icu-dev, as well as a tonne of things that are
> cross-compiled using multiarch on daily basis.

Funny, cross building libxml2 only works after dropping M-A:foreign, so
your claim clearly is wrong. The reverse holds: Dropping M-A:foreign
makes some reverse depends of libicu-dev cross-buildable!

Also note that icu itself is not cross-buildable. I shall send a patch
for this issue.

Jokes aside, I do recognize that dropping M-A:foreign poses a regression
and that we want to avoid this. I proposed it, because it disables
functionality instead feeding wrong configuration to builds.

The real solution of course involves keeping M-A:foreign on the
devtools.

> icu-config binary is not in the M-A:same package. That fact is not
> hidden, but rather well known that one must use pkgconfig to
> cross-compile things against icu.

In that case, icu-devtools should simply not be containing icu-config.
Furthermore, all packages using icu-config should be RC-buggy. If you
agree, I shall clone bugs for the following packages
(over-approximation):

prelude-lml openttd 389-adminutil libfolia texlive-bin qt4-x11 libe-book
xdvik-ja harfbuzz 389-dsgw gnustep-base iceweasel ncbi-blast+ dwdiff
open-vm-tools chromium-browser autoconf-archive gnustep-gui libreoffice
grcompiler qtwebkit libvisio yaz openjfx libcdr dee ibus-qt fis-gtm
389-admin 389-ds-base php5 webkitgtk libxml2 wine-gecko-2.24 an couchdb
raptor2 0ad ucto phantomjs xerces-c python-apsw mozjs24 node-stringprep
sword texlive-base icedove libmspub parrot qtwebkit-opensource-src frog

> That buildlog is incomplete...... i can spin up buildd-from-hell and
> fail a huge number of packages in Debian. See past efforts from Lucas.
> 
> Could you please provide complete builldlog? Or steps that I can use
> to reproduce that build you provide?

It's a clean pbuilder chroot with i386 as a foreign architecture that
selected icu-devtools:i386 instead of icu-devtools:amd64. If M-A:foreign
were correct on icu-devtools, this wouldn't make a difference to the
build.

> The correct patch is to e.g. make libxml2 to use pkg-config.

I agree.

> One cannot have it all ways:
> - dropping M-A:same on the icu-dev package breaks existing users that
> cross-compile things against icu (e.g. Qt5 based apps)

Can you elaborate what is broken by dropping M-A:same? Most of the time,
you only need the development packages for the host architecture. At
which point do you need it for multiple architectures? I know that this
happens occasionally, so I'd like to learn where precisely.

> - having things rely on icu-config prevents things to be cross-compilable
> - dropping icu-config script will break a lot of native compilation
> which is far worse at this point in the cycle.

I agree that we cannot have all of the above. Still having icu-config in
anything else but a M-A:no package is wrong and breaks things. If
removing M-A:foreign is not an option, we should seek different
solutions instead of denying the problem.

> Please also see the huge amount of discussions we had on this issue in
> the prior bug reports when icu-devtools package was introduced.

Are you referring to #699763? Maybe I am missing something here.

I see that all ways to move from here cause pain. From my perspective,
the ideal outcome would be to remove icu-config, but clearly this is out
of scope for jessie.

The next solution I see may be out of scope for jessie as well:
 * Rename libicu-dev to libicu-dev-multiarch.
 * Introduce a new binary Arch:any M-A:no package libicu-dev that
   depends on libicu-dev-multiarch and takes icu-config over from
   icu-devtools.

This has the following advantages:
 * All reverse dependencies of libicu-dev will keep working natively and
   some will become cross-buildable (e.g. libxml2).
 * Packages that know about pkg-config and need libicu-dev for multiple
   architectures (presumably a minority) can switch over to depending on
   libicu-dev-multiarch.

So what do we do for jessie if dropping M-A:foreign is not an option?
Clearly, icu-devtools is broken natively at this point and needs some
fix.

Helmut


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to