In the recent thread 'dpkg and debhelper patches for lib64 support' we talked about control files and associating architectures to packages which those control files define.
While the format of the control files has not yet been completely
defined, I would like to fork of into a related discussion.
With s390/s390x and i386/amd64 it becomes more apparent that we need
dpkg to understand what architectures are valid on the current system.
Currently, dpkg --print-architecture is used everywhere to discover what
that architecture is.
However, on an amd64 machine one can install packages built for i386,
i486, i586, i686, and amd64. Yes, we don't currently have i486-i686 but
with the 'split' that's talked about on [EMAIL PROTECTED] it's a clear
win to have the notion of 'compatible' architectures.
First off dpkg should be extended to support a --supports-architecture
option which would take on a single string parameter of an architecture
name. dpkg returns true or false depending on it's ability to install a
package compiled for said architecture on the running system.
dpkg will discover if said architecture is valid by looking it up in a
file of supported architectures.
On a rpm system one can specify 'arch_compat' entries in rpmrc. In this
configuration one can specify a relationship as follows:
amd64: athlon
athlon: i686
i686: i586
i586: i486
i486: i386
i386: any
In the above map the items on the right of the : can be multiple in
number. If Intel decided to release another x86 processor (let's call
it i786), and it became supported in an AMD extension to amd64 (let's
call it amd64a), we would have something like this:
amd64a: amd64 i786
i786: i686
amd64: athlon
athlon: i686
i686: i586
i586: i486
i486: i386
i386: any
Note that i786 cannot execute athlon binaries, but amd64a can execute
anything on the list.
Note that the relationship above does not deal with package dependencies
like:
Package: foo
Depends: lib64foo
Architecture: amd64
Description: 64 bit optimized version of foo
That will have to be done by dpkg after the package architecture was
decided on being compatible with the host's architecture.
Another useful option for dpkg (or perhaps some other tool) would be a
something that would list all architectures that can be built on the
current host. Something like this:
$ dpkg --build-architectures
amd64 i686 i586 i486 i386
The list could be based on something in /etc or by polling the compiler.
This --build-architectures could potentially reduce the amount of
hard-coded rules in debian/rules files.
I would be interested in hacking on dpkg to get this going... but before
I start I wanted to get some feedback from the people that know better
:)
Cheers,
Bart.
--
WebSig: http://www.jukie.net/~bart/sig/
pgpAnC985L9nt.pgp
Description: PGP signature

