databases/ruby-bdb: fix build with ruby 2.1 and 2.2

With hat:	ruby@
This commit is contained in:
swills
2015-03-30 13:16:20 +00:00
parent 7b8a489cfc
commit a5408062d7
9 changed files with 329 additions and 5 deletions
+13 -3
View File
@@ -58,14 +58,24 @@ SHEBANG_FILES= examples/record.rb \
.include <bsd.port.pre.mk>
post-patch:
.if ${RUBY_VER} >= 2.0
@${REINPLACE_CMD} -e '/remove_const/d' ${WRKSRC}/src/features.rb
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src-features.rb
.endif
.if ${RUBY_VER} >= 2.1
@${REINPLACE_CMD} -e 's|RBASIC(obj)->klass = \(.*\);|RBASIC_SET_CLASS_RAW(obj, \1);|' -e 's|RCLASS(\([[:alnum:]_]*\))->m_tbl|RCLASS_M_TBL(\1)|g' ${WRKSRC}/bdbxml2/bdbxml.h ${WRKSRC}/src/common.c
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-bdbxml2-bdbxml.h
.endif
.if ${RUBY_VER} == 2.1
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src-common.c-21
.endif
.if ${RUBY_VER} == 2.2
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src-common.c-22 \
${FILESDIR}/extra-patch-src-recnum.c-22 \
${FILESDIR}/extra-patch-src-cursor.c-22
.endif
post-build:
(cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} \
${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} rdoc)
@@ -0,0 +1,11 @@
--- bdbxml2/bdbxml.h.orig 2011-04-06 19:35:39.000000000 +0000
+++ bdbxml2/bdbxml.h 2015-01-22 17:03:07.000000000 +0000
@@ -377,7 +377,7 @@
static inline void
rset_obj(VALUE obj)
{
- RBASIC(obj)->klass = rb_cData;
+ RBASIC_SET_CLASS_RAW(obj, rb_cData);
RDATA(obj)->dfree = (RDF)free;
RDATA(obj)->dmark = 0;
}
@@ -0,0 +1,72 @@
--- src/common.c.orig 2011-04-06 19:35:39.000000000 +0000
+++ src/common.c 2015-01-22 17:06:38.000000000 +0000
@@ -1570,10 +1570,10 @@
#endif
switch(dbst->type) {
case DB_BTREE:
- RBASIC(obj)->klass = bdb_cBtree;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cBtree);
break;
case DB_HASH:
- RBASIC(obj)->klass = bdb_cHash;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cHash);
break;
case DB_RECNO:
{
@@ -1581,17 +1581,17 @@
rb_warning("It's hard to distinguish Recnum with Recno for all versions of Berkeley DB");
if ((count = bdb_is_recnum(dbst->dbp)) != -1) {
- RBASIC(obj)->klass = bdb_cRecnum;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cRecnum);
dbst->len = count;
}
else {
- RBASIC(obj)->klass = bdb_cRecno;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cRecno);
}
break;
}
#if HAVE_CONST_DB_QUEUE
case DB_QUEUE:
- RBASIC(obj)->klass = bdb_cQueue;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cQueue);
break;
#endif
default:
@@ -1635,29 +1635,29 @@
dbst->options = BDB_NOT_OPEN;
cl = obj;
while (cl) {
- if (cl == bdb_cBtree || RCLASS(cl)->m_tbl == RCLASS(bdb_cBtree)->m_tbl) {
+ if (cl == bdb_cBtree || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cBtree)) {
dbst->type = DB_BTREE;
break;
}
- if (cl == bdb_cRecnum || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecnum)->m_tbl) {
+ if (cl == bdb_cRecnum || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cRecnum)) {
dbst->type = DB_RECNO;
break;
}
- else if (cl == bdb_cHash || RCLASS(cl)->m_tbl == RCLASS(bdb_cHash)->m_tbl) {
+ else if (cl == bdb_cHash || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cHash)) {
dbst->type = DB_HASH;
break;
}
- else if (cl == bdb_cRecno || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecno)->m_tbl) {
+ else if (cl == bdb_cRecno || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cRecno)) {
dbst->type = DB_RECNO;
break;
}
#if HAVE_CONST_DB_QUEUE
- else if (cl == bdb_cQueue || RCLASS(cl)->m_tbl == RCLASS(bdb_cQueue)->m_tbl) {
+ else if (cl == bdb_cQueue || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cQueue)) {
dbst->type = DB_QUEUE;
break;
}
#endif
- else if (cl == bdb_cUnknown || RCLASS(cl)->m_tbl == RCLASS(bdb_cUnknown)->m_tbl) {
+ else if (cl == bdb_cUnknown || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cUnknown)) {
dbst->type = DB_UNKNOWN;
break;
}
@@ -0,0 +1,137 @@
--- src/common.c.orig 2011-04-06 19:35:39.000000000 +0000
+++ src/common.c 2015-01-22 17:10:32.000000000 +0000
@@ -1229,7 +1229,7 @@
if (argc && TYPE(argv[argc - 1]) == T_HASH) {
VALUE v, f = argv[argc - 1];
- if ((v = rb_hash_aref(f, rb_str_new2("txn"))) != RHASH(f)->ifnone) {
+ if ((v = rb_hash_aref(f, rb_str_new2("txn"))) != rb_hash_ifnone(f)) {
if (!rb_obj_is_kind_of(v, bdb_cTxn)) {
rb_raise(bdb_eFatal, "argument of txn must be a transaction");
}
@@ -1241,7 +1241,7 @@
dbst->options |= envst->options & BDB_NO_THREAD;
dbst->marshal = txnst->marshal;
}
- else if ((v = rb_hash_aref(f, rb_str_new2("env"))) != RHASH(f)->ifnone) {
+ else if ((v = rb_hash_aref(f, rb_str_new2("env"))) != rb_hash_ifnone(f)) {
if (!rb_obj_is_kind_of(v, bdb_cEnv)) {
rb_raise(bdb_eFatal, "argument of env must be an environnement");
}
@@ -1254,11 +1254,11 @@
#if HAVE_CONST_DB_ENCRYPT
if (envst && (envst->options & BDB_ENV_ENCRYPT)) {
VALUE tmp = rb_str_new2("set_flags");
- if ((v = rb_hash_aref(f, rb_intern("set_flags"))) != RHASH(f)->ifnone) {
+ if ((v = rb_hash_aref(f, rb_intern("set_flags"))) != rb_hash_ifnone(f)) {
rb_hash_aset(f, rb_intern("set_flags"),
INT2NUM(NUM2INT(v) | DB_ENCRYPT));
}
- else if ((v = rb_hash_aref(f, tmp)) != RHASH(f)->ifnone) {
+ else if ((v = rb_hash_aref(f, tmp)) != rb_hash_ifnone(f)) {
rb_hash_aset(f, tmp, INT2NUM(NUM2INT(v) | DB_ENCRYPT));
}
else {
@@ -1570,10 +1570,10 @@
#endif
switch(dbst->type) {
case DB_BTREE:
- RBASIC(obj)->klass = bdb_cBtree;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cBtree);
break;
case DB_HASH:
- RBASIC(obj)->klass = bdb_cHash;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cHash);
break;
case DB_RECNO:
{
@@ -1581,17 +1581,17 @@
rb_warning("It's hard to distinguish Recnum with Recno for all versions of Berkeley DB");
if ((count = bdb_is_recnum(dbst->dbp)) != -1) {
- RBASIC(obj)->klass = bdb_cRecnum;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cRecnum);
dbst->len = count;
}
else {
- RBASIC(obj)->klass = bdb_cRecno;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cRecno);
}
break;
}
#if HAVE_CONST_DB_QUEUE
case DB_QUEUE:
- RBASIC(obj)->klass = bdb_cQueue;
+ RBASIC_SET_CLASS_RAW(obj, bdb_cQueue);
break;
#endif
default:
@@ -1635,29 +1635,29 @@
dbst->options = BDB_NOT_OPEN;
cl = obj;
while (cl) {
- if (cl == bdb_cBtree || RCLASS(cl)->m_tbl == RCLASS(bdb_cBtree)->m_tbl) {
+ if (cl == bdb_cBtree || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cBtree)) {
dbst->type = DB_BTREE;
break;
}
- if (cl == bdb_cRecnum || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecnum)->m_tbl) {
+ if (cl == bdb_cRecnum || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cRecnum)) {
dbst->type = DB_RECNO;
break;
}
- else if (cl == bdb_cHash || RCLASS(cl)->m_tbl == RCLASS(bdb_cHash)->m_tbl) {
+ else if (cl == bdb_cHash || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cHash)) {
dbst->type = DB_HASH;
break;
}
- else if (cl == bdb_cRecno || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecno)->m_tbl) {
+ else if (cl == bdb_cRecno || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cRecno)) {
dbst->type = DB_RECNO;
break;
}
#if HAVE_CONST_DB_QUEUE
- else if (cl == bdb_cQueue || RCLASS(cl)->m_tbl == RCLASS(bdb_cQueue)->m_tbl) {
+ else if (cl == bdb_cQueue || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cQueue)) {
dbst->type = DB_QUEUE;
break;
}
#endif
- else if (cl == bdb_cUnknown || RCLASS(cl)->m_tbl == RCLASS(bdb_cUnknown)->m_tbl) {
+ else if (cl == bdb_cUnknown || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cUnknown)) {
dbst->type = DB_UNKNOWN;
break;
}
@@ -3004,8 +3004,8 @@
if (argc && TYPE(argv[argc - 1]) == T_HASH) {
VALUE g, f = argv[argc - 1];
- if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
- (g = rb_hash_aref(f, rb_str_new2("flags"))) != RHASH(f)->ifnone) {
+ if ((g = rb_hash_aref(f, rb_intern("flags"))) != rb_hash_ifnone(f) ||
+ (g = rb_hash_aref(f, rb_str_new2("flags"))) != rb_hash_ifnone(f)) {
flags = NUM2INT(g);
}
argc--;
@@ -3323,8 +3323,8 @@
flags = 0;
if (argc && TYPE(argv[argc - 1]) == T_HASH) {
VALUE g, f = argv[argc - 1];
- if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
- (g = rb_hash_aref(f, rb_str_new2("flags"))) != RHASH(f)->ifnone) {
+ if ((g = rb_hash_aref(f, rb_intern("flags"))) != rb_hash_ifnone(f) ||
+ (g = rb_hash_aref(f, rb_str_new2("flags"))) != rb_hash_ifnone(f)) {
flags = NUM2INT(g);
}
argc--;
@@ -3348,8 +3348,8 @@
flags = 0;
if (TYPE(argv[argc - 1]) == T_HASH) {
VALUE f = argv[argc - 1];
- if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
- (g = rb_hash_aref(f, rb_str_new2("flags"))) != RHASH(f)->ifnone) {
+ if ((g = rb_hash_aref(f, rb_intern("flags"))) != rb_hash_ifnone(f) ||
+ (g = rb_hash_aref(f, rb_str_new2("flags"))) != rb_hash_ifnone(f)) {
flags = NUM2INT(g);
}
argc--;
@@ -0,0 +1,13 @@
--- src/cursor.c.orig 2015-01-22 17:37:51.000000000 +0000
+++ src/cursor.c 2015-01-22 17:38:17.000000000 +0000
@@ -29,8 +29,8 @@
flags = 0;
if (argc && TYPE(argv[argc - 1]) == T_HASH) {
VALUE g, f = argv[argc - 1];
- if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
- (g = rb_hash_aref(f, rb_str_new2("flags"))) != RHASH(f)->ifnone) {
+ if ((g = rb_hash_aref(f, rb_intern("flags"))) != rb_hash_ifnone(f) ||
+ (g = rb_hash_aref(f, rb_str_new2("flags"))) != rb_hash_ifnone(f)) {
flags = NUM2INT(g);
}
argc--;
@@ -0,0 +1,18 @@
--- src/features.rb.orig 2011-04-06 19:35:39.000000000 +0000
+++ src/features.rb 2015-01-22 16:40:53.000000000 +0000
@@ -813,7 +813,6 @@
begin
conftest = CONFTEST_C.dup
class Object
- remove_const('CONFTEST_C')
end
CONFTEST_C = 'conftest.cxx'
@@ -878,7 +877,6 @@
ensure
class Object
- remove_const('CONFTEST_C')
end
CONFTEST_C = conftest
@@ -0,0 +1,22 @@
--- src/recnum.c.orig 2011-04-06 19:35:39.000000000 +0000
+++ src/recnum.c 2015-01-22 17:16:32.000000000 +0000
@@ -17,7 +17,7 @@
argc++;
}
rb_hash_aset(argv[argc - 1], array, INT2FIX(0));
- if (rb_hash_aref(argv[argc - 1], sarray) != RHASH(argv[argc - 1])->ifnone) {
+ if (rb_hash_aref(argv[argc - 1], sarray) != rb_hash_ifnone(argv[argc - 1])) {
rb_hash_aset(argv[argc - 1], sarray, INT2FIX(0));
}
rb_hash_aset(argv[argc - 1], rb_str_new2("set_flags"), INT2FIX(DB_RENUMBER));
@@ -697,8 +697,8 @@
if (argc && TYPE(argv[argc - 1]) == T_HASH) {
VALUE f = argv[argc - 1];
- if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
- (g = rb_hash_aref(f, rb_str_new2("flags"))) != RHASH(f)->ifnone) {
+ if ((g = rb_hash_aref(f, rb_intern("flags"))) != rb_hash_ifnone(f) ||
+ (g = rb_hash_aref(f, rb_str_new2("flags"))) != rb_hash_ifnone(f)) {
flags = NUM2INT(g);
}
argc--;
+20 -2
View File
@@ -1,5 +1,5 @@
--- ./extconf.rb.orig 2011-04-06 19:35:39.000000000 +0000
+++ ./extconf.rb 2014-01-03 01:45:56.334209519 +0000
--- extconf.rb.orig 2011-04-06 19:35:39.000000000 +0000
+++ extconf.rb 2015-01-22 14:56:21.000000000 +0000
@@ -50,7 +50,7 @@
rdoc: docs/doc/index.html
@@ -9,3 +9,21 @@
ri:
\t@-(rdoc -r docs/*rb)
@@ -67,7 +67,7 @@
Dir.foreach('tests') do |x|
next if /^\./ =~ x || /(_\.rb|~)$/ =~ x
next if FileTest.directory?(x)
- make.print "\t-#{CONFIG['RUBY_INSTALL_NAME']} tests/#{x}\n"
+ make.print "\t-#{RbConfig::CONFIG['ruby_install_name']} tests/#{x}\n"
end
ensure
make.close
@@ -76,7 +76,7 @@
subdirs.each do |subdir|
STDERR.puts("#{$0}: Entering directory `#{subdir}'")
Dir.chdir(subdir)
- system("#{CONFIG['RUBY_INSTALL_NAME']} extconf.rb " + ARGV.join(" "))
+ system("#{RbConfig::CONFIG['ruby_install_name']} extconf.rb " + ARGV.join(" "))
Dir.chdir("..")
STDERR.puts("#{$0}: Leaving directory `#{subdir}'")
end
@@ -0,0 +1,23 @@
--- src/extconf.rb.orig 2015-01-22 16:09:31.000000000 +0000
+++ src/extconf.rb 2015-01-22 16:09:34.000000000 +0000
@@ -36,16 +36,16 @@
if unknown = enable_config("unknown")
libs = if CONFIG.key?("LIBRUBYARG_STATIC")
- Config::expand(CONFIG["LIBRUBYARG_STATIC"].dup).sub(/^-l/, '')
+ RbConfig::expand(CONFIG["LIBRUBYARG_STATIC"].dup).sub(/^-l/, '')
else
- Config::expand(CONFIG["LIBRUBYARG"].dup).sub(/lib([^.]*).*/, '\\1')
+ RbConfig::expand(CONFIG["LIBRUBYARG"].dup).sub(/lib([^.]*).*/, '\\1')
end
unknown = find_library(libs, "ruby_init",
- Config::expand(CONFIG["archdir"].dup))
+ RbConfig::expand(CONFIG["archdir"].dup))
end
inc_dir, lib_dir = dir_config("db", "/usr/include", "/usr/lib")
-case Config::CONFIG["arch"]
+case RbConfig::CONFIG["arch"]
when /solaris2/
$DLDFLAGS ||= ""
$DLDFLAGS += " -R#{lib_dir}"