c5d482e0d2 chore: suppress `git config` output (UdjinM6)
8ce9bfea59 chore: tweak error message (UdjinM6)
f4d879a0b3 guix: more sanity checks for `WORKSPACE_PATH` (UdjinM6)
07f056a377 guix: Let `XCODE_SOURCE` be specified via env (UdjinM6)
74489dc82d chore: Log when preparing macOS SDK or adding `safe.directory` option (UdjinM6)
3ac5739e38 guix: "Invert" `guix-start`/`guix-check` cmd-line argument behaviour, defaults to `pwd` (UdjinM6)
187a4f1a0c guix: Avoid adding duplicate `safe.directory` option (UdjinM6)
87c978605e guix: `guix-start` should respect `SDK_PATH` (UdjinM6)
ee5f62b0db guix: build only supported targets using Guix container (Kittywhiskers Van Gogh)
Pull request description:
## Issue being fixed or feature implemented
https://github.com/dashpay/dash/pull/6382#discussion_r1833266383https://github.com/dashpay/dash/pull/6388#discussion_r1835779789
alternative to #6388
## What was done?
## How Has This Been Tested?
## Breaking Changes
## Checklist:
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have added or updated relevant unit/integration/functional/e2e tests
- [ ] I have made corresponding changes to the documentation
- [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
kwvg:
ACK c5d482e0d2
Tree-SHA512: c0271f243f5912f55276fcb371a135f443f23cc1f29480f303ea77deeadb6fd7d3d97e07e6a1fa323a2b2bad1d65aa6298da33978832eb68a0a6303db3e0063c
d7cb92aa7a merge bitcoin#28783: remove `-bind_at_load` usage (Kittywhiskers Van Gogh)
019c9dd7f4 partial bitcoin#25612: default to using GCC tool wrappers for LTO (with GCC) (Kittywhiskers Van Gogh)
9e0b93568b partial bitcoin#24866: No longer need to hack the `PATH` variable in `config.site` (Kittywhiskers Van Gogh)
5dbc83bef1 merge bitcoin#28630: update `LD64_VERSION` to 711 (Kittywhiskers Van Gogh)
b265352c7a merge bitcoin#28422: cctools 986, ld64 711 & libtapi 1300.0.6.5 (Kittywhiskers Van Gogh)
fe94154851 merge bitcoin#28337: use Clang 15 for macOS cross-compilation (Kittywhiskers Van Gogh)
ba281413b0 ci: add missing `xorriso` `PACKAGES` entry in macOS environment (Kittywhiskers Van Gogh)
62b0213c45 merge bitcoin#27999: add macOS test for fixup_chains usage (Kittywhiskers Van Gogh)
be175091e6 merge bitcoin#27676: Bump minimum required runtime version and prepare for building with upstream LLVM (Kittywhiskers Van Gogh)
9f5d4b3719 merge bitcoin#27798: modernize clang flags for Darwin (Kittywhiskers Van Gogh)
54c538d697 merge bitcoin#26578: install binutils, not binutils-gold in depends (Kittywhiskers Van Gogh)
d0aae2bd3d merge bitcoin#26059: revert "Build depends/qt with our platform definition" (Kittywhiskers Van Gogh)
9d1cd6255d merge bitcoin#25917: libnatpmp 07004b97cf691774efebe70404cf22201e4d330d (Kittywhiskers Van Gogh)
fff0f6b628 merge bitcoin#25838: Use `mkspecs/bitcoin-linux-g++` for all Linux hosts (Kittywhiskers Van Gogh)
8d51bcc171 merge bitcoin#22380: add and use C_STANDARD and CXX_STANDARD in depends (Kittywhiskers Van Gogh)
Pull request description:
## Additional Information
* Dependent on https://github.com/dashpay/dash/pull/6383
* Dependency for https://github.com/dashpay/dash/pull/6385
* [bitcoin#24866](https://github.com/bitcoin/bitcoin/pull/24866) is partial because f3af4f7 alters the way `dsymutil`'s location is reported, which is relevant due to the build target `osx_debug` ([source](3aa51d6515/src/Makefile.am (L1025-L1026))) using `dsymutil` to generate flat dSYM bundles to ensure that stacktraces work as expected (introduced in [dash#3006](1807c47a69 (diff-4cb884d03ebb901069e4ee5de5d02538c40dd9b39919c615d8eaa9d364bbbd77R668-R669)))
As-is, with the changes, aberrant behaviour is noticeable when running `configure` (see below), where `depends` defines `DSYMUTIL` as being included in the target directory of the `native_clang` package... despite Guix builds using `FORCE_USE_SYSTEM_CLANG` ([source](3aa51d6515/contrib/guix/libexec/build.sh (L206))), meaning, the `native_clang` is never staged in `depends` because the build environment natively has it.
Attempting to override it in `build.sh` yielded no results.
<details>
<summary>Run:</summary>
```
[...]
checking whether dsymutil needs -flat... ./configure: line 36201: /dash/depends/x86_64-apple-darwin/native/bin/x86_64-apple-darwin-dsymutil: No such file or directory
no
checking that generated files are newer than configure... done
[...]
```
</details>
Which eventually results in the build failing
<details>
<summary>Failure:</summary>
```
make: Entering directory '/distsrc-base/distsrc-22.0.0-beta.1-79-gb284e4c7cd48-x86_64-apple-darwin/src'
for i in dashd dash-cli dash-tx dash-wallet test/test_dash qt/dash-qt ; do mkdir -p $i.dSYM/Contents/Resources/DWARF && /dash/depends/x86_64-apple-darwin/native/bin/x86_64-apple-darwin-dsymutil -o $i.dSYM/Contents/Resources/DWARF/$(basename $i) $i &> /dev/null ; done
make: *** [Makefile:22468: osx_debug] Error 127
make: Leaving directory '/distsrc-base/distsrc-22.0.0-beta.1-79-gb284e4c7cd48-x86_64-apple-darwin/src'
```
</details>
To avoid breakage, the commit overriding `DSYMUTIL` and subsequent changes building on it (portions of [bitcoin#25612](https://github.com/bitcoin/bitcoin/pull/25612)) have been skipped.
## Breaking Changes
* The minimum runtime version needed to run Dash Qt is now macOS 11 (Big Sur)
## Checklist
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
- [x] I have added or updated relevant unit/integration/functional/e2e tests
- [x] I have made corresponding changes to the documentation
- [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
UdjinM6:
utACK d7cb92aa7a
Tree-SHA512: 28c9ea13adc80a00b501afca286bd0b97e14a272bb50f578df7ab1af6ee8139f563bc5d670f0bfe3632bfab769c8228a76b5bcc51cfb727a54e31ac0f9af7a97
a014cf3703 refactor: trim and document assumptions for `Get`*`MN`* and friends (Kittywhiskers Van Gogh)
8c9f57dac4 refactor: trim and document assumptions for `GetQuorum` and friends (Kittywhiskers Van Gogh)
Pull request description:
## Additional Information
This pull request aims to document assumptions when handling `CDeterministicMNCPtr` and `CQuorumCPtr` entities, which can be `nullptr`. In some instances, mishandling or missing validation logic can result in an assertion failure or a null pointer dereference (in both circumstances, the client will crash).
While in other cases, assumptions are made based on prior code that affirms that the returned value will be valid. For the former, bail-out logic has been introduced and for the latter, assertions and code comments have been added.
## Checklist
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
- [x] I have made corresponding changes to the documentation **(note: N/A)**
- [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
knst:
utACK a014cf3703
UdjinM6:
utACK a014cf3703
Tree-SHA512: e21824d61d81c4ca4b5b4a545a833932946eb0f279d15c586bb5eae96aefcc88d1e3b3fdfa7a01d161f1650351a7cac4bc917b2d1109d77ea2eedd8408d8f37d
Some portions of the codebase make implicit assumptions that `GetQuorum`
will not return a `nullptr` by not performing checking for it or make
explicit assumptions by `assert`ing not-`nullptr`.
Let's document explicit assumptions, document implicit assumptions and
soften some hard assumptions where softening is possible.
e9387eef69 refactor: remove unused includes and forward declarations from headers (Konstantin Akimov)
f2a186f3f3 refactor: remove definition IsQuorumDKGEnabled from header (Konstantin Akimov)
8a7941bd0d refactor: merge helper GetCoinbaseTx which is used only once into GetNonNullCoinbaseChainlock (Konstantin Akimov)
Pull request description:
## Issue being fixed or feature implemented
Split from https://github.com/dashpay/dash/pull/6375 and added some extra
## What was done?
Tidy up headers of evo/ and llmq/:
- removed unused includes and added missing
- removed unused forward declarations and added missing
- removed helper GetCoinbaseTx, moved helper IsQuorumDKGEnabled from header to implementation
## How Has This Been Tested?
Run unit and functional tests
Compilation time _in theory_ should be improved, in really it shaved just 2-5 seconds from 5 minutes by my benchmark.
## Breaking Changes
N/A
## Checklist:
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have added or updated relevant unit/integration/functional/e2e tests
- [x] I have made corresponding changes to the documentation
- [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
UdjinM6:
utACK e9387eef69
PastaPastaPasta:
utACK e9387eef69
Tree-SHA512: 7b4795fe0bcea23b9f368a962b888d610cac94b42dd6419cfe06977c1a28bbe27a7a2ae2e4cd730ec0ca4f8b333f656a601ebb90bc271f4117dec7a424a08b45
c32fac079f refactor: more `CGovernanceVote` cleanups (UdjinM6)
efc8c99139 refactor: Introduce `get_chain_conf_names` (UdjinM6)
519966efff refactor: Refactor `CCbTx` python class to match c++ declaration (UdjinM6)
38a0b5ac04 refactor: Move `HasChainLock()` calls out of loops (UdjinM6)
6370c7a9e5 refactor: Tidy up `CGovernanceVote` a bit (UdjinM6)
ae675d5314 refactor: Drop redundant `SplitBy` (UdjinM6)
88c3a13674 refactor: Use `switch..case` instead of `if` in `AvailableCoins` (UdjinM6)
38b304c7b0 refactor: Make bls worker aggregator batch size const (rename it accordingly) (UdjinM6)
0cf7d4a65e refactor: Turn `ReadResult` into enum class (UdjinM6)
d9aab0fa60 refactor: Rename `masternode_state_t` and turn it into enum class (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
## What was done?
## How Has This Been Tested?
## Breaking Changes
## Checklist:
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have added or updated relevant unit/integration/functional/e2e tests
- [ ] I have made corresponding changes to the documentation
- [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
knst:
utACK c32fac079f
PastaPastaPasta:
utACK c32fac079f
Tree-SHA512: 7a33d2d535f73c858cd01a442fb28793b1ea185a2eb50d6bce86b44be1012b7427649e3496647b4a0a7d7816dbbb50f138fa701d203c2aa1e7a515c9c9a0e931
91b7ef8607 merge bitcoin#30438: build Linux GCC with --enable-cet (Kittywhiskers Van Gogh)
cfc6cba4ea partial bitcoin#30511: GCC 12 consolidation (Kittywhiskers Van Gogh)
06f54318b3 merge bitcoin#30231: bump time-machine to f0bb724211872cd6158fce6162e0b8c73efed126 (Kittywhiskers Van Gogh)
5b292eec92 merge bitcoin#29846: replace GCC unaligned VMOV patch with binutils patch (Kittywhiskers Van Gogh)
4d1f7dccd7 merge bitcoin#29828: remove `gcc-toolchain static` from Windows build (Kittywhiskers Van Gogh)
f321d3de0c merge bitcoin#29673: use GCC 11 in macOS build env (Kittywhiskers Van Gogh)
d570e2d21f merge bitcoin#29695: build GCC with --enable-standard-branch-protection (Kittywhiskers Van Gogh)
c965943a57 merge bitcoin#29651: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a (Kittywhiskers Van Gogh)
59a125a5ad merge bitcoin#27897: use GCC 12.3.0 to build releases (Kittywhiskers Van Gogh)
a701b06435 merge bitcoin#29078: Bump guix time-machine to unlock riscv64 metal (Kittywhiskers Van Gogh)
d4b10a3813 merge bitcoin#28786: switch to 6.1 kernel headers over 5.15 (Kittywhiskers Van Gogh)
c3718700ab merge bitcoin#28580: update time-machine (Kittywhiskers Van Gogh)
d36c9b6466 merge bitcoin#28759: update signapple to latest master (Kittywhiskers Van Gogh)
38c71d88b4 merge bitcoin#28370: remove GCC 10 workaround from NSIS (Kittywhiskers Van Gogh)
Pull request description:
## Additional Information
* Dependent on https://github.com/dashpay/dash/pull/6382
* Dependency for https://github.com/dashpay/dash/pull/6384
## Breaking Changes
None expected
## Checklist
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
- [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
- [x] I have made corresponding changes to the documentation **(note: N/A)**
- [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
UdjinM6:
utACK 91b7ef8607
Tree-SHA512: 0cfb436a430cf4b624a48a9928ecac9cd5c50e88e51ed04e7d1d0100968af8be1183364f035ac75153781a5e1616aa2f6fadabf0a1c03ec4b66dedea544b77ad
1edd1215ef merge bitcoin#29987: build with glibc 2.31 (Kittywhiskers Van Gogh)
09498259d3 revert: add exception for 32-bit ARM builds which need glibc 2.28 (Kittywhiskers Van Gogh)
0ac25311d5 merge bitcoin#28328: update time-machine (Kittywhiskers Van Gogh)
ef9c4bdc60 merge bitcoin#28324: pre time-machine bump changes (Linux) (Kittywhiskers Van Gogh)
b45a127658 merge bitcoin#28294: pre time-machine bump changes (Windows) (Kittywhiskers Van Gogh)
ed1f7fe812 merge bitcoin#28069: Remove librt usage from release binaries (Kittywhiskers Van Gogh)
5d51aa940d merge bitcoin#27811: Clean up manifest (Kittywhiskers Van Gogh)
d439e4612f merge bitcoin#27813: Update `python-lief` package to 0.13.2 (Kittywhiskers Van Gogh)
70e62830a1 merge bitcoin#27179: use osslsigncode 2.5 (Kittywhiskers Van Gogh)
3799509603 merge bitcoin#27296: import/sync python-lief (0.12.3) package definition from upstream (Kittywhiskers Van Gogh)
ac8bd5ae5f refactor: move lief definitions to expected location (Kittywhiskers Van Gogh)
eb0ae0828a merge bitcoin#26470: Clean up `libexec/build.sh` (Kittywhiskers Van Gogh)
d3d7a0562a merge bitcoin#24031: don't compress macOS DMG (Kittywhiskers Van Gogh)
6a54603ca3 merge bitcoin#27670: remove redundant glibc patches (Kittywhiskers Van Gogh)
0c988f06d8 merge bitcoin#21089: Add support for powerpc64{,le} (Kittywhiskers Van Gogh)
808d215926 fix: set correct locale in guix ci container (UdjinM6)
Pull request description:
## Motivation
In preparation for migrating to C++20 and bumping our minimum required compiler to ensure that we have access to greater portions of the C++20 spec, this pull request first of two pull requests aiming to upgrade our Guix setup to use GCC 12 (and GCC 11 for the macOS toolchain).
Upgrades to the Clang toolchain for macOS and moving to GCC 12 for the macOS toolchain will be addressed in a separate pull request as the latter requires [bitcoin#21778](https://github.com/bitcoin/bitcoin/pull/21778), which is well outside the scope of this PR.
## Additional Notes
* Dependency for https://github.com/dashpay/dash/pull/6383
* Newer versions of GCC will not behave as expected with `test-security-check.py` as the stack protector (listed as `Canary` in the test) now behaves as expected and no longer fails. This causes an error when running it as the test expects failure (see below). This isn't an issue upstream as they backported [bitcoin#29987](https://github.com/bitcoin/bitcoin/pull/29987), which gets rid of those tests ([source](b5fc6d46a3 (diff-52aa0cda44721f089e53b128cb1232a876006ef257b211655456b17dfb2ec712))).
Therefore, we have backported that pull request as well.
<details>
<summary>Build failure:</summary>
```
======================================================================
FAIL: test_ELF (__main__.TestSecurityChecks)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/distsrc-base/distsrc-22.0.0-beta.1-70-g7907fab39c17-x86_64-linux-gnu/./contrib/devtools/test-security-check.py", line 61, in test_ELF
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-fno-stack-protector','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']),
AssertionError: Tuples differ: (1, 'test1: failed PIE NX RELRO CONTROL_FLOW') != (1, 'test1: failed PIE NX RELRO Canary CONTROL_FLOW')
First differing element 1:
'test1: failed PIE NX RELRO CONTROL_FLOW'
'test1: failed PIE NX RELRO Canary CONTROL_FLOW'
- (1, 'test1: failed PIE NX RELRO CONTROL_FLOW')
+ (1, 'test1: failed PIE NX RELRO Canary CONTROL_FLOW')
? +++++++
----------------------------------------------------------------------
Ran 1 test in 0.126s
FAILED (failures=1)
```
</details>
* The backport has the effect of bumping the target glibc version to 2.31, which as the release notes say, cuts off support for RHEL 8 and Ubuntu 18.04 LTS (`bionic`) (i.e. our Guix binaries won't run on these distros anymore, users running those distros will have to compile it themselves).
This shouldn't be a problem as full support for RHEL 8 ended May 31, 2024 ([source](https://access.redhat.com/support/policy/updates/errata#Life_Cycle_Dates)) and standard support for `bionic` ended April 2023 ([source](https://ubuntu.com/about/release-cycle)).
**Dash Core will still work on Ubuntu 20.04 LTS (`focal`) as it ships with glibc 2.31 ([source](https://packages.ubuntu.com/focal/glibc-doc))**
## Breaking Changes
None expected
## Checklist:
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
- [x] I have added or updated relevant unit/integration/functional/e2e tests
- [x] I have made corresponding changes to the documentation
- [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
UdjinM6:
utACK 1edd1215ef
Tree-SHA512: 194a35a72ede5fb5488cdc41eb15320df7a5fa1fb8815c7342dd15b3983efff417fb1a525fdf497a98ede91958d0a5ed18f3e5f0f27c5cbc5dc25eb58116dbd5