Skip to content

Bitcoin fails to build on OpenBSD 6.2 #12413

@grim-trigger

Description

@grim-trigger

gmake fails to compile bitcoin from source for commits 8470e64 or newer on OpenBSD 6.2.

Expected successful gmake exit.

gmake exits with 3 errors:

3 errors generated.
gmake[2]: *** [Makefile:6149: libbitcoin_util_a-util.o] Error 1
gmake[2]: Leaving directory '/home/bitcoin/bitcoin/src'
gmake[1]: *** [Makefile:9417: all-recursive] Error 1
gmake[1]: Leaving directory '/home/bitcoin/bitcoin/src'
gmake: *** [Makefile:745: all-recursive] Error 1

Full output is given below.

This error always occurs when following the instructions in /doc/build-openbsd.md using bitcoin sources from commits 8470e64 and newer.

However, when compiling bitcoin source using commit 7f81250 on the same system, gmake successfully completes.

This error occurs using bitcoin sources from commits 8470e64 and newer.

OpenBSD 6.2 amd64

gmake-4.2.1
autoconf-2.69.p2
automake-1.15.1
boost-1.58.0p8

Bitcoin source information for the attached output:

commit fe53d5f3636aed064823bc220d828c7ff08d1d52 (HEAD -> master, origin/master, origin/HEAD)
Merge: 948c29cc0 464015f6f
Author: MarcoFalke <falke.marco@gmail.com>
Date:   Sat Feb 10 09:47:21 2018 -0500

Configured using:

./configure --with-gui=no CC=cc CXX=c++ \
    BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" \
    BDB_CFLAGS="-I${BDB_PREFIX}/include"
Options used to compile and link:
  with wallet   = yes
  with gui / qt = no
  with zmq      = no
  with test     = yes
  with bench    = yes
  with upnp     = auto
  use asm       = yes
  debug enabled = no
  werror        = no

  target os     = 
  build os      = 

  CC            = cc
  CFLAGS        = -g -O2
  CPPFLAGS      =  -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS
  CXX           = c++ -std=c++11
  CXXFLAGS      = -g -O2 -Wall -Wextra -Wformat -Wvla -Wformat-security -Wthread-safety-analysis -Wno-unused-parameter -Wno-self-assign -Wno-unused-local-typedef -Wno-deprecated-register -Wno-implicit-fallthrough
  LDFLAGS       = 
  ARFLAGS       = cr

gmake output:

$ Making all in src
gmake[1]: Entering directory '/home/bitcoin/bitcoin/src'
gmake[2]: Entering directory '/home/bitcoin/bitcoin/src'
  CXX      crypto/libbitcoinconsensus_la-aes.lo
  CXX      crypto/libbitcoinconsensus_la-chacha20.lo
  CXX      crypto/libbitcoinconsensus_la-hmac_sha256.lo
  CXX      crypto/libbitcoinconsensus_la-hmac_sha512.lo
  CXX      crypto/libbitcoinconsensus_la-ripemd160.lo
  CXX      crypto/libbitcoinconsensus_la-sha1.lo
  CXX      crypto/libbitcoinconsensus_la-sha256.lo
  CXX      crypto/libbitcoinconsensus_la-sha512.lo
  CXX      crypto/libbitcoinconsensus_la-sha256_sse4.lo
  CXX      libbitcoinconsensus_la-arith_uint256.lo
  CXX      consensus/libbitcoinconsensus_la-merkle.lo
  CXX      libbitcoinconsensus_la-hash.lo
  CXX      primitives/libbitcoinconsensus_la-block.lo
  CXX      primitives/libbitcoinconsensus_la-transaction.lo
  CXX      libbitcoinconsensus_la-pubkey.lo
  CXX      script/libbitcoinconsensus_la-bitcoinconsensus.lo
  CXX      script/libbitcoinconsensus_la-interpreter.lo
  CXX      script/libbitcoinconsensus_la-script.lo
  CXX      script/libbitcoinconsensus_la-script_error.lo
  CXX      libbitcoinconsensus_la-uint256.lo
  CXX      libbitcoinconsensus_la-utilstrencodings.lo
gmake[3]: Entering directory '/home/bitcoin/bitcoin/src/secp256k1'
gcc -I. -g -O2 -Wall -Wextra -Wno-unused-function -c src/gen_context.c -o gen_context.o
gcc gen_context.o -o gen_context
./gen_context
  CC       src/libsecp256k1_la-secp256k1.lo
  CCLD     libsecp256k1.la
gmake[3]: Leaving directory '/home/bitcoin/bitcoin/src/secp256k1'
  CXXLD    libbitcoinconsensus.la

*** Warning: This system can not link to static lib archive secp256k1/libsecp256k1.la.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.
  CXX      bitcoind-bitcoind.o
  CXX      libbitcoin_server_a-addrdb.o
  CXX      libbitcoin_server_a-addrman.o
  CXX      libbitcoin_server_a-bloom.o
  CXX      libbitcoin_server_a-blockencodings.o
  CXX      libbitcoin_server_a-chain.o
  CXX      libbitcoin_server_a-checkpoints.o
  CXX      consensus/libbitcoin_server_a-tx_verify.o
  CXX      libbitcoin_server_a-httprpc.o
  CXX      libbitcoin_server_a-httpserver.o
  CXX      libbitcoin_server_a-init.o
  CXX      libbitcoin_server_a-dbwrapper.o
  CXX      libbitcoin_server_a-merkleblock.o
  CXX      libbitcoin_server_a-miner.o
  CXX      libbitcoin_server_a-net.o
  CXX      libbitcoin_server_a-net_processing.o
  CXX      libbitcoin_server_a-noui.o
  CXX      policy/libbitcoin_server_a-fees.o
  CXX      policy/libbitcoin_server_a-policy.o
  CXX      policy/libbitcoin_server_a-rbf.o
  CXX      libbitcoin_server_a-pow.o
  CXX      libbitcoin_server_a-rest.o
  CXX      rpc/libbitcoin_server_a-blockchain.o
  CXX      rpc/libbitcoin_server_a-mining.o
  CXX      rpc/libbitcoin_server_a-misc.o
  CXX      rpc/libbitcoin_server_a-net.o
  CXX      rpc/libbitcoin_server_a-rawtransaction.o
  CXX      rpc/libbitcoin_server_a-safemode.o
  CXX      rpc/libbitcoin_server_a-server.o
  CXX      script/libbitcoin_server_a-sigcache.o
  CXX      script/libbitcoin_server_a-ismine.o
  CXX      libbitcoin_server_a-timedata.o
  CXX      libbitcoin_server_a-torcontrol.o
  CXX      libbitcoin_server_a-txdb.o
  CXX      libbitcoin_server_a-txmempool.o
  CXX      libbitcoin_server_a-ui_interface.o
  CXX      libbitcoin_server_a-validation.o
  CXX      libbitcoin_server_a-validationinterface.o
  CXX      libbitcoin_server_a-versionbits.o
  AR       libbitcoin_server.a
  CXX      libbitcoin_common_a-base58.o
  CXX      libbitcoin_common_a-bech32.o
  CXX      libbitcoin_common_a-chainparams.o
  CXX      libbitcoin_common_a-coins.o
  CXX      libbitcoin_common_a-compressor.o
  CXX      libbitcoin_common_a-core_read.o
  CXX      libbitcoin_common_a-core_write.o
  CXX      libbitcoin_common_a-key.o
key.cpp:51:23: warning: comparison of integers of different signs: 'long' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
    if (end - privkey < lenb) {
        ~~~~~~~~~~~~~ ^ ~~~~
key.cpp:57:23: warning: comparison of integers of different signs: 'long' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
    if (end - privkey < len) {
        ~~~~~~~~~~~~~ ^ ~~~
key.cpp:71:37: warning: comparison of integers of different signs: 'long' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
    if (oslen > 32 || end - privkey < oslen) {
                      ~~~~~~~~~~~~~ ^ ~~~~~
3 warnings generated.
  CXX      libbitcoin_common_a-keystore.o
  CXX      libbitcoin_common_a-netaddress.o
  CXX      libbitcoin_common_a-netbase.o
  CXX      policy/libbitcoin_common_a-feerate.o
  CXX      libbitcoin_common_a-protocol.o
  CXX      libbitcoin_common_a-scheduler.o
  CXX      script/libbitcoin_common_a-sign.o
  CXX      script/libbitcoin_common_a-standard.o
  CXX      libbitcoin_common_a-warnings.o
  AR       libbitcoin_common.a
gmake[3]: Entering directory '/home/bitcoin/bitcoin/src/univalue'
  CXX      lib/libunivalue_la-univalue.lo
  CXX      lib/libunivalue_la-univalue_get.lo
  CXX      lib/libunivalue_la-univalue_read.lo
  CXX      lib/libunivalue_la-univalue_write.lo
  CXXLD    libunivalue.la
gmake[3]: Leaving directory '/home/bitcoin/bitcoin/src/univalue'
  CXX      support/libbitcoin_util_a-lockedpool.o
  CXX      libbitcoin_util_a-chainparamsbase.o
  CXX      libbitcoin_util_a-clientversion.o
  CXX      compat/libbitcoin_util_a-glibc_sanity.o
  CXX      compat/libbitcoin_util_a-glibcxx_sanity.o
  CXX      compat/libbitcoin_util_a-strnlen.o
  CXX      libbitcoin_util_a-fs.o
  CXX      libbitcoin_util_a-random.o
  CXX      rpc/libbitcoin_util_a-protocol.o
  CXX      rpc/libbitcoin_util_a-util.o
  CXX      support/libbitcoin_util_a-cleanse.o
  CXX      libbitcoin_util_a-sync.o
  CXX      libbitcoin_util_a-threadinterrupt.o
  CXX      libbitcoin_util_a-util.o
In file included from util.cpp:6:
In file included from ./util.h:18:
In file included from ./fs.h:9:
In file included from /usr/include/c++/v1/string:442:
In file included from /usr/include/c++/v1/algorithm:633:
/usr/include/c++/v1/utility:330:5: error: the parameter for this explicitly-defaulted copy constructor is const, but a member or base requires it to be non-const
    pair(pair const&) = default;
    ^
util.cpp:384:121: note: in instantiation of template class 'std::__1::pair<const std::__1::basic_string<char>, boost::interprocess::file_lock>' requested here
        boost::interprocess::file_lock& lock = locks.emplace(pathLockFile.string(), pathLockFile.string().c_str()).first->second;
                                                                                                                        ^
In file included from util.cpp:6:
In file included from ./util.h:18:
In file included from ./fs.h:9:
In file included from /usr/include/c++/v1/string:442:
In file included from /usr/include/c++/v1/algorithm:633:
/usr/include/c++/v1/utility:330:5: error: the parameter for this explicitly-defaulted copy constructor is const, but a member or base requires it to be non-const
    pair(pair const&) = default;
    ^
/usr/include/c++/v1/map:627:21: note: in instantiation of template class 'std::__1::pair<std::__1::basic_string<char>, boost::interprocess::file_lock>' requested here
    __nc_value_type __nc;
                    ^
/usr/include/c++/v1/__tree:754:23: note: in instantiation of template class 'std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>' requested here
    __node_value_type __value_;
                      ^
/usr/include/c++/v1/__tree:1789:49: note: in instantiation of template class 'std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, void *>' requested here
        destroy(static_cast<__node_pointer>(__nd->__left_));
                                                ^
/usr/include/c++/v1/__tree:1780:5: note: in instantiation of member function 'std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>,
      std::__1::__map_value_compare<std::__1::basic_string<char>, std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, std::__1::less<std::__1::basic_string<char> >, true>,
      std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock> > >::destroy' requested here
    destroy(__root());
    ^
/usr/include/c++/v1/map:738:78: note: in instantiation of member function 'std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>,
      std::__1::__map_value_compare<std::__1::basic_string<char>, std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, std::__1::less<std::__1::basic_string<char> >, true>,
      std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock> > >::~__tree' requested here
    template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
                                                                             ^
In file included from util.cpp:6:
In file included from ./util.h:18:
In file included from ./fs.h:9:
In file included from /usr/include/c++/v1/string:442:
In file included from /usr/include/c++/v1/algorithm:633:
/usr/include/c++/v1/utility:298:23: error: no matching constructor for initialization of 'boost::interprocess::file_lock'
        : first(__x), second(__y) {}
                      ^      ~~~
/usr/include/c++/v1/memory:1747:31: note: in instantiation of member function 'std::__1::pair<const std::__1::basic_string<char>, boost::interprocess::file_lock>::pair' requested here
            ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
                              ^
/usr/include/c++/v1/memory:1658:18: note: in instantiation of function template specialization 'std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>,
      boost::interprocess::file_lock>, void *> >::construct<std::__1::pair<const std::__1::basic_string<char>, boost::interprocess::file_lock>, const std::__1::basic_string<char> &, const char *>' requested here
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/usr/include/c++/v1/memory:1504:14: note: in instantiation of function template specialization
      'std::__1::allocator_traits<std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, void *> > >::__construct<std::__1::pair<const
      std::__1::basic_string<char>, boost::interprocess::file_lock>, const std::__1::basic_string<char> &, const char *>' requested here
            {__construct(__has_construct<allocator_type, _Tp*, _Args...>(),
             ^
/usr/include/c++/v1/__tree:2149:20: note: in instantiation of function template specialization
      'std::__1::allocator_traits<std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, void *> > >::construct<std::__1::pair<const
      std::__1::basic_string<char>, boost::interprocess::file_lock>, const std::__1::basic_string<char> &, const char *>' requested here
    __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), _VSTD::forward<_Args>(__args)...);
                   ^
/usr/include/c++/v1/__tree:2094:29: note: in instantiation of function template specialization 'std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>,
      std::__1::__map_value_compare<std::__1::basic_string<char>, std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, std::__1::less<std::__1::basic_string<char> >, true>,
      std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock> > >::__construct_node<const std::__1::basic_string<char> &, const char *>' requested here
        __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
                            ^
/usr/include/c++/v1/__tree:1156:16: note: in instantiation of function template specialization 'std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>,
      std::__1::__map_value_compare<std::__1::basic_string<char>, std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, std::__1::less<std::__1::basic_string<char> >, true>,
      std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock> > >::__emplace_unique_key_args<std::__1::basic_string<char>, const std::__1::basic_string<char> &,
      const char *>' requested here
        return __emplace_unique_key_args(__f, _VSTD::forward<_First>(__f),
               ^
/usr/include/c++/v1/map:1047:24: note: in instantiation of function template specialization 'std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>,
      std::__1::__map_value_compare<std::__1::basic_string<char>, std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock>, std::__1::less<std::__1::basic_string<char> >, true>,
      std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char>, boost::interprocess::file_lock> > >::__emplace_unique<const std::__1::basic_string<char> &, const char *>' requested here
        return __tree_.__emplace_unique(_VSTD::forward<_Args>(__args)...);
                       ^
util.cpp:384:54: note: in instantiation of function template specialization 'std::__1::map<std::__1::basic_string<char>, boost::interprocess::file_lock, std::__1::less<std::__1::basic_string<char> >,
      std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::interprocess::file_lock> > >::emplace<const std::__1::basic_string<char> &, const char *>' requested here
        boost::interprocess::file_lock& lock = locks.emplace(pathLockFile.string(), pathLockFile.string().c_str()).first->second;
                                                     ^
/usr/local/include/boost/interprocess/sync/file_lock.hpp:48:35: note: candidate constructor not viable: 1st argument ('const boost::interprocess::file_lock') would lose const qualifier
   BOOST_MOVABLE_BUT_NOT_COPYABLE(file_lock)
                                  ^
/usr/local/include/boost/move/core.hpp:216:46: note: expanded from macro 'BOOST_MOVABLE_BUT_NOT_COPYABLE'
      BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN(TYPE)\
                                             ^
/usr/local/include/boost/move/core.hpp:35:7: note: expanded from macro 'BOOST_MOVE_IMPL_NO_COPY_CTOR_OR_ASSIGN'
      TYPE(TYPE &);\
      ^
/usr/local/include/boost/interprocess/sync/file_lock.hpp:65:4: note: candidate constructor not viable: no known conversion from 'const boost::interprocess::file_lock' to '::boost::rv<file_lock> &' for 1st
      argument
   file_lock(BOOST_RV_REF(file_lock) moved)
   ^
/usr/local/include/boost/interprocess/sync/file_lock.hpp:153:19: note: candidate constructor not viable: no known conversion from 'const boost::interprocess::file_lock' to 'const char *' for 1st argument
inline file_lock::file_lock(const char *name)
                  ^
/usr/local/include/boost/interprocess/sync/file_lock.hpp:54:4: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
   file_lock()
   ^
3 errors generated.
gmake[2]: *** [Makefile:6149: libbitcoin_util_a-util.o] Error 1
gmake[2]: Leaving directory '/home/bitcoin/bitcoin/src'
gmake[1]: *** [Makefile:9417: all-recursive] Error 1
gmake[1]: Leaving directory '/home/bitcoin/bitcoin/src'
gmake: *** [Makefile:745: all-recursive] Error 1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions