Add upstream patches for riscv64 architecture support.
These two patches are upstream already. A third patch is also upstream, but it is not needed with the older RPM we have, so I didn't include it.
This commit is contained in:
parent
82de465ada
commit
f686f71af8
95
rpm-4.13.x-RISCV-64-bit-riscv64-support.patch
Normal file
95
rpm-4.13.x-RISCV-64-bit-riscv64-support.patch
Normal file
@ -0,0 +1,95 @@
|
||||
From d9d47e01146a5d4411691a71916b1030ac7da193 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 9 Aug 2016 18:25:24 +0100
|
||||
Subject: [PATCH 1/3] RISCV 64-bit (riscv64) support.
|
||||
|
||||
Based on Mark Salter's aarch64 support patch (commit 8e1ca16c58).
|
||||
|
||||
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
|
||||
---
|
||||
installplatform | 6 ++++++
|
||||
rpmrc.in | 16 ++++++++++++++++
|
||||
2 files changed, 22 insertions(+)
|
||||
|
||||
diff --git a/installplatform b/installplatform
|
||||
index ebade42..12339fc 100755
|
||||
--- a/installplatform
|
||||
+++ b/installplatform
|
||||
@@ -174,6 +174,12 @@ for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do
|
||||
CANONARCH=m68k
|
||||
CANONCOLOR=0
|
||||
;;
|
||||
+ riscv64)
|
||||
+ ISANAME=riscv
|
||||
+ ISABITS=64
|
||||
+ CANONARCH=riscv64
|
||||
+ CANONCOLOR=3
|
||||
+ ;;
|
||||
noarch)
|
||||
CANONARCH=noarch
|
||||
CANONCOLOR=0
|
||||
diff --git a/rpmrc.in b/rpmrc.in
|
||||
index e888b0f..abc08fc 100644
|
||||
--- a/rpmrc.in
|
||||
+++ b/rpmrc.in
|
||||
@@ -99,6 +99,8 @@ optflags: sh4a -O2 -g -mieee
|
||||
|
||||
optflags: aarch64 -O2 -g
|
||||
|
||||
+optflags: riscv64 -O2 -g
|
||||
+
|
||||
#############################################################
|
||||
# Architecture colors
|
||||
|
||||
@@ -147,6 +149,8 @@ archcolor: sh4 1
|
||||
|
||||
archcolor: aarch64 2
|
||||
|
||||
+archcolor: riscv64 2
|
||||
+
|
||||
#############################################################
|
||||
# Canonical arch names and numbers
|
||||
|
||||
@@ -243,6 +247,9 @@ arch_canon: mipsr6el: mipsr6el 20
|
||||
arch_canon: mips64r6: mips64r6 21
|
||||
arch_canon: mips64r6el: mips64r6el 21
|
||||
|
||||
+arch_canon: riscv: riscv64 22
|
||||
+arch_canon: riscv64: riscv64 22
|
||||
+
|
||||
#############################################################
|
||||
# Canonical OS names and numbers
|
||||
|
||||
@@ -368,6 +375,9 @@ buildarchtranslate: sh4a: sh4
|
||||
|
||||
buildarchtranslate: aarch64: aarch64
|
||||
|
||||
+buildarchtranslate: riscv: riscv64
|
||||
+buildarchtranslate: riscv64: riscv64
|
||||
+
|
||||
#############################################################
|
||||
# Architecture compatibility
|
||||
|
||||
@@ -473,6 +483,9 @@ arch_compat: sh4a: sh4
|
||||
|
||||
arch_compat: aarch64: noarch
|
||||
|
||||
+arch_compat: riscv: noarch
|
||||
+arch_compat: riscv64: noarch
|
||||
+
|
||||
os_compat: IRIX64: IRIX
|
||||
os_compat: solaris2.7: solaris2.3 solaris2.4 solaris2.5 solaris2.6
|
||||
os_compat: solaris2.6: solaris2.3 solaris2.4 solaris2.5
|
||||
@@ -506,6 +519,9 @@ buildarch_compat: ia64: noarch
|
||||
|
||||
buildarch_compat: aarch64: noarch
|
||||
|
||||
+buildarch_compat: riscv: noarch
|
||||
+buildarch_compat: riscv64: noarch
|
||||
+
|
||||
buildarch_compat: athlon: i686
|
||||
buildarch_compat: geode: i586
|
||||
buildarch_compat: pentium4: pentium3
|
||||
--
|
||||
2.7.4
|
||||
|
@ -0,0 +1,52 @@
|
||||
From cf5679397f36710a942fcb83a63c690eb25d72af Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 11 Aug 2016 11:38:18 +0100
|
||||
Subject: [PATCH 2/3] rpmrc: Convert uname.machine == "riscv" to
|
||||
"riscv32"/"riscv64"/"riscv128".
|
||||
|
||||
On RISC-V, the kernel can return uname.machine == "riscv" (for all bit
|
||||
sizes). I say "can" return, because that is the default, but it is
|
||||
also possible to compile the kernel specially so it returns "riscv64"
|
||||
etc.
|
||||
|
||||
GNU is using "riscv64".
|
||||
|
||||
This commit converts the kernel uname machine type "riscv" to a more
|
||||
suitable value.
|
||||
|
||||
This conversion is supposed to be done by the arch_canon table.
|
||||
However the arch_canon table is not populated until after the
|
||||
defaultMachine function is called for the first time, making it a bit
|
||||
useless. In any case, arch_canon cannot take into account the bit
|
||||
size of the architecture, but the C code here can.
|
||||
|
||||
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
|
||||
---
|
||||
lib/rpmrc.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/lib/rpmrc.c b/lib/rpmrc.c
|
||||
index f2e0f48..eb136d8 100644
|
||||
--- a/lib/rpmrc.c
|
||||
+++ b/lib/rpmrc.c
|
||||
@@ -1216,6 +1216,17 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os)
|
||||
}
|
||||
# endif /* arm*-linux */
|
||||
|
||||
+# if defined(__linux__) && defined(__riscv__)
|
||||
+ if (rstreq(un.machine, "riscv")) {
|
||||
+ if (sizeof(long) == 4)
|
||||
+ strcpy(un.machine, "riscv32");
|
||||
+ else if (sizeof(long) == 8)
|
||||
+ strcpy(un.machine, "riscv64");
|
||||
+ else if (sizeof(long) == 16)
|
||||
+ strcpy(un.machine, "riscv128");
|
||||
+ }
|
||||
+# endif /* riscv */
|
||||
+
|
||||
# if defined(__GNUC__) && defined(__alpha__)
|
||||
{
|
||||
unsigned long amask, implver;
|
||||
--
|
||||
2.7.4
|
||||
|
7
rpm.spec
7
rpm.spec
@ -27,7 +27,7 @@
|
||||
Summary: The RPM package management system
|
||||
Name: rpm
|
||||
Version: %{rpmver}
|
||||
Release: %{?snapver:0.%{snapver}.}46%{?dist}
|
||||
Release: %{?snapver:0.%{snapver}.}47%{?dist}
|
||||
Group: System Environment/Base
|
||||
Url: http://www.rpm.org/
|
||||
Source0: http://rpm.org/releases/%{srcdir}/%{name}-%{srcver}.tar.bz2
|
||||
@ -90,6 +90,8 @@ Patch136: rpm-4.13.x-pythondistdeps.py-skip-distribution-metadata-if-ther.patch
|
||||
Patch137: rpm-4.13.x-pythondistdeps.py-show-warning-if-version-is-not-fou.patch
|
||||
Patch138: rpm-4.13.x-pythondistdeps.py-skip-.egg-link-files.patch
|
||||
Patch139: rpm-4.13.x-pythondistdeps.py-add-forgotten-import.patch
|
||||
Patch140: rpm-4.13.x-RISCV-64-bit-riscv64-support.patch
|
||||
Patch141: rpm-4.13.x-rpmrc-Convert-uname.machine-riscv-to-riscv32-riscv64.patch
|
||||
|
||||
# These are not yet upstream
|
||||
Patch302: rpm-4.7.1-geode-i686.patch
|
||||
@ -596,6 +598,9 @@ exit 0
|
||||
%doc doc/librpm/html/*
|
||||
|
||||
%changelog
|
||||
* Fri Sep 23 2016 Richard W.M. Jones <rjones@redhat.com> - 4.13.0-0.rc1.47
|
||||
- Backport two upstream patches which add riscv64 architecture support.
|
||||
|
||||
* Wed Aug 24 2016 Igor Gnatenko <ignatenko@redhat.com> - 4.13.0-0.rc1.46
|
||||
- Backport patch for missing import in Python dependency generator
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user