View in context in the libbitcoin Slack #general mirror.
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.gsl --script:template/gsl.developer_setup.sh generate4.xml chmod +x output/*/developer_setup.sh
$ 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
$ 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 information2025-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.xml2025-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)$ 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.$ 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.../usr/include/c++/14/cstdlib:79:15: fatal error: stdlib.h: No such file or directory 79 | #include_next <stdlib.h>
developer_setup.sh 😕$ ./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 **********************
$ ./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
$ ./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
$ ./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
$ ls -al /usr/include/stdlib.h -rw-r--r-- 1 root root 41032 Jan 3 04:56 /usr/include/stdlib.h
isystem?
https://libbitcoin.slack.com/archives/C6LH74ACQ/p1736798779263119?thread_ts=1736279513.687499&cid=C6LH74ACQbuild 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"?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--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
make_jobs true in the make_project_directory function in developer_setup.sh
true sets "preclean" to true which runes the make cleanmake_jobs false, then i don't get a make cleanmake_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.