kbuild, deb-pkg: select userland architecture based on UTS_MACHINE
authorAsbjoern Sloth Toennesen <asbjorn@asbjorn.biz>
Fri, 5 Nov 2010 13:30:08 +0000 (13:30 +0000)
committerMichal Marek <mmarek@suse.cz>
Thu, 25 Nov 2010 14:32:05 +0000 (15:32 +0100)
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>
scripts/package/builddeb

index 4dfec9a..5d6be3f 100644 (file)
@@ -25,8 +25,41 @@ create_package() {
        chown -R root:root "$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
-       dpkg-gencontrol -isp -p$pname -P"$pdir"
+       dpkg-gencontrol -isp $forcearch -p$pname -P"$pdir"
        dpkg --build "$pdir" ..
 }