[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Multiarch and ABI support

On Mon, Jul 19, 2010 at 07:02:32PM +0100, Hector Oron wrote:

> 2010/7/18 Steve Langasek <vorlon@debian.org>:
> > I'm puzzled why dpkg needs a unique triplet for a port.  dpkg needs to map
> > port names to triplets, but why does it need to do the inverse?  And if it
> > doesn't need to map triplet->port, why would the triplet need to be unique?

> AFAICS `dpkg' relais on -dumpmachine from `gcc'
> scripts/Dpkg/Arch.pm:68:        my $gcc_host_gnu_type = `\${CC:-gcc}
> -dumpmachine`;

> Then all the magic starts...
> How would `dpkg' can then map GCC tuplets into Debian triplets being
> the same with different Debian architecture names?

It wouldn't.  I don't see a compelling reason for dpkg to do this at all.
Your quote shows that dpkg *does* do this today, which I didn't remember
before this conversation, but that's not an explanation for *why* it does -
as opposed to dpkg directly recording what its current architecture is.

> > There is a need for a distinct port name; I think this is also not a
> > Debian-specific problem, it's a problem common to any distributions that
> > want to do what's described here.

> There is no need of distinct port name for 'any' distro.

This is a rather straightforward namespacing issue.  If a single
distribution wants to ship packages for multiple ports on a single ftp
server (or on a common mirror network), there needs to be a way to tell them
apart, which implies distinct filenames.  We accomplish this by including
the architecture name in the filename of all .debs, and IIRC rpm
distributions do similarly.

Calling this something other than "architecture" ("ABI", "subarch", etc) is
quite beside the point - we still need a distinct name for any files we
intend to ship in the main archive.

> As I had stated previously my though on another thread [2], there are
> two different cases mixed on `multiarch':
> a) Co-installing libraries (in x86 world, with compatible ABI) which
> main purpose it is to be able to run `non-free' software.
> b) Co-building, which it is the part that affects me the most and can
> be easily solved using sysroot switch on GCC, without any upstream
> changes.

> Using sysroot approach you might be able to co-install foreign (other
> arches) libraries into the sysroot for case a) - it even lets the user
> have multiple systems with same ABI and architecture, but with
> different libraries (in the case you want to cross build non Debian
> systems).

sysroot is irrelevant to what multiarch aims to achieve.

Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek@ubuntu.com                                     vorlon@debian.org

Attachment: signature.asc
Description: Digital signature

Reply to: