Skip to content

Commit ee47800

Browse files
committed
Merge bitcoin/bitcoin#23565: doc: rewrite dependencies.md
893e180 doc: rework dependencies.md (fanquake) Pull request description: This PR rewrites dependencies.md. The current list is hard to parse, includes information that is either incorrect and/or misleading, and duplicates info in other documentation. The list of dependencies is much smaller, because it's now just the actual dependencies of Bitcoin Core, not random Qt things, or the dependencies of other tooling. We don't need _another_ section on configure flag usage, or, to have duplicated lists of dependencies in other build docs, as that somewhat defeats the point of having dependencies.md, and just means more effort keeping things in sync. ACKs for top commit: MarcoFalke: cr ACK 893e180 hebasto: ACK 893e180, I have reviewed the code and it looks OK, I agree it can be merged. jarolrod: crACK bitcoin/bitcoin@893e180 Tree-SHA512: 6750eaf70d5ebc9c364ade1d4b5b689e3094020eeb444a3de93b33d9a57a1577949a461f8209442d3954ccb22ab038c7e8cf6dfff5623e4f2713606b6798c37e
2 parents 310ba92 + 893e180 commit ee47800

File tree

4 files changed

+63
-133
lines changed

4 files changed

+63
-133
lines changed

doc/build-freebsd.md

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,6 @@
44

55
This guide describes how to build bitcoind, command-line utilities, and GUI on FreeBSD.
66

7-
## Dependencies
8-
9-
The following dependencies are **required**:
10-
11-
Library | Purpose | Description
12-
----------------------------------------------------------------------|------------|----------------------
13-
[autoconf](https://svnweb.freebsd.org/ports/head/devel/autoconf/) | Build | Automatically configure software source code
14-
[automake](https://svnweb.freebsd.org/ports/head/devel/automake/) | Build | Generate makefile (requires autoconf)
15-
[libtool](https://svnweb.freebsd.org/ports/head/devel/libtool/) | Build | Shared library support
16-
[pkgconf](https://svnweb.freebsd.org/ports/head/devel/pkgconf/) | Build | Configure compiler and linker flags
17-
[git](https://svnweb.freebsd.org/ports/head/devel/git/) | Clone | Version control system
18-
[gmake](https://svnweb.freebsd.org/ports/head/devel/gmake/) | Compile | Generate executables
19-
[boost-libs](https://svnweb.freebsd.org/ports/head/devel/boost-libs/) | Utility | Library for threading, data structures, etc
20-
[libevent](https://svnweb.freebsd.org/ports/head/devel/libevent/) | Networking | OS independent asynchronous networking
21-
22-
23-
The following dependencies are **optional**:
24-
25-
Library | Purpose | Description
26-
---------------------------------------------------------------------------|------------------|----------------------
27-
[db5](https://svnweb.freebsd.org/ports/head/databases/db5/) | Berkeley DB | Wallet storage (only needed when wallet enabled)
28-
[qt5](https://svnweb.freebsd.org/ports/head/devel/qt5/) | GUI | GUI toolkit (only needed when GUI enabled)
29-
[libqrencode](https://svnweb.freebsd.org/ports/head/graphics/libqrencode/) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
30-
[libzmq4](https://svnweb.freebsd.org/ports/head/net/libzmq4/) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
31-
[sqlite3](https://svnweb.freebsd.org/ports/head/databases/sqlite3/) | SQLite DB | Wallet storage (only needed when wallet enabled)
32-
[python3](https://svnweb.freebsd.org/ports/head/lang/python3/) | Testing | Python Interpreter (only needed when running the test suite)
33-
34-
See [dependencies.md](dependencies.md) for a complete overview.
35-
367
## Preparation
378

389
### 1. Install Required Dependencies
@@ -43,6 +14,8 @@ pkg install autoconf automake boost-libs git gmake libevent libtool pkgconf
4314

4415
```
4516

17+
See [dependencies.md](dependencies.md) for a complete overview.
18+
4619
### 2. Clone Bitcoin Repo
4720
Now that `git` and all the required dependencies are installed, let's clone the Bitcoin Core repository to a directory. All build scripts and commands will run from this directory.
4821
``` bash
@@ -84,6 +57,14 @@ pkg install libqrencode
8457
```
8558
---
8659

60+
#### Notifications
61+
###### ZeroMQ
62+
63+
Bitcoin Core can provide notifications via ZeroMQ. If the package is installed, support will be compiled in.
64+
```bash
65+
pkg install libzmq4
66+
```
67+
8768
#### Test Suite Dependencies
8869
There is an included test suite that is useful for testing code changes when developing.
8970
To run the test suite (recommended), you will need to have Python 3 installed:

doc/build-osx.md

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,6 @@ This guide describes how to build bitcoind, command-line utilities, and GUI on m
66

77
**Note:** The following is for Intel Macs only!
88

9-
## Dependencies
10-
11-
The following dependencies are **required**:
12-
13-
Library | Purpose | Description
14-
-----------------------------------------------------------|------------|----------------------
15-
[automake](https://formulae.brew.sh/formula/automake) | Build | Generate makefile
16-
[libtool](https://formulae.brew.sh/formula/libtool) | Build | Shared library support
17-
[pkg-config](https://formulae.brew.sh/formula/pkg-config) | Build | Configure compiler and linker flags
18-
[boost](https://formulae.brew.sh/formula/boost) | Utility | Library for threading, data structures, etc
19-
[libevent](https://formulae.brew.sh/formula/libevent) | Networking | OS independent asynchronous networking
20-
21-
The following dependencies are **optional**:
22-
23-
Library | Purpose | Description
24-
--------------------------------------------------------------- |------------------|----------------------
25-
[berkeley-db@4](https://formulae.brew.sh/formula/berkeley-db@4) | Berkeley DB | Wallet storage (only needed when wallet enabled)
26-
[qt@5](https://formulae.brew.sh/formula/qt@5) | GUI | GUI toolkit (only needed when GUI enabled)
27-
[qrencode](https://formulae.brew.sh/formula/qrencode) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
28-
[zeromq](https://formulae.brew.sh/formula/zeromq) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
29-
[sqlite](https://formulae.brew.sh/formula/sqlite) | SQLite DB | Wallet storage (only needed when wallet enabled)
30-
[miniupnpc](https://formulae.brew.sh/formula/miniupnpc) | UPnP Support | Firewall-jumping support (needed for port mapping support)
31-
[libnatpmp](https://formulae.brew.sh/formula/libnatpmp) | NAT-PMP Support | Firewall-jumping support (needed for port mapping support)
32-
[python3](https://formulae.brew.sh/formula/[email protected]) | Testing | Python Interpreter (only needed when running the test suite)
33-
34-
The following dependencies are **optional** packages required for deploying:
35-
36-
Library | Purpose | Description
37-
----------------------------------------------------|------------------|----------------------
38-
[ds_store](https://pypi.org/project/ds-store/) | Deploy Dependency| Examine and modify .DS_Store files
39-
[mac_alias](https://pypi.org/project/mac-alias/) | Deploy Dependency| Generate/Read binary alias and bookmark records
40-
41-
See [dependencies.md](dependencies.md) for a complete overview.
42-
439
## Preparation
4410

4511
The commands in this guide should be executed in a Terminal application.
@@ -78,6 +44,9 @@ Note: If you run into issues while installing Homebrew or pulling packages, refe
7844

7945
The first step is to download the required dependencies.
8046
These dependencies represent the packages required to get a barebones installation up and running.
47+
48+
See [dependencies.md](dependencies.md) for a complete overview.
49+
8150
To install, run the following from your terminal:
8251

8352
``` bash

doc/build-unix.md

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,7 @@ make install # optional
2626

2727
This will build bitcoin-qt as well, if the dependencies are met.
2828

29-
Dependencies
30-
---------------------
31-
32-
These dependencies are required:
33-
34-
Library | Purpose | Description
35-
------------|------------------|----------------------
36-
libboost | Utility | Library for threading, data structures, etc
37-
libevent | Networking | OS independent asynchronous networking
38-
39-
Optional dependencies:
40-
41-
Library | Purpose | Description
42-
------------|------------------|----------------------
43-
miniupnpc | UPnP Support | Firewall-jumping support
44-
libnatpmp | NAT-PMP Support | Firewall-jumping support
45-
libdb4.8 | Berkeley DB | Wallet storage (only needed when legacy wallet enabled)
46-
qt | GUI | GUI toolkit (only needed when GUI enabled)
47-
libqrencode | QR codes in GUI | QR code generation (only needed when GUI enabled)
48-
libzmq3 | ZMQ notification | ZMQ notifications (requires ZMQ version >= 4.0.0)
49-
sqlite3 | SQLite DB | Wallet storage (only needed when descriptor wallet enabled)
50-
systemtap | Tracing (USDT) | Statically defined tracepoints
51-
52-
For the versions used, see [dependencies.md](dependencies.md)
29+
See [dependencies.md](dependencies.md) for a complete overview.
5330

5431
Memory Requirements
5532
--------------------

doc/dependencies.md

Lines changed: 49 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,49 @@
1-
Dependencies
2-
============
3-
4-
These are the dependencies currently used by Bitcoin Core. You can find instructions for installing them in the `build-*.md` file for your platform.
5-
6-
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) |
7-
| --- | --- | --- | --- | --- | --- |
8-
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
9-
| Boost | [1.77.0](https://www.boost.org/users/download/) | [1.64.0](https://github.com/bitcoin/bitcoin/pull/22320) | No | | |
10-
| Clang | | [8.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | |
11-
| Fontconfig | [2.12.6](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
12-
| FreeType | [2.11.0](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Android only) |
13-
| GCC | | [8.1](https://gcc.gnu.org/) (C++17 & std::filesystem support) | | | |
14-
| glibc | | [2.18](https://www.gnu.org/software/libc/) | | | | |
15-
| HarfBuzz-NG | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
16-
| libevent | [2.1.12-stable](https://github.com/libevent/libevent/releases) | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No | | |
17-
| libnatpmp | git commit [4536032...](https://github.com/miniupnp/libnatpmp/tree/4536032ae32268a45c073a4d5e91bbab4534773a) | | No | | |
18-
| libpng | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
19-
| MiniUPnPc | [2.2.2](https://miniupnp.tuxfamily.org/files) | | No | | |
20-
| PCRE | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
21-
| Python (tests) | | [3.6](https://www.python.org/downloads) | | | |
22-
| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | |
23-
| Qt | [5.15.2](https://download.qt.io/official_releases/qt/) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No | | |
24-
| SQLite | [3.32.1](https://sqlite.org/download.html) | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | | | |
25-
| XCB | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Linux only) |
26-
| systemtap ([tracing](tracing.md))| [4.5](https://sourceware.org/systemtap/ftp/releases/) | | | | |
27-
| xkbcommon | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Linux only) |
28-
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
29-
| zlib | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
30-
31-
Controlling dependencies
32-
------------------------
33-
Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list.
34-
35-
#### Options passed to `./configure`
36-
* MiniUPnPc is not needed with `--without-miniupnpc`.
37-
* libnatpmp is not needed with `--without-natpmp`.
38-
* Berkeley DB is not needed with `--disable-wallet` or `--without-bdb`.
39-
* SQLite is not needed with `--disable-wallet` or `--without-sqlite`.
40-
* Qt is not needed with `--without-gui`.
41-
* If the qrencode dependency is absent, QR support won't be added. To force an error when that happens, pass `--with-qrencode`.
42-
* If the systemtap dependency is absent, USDT support won't compiled in.
43-
* ZeroMQ is needed only with the `--with-zmq` option.
44-
45-
#### Other
46-
* Not-Qt-bundled zlib is required to build the [DMG tool](../contrib/macdeploy/README.md#deterministic-macos-dmg-notes) from the libdmg-hfsplus project.
1+
# Dependencies
2+
3+
These are the dependencies used by Bitcoin Core.
4+
You can find installation instructions in the `build-*.md` file for your platform.
5+
"Runtime" and "Version Used" are both in reference to the release binaries.
6+
7+
| Compiler | Minimum required |
8+
| --- | --- |
9+
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
10+
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
11+
| [Clang](https://clang.llvm.org) | [8.0](https://github.com/bitcoin/bitcoin/pull/24164) |
12+
| [GCC](https://gcc.gnu.org) | [8.1](https://github.com/bitcoin/bitcoin/pull/23060) |
13+
| [Python](https://www.python.org) (tests) | [3.6](https://github.com/bitcoin/bitcoin/pull/19504) |
14+
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
15+
16+
## Required
17+
18+
| Dependency | Version used | Minimum required | Runtime |
19+
| --- | --- | --- | --- |
20+
| [Boost](https://www.boost.org/users/download/) | 1.77.0 | [1.64.0](https://github.com/bitcoin/bitcoin/pull/22320) | No |
21+
| [libevent](https://github.com/libevent/libevent/releases) | 2.1.12-stable | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No |
22+
| [glibc](https://www.gnu.org/software/libc/) | N/A | [2.18](https://github.com/bitcoin/bitcoin/pull/23511) | Yes |
23+
24+
## Optional
25+
26+
### GUI
27+
| Dependency | Version used | Minimum required | Runtime |
28+
| --- | --- | --- | --- |
29+
| [Fontconfig](https://www.freedesktop.org/wiki/Software/fontconfig/) | 2.12.6 | 2.6 | Yes |
30+
| [FreeType](https://freetype.org) | 2.11.0 | 2.3.0 | Yes |
31+
| [qrencode](https://fukuchi.org/works/qrencode/) | [3.4.4](https://fukuchi.org/works/qrencode) | | No |
32+
| [Qt](https://www.qt.io) | [5.15.2](https://download.qt.io/official_releases/qt/) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No |
33+
34+
### Networking
35+
| Dependency | Version used | Minimum required | Runtime |
36+
| --- | --- | --- | --- |
37+
| [libnatpmp](https://github.com/miniupnp/libnatpmp/) | commit [4536032...](https://github.com/miniupnp/libnatpmp/tree/4536032ae32268a45c073a4d5e91bbab4534773a) | | No |
38+
| [MiniUPnPc](https://miniupnp.tuxfamily.org/) | 2.2.2 | 1.9 | No |
39+
40+
### Notifications
41+
| Dependency | Version used | Minimum required | Runtime |
42+
| --- | --- | --- | --- |
43+
| [ZeroMQ](https://zeromq.org) | 4.3.4 | 4.0.0 | No |
44+
45+
### Wallet
46+
| Dependency | Version used | Minimum required | Runtime |
47+
| --- | --- | --- | --- |
48+
| [Berkeley DB](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) (legacy wallet) | 4.8.30 | 4.8.x | No |
49+
| [SQLite](https://sqlite.org) | 3.32.1 | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | No |

0 commit comments

Comments
 (0)