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

dpkg-architecture adaptations for e.g. uclibc



Updated patch can be found here:

http://www.xs4all.nl/~kurzanov/debian/patches/dpkg-1.13.16-all-1.patch.

Besides allowing CPU-uclibc architectures it also adds:

1. Specific ARM families armv4,armv5te,strongarm and xscale
2. ARM variations such as VFP and softfloat (old ABI)
3. EABI suffix for linux, linux-uclibc, hurd and hurd-uclibc
   (last two are rather fictional though;-)

Problems to fix still:

1. armel name is really the same as arm-eabi. Could this be solved by
   an arch alias?

2. maybe this implementation allows too much (e.g., i386-eabi). Could
   this be solved by prohibiting certain regexps from arch names?

The most complex name I checked so far was:

$ dpkg-architecture -ahurd-arm-vfp-uclibc-eabi
DEB_HOST_ARCH=hurd-arm-vfp-uclibc-eabi
DEB_HOST_ARCH_OS=hurd-uclibc-eabi
DEB_HOST_ARCH_CPU=arm-vfp
DEB_HOST_GNU_CPU=arm-vfp
DEB_HOST_GNU_SYSTEM=gnu-uclibceabi
DEB_HOST_GNU_TYPE=arm-vfp-gnu-uclibceabi

Greetings,

Pjotr Kourzanov
--- dpkg-1.13.16/cputable	2006-04-12 13:12:58.000000000 +0200
+++ dpkg-1.13.16-my.0/cputable	2006-04-12 13:10:50.000000000 +0200
@@ -19,6 +19,12 @@
 amd64		x86_64		x86_64
 armeb		armeb		arm.*b
 arm		arm		arm.*
+armv4		armv4		armv4.*
+armv5te		armv5te		armv5te.*
+arm-softfloat	arm-softfloat	arm.*
+arm-vfp		arm-vfp		arm.*
+strongarm	strongarm	strongarm.*
+xscale		xscale		xscale.*
 hppa		hppa		hppa.*
 m32r		m32r		m32r
 m68k		m68k		m68k
--- dpkg-1.13.16/debian/archtable	2006-04-12 13:13:04.000000000 +0200
+++ dpkg-1.13.16-my.0/debian/archtable	2006-04-12 13:09:35.000000000 +0200
@@ -15,12 +15,25 @@
 ia64-linux-gnu			ia64
 alpha-linux-gnu			alpha
 arm-linux-gnu			arm
+arm-linux-gnueabi		arm-eabi
+arm-softfloat-linux-gnu		arm-softfloat
+arm-vfp-linux-gnu		arm-vfp
+strongarm-linux-gnu		strongarm
+xscale-linux-gnu		xscale
 hppa-linux-gnu			hppa
 m68k-linux-gnu			m68k
 mips-linux-gnu			mips
 mipsel-linux-gnu		mipsel
+mipsel-linux-gnueabi		mipsel-eabi
 powerpc-linux-gnu		powerpc
 s390-linux-gnu			s390
 sh-linux-gnu			sh
 sparc-linux-gnu			sparc
 i486-gnu			hurd-i386
+i486-linux-uclibc		i386-uclibc
+arm-linux-uclibc		arm-uclibc
+arm-linux-uclibceabi		arm-uclibc-eabi
+arm-softfloat-linux-uclibc	arm-softfloat-uclibc
+arm-vfp-linux-uclibc		arm-vfp-uclibc
+mipsel-linux-uclibc		mipsel-uclibc
+mipsel-linux-uclibceabi		mipsel-uclibc-eabi
--- dpkg-1.13.16/ostable	2006-04-12 13:13:04.000000000 +0200
+++ dpkg-1.13.16-my.0/ostable	2006-06-12 15:03:13.000000000 +0200
@@ -14,6 +14,9 @@
 #
 # <Debian name>	<GNU name>	<config.guess regex>
 linux		linux-gnu	linux[^-]*(-gnu.*)?
+linux-eabi	linux-gnueabi	linux[^-]*(-gnueabi)?
+linux-uclibc	linux-uclibc	linux[^-]*(-uclibc.*)?
+linux-uclibc-eabi linux-uclibceabi linux[^-]*(-uclibceabi)?
 darwin		darwin		darwin[^-]*
 freebsd		freebsd		freebsd[^-]*
 kfreebsd	kfreebsd-gnu	kfreebsd[^-]*(-gnu.*)?
@@ -21,3 +24,6 @@
 netbsd		netbsd		netbsd[^-]*
 openbsd		openbsd		openbsd[^-]*
 hurd		gnu		gnu[^-]*
+hurd-eabi	gnueabi		gnueabi[^-]*
+hurd-uclibc	gnu-uclibc	gnu[^-]*(-uclibc.*)?
+hurd-uclibc-eabi gnu-uclibceabi	gnu[^-]*(-uclibceabi.*)?
--- dpkg-1.13.16/scripts/dpkg-architecture.pl	2006-04-12 13:13:04.000000000 +0200
+++ dpkg-1.13.16-my.0/scripts/dpkg-architecture.pl	2006-06-12 15:02:41.000000000 +0200
@@ -55,11 +55,22 @@
 sub split_debian {
     local ($_) = @_;
     
+    return ("linux",$_) if exists ($cputable{$_});
+
+    if (/^([^-]*)-([^-]*)-([^-]*)-(.*)/) {
+	return (join("-",$1,$4), join("-",$2,$3)) if exists($cputable{join("-",$2,$3)});
+    }
+    if (/^([^-]*)-([^-]*)-(.*)/) {
+	return ($1, join("-",$2,$3)) if exists($cputable{join("-",$2,$3)});
+	return (join("-","linux",$3), join("-", $1, $2)) if exists($cputable{join("-",$1,$2)});
+	return (join("-",$1,$3), $2) if exists($cputable{$2});
+    }
     if (/^([^-]*)-(.*)/) {
-	return ($1, $2);
-    } else {
-	return ("linux", $_);
+    	return ($1, $2) if exists($cputable{$2});
+	return (join("-", "linux", $2), $1) if exists($cputable{$1});
     }
+
+    return ("linux", $_);
 }
 
 sub debian_to_gnu {
@@ -73,6 +84,9 @@
 sub split_gnu {
     local ($_) = @_;
 
+    /^([^-]*)-([^-]*)-(.*)/;
+    return (join("-",$1, $2), $3) if exists($cputable{join("-",$1,$2)});
+    
     /^([^-]*)-(.*)/;
     return ($1, $2);
 }

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: