[packages/ruby-ffi] - updated to 1.15.5 - added x32 patch (maybe incomplete, but samples work) - added metadata hack (th
qboosh
qboosh at pld-linux.org
Sat Feb 18 21:17:04 CET 2023
commit ad224910edc092379dbe613e8b38c53ec602b01a
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sat Feb 18 21:18:40 2023 +0100
- updated to 1.15.5
- added x32 patch (maybe incomplete, but samples work)
- added metadata hack (they are not unpackaged automatically now?)
ffi-x32.patch | 127 ++++++++++++++++++++++++++++++++++++++++++++++++
ruby-ffi-platform.patch | 12 ++---
ruby-ffi.spec | 39 ++++++++++++---
3 files changed, 164 insertions(+), 14 deletions(-)
---
diff --git a/ruby-ffi.spec b/ruby-ffi.spec
index 7065690..d0ea530 100644
--- a/ruby-ffi.spec
+++ b/ruby-ffi.spec
@@ -1,19 +1,20 @@
#
# Conditional build:
-%bcond_without tests # build without tests
+%bcond_without tests # testing
%define ffi_req 7:3.2
%define pkgname ffi
Summary: FFI Extensions for Ruby
Summary(pl.UTF-8): Rozszerzenia FFI dla języka Ruby
Name: ruby-%{pkgname}
-Version: 1.9.25
-Release: 4
+Version: 1.15.5
+Release: 1
License: BSD
Group: Development/Languages
Source0: http://rubygems.org/gems/%{pkgname}-%{version}.gem
-# Source0-md5: e8923807b970643d9e356a65038769ac
+# Source0-md5: 026cce18ef8ffc713be29c2ffc9d335b
Patch0: %{name}-platform.patch
+Patch1: ffi-x32.patch
URL: https://wiki.github.com/ffi/ffi
BuildRequires: libffi-devel >= %{ffi_req}
BuildRequires: rpm-rubyprov
@@ -24,7 +25,7 @@ BuildRequires: ruby-rspec
BuildRequires: ruby-rspec-mocks
%endif
Requires: libffi >= %{ffi_req}
-ExclusiveArch: %{ix86} %{x8664} aarch64 %{arm} ia64 mips mips64el mipsel powerpc64 ppc s390 s390x sparc sparcv9
+ExclusiveArch: %{ix86} %{x8664} x32 aarch64 %{arm} ia64 mips mipsel mips64 mips64el powerpc64 powerpc64le ppc s390 s390x riscv64 sparc sparcv9 sparc64
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
@@ -45,12 +46,13 @@ stronie <http://wiki.github.com/ffi/ffi/why-use-ffi>.
%prep
%setup -q -n %{pkgname}-%{version}
%patch0 -p1
+%patch1 -p1
# be sure to use system ffi
%{__rm} -r ext/ffi_c/libffi
# drop not our targets
-%{__rm} -r lib/ffi/platform/*-{aix,cygwin,darwin,gnu,*bsd,solaris,windows}
+%{__rm} -r lib/ffi/platform/*-{aix,cygwin,darwin,freebsd12,*bsd,gnu,haiku,msys,solaris,windows}
# provide only definitions for package architecture
%ifnarch aarch64
%{__rm} -r lib/ffi/platform/aarch64-*
@@ -66,12 +68,19 @@ stronie <http://wiki.github.com/ffi/ffi/why-use-ffi>.
%endif
%ifnarch mips
%{__rm} -r lib/ffi/platform/mips-*
+%{__rm} -r lib/ffi/platform/mipsisa32r6-*
%endif
%ifnarch mipsel
%{__rm} -r lib/ffi/platform/mipsel-*
+%{__rm} -r lib/ffi/platform/mipsisa32r6el-*
+%endif
+%ifnarch mips64
+%{__rm} -r lib/ffi/platform/mips64-*
+%{__rm} -r lib/ffi/platform/mipsisa64r6-*
%endif
%ifnarch mips64el
%{__rm} -r lib/ffi/platform/mips64el-*
+%{__rm} -r lib/ffi/platform/mipsisa64r6el-*
%endif
%ifnarch powerpc
%{__rm} -r lib/ffi/platform/powerpc-*
@@ -79,22 +88,36 @@ stronie <http://wiki.github.com/ffi/ffi/why-use-ffi>.
%ifnarch powerpc64
%{__rm} -r lib/ffi/platform/powerpc64-*
%endif
+%ifnarch powerpc64le
+%{__rm} -r lib/ffi/platform/powerpc64le-*
+%endif
%ifnarch s390
%{__rm} -r lib/ffi/platform/s390-*
%endif
%ifnarch s390x
%{__rm} -r lib/ffi/platform/s390x-*
%endif
-%ifnarch sparc
+%ifnarch riscv64
+%{__rm} -r lib/ffi/platform/riscv64-*
+%endif
+%ifnarch sparc sparcv9
%{__rm} -r lib/ffi/platform/sparc-*
%endif
+%ifnarch sparc64
+%{__rm} -r lib/ffi/platform/sparc64-*
+%endif
%ifnarch %{x8664}
-%{__rm} -r lib/ffi/platform/x86_64-*
+%{__rm} -r lib/ffi/platform/x86_64-linux
+%endif
+%ifnarch x32
+%{__rm} -r lib/ffi/platform/x86_64-linux-gnux32
%endif
# cleanup backups after patching
find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
+%{__tar} xf %{SOURCE0} metadata.gz
+
%build
%__gem_helper spec
diff --git a/ffi-x32.patch b/ffi-x32.patch
new file mode 100644
index 0000000..7f00689
--- /dev/null
+++ b/ffi-x32.patch
@@ -0,0 +1,127 @@
+--- ffi-1.15.5/ext/ffi_c/MethodHandle.c.orig 2023-02-18 19:46:18.462877574 +0100
++++ ffi-1.15.5/ext/ffi_c/MethodHandle.c 2023-02-18 20:11:26.531881239 +0100
+@@ -77,7 +77,7 @@
+ static bool prep_trampoline(void* ctx, void* code, Closure* closure, char* errmsg, size_t errmsgsize);
+ static long trampoline_size(void);
+
+-#if defined(__x86_64__) && (defined(__linux__) || defined(__APPLE__))
++#if defined(__x86_64__) && !defined(__ILP32__) && (defined(__linux__) || defined(__APPLE__))
+ # define CUSTOM_TRAMPOLINE 1
+ #endif
+
+--- ffi-1.15.5/lib/ffi/platform.rb.orig 2023-02-18 19:46:19.052881095 +0100
++++ ffi-1.15.5/lib/ffi/platform.rb 2023-02-18 20:18:51.244538146 +0100
+@@ -104,6 +104,7 @@ module FFI
+
+ # Add the version for known ABI breaks
+ name_version = "12" if IS_FREEBSD && OSVERSION >= 12 # 64-bit inodes
++ name_version = "-gnux32" if RbConfig::CONFIG['host_os'] == "linux-gnux32"
+
+ NAME = "#{ARCH}-#{OS}#{name_version}"
+ CONF_DIR = File.join(RbConfig::CONFIG["vendorarchdir"], 'ffi', 'platform', NAME)
+--- ffi-1.15.5/lib/ffi/platform/x86_64-linux-gnux32/types.conf.orig 1970-01-01 01:00:00.000000000 +0100
++++ ffi-1.15.5/lib/ffi/platform/x86_64-linux-gnux32/types.conf 2023-02-18 21:04:54.427719598 +0100
+@@ -0,0 +1,103 @@
++rbx.platform.typedef.*__caddr_t = char
++rbx.platform.typedef.*__qaddr_t = long_long
++rbx.platform.typedef.__blkcnt64_t = long_long
++rbx.platform.typedef.__blkcnt_t = long_long
++rbx.platform.typedef.__blksize_t = long_long
++rbx.platform.typedef.__clock_t = long_long
++rbx.platform.typedef.__clockid_t = int
++rbx.platform.typedef.__daddr_t = int
++rbx.platform.typedef.__dev_t = ulong_long
++rbx.platform.typedef.__fd_mask = long
++rbx.platform.typedef.__fsblkcnt64_t = ulong_long
++rbx.platform.typedef.__fsblkcnt_t = ulong_long
++rbx.platform.typedef.__fsfilcnt64_t = ulong_long
++rbx.platform.typedef.__fsfilcnt_t = ulong_long
++rbx.platform.typedef.__gid_t = uint
++rbx.platform.typedef.__id_t = uint
++rbx.platform.typedef.__ino64_t = ulong_long
++rbx.platform.typedef.__ino_t = ulong_long
++rbx.platform.typedef.__int16_t = short
++rbx.platform.typedef.__int32_t = int
++rbx.platform.typedef.__int64_t = long_long
++rbx.platform.typedef.__int8_t = char
++rbx.platform.typedef.__intptr_t = int
++rbx.platform.typedef.__key_t = int
++rbx.platform.typedef.__loff_t = long_long
++rbx.platform.typedef.__mode_t = uint
++rbx.platform.typedef.__nlink_t = uint
++rbx.platform.typedef.__off64_t = long_long
++rbx.platform.typedef.__off_t = long_long
++rbx.platform.typedef.__pid_t = int
++rbx.platform.typedef.__priority_which_t = int
++rbx.platform.typedef.__quad_t = long_long
++rbx.platform.typedef.__rlim64_t = ulong_long
++rbx.platform.typedef.__rlim_t = ulong_long
++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 = int
++rbx.platform.typedef.__suseconds_t = long_long
++rbx.platform.typedef.__swblk_t = long_long
++rbx.platform.typedef.__time_t = long_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_long
++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_long
++rbx.platform.typedef.__uint8_t = uchar
++rbx.platform.typedef.__useconds_t = uint
++rbx.platform.typedef.blkcnt_t = long_long
++rbx.platform.typedef.blksize_t = long_long
++rbx.platform.typedef.clockid_t = int
++rbx.platform.typedef.daddr_t = int
++rbx.platform.typedef.dev_t = ulong_long
++rbx.platform.typedef.fd_mask = long
++rbx.platform.typedef.fsblkcnt_t = ulong_long
++rbx.platform.typedef.fsfilcnt_t = ulong_long
++rbx.platform.typedef.gid_t = uint
++rbx.platform.typedef.id_t = uint
++rbx.platform.typedef.in_addr_t = uint
++rbx.platform.typedef.in_port_t = ushort
++rbx.platform.typedef.ino_t = ulong_long
++rbx.platform.typedef.int16_t = short
++rbx.platform.typedef.int32_t = int
++rbx.platform.typedef.int64_t = long_long
++rbx.platform.typedef.int8_t = char
++rbx.platform.typedef.key_t = int
++rbx.platform.typedef.loff_t = long_long
++rbx.platform.typedef.mode_t = uint
++rbx.platform.typedef.nlink_t = uint
++rbx.platform.typedef.off_t = long_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_long
++rbx.platform.typedef.register_t = long
++rbx.platform.typedef.rlim_t = ulong_long
++rbx.platform.typedef.sa_family_t = ushort
++rbx.platform.typedef.size_t = uint
++rbx.platform.typedef.socklen_t = uint
++rbx.platform.typedef.ssize_t = int
++rbx.platform.typedef.suseconds_t = long_long
++rbx.platform.typedef.time_t = long_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_long
++rbx.platform.typedef.u_int8_t = uchar
++rbx.platform.typedef.u_long = ulong
++rbx.platform.typedef.u_quad_t = ulong_long
++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
diff --git a/ruby-ffi-platform.patch b/ruby-ffi-platform.patch
index 4d18441..67f3e0c 100644
--- a/ruby-ffi-platform.patch
+++ b/ruby-ffi-platform.patch
@@ -1,9 +1,9 @@
---- ffi-1.9.18/lib/ffi/platform.rb~ 2017-04-24 22:55:45.000000000 +0300
-+++ ffi-1.9.18/lib/ffi/platform.rb 2017-04-24 22:56:19.872279857 +0300
-@@ -90,7 +90,7 @@
- IS_SOLARIS = is_os("solaris")
- IS_WINDOWS = is_os("windows")
- IS_BSD = IS_MAC || IS_FREEBSD || IS_NETBSD || IS_OPENBSD
+--- ffi-1.15.5/lib/ffi/platform.rb.orig 2023-02-18 19:37:47.086493199 +0100
++++ ffi-1.15.5/lib/ffi/platform.rb 2023-02-18 19:38:48.586860130 +0100
+@@ -106,7 +106,7 @@ module FFI
+ name_version = "12" if IS_FREEBSD && OSVERSION >= 12 # 64-bit inodes
+
+ NAME = "#{ARCH}-#{OS}#{name_version}"
- CONF_DIR = File.join(File.dirname(__FILE__), 'platform', NAME)
+ CONF_DIR = File.join(RbConfig::CONFIG["vendorarchdir"], 'ffi', 'platform', NAME)
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ruby-ffi.git/commitdiff/ad224910edc092379dbe613e8b38c53ec602b01a
More information about the pld-cvs-commit
mailing list