pmqs / BerkeleyDB

BerkeleyDB - Perl5 access to Berkeley DB version 2.x or greater
8 stars 4 forks source link

BerkeleyDB fails to build against perl-5.31.0 on FreeBSD-12 #2

Closed jkeenan closed 4 years ago

jkeenan commented 5 years ago

As part of CPAN-River-3000 testing, I recently attempted to install BerkeleyDB on FreeBSD-12 against perl-5.31.0 using cpanm as the installer. Build-time failure. Excerpt from cpanm build.log below.

[analysis] $ dumpjson PMQS.BerkeleyDB-0.61.log.json 
{
  author => "PMQS",
  dist => "BerkeleyDB",
  distname => "BerkeleyDB-0.61",
  distversion => 0.61,
  grade => "FAIL",
  prereqs => undef,
  test_output => [
    "Building and testing BerkeleyDB-0.61",
    "cp BerkeleyDB/Btree.pm blib/lib/BerkeleyDB/Btree.pm",
    "cp mkconsts.pl blib/lib/mkconsts.pl",
    "cp BerkeleyDB.pod blib/lib/BerkeleyDB.pod",
    "cp scan.pl blib/lib/scan.pl",
    "cp BerkeleyDB.pm blib/lib/BerkeleyDB.pm",
    "cp BerkeleyDB/Hash.pm blib/lib/BerkeleyDB/Hash.pm",
    "Running Mkbootstrap for BerkeleyDB ()",
    "chmod 644 \"BerkeleyDB.bs\"",
    "\"/usr/home/jkeenan/var/tad/testing/perl-5.31.0/bin/perl\" -MExtUtils::Command::MM -e 'cp_nonempty' -- BerkeleyDB.bs blib/arch/auto/BerkeleyDB/BerkeleyDB.bs 644",
    "\"/usr/home/jkeenan/var/tad/testing/perl-5.31.0/bin/perl\" \"/home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0/ExtUtils/xsubpp\" -noprototypes -typemap '/home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0/ExtUtils/typemap' -typemap '/usr/home/jkeenan/var/tad/testing/perl-5.31.0/.cpanm/work/1562787494.14114/BerkeleyDB-0.61/typemap'  BerkeleyDB.xs > BerkeleyDB.xsc",
    "Warning: Found a 'CODE' section which seems to be using 'RETVAL' but no 'OUTPUT' section. in BerkeleyDB.xs, line 5934",
    "Warning: Found a 'CODE' section which seems to be using 'RETVAL' but no 'OUTPUT' section. in BerkeleyDB.xs, line 5962",
    "mv BerkeleyDB.xsc BerkeleyDB.c",
    "cc -c  -Ilibraries/6.1.10/include  -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_FORTIFY_SOURCE=2 -O2 -pipe -fstack-protector -fno-strict-aliasing    -DVERSION=\\\"0.61\\\"  -DXS_VERSION=\\\"0.61\\\" -DPIC -fPIC \"-I/home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0/amd64-freebsd-thread-multi/CORE\"   BerkeleyDB.c",
    "BerkeleyDB.xs:82:2: error: db.h is from Berkeley DB 1.x - need at least Berkeley DB 2.6.4",
    "#error db.h is from Berkeley DB 1.x - need at least Berkeley DB 2.6.4",
    " ^",
    "BerkeleyDB.xs:270:2: error: unknown type name 'DB_ENV'",
    "        DB_ENV *        Env ;",
    "        ^",
    "BerkeleyDB.xs:305:9: error: unknown type name 'DB_INFO'",
    "        DB_INFO *       info ;",
    "        ^",
    "BerkeleyDB.xs:306:9: error: unknown type name 'DBC'",
    "        DBC *           cursor ;",
    "        ^",
    "BerkeleyDB.xs:307:2: error: type name requires a specifier or qualifier",
    "        DB_TXN *        txn ;",
    "        ^",
    "/usr/include/db.h:91:17: note: expanded from macro 'DB_TXN'",
    "#define DB_TXN          0x80000000      /* Do transactions. */",
    "                        ^",
    "BerkeleyDB.xs:307:2: error: expected member name or ';' after declaration specifiers",
    "/usr/include/db.h:91:17: note: expanded from macro 'DB_TXN'",
    "#define DB_TXN          0x80000000      /* Do transactions. */",
    "                        ^",
    "BerkeleyDB.xs:306:26: error: expected ';' at end of declaration list",
    "        DBC *           cursor ;",
    "                                ^",
    "                                ;",
    "BerkeleyDB.xs:348:9: error: unknown type name 'DB_INFO'",
    "        DB_INFO *       info ;",
    "        ^",
    "BerkeleyDB.xs:349:9: error: unknown type name 'DBC'",
    "        DBC *           cursor ;",
    "        ^",
    "BerkeleyDB.xs:350:2: error: type name requires a specifier or qualifier",
    "        DB_TXN *        txn ;",
    "        ^",
    "/usr/include/db.h:91:17: note: expanded from macro 'DB_TXN'",
    "#define DB_TXN          0x80000000      /* Do transactions. */",
    "                        ^",
    "BerkeleyDB.xs:350:2: error: expected member name or ';' after declaration specifiers",
    "/usr/include/db.h:91:17: note: expanded from macro 'DB_TXN'",
    "#define DB_TXN          0x80000000      /* Do transactions. */",
    "                        ^",
    "BerkeleyDB.xs:349:26: error: expected ';' at end of declaration list",
    "        DBC *           cursor ;",
    "                                ^",
    "                                ;",
    "BerkeleyDB.xs:394:2: error: type name requires a specifier or qualifier",
    "        DB_TXN *        txn ;",
    "        ^",
    "/usr/include/db.h:91:17: note: expanded from macro 'DB_TXN'",
    "#define DB_TXN          0x80000000      /* Do transactions. */",
    "                        ^",
    "BerkeleyDB.xs:394:2: error: expected member name or ';' after declaration specifiers",
    "/usr/include/db.h:91:17: note: expanded from macro 'DB_TXN'",
    "#define DB_TXN          0x80000000      /* Do transactions. */",
    "                        ^",
    "BerkeleyDB.xs:393:15: error: expected ';' at end of declaration list",
    "        int             Status ;",
    "                                ^",
    "                                ;",
    "BerkeleyDB.xs:736:5: error: unknown type name 'db_recno_t'; did you mean 'recno_t'?",
    "    db_recno_t  x_Value; ",
    "    ^~~~~~~~~~",
    "    recno_t",
    "/usr/include/db.h:52:18: note: 'recno_t' declared here",
    "typedef uint32_t        recno_t;",
    "                        ^",
    "BerkeleyDB.xs:737:5: error: unknown type name 'db_recno_t'; did you mean 'recno_t'?",
    "    db_recno_t  x_zero;",
    "    ^~~~~~~~~~",
    "    recno_t",
    "/usr/include/db.h:52:18: note: 'recno_t' declared here",
    "typedef uint32_t        recno_t;",
    "                        ^",
    "BerkeleyDB.xs:877:10: warning: implicit declaration of function 'txn_abort' is invalid in C99 [-Wimplicit-function-declaration]",
    "                txn_abort(tid->txn);",
    "                ^",
    "BerkeleyDB.xs:877:25: error: no member named 'txn' in 'struct (anonymous at BerkeleyDB.xs:392:9)'",
    "                txn_abort(tid->txn);",
    "                          ~~~  ^",
    "BerkeleyDB.xs:949:36: error: too many arguments to function call, expected 1, have 2",
    "                (db->dbp->close)(db->dbp, 0) ;",
    "                ~~~~~~~~~~~~~~~~          ^",
    "fatal error: too many errors emitted, stopping now [-ferror-limit=]",
    "1 warning and 20 errors generated.",
    "*** Error code 1",
    "",
    "Stop.",
    "make: stopped in /usr/home/jkeenan/var/tad/testing/perl-5.31.0/.cpanm/work/1562787494.14114/BerkeleyDB-0.61",
    "-> FAIL Installing BerkeleyDB failed. See /home/jkeenan/var/tad/testing/perl-5.31.0/.cpanm/work/1562787494.14114/build.log for details. Retry with --force to force install it.",
  ],
  via => "App::cpanminus::reporter 0.17 (1.7044)",
}
$ thisperl -V
Summary of my perl5 (revision 5 version 31 subversion 0) configuration:

  Platform:
    osname=freebsd
    osvers=12.0-release
    archname=amd64-freebsd-thread-multi
    uname='freebsd perl-reporter-07 12.0-release freebsd 12.0-release r341666 generic amd64 '
    config_args='-des -Dusedevel -Uversiononly -Dman1dir=none -Dman3dir=none -Duseithreads -Doptimize=-O2 -pipe -fstack-protector -fno-strict-aliasing -Dprefix=/home/jkeenan/var/tad/testing/perl-5.31.0'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=define
    usemultiplicity=define
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
    bincompat5005=undef
  Compiler:
    cc='cc'
    ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_FORTIFY_SOURCE=2'
    optimize='-O2 -pipe -fstack-protector -fno-strict-aliasing'
    cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
    ccversion=''
    gccversion='4.2.1 Compatible FreeBSD Clang 6.0.1 (tags/RELEASE_601/final 335540)'
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='cc'
    ldflags ='-pthread -Wl,-E  -fstack-protector-strong -L/usr/local/lib'
    libpth=/usr/lib /usr/local/lib /usr/lib/clang/6.0.1/lib /usr/lib
    libs=-lpthread -lgdbm -ldl -lm -lcrypt -lutil
    perllibs=-lpthread -ldl -lm -lcrypt -lutil
    libc=
    so=so
    useshrplib=false
    libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags=' '
    cccdlflags='-DPIC -fPIC'
    lddlflags='-shared  -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl): 
  Compile-time options:
    HAS_TIMES
    MULTIPLICITY
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_IMPLICIT_CONTEXT
    PERL_MALLOC_WRAP
    PERL_OP_PARENT
    PERL_PRESERVE_IVUV
    PERL_USE_DEVEL
    USE_64_BIT_ALL
    USE_64_BIT_INT
    USE_ITHREADS
    USE_LARGE_FILES
    USE_LOCALE
    USE_LOCALE_COLLATE
    USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC
    USE_LOCALE_TIME
    USE_PERLIO
    USE_PERL_ATOF
    USE_REENTRANT_API
    USE_THREAD_SAFE_LOCALE
  Built under freebsd
  Compiled at Jul 10 2019 10:35:51
  %ENV:
    PERL2DIR="/home/jkeenan/gitwork/perl2"
    PERL_WORKDIR="/home/jkeenan/gitwork/perl"
  @INC:
    /home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0/amd64-freebsd-thread-multi
    /home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0
    /home/jkeenan/var/tad/testing/perl-5.31.0/lib
    /home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0/amd64-freebsd-thread-multi
    /home/jkeenan/var/tad/testing/perl-5.31.0/lib/site_perl/5.31.0
    /home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0/amd64-freebsd-thread-multi
    /home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0

Can you investigate?

Thank you very much. Jim Keenan

pmqs commented 5 years ago

You don't meet the prerequisite for the version of the Berkeley DB library. Below is the problem.

    "cc -c  -Ilibraries/6.1.10/include  -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_FORTIFY_SOURCE=2 -O2 -pipe -fstack-protector -fno-strict-aliasing    -DVERSION=\\\"0.61\\\"  -DXS_VERSION=\\\"0.61\\\" -DPIC -fPIC \"-I/home/jkeenan/var/tad/testing/perl-5.31.0/lib/5.31.0/amd64-freebsd-thread-multi/CORE\"   BerkeleyDB.c",
    "BerkeleyDB.xs:82:2: error: db.h is from the Berkeley DB 1.x - need at least Berkeley DB 2.6.4",