Re: [PATCH] polystrap-binfmt for preparing the build host

Hector Oron <[email protected]>
Newsgroups gmane.linux.debian.devel.embedded
Message-ID <[email protected]>
Hi,

2011/6/29 Johannes Schauer <[email protected]>:
> Hi,
>
> On Tue, Jun 28, 2011 at 11:42:49PM +0200, Hector Oron wrote:
>> 2011/6/28 Yann Dirson <[email protected]>:
>> > As can be seen in your script, the use of binfmt support is not
>> > without problems.
>> >
>> > +        case $ARCH in
>> > +                alpha|amd64|arm|armeb|i386|m68k|mips|mipsel\
>> > +               |powerpc|ppc64|sh4|sh4eb|sparc|sparc64)
>> > +                       BINFMT_ARCH=$ARCH ;;
>> > +                armel)         BINFMT_ARCH=arm ;;
>> > +                lpia)          BINFMT_ARCH=i386 ;; # not yet verified FIXME
>> > +                *) echo "unknown architecture: $ARCH"; exit 1;;
>> > +        esac
>> >
>> > The most prominent problem IMHO is that it requires a system-wide
>> > setting, and that in turn ties a qemu arch name to a particular
>> > distro/ABI version.
>> May I suggest the use of `dpkg-architecture` environment variables?
> dpkg-architecture will print the architecture of the host or check for
> architecture equality. how would I abuse it to convert a debian
> architecture $ARCH to a cpu architecture $BINFMT_ARCH that exists as a
> "qemu-${BINFMT_ARCH}-static" binary?

Just a proof of concept....

$ ./PoC.sh
I: Set dpkg-architecture cross architecture: armel
I: configure --build=x86_64-linux-gnu --host=arm-linux-gnueabi
I: Debian armel maps to GNU arm architecture
I: Unset dpkg-architecture cross architecture
I: For further instructions: man dpkg-architecture

$ cat PoC.sh
#! /bin/sh

ARCH=armel

echo "I: Set dpkg-architecture cross architecture: ${ARCH}"
eval $(dpkg-architecture -a${ARCH} -s 2> /dev/null)

DEB_BUILD_GNU_TYPE=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE=$(dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_HOST_ARCH_CPU=$(dpkg-architecture -qDEB_HOST_ARCH_CPU)

echo "I: configure --build=${DEB_BUILD_GNU_TYPE} --host=${DEB_HOST_GNU_TYPE}"
echo "I: Debian ${ARCH} maps to GNU ${DEB_HOST_ARCH_CPU} architecture"

echo "I: Unset dpkg-architecture cross architecture"
eval $(dpkg-architecture -u 2> /dev/null)

echo "I: For further instructions: man dpkg-architecture"
exit 0



-- 
 Héctor Orón  -.. . -... .. .- -.   -.. . ...- . .-.. --- .--. . .-.

<free spam>
-- Would you like to make a donation for Debian Conference?
   ** http://debconf11.debconf.org/payments.xhtml **
</free spam>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.