From: Ben Morrow on

Quoth Ruben Safir <ruben(a)mrbrklyn.com>:
> On Thu, 17 Dec 2009 18:44:12 +0000, Ruben Safir wrote:
>
> > It seems that the perl 5.10.1 won't compile on my system with is a new
> > opensuse 11.2
> >
> >
> > Its dieing on this line
> >
> > make[1]: Entering directory `/home/ruben/Downloads/perl-5.10.1/ext/
> > ODBM_File'
> > Skip ../../lib/ODBM_File.pm (unchanged) ../../miniperl "-I../../lib"
> > "-I../../lib" ../../lib/ExtUtils/xsubpp - noprototypes -typemap
> > ../../lib/ExtUtils/typemap -typemap typemap ODBM_File.xs > ODBM_File.xsc
> > && mv ODBM_File.xsc ODBM_File.c gcc -c -D_REENTRANT -D_GNU_SOURCE
> > -fno-strict-aliasing -pipe -fstack- protector -I/usr/local/include
> > -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.07\"
> > -DXS_VERSION=\"1.07\" -fPIC "-I../.." ODBM_File.c
> > ODBM_File.xs: In function 'XS_ODBM_File_DESTROY': ODBM_File.xs:124:
> > error: too few arguments to function 'dbmclose' make[1]: ***
> > [ODBM_File.o] Error 1
> > make[1]: Leaving directory `/home/ruben/Downloads/perl-5.10.1/ext/
> > ODBM_File'
> > Unsuccessful make(ext/ODBM_File): code=512 at make_ext.pl line 360.
> > make: *** [lib/auto/ODBM_File/ODBM_File.so] Error 2
>
> FWIW
> http://www.gossamer-threads.com/lists/perl/porters/234587
>
>
> No I need to figure out where I should put the instruction
>
> add -Dnoextensions=ODBM_File
>
> does that mean
>
> ./Configure -dDnoextensions=ODBM_File

./Configure -Dnoextensions=ODBM_File -des

is probably what you want (assuming you just used '-d' before).
Generally you always want '-des', unless you want an interactive
Configure.

Ben

From: Ben Morrow on

Quoth Ruben Safir <ruben(a)mrbrklyn.com>:
> On Thu, 17 Dec 2009 21:33:15 +0000, Ruben Safir wrote:
> > On Thu, 17 Dec 2009 20:43:51 +0000, Ben Morrow wrote:
> >> Quoth Ruben Safir <ruben(a)mrbrklyn.com>:
> >>> It seems that the perl 5.10.1 won't compile on my system with is a new
> >>> opensuse 11.2
> >>>
> >>> Its dieing on this line
> >>>
> >>> make[1]: Entering directory `/home/ruben/Downloads/perl-5.10.1/ext/
> >>> ODBM_File'
> >>> Skip ../../lib/ODBM_File.pm (unchanged) ../../miniperl "-I../../lib"
> >>> "-I../../lib" ../../lib/ExtUtils/xsubpp - noprototypes -typemap
> >>> ../../lib/ExtUtils/typemap -typemap typemap ODBM_File.xs >
> >>> ODBM_File.xsc && mv ODBM_File.xsc ODBM_File.c gcc -c -D_REENTRANT
> >>> -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack- protector
> >>> -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2
> >>> -DVERSION=\"1.07\" -DXS_VERSION=\"1.07\" -fPIC "-I../.." ODBM_File.c
> >>> ODBM_File.xs: In function 'XS_ODBM_File_DESTROY': ODBM_File.xs:124:
> >>> error: too few arguments to function 'dbmclose' make[1]: ***
> >>> [ODBM_File.o] Error 1
> >>> make[1]: Leaving directory `/home/ruben/Downloads/perl-5.10.1/ext/
> >>> ODBM_File'
> >>> Unsuccessful make(ext/ODBM_File): code=512 at make_ext.pl line 360.
> >>> make: *** [lib/auto/ODBM_File/ODBM_File.so] Error 2
> >>>
> >>>
> >>> in the ODBM module. Any clues on a fix?
> >>
> >> Well, if you don't need ODBM then just re-Configure perl and omit ODBM
> >> from the list of extensions to build. Make sure you start in a clean
> >> directory, or remove Policy.sh before starting.
> >>
> >> Otherwise: where are you getting your <dbm.h> from? dbmclose should be
> >> int dbmclose(void); if you have some GDBM passthrough with a different
> >> prototype that isn't going to work.
> >>
> >> You could also take this question to perl5-porters(a)perl.org, which is
> >> the list for discussing perl development (as opposed to Perl
> >> development).
> >
> > I don't know where the dbm is coming or going to.

The easiest way to find out is:

- rebuild with ODBM_File included, and wait for it to fail,
- cd to the ext/ODBM_File directory,
- type 'make ODBM_File.i',
- search through ODBM_File.i for 'dbm.h', and check the full path,
- find out where you got that file from (ask rpm, perhaps).

> Actually, I'm wondering if this might be why CPAN is failing. Does it
> use a Berkleys Database to keep track of modules?

ODBM is not the same as Berkely DB. The normal Perl interface to bdb is
DB_File, though there is a more complete BerkelyDB module on CPAN.

I seriously doubt CPAN.pm uses ODBM_File. If anything, it might use
dbmopen/AnyDBM_File, but since that will choose ODBM *last* of the
available options it's unlikely it would end up using it.

Unless you have some code that asks for ODBM_File specifically, I'd just
build a perl without it. I'm fairly certain all you'd end up with is a
compatibility layer from some other DBM library (probably GDBM) anyway.

Ben