kbuild, deb-pkg: select userland architecture based on UTS_MACHINE

Instead of creating the debian package for the compiling userland,
create it for a userland matching the kernel thats being compiled.

This patch supports all Lenny release architectures,
and Linux-based architecture candidates for Squeeze.

If it can't find a proper Debian userspace it displays a warning,
and fallback to let deb-gencontrol use the host's userspace arch.

Eg. with this patch the following make command:

	make ARCH=i386 deb-pkg

will output an i386 Debian package instead of an amd64 one,
when run on an amd64 machine.

Signed-off-by: Asbjoern Sloth Toennesen <asbjorn@asbjorn.biz>
Acked-by: maximilian attems <max@stro.at>
Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
Asbjoern Sloth Toennesen 2010-11-05 13:30:08 +00:00 committed by Michal Marek
parent e86c2412c8
commit 10f26fa642
1 changed files with 34 additions and 1 deletions

View File

@ -25,8 +25,41 @@ create_package() {
chown -R root:root "$pdir" chown -R root:root "$pdir"
chmod -R go-w "$pdir" chmod -R go-w "$pdir"
# Attempt to find the correct Debian architecture
local forcearch="" debarch=""
case "$UTS_MACHINE" in
i386|ia64|alpha)
debarch="$UTS_MACHINE" ;;
x86_64)
debarch=amd64 ;;
sparc*)
debarch=sparc ;;
s390*)
debarch=s390 ;;
ppc*)
debarch=powerpc ;;
parisc*)
debarch=hppa ;;
mips*)
debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y .config && echo el) ;;
arm*)
debarch=arm$(grep -q CONFIG_AEABI=y .config && echo el) ;;
*)
echo "" >&2
echo "** ** ** WARNING ** ** **" >&2
echo "" >&2
echo "Your architecture doesn't have it's equivalent" >&2
echo "Debian userspace architecture defined!" >&2
echo "Falling back to using your current userspace instead!" >&2
echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
echo "" >&2
esac
if [ -n "$debarch" ] ; then
forcearch="-DArchitecture=$debarch"
fi
# Create the package # Create the package
dpkg-gencontrol -isp -p$pname -P"$pdir" dpkg-gencontrol -isp $forcearch -p$pname -P"$pdir"
dpkg --build "$pdir" .. dpkg --build "$pdir" ..
} }