dev-ruby/coolio: Fix incompatible function pointer types passing

Closes: https://bugs.gentoo.org/883147
Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/32001
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Brahmajit Das
2023-07-22 15:34:39 +00:00
committed by Sam James
parent c87ef66dfd
commit e66deed6bc
2 changed files with 61 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
USE_RUBY="ruby27 ruby30 ruby31 ruby32"
RUBY_FAKEGEM_RECIPE_TEST="rspec3"
RUBY_FAKEGEM_EXTRADOC="CHANGES.md README.md"
RUBY_FAKEGEM_NAME="cool.io"
RUBY_FAKEGEM_GEMSPEC="cool.io.gemspec"
RUBY_FAKEGEM_EXTENSIONS=(ext/cool.io/extconf.rb ext/iobuffer/extconf.rb)
inherit ruby-fakegem
DESCRIPTION="A high performance event framework for Ruby which uses the libev C library"
HOMEPAGE="https://coolio.github.io/"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE=""
PATCHES=(
"${FILESDIR}"/${PN}-1.7.1-fix-build-clang16.patch
)
# cool.io includes a bundled version of libev that is patched to work correctly with ruby.
all_ruby_prepare() {
rm -r Gemfile* lib/.gitignore || die
sed -i -e '/[Bb]undler/d' Rakefile || die
sed -i -e '28i s.add_dependency "iobuffer"' ${RUBY_FAKEGEM_GEMSPEC} || die
sed -i -e '/git ls-files/d' ${RUBY_FAKEGEM_GEMSPEC} || die
# Avoid dependency on rake-compiler
sed -i -e '/extensiontask/ s:^:#:' \
-e '/ExtensionTask/,/^end/ s:^:#:' Rakefile || die
# Remove specs that require network connectivity
rm -f spec/dns_spec.rb || die
# Use one address consistently
sed -i -e 's/localhost/127.0.0.1/' spec/{udp_socket,tcp_server,iobuffer}_spec.rb || die
}

View File

@@ -0,0 +1,13 @@
Bug: https://bugs.gentoo.org/883147
Upstream PR: https://github.com/tarcieri/cool.io/pull/78
--- a/ext/libev/ev.c
+++ b/ext/libev/ev.c
@@ -3768,7 +3768,7 @@ rb_thread_unsafe_dangerous_crazy_blocking_region_end(...);
#if defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)
poll_args.loop = loop;
poll_args.waittime = waittime;
- rb_thread_call_without_gvl(ev_backend_poll, (void *)&poll_args, RUBY_UBF_IO, 0);
+ rb_thread_call_without_gvl((void *)ev_backend_poll, (void *)&poll_args, RUBY_UBF_IO, 0);
#else
backend_poll (EV_A_ waittime);
#endif