aboutsummaryrefslogtreecommitdiff
path: root/depends
AgeCommit message (Collapse)Author
2022-02-03build: remove Boost::system usagefanquake
2022-02-03build: remove boost::filesystem usageKiminuo
2022-02-03Merge bitcoin/bitcoin#24131: build, qt: Fix Windows cross-compiling with Qt 5.15fanquake
9796dcacdc3841ab6e3359bd5ca67a5f634bf176 doc: Install only "-posix" MinGW compiler when possible (Hennadii Stepanov) 0bbae237a8e0122b97c5c71bc85bc845e26d5b47 ci: Drop no longer needed `update-alternatives` (Hennadii Stepanov) 01d1845a80ae48d741deea695ddce95d940ab0d8 build, qt: Specify QMAKE_CXX explicitly (Hennadii Stepanov) Pull request description: While changes introduced in bitcoin/bitcoin#22093 worked fine with Qt 5.12, after bumping Qt up to 5.15 the cross-compiling of `qt` package for Windows fails with `error: ‘mutex’ in namespace ‘std’ does not name a type`. The first commit fixes this bug. The second commit cleans up a related CI script. The third commit improves related docs (see https://github.com/bitcoin/bitcoin/pull/22093#discussion_r680911586). ACKs for top commit: prusnak: ACK 9796dca Tree-SHA512: 0dc46c5dfab85bd6d2901052cd630e86f9b4e09c08ef87136b44ddecb1783cdf3cd0a6e67b95ac7a78da24cd7adedc88745f61f9a8d9993fbff26d33bf88d874
2022-02-03Merge bitcoin/bitcoin#24240: depends: fix capnp's descriptor for make downloadfanquake
01e121d29087db047e4bc01bd64d054f83cfc5df depends: fix capnp's descriptor for make download (Cory Fields) Pull request description: The non-native capnp was trying to fetch the wrong file. Without this, "make -C depends MULTIPROCESS=1 download" is broken. Presumably it breaks with the download target because the dependency graph is flattened. It manages to work if native_capnp is encountered first because it will then be found in the cache. ACKs for top commit: gruve-p: tACK https://github.com/bitcoin/bitcoin/pull/24240/commits/01e121d29087db047e4bc01bd64d054f83cfc5df hebasto: ACK 01e121d29087db047e4bc01bd64d054f83cfc5df, tested on Linux Mint 20.2 (x86_64). Tree-SHA512: 2605d895f3799be5a311f6f7d36a5c13cdb715dc148915ad818f4afc7d5de92cd6b8ecd34ff2b21cef6743b090819bba1e3353096cfb5659c55f76113ce5adf3
2022-02-02Merge bitcoin/bitcoin#23948: build: add support for FreeBSD to dependslaanwj
ae9175f6086aa6c177084365c795e78c580eac1d build: add FreeBSD support to depends (fanquake) Pull request description: Setup to use the system Clang (11.0.1 as of FreeBSD 13.0). Doesn't build the Qt package; that requires a few additional changes. The current issue is that FreeBSDs `byacc` seems to have an issue parsing something in libxkbcommon. Work in progress branch here: https://github.com/fanquake/bitcoin/tree/depends_support_freebsd_qt. In any case, I don't think building the Qt libs on FreeBSD is a super high priority (I'd also have no way to test the GUI). ACKs for top commit: laanwj: ACK ae9175f6086aa6c177084365c795e78c580eac1d Tree-SHA512: 1ecc7855f0195f68c96e534bd77ce17c3975db1dfb3caa35302c2b46643c8c30f75b1c2e1735cf69f1eddb70447d11e67e7f339ef5497336cdff7a59b32be961
2022-02-02depends: fix capnp's descriptor for make downloadCory Fields
The non-native capnp was trying to fetch the wrong file. Without this, "make -C depends MULTIPROCESS=1 download" is broken. Presumably it breaks with the download target because the dependency graph is flattened. It manages to work if native_capnp is encountered first because it will then be found in the cache.
2022-02-02build, qt: Specify QMAKE_CXX explicitlyHennadii Stepanov
This change allows to drop the `update-alternatives` step if the `g++-mingw-w64-x86-64` package has been installed.
2022-01-31build: Replace `which` command with `command -v`Hennadii Stepanov
This change made in a way that is compatible with GNU Make versions older than 4.3.
2022-01-28Merge bitcoin/bitcoin#21851: release: support cross-compiling for ↵fanquake
arm64-apple-darwin edd70b52fcd79026e9c63b8bc481fa68f95edf11 doc: add arm macOS depends platform triplet (jarolrod) 0628815e9565a10df96f0f58b9a17cbf7f10dc27 guix: add arm64-apple-darwin triplet (fanquake) ca47f2e211f48a8722bb04fd33e456d5db00b968 guix: use autoconf 2.71 (fanquake) 6fe55160dd00fb387a5110a2d2e188618838e9a3 contrib: support arm64 darwin in security checks (fanquake) 446e73cc0bb7cd628039eaf9b1bcc93db23b924f build: use macOS 11 SDK (Xcode 12.2) (fanquake) Pull request description: With a few minor changes, our macOS toolchain, and Guix, supports building for `arm64-apple-darwin` (Apple M1). Newer [`config.guess`](https://git.savannah.gnu.org/cgit/config.git/plain/config.guess) and [`config.sub`](https://git.savannah.gnu.org/cgit/config.git/plain/config.sub) are required (via autoconf 2.71), as support for recognising `arm64-apple-darwin` [was only recently added](https://git.savannah.gnu.org/cgit/config.git/commit/?id=2593751ef276497e312d7c4ce7fd049614c7bf80). A newer version of the macOS SDK (11.0+) is also required; I've taken this from Xcode 12.2. Guix Build: ```bash bash-5.1# find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum c9c64c6252927c82d4a96eb2b1a13c557ac230afa3640a7f2feec87fabe2b7e5 guix-build-edd70b52fcd7/output/aarch64-linux-gnu/SHA256SUMS.part b57dd461ec6a0b22ce9614ab824bcbff4c3e6e935c22367aff9a718f46c3fd39 guix-build-edd70b52fcd7/output/aarch64-linux-gnu/bitcoin-edd70b52fcd7-aarch64-linux-gnu-debug.tar.gz 66da9f57a6789108db3460d2b54a8bed68b7e147627404e51f66254d91500402 guix-build-edd70b52fcd7/output/aarch64-linux-gnu/bitcoin-edd70b52fcd7-aarch64-linux-gnu.tar.gz 13213523984837fc66fe27cc4dac269f6ef554ec56316af92337f4c4845f6acf guix-build-edd70b52fcd7/output/arm-linux-gnueabihf/SHA256SUMS.part e1a17b41c92879ccb6608a6a6f82aac22d999f10d798f40f96297d91ebd90d20 guix-build-edd70b52fcd7/output/arm-linux-gnueabihf/bitcoin-edd70b52fcd7-arm-linux-gnueabihf-debug.tar.gz 6a6d54081c2dd8f9a44293275aea875587b5fa7cc31a30925fb5156bb1e55bf3 guix-build-edd70b52fcd7/output/arm-linux-gnueabihf/bitcoin-edd70b52fcd7-arm-linux-gnueabihf.tar.gz 79f617a2f0a11e6a8fcf8058e05204a374ab5f689ccb15a2ff449ee2dd5e8216 guix-build-edd70b52fcd7/output/arm64-apple-darwin/SHA256SUMS.part 6fb04a18b17812174ec35a6788dce5745d6c2dec558056dcfdd356b57d089b99 guix-build-edd70b52fcd7/output/arm64-apple-darwin/bitcoin-edd70b52fcd7-arm64-apple-darwin.tar.gz a67e415631bea940adab86adec9899593fa35e1773d4ac1149efd249adf89996 guix-build-edd70b52fcd7/output/arm64-apple-darwin/bitcoin-edd70b52fcd7-osx-unsigned.dmg 2a41c273afb8bb621226de80302a7190eee057c2447d113999f40a9485430d44 guix-build-edd70b52fcd7/output/arm64-apple-darwin/bitcoin-edd70b52fcd7-osx-unsigned.tar.gz c8d9358471e1d72d56122ae6f53dc2a42ae0925628bf347acd1a3ae7110d8759 guix-build-edd70b52fcd7/output/dist-archive/bitcoin-edd70b52fcd7.tar.gz 1985a4869307418ec2ee85f5f0ccfea0944eba0792318a8676ae213a9589ed97 guix-build-edd70b52fcd7/output/powerpc64-linux-gnu/SHA256SUMS.part 6a1d3525011da84e24997c9ab39563b3597ae881b4d1af5a09a6e673cfc59808 guix-build-edd70b52fcd7/output/powerpc64-linux-gnu/bitcoin-edd70b52fcd7-powerpc64-linux-gnu-debug.tar.gz cda50c28b2920caef74de4b3e78fd4d81592d1aadc9758d1882f1cad16dc83ca guix-build-edd70b52fcd7/output/powerpc64-linux-gnu/bitcoin-edd70b52fcd7-powerpc64-linux-gnu.tar.gz ca92936cf796543d13250f94175af772a9fc985e834017d6af2cfb36eea289e6 guix-build-edd70b52fcd7/output/powerpc64le-linux-gnu/SHA256SUMS.part 64c46248065149a384c5710adeb4fd8e795ffee7d6441e4edb71468c6cf1478e guix-build-edd70b52fcd7/output/powerpc64le-linux-gnu/bitcoin-edd70b52fcd7-powerpc64le-linux-gnu-debug.tar.gz bb9c3400a1dd88fa5fd26e8e22ba0f3a43263bdbb762233ed1670394d3d69ed1 guix-build-edd70b52fcd7/output/powerpc64le-linux-gnu/bitcoin-edd70b52fcd7-powerpc64le-linux-gnu.tar.gz 926ef7a23ecdf02a6619f9dba0db814373c1a5105347e4c13b80a116910d1c8d guix-build-edd70b52fcd7/output/riscv64-linux-gnu/SHA256SUMS.part cdf7ce78f206378a44122865150784c20bf1bec6943b48e35a41633c0f1f05ed guix-build-edd70b52fcd7/output/riscv64-linux-gnu/bitcoin-edd70b52fcd7-riscv64-linux-gnu-debug.tar.gz 026bbb6662f4074054457ce1678fc1d697bfbf87c80f1c3d5d560bcc18e3bea6 guix-build-edd70b52fcd7/output/riscv64-linux-gnu/bitcoin-edd70b52fcd7-riscv64-linux-gnu.tar.gz 0190b93fc5d5202c6b252e51c34799fb153a284cc53b0e6f62d2521dc61866bd guix-build-edd70b52fcd7/output/x86_64-apple-darwin/SHA256SUMS.part 69aac1a962aeeec01c30015f79d93c57d68a484c3905b8a526f90e7e7382bc1b guix-build-edd70b52fcd7/output/x86_64-apple-darwin/bitcoin-edd70b52fcd7-osx-unsigned.dmg ea37691f1df0389afedbb9eece45660dcb2ee867ffda1d26b244a471af2a6230 guix-build-edd70b52fcd7/output/x86_64-apple-darwin/bitcoin-edd70b52fcd7-osx-unsigned.tar.gz f56ff4035e3bc70c2cbb04f8a7f5ef23096088189e84fa172cec97f59336cf2b guix-build-edd70b52fcd7/output/x86_64-apple-darwin/bitcoin-edd70b52fcd7-osx64.tar.gz a1c1bf47083c6f19bcc68761ea56bec666cfe128f4ba878a5655ae12874fe038 guix-build-edd70b52fcd7/output/x86_64-linux-gnu/SHA256SUMS.part cad26c66c764361b30c8204e7743dbb6c0e6dd1eb3af9418d77bd566e05e1470 guix-build-edd70b52fcd7/output/x86_64-linux-gnu/bitcoin-edd70b52fcd7-x86_64-linux-gnu-debug.tar.gz ed2b459a06d5bc0f895402323fc5cae543a387d0621a55214feb37513210324e guix-build-edd70b52fcd7/output/x86_64-linux-gnu/bitcoin-edd70b52fcd7-x86_64-linux-gnu.tar.gz ``` ACKs for top commit: hebasto: ACK edd70b52fcd79026e9c63b8bc481fa68f95edf11, a Guix `bitcoin-edd70b52fcd7-osx-unsigned.dmg` tested on Mac mini (M1, 2020) + macOS Monterey 12.1 (21C52). Tree-SHA512: 00c55e139ce60c89900ef9365c380beec9474d8a0459bb584fd966d17715344fcf95b208b7222f665a5e3989aed51d3161641d3737aa6122a41b0c9f0d35906d
2022-01-27Merge bitcoin/bitcoin#24134: build: Fix zeromq package when cross-compilingfanquake
f13e642c831c5689cb2bb7f5c4f9cb4c0c03ef21 build: Disable valgrind when building zeromq package in depends (Hennadii Stepanov) b970f03beae0f3ae6a796f0e3b97732fc579f6aa build: Disable libbsd when building zeromq package in depends (Hennadii Stepanov) 77899991b1e29a45bc377b21330148cb7cc08923 build: Update netbsd_kevent_void.patch (Hennadii Stepanov) Pull request description: Since v4.3.3 (https://github.com/zeromq/libzmq/commit/068385c951c0608edec6264d55ba9c4c923acccc) `libzmq` uses `libbsd` by default. This PR disables `libbsd` explicitly, as it's not a part of our depends. Zeromq will fallback to its internal `strlcpy` implementation. Otherwise, on systems with installed `libbsd-dev` package the `zeromq` package build system erroneously detects `libbsd` package from the host system: ```diff --- a/libzmq.pc +++ b/libzmq.pc @@ -8,5 +8,5 @@ Version: 4.3.4 Libs: -L${libdir} -lzmq Libs.private: -lpthread -Requires.private: +Requires.private: libbsd Cflags: -I${includedir} ``` This causes the `configure` fails to detect the `zeromq` package: ``` configure: WARNING: libzmq version 4.x or greater not found, disabling ``` --- Other minor improvements: - fixed `netbsd_kevent_void.patch` offset - disabled valgrind as it's used in unit tests which we do not run: ```diff --- a/zmq-configure-output +++ b/zmq-configure-output @@ -119,11 +119,6 @@ checking whether the g++ -m64 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate -checking for valgrind... valgrind -checking for Valgrind tool memcheck... memcheck -checking for Valgrind tool helgrind... helgrind -checking for Valgrind tool drd... drd -checking for Valgrind tool exp-sgcheck... exp-sgcheck checking linker version script flag... --version-script checking if version scripts can use complex wildcards... yes checking for working posix_memalign... yes ``` ACKs for top commit: fanquake: ACK f13e642c831c5689cb2bb7f5c4f9cb4c0c03ef21 Tree-SHA512: d4c86d4a841eb6e7c32157e84972243072f905496c2a4c14ec6f6ab4216df6695cbf29baa2233ce27eaede35d1e250ad2f9975b16f570d01509f0c5da4597cad
2022-01-26doc: add arm macOS depends platform tripletjarolrod
2022-01-26build: use macOS 11 SDK (Xcode 12.2)fanquake
This should be sufficient to support building for Apple ARM when cross-compiling.
2022-01-25Merge bitcoin/bitcoin#23839: Linux: build with and test for control flow ↵laanwj
instrumentation on x86_64 5a8f907c93f158c54e58706d6d8c6b0a1a3205ba scripts: add CONTROL_FLOW to ELF security checks (fanquake) e13f8f775d9e8da04db0e072040d11237c5d1089 build: build x86_64 Linux Boost with -fcf-protection=full (fanquake) 6ca5efa8ed1ed9d5978bed0baf3c63dc2d406ec5 script rename control flow check to MACHO specific (fanquake) Pull request description: Closes #21888. TODO: * Duplication in security-check-tests Guix build: ```bash bash-5.1# find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum 8025e2e6859247eaf865a4a5009d0a39570ec5e8ab51739fa4da0d8ee4ab2117 guix-build-5a8f907c93f1/output/aarch64-linux-gnu/SHA256SUMS.part 75576482994493262dbf7d3567b0450c0804bdc75c186d6b4c6a856bd0d8f0a3 guix-build-5a8f907c93f1/output/aarch64-linux-gnu/bitcoin-5a8f907c93f1-aarch64-linux-gnu-debug.tar.gz 7cb89c9327cc540859334b597c041a2250156e3e83ce2aa7d16177376056302f guix-build-5a8f907c93f1/output/aarch64-linux-gnu/bitcoin-5a8f907c93f1-aarch64-linux-gnu.tar.gz e264053e4c7a5d65340dd7bbd2c664bcd596292ab80f00a0bf0026bfe0c480bc guix-build-5a8f907c93f1/output/arm-linux-gnueabihf/SHA256SUMS.part 6c3ee9b3c0c4583620301b183226678f1618605dd07dbed0bbdf7d06d3591314 guix-build-5a8f907c93f1/output/arm-linux-gnueabihf/bitcoin-5a8f907c93f1-arm-linux-gnueabihf-debug.tar.gz f217cb8d8e233a8dbdbfde7dabf12c5d867d7de53e8c652b8ed1d4a55da82fd9 guix-build-5a8f907c93f1/output/arm-linux-gnueabihf/bitcoin-5a8f907c93f1-arm-linux-gnueabihf.tar.gz 48b4b2a1b52b3098f4e92c11cb60f1e5e9696a2a960560cd6adea72277eaa4a4 guix-build-5a8f907c93f1/output/dist-archive/bitcoin-5a8f907c93f1.tar.gz 40832db2446e129879caa9fbc9d682c53069876dbb2e0d4d76592e5dcb40bb12 guix-build-5a8f907c93f1/output/powerpc64-linux-gnu/SHA256SUMS.part 26fdfa9b7b77d5db415ef34054cf6f6d020a5dab73239db6dd05539f654bc5d5 guix-build-5a8f907c93f1/output/powerpc64-linux-gnu/bitcoin-5a8f907c93f1-powerpc64-linux-gnu-debug.tar.gz 3adbdb9d3eb1cb5f9adc38b29450054f286bd6d74cef8619adaee89494853605 guix-build-5a8f907c93f1/output/powerpc64-linux-gnu/bitcoin-5a8f907c93f1-powerpc64-linux-gnu.tar.gz 8ec2baf82483a698350bfdabf530cd9b5241690c916f597c746210e95ac451de guix-build-5a8f907c93f1/output/powerpc64le-linux-gnu/SHA256SUMS.part 1797e75e1f66ec9068fa4e57e0108960475e863f8f054fbe854358b1f995c4df guix-build-5a8f907c93f1/output/powerpc64le-linux-gnu/bitcoin-5a8f907c93f1-powerpc64le-linux-gnu-debug.tar.gz 448bd289ef26c777a1fc4498e7ba7fb17d0f6a932dcac91b2f89cbba63704bb8 guix-build-5a8f907c93f1/output/powerpc64le-linux-gnu/bitcoin-5a8f907c93f1-powerpc64le-linux-gnu.tar.gz a23ee91eeae515c2a6a31eb25d659fab833839aaafa4676ccee364bdad2a468c guix-build-5a8f907c93f1/output/riscv64-linux-gnu/SHA256SUMS.part 82df1b6d5020d0af8268ecc8e823f752f20dec308277763b2dd675804dfa4bbd guix-build-5a8f907c93f1/output/riscv64-linux-gnu/bitcoin-5a8f907c93f1-riscv64-linux-gnu-debug.tar.gz 09a6098ce83896a6ee6d5c8aff12eaca51595bd724c8e0b2a6f90b6410dc168c guix-build-5a8f907c93f1/output/riscv64-linux-gnu/bitcoin-5a8f907c93f1-riscv64-linux-gnu.tar.gz 4fac2951f80eaa2bd1747a263be6be1b76282cac5062f7d86db631a2fb80f8db guix-build-5a8f907c93f1/output/x86_64-apple-darwin/SHA256SUMS.part 3392f417b09efca5916c384f0b2d0c177a72ec4921399c62e84484f0054cc8c4 guix-build-5a8f907c93f1/output/x86_64-apple-darwin/bitcoin-5a8f907c93f1-osx-unsigned.dmg bfb4f8ade6107996ec4bc9efdb53959151b8fb19b6790c34472fe218dd02383d guix-build-5a8f907c93f1/output/x86_64-apple-darwin/bitcoin-5a8f907c93f1-osx-unsigned.tar.gz 4de92e149bad46fc863efb3b650753d194aad96be991d020e0b859452cf27457 guix-build-5a8f907c93f1/output/x86_64-apple-darwin/bitcoin-5a8f907c93f1-osx64.tar.gz 9329549a2f275a59e329afc8744ff8cbc297f3042e0ad03b47626805c7aae2e8 guix-build-5a8f907c93f1/output/x86_64-linux-gnu/SHA256SUMS.part d87deb1eca8a1d3780f02edde78350d27f700e13c7ff444be0bfb34e7369904a guix-build-5a8f907c93f1/output/x86_64-linux-gnu/bitcoin-5a8f907c93f1-x86_64-linux-gnu-debug.tar.gz 76f3bc2fad010d9373e854d941e8205b68fa6c9a8ecaff34c4978ae3ae76c806 guix-build-5a8f907c93f1/output/x86_64-linux-gnu/bitcoin-5a8f907c93f1-x86_64-linux-gnu.tar.gz 2948631081c4bd475529da2b7bc2b32b5aa2e44de46dfdaa6cf9432b3c9fe869 guix-build-5a8f907c93f1/output/x86_64-w64-mingw32/SHA256SUMS.part c5d56fac163b73c00e9745aa7b0f9a0bd9fcac7517e39b677869b6e76faf7218 guix-build-5a8f907c93f1/output/x86_64-w64-mingw32/bitcoin-5a8f907c93f1-win-unsigned.tar.gz f12c7cd72511544c67f4934981c090cee0d9c17e931c059edbbbef6e843dd651 guix-build-5a8f907c93f1/output/x86_64-w64-mingw32/bitcoin-5a8f907c93f1-win64-debug.zip eb952cc4554f92ba6787353f4305d7cbcb1c6dafc4a3867b3088106252a573b8 guix-build-5a8f907c93f1/output/x86_64-w64-mingw32/bitcoin-5a8f907c93f1-win64-setup-unsigned.exe 7bd2b071f1cdf9410535e6a10dd1da519f942bd2c1e47ed52c5b8c4f977e8f27 guix-build-5a8f907c93f1/output/x86_64-w64-mingw32/bitcoin-5a8f907c93f1-win64.zip ``` ACKs for top commit: laanwj: Code review ACK 5a8f907c93f158c54e58706d6d8c6b0a1a3205ba hebasto: ACK 5a8f907c93f158c54e58706d6d8c6b0a1a3205ba, I have reviewed the code and it looks OK, I agree it can be merged. Tree-SHA512: 75702ac01175ccf08e73b5c3bce266cee9dd15ccf8fb38d46108cfada156de9a8c18e27d996f9343ae33f7a75a6904d335cbe25256d90af1f4ccbe72ce1788bb
2022-01-25build: Disable valgrind when building zeromq package in dependsHennadii Stepanov
We are not running unit tests, therefore it is not required.
2022-01-25build: Disable libbsd when building zeromq package in dependsHennadii Stepanov
Since v4.3.3 (068385c951c0608edec6264d55ba9c4c923acccc) libbsd is used by default. As we have no libbsd package in our depends, disable it explicitly. Zeromq will fallback to its internal strlcpy implementation.
2022-01-25build: Update netbsd_kevent_void.patchHennadii Stepanov
This change fixes "Hunk #1 succeeded at 307 (offset -1 lines)."
2022-01-20Merge bitcoin/bitcoin#23956: build: use zeromq 4.3.4 in depends & fix NetBSD ↵fanquake
10 build 6897c4bdf51a4aa74320ebfffa9467db14670109 build: patch depends zeromq to fix building on NetBSD Current (fanquake) ce6dd2f1a2e2c56d86d00e0eeec34c9982017416 zeromq 4.3.4 (fanquake) Pull request description: This is a prerequisite for #23955. It updates zeromq to the latest available version, and adds a patch, [that I've sent upstream](https://github.com/zeromq/libzmq/pull/4326), to fix building on NetBSD Current (10). ACKs for top commit: hebasto: ACK 6897c4bdf51a4aa74320ebfffa9467db14670109, I have reviewed the code and it looks OK, I agree it can be merged. Tree-SHA512: d05d9753630faebe842e1ca70c8c4af660a38e7331a9d95e84df3a3b14564c5118ca41c4fc49fb71dfee563b63e1014e5a3f8874d652e26de59e8e188a12970e
2022-01-19build: add FreeBSD support to dependsfanquake
2022-01-18build: specify hosts for qrencode packagefanquake
Similar to how we specify the OS's we build Qt for, specify which OS's we will build qrencode for (a qt dependency). This commit alone doesn't change anything, but when we start supporting other OS's, i.e #23948, where we wont support qt (or at least initially), it'll skip building the qrencode package, which would be unused.
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-07Merge bitcoin/bitcoin#22093: build: Try posix-specific CXX first for mingw32 ↵laanwj
host 2fda0c785188ae94fba921c1b8f6f2c005faf1d4 doc: Drop no longer required notes for Windows builds (Hennadii Stepanov) f09ed92be132ebcb91b459c87d640a14b4b54336 build: Try posix-specific CXX first for mingw32 host (Hennadii Stepanov) Pull request description: On master (1186910b6b7ba7c7e5193c76f33f25825e6cc0b7), when cross-compiling for Windows using our depends build system, we must manually choose the POSIX thread model for the `x86_64-w64-mingw32-g++` compiler. This PR improves the build system to make this choice automa**g**ically. ACKs for top commit: jarolrod: re-ACK 2fda0c785188ae94fba921c1b8f6f2c005faf1d4 shaavan: tACK 2fda0c785188ae94fba921c1b8f6f2c005faf1d4 Tree-SHA512: ad3bbdfe84b3c8eb56e102aa0abdc76fd864b2724ac59c9a12a798c57d1c5a1172682172588019d5d1715801a9f201fd9424effbd858e8dc30607c23c0d5941f
2022-01-05Merge bitcoin/bitcoin#23909: build: use a static .tiff for macOS .dmg rather ↵fanquake
than generating e09773d20a9230ba7aa2cbb7e87fdc5187ddfec6 build: use a static .tiff for macOS .dmg over generating (fanquake) Pull request description: For demonstration, after [discussion in #23778](https://github.com/bitcoin/bitcoin/pull/23778#issuecomment-1003005503), and the question as to why we can't just have a `background.tiff` that we copy into the macOS DMG, and do away with the somewhat convoluted image generation steps. From my understanding, the only reason we have this image generation as part of our build system is so that forks of Core can adapt the imagery for their own branding via `PACKAGE_NAME`. It don't think it provides much value to us, and could just have a static .tiff that we copy into the dmg (replacing the .svg that currently lives in macdeploy/). Doing this would eliminate the following build dependencies: For native macOS: * `sed` (usage in Makefile.am) * `librsvg` (rsvg-convert) * `tiffutil` Linux macOS cross-compile: * `sed` (usage in Makefille.am) * `librsvg` * `tiffcp` * `convert` (imagemagick) * `font-tuffy` Guix Build: ```bash bash-5.1# find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum c98d67796863f4b1bab0ad600d46bd74e744d94072cbd4bc856a6aeaba3bb329 guix-build-e09773d20a92/output/dist-archive/bitcoin-e09773d20a92.tar.gz 3336f90bab312798cb7665e2b4ae24d1a270fb240647d5fed8dbfcd83e3ed37e guix-build-e09773d20a92/output/x86_64-apple-darwin/SHA256SUMS.part 8fd680c7ee158c64bad212385df7b0b302c6c2143d4e672b4b0eb5da41f9256d guix-build-e09773d20a92/output/x86_64-apple-darwin/bitcoin-e09773d20a92-osx-unsigned.dmg 34f54177c2f0700e8cfaf5d85d91e404807cd9d411e22006cdff82653e5f4af2 guix-build-e09773d20a92/output/x86_64-apple-darwin/bitcoin-e09773d20a92-osx-unsigned.tar.gz da6b8f54ef755d40330c8eac4f5bd0329637e827be9ee61318600d5d0bdcc3dc guix-build-e09773d20a92/output/x86_64-apple-darwin/bitcoin-e09773d20a92-osx64.tar.gz ``` ![dmg](https://user-images.githubusercontent.com/863730/147847717-8121c2d2-cdd4-4781-8397-3bf2893d52cc.png) ACKs for top commit: hebasto: ACK e09773d20a9230ba7aa2cbb7e87fdc5187ddfec6 jarolrod: ACK e09773d20a9230ba7aa2cbb7e87fdc5187ddfec6 Zero-1729: ACK e09773d20a9230ba7aa2cbb7e87fdc5187ddfec6 Tree-SHA512: 0ad06699a5451daa8cfaaa46759eb7bd85254a72e23f857f70d433a2ffb1a4bf6dd464d9c4ac9f8c20aab045f4e2b61c6dcdcbcceef96ce515b1a0c501665b1f
2022-01-04depends: Fix typoDimitris Apostolou
2022-01-04build: build x86_64 Linux Boost with -fcf-protection=fullfanquake
This is required so that we can test for control flow in our ELF security checks. Otherwise test_bitcoin will fail, as it has a main that is provided by Boost, and wont have been built with -fcf-protection=full. While here simplify to using -fcf-protection for all x86_64 builds.
2022-01-04build: add systemtap's sys/sdt.h as depends0xb10c
The sys/sdt.h header is required to build Bitcoin Core with Userspace Statically Defined Tracing support. Systemtap version 4.5 (May 2021) is used as the most recent version 4.6 (Nov 2021) fails to build. See e.g. https://sourceware.org/git/?p=systemtap.git;a=commit;h=1d3653936fc1fd13135a723a27e6c7e959793ad0 As Systemtap itself is not needed, the build steps (configure and make) are skipped. We require fewer build dependecies and don't waste time building depends we don't end up using. However, the configure step would normally processes sys/sdt-config.h.in. The resulting sdt-config.h defines _SDT_ASM_SECTION_AUTOGROUP_SUPPORT (either 0 or 1 to indicate whether the assembler supports "?" in .pushsection directives). For now, we assume all currently used assemblers supports this feature and remove the check from the sys/sdt.h header file in a patch. Co-authored-by: Michael Ford <fanquake@gmail.com>
2022-01-04build: patch depends zeromq to fix building on NetBSD Currentfanquake
2022-01-03build, qt: No need to set inapplicable QPA backend for AndroidHennadii Stepanov
2022-01-03zeromq 4.3.4fanquake
2022-01-02build: use a static .tiff for macOS .dmg over generatingfanquake
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
2021-12-30Merge bitcoin/bitcoin#22814: build: Add ability to build qt in depends with ↵fanquake
-stdlib=libc++ 33796a964a8c605ce482959456d1ca78638340d9 build: Add ability to build qt in depends with -stdlib=libc++ (Hennadii Stepanov) Pull request description: This PR makes possible to build the `qt` package in depends against `libc++` for x86_64 platform. Fixes #22344. Required for #22815. Also this PR [fixes](https://github.com/bitcoin/bitcoin/pull/23060#discussion_r716077050) the `[no wallet] [bionic]` task on CI: - on master (a8bbd4cc819633ec50ed0f763b6a75330ae055fb), https://api.cirrus-ci.com/v1/task/5558609250615296/logs/ci.log: ``` Options used to compile and link: external signer = yes multiprocess = no with libs = yes with wallet = no with gui / qt = no ``` - this PR, https://api.cirrus-ci.com/v1/task/5502605561430016/logs/ci.log: ``` Options used to compile and link: external signer = yes multiprocess = no with libs = yes with wallet = no with gui / qt = yes ``` ACKs for top commit: fanquake: ACK 33796a964a8c605ce482959456d1ca78638340d9 - While this sort of string matching is fragile, I think the risk of this causing any actual issues is low. Tree-SHA512: 586dde2e9864cec7a49aeb4f2b77fb8c4ae96bd10b51f9c6de0cfe8512ad61db15bb7f8d1b0eb6a5a66fd2deee52ac52218f01eb6be107ac12f1a956190de54b
2021-12-27Merge bitcoin/bitcoin#23817: build: Fix regression introduced in PR23603fanquake
d3b0f82a438ae60060d0d4d83245bf75f5de433d build: Fix regression introduced in PR23603 (Hennadii Stepanov) Pull request description: It appears 7629efcc2c3a8a8a7c17b1300cd466ec6c8c1f3f from bitcoin/bitcoin#23603 introduced a regression in build tool flag evaluation. On macOS system: - pre-PR23603 master (ae017b81604761b57e22c28913c4ce81bf2e31ce): ``` % make -C depends print-darwin_CXXFLAGS darwin_CXXFLAGS=-pipe % make -C depends print-host_CXXFLAGS host_CXXFLAGS=-pipe ``` - the current master (369978686e156ad34df703f1e60bd90aeaa8f2d6): ``` % make -C depends print-darwin_CXXFLAGS darwin_CXXFLAGS=-pipe % make -C depends print-host_CXXFLAGS host_CXXFLAGS=-arch x86_64 ``` It's obvious a flag being set in `depends/hosts/darwin.mk`, i.e., `-pipe`, is lost. With this PR: ``` % make -C depends print-darwin_CXXFLAGS darwin_CXXFLAGS=-pipe % make -C depends print-host_CXXFLAGS host_CXXFLAGS=-pipe -arch x86_64 ``` ACKs for top commit: fanquake: ACK d3b0f82a438ae60060d0d4d83245bf75f5de433d Tree-SHA512: 643099ce6858475ac9f3a4dfa72a4e493fec6fdd7042ae0f0d5fe44c5cd175e4eda63cb39fc46ac1501cadcd3466507ec88d9089235e005fe43ea7ab47ce37c1
2021-12-27Merge bitcoin/bitcoin#23862: build, qt: Hardcode last modified timestamp in ↵fanquake
Qt RCC 11736dbe3dbe34bcb430d05810b9e9aa66ec1cd6 build, qt: Hardcode last modified timestamp in Qt RCC (Hennadii Stepanov) Pull request description: Our Guix build system sets the [`SOURCE_DATE_EPOCH`](https://reproducible-builds.org/specs/source-date-epoch/) and propagates it to the depends build subsystem. Its [default value](https://github.com/bitcoin/bitcoin/blob/master/contrib/guix/README.md#recognized-environment-variables) is the top commit timestamp. After bumping Qt version up to 5.15.2, due to [this](https://github.com/qt/qtbase/commit/1ffcca4cc208c48ddb06b6a23abf1756f9724351) change, every time they are going to make new Guix builds for another branch/commit they must ensure that the `qt` package will be rebuilt from scratch. Otherwise, Bitcoin Core GUI binaries will be non-deterministic. Such behavior makes working with Guix builds suboptimal. This PR fixes the described issue by patching Qt RCC and hardcoding last modified timestamps with `1`. It's worth to mention that this change is compatible with a possible future [improvement](https://github.com/bitcoin/bitcoin/pull/21995) which makes each dependency package reproducible. A drawback of such an approach is not currently applied to our project, as it effectively makes [QML cache files](https://bugreports.qt.io/browse/QTBUG-57182) useless. I can't say it's a problem for the https://github.com/bitcoin-core/gui-qml project. --- **A note for thinkers:** For now this change is enough as only Qt source contains `SOURCE_DATE_EPOCH`. But in general we should re-think about treating the `SOURCE_DATE_EPOCH` variable in the depends build subsystem. For instance, its default value could be the output of `git log --format=%at -1 -- depends`. ACKs for top commit: fanquake: ACK 11736dbe3dbe34bcb430d05810b9e9aa66ec1cd6 Tree-SHA512: 31f104010a0a78d217aafcc5bc4606351f9060fc2a827277935b85fc8ced9f3d90a31d812c7db8c2711fb6daccd279cf0945dc1d7a7199e0eb0ade451cdbcd5d
2021-12-25build, qt: Hardcode last modified timestamp in Qt RCCHennadii Stepanov
This change allows the already built qt package to be reused even with the SOURCE_DATE_EPOCH variable set, e.g., for Guix builds.
2021-12-25doc: Drop outdated noteHennadii Stepanov
It is outdated since bitcoin/bitcoin#23060.
2021-12-24build: Fix regression introduced in PR23603Hennadii Stepanov
Assignments in builders/darwin.mk actually override previous assignments in hosts/default.mk. Therefore, the append operator must be used instead.
2021-12-17Merge bitcoin/bitcoin#22283: build: Replace $(AT) with .SILENTW. J. van der Laan
8494dcae0e32716fd7cc7abeacf0a795a1303e6a Replace $(AT) with .SILENCE. (Dmitry Goncharov) Pull request description: This reduces the amount of syntax noise in the makefiles. Setting V=1 still enables verbose logging. The only noticeable difference in behavior is that, unless V=1 is specified, make won't print its own messages like make: Nothing to be done for 'all', make: 'all' is up to date, or touch <file>, if -t is specified. ACKs for top commit: laanwj: Tested ACK 8494dcae0e32716fd7cc7abeacf0a795a1303e6a Tree-SHA512: 66b9111229995aa54a9e87f4571648727d89b8529caec651063cdfe5c00a64341371b648701d192b2334df0614617a00c28eaa56c7f08ee9c00127cada0293ab
2021-12-15Merge bitcoin/bitcoin#23744: build, qt: Drop support for i686-linux-android hostW. J. van der Laan
66a20a54a2a8446e6257b872a161089e0eed1688 build, qt: Drop support for `i686-linux-android` host (Hennadii Stepanov) Pull request description: There are no reasons to keep support for `i686-linux-android` host, which is actually broken in master (50c502f54abd9eb15c8ddca013f0fdfae3d132a9), and this fact has been unnoticed for months :) https://github.com/bitcoin/bitcoin/pull/23675#issuecomment-986206434: > I'm surprised `i686-linux-android` ABI is still supported. I would love to drop it... https://github.com/bitcoin/bitcoin/pull/23675#issuecomment-991340132 > What is `i686-linux-android`? 32-bit x86 android? is that really a thing? ACKs for top commit: prusnak: utACK 66a20a54a2a8446e6257b872a161089e0eed1688 Tree-SHA512: 211f794de2fc569f0ade2a4da805b8bfd4ce2ab0930c5d427acc4f5d015fcdc4911f02fc64f6401197f7641aed79944a9594be80c817547be3269cdd721cf79b
2021-12-12build: Use config_opts instead of passing a compiler flag directlyHennadii Stepanov
This approach is safer as it allows the configure script to check the availability of a compiler flag.
2021-12-12build, qt: Drop unused CROSS_COMPILE variable for Android buildsHennadii Stepanov
Since Qt 5.14.0 the CROSS_COMPILE variable always being overridden by the Qt build system internally. See upstream commit: c28b881c98fadcd3415370fad2525b558f6b03e4
2021-12-11build, qt: Drop support for `i686-linux-android` hostHennadii Stepanov
2021-12-10build: Include native_X.mk before X.mkHennadii Stepanov
This change fixes some weirdness like `make print-capnp_version` output in depends.
2021-12-09Merge bitcoin/bitcoin#23603: build: Fix x86_64 <-> arm64 cross-compiling for ↵fanquake
macOS 19f3896c9a6a710bdd49b65a4a4947d90eb8a692 build: Fix x86_64 <-> arm64 cross-compiling for macOS (Hennadii Stepanov) Pull request description: Currently, on master (111c3e06b35b7867f2e0f740e988f648ac6c325d), dependencies are built for the build system architecture, not the provided host. On Intel-based macOS Big Sur 11.6.1 (20G224): ``` % make -C depends HOST=arm64-apple-darwin20 % lipo -info depends/arm64-apple-darwin20/lib/libsqlite3.a Non-fat file: depends/arm64-apple-darwin20/lib/libsqlite3.a is architecture: x86_64 ``` On M1-based macOS Monterey 12.0.1 (21A559) the `boost` package building fails with multiple errors like that: ``` % make -C depends boost HOST=x86_64-apple-darwin19 ... error: option 'cf-protection=return' cannot be specified on this target error: option 'cf-protection=branch' cannot be specified on this target 2 errors generated. ``` This PR allows to cross-compile as follows: - on Intel-based macOS Big Sur 11.6.1 (20G224): ``` % make -C depends HOST=arm64-apple-darwin20 % lipo -info depends/arm64-apple-darwin20/lib/libsqlite3.a Non-fat file: depends/arm64-apple-darwin20/lib/libsqlite3.a is architecture: arm64 % CONFIG_SITE=$PWD/depends/arm64-apple-darwin20/share/config.site ./configure % make % lipo -info src/qt/bitcoin-qt Non-fat file: src/qt/bitcoin-qt is architecture: arm64 ``` - on M1-based macOS Monterey 12.0.1 (21A559): ``` % make -C depends HOST=x86_64-apple-darwin19 % CONFIG_SITE=$PWD/depends/x86_64-apple-darwin19/share/config.site ./configure % make % lipo -info src/qt/bitcoin-qt Non-fat file: src/qt/bitcoin-qt is architecture: x86_64 ``` No behavior change for other builder-host pairs. This is an alternative to bitcoin/bitcoin#22506. ACKs for top commit: fanquake: ACK 19f3896c9a6a710bdd49b65a4a4947d90eb8a692 - this is definitely cleaner than the approach in #22506. I've tested the x86_64 -> arm64 and arm64 -> x86_64 cross-compiles. Going to go-ahead and merge this given it's scoped to building for darwin targets, on darwin. Not sure if this is something we'll actually see used very often. Tree-SHA512: 67a7fed1db79bc43d41aabb5a676f90417a879e5dcffec1384c288b56ee32ba06ae3819abdc7aca85b81af6e782bcfff5c83a67a455560249fa095a807fc1187
2021-12-09Merge bitcoin/bitcoin#23495: build: Bump Fontconfig version up to 2.12.6fanquake
6575d354c8176c67c847b0e0a6cdd42800731a00 build: Bump Fonconfig version up to 2.12.6 (Hennadii Stepanov) Pull request description: This PR gets rid of `remove_char_width_usage.patch`. Some additional observations: 1. Newer Fontconfig versions (2.13.0 and 2.13.1) introduce a new dependency, `uuid`, in the [`7b48fd3dd406b926f0e5240b211f72197ed538a9`](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/commit/7b48fd3dd406b926f0e5240b211f72197ed538a9) commit 2. In Fonconfig 2.13.1 (the current stable) excludes the `fcobjshash.h` from the distributive archive (see [`31269e3589e0e6432d12f55db316f4c720a090b5`](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/commit/31269e3589e0e6432d12f55db316f4c720a090b5)), that makes our `gperf_header_regen.patch` unusable, and requires `gperf` as a dependency. ACKs for top commit: fanquake: ACK 6575d354c8176c67c847b0e0a6cdd42800731a00 - from the best I can determine this doesn't have any versioning / ABI implications. The ABI difference between 2.12.1 and 2.12.6 is two symbol additions, neither of which are used by Qt. Fontconfig seems to be better at maintaining backwards compatibility compared to a library like Freetype. Tree-SHA512: 36780a0c5a658469697e524d682ebab56c320cb04f8297bc215f4552f183d4f560501fb0a869982fd9053d4a2d571c7fd971d8f5e96c9da9a9d142c485e3baa4
2021-12-09Merge bitcoin/bitcoin#23585: scripted-diff: Drop Darwin version for better ↵fanquake
maintainability 2f356a0ca8b080c860c8924d201b98f1f9fa0ad5 scripted-diff: Drop Darwin version for better maintainability (Hennadii Stepanov) Pull request description: After this PR, any macOS tools version bumping in the future will touch fewer files in the repo. Pointing a Darwin version for the `--host` system does not matter for the following reasons: - in terms of the resulted binaries, we should only care about the minimum supported macOS version which is a separated parameter in our build system. - in terms of the build system itself, the usage of the `$(host)` variable is self-consistent enough. Btw `$(host_os)` value already has the version dropped: ``` $ make -C depends --no-print-directory print-host_os HOST=x86_64-apple-darwin19 host_os=darwin ``` ACKs for top commit: gruve-p: ACK https://github.com/bitcoin/bitcoin/pull/23585/commits/2f356a0ca8b080c860c8924d201b98f1f9fa0ad5 promag: ACK 2f356a0ca8b080c860c8924d201b98f1f9fa0ad5. fanquake: ACK 2f356a0ca8b080c860c8924d201b98f1f9fa0ad5 Tree-SHA512: 374896ab0ba02b0d8b4b21431fe963bd213b0d09586e0898c13a4c5fa294c1b693f1b2c92880c245c4157c14217b4825b36522f461930477f4d2a727086ebb2a
2021-12-08Merge bitcoin/bitcoin#23678: build: Fix build for Android x86_64fanquake
ac9e4bc1e27374671ff1ebd96b939793f784ccb2 build: Fix build for Android x86_64 (Hennadii Stepanov) Pull request description: bitcoin/bitcoin#23489 [introduced](https://github.com/bitcoin/bitcoin/pull/23489#issuecomment-985457915) a regression making build for `HOST=x86_64-linux-android` broken due to the [QTBUG-86785](https://bugreports.qt.io/browse/QTBUG-86785). This PR fixes this regression. ACKs for top commit: fanquake: ACK ac9e4bc1e27374671ff1ebd96b939793f784ccb2 Tree-SHA512: c841a56d745c4b4a75e1bc4d89752de153aa6328752a8fd7df614363ed046a291a9eb58605d82fcba21f3c8b0f0bf47786ed0a63c29f81f5d4ad9c0b12304100
2021-12-07Merge bitcoin/bitcoin#23677: build, qt: Use Android NDK r23 LTSfanquake
78a6bc6919e96b5c32efd370540a28aecc2262f6 build, qt: Use Android NDK r23 LTS (Hennadii Stepanov) Pull request description: This is a continuation of bitcoin/bitcoin#23478, and, thanks to bitcoin/bitcoin#23489, a oneline patch is only required to be able build the `qt` package in depends with Android NDK r23 LTS. ACKs for top commit: fanquake: ACK 78a6bc6919e96b5c32efd370540a28aecc2262f6 Tree-SHA512: 09c6e8739ecbcbf5fdd6c2103577be2676eb448941f97c781f476918056c8405d2531d5cef8f240e4d1205c2d49f879edbba74dd5e77799a887b76a5c76ebe5b
2021-12-05build: Fix build for Android x86_64Hennadii Stepanov
2021-12-05build, qt: Use Android NDK r23 LTSHennadii Stepanov
2021-12-03build: Bump Fonconfig version up to 2.12.6Hennadii Stepanov
2021-12-03build: remove x-prefix comparisonsfanquake
Very old shells suffered from bugs which meant that prefixing variables with an "x" to ensure that the lefthand side of a comparison always started with an alphanumeric character was needed. Modern shells don't suffer from this issue (i.e Bash was fixed in 1996). In any case, we've already got unprefixed checks used in our codebase, i.e https://github.com/bitcoin/bitcoin/blob/master/configure.ac#L292, and have dependencies (in depends) that also use unprefixed comparisons. I think it's time that we can consolidate on not using the x-prefix workaround. At best it's mostly just confusing. More info: https://github.com/koalaman/shellcheck/wiki/SC2268 https://www.vidarholen.net/contents/blog/?p=1035