Bitcoin full node and query server

Apr 8, 2024

View in context in the libbitcoin Slack #general mirror.

evoskuil17:30
libbitcoin-system is the place to start. Depends on where you are starting from. Maybe read through the /chain and /machine classes.
79 replies · Jose Robles, evoskuil · last Apr 11, 2024
Jose Robles18:13
ok i will start reading there
👍🏻 1
evoskuil18:17
Feel free to post questions/comments.
👍 1
Jose Robles09:43
ok i can't install... i'm on a Mac M2, i pass until make (i compiled bitcoin-core/secp256k1 first). the error it gives me is:
Jose Robles09:44
./include/bitcoin/system/intrinsics/haves.hpp:114:16: error: use of undeclared identifier 'get_cpu' return get_cpu(eax, ebx, ecx, edx, cpu1_0::leaf, cpu1_0::subleaf)
Jose Robles09:44
and several similar more
evoskuil19:40
deleted a post where I had you confused with another...
evoskuil19:40
You should build libsecp from our repo (for versioning).
evoskuil19:49
Core doesn't version it. This works for them because they clone the sources into the bitcoin repo. But for anyone who wants to use it as a proper library, versioning is required. They introduce unversioned breaking changes that otherwise break our builds.
evoskuil19:50
If you want to build from their repo you need to target the right commit.
Jose Robles19:52
oh ok makes sense
Jose Robles19:52
no particular reason to use their version so i will go for libbitcoin version
Jose Robles19:54
current master branch?
👍🏻 1
evoskuil19:54
Can you give me a few more of the error lines?
evoskuil19:54
I think I see what it is, but I'm not sure why we aren't seeing it in CI.
(edited)
evoskuil19:55
Is there an error on get_xcr?
Jose Robles20:00
oh, i compiled and installed sec256k from libbitcoin and now it says this ./configure: checking for libsecp256k1 >= 0.1.0.20... no configure: error: libsecp256k1 >= 0.1.0.20 is required but was not found.
evoskuil20:00
FYI install.sh will download and build everything, it's what we use in CI.
Jose Robles20:00
i think didn't show but i have to get to make again
Jose Robles20:00
oh
Jose Robles20:01
thanks
evoskuil20:02
The link defaults to /version3 (released) so if you want /master (👍🏻) get the install.sh from master.
(edited)
Jose Robles20:05
ok i should have read with a little more attention
evoskuil20:05
We don't modify libsecp to version it, we just place it into different branches. That's why you got an error from master.
Jose Robles20:05
ok
evoskuil20:05
/master/libbitcoin requires /version8/libsecp
(edited)
Jose Robles20:10
i'm trying now wiht install script
evoskuil20:10
What class of CPU does your Mac have?
evoskuil20:11
ARM right?
Jose Robles20:11
yeah
Jose Robles20:11
a M2
evoskuil20:11
That explains it. We don't CI on ARM.
Jose Robles20:12
oh
evoskuil20:12
It's a bug, and I can patch it right now. But you may have to work through more. That would be fine with me. We just haven't got that CI set up yet.
evoskuil20:13
That's our latest set of CI builds for libbitcoin-system.
(edited)
evoskuil20:13
autotools, cmake, clang, xcode, visual studio on X86 linux, macos, windows
evoskuil20:13
It's a lot 🙂
evoskuil20:14
We're planning on big endian and ARM also.
(edited)
evoskuil20:16
The particular bug is in the setup of compiler-specific optimizations. non-Intel/AMD had an issue where a call was execution excluded but not from compile.
Jose Robles20:17
ok
Jose Robles20:24
ok, so could be a good idea try from that branch?
evoskuil20:25
From that branch with the PR included. I'll merge it once it clears CI.
Jose Robles20:41
oh
Jose Robles20:41
In file included from ./boost/mpl/integral_c.hpp:32: ./boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for this enumeration type [-Wenum-constexpr-conversion] ./boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr) ^ 2 errors generated. ...failed updating 3 targets...
evoskuil20:42
merged
Jose Robles20:43
oh the CI takes a lot haha
evoskuil20:44
It's just 1 of 10 repos 🙂
evoskuil20:44
Did you build boost or rely on your local boost?
Jose Robles20:53
ok haha
Jose Robles20:53
i install with homebrew.... for what i see probably better to build myself
Jose Robles20:54
with clang 15
evoskuil21:09
Yes, boost is always a problem with conflicts.
evoskuil21:09
The installer has a build boost option, and also recommend static linking.
evoskuil21:10
also avoid installing to a shared directory. Best to isolate the whole build.
evoskuil21:12
$ ./install.sh --prefix=/home/me/myprefix --build-boost --disable-shared
✅ 1
Jose Robles22:35
thanks for the help, i will try some workaround for this
evoskuil22:36
for what?
evoskuil22:36
the boost issue?
evoskuil22:36
That's likely a boost compatibility issue and should be resolved by building it as shown above.
evoskuil22:37
boost and libsecp are the only required dependencies and build from the install.sh. Also ICU which is optional.
Jose Robles22:42
Eric Voskuil
$ ./install.sh --prefix=/home/me/myprefix --build-boost --disable-shared
evoskuil22:43
The boost error?
Jose Robles22:45
yeah
evoskuil22:45
Can you post the build log?
Jose Robles22:53
evoskuil22:59
This is a compiler warning elevated to error by strict processing.
evoskuil22:59
You are probably seeing it where we don't because you are on clang15 and we build with 14.
evoskuil23:02
You might try bumping the boost version, as they may have fixed it. Though that sometimes surfaces other issues.
evoskuil23:10
We build with clang14 on macos and clang15 on linux. The issue is a consequence of a llvm breaking change in clang16 that breaks boost and has no fix. You said you are on clang15 - which shouldn't be an issue. But I would try 14 if that's the case, since that's what we test with.
(edited)
👍 1
evoskuil20:23
Any luck?
Jose Robles21:15
i couldn't try, i have had lots of things going on but i want to try again soon
👍🏻 1