On 2 February 2015 at 19:08, Helmut Grohne <hel...@subdivi.de> wrote:
> 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
>

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.

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.

And see more below.

>> 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,

Ubuntu touch SDK which is used for cross-compilation of Qt5 native and
QML apps. In essence, it's not due to icu-config, as that is unused,
but due to all the other tools in the devtools package that should be
M-A:foreign.

> 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.
>

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.

>> - 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.

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)?

-- 
Regards,

Dimitri.

Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to