Closes: #32512
- Provide Alpine build instructions in build-unix.md.
- Instructions cover building all components except USDT, which requires some
libc
-specific functionality.
Closes: #32512
libc
-specific functionality.The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/32559.
See the guideline for information on the review process. A summary of reviews will appear here.
143+
144+#### Dependency Build Instructions
145+
146+Build requirements:
147+
148+ apk add build-base cmake libressl libtool linux-headers python3
libtool
?
pkgconf
.
libressl
?
Crikey that’s an old hangover….
I ported initial requirements from my current Alpine Dockerfile
I foolishly assumed this was just the case of Alpine splitting packages more granularly that e.g. Ubuntu, but taking a closer look now suspect this is a hangover from pre 0.12 where we supported SSL on RPC?
Removed in 5332082d009
libtool
and added pkgconf
52@@ -53,6 +53,21 @@ To build dependencies for the current arch+OS:
53
54 gmake
55
56+### Alpine
57+
58+ apk add bash build-base cmake curl m4 make patch
m4
here?
64+To build dependencies for the current arch+OS:
65+
66+ make
67+
68+> [!TIP]
69+> Avoid parallel build jobs when building depends on Alpine.
147+
148+ apk add build-base cmake linux-headers pkgconf python3
149+
150+Now, you can either build from self-compiled [depends](#dependencies) or install the required dependencies:
151+
152+ apk add libevent-dev boost-dev
linux-headers
is a dependency of boost-dev
on my system.
61+
62+ apk add bison linux-headers ninja-build pkgconf python3 xz
63+
64+To build dependencies for the current arch+OS:
65+
66+ make
gmake
, which explicitly refers to GNU Make, also works.
160+ZMQ dependencies (provides ZMQ API):
161+
162+ apk add zeromq-dev
163+
164+User-Space, Statically Defined Tracing (USDT) is not directly compatible on
165+Alpine as it uses libc functionality not available on musl.
However, depends build the systemtap
package. The subsequent configuration results in:
0# cmake -B build --toolchain depends/x86_64-pc-linux-musl/toolchain.cmake
1<snip>
2 USDT tracing ........................ ON
3<snip>
And the build succeeds.
cc @0xB10C
57+
58+ apk add bash build-base cmake curl make patch
59+
60+Skip the following packages if you don't intend to use the GUI and will build with [`NO_QT=1`](#dependency-options):
61+
62+ apk add bison linux-headers ninja-build pkgconf python3 xz
apk
:0Executing ninja-build-1.12.1-r1.post-install
1* this only installs ninja to /usr/lib/ninja-build/bin/ninja
2* add that to your path to use it, or invoke it directly.
3* for most uses, you want samurai instead:
4* $ apk add samurai
5* which has a "ninja" executable compatible with ninja.
and install samurai
. Otherwise, Qt still complains:
0CMake Warning at qtbase/cmake/QtBuildHelpers.cmake:12 (message):
1 The officially supported CMake generator for building Qt is Ninja / Ninja
2 Multi-Config. You are using: 'Unix Makefiles' instead. Thus, you might
3 encounter issues. Use at your own risk.
xz
really necessary?