Bitcoin full node and query server

Jan 7, 2025

View in context in the libbitcoin Slack #general mirror.

pmienk19:51
@cguida For this reason, I manage my development in linux using developer_setup.sh (I really should shorten it to just dev.sh). it is generated by the libbitcoin-build project just like install.sh . All install scripts: install.sh, install-cmake.sh, install-cmakepresets.sh and developer_setup.sh share a common codebase with what I hope to be minor tweaks. developer_setup.sh allows for greater granularity of control, allowing you to execute a build against your local repositories. If and when you have a build with tracy working, we'll then have to fold any changes you've made in the make and config systems into the generation of those artifacts and make sure appropriate mechanisms for cmake are supplied.
157 replies · cguida, pmienk · last Jan 16, 2025
C
cguida19:59
ok great, this is what i was looking for! just need a way to rebuild repeatedly until stuff works, then once i get it working i can look into adding something a bit more "official"
C
cguida20:00
Just wondering what the normal dev cycle is for this kind of stuff
pmienk20:00
yeah, I'd use developer_setup.sh on anything but windows.
C
cguida20:00
perfect, thanks!
pmienk20:01
just gotta generate it locally with
gsl --script:template/gsl.developer_setup.sh generate4.xml
chmod +x output/*/developer_setup.sh
then copy the one you want and properly parameterize. I didn't default src or obj directories, so its a little noisy on the command line
(edited)
🙏 1
pmienk20:02
you can see an example of it being used to build a docker container for bs in the docker subdirectory
pmienk20:03
bs-linux.sh
pmienk20:04
let me know if you have any questions or issues, but --help will get you started
C
cguida20:19
how did you build gsl? i can't seem to install the dependency libpcre3-dev on debian
pmienk20:20
i was using arch lately
pmienk20:21
which debian?
C
cguida20:22
debian trixie
C
cguida20:22
it's not released yet
C
cguida20:22
had to install it for my video drivers to work heh
pmienk20:25
so what happens when you try to install libpcre3-dev?
pmienk20:25
(oddly, on arch i didn't install it and everything built and runs fine... so i'm not sure how i satisfied that dependency)
pmienk20:27
on arch, the prce package adds the dev files, maybe i've just had it go in a package update without specifying it as necessary
pmienk20:29
you could run it from the docker container zeromq provides. though an alias isn't picked up in script unless you modify your environment, set +<can't remember what>
pmienk20:29
little unsafe that way if you alias anything a script 'accidentally' uses
pmienk20:32
eh, i can edit -build to define GSL=gsl if not defined, GSL=docker run... in an environment would take it from there... seems pretty easy
C
cguida20:33
it just doesn't exist
C
cguida20:33
$ sudo apt install libpcre3-dev
[sudo] password for cguida: 
Package libpcre3-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

Error: Package 'libpcre3-dev' has no installation candidate
pmienk20:34
any candidates for anything *pcre*
C
cguida20:36
yeah libpcre2-dev
C
cguida20:36
i installed that but gsl build has errors
pmienk20:36
ha, yeah that won't work
pmienk20:37
looks like containerization is your best bet
C
cguida20:37
$ apt search pcre awffull/testing 3.10.2-10 amd64 web server log analysis program cl-abnf/testing 20200229.gitba1fbb1-1 all Common Lisp ABNF parser generator cl-ppcre/testing 20240427.git80fb19d-1 all Portable Perl-compatible regular expressions for Common Lisp cl-ppcre-unicode/testing 20240427.git80fb19d-1 all Portable Perl-compatible regular expressions for Common Lisp (Unicode) cl-unicode/testing 20231118.git07e7ff5-1 all portable Unicode library for Common Lisp elpa-pcre2el/testing 1.12-2 all Emacs mode to convert between PCRE, Emacs and rx regexp syntax exonerate/testing 2.4.0-5+b1 amd64 generic tool for pairwise sequence comparison gambas3-gb-pcre/testing 3.19.5-1 amd64 Gambas regexp component libapache2-mod-php8.2/testing 8.2.27-1 amd64 server-side, HTML-embedded scripting language (Apache 2 module) libghc-regex-base-dev/testing 0.94.0.2-3 amd64 GHC library providing an API for regular expressions libghc-regex-base-doc/testing 0.94.0.2-3 all GHC library providing an API for regular expressions; documentation libghc-regex-base-prof/testing 0.94.0.2-3 amd64 GHC library providing an API for regular expressions; profiling libraries libhyperscan5/testing 5.4.2-3 amd64 High-performance regular expression matching library libpcre2-16-0/testing,now 10.44-5 amd64 [installed,automatic] New Perl Compatible Regular Expression Library - 16 bit runtime files libpcre2-32-0/testing,now 10.44-5 amd64 [installed,automatic] New Perl Compatible Regular Expression Library - 32 bit runtime files libpcre2-8-0/testing,now 10.44-5 amd64 [installed] New Perl Compatible Regular Expression Library- 8 bit runtime files libpcre2-dev/testing,now 10.44-5 amd64 [installed] New Perl Compatible Regular Expression Library - development files libpcre2-ocaml/testing 8.0.2-1 amd64 OCaml bindings for PCRE2 (runtime) libpcre2-ocaml-dev/testing 8.0.2-1 amd64 OCaml bindings for PCRE2 (Perl Compatible Regular Expression) libpcre2-posix3/testing,now 10.44-5 amd64 [installed,automatic] New Perl Compatible Regular Expression Library - posix-compatible runtime files libphp8.2-embed/testing 8.2.27-1 amd64 HTML-embedded scripting language (Embedded SAPI library) libre2-11/testing,now 20240501-3+b1 amd64 [installed,automatic] efficient, principled regular expression library libre2-dev/testing 20240501-3+b1 amd64 efficient, principled regular expression library, development kit libre2j-java/testing 1.7+dfsg-1 all RE2/J: linear time regular expression matching in Java librust-grep-pcre2-dev/testing 0.1.8-1 amd64 Use PCRE2 with the 'grep' crate - Rust source code librust-pcre2-dev/testing 0.2.6-1+b2 amd64 High level wrapper library for PCRE2 - Rust source code librust-pcre2-sys-dev/testing 0.2.7-1+b1 amd64 Low level bindings to PCRE2 - Rust source code libvectorscan5/testing 5.4.11-2+b1 amd64 Portable fork of Intel's Hyperscan library lua-rex-pcre2/testing 2.9.2-3+b1 amd64 Perl regular expressions library (PCRE2) for the Lua language lua-rex-pcre2-dev/testing 2.9.2-3+b1 amd64 PCRE2 development files for the Lua language mle/testing 1.7.2-1 amd64 flexible terminal-based editor pcre2-utils/testing 10.44-5 amd64 New Perl Compatible Regular Expression Library - utilities php-composer-pcre/testing 3.3.2-1 all PCRE wrapping library that offers type-safe preg_* replacements php8.2-cgi/testing 8.2.27-1 amd64 server-side, HTML-embedded scripting language (CGI binary) php8.2-cli/testing 8.2.27-1 amd64 command-line interpreter for the PHP scripting language php8.2-fpm/testing 8.2.27-1 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) php8.2-phpdbg/testing 8.2.27-1 amd64 server-side, HTML-embedded scripting language (PHPDBG binary) postfix-pcre/testing 3.9.1-9 amd64 PCRE map support for Postfix postgresql-17-pgpcre/testing 0.20190509-8+b1 amd64 Perl Compatible Regular Expressions (PCRE) extension for PostgreSQL prelude-lml-rules/testing 5.2.0-1 all Security Information and Events Management System [ LML Rules ] python3-pcre2/testing 0.4.0+ds-1 amd64 Python bindings for the PCRE2 regular expression library regexxer/testing 0.10-6+b1 amd64 visual search and replace tool using Perl Regex ruby-re2/testing 2.7.0-2 amd64 Ruby bindings to re2 varnish-re2/testing 2.0.0-6 amd64 RE2 regular expressions for Varnish
C
cguida20:44
hmm cool it looks like i can install it from the sid package source, i think it built?
C
cguida20:45
eyyyy
$ gsl
GSL/4.1.5 Copyright (c) 1996-2016 iMatix Corporation
              GSL Developers 2016-2017
syntax: gsl -<option> ... -<attr>[:<value>] ... <filename> ...
    or: gsl -a -<option> ... -<attr>[:<value>] <filename> <arg> ...
    Options:
    -a          argument:  Pass arguments following filename to GSL script
    -q          quiet:     suppress routine messages
    -p          parallel:  process files in parallel
    -c:m[:file] console:   set console mode (optionally capture output to file)
                           (use capital case -C:... to disable the echo)
                               mode:
                                   p   - print as requested
                                   d   - prefix with date and time
                                   t   - prefix with time only
                                   dbg - datetime, with full flush to disk
    -s:n     size:n        set script cache size - default is 1000000
    -h       help:         show command-line summary
    -v       version:      show full version information
pmienk20:45
looks good
🎉 1
C
cguida21:07
which repo should i run that command in?
2025-01-09 14:11:02 cguida@cg-carbon:~/code/libbitcoin-node$ gsl --script:template/gsl.developer_setup.sh generate4.xml
GSL/4.1.5 Copyright (c) 1996-2016 iMatix Corporation
              GSL Developers 2016-2017
gsl/4 I: Processing generate4.xml...
gsl/4 E: Error processing generate4.xml...
Could not find XML file: generate4.xml
C
cguida21:08
2025-01-09 15:07:10 cguida@cg-carbon:~/code/libbitcoin-build$ gsl --script:template/gsl.developer_setup.sh generate4.xml
GSL/4.1.5 Copyright (c) 1996-2016 iMatix Corporation
              GSL Developers 2016-2017
gsl/4 I: Processing generate4.xml...
No script specified.
(edited)
C
cguida21:08
i did actually specify a script?
pmienk21:11
yeah, it looks right to me
pmienk21:12
ahh, template -> templates
pmienk21:12
one key off
pmienk21:12
tab completion is my friend
C
cguida21:15
ahhh that's it, sorry! should have noticed that was a subdir xD
C
cguida21:15
hmm actually
C
cguida21:15
still getting this
$ gsl --script:templates/gsl.developer_setup.sh generate4.xml
GSL/4.1.5 Copyright (c) 1996-2016 iMatix Corporation
              GSL Developers 2016-2017
gsl/4 I: Processing generate4.xml...
No script specified.
C
cguida21:15
inside libbitcoin-build
pmienk21:18
huh, i got that too. let me work this out
C
cguida21:19
ok this seems to have worked
$ gsl templates/gsl.developer_setup.sh generate4.xml 
GSL/4.1.5 Copyright (c) 1996-2016 iMatix Corporation
              GSL Developers 2016-2017
gsl/4 I: Processing templates/gsl.developer_setup.sh...

(gsl.developer_setup.sh 522) Undefined expression: generate
GSL/4.1.5 Copyright (c) 1996-2016 iMatix Corporation
              GSL Developers 2016-2017
gsl/4 I: Processing generate4.xml...

gsl/4 M: Generating output/libbitcoin-client/developer_setup.sh...
gsl/4 M: Generating output/libbitcoin-database/developer_setup.sh...
gsl/4 M: Generating output/libbitcoin-explorer/developer_setup.sh...
gsl/4 M: Generating output/libbitcoin-network/developer_setup.sh...
gsl/4 M: Generating output/libbitcoin-node/developer_setup.sh...
gsl/4 M: Generating output/libbitcoin-protocol/developer_setup.sh...
gsl/4 M: Generating output/libbitcoin-server/developer_setup.sh...
gsl/4 M: Generating output/libbitcoin-system/developer_setup.sh...
C
cguida21:19
just remove the --script:?
(edited)
pmienk21:19
okay, huh
C
cguida21:20
the output script exists now! i guess let's run it...
pmienk21:25
ahh, -script, not --script
pmienk21:25
undocumented option
C
cguida21:25
do you have an example of how to invoke developer_setup.sh?
C
cguida21:25
ahh haha
C
cguida21:26
$ ./output/libbitcoin-node/developer_setup.sh Missing build-src-dir required.
C
cguida21:26
do i just say build there?
pmienk21:26
./developer_setup --help works.
pmienk21:26
needs a full path.
C
cguida21:27
so i just provide any path?
pmienk21:27
well, --build-src-dir= <path to sources>
pmienk21:28
so if you store all your sources under /home/user/code/libbitcoin/<libbitcoin sources>, point it to /home/user/code/libbitcoin
C
cguida21:28
ah
pmienk21:28
then it will use your sources as long as you don't tell it to mode sync
C
cguida21:28
so just wherever i cloned all the repos
pmienk21:28
yep
C
cguida21:28
gooooootcha
C
cguida21:28
thanks
C
cguida21:29
what about obj dirs?
C
cguida21:29
same thing?
pmienk21:29
if you look at the docker/bx-linux.Dockerfile it uses developer_setup to build
pmienk21:29
yeah, a separate reusable obj tree
C
cguida21:30
ah cool
pmienk21:30
i used to point it to a second drive for a little perf increase in build
👍 1
C
cguida21:30
--build-mode=<value> Specifies minimum action to be taken. Valid values: { sync, configure, build }. Defaults to 'unknown', must be declared.
pmienk21:31
sync will blow away and resync your repos, configure will reconfigure the builds with new params stated on command line, build will try to reuse everything including the objs - just like rekicking off to fix a compiler error
pmienk21:31
if i'm playing around with options, i configure, otherwise build
👍 1
C
cguida21:32
looks like it's actually bs-linux, not bx-linux?
C
cguida21:32
for docker
pmienk21:33
bs for server, bx for explorer
C
cguida21:33
or maybe i'm looking in the wrong spot
pmienk21:33
should be two files
pmienk21:33
well, two .Dockerfile files
C
cguida21:33
$ ls docker/ bs-linux.Dockerfile bs-linux.env.in bs-linux.sh bs-linux-startup.sh bs-linux.yml README.md 2025-01-09 15:33:21 cguida@cg-carbon:~/code/libbitcoin-build$
pmienk21:33
unless i haven't pulled...
C
cguida21:33
no bx-linux in there
pmienk21:34
ha, okay, i did explorer over few nights. haven't pulled it in
C
cguida21:36
maybe i can just use bs then?
C
cguida21:43
ok i think it's building
pmienk21:44
yeah, it's a perfectly useable example. i may have factored it a bit in my repo which shows off some additional control... think i was going to pair out the extraneous commands before a pull
pmienk21:45
i'll try and get that in tonight
pmienk21:46
if you're trying to go against master though, i'd use the -node copy as server hasn't been updated on master
pmienk21:46
likewise, explorer isn't updated on master
C
cguida21:46
hmm weird
/usr/include/c++/14/cstdlib:79:15: fatal error: stdlib.h: No such file or directory
   79 | #include_next <stdlib.h>
C
cguida21:47
-node as in, the -node dockerfile?
pmienk21:48
no, as in -node developer_setup.sh
pmienk21:48
you could invoke the same parameters against it and end with a copy of bn outside docker
C
cguida21:49
oh, that's the one i'm using 🙂
C
cguida21:50
apparently i needed to install g++14
C
cguida21:50
sudo apt install g++-14 gcc-14
pmienk21:51
yeah, we haven't updated readme for master yet
C
cguida21:51
whoops nvm, still hitting that error, hmmm
C
cguida21:52
ok gonna pick this up later, thanks for all your guidance!
pmienk21:52
sudo apt-get install git build-essential autoconf automake libtool pkg-config
pmienk21:52
sure, later
pmienk21:53
i'd check https://github.com/libbitcoin/libbitcoin-node/blob/master/.github/workflows/ci.yml if you're looking for build environment issues.
👍 1
C
cguida19:10
Hmm still hitting this error. The error occurs while trying to build libbitcoin-system. I've checked the dockerfile for bx-linux https://github.com/libbitcoin/libbitcoin-build/blob/master/docker/bx-linux.Dockerfile I've checked the ci.yml file https://github.com/libbitcoin/libbitcoin-node/blob/master/.github/workflows/ci.yml Nothing really jumps out at me as to why I'd be missing dependencies. Ftr when I run ./install.sh from libbitcoin-node, the node builds just fine, so I guess it's just something configured differently in developer_setup.sh 😕
C
cguida19:11
Any other debugging steps you can suggest?
(edited)
pmienk19:36
Wanna share some output from your attempt and the parameterization?
C
cguida19:53
sure, which output would be useful? you mean the build output?
C
cguida19:55
$ ./developer_setup.sh     --enable-isystem     --without-consensus     --with-icu     --build-icu     --build-boost     --build-zmq     --build-mode=configure     --build-target=all     --build-src-dir=$PWD/src     --build-obj-dir=$PWD/obj     --prefix=$PWD/prefix     --disable-shared     --enable-static
libbitcoin-node installer configuration.
--------------------------------------------------------------------
OS                    : Linux
PARALLEL              : 14
CC                    : 
CXX                   : 
CPPFLAGS              : 
CFLAGS                : 
CXXFLAGS              : 
LDFLAGS               : 
LDLIBS                : 
WITH_ICU              : yes
BUILD_ICU             : yes
BUILD_BOOST           : yes
BUILD_SECP256K1       : 
BOOST_ROOT            : /home/cguida/code/libbitcoin/prefix
BUILD_SRC_DIR         : /home/cguida/code/libbitcoin/src
BUILD_OBJ_DIR         : /home/cguida/code/libbitcoin/obj
BUILD_MODE            : configure
BUILD_TARGET          : all
SYNC_ONLY             : 
PREFIX                : /home/cguida/code/libbitcoin/prefix
DISABLE_SHARED        : yes
DISABLE_STATIC        : 
with_boost            : --with-boost=/home/cguida/code/libbitcoin/prefix
with_pkgconfigdir     : --with-pkgconfigdir=/home/cguida/code/libbitcoin/prefix/lib/pkgconfig
--------------------------------------------------------------------

********************** Initialize git **********************
Reinitialized existing Git repository in /home/cguida/code/libbitcoin/src/.git/

********************** Initialize object directory **********************
Reinitializing /home/cguida/code/libbitcoin/obj...
Initializing directory /home/cguida/code/libbitcoin/obj...

********************** Create local copies of required libraries **********************

********************** Preparing to acquire icu4c-55_2-src.tgz **********************
Reusing existing archive icu4c-55_2-src.tgz...

********************** Preparing to acquire boost_1_78_0.tar.bz2 **********************
Reusing existing archive boost_1_78_0.tar.bz2...

********************** Preparing to acquire libbitcoin/libbitcoin-system/master **********************
Reusing existing clone of libbitcoin/libbitcoin-system, Branch may not match master...

********************** Preparing to acquire libbitcoin/libbitcoin-network/master **********************
Reusing existing clone of libbitcoin/libbitcoin-network, Branch may not match master...

********************** Preparing to acquire libbitcoin/libbitcoin-database/master **********************
Reusing existing clone of libbitcoin/libbitcoin-database, Branch may not match master...

********************** Preparing to acquire libbitcoin/libbitcoin-node/master **********************
Reusing existing clone of libbitcoin/libbitcoin-node, Branch may not match master...

********************** Build local copies of required libraries **********************

********************** Preparing to build icu4c-55_2-src.tgz **********************
pmienk19:56
Yes, standard out and error, along with the parameters passed. When I get a free minute I'll spin up a trixie container and try with your distro if we can't track it down otherwise
C
cguida19:57
ok awesome, thanks!
C
cguida19:57
stdout/stderr is huge
C
cguida19:57
i guess i can output to a file..
C
cguida19:58
out.txt Plain Text · 201.5 KB
$ ./developer_setup.sh     --enable-isystem     --without-consensus     --with-icu     --build-icu     --build-boost     --build-zmq     --build-mode=configure     --build-target=all     --build-src-dir=$PWD/src     --build-obj-dir=$PWD/obj     --prefix=$PWD/prefix     --disable-shared     --enable-static
libbitcoin-node installer configuration.
--------------------------------------------------------------------
OS                    : Linux
PARALLEL              : 14
CC                    : 
CXX                   : 
CPPFLAGS              : 
CFLAGS                : 
CXXFLAGS              : 
LDFLAGS               : 
LDLIBS                : 
WITH_ICU              : yes
BUILD_ICU             : yes
BUILD_BOOST           : yes
BUILD_SECP256K1       : 
BOOST_ROOT            : /home/cguida/code/libbitcoin/prefix
BUILD_SRC_DIR         : /home/cguida/code/libbitcoin/src
BUILD_OBJ_DIR         : /home/cguida/code/libbitcoin/obj
BUILD_MODE            : configure
BUILD_TARGET          : all
SYNC_ONLY             : 
PREFIX                : /home/cguida/code/libbitcoin/prefix
DISABLE_SHARED        : yes
DISABLE_STATIC        : 
with_boost            : --with-boost=/home/cguida/code/libbitcoin/prefix
with_pkgconfigdir     : --with-pkgconfigdir=/home/cguida/code/libbitcoin/prefix/lib/pkgconfig
--------------------------------------------------------------------

********************** Initialize git **********************
Reinitialized existing Git repository in /home/cguida/code/libbitcoin/src/.git/

********************** Initialize object directory **********************
Reinitializing /home/cguida/code/libbitcoin/obj...
Initializing directory /home/cguida/code/libbitcoin/obj...

********************** Create local copies of required libraries **********************

********************** Preparing to acquire icu4c-55_2-src.tgz **********************
Reusing existing archive icu4c-55_2-src.tgz...
full file
pmienk19:59
Yeah, that'd help. What you shared above starts icu build. Does icu complete?
C
cguida20:00
do you see out.txt?
C
cguida20:00
that's the whole thing
C
cguida20:00
actually for some reason slack appears to be truncating the file
pmienk20:01
I don't see a shared file, just the text above
C
cguida20:01
maybe if i change the suffix it will just let you download it?
C
cguida20:01
out.log Plain Text · 201.5 KB
$ ./developer_setup.sh     --enable-isystem     --without-consensus     --with-icu     --build-icu     --build-boost     --build-zmq     --build-mode=configure     --build-target=all     --build-src-dir=$PWD/src     --build-obj-dir=$PWD/obj     --prefix=$PWD/prefix     --disable-shared     --enable-static
libbitcoin-node installer configuration.
--------------------------------------------------------------------
OS                    : Linux
PARALLEL              : 14
CC                    : 
CXX                   : 
CPPFLAGS              : 
CFLAGS                : 
CXXFLAGS              : 
LDFLAGS               : 
LDLIBS                : 
WITH_ICU              : yes
BUILD_ICU             : yes
BUILD_BOOST           : yes
BUILD_SECP256K1       : 
BOOST_ROOT            : /home/cguida/code/libbitcoin/prefix
BUILD_SRC_DIR         : /home/cguida/code/libbitcoin/src
BUILD_OBJ_DIR         : /home/cguida/code/libbitcoin/obj
BUILD_MODE            : configure
BUILD_TARGET          : all
SYNC_ONLY             : 
PREFIX                : /home/cguida/code/libbitcoin/prefix
DISABLE_SHARED        : yes
DISABLE_STATIC        : 
with_boost            : --with-boost=/home/cguida/code/libbitcoin/prefix
with_pkgconfigdir     : --with-pkgconfigdir=/home/cguida/code/libbitcoin/prefix/lib/pkgconfig
--------------------------------------------------------------------

********************** Initialize git **********************
Reinitialized existing Git repository in /home/cguida/code/libbitcoin/src/.git/

********************** Initialize object directory **********************
Reinitializing /home/cguida/code/libbitcoin/obj...
Initializing directory /home/cguida/code/libbitcoin/obj...

********************** Create local copies of required libraries **********************

********************** Preparing to acquire icu4c-55_2-src.tgz **********************
Reusing existing archive icu4c-55_2-src.tgz...
full file
C
cguida20:04
out.log Plain Text · 201.5 KB
$ ./developer_setup.sh     --enable-isystem     --without-consensus     --with-icu     --build-icu     --build-boost     --build-zmq     --build-mode=configure     --build-target=all     --build-src-dir=$PWD/src     --build-obj-dir=$PWD/obj     --prefix=$PWD/prefix     --disable-shared     --enable-static
libbitcoin-node installer configuration.
--------------------------------------------------------------------
OS                    : Linux
PARALLEL              : 14
CC                    : 
CXX                   : 
CPPFLAGS              : 
CFLAGS                : 
CXXFLAGS              : 
LDFLAGS               : 
LDLIBS                : 
WITH_ICU              : yes
BUILD_ICU             : yes
BUILD_BOOST           : yes
BUILD_SECP256K1       : 
BOOST_ROOT            : /home/cguida/code/libbitcoin/prefix
BUILD_SRC_DIR         : /home/cguida/code/libbitcoin/src
BUILD_OBJ_DIR         : /home/cguida/code/libbitcoin/obj
BUILD_MODE            : configure
BUILD_TARGET          : all
SYNC_ONLY             : 
PREFIX                : /home/cguida/code/libbitcoin/prefix
DISABLE_SHARED        : yes
DISABLE_STATIC        : 
with_boost            : --with-boost=/home/cguida/code/libbitcoin/prefix
with_pkgconfigdir     : --with-pkgconfigdir=/home/cguida/code/libbitcoin/prefix/lib/pkgconfig
--------------------------------------------------------------------

********************** Initialize git **********************
Reinitialized existing Git repository in /home/cguida/code/libbitcoin/src/.git/

********************** Initialize object directory **********************
Reinitializing /home/cguida/code/libbitcoin/obj...
Initializing directory /home/cguida/code/libbitcoin/obj...

********************** Create local copies of required libraries **********************

********************** Preparing to acquire icu4c-55_2-src.tgz **********************
Reusing existing archive icu4c-55_2-src.tgz...
full file
C
cguida20:05
this is infuriating haha
pmienk20:05
And can you locate stdlib.h on your system?
C
cguida20:05
how do i send a text file and not have it truncated
C
cguida20:05
why doesn't slack just give a "download this file" button??
pmienk20:06
If you can, try dropping --enable-isystem. Gotta do naptime, back in 10-20minutes
👍 1
C
cguida20:06
$ ls -al /usr/include/stdlib.h
-rw-r--r-- 1 root root 41032 Jan  3 04:56 /usr/include/stdlib.h
Phillip Mienk
And can you locate stdlib.h on your system?
C
cguida20:10
Phillip Mienk
If you can, try dropping --enable-isystem. Gotta do naptime, back in 10-20minutes
pmienk20:22
You have multiple versions of the same compiler installed side by side. isystem silences errors from dependencies by classifying them as system provided, so boost and icu stuff isn't dirtying our attempts to track down real issues. However the way its implemented (not by us) changes search order for system directories and can produce errors with multiple versions on a system
pmienk20:27
Same issue would presumably show if you likewise parameterized install.sh
C
cguida20:28
Ah cool, thanks for the explanation and the fix!! 🙏
C
cguida03:01
How do you get the build mode to go faster? i have $ ./developer_setup.sh --without-consensus --with-icu --build-icu --build-boost --build-zmq --build-mode=build --build-target=all --build-src-dir=$PWD/src --build-obj-dir=$PWD/obj --prefix=$PWD/prefix --disable-shared --enable-static and i built once and it took 14 minutes, then i built again without changing anything and it's still several minutes into the build. what's the option for "just rebuild the files I changed"?
pmienk03:04
well, what library did you change?
C
cguida03:06
i just put a line in libbitcoin-node/console/executor_runner.cpp as a sanity check. but then as I said, I ran the build again with no changes, and it still took a long time
C
cguida03:07
it should just say "nothing to do" if there are no changes, right?
pmienk03:07
well, i'd suggest --build-target=project if the developer_steup.sh is from -node. that will scope to node. alternately, you could drop into the obj directories and kick off make
👍 1
pmienk03:08
not necessarily. dependencies such as icu, zmq and boost use a different flow of control. I would suggest dropping their build instruction after establishing a prefix. you'll need to then specify --with-boost=<prefix path> or define BOOST_ROOT environmentally
C
cguida03:09
ah this must be why
--enable-static
--enable-static
Reusing configuration for /home/cguida/code/libbitcoin/src/libbitcoin-node...
Requested 'make clean'...
 rm -f console/bn
 rm -f test/libbitcoin-node-test
test -z "src/libbitcoin-node.la" || rm -f src/libbitcoin-node.la
rm -f src/so_locations
rm -rf .libs _libs
rm -rf console/.libs console/_libs
rm -rf src/.libs src/_libs
rm -rf src/chasers/.libs src/chasers/_libs
rm -rf src/protocols/.libs src/protocols/_libs
rm -rf src/sessions/.libs src/sessions/_libs
rm -rf test/.libs test/_libs
rm -rf tracy/public/.libs tracy/public/_libs
rm -f *.o
rm -f console/*.o
rm -f src/*.o
rm -f src/*.lo
rm -f src/chasers/*.o
rm -f src/chasers/*.lo
rm -f src/protocols/*.o
rm -f src/protocols/*.lo
rm -f src/sessions/*.o
rm -f src/sessions/*.lo
rm -f test/*.o
rm -f test/chasers/*.o
rm -f test/protocols/*.o
rm -f test/sessions/*.o
rm -f tracy/public/*.o
rm -f tracy/public/*.lo
test -z "libbitcoin-node-test_runner.sh.log" || rm -f libbitcoin-node-test_runner.sh.log
test -z "libbitcoin-node-test_runner.sh.trs" || rm -f libbitcoin-node-test_runner.sh.trs
pmienk03:09
yeah, can't guarantee there isn't an errant make clean in there. I noticed it awhile ago but haven't had bandwidth to track it down.
👍 1
pmienk03:10
shouldn't be kicked off when -mode=build but there were some original checks that were miswritten and it may predate a refinement of my understanding of the scripting language.
pmienk03:11
as few people have inquired as to how to do what your doing and even fewer asked questions, I'm really the only one who uses these tools regularly
👍 1
pmienk03:11
thanks for kicking the tires!
👍 1
C
cguida03:14
yeah there's definitely a make_jobs true in the make_project_directory function in developer_setup.sh true sets "preclean" to true which runes the make clean
C
cguida03:14
not sure how to fix that in the gsl stuff though haha
C
cguida03:14
oh wait actually
pmienk03:15
hard true from make_project_directory and build_from_tarball looks like
C
cguida03:15
yeah
C
cguida03:16
theeeere we go
pmienk03:16
i'll take a look at what can be passed without expanding shared signatures
C
cguida03:16
that's more like it
image.png
pmienk03:16
probably better to pull the logic up
👍 1
C
cguida03:17
so if i switch to project and change that line to make_jobs false, then i don't get a make clean
(edited)
pmienk03:19
sort of. without looking deeper, make_jobs false might break something else when build with a different mode. it's more likely a condition has to be made about the mode, calculated and passed.
C
cguida03:19
i just hardcoded it in developer_setup.sh for now haha
pmienk03:19
sure, works until i fix it 👍
🙏 1