Skip to content

libdb dependency version seems outdated #773

@ohhai

Description

@ohhai

Build environment: Linux Fedora 35 x64, and this git repo on tag v0.21.1.
My intention is to create LTC wallet using stable and more reliable features (disabling experimental options).

  1. File litecoin/doc/build-unix.md tells that "Build requirements" include libdb4-devel and libdb4-cxx-devel.
    Last Fedora version with libdb4* package is Fedora 32.
    Fedora versions 33+ don't have this package (v4) at all — only libdb 5.3+ is present.
    As far as I see from configure: error: libdb_cxx headers missing, Litecoin Core requires this library for wallet functionality (--disable-wallet to disable wallet functionality) #656, Ubuntu 20.04+ is same in this terms.

  2. It is possible to build the current project on Fedora 35 with libdb-cxx-devel-5.3.28-50.fc35 and --with-incompatible-bdb.
    However, it's not clear what results of this incompatibility are possible. It generates anxiety for such an important functions (financial).

  3. I see configure: WARNING: Found Berkeley DB other than 4.8; wallets opened by this build will not be portable!
    It's still not clear for me what cases would be broken. Does it mean the data files generated by wallet will be not portable across another versions of this wallet build on Linux? Or what exact things I'm losing with use of --with-incompatible-bdb ?
    It would be great to have that documented.

[it might be better to create another issue for the following]

  1. I'm not an expert in autotools and I failed to find a proper way to disable experimental features.
    Seems like editing of configure.ac (it has them hardcoded) is the only way:
$ git b
* (HEAD detached at v0.21.1)
  master
$ testme()
{
    export enable_module_schnorrsig=no
    export enable_module_extrakeys=no
    export disable_module_schnorrsig
    export disable_module_extrakeys

    git co -f v0.21.1
    git clean -fxd &>/dev/null
    ./autogen.sh &>/dev/null &&
    ./configure --with-incompatible-bdb --enable-multiprocess=no --enable-experimental=no --disable-experimental --enable-module-extrakeys=no --enable-module-schnorrsig=no --disable-module-extrakeys --disable-module-schnorrsig &> /tmp/doesnotdisablemodules.log

    sed -i 's/ --enable-module-schnorrsig --enable-experimental//' configure.ac
    git clean -fxd &>/dev/null
    ./autogen.sh &>/dev/null &&
    ./configure --with-incompatible-bdb --enable-multiprocess=no --enable-experimental=no --disable-experimental --enable-module-extrakeys=no --enable-module-schnorrsig=no --disable-module-extrakeys --disable-module-schnorrsig &> /tmp/does_disablemodules.log

    grep -FA3 'WARNING: experimental build' /tmp/do*.log
}
$ testme
HEAD is now at 02119ec80 Merge pull request #772 from DavidBurkett/0.21
/tmp/doesnotdisablemodules.log:configure: WARNING: experimental build
/tmp/doesnotdisablemodules.log-configure: Experimental features do not have stable APIs or properties, and may not be safe for production use.
/tmp/doesnotdisablemodules.log-configure: Building extrakeys module: yes
/tmp/doesnotdisablemodules.log-configure: Building schnorrsig module: yes
  1. I wanted to run all tests and make check works fine — but this does not:

litecoin/test/README.md:

Run all possible tests with

test/functional/test_runner.py --extended

My experience:

$ test/functional/test_runner.py --extended
Temporary test directory at /tmp/test_runner_Ł_🏃_20220129_215434
Running Unit Tests for Test Framework Modules
E
======================================================================
ERROR: address (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: address
Traceback (most recent call last):
  File "/usr/lib64/python3.10/unittest/loader.py", line 154, in loadTestsFromName
    module = __import__(module_name)
  File "/run/media/andrew/ssd_e4/git/litecoin/test/functional/test_framework/address.py", line 13, in <module>
    from .script import hash256, hash160, sha256, CScript, OP_0
  File "/run/media/andrew/ssd_e4/git/litecoin/test/functional/test_framework/script.py", line 18, in <module>
    from .messages import (
  File "/run/media/andrew/ssd_e4/git/litecoin/test/functional/test_framework/messages.py", line 31, in <module>
    import litecoin_scrypt
ModuleNotFoundError: No module named 'litecoin_scrypt'


----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)
Early exiting after failure in TestFramework unit tests

$ find -name \*litecoin_scrypt\* | wc 
      0       0       0

$ grep -r litecoin_scrypt .
grep: ./test/functional/test_framework/__pycache__/messages.cpython-310.pyc: binary file matches
./test/functional/test_framework/messages.py:import litecoin_scrypt
./test/functional/test_framework/messages.py:            self.scrypt256 = uint256_from_str(litecoin_scrypt.getPoWHash(r))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions