The attached patch updates the code to work with ruby2.2. I've applied it in Ubuntu. Thanks for considering it for Debian!
-- -mt
Index: ruby-kyotocabinet-1.32/extconf.rb =================================================================== --- ruby-kyotocabinet-1.32.orig/extconf.rb +++ ruby-kyotocabinet-1.32/extconf.rb @@ -1,4 +1,5 @@ require "mkmf" +require "rbconfig" File::unlink("Makefile") if (File::exist?("Makefile")) dir_config('kyotocabinet') @@ -7,7 +8,7 @@ kclibs = `pkg-config --libs-only-l kyoto kccflags = `pkg-config --cflags kyotocabinet`.chomp kcldflags = `pkg-config --libs-only-L kyotocabinet`.chomp -Config::CONFIG["CPP"] = "g++ -E" +RbConfig::CONFIG["CPP"] = "g++ -E" $CFLAGS = "-I. #{kccflags} -Wall #{$CFLAGS} -O2" $LDFLAGS = "#{$LDFLAGS} -L. #{kcldflags}" $libs = "#{$libs} #{kclibs}" Index: ruby-kyotocabinet-1.32/test.rb =================================================================== --- ruby-kyotocabinet-1.32.orig/test.rb +++ ruby-kyotocabinet-1.32/test.rb @@ -40,7 +40,7 @@ if ("ruby" + /libruby-?(\d+.\d+(.\d+)?)\ end if File.exists? "kyotocabinet.so" system("rm -rf casket*") -rubycmd = Config::CONFIG["bindir"] + "/" + RbConfig::CONFIG['ruby_install_name'] +rubycmd = RbConfig::CONFIG["bindir"] + "/" + RbConfig::CONFIG['ruby_install_name'] all = confs.size * formats.size cnt = 0 oknum = 0 Index: ruby-kyotocabinet-1.32/kyotocabinet.cc =================================================================== --- ruby-kyotocabinet-1.32.orig/kyotocabinet.cc +++ ruby-kyotocabinet-1.32/kyotocabinet.cc @@ -20,6 +20,7 @@ namespace kc = kyotocabinet; extern "C" { #include <ruby.h> +#include <ruby/thread.h> #if RUBY_VM >= 1 #define _KC_YARV_ @@ -599,16 +600,16 @@ class NativeFunction { virtual void operate() = 0; static void execute(NativeFunction* func) { #if defined(_KC_YARV_) - rb_thread_blocking_region(execute_impl, func, RUBY_UBF_IO, NULL); + rb_thread_call_without_gvl(execute_impl, func, RUBY_UBF_IO, NULL); #else func->operate(); #endif } private: - static VALUE execute_impl(void* ptr) { + static void *execute_impl(void* ptr) { NativeFunction* func = (NativeFunction*)ptr; func->operate(); - return Qnil; + return NULL; } };