You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
c180c91 doc: revamp macOS build doc (Jarol Rodriguez)
Pull request description:
This PR makes the macOS build-docs more informative and adds in the following information:
- Proper descriptions and delineation of required/optional dependencies
- walk-through of optional dependencies
- configuration walk-through
- various other tidbits of information
This is a part of the efforts done in bitcoin#20601 and bitcoin#20610 to update the docs and introduce some consistency between them.
This update does not add instructions for arm-based M1 Macbooks as I do not have one to test with. It would be nice to have someone follow up with an update containing instructions for arm-based Macs.
**Before/Master:** [render](https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md)
**After/PR:** [render](https://github.com/bitcoin/bitcoin/blob/c180c911b88b2bd2baf2c9c2b24e276787ffb69b/doc/build-osx.md)
ACKs for top commit:
fanquake:
ACK c180c91 - I still think these are getting too verbose and we're duplicating information all over the place; dependencies, configure options, combinations of options etc. However if people are happy to maintain them, I guess it's fine for now, and this revamping has already happened for some of the other build READMEs.
Tree-SHA512: 1440046c723fe80d4158e4a429e3aa8bd93570acb84ad202d5d24c749ab9a89a3aca8b61b49e75e042a4bf4317acd632d3906e1b5808a9052e74209256528b45
[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
[qrencode](https://formulae.brew.sh/formula/qrencode) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
[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:
[librsvg](https://formulae.brew.sh/formula/librsvg) | Deploy Dependency| Library to render SVG files
39
+
[ds_store](https://pypi.org/project/ds-store/) | Deploy Dependency| Examine and modify .DS_Store files
40
+
[mac_alias](https://pypi.org/project/mac-alias/) | Deploy Dependency| Generate/Read binary alias and bookmark records
41
+
42
+
See [dependencies.md](dependencies.md) for a complete overview.
43
+
44
+
## Preparation
2
45
3
46
The commands in this guide should be executed in a Terminal application.
4
-
The built-in one is located in
47
+
macOS comes with a built-in Terminal located in:
48
+
5
49
```
6
50
/Applications/Utilities/Terminal.app
7
51
```
8
52
9
-
## Preparation
10
-
Install the macOS command line tools:
53
+
### 1. Xcode Command Line Tools
11
54
12
-
```shell
55
+
The Xcode Command Line Tools are a collection of build tools for macOS.
56
+
These tools must be installed in order to build Dash Core from source.
57
+
58
+
To install, run the following command from your terminal:
59
+
60
+
```bash
13
61
xcode-select --install
14
62
```
15
63
16
-
When the popup appears, click `Install`.
64
+
Upon running the command, you should see a popup appear.
65
+
Click on `Install` to continue the installation process.
17
66
18
-
Then install [Homebrew](https://brew.sh).
Homebrew is a package manager for macOS that allows one to install packages from the command line easily.
70
+
While several package managers are available for macOS, this guide will focus on Homebrew as it is the most popular.
71
+
Since the examples in this guide which walk through the installation of a package will use Homebrew, it is recommended that you install it to follow along.
72
+
Otherwise, you can adapt the commands to your package manager of choice.
73
+
74
+
To install the Homebrew package manager, see: https://brew.sh
75
+
76
+
Note: If you run into issues while installing Homebrew or pulling packages, refer to [Homebrew's troubleshooting page](https://docs.brew.sh/Troubleshooting).
77
+
78
+
### 3. Install Required Dependencies
79
+
80
+
The first step is to download the required dependencies.
81
+
These dependencies represent the packages required to get a barebones installation up and running.
If you run into issues, check [Homebrew's troubleshooting page](https://docs.brew.sh/Troubleshooting).
26
-
See [dependencies.md](dependencies.md) for a complete overview.
88
+
### 4. Clone Dash repository
27
89
28
-
The wallet support requires one or both of the dependencies ([*SQLite*](#sqlite) and [*Berkeley DB*](#berkeley-db)) in the sections below.
29
-
To build Dash Core without wallet, see [*Disable-wallet mode*](#disable-wallet-mode).
90
+
`git` should already be installed by default on your system.
91
+
Now that all the required dependencies are installed, let's clone the Dash Core repository to a directory.
92
+
All build scripts and commands will run from this directory.
Usually, macOS installation already has a suitable SQLite installation.
34
-
Also, the Homebrew package could be installed:
98
+
### 5. Install Optional Dependencies
35
99
36
-
```shell
100
+
#### Wallet Dependencies
101
+
102
+
It is not necessary to build wallet functionality to run `dashd` or `dash-qt`.
103
+
To enable legacy wallets, you must install `berkeley-db@4`.
104
+
To enable [descriptor wallets](https://github.com/dashpay/dash/blob/master/doc/descriptors.md), `sqlite` is required.
105
+
Skip `berkeley-db@4` if you intend to *exclusively* use descriptor wallets.
106
+
107
+
###### Legacy Wallet Support
108
+
109
+
`berkeley-db@4` is required to enable support for legacy wallets.
110
+
Skip if you don't intend to use legacy wallets.
111
+
112
+
```bash
113
+
brew install berkeley-db@4
114
+
```
115
+
116
+
###### Descriptor Wallet Support
117
+
118
+
Note: Apple has included a useable `sqlite` package since macOS 10.14.
119
+
You may not need to install this package.
120
+
121
+
`sqlite` is required to enable support for descriptor wallets.
122
+
Skip if you don't intend to use descriptor wallets.
123
+
124
+
```bash
37
125
brew install sqlite
38
126
```
127
+
---
39
128
40
-
In that case the Homebrew package will prevail.
129
+
#### GUI Dependencies
41
130
42
-
If you want to build the disk image with `make deploy` (.dmg / optional), you need:
The first time you run dashd, it will start downloading the blockchain. This process could take many hours, or even days on slower than average systems.
120
-
121
315
You can monitor the download process by looking at the debug.log file:
./src/dash-cli --help # Outputs a list of command-line options.
131
326
./src/dash-cli help# Outputs a list of RPC commands when the daemon is running.
327
+
./src/qt/dash-qt -server # Starts the dash-qt server mode, allows dash-cli control
132
328
```
133
-
134
-
## Notes
135
-
136
-
* Tested on OS X 10.12 Sierra through macOS 10.15 Catalina on 64-bit Intel
137
-
processors only.
138
-
* Building with downloaded Qt binaries is not officially supported. See the notes in [#7714](https://github.com/bitcoin/bitcoin/issues/7714).
0 commit comments