[fedora-arm] proposed rpm 4.4.2 diffs for ARM

Lennert Buytenhek buytenh at wantstofly.org
Tue Jun 19 01:43:20 UTC 2007


(not subscribed to rpm-list@, please CC on replies)

Hi all,

Attached are two patches for rpm 4.4.2 (one against the package
itself, one against its spec file) which slightly extend rpm's arm
support, on which I would love to get some feedback, as I'm not
entirely sure whether I Did The Right Thing in every place.

Any comments?  Should these patches be discussed on the 'upstream'
(i.e. @rpm.org) rpm mailing lists instead?

If they look OK, can they make it into F8?  (Please don't apply
this version as-is yet, though..)

Thanks in advance for your time.


thanks,
Lennert


=== rpm-4.4.2-arm.diff

> Index: rpm-4.4.2/Makefile.am
> ===================================================================
> --- rpm-4.4.2.orig/Makefile.am
> +++ rpm-4.4.2/Makefile.am
> @@ -165,6 +165,12 @@ install-data-local:
>  		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/athlon ;;\
>  	alpha*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alpha ;\
>  		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alphaev6 ;;\
> +	arm*)	$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv3l ;\
> +		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4l ;\
> +		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4tl ;\
> +		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tel ;\
> +		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tejl ;\
> +		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6l ;;\

Add creation of RPMS dirs for the various ARM sub-archs.  This seems
pretty straightforward.


> Index: rpm-4.4.2/config.guess
> ===================================================================
> --- rpm-4.4.2.orig/config.guess
> +++ rpm-4.4.2/config.guess
> @@ -809,7 +809,14 @@ EOF
>  	echo ${UNAME_MACHINE}-pc-minix
>  	exit 0 ;;
>      arm*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-gnu
> +	eval $set_cc_for_build
> +	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
> +		| grep __ARM_EABI__ >/dev/null
> +	then
> +		echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu
> +	else
> +		echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnueabi
> +	fi

There are two different ABIs for ARM systems, the 'legacy' ABI
(old-ABI) and the newer-and-preferred ABI, EABI.  EABI is selected
by configuring using a target triple ending in *-gnueabi (this is a
slightly odd convention, but it's an upstream-imposed convention,
and followed by binutils, gcc, glibc, etc.)  There isn't an easier
way of detecting EABI than to check whether gcc defines
__ARM_EABI__, as far as I know.


> Index: rpm-4.4.2/configure.ac
> ===================================================================
> --- rpm-4.4.2.orig/configure.ac
> +++ rpm-4.4.2/configure.ac
> @@ -1206,6 +1206,9 @@ fi
>  if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
>  	build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
>  fi
> +if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
> +	build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
> +fi
>  if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
>  	build_os=`echo "${build_os}" | sed 's/-gnu$//'`
>  fi

Strip -gnueabi off the target triple like we do with -gnulibc1 and
-gnu.


> @@ -1277,10 +1280,7 @@ s390x*)		RPMCANONCOLOR=3; RPMCANONARCH=s
>  s390*)		RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
>  powerpc64*|ppc64*)	RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
>  powerpc*|ppc*)	RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
> -armv3l*)	RPMCANONCOLOR=0; RPMCANONARCH=armv3l ;;
> -armv4l*)	RPMCANONCOLOR=0; RPMCANONARCH=armv4l ;;
> -armv4b*)	RPMCANONCOLOR=0; RPMCANONARCH=armv4b ;;
> -arm*)		RPMCANONCOLOR=0; RPMCANONARCH="${build_cpu}" ;;
> +arm*)		RPMCANONCOLOR=0; RPMCANONARCH=arm ;;

Make 'arm' the canon arch for all possible sub-archs.


> Index: rpm-4.4.2/installplatform
> ===================================================================
> --- rpm-4.4.2.orig/installplatform
> +++ rpm-4.4.2/installplatform
> @@ -21,17 +21,18 @@ E_O_F
>  
>  RPM="./rpm --rcfile $TEMPRC"
>  
> -canonarch_sed='s_i.86_i386_;s_pentium[34]_i386_;s_athlon_i386_;s_sparc[^-]*_sparc_;s_alpha[^-]*_alpha_;s_\(powerpc\|ppc\)[^-]*_ppc_'
> +canonarch_sed='s_i.86_i386_;s_pentium[34]_i386_;s_athlon_i386_;s_sparc[^-]*_sparc_;s_alpha[^-]*_alpha_;s_arm[^-]*_arm_;s_\(powerpc\|ppc\)[^-]*_ppc_'

Idem.


> -target_platform="`$RPM --eval '%{?_gnu:%undefine _gnu}%{_target_platform}'|sed -e "$canonarch_sed"`"
> +target_platform="`$RPM --eval '%{?_gnu:%undefine _gnu}%{?_gnu:%undefine _gnu}%{_target_platform}'|sed -e "$canonarch_sed"`"

(Note that this isn't ARM-specific.)  For some reason, it seems
necessary to undefine _gnu twice here to really undefine it.  (Same
thing happens on my x86 boxes.)  Not exactly sure what's happening
here.


> +  arm*) SUBSTS='s_arm_armv3l_ s_arm_arm4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_' ;;

Create /u/s/r/RPMS/$foo dirs for all possible sub-archs.


> Index: rpm-4.4.2/lib/rpmts.c
> ===================================================================
> --- rpm-4.4.2.orig/lib/rpmts.c
> +++ rpm-4.4.2/lib/rpmts.c
> @@ -236,7 +236,7 @@ static int isArch(const char * arch)
>  	"m68k",
>  	"rs6000",
>  	"ia64",
> -	"armv3l", "armv4b", "armv4l",
> +	"armv3l", "armv4b", "armv4l", "armv4tl", "armv5tel", "armv5tejl", "armv6l",

Include all sub-archs.


> Index: rpm-4.4.2/macros.in
> ===================================================================
> --- rpm-4.4.2.orig/macros.in
> +++ rpm-4.4.2/macros.in
> @@ -1260,6 +1260,10 @@ done \
>  #
>  %ix86   i386 i486 i586 i686 pentium3 pentium4 athlon
>  
> +#------------------------------------------------------------------------------
> +# arch macro for all supported ARM processors
> +%arm	armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l

Add %arm macro so that we can check whether we are building for an
ARM box by checking %ifarch %{arm}, to make it easier to add sub-archs
without having to patch every single spec file that has some ARM-
dependent logic in it.


> Index: rpm-4.4.2/rpm.spec.in
> ===================================================================
> --- rpm-4.4.2.orig/rpm.spec.in
> +++ rpm-4.4.2/rpm.spec.in
> @@ -331,8 +331,8 @@ exit 0
>  %ifarch s390 s390x
>  %attr(-, @RPMUSER@, @RPMGROUP@)		%{__prefix}/lib/rpm/s390*
>  %endif
> -%ifarch armv3l armv4l
> -%attr(-, @RPMUSER@, @RPMGROUP@)		%{__prefix}/lib/rpm/armv[34][lb]*
> +%ifarch %{arm}
> +%attr(-, @RPMUSER@, @RPMGROUP@)		%{__prefix}/lib/rpm/arm*

Check for ARM archs by checking against %{arm}, and just include
all arm* dirs in /u/l/rpm in the package.


> Index: rpm-4.4.2/rpmrc.in
> ===================================================================
> --- rpm-4.4.2.orig/rpmrc.in
> +++ rpm-4.4.2/rpmrc.in
> @@ -61,6 +61,10 @@ optflags: mipsel -O2 -g
>  optflags: armv3l -O2 -g -fsigned-char -fomit-frame-pointer -march=armv3
>  optflags: armv4b -O2 -g -fsigned-char -fomit-frame-pointer -march=armv4
>  optflags: armv4l -O2 -g -fsigned-char -fomit-frame-pointer -march=armv4
> +optflags: armv4tl -O2 -g -march=armv4t
> +optflags: armv5tel -O2 -g -march=armv5te
> +optflags: armv5tejl -O2 -g -march=armv5te
> +optflags: armv6l -O2 -g -march=armv6

Add optflags for the newer ARM sub-archs.

I don't think we need -fsigned-char anymore, and maybe we should
remove it from the other sub-archs as well.

(chars are unsigned on ARM by default, and I think that doing
-fsigned-char by default was meant to work around buggy userland
software that assumes that chars are always signed.  I don't think
this should be needed anymore.)


> @@ -124,6 +128,9 @@ arch_canon:	mipsel:	mipsel	11
>  arch_canon:	armv3l: armv3l	12
>  arch_canon:     armv4b:	armv4b 	12
>  arch_canon:     armv4l:	armv4l 	12
> +arch_canon:     armv5tel: armv5tel 	12
> +arch_canon:     armv5tejl: armv5tejl 	12
> +arch_canon:     armv6l: armv6l 	12

Add more sub-archs..


=== rpm-4.4.2-spec-arm.diff

> Index: SPECS/rpm.spec
> ===================================================================
> --- SPECS.orig/rpm.spec
> +++ SPECS/rpm.spec
> @@ -68,6 +68,7 @@ Patch41: rpm-4.4.2-cdiff.patch
>  Patch42: rpm-4.4.2-docflags.patch
>  Patch43: rpm-debugedit-incremental-fix.patch
>  Patch44: rpm-4.4.2-prefer-elf32.patch
> +Patch45: rpm-4.4.2-arm.diff
>  License: GPL
>  Requires: patch > 2.5
>  Prereq: shadow-utils
> @@ -214,6 +215,8 @@ shell-like rules.
>  %patch42 -p1 -b .docflags
>  %patch43 -p1 -b .debugcan2
>  %patch44 -p1 -b .elfprefer
> +%patch45 -p1 -b .arm

Add ARM patch.


> +perl -pi -e "s/-gnu$/%{_gnu}/" macros.in

This is a hack to make sure that %{_gnu} ends up as -gnueabi on EABI
targets.  Ideally this should perhaps be hacked into the macros.in ->
macros generation step itself.  Ideas?


>  # rebuild configure for ipv6
>  autoconf
> @@ -410,8 +413,8 @@ exit 0
>  %ifarch s390 s390x
>  %attr(-, rpm, rpm)              %{__prefix}/lib/rpm/s390*
>  %endif
> -%ifarch armv3l armv4l
> -%attr(-, rpm, rpm)              %{__prefix}/lib/rpm/armv[34][lb]*
> +%ifarch %{arm}
> +%attr(-, rpm, rpm)              %{__prefix}/lib/rpm/arm*

Same modification as to rpm.spec.in -- check %{arm} instead of a
hardcoded list of sub-archs, and pick up all /u/l/rpm/arm* dirs.


Thanks!
-------------- next part --------------
Index: rpm-4.4.2/Makefile.am
===================================================================
--- rpm-4.4.2.orig/Makefile.am
+++ rpm-4.4.2/Makefile.am
@@ -165,6 +165,12 @@ install-data-local:
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/athlon ;;\
 	alpha*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alpha ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alphaev6 ;;\
+	arm*)	$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv3l ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4l ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4tl ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tel ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tejl ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6l ;;\
 	sparc*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparc ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv8 ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv9 ;\
Index: rpm-4.4.2/Makefile.in
===================================================================
--- rpm-4.4.2.orig/Makefile.in
+++ rpm-4.4.2/Makefile.in
@@ -1224,6 +1224,12 @@ install-data-local:
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/athlon ;;\
 	alpha*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alpha ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/alphaev6 ;;\
+	arm*)	$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv3l ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4l ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4tl ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tel ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tejl ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6l ;;\
 	sparc*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparc ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv8 ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv9 ;\
Index: rpm-4.4.2/config.guess
===================================================================
--- rpm-4.4.2.orig/config.guess
+++ rpm-4.4.2/config.guess
@@ -809,7 +809,14 @@ EOF
 	echo ${UNAME_MACHINE}-pc-minix
 	exit 0 ;;
     arm*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep __ARM_EABI__ >/dev/null
+	then
+		echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu
+	else
+		echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnueabi
+	fi
 	exit 0 ;;
     cris:Linux:*:*)
 	echo cris-axis-linux-gnu
Index: rpm-4.4.2/configure.ac
===================================================================
--- rpm-4.4.2.orig/configure.ac
+++ rpm-4.4.2/configure.ac
@@ -1206,6 +1206,9 @@ fi
 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
 	build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
 fi
+if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
+	build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
+fi
 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
 	build_os=`echo "${build_os}" | sed 's/-gnu$//'`
 fi
@@ -1277,10 +1280,7 @@ s390x*)		RPMCANONCOLOR=3; RPMCANONARCH=s
 s390*)		RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
 powerpc64*|ppc64*)	RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
 powerpc*|ppc*)	RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
-armv3l*)	RPMCANONCOLOR=0; RPMCANONARCH=armv3l ;;
-armv4l*)	RPMCANONCOLOR=0; RPMCANONARCH=armv4l ;;
-armv4b*)	RPMCANONCOLOR=0; RPMCANONARCH=armv4b ;;
-arm*)		RPMCANONCOLOR=0; RPMCANONARCH="${build_cpu}" ;;
+arm*)		RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
 mipsel*)	RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
 mips*)		RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
 m68k*)		RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
Index: rpm-4.4.2/installplatform
===================================================================
--- rpm-4.4.2.orig/installplatform
+++ rpm-4.4.2/installplatform
@@ -21,17 +21,18 @@ E_O_F
 
 RPM="./rpm --rcfile $TEMPRC"
 
-canonarch_sed='s_i.86_i386_;s_pentium[34]_i386_;s_athlon_i386_;s_sparc[^-]*_sparc_;s_alpha[^-]*_alpha_;s_\(powerpc\|ppc\)[^-]*_ppc_'
+canonarch_sed='s_i.86_i386_;s_pentium[34]_i386_;s_athlon_i386_;s_sparc[^-]*_sparc_;s_alpha[^-]*_alpha_;s_arm[^-]*_arm_;s_\(powerpc\|ppc\)[^-]*_ppc_'
 arch="`$RPM --eval '%{_arch}'|sed -e "$canonarch_sed"`"
 VENDOR="`$RPM --eval '%{_vendor}'`"
 OS="`$RPM --eval '%{_os}'`"
 RPMRC_GNU="`$RPM --eval '%{_gnu}'`"
-target_platform="`$RPM --eval '%{?_gnu:%undefine _gnu}%{_target_platform}'|sed -e "$canonarch_sed"`"
+target_platform="`$RPM --eval '%{?_gnu:%undefine _gnu}%{?_gnu:%undefine _gnu}%{_target_platform}'|sed -e "$canonarch_sed"`"
 target="`$RPM --eval '%{_target}'|sed -e "$canonarch_sed"`"
 
 case "$arch" in
   i[3456]86|pentium[34]|athlon) SUBSTS='s_i386_i386_ s_i386_i486_ s_i386_i586_ s_i386_i686_ s_i386_pentium3_ s_i386_pentium4_ s_i386_athlon_' ;;
   alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;;
+  arm*) SUBSTS='s_arm_armv3l_ s_arm_arm4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_' ;;
   sparc*) SUBSTS='s_sparc\(64\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;;
   powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6ip]\|$\)_ppc64\1_ s_ppc\([^6ip]\|$\)_ppciseries_ s_ppc\([^6ip]\|$\)_ppcpseries_ s_ppc\([^6ip]\|$\)_ppc64iseries_ s_ppc\([^6ip]\|$\)_ppc64pseries_' ;;
   s390*) SUBSTS='s_s390x_s390_ s_s390\([^x]\|$\)_s390x\1_' ;;
Index: rpm-4.4.2/lib/rpmts.c
===================================================================
--- rpm-4.4.2.orig/lib/rpmts.c
+++ rpm-4.4.2/lib/rpmts.c
@@ -236,7 +236,7 @@ static int isArch(const char * arch)
 	"m68k",
 	"rs6000",
 	"ia64",
-	"armv3l", "armv4b", "armv4l",
+	"armv3l", "armv4b", "armv4l", "armv4tl", "armv5tel", "armv5tejl", "armv6l",
 	"s390", "i370", "s390x",
 	"sh", "xtensa",
 	"noarch",
Index: rpm-4.4.2/macros.in
===================================================================
--- rpm-4.4.2.orig/macros.in
+++ rpm-4.4.2/macros.in
@@ -1260,6 +1260,10 @@ done \
 #
 %ix86   i386 i486 i586 i686 pentium3 pentium4 athlon
 
+#------------------------------------------------------------------------------
+# arch macro for all supported ARM processors
+%arm	armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l
+
 #------------------------------------------------------------------------
 # Use in %install to generate locale specific file lists. For example,
 #
Index: rpm-4.4.2/rpm.spec.in
===================================================================
--- rpm-4.4.2.orig/rpm.spec.in
+++ rpm-4.4.2/rpm.spec.in
@@ -331,8 +331,8 @@ exit 0
 %ifarch s390 s390x
 %attr(-, @RPMUSER@, @RPMGROUP@)		%{__prefix}/lib/rpm/s390*
 %endif
-%ifarch armv3l armv4l
-%attr(-, @RPMUSER@, @RPMGROUP@)		%{__prefix}/lib/rpm/armv[34][lb]*
+%ifarch %{arm}
+%attr(-, @RPMUSER@, @RPMGROUP@)		%{__prefix}/lib/rpm/arm*
 %endif
 %ifarch mips mipsel
 %attr(-, @RPMUSER@, @RPMGROUP@)		%{__prefix}/lib/rpm/mips*
Index: rpm-4.4.2/rpmrc.in
===================================================================
--- rpm-4.4.2.orig/rpmrc.in
+++ rpm-4.4.2/rpmrc.in
@@ -61,6 +61,10 @@ optflags: mipsel -O2 -g
 optflags: armv3l -O2 -g -fsigned-char -fomit-frame-pointer -march=armv3
 optflags: armv4b -O2 -g -fsigned-char -fomit-frame-pointer -march=armv4
 optflags: armv4l -O2 -g -fsigned-char -fomit-frame-pointer -march=armv4
+optflags: armv4tl -O2 -g -march=armv4t
+optflags: armv5tel -O2 -g -march=armv5te
+optflags: armv5tejl -O2 -g -march=armv5te
+optflags: armv6l -O2 -g -march=armv6
 
 optflags: atarist -O2 -g -fomit-frame-pointer
 optflags: atariste -O2 -g -fomit-frame-pointer
@@ -124,6 +128,9 @@ arch_canon:	mipsel:	mipsel	11
 arch_canon:	armv3l: armv3l	12
 arch_canon:     armv4b:	armv4b 	12
 arch_canon:     armv4l:	armv4l 	12
+arch_canon:     armv5tel: armv5tel 	12
+arch_canon:     armv5tejl: armv5tejl 	12
+arch_canon:     armv6l: armv6l 	12
 
 arch_canon:	m68kmint: m68kmint	13
 arch_canon:	atarist: m68kmint	13
@@ -218,6 +225,14 @@ buildarchtranslate: ppcpseries: ppc
 buildarchtranslate: ppc64iseries: ppc64
 buildarchtranslate: ppc64pseries: ppc64
 
+buildarchtranslate: armv3l: armv3l
+buildarchtranslate: armv4b: armv4b
+buildarchtranslate: armv4l: armv4l
+buildarchtranslate: armv4tl: armv4tl
+buildarchtranslate: armv5tel: armv5tel
+buildarchtranslate: armv5tejl: armv4tejl
+buildarchtranslate: armv6l: armv6l
+
 buildarchtranslate: atarist: m68kmint
 buildarchtranslate: atariste: m68kmint
 buildarchtranslate: ataritt: m68kmint
@@ -291,6 +306,10 @@ arch_compat: hppa1.0: parisc
 arch_compat: parisc: noarch
 
 arch_compat: armv4b: noarch
+arch_compat: armv6l: armv5tejl
+arch_compat: armv5tejl: armv5tel
+arch_compat: armv5tel: armv4tl
+arch_compat: armv4tl: armv4l
 arch_compat: armv4l: armv3l
 arch_compat: armv3l: noarch
 
@@ -381,9 +400,13 @@ buildarch_compat: ppc64iseries: ppc64
 buildarch_compat: mips: noarch
 buildarch_compat: mipsel: noarch
 
-buildarch_compat: armv3l: noarch
 buildarch_compat: armv4b: noarch
-buildarch_compat: armv4l: noarch
+buildarch_compat: armv6l: armv5tejl
+buildarch_compat: armv5tejl: armv5tel
+buildarch_compat: armv5tel: armv4tl
+buildarch_compat: armv4tl: armv4l
+buildarch_compat: armv4l: armv3l
+buildarch_compat: armv3l: noarch
 
 buildarch_compat: hppa2.0: hppa1.2
 buildarch_compat: hppa1.2: hppa1.1
-------------- next part --------------
Index: SPECS/rpm.spec
===================================================================
--- SPECS.orig/rpm.spec
+++ SPECS/rpm.spec
@@ -17,7 +17,7 @@ Summary: The RPM package management syst
 Name: rpm
 Version: 4.4.2
 %{expand: %%define rpm_version %{version}}
-Release: 46%{?dist}
+Release: 46.fa2%{?dist}
 Group: System Environment/Base
 Url: http://www.rpm.org/
 Source: rpm-%{rpm_version}.tar.gz
@@ -68,6 +68,7 @@ Patch41: rpm-4.4.2-cdiff.patch
 Patch42: rpm-4.4.2-docflags.patch
 Patch43: rpm-debugedit-incremental-fix.patch
 Patch44: rpm-4.4.2-prefer-elf32.patch
+Patch45: rpm-4.4.2-arm.diff
 License: GPL
 Requires: patch > 2.5
 Prereq: shadow-utils
@@ -214,6 +215,8 @@ shell-like rules.
 %patch42 -p1 -b .docflags
 %patch43 -p1 -b .debugcan2
 %patch44 -p1 -b .elfprefer
+%patch45 -p1 -b .arm
+perl -pi -e "s/-gnu$/%{_gnu}/" macros.in
 
 # rebuild configure for ipv6
 autoconf
@@ -410,8 +413,8 @@ exit 0
 %ifarch s390 s390x
 %attr(-, rpm, rpm)              %{__prefix}/lib/rpm/s390*
 %endif
-%ifarch armv3l armv4l
-%attr(-, rpm, rpm)              %{__prefix}/lib/rpm/armv[34][lb]*
+%ifarch %{arm}
+%attr(-, rpm, rpm)              %{__prefix}/lib/rpm/arm*
 %endif
 %ifarch mips mipsel
 %attr(-, rpm, rpm)              %{__prefix}/lib/rpm/mips*


More information about the arm mailing list