aboutsummaryrefslogtreecommitdiff
path: root/Makefile.am
AgeCommit message (Collapse)Author
2021-10-21Add minisketch dependencyGleb Naumenko
2021-10-12scripts: remove pixie.pyfanquake
2021-10-12scripts: use LIEF for ELF checks in symbol-check.pyfanquake
Co-authored-by: Carl Dong <contact@carldong.me>
2021-10-12test-*-check: Pass in *FLAGS and compile with themCarl Dong
These test-*-check scripts should compile "test" binaries in a way that is as close to what autotools would do, since the goal is to make sure that if we run the *-check script, they can correctly detect flaws in binaries which are compiled by our autotools-based system. Therefore, we should emulate what happens when the binary is linked in autotools, meaning that for C binaries, we need to supply the CFLAGS, CPPFLAGS, and LDFLAGS flags in that order. Note to future developers: perhaps it'd be nice to have these test-*-check scripts be part of configure.ac to avoid having to manually replicate autoconf-like behaviour every time we find a discrepancy. Of course, that would also mean you'd have to write more m4...
2021-09-02test: Rename bitcoin-util-test.py to util/test_runner.pyMarcoFalke
To normalize the name of all three test runners (fuzz, functional, util).
2021-07-18Merge bitcoin/bitcoin#22234: build: Mark print-% target as phony.fanquake
fb7be92b094477131140b58a4e3ae98366b93e76 Mark print-% target as phony. (Dmitry Goncharov) Pull request description: .PHONY does not take patterns (such as print-%) as prerequisites. Have print-% depend on force and mark force as phony. This change ensures print-% rule works even when there is a file that matches the target. ``` $ # on master $ make print-host host=x86_64-pc-linux-gnu $ touch print-host $ make print-host make: 'print-host' is up to date. $ $ git co mark_print_as_phony Switched to branch 'mark_print_as_phony' $ make print-host host=x86_64-pc-linux-gnu $ touch force $ make print-host host=x86_64-pc-linux-gnu ``` ACKs for top commit: hebasto: ACK fb7be92b094477131140b58a4e3ae98366b93e76, tested on Linux Mint 20.2 (x86_64). Tree-SHA512: b89ae66aa8c7aa6a7ab5f0956f9eb3b3ef9d56994b60dc2a97d498d4c1bba537845c190723e8a10310280b1b35df2cd935cc30aeb76735cac2dc621ad7823772
2021-07-07devtools: Improve *-check.py tool detectionCarl Dong
This is important to make sure that we're not testing tools different from the one we're building with. Introduce determine_wellknown_cmd, which encapsulates how we should handle well-known tools specification (IFS splitting, env override, etc.).
2021-06-24Mark print-% target as phony.Dmitry Goncharov
.PHONY does not take patterns (such as print-%) as prerequisites. Have print-% depend on FORCE and mark FORCE as phony. $ # on master $ make print-host host=x86_64-pc-linux-gnu $ touch print-host $ make print-host make: 'print-host' is up to date. $ $ git co mark_print_as_phony Switched to branch 'mark_print_as_phony' $ make print-host host=x86_64-pc-linux-gnu $ touch FORCE $ make print-host host=x86_64-pc-linux-gnu
2021-05-13Makefile.am: use APP_DIST_DIR instead of hard-coding distCarl Dong
2021-04-05build: Remove spaces from variable-printing rulesCarl Dong
This simplifies parsing when using these rules from scripts.
2021-03-18build: Make Windows-specific targets available for Windows builds onlyHennadii Stepanov
2021-03-18build: Make macOS-specific targets available for macOS builds onlyHennadii Stepanov
2021-02-03build: Proper quoting for var printing targetsCarl Dong
Previously, if the value contained syntax that was meaningful to make, the printing would fail. Quoting properly avoids this.
2021-01-26ci: Fuzz with integer sanitizerMarcoFalke
2021-01-21build: Make xorrisofs reproducible with -volume_dateCarl Dong
We need this to be after a '--' as '-volume_date' is a xorriso flag, not a xorrisofs flag. See the respective man pages. For more details: https://issues.guix.info/issue/35283#2
2021-01-12Merge #19937: signet mining utilityWladimir J. van der Laan
595a34dbea01954cb0372b0210d2fd64357a1762 contrib/signet: Document miner script in README.md (Anthony Towns) ff7dbdc08a11e999e7718b6ac7645ecceef81188 contrib/signet: Add script for generating a signet chain (Anthony Towns) 13762bcc9618138dd28b53c2031defdc9d762d26 Add bitcoin-util command line utility (Anthony Towns) 95d5d5e6257825bb385cee318d5681597f7f7646 rpc: allow getblocktemplate for test chains when unconnected or in IBD (Anthony Towns) 81c54dec20891f2627a49b2e3e785fdaf2a1e664 rpc: update getblocktemplate with signet rule, include signet_challenge (Anthony Towns) Pull request description: Adds `contrib/signet/miner` for mining signet blocks. Adds `bitcoin-util` cli utility, with the idea being it can provide bitcoin related functionality that does not rely on the ability to access a running node. Only subcommand currently is "grind" which takes a hex-encoded header and grinds its nonce until its nBits is satisfied. Updates `getblocktemplate` to include `signet_challenge` field, and makes `getblocktemplate` require the signet rule when invoked on the signet change. Removes connectivity and IBD checks from `getblocktemplate` when applied to a test chain (regtest, testnet, signet). ACKs for top commit: laanwj: code review ACK 595a34dbea01954cb0372b0210d2fd64357a1762 Tree-SHA512: 8d43297710fdc1edc58acd9b53e1bd1671e5724f7097b40ab73653715dc8becc70534c4496cbba9290f4dd6538a7a3d5830eb85f83391ea31a3bb5b9d3378cc3
2021-01-12Add bitcoin-util command line utilityAnthony Towns
2020-12-28Merge #20684: build: Define .INTERMEDIATE target once onlyfanquake
5e0dedb111ed9db03914b9dac36cf081974c2918 build: Define .INTERMEDIATE target once only (Hennadii Stepanov) Pull request description: A new warning was introduced in https://github.com/bitcoin/bitcoin/pull/20470/commits/22437fc72e78ba3845a3953853d40093de32c395 (#20470): ``` $ ./autogen.sh ... Makefile.am:335: warning: .INTERMEDIATE was already defined in condition !BUILD_DARWIN, which is included in condition TRUE ... Makefile.am:139: ... '.INTERMEDIATE' previously defined here ... ``` Fixed in this PR. ACKs for top commit: jonatack: Tested and very light review ACK 5e0dedb111ed9db03914b9dac36cf081974c2918 Tree-SHA512: ecf8de79ba394c36ee84e0b8d3ba78587e0f856259e9731e6bbb38d0baebfd083eb44d7ef6a386dd9e4508dd64fec1c2b9a007e175fbd4d986e845b1c300a649
2020-12-18Merge #20434: contrib: Parse ELF directly for symbol and security checksWladimir J. van der Laan
a0a771843fc39c3cc2574a51f009c3391e1808e9 contrib: Changes to checks for PowerPC64 (Luke Dashjr) 634f6ec4eb9997d7bd0f8209fad49a4171d42384 contrib: Parse ELF directly for symbol and security checks (Wladimir J. van der Laan) Pull request description: Instead of the ever-messier text parsing of the output of the readelf tool (which is clearly meant for human consumption not to be machine parseable), parse the ELF binaries directly. Add a small dependency-less ELF parser specific to the checks. This is slightly more secure, too, because it removes potential ambiguity due to misparsing and changes in the output format of `elfread`. It also allows for stricter and more specific ELF format checks in the future. This removes the build-time dependency for `readelf`. It passes the test-security-check for me locally, ~~though I haven't checked on all platforms~~. I've checked that this works on the cross-compile output for all ELF platforms supported by Bitcoin Core at the moment, as well as PPC64 LE and BE. Top commit has no ACKs. Tree-SHA512: 7f9241fec83ee512642fecf5afd90546964561efd8c8c0f99826dcf6660604a4db2b7255e1afb1e9bb0211fd06f5dbad18a6175dfc03e39761a40025118e7bfc
2020-12-17build: Define .INTERMEDIATE target once onlyHennadii Stepanov
2020-12-16build: Replace genisoimage with xorrisofanquake
xorriso and its mkisofs/genisoimage emulation alter-ego xorrisofs are more maintained, and has the right toggles for us to achieve output determinism without using blunt tools like faketime. In this commit, we use xorrisofs from the build environment rather than building it ourselves using depends. This is not necessary and can be changed in the future. From https://wiki.debian.org/genisoimage?action=recall&rev=11 : > The classical command line interface for production of ISO 9660 > filesystem images is the option set established by program mkisofs. > For reasons of licensing and other problems with its author, Debian > ships a fork of mkisofs, called genisoimage, which was split off in > 2006 and then developed independently. > > Meanwhile, genisoimage gets no new features and not even bug fixes. It > is first choice only if its options -udf or -hfs are needed. > > Replacement in most uses cases, especially for bootable ISO 9660 > filesystems, archiving, and backup, is xorrisofs which starts the -as > mkisofs emulation mode of program xorriso.
2020-12-11build: Run libdmg-hfsplus's DMG tool in make deployCarl Dong
Previously, the compression of the .iso file to a .dmg file was done outside of `make deploy' in order to use the faketime-wrapped version of libdmg-hfsplus's DMG tool. Specifying the faketime-wrapped version of the DMG tool to ./configure fixes this and simplifies build scripts.
2020-12-10Merge #20549: Support make src/bitcoin-node and src/bitcoin-guiWladimir J. van der Laan
206f74e88cfa343d228c1d6596d3846863824ca5 Support make src/bitcoin-node and src/bitcoin-gui (João Barbosa) Pull request description: This change adds the following configure output variables ``` dnl Multi Process BITCOIN_MP_NODE_NAME=bitcoin-node BITCOIN_MP_GUI_NAME=bitcoin-gui ``` and adds support for ```sh make src/bitcoin-node src/bitcoin-gui ``` ACKs for top commit: laanwj: Code review ACK 206f74e88cfa343d228c1d6596d3846863824ca5 Tree-SHA512: 4d1a694b9010ecc267ee955f4475127a58e6da72f30179ec740285ee6fe03cd91dcb6847317a47460dbd548edb88b7da6c7a98eac10f0dabe3ce4e83e0aa8093
2020-12-09contrib: add symbol check test for PEfanquake
2020-12-08Merge #20422: build: mac deployment unificationfanquake
b685f60a08007e0ae8a5564ee68cd94f9015d899 build: mac_alias 2.1.1 (fanquake) 5d2cbdf772030b203ab1b32c65481ce3fc524b22 macdeploy: use Python 3.6 (fanquake) a42aa94c54699833723076f3bfaeeac668523a69 macdeploy: remove runHDIUtil in favor of directly calling subprocess.run (fanquake) adaa26202b965346566b5adff2fc5cee65955dfe macdeploy: remove existing Bitcoin-Core.dmg if present (fanquake) ccb0325b1bd1cee5a76382a16901dc80ea8f50d8 macdeploy: move qt_conf to where it's used (fanquake) 6390a04862c043cd2bdf3610f3bcf9cb5526659f macdeploy: consolidate .DS_Store generation (fanquake) 32347cd56aaae95f3f4c78be9270565285280d72 macdeploy: assume plistlib is available (fanquake) 0ab4018c1217f82dffd65e973d9cccf13af2ef50 macdeploy: have a single level of logging output (fanquake) 827d382aa79d503470cc7abb0000cc365db06f12 macdeploy: remove add-resources argument (fanquake) 464b34d4c328d5109b8dd197da9e7f00d1b843c2 macdeploy: remove codesigning argument (fanquake) 4d70d3d7fe29db38a1f9c84a3a6167ca57b38479 build: automatically determine macOS translations (fanquake) Pull request description: This consolidates our macOS build code so that `.DS_Store` generation is the same when running `make deploy` for macOS when building on Linux and macOS, rather than maintaining two version of code that essentially do the same thing (just slightly differently). It also removes unused code and any AppleScript usage, automates finding translation files and generally simplifies `macdeployqtplus`. It also gets rid of the annoying "popping up" behaviour during DMG generation, names the created image `Bitcoin-Core.dmg` rather than `Bitcoin-Qt.dmg`. ACKs for top commit: dergoegge: ACK b685f60a08007e0ae8a5564ee68cd94f9015d899 - Less and cleaner code looks good. I tested this with `make deploy` and everything still works + the popup during DMG generation is gone. Tree-SHA512: dcd38344e2dfcfa7ffbccf6226a71425c4d16b421a4881d5ee37b8e7ef393b3e8077262444c39b11912269d8cf688aba897e6518cba8361eb24a03fdd03b8caf
2020-12-03contrib: add MACHO tests to symbol-check testsfanquake
2020-12-03contrib: Add test for ELF symbol-checkWladimir J. van der Laan
Check both failure cases: - Use a glibc symbol from a version that is too new - Use a symbol from a library that is not in the allowlist And also check a conforming binary. Adding a similar check for Windows PE can be done in a separate PR.
2020-12-02Support make src/bitcoin-node and src/bitcoin-guiJoão Barbosa
2020-11-30macdeploy: consolidate .DS_Store generationfanquake
Rather than two lots of logic doing roughly the same thing, dependent on if you're compiling on Linux or macOS, combine the .DS store generation into macdeployqtplus. This also removes the -fancy and -volname options.
2020-11-30macdeploy: have a single level of logging outputfanquake
4 different levels of verbosity is overkill for a fairly simple script, which was always being run at 2 in any case.
2020-11-30build: automatically determine macOS translationsfanquake
Rather than using OSX_QT_TRANSLATIONS which must be manually updated, and we forget to update anyway, i.e: #19059, automatically find and copy available translations from the translations directory.
2020-11-22contrib: Parse ELF directly for symbol and security checksWladimir J. van der Laan
Instead of the ever-messier text parsing of the output of the readelf tool (which is clearly meant for human consumption not to be machine parseable), parse the ELF binaries directly. Add a small dependency-less ELF parser specific to the checks. This is slightly more secure, too, because it removes potential ambiguity due to misparsing and changes in the output format of `elfread`. It also allows for stricter and more specific ELF format checks in the future. This removes the build-time dependency for `readelf`. It passes the test-security-check for me locally, though I haven't checked on all platforms.
2020-09-08build: use DIR_FUZZ_SEED_CORPUS if specified for cov_fuzz targeteugene
This commit allows the user to specify the location of the fuzz_seed_corpus directory on their machine when running the cov_fuzz target. If DIR_FUZZ_SEED_CORPUS is specified, then this will be used. Otherwise, qa-assets/fuzz_seed_corpus is assumed to be in the bitcoin directory.
2020-09-02build: add /usr/local/ to LCOV_FILTER_PATTERN for macOS buildseugene
With this commit, the files in /usr/local/ will not be included in `make cov` or `make cov_fuzz` coverage reports. This behavior could be observed when generating the reports on macOS with brew-installed clang.
2020-08-08build: Add missed fuzz_filtered.info to COVERAGE_INFOHennadii Stepanov
2020-08-08build, test: Add support for llvm-covHennadii Stepanov
2020-06-16tests: run test-security-check.py in CIfanquake
2020-05-23gui: update Qt base translations for macOS releasefanquake
These haven't been updated since their addition, so this updates the list that controls which qt base translations are bundled with the macOS binary, to all the languages that are available with qt 5.9.8. This could probably be improved in some way, however qt updates are infrequent, and I didn't want to spend any more time looking at this. Also given that no-one seems to have noticed and/or reported this it wouldn't seem high-priority. Could be backported to 0.20.1.
2020-05-01build: Accomodate makensis v2.xCarl Dong
Apparently the -X flag doesn't work as expected in makensis v2.x For example: makensis -V2 share/setup.nsi -X'OutFile "test.exe"' Will output: OutFile expects 1 parameters, got 0. Usage: OutFile install_output.exe So let's instead construct the file using POSIX-compliant commands and shell constructs
2020-04-28nsis: Specify OutFile path only onceCarl Dong
Previously, we would specify the makensis output file path twice: 1. At the top of Makefile.am as BITCOIN_WIN_INSTALLER, and 2. In share/setup.nsi.ini This commit uses the -X flag of makensis to eliminate the need for the second instance mentioned above, referring makensis directly to the value of BITCOIN_WIN_INSTALLER
2020-03-27Merge #18107: build: Add cov_fuzz targetWladimir J. van der Laan
faf7d4fa86b700ec272806cd2bd8666a92405619 build: Add cov_fuzz target (MarcoFalke) fac71e364e4bbaeffc35e45aff8c8c2c6f2b5c67 build: link fuzz/test_runner.py for out-of-tree builds (MarcoFalke) faf2c5aca01643eb560287e08f9c0a7ca0ac9c88 build: Remove unused USE_COVERAGE (MarcoFalke) Pull request description: Only libFuzzer is supported right now, so clang is required. Thus, this needs a workaround such as https://github.com/bitcoin/bitcoin/issues/12602#issuecomment-562788247 Can be tested with: ``` mkdir build && cd build ../configure --enable-fuzz --with-sanitizers=fuzzer --enable-lcov --enable-lcov-branch-coverage CC=clang CXX=clang++ make $MAKEJOBS make cov_fuzz ACKs for top commit: practicalswift: ACK faf7d4fa86b700ec272806cd2bd8666a92405619 Tree-SHA512: 6828f8f81d95f6781713d0b09d7eba2ffdb50217e09ca839db61791a4ed70024859c7a0cb01d9eede79166d574dd57ece01f9d9fe2610d4a72a4ca4a4ce0b838
2020-03-27Merge #18416: util: Limit decimal range of numbers ParseScript acceptsWladimir J. van der Laan
9ab14e4d21c73d16d8d782f1576fe29e659e2a70 Limit decimal range of numbers ParseScript accepts (pierrenn) Pull request description: Following up on this suggestion : https://github.com/bitcoin/bitcoin/pull/18413#issuecomment-602966490, prevent the output of `atoi64` in the `core_read.cpp:ParseScript` helper to send to `CScriptNum::serialize` values wider than 32-bit. Since the `ParseScript` helper is only used by the tool defined in `bitcoin-tx.cpp`, this only prevents users to provide too much unrealistic values. ACKs for top commit: laanwj: ACK 9ab14e4d21c73d16d8d782f1576fe29e659e2a70 Tree-SHA512: ee228269d19d04e8fee0aa7c0ae2bb0a2b437b8e574356e8d9b2279318242057d51fcf39a842aa3afe27408d0f2d5276df245d07a3f4828644a366f80587b666
2020-03-27Limit decimal range of numbers ParseScript acceptspierrenn
2020-03-15build: Drop needless EXTRA_DIST contentHennadii Stepanov
Some EXTRA_DIST content is needless since a git archive is used as the source tarball.
2020-02-10build: Add cov_fuzz targetMarcoFalke
2020-01-28build: Add LCOV exception for crc32cWladimir J. van der Laan
2019-12-16build: remove WINDOWS_BITS from build systemfanquake
We no longer build/ship 32 bit windows executables.
2019-12-09lcov: filter /usr/lib64 from coverage reportnijynot
2019-12-06lcov: filter depends from coverage reportnijynot
2019-10-23Merge #17091: tests: Add test for loadblock option and linearize scriptsWladimir J. van der Laan
89339d14607434b33cfa343dc75877b62b1dfe0e tests: Add test for loadblock option (Fabian Jahr) Pull request description: Fixes #17019 Was initially part of #17044 but as the test got larger it made sense to split it into its own commit as suggested in #17019 . This is testing the `-loadblock` option by using the scripts in `contrib/linearize` to generate a `bootstrap.dat` file and starting a disconnected node with it. So it is also testing the linearize scripts which were untested before and needed to be made available for the CI environment, hence they are added to `DIST_CONTRIB` in `Makefile.am`. ACKs for top commit: laanwj: ACK 89339d14607434b33cfa343dc75877b62b1dfe0e Tree-SHA512: aede0cd6e8b21194973f3633bc07fa2672d66a6f85dfe6a57cee2bb269a65d19ea49d5f9ed7914a173b3847c76e70257aa865f44bde170c1999d9655b4862d1c