public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: dev-ruby/ffi/, dev-ruby/ffi/files/
@ 2022-10-22 21:33 Matt Turner
  0 siblings, 0 replies; 2+ messages in thread
From: Matt Turner @ 2022-10-22 21:33 UTC (permalink / raw
  To: gentoo-commits

commit:     4cf664faf645b70935eaee5124eb2a13e35edc44
Author:     matoro <matoro <AT> users <DOT> noreply <DOT> github <DOT> com>
AuthorDate: Wed Jun 15 04:29:18 2022 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Sat Oct 22 21:33:10 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4cf664fa

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 <AT> users.noreply.github.com>
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>

 dev-ruby/ffi/ffi-1.15.5-r1.ebuild        | 71 ++++++++++++++++++++++++++++++++
 dev-ruby/ffi/files/backport-pr-962.patch | 48 +++++++++++++++++++++
 dev-ruby/ffi/files/pr-957-sparc.patch    | 42 +++++++++++++++++++
 3 files changed, 161 insertions(+)

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"


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: dev-ruby/ffi/, dev-ruby/ffi/files/
@ 2023-04-08 21:40 Sam James
  0 siblings, 0 replies; 2+ messages in thread
From: Sam James @ 2023-04-08 21:40 UTC (permalink / raw
  To: gentoo-commits

commit:     f47b92e6e464b31190fd762365d01d133f993bc8
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Apr  8 21:39:13 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Apr  8 21:39:13 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f47b92e6

dev-ruby/ffi: backport fix for >=ruby30 & non-pre-generated types.conf

Only shows up on e.g. HPPA or other platforms w/o a pre-generated types.conf.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-ruby/ffi/ffi-1.15.5-r1.ebuild                  | 12 +++++------
 dev-ruby/ffi/files/fix-regenerate-types-conf.patch | 23 ++++++++++++++++++++++
 2 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/dev-ruby/ffi/ffi-1.15.5-r1.ebuild b/dev-ruby/ffi/ffi-1.15.5-r1.ebuild
index aa69729ffc73..cadd0c23bbbc 100644
--- a/dev-ruby/ffi/ffi-1.15.5-r1.ebuild
+++ b/dev-ruby/ffi/ffi-1.15.5-r1.ebuild
@@ -18,23 +18,23 @@ 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"
 
+PATCHES=(
+	"${FILESDIR}/backport-pr-962.patch"
+	"${FILESDIR}/pr-957-sparc.patch" # submitted upstream as https://github.com/ffi/ffi/pull/957
+	"${FILESDIR}/fix-regenerate-types-conf.patch"
+)
+
 all_ruby_prepare() {
 	sed -i -e '/tasks/ s:^:#:' \
 		-e '/Gem::Tasks/,/end/ s:^:#:' Rakefile || die

diff --git a/dev-ruby/ffi/files/fix-regenerate-types-conf.patch b/dev-ruby/ffi/files/fix-regenerate-types-conf.patch
new file mode 100644
index 000000000000..1c1cca1c7d4d
--- /dev/null
+++ b/dev-ruby/ffi/files/fix-regenerate-types-conf.patch
@@ -0,0 +1,23 @@
+https://github.com/ffi/ffi/commit/19348fe09e1aeb08424abdf331c3497159139f20
+
+From 19348fe09e1aeb08424abdf331c3497159139f20 Mon Sep 17 00:00:00 2001
+From: matoro <matoro@users.noreply.github.com>
+Date: Tue, 14 Mar 2023 21:03:33 -0400
+Subject: [PATCH] Update gen/Rakefile for Ruby 3 compat
+
+Ruby 3 changed the 'mode' argument from an option hash to keyword
+argument.  This change is backwards-compatible with Ruby 2.
+
+See: https://github.com/ruby/fileutils/commit/482de6d397742526d1111576e2791f9b7051e3c0
+--- a/gen/Rakefile
++++ b/gen/Rakefile
+@@ -9,7 +9,7 @@ logfile = File.join(File.dirname(__FILE__), 'log')
+ 
+ file types_conf do |task|
+   options = {}
+-  FileUtils.mkdir_p(File.dirname(task.name), { :mode => 0755 })
++  FileUtils.mkdir_p(File.dirname(task.name), mode: 0755)
+   File.open(task.name, File::CREAT|File::TRUNC|File::RDWR, 0644) do |f|
+     f.puts FFI::TypesGenerator.generate(options)
+   end
+


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-04-08 21:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-22 21:33 [gentoo-commits] repo/gentoo:master commit in: dev-ruby/ffi/, dev-ruby/ffi/files/ Matt Turner
  -- strict thread matches above, loose matches on Subject: below --
2023-04-08 21:40 Sam James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox