← Back to team overview

cross-toolchain-base-devs team mailing list archive

Bug#892790: cross-toolchain-base-ports: Please add support for riscv64

 

Source: cross-toolchain-base-ports
Version: 18
Severity: wishlist
Tags: patch
User: debian-riscv@xxxxxxxxxxxxxxxx                                                 
Usertags: riscv64

Hello,

We are in the process of bootstrapping a Debian port for the
riscv64 architecture (https://wiki.debian.org/RISC-V).

Adding this architecture to the cross-toolchain would simplify a lot
the cross-compilation of packages. You will find attached a patch doing
that for cross-toolchain-base-ports. Note that the control file of glibc
has to be patched, as it doesn't provide riscv64 in the architecture
list, due to missing support in dpkg/stable (see bugs #888793 and
#890791).

Thanks,
Aurelien
diff -Nru cross-toolchain-base-ports-18/debian/control cross-toolchain-base-ports-18.1/debian/control
--- cross-toolchain-base-ports-18/debian/control
+++ cross-toolchain-base-ports-18.1/debian/control
@@ -25,7 +25,7 @@
   libconfig-auto-perl, libfile-temp-perl, libconfig-auto-perl,
   libfile-homedir-perl, liblocale-gettext-perl, libunwind-dev [amd64 i386 x32]
 Build-Conflicts: dpkg-cross, libdebian-dpkgcross-perl,
-  binutils-alpha-linux-gnu, libc6-alpha-cross, linux-libc-dev-alpha-cross, binutils-hppa-linux-gnu, libc6-hppa-cross, linux-libc-dev-hppa-cross, binutils-m68k-linux-gnu, libc6-m68k-cross, linux-libc-dev-m68k-cross, binutils-mips64-linux-gnuabi64, libc6-mips64-cross, linux-libc-dev-mips64-cross, binutils-powerpc64-linux-gnu, libc6-ppc64-cross, linux-libc-dev-ppc64-cross, binutils-sh4-linux-gnu, libc6-sh4-cross, linux-libc-dev-sh4-cross, binutils-sparc64-linux-gnu, libc6-sparc64-cross, linux-libc-dev-sparc64-cross, binutils-powerpc-linux-gnu, libc6-powerpc-cross, linux-libc-dev-powerpc-cross, binutils-powerpc-linux-gnuspe, libc6-powerpcspe-cross, linux-libc-dev-powerpcspe-cross, binutils-mips64-linux-gnuabin32, libc6-mipsn32-cross, linux-libc-dev-mipsn32-cross, binutils-mips64el-linux-gnuabin32, libc6-mipsn32el-cross, linux-libc-dev-mipsn32el-cross, binutils-mipsisa32r6-linux-gnu, libc6-mipsr6-cross, linux-libc-dev-mipsr6-cross, binutils-mipsisa32r6el-linux-gnu, libc6-mipsr6el-cross, linux-libc-dev-mipsr6el-cross, binutils-mipsisa64r6-linux-gnuabin32, libc6-mipsn32r6-cross, linux-libc-dev-mipsn32r6-cross, binutils-mipsisa64r6el-linux-gnuabin32, libc6-mipsn32r6el-cross, linux-libc-dev-mipsn32r6el-cross, binutils-mipsisa64r6-linux-gnuabi64, libc6-mips64r6-cross, linux-libc-dev-mips64r6-cross, binutils-mipsisa64r6el-linux-gnuabi64, libc6-mips64r6el-cross, linux-libc-dev-mips64r6el-cross,
+  binutils-alpha-linux-gnu, libc6-alpha-cross, linux-libc-dev-alpha-cross, binutils-hppa-linux-gnu, libc6-hppa-cross, linux-libc-dev-hppa-cross, binutils-m68k-linux-gnu, libc6-m68k-cross, linux-libc-dev-m68k-cross, binutils-mips64-linux-gnuabi64, libc6-mips64-cross, linux-libc-dev-mips64-cross, binutils-powerpc64-linux-gnu, libc6-ppc64-cross, linux-libc-dev-ppc64-cross, binutils-riscv64-linux-gnu, libc6-riscv64-cross, linux-libc-dev-riscv64-cross, binutils-sh4-linux-gnu, libc6-sh4-cross, linux-libc-dev-sh4-cross, binutils-sparc64-linux-gnu, libc6-sparc64-cross, linux-libc-dev-sparc64-cross, binutils-powerpc-linux-gnu, libc6-powerpc-cross, linux-libc-dev-powerpc-cross, binutils-powerpc-linux-gnuspe, libc6-powerpcspe-cross, linux-libc-dev-powerpcspe-cross, binutils-mips64-linux-gnuabin32, libc6-mipsn32-cross, linux-libc-dev-mipsn32-cross, binutils-mips64el-linux-gnuabin32, libc6-mipsn32el-cross, linux-libc-dev-mipsn32el-cross, binutils-mipsisa32r6-linux-gnu, libc6-mipsr6-cross, linux-libc-dev-mipsr6-cross, binutils-mipsisa32r6el-linux-gnu, libc6-mipsr6el-cross, linux-libc-dev-mipsr6el-cross, binutils-mipsisa64r6-linux-gnuabin32, libc6-mipsn32r6-cross, linux-libc-dev-mipsn32r6-cross, binutils-mipsisa64r6el-linux-gnuabin32, libc6-mipsn32r6el-cross, linux-libc-dev-mipsn32r6el-cross, binutils-mipsisa64r6-linux-gnuabi64, libc6-mips64r6-cross, linux-libc-dev-mips64r6-cross, binutils-mipsisa64r6el-linux-gnuabi64, libc6-mips64r6el-cross, linux-libc-dev-mips64r6el-cross,
   libc6-amd64 [i386 x32], libc6-i386 [amd64 x32], libc6-x32 [amd64 i386]
 
 Package: linux-libc-dev-alpha-cross
@@ -88,6 +88,18 @@
  libraries. They are NOT meant to be used to build third-party modules for
  your kernel. Use linux-headers-* packages for that.
 
+Package: linux-libc-dev-riscv64-cross
+Architecture: all
+Multi-Arch: foreign
+Depends: ${misc:Depends}
+Provides: linux-kernel-headers-riscv64-cross, linux-libc-dev-riscv64-dcv1
+Built-Using: ${bu:linux}
+Description: Linux Kernel Headers for development (for cross-compiling)
+ This package provides headers from the Linux kernel.  These headers
+ are used by the installed headers for GNU glibc and other system
+ libraries. They are NOT meant to be used to build third-party modules for
+ your kernel. Use linux-headers-* packages for that.
+
 Package: linux-libc-dev-sh4-cross
 Architecture: all
 Multi-Arch: foreign
@@ -358,6 +370,32 @@
 Built-Using: ${bu:glibc}
 Description: GNU C Library: Development Libraries and Header Files (for cross-compiling)
  This package was generated by dpkg-cross for cross compiling.
+ .
+ Contains the symlinks, headers, and object files needed to compile
+ and link programs which use the standard C library.
+
+Package: libc6-riscv64-cross
+Architecture: all
+Multi-Arch: foreign
+Section: libs
+Depends: ${misc:Depends}
+Built-Using: ${bu:glibc}
+Description: GNU C Library: Shared libraries (for cross-compiling)
+ This package was generated by dpkg-cross for cross compiling.
+ .
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+
+Package: libc6-dev-riscv64-cross
+Architecture: all
+Multi-Arch: foreign
+Section: libdevel
+Depends: ${misc:Depends}
+Conflicts: binutils-riscv64-cross (<< 2.20.1-1), binutils-gold-riscv64-cross (<< 2.20.1-11)
+Built-Using: ${bu:glibc}
+Description: GNU C Library: Development Libraries and Header Files (for cross-compiling)
+ This package was generated by dpkg-cross for cross compiling.
  .
  Contains the symlinks, headers, and object files needed to compile
  and link programs which use the standard C library.
diff -Nru cross-toolchain-base-ports-18/debian/kernelarch.make cross-toolchain-base-ports-18.1/debian/kernelarch.make
--- cross-toolchain-base-ports-18/debian/kernelarch.make
+++ cross-toolchain-base-ports-18.1/debian/kernelarch.make
@@ -28,6 +28,7 @@
 KERNEL_ARCH_powerpcspe:=powerpc
 KERNEL_ARCH_ppc64:=powerpc
 KERNEL_ARCH_ppc64el:=powerpc
+KERNEL_ARCH_riscv64:=riscv
 KERNEL_ARCH_s390x:=s390
 KERNEL_ARCH_sh4:=sh
 KERNEL_ARCH_sparc:=sparc
diff -Nru cross-toolchain-base-ports-18/debian/patches/glibc/debian/riscv64.patch cross-toolchain-base-ports-18.1/debian/patches/glibc/debian/riscv64.patch
--- cross-toolchain-base-ports-18/debian/patches/glibc/debian/riscv64.patch
+++ cross-toolchain-base-ports-18.1/debian/patches/glibc/debian/riscv64.patch
@@ -0,0 +1,58 @@
+--- a/debian/control
++++ b/debian/control
+@@ -157,7 +157,7 @@
+  be removed once nothing on the system depends on it.
+ 
+ Package: libc6
+-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
++Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el riscv64 sparc sparc64 s390x sh3 sh4 x32
+ Section: libs
+ Priority: optional
+ Multi-Arch: same
+@@ -188,7 +188,7 @@
+  and the standard math library, as well as many others.
+ 
+ Package: libc6-dev
+-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
++Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el riscv64 sparc sparc64 s390x sh3 sh4 x32
+ Section: libdevel
+ Priority: optional
+ Multi-Arch: same
+@@ -203,7 +203,7 @@
+  and link programs which use the standard C library.
+ 
+ Package: libc6-dbg
+-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
++Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el riscv64 sparc sparc64 s390x sh3 sh4 x32
+ Section: debug
+ Priority: optional
+ Multi-Arch: same
+@@ -215,7 +215,7 @@
+  library.
+ 
+ Package: libc6-pic
+-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
++Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el riscv64 sparc sparc64 s390x sh3 sh4 x32
+ Section: libdevel
+ Priority: optional
+ Multi-Arch: same
+@@ -231,7 +231,7 @@
+ 
+ Package: libc6-udeb
+ Package-Type: udeb
+-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
++Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el riscv64 sparc sparc64 s390x sh3 sh4 x32
+ Section: debian-installer
+ Priority: optional
+ Provides: libc6, libc-udeb, libnss-dns-udeb, libnss-files-udeb, ${locale-compat:Depends}
+--- a/debian/rules.d/control.mk
++++ b/debian/rules.d/control.mk
+@@ -2,7 +2,7 @@
+ libc0_1_archs := kfreebsd-amd64 kfreebsd-i386
+ libc0_3_archs := hurd-i386
+ libc6_archs   := amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el \
+-                 mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
++                 mipsn32r6 mipsn32r6el mips64r6 mips64r6el nios2 powerpc powerpcspe ppc64 ppc64el riscv64 sparc sparc64 s390x sh3 sh4 x32
+ libc6_1_archs := alpha ia64
+ 
+ control_deps := $(wildcard debian/control.in/*) $(addprefix debian/control.in/, $(libc_packages))
diff -Nru cross-toolchain-base-ports-18/debian/patches/glibc/debian/series cross-toolchain-base-ports-18.1/debian/patches/glibc/debian/series
--- cross-toolchain-base-ports-18/debian/patches/glibc/debian/series
+++ cross-toolchain-base-ports-18.1/debian/patches/glibc/debian/series
@@ -1,2 +1,3 @@
 dpkg-shlibs.patch
 local-kill-locales.patch
+riscv64.patch
diff -Nru cross-toolchain-base-ports-18/debian/rules cross-toolchain-base-ports-18.1/debian/rules
--- cross-toolchain-base-ports-18/debian/rules	2018-03-12 12:58:47.000000000 +0000
+++ cross-toolchain-base-ports-18.1/debian/rules	2018-03-12 15:29:21.000000000 +0000
@@ -35,7 +35,7 @@
   CROSS_ARCHS	?= s390x ppc64el arm64 armhf armel \
 			$(if $(filter $(vendor), Ubuntu), powerpc, mips mipsel mips64el)
 else
-  CROSS_ARCHS  ?= alpha hppa m68k mips64 ppc64 sh4 sparc64 \
+  CROSS_ARCHS  ?= alpha hppa m68k mips64 ppc64 riscv64 sh4 sparc64 \
 			$(if $(filter $(vendor), Ubuntu), mips mipsel mips64el, powerpc) \
 			powerpcspe mipsn32 mipsn32el \
 			mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el