Subject: Re: ===> db4 is not an acceptable Berkeley DB type for
To: Roland Illig <rillig@NetBSD.org>
From: thoran <thoran@fastmail.fm>
List: tech-pkg
Date: 11/15/2005 21:40:07
Hi Roland, 

The <pkg> in this instance is lang/ruby.  

First I had a look in the Makefile as you suggested, but there was no
reference to BDB_ACCEPTED.  So, I thought I'd try all the files in
lang/ruby: 

flower:ruby, thoran$ rgrep BDB_ACCEPTED
flower:ruby, thoran$ 

Nothing there.  Not knowing much about Makefiles I reasonably concluded
when inspecting the lang/ruby Makefile that .include means to include!,
so I grepped on all the file in lang/ruby for .include: 

flower:ruby, thoran$ rgrep '.include'
Makefile: .include "../../lang/ruby/rubyversion.mk"
Makefile: .include "../../mk/bsd.pkg.mk"
Makefile.common: .include "../../mk/pthread.buildlink3.mk"
Makefile.common: .include "replace.mk"
buildlink3.mk: .include "../../lang/ruby/rubyversion.mk"
modules.mk: .include "../../lang/ruby/rubyversion.mk"
modules.mk: .include "../../lang/ruby/buildlink3.mk"
modules.mk: .include "replace.mk"
rubyversion.mk: .include "../../mk/bsd.prefs.mk"
flower:ruby, thoran$ 

All roads lead to pkgsrc/mk, so I repeated the grep for BDB_ACCEPTED
there: 

flower:mk, thoran$ rgrep BDB_ACCEPTED
bdb.buildlink3.mk: # BDB_ACCEPTED is a package-settable list of Berkeley
DB implementations
bdb.buildlink3.mk: .  if defined(BDB_ACCEPTED) &&
empty(BDB_ACCEPTED:Mdb1)
bdb.buildlink3.mk: BDB_ACCEPTED?=       ${_BDB_PKGS}
bdb.buildlink3.mk: _BDB_ACCEPTED=               ${BDB_ACCEPTED}
bdb.buildlink3.mk: .  if !empty(_BDB_ACCEPTED:M${_BDB_TYPE})
flower:mk, thoran$ 

Ah hah!  bdb.buildlink3.mk is promising...  I remember seeing a
reference to this in one of the few web-based search results for that
error.  I not also that there is a reference to a BDB_TYPE there, so I
have a look in bdb.buildlink3.mk for the context: 

flower:mk, thoran$ cat -n bdb.buildlink3.mk | grep BDB_ACCEPTED 
    22  # BDB_ACCEPTED is a package-settable list of Berkeley DB
    implementations
    42  .  if defined(BDB_ACCEPTED) && empty(BDB_ACCEPTED:Mdb1)
    54  BDB_ACCEPTED?=  ${_BDB_PKGS}
    72  _BDB_ACCEPTED=          ${BDB_ACCEPTED}
    82  .  if !empty(_BDB_ACCEPTED:M${_BDB_TYPE})
flower:mk, thoran$ vi bdb.buildlink3.mk

And find amongst other things: 

.  if !defined(_BDB_TYPE)
.    if !empty(USE_DB185:M[yY][eE][sS])
_BDB_TYPE=      ${_BDB185_DEFAULT}
.    else
_BDB_TYPE=      ${_BDB_DEFAULT}
.    endif
.  endif

.  if !empty(_BDB_ACCEPTED:M${_BDB_TYPE})
BDB_TYPE=       ${_BDB_TYPE}
.  else
BDB_TYPE=       none
.  endif

So, then I figured I'd have a hunt around for BDB_TYPE in lang/ruby,
since *that* may have been defined?: 

flower:ruby, thoran$ rgrep BDB_TYPE
flower:ruby, thoran$ 

Nothing again.  

I'm supposing that I merely need to define something as being =db3 or
something similar to this and that that might fix it.  I tried various
incantations of the sort in the lang/ruby Makefile but that didn't do
any good.  

Suggestions please...  

Sincerely, 


thoran

P.S. This is for Debian and UNPRIVILEGED, or should I stop repeating
this because it is irrelevant?