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){

Attachment: signature.asc
Description: Digital signature

Reply via email to