Source: cross-toolchain-base-ports
Version: 18
Severity: wishlist
Tags: patch
User: debian-ri...@lists.debian.org                                             
    
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

Reply via email to