Skip to content

Build fails on Ubuntu 22.04+ (GCC 11+, Boost 1.74) #137

@melvincarvalho

Description

@melvincarvalho

Summary

The Bitmark codebase fails to compile on Ubuntu 22.04 (and newer) due to:

  1. Berkeley DB 4.8 PPA no longer available
  2. GCC 13+ strict alignment requirements for Blake2
  3. Boost 1.74 / C++11 placeholder incompatibility

Fix size: 4 files, net +2 lines of code.

Environment

  • Target OS: Ubuntu 22.04 LTS (Jammy)
  • Compiler: GCC 11.4.0
  • Boost: 1.74
  • OpenSSL: 3.0.2

Problem 1: Berkeley DB 4.8 Unavailable

E: The repository 'https://ppa.launchpadcontent.net/bitcoin/bitcoin/ubuntu jammy Release' does not have a Release file

Fix: Build BDB 4.8 from source (Oracle still hosts the tarball).

Problem 2: Blake2 Alignment Errors

error: size of array element is not a multiple of its alignment
   ALIGN( 64 ) typedef struct __blake2s_state

Fix: Remove ALIGN(64) from structs inside #pragma pack(1), move parallel state structs outside the pack block.

Files: src/blake2.h, src/blake2s-ref.c

Problem 3: Boost Placeholder Incompatibility

error: no match for 'operator==' (operand types are 'const std::_Placeholder<1>' and 'const std::_Placeholder<1>')

Fix: Replace std::placeholders::_N with boost::placeholders::_N when using boost::bind.

Files: src/main.cpp, src/rpcserver.cpp

Proposed Fix

 src/blake2.h      |  8 +++++---
 src/blake2s-ref.c | 10 +++++-----
 src/main.cpp      | 20 ++++++++++----------
 src/rpcserver.cpp |  4 ++--
 4 files changed, 22 insertions(+), 20 deletions(-)

Build Verification

$ docker run --rm bitmark-builder /output/bitmarkd --version
Bitmark Core Daemon version v0.9.7.4-ffd840e-dirty-beta

Impact

  • Breaking changes: None
  • Consensus changes: None
  • Pure build-system compatibility fixes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions