-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Description
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).
-
File
litecoin/doc/build-unix.md
tells that "Build requirements" includelibdb4-devel
andlibdb4-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. -
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). -
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]
- I'm not an expert in autotools and I failed to find a proper way to disable experimental features.
Seems like editing ofconfigure.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
- 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))