From 4fa3d5e3dc8bf031b55b71789381fa05c365443d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 2 Sep 2015 18:38:45 +0200 Subject: [PATCH] Fix Ruby 2.2 compatibility. --- ...select-avoiding-deprecated-functions.patch | 57 +++++++++++++++++++ ruby-ncurses.spec | 10 +++- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 ruby-ncurses-1.3.1-use-new-rb_thread_fd_select-avoiding-deprecated-functions.patch diff --git a/ruby-ncurses-1.3.1-use-new-rb_thread_fd_select-avoiding-deprecated-functions.patch b/ruby-ncurses-1.3.1-use-new-rb_thread_fd_select-avoiding-deprecated-functions.patch new file mode 100644 index 0000000..4a1a5d3 --- /dev/null +++ b/ruby-ncurses-1.3.1-use-new-rb_thread_fd_select-avoiding-deprecated-functions.patch @@ -0,0 +1,57 @@ +From 809e549408bfdf7cab4b98a73f6e78dd3ad81d86 Mon Sep 17 00:00:00 2001 +From: Gaute Hope +Date: Wed, 1 May 2013 15:10:26 +0200 +Subject: [PATCH] ncurses_wrap.c: use new rb_thread_fd_select avoiding + deprecated functions + +--- + ncurses_wrap.c | 36 ++++++++++++++++++++++-------------- + 1 file changed, 22 insertions(+), 14 deletions(-) + +diff --git a/ncurses_wrap.c b/ncurses_wrap.c +index 7793fcb..ba1e921 100755 +--- a/ncurses_wrap.c ++++ b/ncurses_wrap.c +@@ -836,20 +836,28 @@ static int rbncurshelper_nonblocking_wgetch(WINDOW *c_win) { + c_win->_delay = 0; + #endif + while (doupdate() /* detects resize */, (result = wgetch(c_win)) == ERR) { +- gettimeofday(&tv, &tz); +- nowtime = tv.tv_sec + tv.tv_usec * 1e-6; +- delay = finishtime - nowtime; +- if (delay <= 0) break; +- +- /* Check for terminal size change every resize_delay seconds */ +- if (resize_delay > delay) resize_delay = delay; +- tv.tv_sec = (time_t)resize_delay; +- tv.tv_usec = (unsigned)( (resize_delay - tv.tv_sec) * 1e6 ); +- +- /* sleep on infd until input is available or tv reaches timeout */ +- FD_ZERO(&in_fds); +- FD_SET(infd, &in_fds); +- rb_thread_select(infd + 1, &in_fds, NULL, NULL, &tv); ++ rb_fdset_t fdsets[3]; ++ rb_fdset_t *rfds = NULL; ++ gettimeofday(&tv, &tz); ++ nowtime = tv.tv_sec + tv.tv_usec * 1e-6; ++ delay = finishtime - nowtime; ++ if (delay <= 0) break; ++ ++ /* Check for terminal size change every resize_delay seconds */ ++ if (resize_delay > delay) resize_delay = delay; ++ tv.tv_sec = (time_t)resize_delay; ++ tv.tv_usec = (unsigned)( (resize_delay - tv.tv_sec) * 1e6 ); ++ ++ /* sleep on infd until input is available or tv reaches timeout */ ++ FD_ZERO(&in_fds); ++ FD_SET(infd, &in_fds); ++ //rb_thread_fd_select(infd + 1, &in_fds, NULL, NULL, &tv); ++ ++ rfds = &fdsets[0]; ++ rb_fd_init(rfds); ++ rb_fd_copy(rfds, &in_fds, infd +1); ++ ++ rb_thread_fd_select(infd + 1, rfds, NULL, NULL, &tv); + } + #ifdef NCURSES_VERSION + c_win->_delay = windelay; diff --git a/ruby-ncurses.spec b/ruby-ncurses.spec index f200873..62b708b 100644 --- a/ruby-ncurses.spec +++ b/ruby-ncurses.spec @@ -3,7 +3,7 @@ Name: %distname Version: 1.3.1 -Release: 15%{?dist} +Release: 16%{?dist} Summary: A module for ruby applications for using ncurses interfaces Group: System Environment/Libraries License: LGPLv2+ @@ -14,6 +14,10 @@ Patch1: 0002-Werror-format-security.patch # Fixes "ncurses_wrap.c:827:12: error: variable 'tz' has initializer but incomplete type" # https://github.com/eclubb/ncurses-ruby/commit/0f7decd5e5a205444c9d31f19b0599a7e42b0fd8 Patch2: ruby-ncurses-fix-missing-tz-prototypes.patch +# rb_thread_select was removed from Ruby 2.2. +# https://bugs.ruby-lang.org/issues/9502#change-45212 +# https://github.com/sup-heliotrope/ncursesw-ruby/commit/809e549408bfdf7cab4b98a73f6e78dd3ad81d86 +Patch3: ruby-ncurses-1.3.1-use-new-rb_thread_fd_select-avoiding-deprecated-functions.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: ruby(release) BuildRequires: ruby @@ -32,6 +36,7 @@ of the C library ncurses accessible from the Ruby programming language. %patch0 -p1 -b .p %patch1 -p1 -b .format %patch2 -p1 -b .systime +%patch3 -p1 -b .ruby22 %{__chmod} 0644 ncurses_wrap.c find examples/ -type f | xargs %{__chmod} 0644 @@ -57,6 +62,9 @@ ruby extconf.rb --vendor %{ruby_vendorlibdir}/ncurses_sugar.rb %changelog +* Wed Sep 02 2015 Vít Ondruch - 1.3.1-16 +- Fix Ruby 2.2 compatibility. + * Thu Jun 18 2015 Fedora Release Engineering - 1.3.1-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild