ruby: add patch for readline 6.3

This commit is contained in:
Jack Nagel 2014-04-13 16:42:45 -05:00
parent 761976cfcd
commit 2f6267635e

View file

@ -2,10 +2,16 @@ require 'formula'
class Ruby < Formula
homepage 'https://www.ruby-lang.org/'
url 'http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.bz2'
sha256 '96aabab4dd4a2e57dd0d28052650e6fcdc8f133fa8980d9b936814b1e93f6cfc'
revision 1
stable do
url "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.bz2"
sha256 "96aabab4dd4a2e57dd0d28052650e6fcdc8f133fa8980d9b936814b1e93f6cfc"
# Combination of patches from trunk to fix build against readline 6.3
patch :DATA
end
bottle do
sha1 "ca1a24ea84766ad60d736242fe9c09fa20bcb751" => :mavericks
sha1 "f00a62a246a3b391ac9f8a80d5b1b774ba54a324" => :mountain_lion
@ -89,3 +95,45 @@ class Ruby < Formula
assert_equal 0, $?.exitstatus
end
end
__END__
diff --git a/ext/readline/extconf.rb b/ext/readline/extconf.rb
index 0b121c1..3317e2f 100644
--- a/ext/readline/extconf.rb
+++ b/ext/readline/extconf.rb
@@ -19,6 +19,10 @@ def readline.have_func(func)
return super(func, headers)
end
+def readline.have_type(type)
+ return super(type, headers)
+end
+
dir_config('curses')
dir_config('ncurses')
dir_config('termcap')
@@ -94,4 +98,11 @@ def readline.have_func(func)
readline.have_func("rl_redisplay")
readline.have_func("rl_insert_text")
readline.have_func("rl_delete_text")
+unless readline.have_type("rl_hook_func_t*")
+ # rl_hook_func_t is available since readline-4.2 (2001).
+ # Function is removed at readline-6.3 (2014).
+ # However, editline (NetBSD 6.1.3, 2014) doesn't have rl_hook_func_t.
+ $defs << "-Drl_hook_func_t=Function"
+end
+
create_makefile("readline")
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 659adb9..7bc0eed 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -1974,7 +1974,7 @@ Init_readline()
rl_attempted_completion_function = readline_attempted_completion_function;
#if defined(HAVE_RL_PRE_INPUT_HOOK)
- rl_pre_input_hook = (Function *)readline_pre_input_hook;
+ rl_pre_input_hook = (rl_hook_func_t *)readline_pre_input_hook;
#endif
#ifdef HAVE_RL_CATCH_SIGNALS
rl_catch_signals = 0;