aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
AgeCommit message (Collapse)Author
2022-04-04Merge bitcoin/bitcoin#24558: build: explicitly disable Boost multi_index ↵MarcoFalke
serialization 0d01272cd883f4d2a53409fdc49b8732a3dbda26 build: don't use Boost multi_index serialization (fanquake) Pull request description: We don't use the serialization or archiving facilities of multi_index. So globally disable support, which gives a minor improvement in build time, i.e less preprocessing work, given we don't link any Boost libs. See: https://www.boost.org/doc/libs/1_78_0/libs/multi_index/doc/tutorial/creation.html > Serialization capabilities are automatically provided by just linking with the appropriate Boost.Serialization library module: it is not necessary to explicitly include any header from Boost.Serialization, apart from those declaring the type of archive used in the process. If not used, however, serialization support can be disabled by globally defining the macro BOOST_MULTI_INDEX_DISABLE_SERIALIZATION. Disabling serialization for Boost.MultiIndex can yield a small improvement in build times, and may be necessary in those defective compilers that fail to correctly process Boost.Serialization headers. ACKs for top commit: MarcoFalke: cr ACK 0d01272cd883f4d2a53409fdc49b8732a3dbda26 Tree-SHA512: 87c664a2f142dc6b8f8598341f9829be3fda8cf614d73cc9a894c8033ee40c6daa9b50f4049ecb1f1e3aaf342568d9a5f5c65af1e04c36ee3a9cb46eca95767b
2022-04-03build: stop overriding user CXXFLAGSfanquake
Let users have the final say in regards to CXXFLAGS.
2022-04-03build: stop overriding user LDFLAGSfanquake
Let the user have the final say in regards to LDFLAGS.
2022-04-03build: stop overriding user CPPFLAGSfanquake
Let the user have the final say in regards to CPPFLAGS
2022-04-02doc: explain why we clear CXXFLAGS with enable-debugfanquake
2022-04-02build: don't use Boost multi_index serializationfanquake
We don't use the serialilzation or archiving facilities of multi_index. So globally disable support, which gives a minor improvement in build time, i.e less preprocessing work. See: https://www.boost.org/doc/libs/1_78_0/libs/multi_index/doc/tutorial/creation.html
2022-04-01build: remove faketime unsetting and comments from configure.acfanquake
2022-03-30Merge bitcoin/bitcoin#24704: compat: remove strnlen back-compat codeMarcoFalke
d4ba2b2cbc3d1ef381fbdbae88cb5b18ca53f678 compat: remove strnlen back-compat code (fanquake) Pull request description: This was needed for mingw (not mingw-w64), and some older versions of macOS, which we no-longer support. ACKs for top commit: hebasto: ACK d4ba2b2cbc3d1ef381fbdbae88cb5b18ca53f678 Tree-SHA512: d1beb9df58464feea3076091361d7d46e4a8901e347644a5fa6f24e052ca24ee0c7c0dd3f2a3d682b0204bf50430fa89eac62121691ea08af6dcf6b907bdec87
2022-03-29Merge bitcoin/bitcoin#24523: build: Fix Boost.Process test for Boost 1.78laanwj
532c64a7264dd3c7329e8839547837c57da7dbe8 build: Fix Boost.Process test for Boost 1.78 (Hennadii Stepanov) Pull request description: Rebased #24415 with Luke's suggestion. Fixes #24413. ACKs for top commit: hebasto: ACK 532c64a7264dd3c7329e8839547837c57da7dbe8, tested on Mac mini (M1, 2020) + macOS Monterey 12.3 (21E230). Tree-SHA512: 74f779695f6bbc45a2b7341a1402f747cc0d433d74825c7196cb9f156db0c0299895365f01665bd0bff12a8ebb5ea33a29b9a52f5eac0007ec35d1dca6544705
2022-03-29compat: remove strnlen back-compat codefanquake
This was needed for mingw (not mingw-w64), and some older versions of macOS, which we no-longer support.
2022-03-29Merge bitcoin/bitcoin#24633: Bugfix: configure: Quote SUPPRESS_WARNINGS ↵fanquake
sufficiently to preserve brackets 5a157eb3703e1e65ed285f13a824562ab12aa3ff Bugfix: configure: Only avoid -isystem for exact /usr/include path (Luke Dashjr) 556ee6f2fa0e2da2bb12fe05a885431f61db2e47 Bugfix: configure: Quote SUPPRESS_WARNINGS sufficiently to preserve brackets (Luke Dashjr) Pull request description: The regex includes `[/ ]` which is supposed to match either a forward slash or a space, but m4 treats the brackets as special characters and effectively strips them out, leading to -isystem /usr/include paths except for in the typical scenario where it is the final parameter in the flag string. ACKs for top commit: hebasto: ACK 5a157eb3703e1e65ed285f13a824562ab12aa3ff, tested on Ubuntu 22.04 with clang 14.0. vasild: ACK 5a157eb3703e1e65ed285f13a824562ab12aa3ff Tree-SHA512: 5c8c282b647b7853b8fad1b5b473703c4a0635073d2685a8ac984151046e2c6a859e6972465419d27356dd29a47f21a2a3a6ad402ec434fe1f9882e5a35f0749
2022-03-26build: Bump libevent minimum version up to 2.1.8Hennadii Stepanov
Required to support new functionality.
2022-03-24Merge bitcoin/bitcoin#24169: build: Add --enable-c++20 optionfanquake
999982b06ce1d1280e5ce48f9253c6c536f41a12 build: Add --enable-c++20 option (MarcoFalke) fae679065e4ef0c6383bbdd1876aaed6c1e40104 Add CSerializedNetMsg::Copy() helper (MarcoFalke) fabb7c4ba629ecdea80a23674e2659d3d391565f Make fs.h C++20 compliant (MarcoFalke) fae2220f4e48934313389864d3d362f672627eb8 scheduler: Capture ‘this’ explicitly in lambda (MarcoFalke) Pull request description: This is for CI and devs only and doesn't change that C++17 is the standard we are currently using. The option `--enable-c++20` allows CI to check that the C++17 code in the repo is also valid C++20. (There are some cases where valid C++17 doesn't compile under C++20). Also, it allows developers to easily play with C++20 in the codebase. ACKs for top commit: ryanofsky: Code review ACK 999982b06ce1d1280e5ce48f9253c6c536f41a12. Since last review was rebased, and enum-conversion change was dropped, and CSerializedNetMsg copy workaround was added fanquake: utACK 999982b06ce1d1280e5ce48f9253c6c536f41a12 Tree-SHA512: afc95ba03ea2b937017fc8e2b1449379cd2b6f7093c430d2e344c665a00c51e402d6651cbcbd0be8118ea1e54c3a86e67d2021d19ba1d4da67168e9fcb6b6f83
2022-03-24build: Add --enable-c++20 optionMarcoFalke
2022-03-23build: require libtool 2.4.2fanquake
Every system we support has 2.4.6 available, except for OpenBSD, which currently ships with 2.4.2 (released 2011). For now, set our minimum required version to that. After a 7 year hitus, 2.4.7 has also very recently been released: https://savannah.gnu.org/forum/forum.php?forum_id=10139. Partially motivated by comments in #24615. See also: https://repology.org/project/libtool/versions
2022-03-22Bugfix: configure: Only avoid -isystem for exact /usr/include pathLuke Dashjr
2022-03-21Bugfix: configure: Quote SUPPRESS_WARNINGS sufficiently to preserve bracketsLuke Dashjr
The regex includes [/ ] which is supposed to match either a forward slash or a space, but m4 treats the brackets as special characters and effectively strips them out, leading to -isystem /usr/include paths except for in the typical scenario where it is the final parameter in the flag string.
2022-03-21build: Fix Boost.Process test for Boost 1.78Hennadii Stepanov
2022-03-10build: Fix Boost.Process detection on macOS arm64Hennadii Stepanov
Could be tested as follows: ``` % brew install boost@1.76 % ./autogen.sh % ./configure --with-boost='/opt/homebrew/opt/boost@1.76' ```
2022-03-07Merge bitcoin/bitcoin#24132: build: Bump minimum Qt version to 5.11.3fanquake
956f7322f60db7b8be551c9074b4c633e514079d build: Bump minimum Qt version to 5.11.3 (Hennadii Stepanov) e22d10b936eb7563b2b6611332d9e4c73a2f59d4 ci: Switch from bionic to buster (Hennadii Stepanov) Pull request description: The current minimum Qt version is 5.9.5 which has been set in bitcoin/bitcoin#21286. Distro support: - centos 7 -- unsupported since bitcoin/bitcoin#23511 - centos 8 -- [5.15.2](http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/qt5-qtbase-5.15.2-3.el8.x86_64.rpm) - buster -- [5.11.3](https://packages.debian.org/buster/libqt5core5a) - bullseye -- [5.15.2](https://packages.debian.org/bullseye/libqt5core5a) - _bionic_ -- [5.9.5](https://packages.ubuntu.com/bionic/libqt5core5a) - focal -- [5.12.8](https://packages.ubuntu.com/focal/libqt5core5a) As another Ubuntu LTS is coming soon, it seems unreasonable to stick to Qt 5.9 which support [ended](https://www.qt.io/blog/2017/06/07/renewed-qt-support-services) on 2020-05-31. Anyway, it's still possible to build Bitcoin Core GUI with depends on bionic system. Bumping the minimum Qt version allows to make code safer and more reliable, e.g.: - functor-parameter overload of [`QMetaObject::invokeMethod`](https://doc.qt.io/qt-5/qmetaobject.html#invokeMethod-4) - fixed https://bugreports.qt.io/browse/QTBUG-10907 An example of the patch using the functor-overload of `QMetaObject::invokeMethod`: ```diff --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -349,7 +349,7 @@ bool WalletModel::changePassphrase(const SecureString &oldPass, const SecureStri static void NotifyUnload(WalletModel* walletModel) { qDebug() << "NotifyUnload"; - bool invoked = QMetaObject::invokeMethod(walletModel, "unload"); + bool invoked = QMetaObject::invokeMethod(walletModel, &WalletModel::unload); assert(invoked); } ``` It uses the same new syntax as signal-slot connection with compile-time check. Also see bitcoin/bitcoin#16348. This PR is intended to be merged early [after](https://github.com/bitcoin/bitcoin/issues/22969) branching `23.x` off. ACKs for top commit: MarcoFalke: cr ACK 956f7322f60db7b8be551c9074b4c633e514079d fanquake: ACK 956f7322f60db7b8be551c9074b4c633e514079d Tree-SHA512: 3d652bcdcd990ce785ad412ed70234d4f27743895e535a53ed44b35d4afc3052e066c4c84f417e30bc53d0a3dd9ebed62444c57b7c765cb1e9aa687fbf866877
2022-03-03Merge bitcoin/bitcoin#24304: [kernel 0/n] Introduce `bitcoin-chainstate`MarcoFalke
2c03cec2ff8cdbfd5da92bfb507d218e5c6435b0 ci: Build bitcoin-chainstate (Carl Dong) 095aa6ca37bf0bd5c5e221bab779978a99b2a34c build: Add example bitcoin-chainstate executable (Carl Dong) Pull request description: Part of: #24303 This PR introduces an example/demo `bitcoin-chainstate` executable using said library which can print out information about a datadir and take in new blocks on stdin. Please read the commit messages for more details. ----- #### You may ask: WTF?! Why is `index/*.cpp`, etc. being linked in? This PR is meant only to capture the state of dependencies in our consensus engine as of right now. There are many things to decouple from consensus, which will be done in subsequent PRs. Listing the files out right now in `bitcoin_chainstate_SOURCES` is purely to give us a clear picture of the task at hand, it is **not** to say that these dependencies _belongs_ there in any way. ### TODO 1. Clean up `bitcoin-chainstate.cpp` It is quite ugly, with a lot of comments I've left for myself, I should clean it up to the best of my abilities (the ugliness of our init/shutdown might be the upper bound on cleanliness here...) ACKs for top commit: ajtowns: ACK 2c03cec2ff8cdbfd5da92bfb507d218e5c6435b0 ryanofsky: Code review ACK 2c03cec2ff8cdbfd5da92bfb507d218e5c6435b0. Just rebase, comments, formatting change since last review MarcoFalke: re-ACK 2c03cec2ff8cdbfd5da92bfb507d218e5c6435b0 🏔 Tree-SHA512: 86e7fb5718caa577df8abc8288c754f4a590650d974df9d2f6476c87ed25c70f923c4db651c6963f33498fc7a3a31f6692b9a75cbc996bf4888c5dac2f34a13b
2022-03-03build: Bump version to 23.99laanwj
On the master branch, bump to 23.99 (pre-24.0). Tree-SHA512: 1e3b0cee8a2b5080170b59a4c445a3c1b69b99152e8eec7eba7080ab447cc6f9c6bd8f69df2b18ee9416de44a6ed88009a200ad26e89275f6230339330d12314
2022-02-28Merge bitcoin/bitcoin#24397: build: Fix Boost.Process check for Boost 1.73 ↵laanwj
and older 774323e378acea998069980edf50e1a26f4b6b9e ci: Force `--enable-external-signer` to prevent future regressions (Hennadii Stepanov) 69978858a4d8a9c34070f96133b8f95737a6505b build: Fix Boost.Process check for Boost 1.73 and older (Hennadii Stepanov) 2199ef79cba865af7949c3a55938ad54519ca5b8 build: Fix a non-portable use of `test` (Hennadii Stepanov) d436c488d4216298016b09f8f97e10eada489bda build, refactor: Replace tabs with spaces (Hennadii Stepanov) Pull request description: On master (5f44c5c428b696af4214b2519cb2bbeb0e4a1027) Boost.Process check false fails without the `-lpthread` flag. ``` $ grep -C 2 pthread_detach config.log /usr/bin/ld: /tmp/cczCQfQv.o: in function `boost::asio::detail::posix_global_impl<boost::asio::system_context>::~posix_global_impl()': conftest.cpp:(.text._ZN5boost4asio6detail17posix_global_implINS0_14system_contextEED2Ev[_ZN5boost4asio6detail17posix_global_implINS0_14system_contextEED5Ev]+0xa3): undefined reference to `pthread_join' /usr/bin/ld: conftest.cpp:(.text._ZN5boost4asio6detail17posix_global_implINS0_14system_contextEED2Ev[_ZN5boost4asio6detail17posix_global_implINS0_14system_contextEED5Ev]+0xc4): undefined reference to `pthread_detach' collect2: error: ld returned 1 exit status configure:26674: $? = 1 ``` Not required for Boost 1.74+. ACKs for top commit: laanwj: Code review ACK 774323e378acea998069980edf50e1a26f4b6b9e, is a bugfix/workaround, seems fine to merge last minute for 23.0. Tree-SHA512: 2a9d4b67fd8910e107af972d8c223286b7c933bc310616f86c8b6d8c903438916980fc76bd7e37f2698f6ce5361dc706cbf2933d1ac2c081bcabe1b83ca7d6b6
2022-02-22build: pass win32-dll to LT_INIT()fanquake
This is the recommended way to support building PE DLLs with modern mingw toolchains and libtool. I made a similar change upstream in the secp256k1 repo: https://github.com/bitcoin-core/secp256k1/pull/1022. Note that we already pass `-no-undefined` to our libtool LDFLAGS. > This option should be used if the package has been ported to build clean > dlls on win32 platforms. > If this macro is not used, libtool will assume that the package libraries > are not dll clean and will build only static libraries on win32 hosts. See: https://www.gnu.org/software/libtool/manual/libtool.html#LT_005fINIT https://www.gnu.org/software/gnulib/manual/html_node/Libtool-and-Windows.html https://autotools.io/libtool/windows.html https://github.com/bitcoin-core/secp256k1/issues/923
2022-02-22build: Fix Boost.Process check for Boost 1.73 and olderHennadii Stepanov
2022-02-20build: Fix a non-portable use of `test`Hennadii Stepanov
2022-02-20build, refactor: Replace tabs with spacesHennadii Stepanov
2022-02-20test: checks for tracepoint tests0xb10c
For testing the USDT tracepoint API in the functional tests we require: - that we are on a Linux system* - that Bitcoin Core is compiled with tracepoints - that bcc and the the Python bcc module [0] is installed - that we run the tests with the required permissions** otherwise we skip the tests. *: We currently only support tracepoints on Linux. Tracepoints are not compiled on other platforms. **: Currently, we check for root permissions via getuid == 0. It's unclear if it's even possible to run the tests a non-root user with e.g. CAP_BPF, CAP_PERFMON, and access to /sys/kernel/debug/ tracing/. Anyone running these tests as root should carefully review them first and then run them in a disposable VM. [0]: https://github.com/iovisor/bcc/blob/master/INSTALL.md
2022-02-15Merge bitcoin/bitcoin#24336: Print enable_fuzz_binary in configureMarcoFalke
faef344f84a566436ffe2a277dec2cd6c7e1664b Print enable_fuzz_binary in configure (MarcoFalke) Pull request description: A *disabled* `enable_fuzz` on current master does *not* mean the the fuzz binary is not compiled. This is confusion, so fix it. * `enable_fuzz` toggles compilation flags for fuzzing and disables all other target. There is no need to print this in the configure result, because the compilation flags are already printed. Also, all other targets are already printed as `no`. * `enable_fuzz_binary` does what it says it does and is currently not printed. So print it. ACKs for top commit: hebasto: ACK faef344f84a566436ffe2a277dec2cd6c7e1664b, tested on Linux Mint 20.2 (x86_64): Tree-SHA512: 9b02b05c4b9c5fc92cf3487497392690303c36eace5e217f18b4349f059b5a23a7c0e0d030fb6fa7bbad83e927576a5e81c00099164f9ed8e185c0969dc17689
2022-02-14Merge bitcoin/bitcoin#24254: build: Add Boost.Process usage checkfanquake
abc057c6030b2a0ddab46835a7801054da677781 build: Add Boost.Process usage check (Hennadii Stepanov) Pull request description: This PR adds a check that Boost.Process can be used without linking any libraries (header-only). Disable the functionality if that is not the case. Fixes bitcoin/bitcoin#24314. ACKs for top commit: fanquake: ACK abc057c6030b2a0ddab46835a7801054da677781 Tree-SHA512: ed2a32b1f751ec6f88cc7220766edd4cdab93c1d0515c892aa3094ee8d5b13ef569830d6e7a7a00c0197b117585dc526d00d943cc99a1f8c8a66ac4e20fe2061
2022-02-14Merge bitcoin/bitcoin#24115: ARMv8 SHA2 Intrinsicslaanwj
aaa1d03d3acebeb44fdd40a302f086aad3d329ce Add optimized sha256d64_arm_shani::Transform_2way (Pieter Wuille) fe0629852aaf3a26f291bfa535e7e455fe7bea06 Implement sha256_arm_shani::Transform (Pavol Rusnak) 48a72fa81f80c8a3c7c6de8339b5feb361dece1c Add sha256_arm_shani to build system (Pavol Rusnak) c2b79342506e24e9b7100fb7a6025dc870375ef6 Rename SHANI to X86_SHANI to allow future implementation of ARM_SHANI (Pavol Rusnak) Pull request description: This PR adds support for ARMv8 SHA2 Intrinsics. Fixes https://github.com/bitcoin/bitcoin/issues/13401 and https://github.com/bitcoin/bitcoin/issues/17414 * Integration part was done by me. * The original SHA2 NI code comes from https://github.com/noloader/SHA-Intrinsics/blob/master/sha256-arm.c * Minor optimizations from https://github.com/rollmeister/bitcoin-armv8/blob/master/src/crypto/sha256.cpp are applied too. * The 2-way transform added by @sipa ACKs for top commit: laanwj: Code review and lightly tested ACK aaa1d03d3acebeb44fdd40a302f086aad3d329ce Tree-SHA512: 9689d6390c004269cb1ee79ed05430d7d35a6efef2554a2b6732f7258a11e7e959b3306c04b4e8637a9623fb4c12d1c1b3592da0ff0dc6d737932db302509669
2022-02-14build: Add example bitcoin-chainstate executableCarl Dong
The bitcoin-chainstate executable serves to surface the dependencies required by a program wishing to use Bitcoin Core's consensus engine as it is right now. More broadly, the _SOURCES list serves as a guiding "North Star" for the libbitcoinkernel project: as we decouple more and more modules of the codebase from our consensus engine, this _SOURCES list will grow shorter and shorter. One day, only what is critical to our consensus engine will remain. Right now, it's "the minimal list of files to link in to even use our consensus engine". [META] In a future commit the libbitcoinkernel library will be extracted from bitcoin-chainstate, and the libbitcoinkernel library's _SOURCES list will be the list that we aim to shrink.
2022-02-14build: Add Boost.Process usage checkHennadii Stepanov
Check that Boost.Process can be used without linking any libraries (header-only). Disable the functionality if that is not the case.
2022-02-14Print enable_fuzz_binary in configureMarcoFalke
2022-02-13build: header-only Boostfanquake
2022-02-13build: use header-only Boost unit testfanquake
2022-02-10Merge bitcoin/bitcoin#24238: random: use arc4random on OpenBSDlaanwj
0c49e52b22be1baa8d51670e4f3c437fd3c0baa7 build: remove unneeded getentropy detection (HAVE_GETENTROPY) (Sebastian Falbesoner) 5cd15ffdceace3a077d4719ef7c1704336d602e1 random: use arc4random on OpenBSD (Sebastian Falbesoner) Pull request description: Inspired by a discussion on obtaining randomness on various OSes in a secp256k1 PR (https://github.com/bitcoin-core/secp256k1/pull/748#discussion_r524605472, see also https://bitcoincore.reviews/libsecp256k1-748), I think it makes sense to follow best practices and use `arc4random_buf` rather than `getentropy` on OpenBSD in our random module. The [getentropy(2) man page](https://man.openbsd.org/getentropy.2) states: ``` getentropy() is not intended for regular code; please use the arc4random(3) family of functions instead. ``` The [arc4random(3) man page](https://man.openbsd.org/arc4random.3) states: ``` Use of these functions is encouraged for almost all random number consumption because the other interfaces are deficient in either quality, portability, standardization, or availability. ``` On the linked PR discussion worries about using RC4 internally has been expressed (see https://security.stackexchange.com/questions/85601/is-arc4random-secure-enough/172905#172905), but this would only affect users of OpenBSD <5.5, using a version that was released more than 8 years ago. ACKs for top commit: laanwj: Tested ACK 0c49e52b22be1baa8d51670e4f3c437fd3c0baa7 Tree-SHA512: b5ed3d0718962c5a3839db9a28f93d08a0ac93094cc664f83bc4cf1cfad25049e6240b7b81fe06b71e6a3a0ca24a2c337eab088abec5470ad014e10c04fdb216
2022-02-05build: Bump minimum Qt version to 5.11.3Hennadii Stepanov
2022-02-03build: remove Boost::system usagefanquake
2022-02-03build: remove boost::filesystem usageKiminuo
2022-02-03build: add support for std::filesystemfanquake
Add a macro to check if linking with -lstdc++fs or -lc++fs is required.
2022-02-02build: remove unneeded getentropy detection (HAVE_GETENTROPY)Sebastian Falbesoner
2022-01-28Add sha256_arm_shani to build systemPavol Rusnak
Also rename AArch64 intrinsics to ARMv8 intrinsics as these are not necessarily limited to 64-bit
2022-01-28Rename SHANI to X86_SHANI to allow future implementation of ARM_SHANIPavol Rusnak
2022-01-15build: disable external signer on Windowsfanquake
2022-01-13Merge bitcoin/bitcoin#23607: rpc: Pass const char* to ↵laanwj
evhttp_connection_get_peer for new libevent c62d763fc313585d79ad833c9d729f6acf2652aa Necessary improvements to make configure work without libevent installed (Perlover) 091ccc38c2e589b649648cbcc99aca4802f98775 The evhttp_connection_get_peer function from libevent changes the type of the second parameter. Fixing the problem. (Perlover) Pull request description: The second parameter of evhttp_connection_get_peer in libevent already has type as `const char **` The compilation of bitcoind with the fresh libevent occurs errors Details: https://github.com/bitcoin/bitcoin/issues/23606 ACKs for top commit: laanwj: Code review ACK c62d763fc313585d79ad833c9d729f6acf2652aa luke-jr: tACK c62d763fc313585d79ad833c9d729f6acf2652aa Tree-SHA512: d1c8062d90bd0d55c582dae2c3a7e5ee1b6c7ca872bf4aa7fe6f45a52ac4a8f59464215759d961f8efde0efbeeade31b08daf9387d7d50d7622baa1c06992d83
2022-01-12Bugfix: configure: bitcoin-{cli,tx,util} don't need UPnP, NAT-PMP, or ZMQLuke Dashjr
2022-01-12build: Improve error message when pkg-config is not installedHennadii Stepanov
2022-01-10Merge bitcoin/bitcoin#23724: build: add systemtap's sys/sdt.h as depends for ↵fanquake
GUIX builds with USDT tracepoints 6200fbf54fa919899d99f1cdd5ef88ec8b074cd6 build: rename --enable-ebpf to --enable-usdt (0xb10c) e158a2a7aa501da635cb34414abd0c092216e5f4 build: add systemtap's sys/sdt.h as depends (0xb10c) Pull request description: There has been light conceptual agreement on including the Userspace, Statically Defined Tracing tracepoints in Bitcoin Core release builds. This, for example, enables user to hook into production deployments, if they need to. Binaries don't have to be switched out. This is possible because we don't do [expensive computations](https://github.com/bitcoin/bitcoin/blob/master/doc/tracing.md#no-expensive-computations-for-tracepoints) only needed for the tracepoints. The tracepoints are NOPs when not used. Systemtap's `sys/sdt.h` header is required to build Bitcoin Core with USDT support. The header file defines the `DTRACE_PROBE` macros used in [`src/util/trace.h`](https://github.com/bitcoin/bitcoin/blob/master/src/util/trace.h). This PR adds Systemtap 4.5 (May 2021) as dependency. GUIX builds for Linux hosts now include the tracepoints. Closes https://github.com/bitcoin/bitcoin/issues/23297. ACKs for top commit: fanquake: ACK 6200fbf54fa919899d99f1cdd5ef88ec8b074cd6 - tested enabling / disabling and with/without SDT from depends. We can follow up with #23819, #23907 and #23296, and if any serious issues arise before feature freeze, it is easy for us to flip depends such that USDT becomes opt-in, rather than opt-out, and thus, releases would be tracepoint free. Tree-SHA512: 0263f44892bf8450e8a593e4de7a498243687f8d81269e1c3283fa8354922c7cf93fddef4b92cf5192d33798424aa5812e03e68ef8de31af078a32dd34021382
2022-01-06build: rename --enable-ebpf to --enable-usdt0xb10c
eBPF is a Linux kernel technology used to "extend the capabilities of the kernel without requiring to change kernel source code or load kernel modules". While Userspace, Statically Defined Tracing (USDT) uses eBPF under the hood, --enable-usdt better resembles that support for USDT is enabled, and tracepoints will be included in the binary.