diff options
author | matoro <matoro@users.noreply.github.com> | 2022-06-15 00:29:18 -0400 |
---|---|---|
committer | Matt Turner <mattst88@gentoo.org> | 2022-10-22 17:33:10 -0400 |
commit | 4cf664faf645b70935eaee5124eb2a13e35edc44 (patch) | |
tree | abe3646e79bbc997afa6492767369e7a2f41f0f1 /dev-ruby | |
parent | dev-ruby/console: new package, add 1.15.3 (diff) | |
download | gentoo-4cf664faf645b70935eaee5124eb2a13e35edc44.tar.gz gentoo-4cf664faf645b70935eaee5124eb2a13e35edc44.tar.bz2 gentoo-4cf664faf645b70935eaee5124eb2a13e35edc44.zip |
dev-ruby/ffi: revbump 1.15.5-r1, fix sparc
See: https://github.com/ffi/ffi/pull/957
Closes: https://bugs.gentoo.org/847286
Signed-off-by: matoro <matoro@users.noreply.github.com>
Signed-off-by: Matt Turner <mattst88@gentoo.org>
Diffstat (limited to 'dev-ruby')
-rw-r--r-- | dev-ruby/ffi/ffi-1.15.5-r1.ebuild | 71 | ||||
-rw-r--r-- | dev-ruby/ffi/files/backport-pr-962.patch | 48 | ||||
-rw-r--r-- | dev-ruby/ffi/files/pr-957-sparc.patch | 42 |
3 files changed, 161 insertions, 0 deletions
diff --git a/dev-ruby/ffi/ffi-1.15.5-r1.ebuild b/dev-ruby/ffi/ffi-1.15.5-r1.ebuild new file mode 100644 index 000000000000..98c573a70b41 --- /dev/null +++ b/dev-ruby/ffi/ffi-1.15.5-r1.ebuild @@ -0,0 +1,71 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +USE_RUBY="ruby26 ruby27 ruby30 ruby31" + +RUBY_FAKEGEM_RECIPE_TEST="rspec3" + +RUBY_FAKEGEM_DOCDIR="doc" +RUBY_FAKEGEM_EXTRADOC="README.md" + +RUBY_FAKEGEM_GEMSPEC="ffi.gemspec" + +RUBY_FAKEGEM_EXTENSIONS=(ext/ffi_c/extconf.rb) + +inherit ruby-fakegem toolchain-funcs + +DESCRIPTION="Ruby extension for programmatically loading dynamic libraries" +HOMEPAGE="https://wiki.github.com/ffi/ffi" + +SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${PN}-git-${PV}.tgz" + +IUSE="" +LICENSE="BSD" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +PATCHES=( + "${FILESDIR}/backport-pr-962.patch" + "${FILESDIR}/pr-957-sparc.patch" # submitted upstream as https://github.com/ffi/ffi/pull/957 +) + +RDEPEND+=" dev-libs/libffi:=" +DEPEND+=" dev-libs/libffi:=" + +ruby_add_bdepend "dev-ruby/rake" + +all_ruby_prepare() { + sed -i -e '/tasks/ s:^:#:' \ + -e '/Gem::Tasks/,/end/ s:^:#:' Rakefile || die + + sed -e '/require/c\require "./lib/ffi/version"' \ + -e 's/git ls-files -z/find * -print0/' \ + -e '/^ lfs/,/^ end/ s:^:#:' \ + -i ${RUBY_FAKEGEM_GEMSPEC} || die + + # Fix Makefile for tests + sed -i -e '/CCACHE :=/ s:^:#:' \ + -e 's/-O2//' \ + -e 's/^CFLAGS =/CFLAGS +=/' spec/ffi/fixtures/GNUmakefile || die + + # Remove bundled version of libffi. + rm -rf ext/ffi_c/libffi || die +} + +each_ruby_compile() { + each_fakegem_compile + + ${RUBY} -S rake -f gen/Rakefile || die "types.conf generation failed" +} + +each_ruby_test() { + CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" ${RUBY} -S rspec spec || die +} + +all_ruby_install() { + all_fakegem_install + + docinto examples + dodoc samples/* +} diff --git a/dev-ruby/ffi/files/backport-pr-962.patch b/dev-ruby/ffi/files/backport-pr-962.patch new file mode 100644 index 000000000000..708c52025bd5 --- /dev/null +++ b/dev-ruby/ffi/files/backport-pr-962.patch @@ -0,0 +1,48 @@ +From edc54894f77d00c4ca34593c8b4c94f656f5807e Mon Sep 17 00:00:00 2001 +From: Frederick Cheung <frederick.cheung@gmail.com> +Date: Fri, 17 Jun 2022 18:57:28 +0100 +Subject: [PATCH] Fix Pointer#initialize using NUM2LL instead of NUM2ULL + +If the high bit of the address was set this would raise RangeError +(bignum too big to convert into long long). This is not uncommon on +platforms that use the high bits of pointers for purposes such as +pointer authentication + +This also now matches Pointer#address which uses ULL2NUM. +--- + ext/ffi_c/Pointer.c | 2 +- + spec/ffi/pointer_spec.rb | 8 ++++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/ext/ffi_c/Pointer.c b/ext/ffi_c/Pointer.c +index 153fff101..79886811f 100644 +--- a/ext/ffi_c/Pointer.c ++++ b/ext/ffi_c/Pointer.c +@@ -112,7 +112,7 @@ ptr_initialize(int argc, VALUE* argv, VALUE self) + switch (TYPE(rbAddress)) { + case T_FIXNUM: + case T_BIGNUM: +- p->memory.address = (void*) (uintptr_t) NUM2LL(rbAddress); ++ p->memory.address = (void*) (uintptr_t) NUM2ULL(rbAddress); + p->memory.size = LONG_MAX; + if (p->memory.address == NULL) { + p->memory.flags = 0; +diff --git a/spec/ffi/pointer_spec.rb b/spec/ffi/pointer_spec.rb +index b216a161d..7a2ac1565 100644 +--- a/spec/ffi/pointer_spec.rb ++++ b/spec/ffi/pointer_spec.rb +@@ -237,6 +237,14 @@ def to_ptr + expect(FFI::Pointer.new(0).slice(0, 10).size_limit?).to be true + end + end ++ ++ describe "#initialise" do ++ it 'can use adresses with high bit set' do ++ max_address = 2**FFI::Platform::ADDRESS_SIZE - 1 ++ pointer = FFI::Pointer.new(:uint8, max_address) ++ expect(pointer.address).to eq(max_address) ++ end ++ end + end + + describe "AutoPointer" do diff --git a/dev-ruby/ffi/files/pr-957-sparc.patch b/dev-ruby/ffi/files/pr-957-sparc.patch new file mode 100644 index 000000000000..b68b5e06a7d4 --- /dev/null +++ b/dev-ruby/ffi/files/pr-957-sparc.patch @@ -0,0 +1,42 @@ +From 241b10322283743b79c9489993bfb964b5167f7f Mon Sep 17 00:00:00 2001 +From: matoro <matoro@users.noreply.github.com> +Date: Wed, 25 May 2022 14:23:55 -0400 +Subject: [PATCH 1/2] Rename sparc64-linux -> sparcv9-linux + +In https://github.com/ffi/ffi/pull/575, 64-bit sparc was changed to also +use sparcv9 as the platform name, but the types.conf directory was never +renamed. This breaks only on Ruby 3.0 and later due to the fileutils +change to use keyword arguments in +https://github.com/ruby/fileutils/commit/482de6d397742526d1111576e2791f9b7051e3c0 +--- + lib/ffi/platform/{sparc64-linux => sparcv9-linux}/types.conf | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) + rename lib/ffi/platform/{sparc64-linux => sparcv9-linux}/types.conf (100%) + +diff --git a/lib/ffi/platform/sparc64-linux/types.conf b/lib/ffi/platform/sparcv9-linux/types.conf +similarity index 100% +rename from lib/ffi/platform/sparc64-linux/types.conf +rename to lib/ffi/platform/sparcv9-linux/types.conf + +From 76dc5c7d69a445268f47f5b6a9185e644bcd68e8 Mon Sep 17 00:00:00 2001 +From: matoro <matoro@users.noreply.github.com> +Date: Mon, 13 Jun 2022 22:56:26 -0400 +Subject: [PATCH 2/2] Also normalize sparc64 -> sparcv9 in test fixture + +--- + spec/ffi/fixtures/compile.rb | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/spec/ffi/fixtures/compile.rb b/spec/ffi/fixtures/compile.rb +index f2e831a63..58ee5611d 100644 +--- a/spec/ffi/fixtures/compile.rb ++++ b/spec/ffi/fixtures/compile.rb +@@ -22,6 +22,8 @@ module TestLibrary + "powerpc64" + when /ppc|powerpc/ + "powerpc" ++ when /sparcv9|sparc64/ ++ "sparcv9" + when /^arm/ + if RbConfig::CONFIG['host_os'] =~ /darwin/ + "aarch64" |