Package: ruby-ffi Version: 1.12.2+dfsg-2 Severity: normal Tags: ftbfs patch upstream User: [email protected] Usertags: riscv64 Forwarded: https://github.com/ffi/ffi/commit/3a280f70a36b56239d149d6205d20933151a2af3
Hi, ruby-ffi fails to build on riscv64 with the following testsuite error: | Failures: | | 1) Custom type definitions detects the correct type for size_t | Failure/Error: | expect do | Module.new do | extend FFI::Library | ffi_lib "c" | if FFI::Platform.windows? | # _read() is a function of msvcrt.dll | attach_function :_read, [:int, :pointer, :uint], :int | else | # read(2) is a standard UNIX function | attach_function :read, [:int, :pointer, :size_t], :ssize_t | | expected no Exception, got #<TypeError: unable to resolve type 'size_t'> with backtrace: | # /<<PKGBUILDDIR>>/spec/ffi/typedef_spec.rb:86:in `block (4 levels) in <top (required)>' | # /<<PKGBUILDDIR>>/spec/ffi/typedef_spec.rb:78:in `initialize' | # /<<PKGBUILDDIR>>/spec/ffi/typedef_spec.rb:78:in `new' | # /<<PKGBUILDDIR>>/spec/ffi/typedef_spec.rb:78:in `block (3 levels) in <top (required)>' | # /<<PKGBUILDDIR>>/spec/ffi/typedef_spec.rb:77:in `block (2 levels) in <top (required)>' | # /<<PKGBUILDDIR>>/spec/ffi/typedef_spec.rb:77:in `block (2 levels) in <top (required)>' | | Finished in 5.92 seconds (files took 29.09 seconds to load) | 4851 examples, 1 failure | | Failed examples: | | rspec /<<PKGBUILDDIR>>/spec/ffi/typedef_spec.rb:76 # Custom type definitions detects the correct type for size_t | | ERROR: Test "ruby2.7" failed. Exiting. | dh_auto_install: error: dh_ruby --install /<<BUILDDIR>>/ruby-ffi-1.12.2\+dfsg/debian/ruby-ffi returned exit code 1 | make: *** [debian/rules:16: binary-arch] Error 25 | dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit status 2 A full build log is available there: https://buildd.debian.org/status/fetch.php?pkg=ruby-ffi&arch=riscv64&ver=1.12.2%2Bdfsg-2&stamp=1634041393&raw=0 This is due to the types.conf file missing for the riscv64-linux platform. This file has been recently added upstream, and I have tested that the testsuite and the build is successful with it. You will find attached the patch I used, would it be possible to include it in the next upload? Thanks, Aurelien
--- ruby-ffi-1.12.2+dfsg/debian/patches/add-types.conf-for-riscv64-linux.patch +++ ruby-ffi-1.12.2+dfsg/debian/patches/add-types.conf-for-riscv64-linux.patch @@ -0,0 +1,123 @@ +From 3a280f70a36b56239d149d6205d20933151a2af3 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab <[email protected]> +Date: Thu, 25 Feb 2021 12:17:32 +0100 +Subject: [PATCH] Add types.conf for riscv64-linux + +--- + lib/ffi/platform/riscv64-linux/types.conf | 104 ++++++++++++++++++++++ + 1 file changed, 104 insertions(+) + create mode 100644 lib/ffi/platform/riscv64-linux/types.conf + +diff --git a/lib/ffi/platform/riscv64-linux/types.conf b/lib/ffi/platform/riscv64-linux/types.conf +new file mode 100644 +index 0000000..ede0f98 +--- /dev/null ++++ b/lib/ffi/platform/riscv64-linux/types.conf +@@ -0,0 +1,104 @@ ++rbx.platform.typedef.*__caddr_t = char ++rbx.platform.typedef.*__qaddr_t = long ++rbx.platform.typedef.__blkcnt64_t = long ++rbx.platform.typedef.__blkcnt_t = long ++rbx.platform.typedef.__blksize_t = int ++rbx.platform.typedef.__clock_t = long ++rbx.platform.typedef.__clockid_t = int ++rbx.platform.typedef.__daddr_t = int ++rbx.platform.typedef.__dev_t = ulong ++rbx.platform.typedef.__fd_mask = long ++rbx.platform.typedef.__fsblkcnt64_t = ulong ++rbx.platform.typedef.__fsblkcnt_t = ulong ++rbx.platform.typedef.__fsfilcnt64_t = ulong ++rbx.platform.typedef.__fsfilcnt_t = ulong ++rbx.platform.typedef.__fsword_t = long ++rbx.platform.typedef.__gid_t = uint ++rbx.platform.typedef.__id_t = uint ++rbx.platform.typedef.__ino64_t = ulong ++rbx.platform.typedef.__ino_t = ulong ++rbx.platform.typedef.__int16_t = short ++rbx.platform.typedef.__int32_t = int ++rbx.platform.typedef.__int64_t = long ++rbx.platform.typedef.__int8_t = char ++rbx.platform.typedef.__intptr_t = long ++rbx.platform.typedef.__key_t = int ++rbx.platform.typedef.__loff_t = long ++rbx.platform.typedef.__mode_t = uint ++rbx.platform.typedef.__nlink_t = uint ++rbx.platform.typedef.__off64_t = long ++rbx.platform.typedef.__off_t = long ++rbx.platform.typedef.__pid_t = int ++rbx.platform.typedef.__priority_which_t = int ++rbx.platform.typedef.__quad_t = long ++rbx.platform.typedef.__rlim64_t = ulong ++rbx.platform.typedef.__rlim_t = ulong ++rbx.platform.typedef.__rlimit_resource_t = int ++rbx.platform.typedef.__rusage_who_t = int ++rbx.platform.typedef.__sig_atomic_t = int ++rbx.platform.typedef.__socklen_t = uint ++rbx.platform.typedef.__ssize_t = long ++rbx.platform.typedef.__suseconds_t = long ++rbx.platform.typedef.__syscall_slong_t = long ++rbx.platform.typedef.__syscall_ulong_t = ulong ++rbx.platform.typedef.__time_t = long ++rbx.platform.typedef.__timer_t = pointer ++rbx.platform.typedef.__u_char = uchar ++rbx.platform.typedef.__u_int = uint ++rbx.platform.typedef.__u_long = ulong ++rbx.platform.typedef.__u_quad_t = ulong ++rbx.platform.typedef.__u_short = ushort ++rbx.platform.typedef.__uid_t = uint ++rbx.platform.typedef.__uint16_t = ushort ++rbx.platform.typedef.__uint32_t = uint ++rbx.platform.typedef.__uint64_t = ulong ++rbx.platform.typedef.__uint8_t = uchar ++rbx.platform.typedef.__useconds_t = uint ++rbx.platform.typedef.blkcnt_t = long ++rbx.platform.typedef.blksize_t = int ++rbx.platform.typedef.clock_t = long ++rbx.platform.typedef.clockid_t = int ++rbx.platform.typedef.daddr_t = int ++rbx.platform.typedef.dev_t = ulong ++rbx.platform.typedef.fd_mask = long ++rbx.platform.typedef.fsblkcnt_t = ulong ++rbx.platform.typedef.fsfilcnt_t = ulong ++rbx.platform.typedef.gid_t = uint ++rbx.platform.typedef.id_t = uint ++rbx.platform.typedef.ino_t = ulong ++rbx.platform.typedef.int16_t = short ++rbx.platform.typedef.int32_t = int ++rbx.platform.typedef.int64_t = long ++rbx.platform.typedef.int8_t = char ++rbx.platform.typedef.key_t = int ++rbx.platform.typedef.loff_t = long ++rbx.platform.typedef.mode_t = uint ++rbx.platform.typedef.nlink_t = uint ++rbx.platform.typedef.off_t = long ++rbx.platform.typedef.pid_t = int ++rbx.platform.typedef.pthread_key_t = uint ++rbx.platform.typedef.pthread_once_t = int ++rbx.platform.typedef.pthread_t = ulong ++rbx.platform.typedef.quad_t = long ++rbx.platform.typedef.register_t = long ++rbx.platform.typedef.rlim_t = ulong ++rbx.platform.typedef.sa_family_t = ushort ++rbx.platform.typedef.size_t = ulong ++rbx.platform.typedef.socklen_t = uint ++rbx.platform.typedef.ssize_t = long ++rbx.platform.typedef.suseconds_t = long ++rbx.platform.typedef.time_t = long ++rbx.platform.typedef.timer_t = pointer ++rbx.platform.typedef.u_char = uchar ++rbx.platform.typedef.u_int = uint ++rbx.platform.typedef.u_int16_t = ushort ++rbx.platform.typedef.u_int32_t = uint ++rbx.platform.typedef.u_int64_t = ulong ++rbx.platform.typedef.u_int8_t = uchar ++rbx.platform.typedef.u_long = ulong ++rbx.platform.typedef.u_quad_t = ulong ++rbx.platform.typedef.u_short = ushort ++rbx.platform.typedef.uid_t = uint ++rbx.platform.typedef.uint = uint ++rbx.platform.typedef.ulong = ulong ++rbx.platform.typedef.ushort = ushort +-- +2.30.2 + --- ruby-ffi-1.12.2+dfsg/debian/patches/series +++ ruby-ffi-1.12.2+dfsg/debian/patches/series @@ -1 +1,2 @@ remove-git-in-gemspec.patch +add-types.conf-for-riscv64-linux.patch

