Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
jkeenan opened this issue Jul 11, 2019 · 1 comment
Closed

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

jkeenan opened this issue Jul 11, 2019 · 1 comment
Assignees

Comments

@jkeenan
Copy link

jkeenan commented Jul 11, 2019

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
Copy link
Owner

pmqs commented Jul 11, 2019

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",

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Nov 2, 2019
0.63  21 July 2019

        * added 000preret.t
          Dump version info in "make test"

0.62  20 July 2019

        * default to /usr/local/BerkeleyDB
          fcc0ad8adf310f7c8cc65788806439f2f8c39f90

        * __heap_exist prototype needed for db 5.2 or better
          7fe4ad8d74190d7f41a816c79e5ccf044c02c7c9

        * t/joint.: Silence Valgrinf
          https://rt.cpan.org/Ticket/Display.html?id=125605
          40d03924570f8516efe4a05982f402e8ce569637

        * db_remove missing txn code
          https://rt.cpan.org/Ticket/Display.html?id=124979
          b91875a9f3f55bb779ad7a448c9fff0645d8a527

        * Fix test failure when TRACE is enabled
          bb80b7d0fb83643ccddd8243d4c6b6ab637428df

        * Added BERKELEYDB_DEFINE_TRACE variable to allow TRACE to be enabled
          from .travis file.
          bd9ebf5aa149172afab55d6ba6f27d77cf08d91a

        * Add test with BERKELEYDB_DEFINE_TRACE set to .travis
          000b1d8dffe542d6476fe78f218cc95534f1c1c3

        * my_db_strerror: Add missing dTHX declaration
          Merge pull request pmqs/BerkeleyDB#2
          4273345d8eff5f521788b3c5e71fb291bf46a646
          80ca9b77968ab84aaf8b546f2933d135202e16e0

        * create .appveyor.yml
          4e7b034ddbe76a7c2dcd189e1e0c935c1559aa2c

        * sync dbinfo from DB_File
          27b499fa9dbfca78adcc7a12ada43f0b05b6ece6

0.61  30 March 2019

        * Fix a couple of typos
          One's a copyright date out by 20 years.
          The other one breaks builds with 5.2 竕、 BDB < 6.2.
          Merge pull request pmqs/BerkeleyDB#1

0.60  30 March 2019
        * Moved source to github https://github.com/pmqs/BerkeleyDB

        * Add META_MERGE to Makefile.PL

        * Added meta-json.t & meta-yaml.t

0.58  23 January 2018

        * please expose set_lg_filemode
          [RT #124979]

0.57  23 January 2018

        * Updates for BDB 6.3

0.56  5 January 2016

        * Updates for BDB 6.2
@pmqs pmqs closed this as completed Mar 21, 2020
@pmqs pmqs self-assigned this Sep 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants