On Wed, 2012-11-28 at 17:51:38 +0100, Ansgar Burchardt wrote:
> On 11/28/2012 05:25 PM, Guillem Jover wrote:
> > Precisely because it's the <cpu> and not the <arch>, as can be seen from
> > «dpkg-architecture -aarmel -qDEB_HOST_ARCH_CPU». I can well concede that
> > though, that this might not seem intuitive, but then lots of things in
> > dpkg architecture names aren't either (like the omission of the kernel
> > for Linux architectures, or that mipsel does not have mips as cpu...).
> > 
> > Something that we could do is warn if a non-wildcard component of a Debian
> > triplet is unknown, like the armel in any-armel there. Also maybe try
> > to clarify these things a bit more in the man page. I can work on that.
> 
> Yes, but that means that one cannot discriminate between arm and armel
> when using the <os>-<cpu> syntax.  I guess nobody expected to have the
> same <os> and <cpu> with different ABIs; Policy seems to have the same bug:

You can discriminate them if you use the full Debian triplet form, as
in gnueabi-any-arm for example. This is not documented (or outrigth
discouraged, depending how you look at it), I don't remember why,
though, I'll try to dig up notes/mails for possible reasons, otherwise
I'll just document it.

Something else that could be done probably is handle the two form
tuples such as (any|linux)-<cpu> also as <os>-<linux-arch> if the
<cpu> matches a known arechitecture, so that in case we'd had
something like kfreebsd-armel, it would do the right thing (regardless
of the GNU triplet using gnueabi-kfreebsd-arm or gnu-kfreebsd-arm, for
example). I'd have to check for compatibility issue first though.

> ----
> 11.1.1: Architecture wildcards
> A package may specify an architecture wildcard. Architecture wildcards
> are in the format any (which matches every architecture), os-any, or
> any-cpu.
> ----
> 
> The footnote there claims that the libc and ABI is implied by these two
> values:
> 
> ----
> Internally, the package system normalizes the GNU triplets and the
> Debian arches into Debian arch triplets (which are kind of inverted GNU
> triplets), with the first component of the triplet representing the libc
> and ABI in use, and then does matching against those triplets. However,
> such triplets are an internal implementation detail that should not be
> used by packages directly. The libc and ABI portion is handled
> internally by the package system based on the os and cpu.
> ----

Right, that's not entirely correct, for wildcards it's just assumed to be
any-foo-bar or any-any-bar. When converting from GNU triplets there's
always a 1:1 mapping, including the ABI.

> This might get interesting results with x32 as that is another ABI for
> amd64 and people might actually use any-amd64...
> 
> % dpkg-architecture -ax32 -iany-amd64; echo $?
> 0

Well the amd64 vs x32 is even more "interesting" than arm vs armel,
because the ABI of the former changes the bits among others, but does
not change much preprocessor-wise, the only distinction is that on x32,
__ILP32__ is defined. So anything checking for amd64 in any place
needs to be hunted down and possibly updated for x32 anyway.

regards,
guillem


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