doc: Update Arch Linux build example #25414

pull bubelov wants to merge 1 commits into bitcoin:master from bubelov:arch-less-deps changing 1 files +5 −10
  1. bubelov commented at 7:37 AM on June 19, 2022: contributor

    The current build example has two issues:

    1. The claim that the wallet functionality will be missing is obsolete since Bitcoin Core can use SQLite, which is a hard dependency of pacman so we can assume that it's always present.
    2. Installing package groups such as base-devel adds some friction and uncertainty by forcing readers to choose which packages they need, interactively. Listing required deps explicitly speeds up the whole process, makes it more transparent and cuts the number of installed packages.
  2. DrahtBot added the label Docs on Jun 19, 2022
  3. prusnak commented at 10:49 AM on June 19, 2022: contributor

    Where were libevent and python removed from the installed dependencies?

  4. bubelov commented at 11:08 AM on June 19, 2022: contributor

    @prusnak

    python seems to be test-only dep, so it's not necessary to build a bitcoind binary

    libevent is one of the base and systemd deps so everyone has it

  5. sipa commented at 1:02 PM on June 19, 2022: member

    I wouldn't recommend not building/running the tests.

  6. bubelov commented at 2:14 PM on June 19, 2022: contributor

    @sipa done. May I ask what's the point of doing that? I assume that the master branch should always pass the test suite. Is it supposed to check for issues with the build environment?

  7. sipa commented at 2:15 PM on June 19, 2022: member

    If you're not using release binaries, there is no way of knowing that the binaries produced on your own system will pass all the tests. There can always be compiler/platform specific bugs or incompatibilities.

  8. in doc/build-unix.md:286 in 1e2dd0cbef outdated
     284 | +    pacman --sync git autoconf automake pkgconf libtool clang boost make python
     285 |      git clone https://github.com/bitcoin/bitcoin.git
     286 |      cd bitcoin/
     287 |      ./autogen.sh
     288 | -    ./configure --disable-wallet --without-gui --without-miniupnpc
     289 | +    ./configure
    


    dongcarl commented at 4:53 PM on June 19, 2022:

    Is the intention to default to clang? I believe the default is still gcc on other distros.

    If the intention is indeed to default to clang, this still wouldn't work in cases where gcc is already installed since ./configure will use gcc before it uses clang if both are present.


    bubelov commented at 3:15 AM on June 20, 2022:

    @dongcarl the only reason I put it here is because it's listed as a required dependency in another document: https://github.com/bitcoin/bitcoin/blob/master/doc/dependencies.md


    bubelov commented at 4:29 AM on June 20, 2022:

    @dongcarl just checked, clang package requires gcc, so declaring clang only will also install gcc and it doesn't cause any build issues:

    pacman --sync git autoconf automake pkgconf libtool boost make python clang
    resolving dependencies...
    looking for conflicting packages...
    
    Package (28)          New Version     Net Change  Download Size
    
    core/binutils         2.38-5           30.90 MiB       5.87 MiB
    extra/boost-libs      1.79.0-1          7.88 MiB       2.12 MiB
    extra/compiler-rt     13.0.1-1         35.85 MiB       2.87 MiB
    core/db               5.3.28-5          6.41 MiB       1.07 MiB
    core/diffutils        3.8-1             1.47 MiB       0.35 MiB
    core/gc               8.2.0-3           0.75 MiB       0.23 MiB
    core/gcc              12.1.0-2        170.30 MiB      44.35 MiB
    core/guile            2.2.7-2          44.10 MiB       6.32 MiB
    core/libedit          20210910_3.1-1    0.27 MiB       0.11 MiB
    core/libisl           0.24-4            9.56 MiB       1.48 MiB
    core/libmpc           1.2.1-2           0.14 MiB       0.07 MiB
    core/libnsl           2.0.0-2           0.07 MiB       0.02 MiB
    extra/llvm-libs       13.0.1-6        104.62 MiB      26.03 MiB
    core/m4               1.4.19-1          0.49 MiB       0.25 MiB
    core/perl             5.36.0-1         59.79 MiB      15.58 MiB
    extra/perl-error      0.17029-4         0.04 MiB       0.02 MiB
    extra/perl-mailtools  2.21-6            0.11 MiB       0.06 MiB
    extra/perl-timedate   2.33-4            0.08 MiB       0.03 MiB
    core/texinfo          6.8-2             8.75 MiB       1.39 MiB
    core/autoconf         2.71-1            2.20 MiB       0.63 MiB
    core/automake         1.16.5-1          1.57 MiB       0.60 MiB
    extra/boost           1.79.0-1        171.29 MiB      13.65 MiB
    extra/clang           13.0.1-2        181.62 MiB      34.59 MiB
    extra/git             2.36.1-1         33.74 MiB       6.13 MiB
    core/libtool          2.4.7-2           2.22 MiB       0.40 MiB
    core/make             4.3-3             1.52 MiB       0.47 MiB
    core/pkgconf          1.8.0-1           0.16 MiB       0.06 MiB
    core/python           3.10.5-1         54.28 MiB      11.75 MiB
    
    Total Download Size:   176.48 MiB
    Total Installed Size:  930.16 MiB
    

    Here is a list of deps wihout clang:

    pacman --sync git autoconf automake pkgconf libtool boost make python
    resolving dependencies...
    looking for conflicting packages...
    
    Package (20)          New Version  Net Change  Download Size
    
    extra/boost-libs      1.79.0-1       7.88 MiB       2.12 MiB
    core/db               5.3.28-5       6.41 MiB       1.07 MiB
    core/diffutils        3.8-1          1.47 MiB       0.35 MiB
    core/gc               8.2.0-3        0.75 MiB       0.23 MiB
    core/guile            2.2.7-2       44.10 MiB       6.32 MiB
    core/libnsl           2.0.0-2        0.07 MiB       0.02 MiB
    core/m4               1.4.19-1       0.49 MiB       0.25 MiB
    core/perl             5.36.0-1      59.79 MiB      15.58 MiB
    extra/perl-error      0.17029-4      0.04 MiB       0.02 MiB
    extra/perl-mailtools  2.21-6         0.11 MiB       0.06 MiB
    extra/perl-timedate   2.33-4         0.08 MiB       0.03 MiB
    core/texinfo          6.8-2          8.75 MiB       1.39 MiB
    core/autoconf         2.71-1         2.20 MiB       0.63 MiB
    core/automake         1.16.5-1       1.57 MiB       0.60 MiB
    extra/boost           1.79.0-1     171.29 MiB      13.65 MiB
    extra/git             2.36.1-1      33.74 MiB       6.13 MiB
    core/libtool          2.4.7-2        2.22 MiB       0.40 MiB
    core/make             4.3-3          1.52 MiB       0.47 MiB
    core/pkgconf          1.8.0-1        0.16 MiB       0.06 MiB
    core/python           3.10.5-1      54.28 MiB      11.75 MiB
    
    Total Download Size:    61.13 MiB
    Total Installed Size:  396.91 MiB
    

    Since there is no compiler, ./configure step will fail:

    ./configure 
    checking for pkg-config... /usr/sbin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/sbin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether to enable maintainer-specific portions of Makefiles... yes
    checking whether make supports nested variables... (cached) yes
    checking for g++... no
    checking for c++... no
    checking for gpp... no
    checking for aCC... no
    checking for CC... no
    checking for cxx... no
    checking for cc++... no
    checking for cl.exe... no
    checking for FCC... no
    checking for KCC... no
    checking for RCC... no
    checking for xlC_r... no
    checking for xlC... no
    checking for clang++... no
    checking whether the C++ compiler works... no
    configure: error: in `/bitcoin':
    configure: error: C++ compiler cannot create executables
    See `config.log' for more details
    

    I tried building with gcc only and it seems to work fine. Which one should we prefer and why? I'm not familiar with C++ and its infrastructure so I can't really comment on that.

    Here is the full list of deps (not only top-level) with gcc instead of clang:

    pacman --sync git autoconf automake pkgconf libtool boost make python gcc
    resolving dependencies...
    looking for conflicting packages...
    
    Package (24)          New Version  Net Change  Download Size
    
    core/binutils         2.38-5        30.90 MiB       5.87 MiB
    extra/boost-libs      1.79.0-1       7.88 MiB       2.12 MiB
    core/db               5.3.28-5       6.41 MiB       1.07 MiB
    core/diffutils        3.8-1          1.47 MiB       0.35 MiB
    core/gc               8.2.0-3        0.75 MiB       0.23 MiB
    core/guile            2.2.7-2       44.10 MiB       6.32 MiB
    core/libisl           0.24-4         9.56 MiB       1.48 MiB
    core/libmpc           1.2.1-2        0.14 MiB       0.07 MiB
    core/libnsl           2.0.0-2        0.07 MiB       0.02 MiB
    core/m4               1.4.19-1       0.49 MiB       0.25 MiB
    core/perl             5.36.0-1      59.79 MiB      15.58 MiB
    extra/perl-error      0.17029-4      0.04 MiB       0.02 MiB
    extra/perl-mailtools  2.21-6         0.11 MiB       0.06 MiB
    extra/perl-timedate   2.33-4         0.08 MiB       0.03 MiB
    core/texinfo          6.8-2          8.75 MiB       1.39 MiB
    core/autoconf         2.71-1         2.20 MiB       0.63 MiB
    core/automake         1.16.5-1       1.57 MiB       0.60 MiB
    extra/boost           1.79.0-1     171.29 MiB      13.65 MiB
    core/gcc              12.1.0-2     170.30 MiB      44.35 MiB
    extra/git             2.36.1-1      33.74 MiB       6.13 MiB
    core/libtool          2.4.7-2        2.22 MiB       0.40 MiB
    core/make             4.3-3          1.52 MiB       0.47 MiB
    core/pkgconf          1.8.0-1        0.16 MiB       0.06 MiB
    core/python           3.10.5-1      54.28 MiB      11.75 MiB
    
    Total Download Size:   112.89 MiB
    Total Installed Size:  607.81 MiB
    

    It would make it faster to download, that's for sure =)

  9. dongcarl commented at 4:54 PM on June 19, 2022: member
    1. The claim that the wallet functionality will be missing is obsolete since Bitcoin Core can use SQLite, which is a hard dependency of pacman so we can assume that it's always present.

    Sure, but it's always possible that pacman stops using SQLite so it's better to be explicit here.

    1. Installing package groups such as base-devel adds some friction and uncertainty by forcing readers to choose which packages they need, interactively. Listing required deps explicitly speeds up the whole process, makes it more transparent and cuts the number of installed packages.

    Disagree that base-devel adds friction, it's just one confirmation selecting all, a little more than a [Y/n], but not much more.

    Agree that we can list required deps. But that's more of a build-unix-wide question since we use build-essential for Debian flavors and it'd be nice to be consistent.

  10. bubelov commented at 3:13 AM on June 20, 2022: contributor

    @dongcarl

    But that's more of a build-unix-wide question since we use build-essential for Debian flavors and it'd be nice to be consistent.

    I believe that the scope is even wider than that. There is a separate page called dependencies.md which is supposed to offer the list of dependencies required in order to build Bitcoin Core. This PR is aimed at probing the general attitude towards listing all the top-level deps explicitly. I see no reason not to generalize this approach and offer a complete list of deps in dependencies.md. The build documentation should probably focus on building instead of dependency resolution. It already has a "universal" recepie:

    ./autogen.sh
    ./configure
    make # use "-j N" for N parallel jobs
    make install # optional
    

    Which should probably be changed to:

    ./autogen.sh
    ./configure
    make check # use "-j N" for N parallel jobs
    

    according to @sipa feedback

  11. laanwj commented at 12:44 PM on June 20, 2022: member

    Concept ACK.

    If you're not using release binaries, there is no way of knowing that the binaries produced on your own system will pass all the tests.

    Right. FWIW, even for the release binaries we ship test_bitcoin, so that people can verify that the tests pass on their specific system, before running a node.

  12. in doc/build-unix.md:282 in 1e2dd0cbef outdated
     276 | @@ -277,22 +277,15 @@ A list of additional configure flags can be displayed with:
     277 |  
     278 |  Setup and Build Example: Arch Linux
     279 |  -----------------------------------
     280 | -This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:
     281 | +This example lists the steps necessary to setup and build a command line only distribution of the latest changes on Arch Linux:
     282 |  
     283 | -    pacman -S git base-devel boost libevent python
     284 | +    pacman --sync git autoconf automake pkgconf libtool clang boost make python
    


    MarcoFalke commented at 12:47 PM on June 20, 2022:

    any reason to remove libevent?


    bubelov commented at 4:01 AM on June 21, 2022:

    @MarcoFalke both libevent and sqlite are core Arch deps so there is no need to list them. There was a discussion on that above and it seems like listing them anyway is better, because:

    • It's unlikely, but they can be dropped by Arch
    • It's also nice to have a full list of direct top-level dependencies needed to build Bitcoin Core

    I've already made those changes, here is the summary: #25414 (comment)

  13. DrahtBot commented at 12:08 AM on June 21, 2022: member

    <!--e57a25ab6845829454e8d69fc972939a-->

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    No conflicts as of last run.

  14. bubelov commented at 3:56 AM on June 21, 2022: contributor

    A few comments on the latest changes:

    • All top-level deps are now listed explicitly, with alphabetical sorting to avoid giving an impression that there is some meaningful order in there (importance, build timeline, etc)
    • Since sqlite and libevent are core Arch deps and pacman tries to re-install everything by default, I added --needed option which instructs pacman not to mess with existing packages. Telling pacman to re-install its own core dep sounds a bit risky, although I'm pretty sure it can handle that
    • I swapped clang for gcc since clang required gcc anyway and having both of them installed doubled the amount of traffic required to fetch all the deps

    Here is a full list of deps, including required indirect deps:

    pacman --sync --needed autoconf automake boost gcc git libevent libtool make pkgconf python sqlite
    warning: libevent-2.1.12-1 is up to date -- skipping
    warning: sqlite-3.38.5-1 is up to date -- skipping
    resolving dependencies...
    looking for conflicting packages...
    
    Package (24)          New Version  Net Change  Download Size
    
    core/binutils         2.38-5        30.90 MiB       5.87 MiB
    extra/boost-libs      1.79.0-1       7.88 MiB       2.12 MiB
    core/db               5.3.28-5       6.41 MiB       1.07 MiB
    core/diffutils         3.8-1          1.47 MiB       0.35 MiB
    core/gc               8.2.0-3        0.75 MiB       0.23 MiB
    core/guile            2.2.7-2       44.10 MiB       6.32 MiB
    core/libisl           0.24-4         9.56 MiB       1.48 MiB
    core/libmpc           1.2.1-2        0.14 MiB       0.07 MiB
    core/libnsl           2.0.0-2        0.07 MiB       0.02 MiB
    core/m4               1.4.19-1       0.49 MiB       0.25 MiB
    core/perl             5.36.0-1      59.79 MiB      15.58 MiB
    extra/perl-error      0.17029-4      0.04 MiB       0.02 MiB
    extra/perl-mailtools  2.21-6         0.11 MiB       0.06 MiB
    extra/perl-timedate   2.33-4         0.08 MiB       0.03 MiB
    core/texinfo          6.8-2          8.75 MiB       1.39 MiB
    core/autoconf         2.71-1         2.20 MiB       0.63 MiB
    core/automake         1.16.5-1       1.57 MiB       0.60 MiB
    extra/boost           1.79.0-1     171.29 MiB      13.65 MiB
    core/gcc              12.1.0-2     170.30 MiB      44.35 MiB
    extra/git             2.36.1-1      33.74 MiB       6.13 MiB
    core/libtool          2.4.7-2        2.22 MiB       0.40 MiB
    core/make             4.3-3          1.52 MiB       0.47 MiB
    core/pkgconf          1.8.0-1        0.16 MiB       0.06 MiB
    core/python           3.10.5-1      54.28 MiB      11.75 MiB
    
    Total Download Size:   112.89 MiB
    Total Installed Size:  607.81 MiB
    

    Here is the output of ./configure:

    ./configure 
    checking for pkg-config... /usr/sbin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/sbin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether to enable maintainer-specific portions of Makefiles... yes
    checking whether make supports nested variables... (cached) yes
    checking for g++... g++
    checking whether the C++ compiler works... yes
    checking for C++ compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C++... yes
    checking whether g++ accepts -g... yes
    checking for g++ option to enable C++11 features... none needed
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of g++... gcc3
    checking whether g++ supports C++17 features with -std=c++17... yes
    checking whether std::atomic can be used without link library... yes
    checking whether std::filesystem can be used without link library... yes
    checking whether the compiler supports GNU Objective C++... no
    checking whether g++ -std=c++17 accepts -g... no
    checking dependency style of g++ -std=c++17... gcc3
    checking how to print strings... printf
    checking for gcc... gcc
    checking whether the compiler supports GNU C... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to enable C11 features... none needed
    checking whether gcc understands -c and -o together... yes
    checking dependency style of gcc... gcc3
    checking for a sed that does not truncate output... /usr/sbin/sed
    checking for grep that handles long lines and -e... /usr/sbin/grep
    checking for egrep... /usr/sbin/grep -E
    checking for fgrep... /usr/sbin/grep -F
    checking for ld used by gcc... /usr/sbin/ld
    checking if the linker (/usr/sbin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/sbin/nm -B
    checking the name lister (/usr/sbin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/sbin/ld option to reload object files... -r
    checking for file... file
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... no
    checking how to associate runtime and link libraries... printf %s\n
    checking for ar... ar
    checking for archiver [@FILE](/bitcoin-bitcoin/contributor/file/) support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/sbin/nm -B output from gcc object... ok
    checking for sysroot... no
    checking for a working dd... /usr/sbin/dd
    checking how to truncate binary pipes... /usr/sbin/dd bs=4096 count=1
    checking for mt... no
    checking if : is a manifest tool... no
    checking for stdio.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for strings.h... yes
    checking for sys/stat.h... yes
    checking for sys/types.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC -DPIC
    checking if gcc PIC flag -fPIC -DPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking if gcc supports -c -o file.o... (cached) yes
    checking whether the gcc linker (/usr/sbin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... g++ -std=c++17 -E
    checking for ld used by g++ -std=c++17... /usr/sbin/ld -m elf_x86_64
    checking if the linker (/usr/sbin/ld -m elf_x86_64) is GNU ld... yes
    checking whether the g++ -std=c++17 linker (/usr/sbin/ld -m elf_x86_64) supports shared libraries... yes
    checking for g++ -std=c++17 option to produce PIC... -fPIC -DPIC
    checking if g++ -std=c++17 PIC flag -fPIC -DPIC works... yes
    checking if g++ -std=c++17 static flag -static works... yes
    checking if g++ -std=c++17 supports -c -o file.o... yes
    checking if g++ -std=c++17 supports -c -o file.o... (cached) yes
    checking whether the g++ -std=c++17 linker (/usr/sbin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... (cached) GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking for ar... /usr/sbin/ar
    checking for gcov... /usr/sbin/gcov
    checking for llvm-cov... no
    checking for lcov... no
    checking for python3.6... no
    checking for python3.7... no
    checking for python3.8... no
    checking for python3.9... no
    checking for python3.10... /usr/sbin/python3.10
    checking for genhtml... no
    checking for git... /usr/sbin/git
    checking for ccache... no
    checking for xgettext... /usr/sbin/xgettext
    checking for hexdump... /usr/sbin/hexdump
    checking for objcopy... /usr/sbin/objcopy
    checking for doxygen... no
    checking whether C++ compiler accepts -Werror... yes
    checking whether the linker accepts -Wl,--fatal-warnings... yes
    checking whether C++ compiler accepts -Wall... yes
    checking whether C++ compiler accepts -Wextra... yes
    checking whether C++ compiler accepts -Wgnu... no
    checking whether C++ compiler accepts -Wformat -Wformat-security... yes
    checking whether C++ compiler accepts -Wvla... yes
    checking whether C++ compiler accepts -Wshadow-field... no
    checking whether C++ compiler accepts -Wthread-safety... no
    checking whether C++ compiler accepts -Wloop-analysis... no
    checking whether C++ compiler accepts -Wredundant-decls... yes
    checking whether C++ compiler accepts -Wunused-member-function... no
    checking whether C++ compiler accepts -Wdate-time... yes
    checking whether C++ compiler accepts -Wconditional-uninitialized... no
    checking whether C++ compiler accepts -Wduplicated-branches... yes
    checking whether C++ compiler accepts -Wduplicated-cond... yes
    checking whether C++ compiler accepts -Wlogical-op... yes
    checking whether C++ compiler accepts -Woverloaded-virtual... yes
    checking whether C++ compiler accepts -Wsuggest-override... yes
    checking whether C++ compiler accepts -Wunreachable-code-loop-increment... no
    checking whether C++ compiler accepts -Wimplicit-fallthrough... yes
    checking whether C++ compiler accepts -Wunused-parameter... yes
    checking whether C++ compiler accepts -Wself-assign... no
    checking whether C++ compiler accepts -Wdeprecated-copy... yes
    checking whether C++ compiler accepts -fno-extended-identifiers... yes
    checking whether C++ compiler accepts -msse4.2... yes
    checking whether C++ compiler accepts -msse4.1... yes
    checking whether C++ compiler accepts -mavx -mavx2... yes
    checking whether C++ compiler accepts -msse4 -msha... yes
    checking whether C++ compiler accepts -mpclmul... yes
    checking for SSE4.2 intrinsics... yes
    checking for SSE4.1 intrinsics... yes
    checking for AVX2 intrinsics... yes
    checking for x86 SHA-NI intrinsics... yes
    checking whether C++ compiler accepts -march=armv8-a+crc+crypto... no
    checking whether C++ compiler accepts -march=armv8-a+crc+crypto... (cached) no
    checking for ARMv8 CRC32 intrinsics... no
    checking for ARMv8 SHA-NI intrinsics... no
    checking whether byte ordering is bigendian... no
    checking how to run the C preprocessor... gcc -E
    checking whether gcc is Clang... no
    checking whether pthreads work with "-pthread" and "-lpthread"... yes
    checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
    checking whether more special flags are required for pthreads... no
    checking for PTHREAD_PRIO_INHERIT... yes
    checking for special C compiler options needed for large files... no
    checking for _FILE_OFFSET_BITS value needed for large files... no
    checking for g++ -std=c++17 options needed to detect all undeclared functions... none needed
    checking whether strerror_r is declared... yes
    checking whether strerror_r returns char *... yes
    checking for library containing clock_gettime... none required
    checking whether C++ compiler accepts -fPIC... yes
    checking whether C++ compiler accepts -fstack-reuse=none... yes
    checking whether C++ compiler accepts -Wstack-protector... yes
    checking whether C++ compiler accepts -fstack-protector-all... yes
    checking whether C++ compiler accepts -fcf-protection=full... yes
    checking whether C++ compiler accepts -fstack-clash-protection... yes
    checking whether C++ preprocessor accepts -D_FORTIFY_SOURCE=2... yes
    checking whether C++ preprocessor accepts -U_FORTIFY_SOURCE... yes
    checking whether the linker accepts -Wl,--enable-reloc-section... no
    checking whether the linker accepts -Wl,--dynamicbase... no
    checking whether the linker accepts -Wl,--nxcompat... no
    checking whether the linker accepts -Wl,--high-entropy-va... no
    checking whether the linker accepts -Wl,-z,relro... yes
    checking whether the linker accepts -Wl,-z,now... yes
    checking whether the linker accepts -Wl,-z,separate-code... yes
    checking whether the linker accepts -fPIE -pie... yes
    checking for endian.h... yes
    checking for sys/endian.h... no
    checking for byteswap.h... yes
    checking for stdio.h... (cached) yes
    checking for stdlib.h... (cached) yes
    checking for unistd.h... (cached) yes
    checking for strings.h... (cached) yes
    checking for sys/types.h... (cached) yes
    checking for sys/stat.h... (cached) yes
    checking for sys/select.h... yes
    checking for sys/prctl.h... yes
    checking for sys/sysctl.h... no
    checking for vm/vm_param.h... no
    checking for sys/vmmeter.h... no
    checking for sys/resources.h... no
    checking whether getifaddrs is declared... yes
    checking whether ifaddrs funcs can be used without link library... yes
    checking whether freeifaddrs is declared... yes
    checking whether ifaddrs funcs can be used without link library... yes
    checking whether fork is declared... yes
    checking whether setsid is declared... yes
    checking whether pipe2 is declared... yes
    checking for timingsafe_bcmp... no
    checking whether le16toh is declared... yes
    checking whether le32toh is declared... yes
    checking whether le64toh is declared... yes
    checking whether htole16 is declared... yes
    checking whether htole32 is declared... yes
    checking whether htole64 is declared... yes
    checking whether be16toh is declared... yes
    checking whether be32toh is declared... yes
    checking whether be64toh is declared... yes
    checking whether htobe16 is declared... yes
    checking whether htobe32 is declared... yes
    checking whether htobe64 is declared... yes
    checking whether bswap_16 is declared... yes
    checking whether bswap_32 is declared... yes
    checking whether bswap_64 is declared... yes
    checking for __builtin_clzl... yes
    checking for __builtin_clzll... yes
    checking for getmemoryinfo... yes
    checking for mallopt M_ARENA_MAX... yes
    checking for posix_fallocate... yes
    checking for default visibility attribute... yes
    checking for dllexport attribute... no
    checking for thread_local support... yes
    checking for gmtime_r... yes
    checking for Linux getrandom syscall... yes
    checking for getentropy via random.h... yes
    checking for sysctl... no
    checking for sysctl KERN_ARND... no
    checking for if type char equals int8_t... no
    checking for fdatasync... yes
    checking for F_FULLFSYNC... no
    checking for O_CLOEXEC... yes
    checking for __builtin_prefetch... yes
    checking for _mm_prefetch... yes
    checking for strong getauxval support in the system headers... yes
    checking for std::system... yes
    checking for ::_wsystem... no
    checking for QT_CORE... no
    configure: WARNING: Qt5Core >= 5.11.3 not found; bitcoin-qt frontend will not be built
    checking whether to build Bitcoin Core GUI... no
    checking whether main function is needed for fuzz binary... checking whether the linker accepts ... no
    yes
    checking for __builtin_mul_overflow... yes
    checking for Berkeley DB C++ headers... default
    configure: WARNING: Found Berkeley DB other than 4.8
    configure: WARNING: BDB (legacy) wallets opened by this build would not be portable!
    configure: WARNING: If this is intended, pass --with-incompatible-bdb
    configure: WARNING: Passing --without-bdb will suppress this warning
    checking for SQLITE... yes
    checking whether to build wallet with support for sqlite... yes
    checking whether Userspace, Statically Defined Tracing tracepoints are supported... yes
    checking for miniupnpc/miniupnpc.h... no
    checking for miniupnpc/upnpcommands.h... no
    checking for miniupnpc/upnperrors.h... no
    checking for natpmp.h... no
    checking for boostlib >= 1.64.0 (106400)... yes
    checking whether Boost.Process can be used... yes
    checking for seccomp-bpf (Linux x86-64)... yes
    checking for EVENT... yes
    checking for EVENT_PTHREADS... yes
    checking if evhttp_connection_get_peer expects const char**... no
    checking for ZMQ... no
    configure: WARNING: libzmq version 4.x or greater not found, disabling
    checking for LIBMULTIPROCESS... no
    checking whether to build bitcoind... yes
    checking whether to build bitcoin-cli... yes
    checking whether to build bitcoin-tx... yes
    checking whether to build bitcoin-wallet... yes
    checking whether to build bitcoin-util... yes
    checking whether to build experimental bitcoin-chainstate... no
    checking whether to build libraries... yes
    checking if ccache should be used... no
    checking if wallet should be enabled... yes
    checking whether to build with support for UPnP... no
    checking whether to build with support for NAT-PMP... no
    checking whether to build test_bitcoin... yes
    checking whether to reduce exports... no
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating libbitcoinconsensus.pc
    config.status: creating Makefile
    config.status: creating src/Makefile
    config.status: creating doc/man/Makefile
    config.status: creating share/setup.nsi
    config.status: creating share/qt/Info.plist
    config.status: creating test/config.ini
    config.status: creating contrib/devtools/split-debug.sh
    config.status: creating src/config/bitcoin-config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    === configuring in src/secp256k1 (/bitcoin/src/secp256k1)
    configure: running /bin/sh ./configure --disable-option-checking '--prefix=/usr/local'  '--disable-shared' '--with-pic' '--enable-benchmark=no' '--enable-module-recovery' '--enable-module-schnorrsig' --cache-file=/dev/null --srcdir=.
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/sbin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether make supports nested variables... (cached) yes
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to enable C11 features... none needed
    checking whether gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of gcc... gcc3
    checking dependency style of gcc... gcc3
    checking for ar... ar
    checking the archiver (ar) interface... ar
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/sbin/sed
    checking for grep that handles long lines and -e... /usr/sbin/grep
    checking for egrep... /usr/sbin/grep -E
    checking for fgrep... /usr/sbin/grep -F
    checking for ld used by gcc... /usr/sbin/ld
    checking if the linker (/usr/sbin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/sbin/nm -B
    checking the name lister (/usr/sbin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/sbin/ld option to reload object files... -r
    checking for file... file
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... no
    checking how to associate runtime and link libraries... printf %s\n
    checking for archiver [@FILE](/bitcoin-bitcoin/contributor/file/) support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/sbin/nm -B output from gcc object... ok
    checking for sysroot... no
    checking for a working dd... /usr/sbin/dd
    checking how to truncate binary pipes... /usr/sbin/dd bs=4096 count=1
    checking for mt... no
    checking if : is a manifest tool... no
    checking for stdio.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for strings.h... yes
    checking for sys/stat.h... yes
    checking for sys/types.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC -DPIC
    checking if gcc PIC flag -fPIC -DPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking if gcc supports -c -o file.o... (cached) yes
    checking whether the gcc linker (/usr/sbin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... no
    checking whether to build static libraries... yes
    checking if gcc supports -Werror=unknown-warning-option... no
    checking if gcc supports -std=c89 -pedantic -Wno-long-long -Wnested-externs -Wshadow -Wstrict-prototypes -Wundef... yes
    checking if gcc supports -Wno-overlength-strings... yes
    checking if gcc supports -Wall... yes
    checking if gcc supports -Wno-unused-function... yes
    checking if gcc supports -Wextra... yes
    checking if gcc supports -Wcast-align... yes
    checking if gcc supports -Wcast-align=strict... yes
    checking if gcc supports -Wconditional-uninitialized... no
    checking if gcc supports -fvisibility=hidden... yes
    checking for x86_64 assembly availability... yes
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating libsecp256k1.pc
    config.status: creating src/libsecp256k1-config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    
    Build Options:
      with external callbacks = no
      with benchmarks         = no
      with tests              = yes
      with coverage           = no
      with examples           = no
      module ecdh             = no
      module recovery         = yes
      module extrakeys        = yes
      module schnorrsig       = yes
    
      asm                     = x86_64
      ecmult window size      = 15
      ecmult gen prec. bits   = 4
    
      valgrind                = no
      CC                      = gcc
      CPPFLAGS                =  
      SECP_CFLAGS             = -O2  -std=c89 -pedantic -Wno-long-long -Wnested-externs -Wshadow -Wstrict-prototypes -Wundef -Wno-overlength-strings -Wall -Wno-unused-function -Wextra -Wcast-align -Wcast-align=strict -fvisibility=hidden 
      CFLAGS                  = -g -O2
      LDFLAGS                 = 
    
    Options used to compile and link:
      external signer = yes
      multiprocess    = no
      with experimental syscall sandbox support = yes
      with libs       = yes
      with wallet     = yes
        with sqlite   = yes
        with bdb      = no
      with gui / qt   = no
      with zmq        = no
      with test       = yes
      with fuzz binary = yes
      with bench      = yes
      with upnp       = no
      with natpmp     = no
      use asm         = yes
      USDT tracing    = yes
      sanitizers      = 
      debug enabled   = no
      gprof enabled   = no
      werror          = no
      LTO             = no
    
      target os       = linux-gnu
      build os        = linux-gnu
    
      CC              = gcc
      CFLAGS          = -pthread -g -O2
      CPPFLAGS        =   -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2  -DHAVE_BUILD_INFO -DPROVIDE_FUZZ_MAIN_FUNCTION 
      CXX             = g++ -std=c++17
      CXXFLAGS        =    -fstack-reuse=none -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection  -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough  -Wno-unused-parameter -Wno-deprecated-copy    -fno-extended-identifiers -g -O2
      LDFLAGS         =  -lpthread  -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -pie   
      ARFLAGS         = cr
    

    The tests are passing and bitcoind seems to be fully functional

  15. in doc/build-unix.md:290 in 746d164ffa outdated
     288 | -    ./configure --disable-wallet --without-gui --without-miniupnpc
     289 | +    ./configure
     290 |      make check
     291 | -
     292 | -Note:
     293 | -Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package `db`) using `--with-incompatible-bdb`,
    


    laanwj commented at 9:20 PM on June 21, 2022:

    I don't think we're there yet that we should remove instructions for the legacy wallet. I think it makes sense to keep this but explicitly mention that it's needed for the legacy wallet only.


    bubelov commented at 4:10 AM on June 22, 2022:

    @laanwj I agree, but I'm not sure if it belongs to Arch section. This note might help someone build Bitcoin Core with incompatible legacy DB, which is still problematic

    There is a separate section which explains how to include compatible bdb, and it seems to be the recommended approach: https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md#berkeley-db

    If the concern is that people might miss this section, maybe it worth adding a link to it instead of repeating similar recipes in every distribution-specific section


    laanwj commented at 4:19 AM on June 22, 2022:

    Yes, agree that adding a link to that section is a better idea. Makes at least sense to mention it. A lot of people will want a bitcoind that is compatible with old wallets as well, could be surprised if they simply follow these instructions and it doesn't work.

    This note might help someone build Bitcoin Core with incompatible legacy DB, which is still problematic

    Sure, yes. As someone who always builds bitcoind from source --with-incompatible-bdb is something I automatically type :smile: But from the perspective of someone who uses the guide for the first time it's not a good recommendation.


  16. laanwj commented at 4:48 AM on June 22, 2022: member

    ACK d57a0ed734e4b98b42f13fdf6c05d99434139dc0 re-ACK f67b6fce3777ea8dfd23b3983d0b46a2f69d7d77

  17. MarcoFalke commented at 5:28 AM on June 22, 2022: member
  18. Update Arch Linux build example f67b6fce37
  19. bubelov force-pushed on Jun 22, 2022
  20. bubelov commented at 6:16 AM on June 22, 2022: contributor
  21. laanwj merged this on Jun 22, 2022
  22. laanwj closed this on Jun 22, 2022

  23. sidhujag referenced this in commit b7b7df3266 on Jun 22, 2022
  24. DrahtBot locked this on Jun 22, 2023

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-17 09:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me