On Thu, Aug 12, 2010 at 13:55:56 -0700, Daniel Schepler wrote: > I just did a bit of debugging, and it looks like the issue may be that > ruby1.9.1-dev no longer provides STR2CSTR: > > ... > r...@frobozz:/tmp/buildd/qdbm-1.8.77/ruby19/depot# LD_LIBRARY_PATH=.:..:../.. > ldd -r mod_depot.so > undefined symbol: STR2CSTR (./mod_depot.so) > linux-vdso.so.1 => (0x00007fff9e9bf000) > libruby-1.9.1.so.1.9 => /usr/lib/libruby-1.9.1.so.1.9 > (0x00007f9295e72000) > libqdbm.so.14 => ../../libqdbm.so.14 (0x00007f9295c22000) > libz.so.1 => /usr/lib/libz.so.1 (0x00007f9295a0a000) > libpthread.so.0 => /lib/libpthread.so.0 (0x00007f92957ee000) > libc.so.6 => /lib/libc.so.6 (0x00007f929548d000) > librt.so.1 => /lib/librt.so.1 (0x00007f9295284000) > libdl.so.2 => /lib/libdl.so.2 (0x00007f9295080000) > libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007f9294e49000) > libm.so.6 => /lib/libm.so.6 (0x00007f9294bc6000) > /lib64/ld-linux-x86-64.so.2 (0x00007f9296470000) > The attached patch fixes that, but that's not enough to fix the build unfortunately. The next problem is that ruby1.9.1 doesn't look for mod_depot.so in the right place; changing require 'mod_depot' to require './mod_depot' in ruby/depot/lib/depot.rb makes that work. It then fails its test with: rbdptest:281:in `gsub!': can't modify frozen string (RuntimeError) from rbdptest:281:in `<main>'
Cheers, Julien
Index: qdbm-1.8.77/ruby/villa/mod_villa.c =================================================================== --- qdbm-1.8.77.orig/ruby/villa/mod_villa.c +++ qdbm-1.8.77/ruby/villa/mod_villa.c @@ -309,7 +309,7 @@ int index, omode, cmode; VLCFUNC cmp; if((index = getnewindex()) == -1) myerror(DP_EMISC); - name = STR2CSTR(vname); + name = StringValuePtr(vname); FIXNUM_P(vomode); omode = FIX2INT(vomode); FIXNUM_P(vcmode); @@ -357,9 +357,9 @@ int index, ksiz, vsiz, dmode; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); - vbuf = STR2CSTR(vval); + vbuf = StringValuePtr(vval); vsiz = RSTRING_LEN(vval); FIXNUM_P(vdmode); dmode = FIX2INT(vdmode); @@ -378,7 +378,7 @@ int index, ksiz; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); villa = vltable[index]; if(!vlout(villa, kbuf, ksiz)){ @@ -396,7 +396,7 @@ VALUE vval; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); villa = vltable[index]; if(!(vbuf = vlget(villa, kbuf, ksiz, &vsiz))){ @@ -414,7 +414,7 @@ int index, ksiz, vsiz; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); villa = vltable[index]; if((vsiz = vlvsiz(villa, kbuf, ksiz)) == -1){ @@ -431,7 +431,7 @@ int index, ksiz, vnum; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); villa = vltable[index]; vnum = vlvnum(villa, kbuf, ksiz); @@ -502,7 +502,7 @@ VALUE vval; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); FIXNUM_P(vjmode); jmode = FIX2INT(vjmode); @@ -556,7 +556,7 @@ int index, vsiz, cpmode; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - vbuf = STR2CSTR(vval); + vbuf = StringValuePtr(vval); vsiz = RSTRING_LEN(vval); FIXNUM_P(vcpmode); cpmode = FIX2INT(vcpmode); Index: qdbm-1.8.77/ruby/curia/mod_curia.c =================================================================== --- qdbm-1.8.77.orig/ruby/curia/mod_curia.c +++ qdbm-1.8.77/ruby/curia/mod_curia.c @@ -238,7 +238,7 @@ const char *name; int index, omode, bnum, dnum; if((index = getnewindex()) == -1) myerror(DP_EMISC); - name = STR2CSTR(vname); + name = StringValuePtr(vname); FIXNUM_P(vomode); omode = FIX2INT(vomode); FIXNUM_P(vbnum); @@ -281,9 +281,9 @@ int index, ksiz, vsiz, dmode; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); - vbuf = STR2CSTR(vval); + vbuf = StringValuePtr(vval); vsiz = RSTRING_LEN(vval); FIXNUM_P(vdmode); dmode = FIX2INT(vdmode); @@ -302,7 +302,7 @@ int index, ksiz; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); curia = crtable[index]; if(!crout(curia, kbuf, ksiz)){ @@ -321,7 +321,7 @@ VALUE vval; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); FIXNUM_P(vstart); start = FIX2INT(vstart); @@ -344,7 +344,7 @@ int index, ksiz, vsiz; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); curia = crtable[index]; if((vsiz = crvsiz(curia, kbuf, ksiz)) == -1){ Index: qdbm-1.8.77/ruby/depot/mod_depot.c =================================================================== --- qdbm-1.8.77.orig/ruby/depot/mod_depot.c +++ qdbm-1.8.77/ruby/depot/mod_depot.c @@ -237,7 +237,7 @@ const char *name; int index, omode, bnum; if((index = getnewindex()) == -1) myerror(DP_EMISC); - name = STR2CSTR(vname); + name = StringValuePtr(vname); FIXNUM_P(vomode); omode = FIX2INT(vomode); FIXNUM_P(vbnum); @@ -278,9 +278,9 @@ int index, ksiz, vsiz, dmode; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); - vbuf = STR2CSTR(vval); + vbuf = StringValuePtr(vval); vsiz = RSTRING_LEN(vval); FIXNUM_P(vdmode); dmode = FIX2INT(vdmode); @@ -299,7 +299,7 @@ int index, ksiz; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); depot = dptable[index]; if(!dpout(depot, kbuf, ksiz)){ @@ -318,7 +318,7 @@ VALUE vval; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); FIXNUM_P(vstart); start = FIX2INT(vstart); @@ -341,7 +341,7 @@ int index, ksiz, vsiz; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); - kbuf = STR2CSTR(vkey); + kbuf = StringValuePtr(vkey); ksiz = RSTRING_LEN(vkey); depot = dptable[index]; if((vsiz = dpvsiz(depot, kbuf, ksiz)) == -1){
signature.asc
Description: Digital signature