-
Notifications
You must be signed in to change notification settings - Fork 38.7k
doc: Update Arch Linux build example #25414
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Where were |
|
|
|
I wouldn't recommend not building/running the tests. |
|
@sipa done. May I ask what's the point of doing that? I assume that the |
|
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. |
dongcarl
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- The claim that the wallet functionality will be missing is obsolete since Bitcoin Core can use SQLite, which is a hard dependency of
pacmanso 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.
- Installing package groups such as
base-develadds 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.
doc/build-unix.md
Outdated
| pacman --sync git autoconf automake pkgconf libtool clang boost make python | ||
| git clone https://github.com/bitcoin/bitcoin.git | ||
| cd bitcoin/ | ||
| ./autogen.sh | ||
| ./configure --disable-wallet --without-gui --without-miniupnpc | ||
| ./configure |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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 =)
I believe that the scope is even wider than that. There is a separate page called Which should probably be changed to: according to @sipa feedback |
|
Concept ACK.
Right. FWIW, even for the release binaries we ship |
doc/build-unix.md
Outdated
| This example lists the steps necessary to setup and build a command line only distribution of the latest changes on Arch Linux: | ||
|
|
||
| pacman -S git base-devel boost libevent python | ||
| pacman --sync git autoconf automake pkgconf libtool clang boost make python |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
any reason to remove libevent?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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)
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsNo conflicts as of last run. |
|
A few comments on the latest changes:
Here is a full list of deps, including required indirect deps: Here is the output of The tests are passing and |
|
ACK d57a0ed734e4b98b42f13fdf6c05d99434139dc0 |
|
Please squash your commits according to https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md#squashing-commits |
Done |
The current build example has two issues:
pacmanso we can assume that it's always present.base-develadds 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.