Commit graph

2162 commits

Author SHA1 Message Date
fanquake
5f2c1d84e3
guix: show *_FLAGS variables in pre-build output
For example:
```bash
ADDITIONAL_GUIX_COMMON_FLAGS set in the ENV
ADDITIONAL_GUIX_ENVIRONMENT_FLAGS="--emulate-fhs" ./contrib/guix/guix-build
<snip>
INFO: Building f75199182133 for platform triple x86_64-linux-gnu:
      ...using reference timestamp: 1716905119
      ...running at most 10 jobs
      ...from worktree directory: '/bitcoin'
          ...bind-mounted in container to: '/bitcoin'
      ...in build directory: '/bitcoin/guix-build-f75199182133/distsrc-f75199182133-x86_64-linux-gnu'
          ...bind-mounted in container to: '/distsrc-base/distsrc-f75199182133-x86_64-linux-gnu'
      ...outputting in: '/bitcoin/guix-build-f75199182133/output/x86_64-linux-gnu'
          ...bind-mounted in container to: '/outdir-base/x86_64-linux-gnu'
      ADDITIONAL FLAGS (if set)
          ADDITIONAL_GUIX_COMMON_FLAGS: --no-substitutes
          ADDITIONAL_GUIX_ENVIRONMENT_FLAGS: --emulate-fhs
          ADDITIONAL_GUIX_TIMEMACHINE_FLAGS:
```
2024-06-03 11:56:40 +01:00
merge-script
be100cf4c7
Merge bitcoin/bitcoin#21778: build: LLD based macOS toolchain
e8c25e8a35 guix: drop binutils from macOS env (fanquake)
555fddf646 guix: use GUIX_LD_WRAPPER_DISABLE_RPATH for all HOSTS (fanquake)
9ec238d0f3 guix: remove ZERO_AR_DATE export (fanquake)
f836f7e9b3 depends: remove cctools & libtapi (fanquake)
4a0536c5d9 build: switch to using lld for macOS builds (fanquake)
c6a6b2d6fd build: add lld into macOS build environment(s) (fanquake)
437e908ebd depends: swap cctools-x for llvm-x (fanquake)
bab287d1ba depends: don't use -no_warning_for_no_symbols in macOS qt build (fanquake)

Pull request description:

  This switches us to using a [LLD](https://lld.llvm.org/) based toolchain for macOS builds.

  ### Benefits
  * Less complicated macOS toolchain.
  * No longer beholden to Apple releasing it's [source](https://opensource.apple.com/source/) for [cctools](https://opensource.apple.com/source/cctools/), [ld64](https://opensource.apple.com/source/ld64/) & [libtapi](https://opensource.apple.com/source/tapi/).
  * No more reliance on third parties to modify those sources for us. i.e [apple-libtapi](https://github.com/tpoechtrager/apple-libtapi), [cctools-port](https://github.com/tpoechtrager/cctools-port) (cctools + ld64).

ACKs for top commit:
  theuni:
    Tentative ACK e8c25e8a35.

Tree-SHA512: ec73304e8a2cd4c71041f7863d7d2e4e0408787299fb4fa3745076853156e8f64e4742e16f30d65e3a27f1e9c0d19cdf802248366b72a4fcb4ea821f92bb7a00
2024-05-29 09:42:05 +01:00
fanquake
e8c25e8a35
guix: drop binutils from macOS env 2024-05-22 08:51:34 +01:00
fanquake
555fddf646
guix: use GUIX_LD_WRAPPER_DISABLE_RPATH for all HOSTS 2024-05-22 08:51:33 +01:00
fanquake
9ec238d0f3
guix: remove ZERO_AR_DATE export
LLD enables ZERO_AR_DATE by default, setting it to zero would enable
non-determinism, setting it to any other value is ignored.

See:
https://github.com/llvm/llvm-project/blob/main/lld/docs/MachO/ld64-vs-lld.rst.
2024-05-22 08:51:33 +01:00
fanquake
f836f7e9b3
depends: remove cctools & libtapi 2024-05-22 08:51:33 +01:00
fanquake
4a0536c5d9
build: switch to using lld for macOS builds
Adjust the security check for:
ld64.lld: warning: Option `-allow_stack_execute' is not yet implemented.
ld64.lld: error: -fixup_chains is incompatible with -no_pie
and to account for the embedding of LLVMs version number.
2024-05-22 08:51:33 +01:00
fanquake
c6a6b2d6fd
build: add lld into macOS build environment(s) 2024-05-22 08:51:33 +01:00
Ava Chow
9f4ff1e965 windeploy: Renew certificate 2024-05-21 23:19:51 -04:00
merge-script
695d80126f
Merge bitcoin/bitcoin#30074: contrib: use ENV flags in get_arch
b59a027d95 contrib: drop dead get_machine from test sym check (fanquake)
e6aba463ad contrib: use env_flags in get_arch (fanquake)

Pull request description:

  This isn't an issue right now (because the get_arch check is simple), but becomes one as soon as we want to use `lld` for linking, and need LDFLAGS (otherwise we call `ld` and fail, see it's usage in #21778). So I've split this out for review. It also makes sense to use the same flags for all compilation in these checks.

  Also drops some dead code in test-symbol-check.

ACKs for top commit:
  TheCharlatan:
    ACK b59a027d95

Tree-SHA512: d8afc4144815369aae63cf6dc6e983af46f208c7043d6ea5c9c811152649c256a8e67eb6864ea9d385d87b6b049fece07710a84b90da325da7fc3f05efcaacd6
2024-05-15 09:02:32 +08:00
merge-script
4d3f1d08db
Merge bitcoin/bitcoin#29739: build: swap cctools otool for llvm-objdump
7f5ac4520d build: swap otool for (llvm-)objdump (fanquake)

Pull request description:

  This tool is used in GUI packaging on macOS, and also somewhat of a blocker for #21778. The main issue is that some distros don't really ship this tool in a standard ways, i.e Ubuntu only ships `llvm-otool` with a version suffix, i.e `llvm-otool-17`, which makes it hard to find and use. Rather than trying to deal with that mess, switch to using the equivalent LLVM tool (objdump), which is a drop-in replacement.

ACKs for top commit:
  TheCharlatan:
    ACK 7f5ac4520d
  theuni:
    ACK 7f5ac4520d. Tested `make deploy` on native macOS. Looks good.
  hebasto:
    ACK 7f5ac4520d.

Tree-SHA512: ac978043f14fb448010542a4a7ce8c6c74b4cbd90f83b4cb4d0bff55974010f10a70b5354f65b239a8bd961d7a3aca22ca165b42954ca87879b9e0524db5f879
2024-05-11 18:34:42 +08:00
fanquake
b59a027d95
contrib: drop dead get_machine from test sym check 2024-05-10 00:13:50 +08:00
fanquake
e6aba463ad
contrib: use env_flags in get_arch
Otherwise we fail to link when trying to use lld.
2024-05-10 00:13:31 +08:00
Ava Chow
ceb1e078f8
Merge bitcoin/bitcoin#28793: contrib: Add asmap-tool
6abe772a17 contrib: Add asmap-tool (Fabian Jahr)

Pull request description:

  This adds `asmap.py` and `asmap-tool.py` from sipa's `nextgen` branch: https://github.com/sipa/asmap/tree/nextgen

  The motivation is that we should maintain the tooling for de- and encoding asmap files within the bitcoin core repository because it is not possible to use an asmap file that is not encoded.

  We already had an earlier version of `asmap.py` within the seeds contrib tools. The newer version only had a small amount of changes and is still compatible, so the old version is removed from contrib/seeds and the new version is made available to `makeseeds.py`.

ACKs for top commit:
  virtu:
    ACK [6abe772](6abe772a17)
  0xB10C:
    ACK 6abe772a17
  achow101:
    ACK 6abe772a17
  brunoerg:
    ACK 6abe772a17

Tree-SHA512: cc2a82ffa4eb46fa0ce4ca769dd82f8d0d2f37fc3652aa748eeb060e1142f9da4035008fe89433e2fd524a4dc153b7b9c085748944b49137b37009b0c0be8afb
2024-05-09 11:57:30 -04:00
fanquake
7f5ac4520d
build: swap otool for (llvm-)objdump
Similar to libtool, (llvm-)otool only exists with a version suffix
on some systems (Ubuntu), which makes it annoying to use/find. Avoid
this, by switching to objdump. Which is a drop-in replacement.

This is related to #21778, and the switchover to using vanilla LLVM for
macOS.
2024-05-08 16:36:41 +08:00
merge-script
a46065e36c
Merge bitcoin/bitcoin#29895: guix: remove bzip2 from deps
b8e084b978 guix: remove no-longer-used bzip2 (fanquake)
bd6e1d6718 depends: switch qrencode to .tar.gz (fanquake)
4a9b71b900 depends: switch libxcb_util_wm to .tar.gz (fanquake)
fad989852d depends: switch libxcb_util_render to .tar.gz (fanquake)
ce28cb31b4 depends: switch libxcb_util_keysyms to .tar.gz (fanquake)
00a6896346 depends: switch libxcb_util_image to .tar.gz (fanquake)
8e9190c6aa depends: switch libxcb_util to .tar.gz (fanquake)
b845029d46 depends: switch xproto to .tar.gz (fanquake)
5996c30384 depends: switch libXau to .tar.gz (fanquake)
e7a8dd5931 depends: switch fontconfig to .tar.gz (fanquake)
58c423def3 depends: switch boost to .tar.gz (fanquake)

Pull request description:

  This moves packages in depends that use `.tar.bzip2` to `.tar.gz` (which is what we use for our own release tarballs). Doing so means we can drop `bzip2` from our Guix release env. You can observe that Guix building master without it would currently fail:
  ```diff
  diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm
  index 8f13c642d3..96818c7748 100644
  --- a/contrib/guix/manifest.scm
  +++ b/contrib/guix/manifest.scm
  @@ -499,7 +499,6 @@ inspecting signatures in Mach-O binaries.")
           moreutils
           ;; Compression and archiving
           tar
  -        bzip2
           gzip
           xz
           ;; Build tools
  ```
  `FORCE_DIRTY_WORKTREE=1 ./contrib/guix/guix-build`
  ```bash
  Extracting boost...
  /sources/boost_1_81_0.tar.bz2: OK
  tar (child): lbzip2: Cannot exec: No such file or directory
  tar (child): Error is not recoverable: exiting now
  tar: Child returned status 2
  tar: Error is not recoverable: exiting now
  ```

  Guix Build:
  ```bash
  8f6959d01ae972bae1340dfaf18753607152eca9844e6d8c4fa128314a4ba762  guix-build-b8e084b9781e/output/aarch64-linux-gnu/SHA256SUMS.part
  3c9c1cc000e3e6b7c2853c9d530c9afa1c880a43e7ab4c766aaa88283ff0908c  guix-build-b8e084b9781e/output/aarch64-linux-gnu/bitcoin-b8e084b9781e-aarch64-linux-gnu-debug.tar.gz
  f45fbece697b450538aded11f568e92b2af391e873e113c3038d022eff41688f  guix-build-b8e084b9781e/output/aarch64-linux-gnu/bitcoin-b8e084b9781e-aarch64-linux-gnu.tar.gz
  08295d770c11b2057206f98aaf4123007c7475bd942840d048f5f9d5efec1ce1  guix-build-b8e084b9781e/output/arm-linux-gnueabihf/SHA256SUMS.part
  0a0db6967168019b8b890ec4d31b3a87a88c4956b703938ec4447d514cfc231e  guix-build-b8e084b9781e/output/arm-linux-gnueabihf/bitcoin-b8e084b9781e-arm-linux-gnueabihf-debug.tar.gz
  3d1538e8bf4edfb66a4875198dfa90b79dcfe44eb9c4e76e47d73a18175c838a  guix-build-b8e084b9781e/output/arm-linux-gnueabihf/bitcoin-b8e084b9781e-arm-linux-gnueabihf.tar.gz
  87e7805155dbed3bd64763f199ea63843ed8c4eb37873753c7e60b0b42565eaf  guix-build-b8e084b9781e/output/arm64-apple-darwin/SHA256SUMS.part
  fa33590296aeae2b738b023a4cbf2de4a4e06662a5f7d407c251a8af714bd587  guix-build-b8e084b9781e/output/arm64-apple-darwin/bitcoin-b8e084b9781e-arm64-apple-darwin-unsigned.tar.gz
  32b8fbbdf240f9f08e44c7bb0a8ea2e8a40537e59ec2231cf6635edc6592f226  guix-build-b8e084b9781e/output/arm64-apple-darwin/bitcoin-b8e084b9781e-arm64-apple-darwin-unsigned.zip
  d176f3b7c8140c8dfde03bd87fd5abd4a89b497ba11fa6849bc92a33cb621a07  guix-build-b8e084b9781e/output/arm64-apple-darwin/bitcoin-b8e084b9781e-arm64-apple-darwin.tar.gz
  5273b17087e3565ab042a7989cfba71cf1629331d0267137d7eccabee1a06a13  guix-build-b8e084b9781e/output/dist-archive/bitcoin-b8e084b9781e.tar.gz
  b84a9180181994a6a17a1c2a4701f8ba5a82654233d5a8afcf596d28dd8b3924  guix-build-b8e084b9781e/output/powerpc64-linux-gnu/SHA256SUMS.part
  fd3396f6b64425a31b5a3565ab4d8a1c1668c291349a0f9e9b8904dad04ee24c  guix-build-b8e084b9781e/output/powerpc64-linux-gnu/bitcoin-b8e084b9781e-powerpc64-linux-gnu-debug.tar.gz
  73cb4bd2a67934c93ea8e3f3bc04b8917627ec09d75c151bb01977bba97522c8  guix-build-b8e084b9781e/output/powerpc64-linux-gnu/bitcoin-b8e084b9781e-powerpc64-linux-gnu.tar.gz
  15938e7f0f71303b96566d60e3b255816e7fd70d628601e592e1d6840eb8d2a1  guix-build-b8e084b9781e/output/riscv64-linux-gnu/SHA256SUMS.part
  408b4973865e3a77be833438f71181fd88acd0490127257b3667309e8421030e  guix-build-b8e084b9781e/output/riscv64-linux-gnu/bitcoin-b8e084b9781e-riscv64-linux-gnu-debug.tar.gz
  a5c02144ffb79cfa0179ff0d7ac0f81192ef1d3b1acfad334adf486e50b776bb  guix-build-b8e084b9781e/output/riscv64-linux-gnu/bitcoin-b8e084b9781e-riscv64-linux-gnu.tar.gz
  de904843d8bb8601a2d763701ebb929e61b447e01040267a12149a2902489535  guix-build-b8e084b9781e/output/x86_64-apple-darwin/SHA256SUMS.part
  414cb3cf3fa10b9a3cda47e98858222f01fdd164371dd54761642e6793099849  guix-build-b8e084b9781e/output/x86_64-apple-darwin/bitcoin-b8e084b9781e-x86_64-apple-darwin-unsigned.tar.gz
  6ce43d7f007bf17eca16d3ee48190318e09aacd82c5396f9565e6345ec6bd2fa  guix-build-b8e084b9781e/output/x86_64-apple-darwin/bitcoin-b8e084b9781e-x86_64-apple-darwin-unsigned.zip
  24eba9c0dd1312a68c2b2a800cc915595e343c0ead982b6cbe025abe7a7bff19  guix-build-b8e084b9781e/output/x86_64-apple-darwin/bitcoin-b8e084b9781e-x86_64-apple-darwin.tar.gz
  2869a01ce847298950a91b3b8514bc8fa39cc274a8e9cd4f68f4f038c1bb3040  guix-build-b8e084b9781e/output/x86_64-linux-gnu/SHA256SUMS.part
  3f63e1d3b19b640d3994074b344d595bcd6fca420a1a8669b63b4ad22978308b  guix-build-b8e084b9781e/output/x86_64-linux-gnu/bitcoin-b8e084b9781e-x86_64-linux-gnu-debug.tar.gz
  ccc3eb8eb56c1596981e81c8c95cadee3db799ed69b0cd1fb1e102da10adacfb  guix-build-b8e084b9781e/output/x86_64-linux-gnu/bitcoin-b8e084b9781e-x86_64-linux-gnu.tar.gz
  1ff6dab6dcde9ddbbe407cca02119c4a5d545034c91389a1c647020902b7b40e  guix-build-b8e084b9781e/output/x86_64-w64-mingw32/SHA256SUMS.part
  a91c2247fd9d886e3f3ada551c0a4f9f7ffc4874e07ea5ab9de14f2743b9b8c7  guix-build-b8e084b9781e/output/x86_64-w64-mingw32/bitcoin-b8e084b9781e-win64-debug.zip
  6fbc8d5df571fd535990370009bdfcbb37b9697c33446a08eadb1279ba6e4649  guix-build-b8e084b9781e/output/x86_64-w64-mingw32/bitcoin-b8e084b9781e-win64-setup-unsigned.exe
  38f7a981fd2999c1e138860e1ddc183dafec090d867e37f5ab5c2d48ad4ef9ee  guix-build-b8e084b9781e/output/x86_64-w64-mingw32/bitcoin-b8e084b9781e-win64-unsigned.tar.gz
  88aca0a40a64a289617aad060a9ccf8c78bc6a201470720d8caf48d793d5207f  guix-build-b8e084b9781e/output/x86_64-w64-mingw32/bitcoin-b8e084b9781e-win64.zip
  ```

ACKs for top commit:
  laanwj:
    This is fully expected (no weird changes from dropping bzip2 from the build env). ACK b8e084b978

Tree-SHA512: 7da9a75a3ff7fa0c9ff464e3a82f5b1d0cfdd28d5de049c910142179f7e1211c922b705361844c7029ce9baaa8e97e8016b454d2e4eee98e31fae1379674fbe2
2024-04-29 10:00:23 +08:00
Fabian Jahr
6abe772a17
contrib: Add asmap-tool
Co-authored-by: Pieter Wuille <pieter@wuille.net>
2024-04-25 17:27:08 +02:00
merge-script
d48d55e0d3
Merge bitcoin/bitcoin#29890: deploy: remove some tools when cross-compiling for macOS
1a9aa8d4ee build: better scope usage of -Wl,-headerpad_max_install_names (fanquake)
3bee51427a build: don't use install_name_tool for macOS deploy when cross-compiling (fanquake)
78b6b5c485 build: don't pass strip to macOS deploy if cross-compiling (fanquake)

Pull request description:

  Neither of these tools are actually used when we are cross-compiling for macOS. They are used when we have to adjust non-static libs during a deploy after building on a macOS machine. Simplies #29739 (will be rebased on top).

  Guix (aarch64):
  ```bash
  8f29bce75d7f574306a0e38d793e0e4e145b547a4b9e5a755a54976121d8ac41  guix-build-5afd3c302051/output/arm64-apple-darwin/SHA256SUMS.part
  9ba01fe46be715adcbe80f39dc7dbe449f32ca9d9b660da698f933aef3e6d80b  guix-build-5afd3c302051/output/arm64-apple-darwin/bitcoin-5afd3c302051-arm64-apple-darwin-unsigned.tar.gz
  37719437e951449341d0e10dcc4afe93e955d59de5312ce6351e1fa01b4927ac  guix-build-5afd3c302051/output/arm64-apple-darwin/bitcoin-5afd3c302051-arm64-apple-darwin-unsigned.zip
  06a79fc871dcd4290f5f7e7e9de19a5a535203d20279f4555d1c319d07abe2d0  guix-build-5afd3c302051/output/arm64-apple-darwin/bitcoin-5afd3c302051-arm64-apple-darwin.tar.gz
  98d2b8b37197dcad36a04eb2f3ff2130b859220a17b83a4186a78dcf0af4eafd  guix-build-5afd3c302051/output/dist-archive/bitcoin-5afd3c302051.tar.gz
  df63ff44ef41565ff13ce6dde5485173a18d5866ebc316df86f9ebd91fda18f5  guix-build-5afd3c302051/output/x86_64-apple-darwin/SHA256SUMS.part
  28362ce9e80d5e78db198efa5f89434fbe76ca91df5fde7455da4d50ceb8523a  guix-build-5afd3c302051/output/x86_64-apple-darwin/bitcoin-5afd3c302051-x86_64-apple-darwin-unsigned.tar.gz
  534745b679eb9e8e408dd251a6bf0829e62e12f7a41772b8a57a044ded14208c  guix-build-5afd3c302051/output/x86_64-apple-darwin/bitcoin-5afd3c302051-x86_64-apple-darwin-unsigned.zip
  f53d0c9a1bb83d548c7d274c7d39653a3989fb1b4efec49e73dd1cac7c92074c  guix-build-5afd3c302051/output/x86_64-apple-darwin/bitcoin-5afd3c302051-x86_64-apple-darwin.tar.gz
  ```

ACKs for top commit:
  TheCharlatan:
    ACK 1a9aa8d4ee

Tree-SHA512: 0aa77ea4d6dc45c226806bb1758b6aa7e8ca17f91045bab4fc6891af7b9de476211cd5692c11cb9d5bcf59744fd86a2534812a77fe304ae10c3518e08fc412be
2024-04-25 21:21:42 +08:00
merge-script
427044afa3
Merge bitcoin/bitcoin#29585: contrib: list other binaries in manpage output
7c3ac598dd contrib: list other binaries in manpage output (fanquake)

Pull request description:

  Add a `SEE ALSO` section to the manpages.

  Master:
  ![master](https://github.com/bitcoin/bitcoin/assets/863730/da6f0151-e43a-4578-983d-4f2def80a8eb)

  This PR:
  ![pr](https://github.com/bitcoin/bitcoin/assets/863730/d57a1c9a-50c7-4f1a-834e-0f8af8520921)

  Should be enough to close #29558.

ACKs for top commit:
  jarolrod:
    tACK 7c3ac598dd
  willcl-ark:
    ACK 7c3ac598dd
  pablomartin4btc:
    utACK 7c3ac598dd
  laanwj:
    Code review ACK 7c3ac598dd

Tree-SHA512: 0df13ed5d736aa514a1192115728314fc676714f4cb9131f37b5d9a9bfc8f85f98c21b859d6b62745211f3de16b33ff60888e7f6a4eca66fc0c52442503f4336
2024-04-24 21:23:58 +08:00
fanquake
b8e084b978
guix: remove no-longer-used bzip2 2024-04-19 13:01:10 +01:00
Ryan Ofsky
dbd2000b34
Merge bitcoin/bitcoin#28340: security: restrict abis in bitcoind.service
0244416aac security: restrict abis in bitcoind.service (Charlie)

Pull request description:

  [As noted here](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#MemoryDenyWriteExecute=), it's a good idea to pair `MemoryDenyWriteExecute=true` with `SystemCallArchitectures=native` because `MemoryDenyWriteExecute` can be circumvented in some operating systems which support multiple ABIs like x86/x86-64.
  This helps restrict the possible application binary interfaces (ABIs) that can be used when running bitcoind through systemd, reducing the attack surface area.

ACKs for top commit:
  laanwj:
    ACK 0244416aac . This is a sensible security feature.
  0xB10C:
    ACK 0244416aac

Tree-SHA512: 77a35b0674d8d67d857cd20ae1b8cd011f82d6f5ed21bc106cbe45bfa937e786ddc1bf7261e3bdb8c289df1224e91658760905d2c8f37cc4c6506ef8037ad158
2024-04-17 13:00:42 -04:00
merge-script
3b70ce231e
Merge bitcoin/bitcoin#29846: guix: replace GCC unaligned VMOV patch with binutils patch
a0dc2ebcda guix: replace GCC unaligned VMOV patch with binutils patch (fanquake)

Pull request description:

  Rather than invasively patching GCC, given we have binutils 2.38 available, we can patch it to flip the default for
  `-muse-unaligned-vector-move`.

  A 1 line binutils patch, is much more maintainable than the ~300 line patch into GCC. It's also a slight inprovement in regards to patching out ualigned instructions in the release binaries. For comparison:
  Master:
  ```bash
  objdump -D bin/*.exe | rg "vmova|vmovdqa|vmovaps|vmovapd|vmovdqa64|vmovdqa32"
  141b8be20: c5 f8 28 1a                 vmovaps(%rdx), %xmm3
  1420564b3: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  1403060f3: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  140792b13: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  140cb0693: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  1415ea0f3: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  ```

  This PR:
  ```bash
  objdump -D bin/*.exe | rg "vmova|vmovdqa|vmovaps|vmovapd|vmovdqa64|vmovdqa32"
  141b8be20: c5 f8 28 1a                 vmovaps(%rdx), %xmm3
  1420564b3: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  1403060f3: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  140792b13: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  140cb0693: c5 79 29 36                 vmovapd%xmm14, (%rsi)
  ```

ACKs for top commit:
  laanwj:
    Code review ACK a0dc2ebcda

Tree-SHA512: b3b6dcd2efaaa825d32c768302651d26a120a3e47b93fafb862a1884ff68fd96edb42ea9bc9974c005c8f5a1d15c217deec0ed462cc4a3365cab1bad5a0b5fef
2024-04-17 12:22:11 +01:00
fanquake
3bee51427a
build: don't use install_name_tool for macOS deploy when cross-compiling
This is only needed when compiling on macOS. This means we can also
better scope the usage of `-headerpad_max_install_names`.
2024-04-17 11:40:25 +01:00
merge-script
5c10d12e77
Merge bitcoin/bitcoin#29828: guix: remove gcc-toolchain static from Windows build
05da2460db guix: remove gcc-toolchain static from Windows build (fanquake)

Pull request description:

  The libs in this dir are the following:
  ```bash
  ls /gnu/store/2vnbkrdin4rrf7ygnr80mlcglin4qqa4-gcc-toolchain-12.3.0-static/lib/
  libanl.a           libc.a             libdl.a         libm.a
  libBrokenLocale.a  libcrypt.a         libg.a          libmcheck.a
  libpthread.a       librt.a
  libresolv.a        libutil.a
  ```

  These do not need to be propogated into the Windows build environment.

  Guix Build (aarch64):
  ```bash
  450c0c4f45f9cb7ed7fc2ef6e7557b6a23004b82c951399da3b7635e8451a076  guix-build-05da2460db89/output/dist-archive/bitcoin-05da2460db89.tar.gz
  5df68ab18636090c387bc90297356d0e148b02931d3a99c0f6d33cd268aa072b  guix-build-05da2460db89/output/x86_64-w64-mingw32/SHA256SUMS.part
  13e979f60d9296aa11081fbbb360404da9fbb797bb4663ed2d1189d800659b4f  guix-build-05da2460db89/output/x86_64-w64-mingw32/bitcoin-05da2460db89-win64-debug.zip
  d1cc78437a96f012a59af7c757bef592f163559e523d45014d7804d0be29a8b8  guix-build-05da2460db89/output/x86_64-w64-mingw32/bitcoin-05da2460db89-win64-setup-unsigned.exe
  33a9cfd4475677646bb32c9c45c25bd796ca5adb126590bf556d4e6f9592c676  guix-build-05da2460db89/output/x86_64-w64-mingw32/bitcoin-05da2460db89-win64-unsigned.tar.gz
  5d2ee251668d3d31bf378826ab06f98542dd20926cdee2df5c3315e11222a519  guix-build-05da2460db89/output/x86_64-w64-mingw32/bitcoin-05da2460db89-win64.zip
  ```

  Somewhat similar to #29673.

ACKs for top commit:
  laanwj:
    ACK 05da2460db
  hebasto:
    ACK 05da2460db,

Tree-SHA512: bf514a726a22e2bfae4de645b10d90a66fe090971340c4299aeb9b2ff9cf536ca6cfed274d312ea5d5a172775cbda6db0e609492ec603f5aee55c8de81462cc0
2024-04-17 08:56:45 +01:00
fanquake
ad21f22948
ci: use clang-16 for Valgrind
Switch to Ubuntu Noble.
2024-04-14 10:39:14 +01:00
fanquake
a0dc2ebcda
guix: replace GCC unaligned VMOV patch with binutils patch
Rather than invasively patching GCC. Given we have binutils 2.38
available, we can patch it to flip the default for
`-muse-unaligned-vector-move`.
2024-04-10 13:59:43 +02:00
fanquake
05da2460db
guix: remove gcc-toolchain static from Windows build
The libs in this dir are the following:
```bash
ls /gnu/store/2vnbkrdin4rrf7ygnr80mlcglin4qqa4-gcc-toolchain-12.3.0-static/lib/lib
libanl.a           libc.a             libdl.a         libm.a
libBrokenLocale.a  libcrypt.a         libg.a          libmcheck.a
libpthread.a       librt.a
libresolv.a        libutil.a
```

These do not need to be propogated into the Windows build environment.
2024-04-07 14:06:27 +01:00
fanquake
eb78ebc064
Merge bitcoin/bitcoin#29725: depends: build libqrencode with CMake
007ea322a6 depends: switch to building libqrencode with CMake (fanquake)
884330c0a5 guix: make cmake-minimal a global requirement (fanquake)

Pull request description:

  Switch to building libqrencode with CMake. Note that upstream (https://github.com/fukuchi/libqrencode) hasn't seen any activity for ~4 years, so the odds of getting anything upstream seems low, but I've made two minor changes to the source here, which I will PR in any case.

  From an initial look I couldn't find any significant difference between the Autotools and CMake produced libs. As part of this change we move cmake-minimal in Guix into the global package set.

ACKs for top commit:
  TheCharlatan:
    ACK 007ea322a6

Tree-SHA512: c784f790ddea958082c8ae96d3744bdf99331a8799765f9d44f00861b8e2cfcab1a88a3d64af5b10e51a8d5938d55eb6a3d271790b565e50492a39d00dc0e30f
2024-04-05 15:10:14 +01:00
fanquake
71c51c161d
Merge bitcoin/bitcoin#29673: guix: use GCC 11 in macOS build env
73d92309d7 guix: use GCC 11 for macOS builds (fanquake)

Pull request description:

  Note that this is just the native compiler, which is used to build the toolchain we use to build the actual binaries.

  Partially motivated by #29091, where it could now be a bit confusing if we are explicitly using GCC 10 in our release toolchain, when our minimum required is 11 (this can't be bumped to 12 due to build issues with native tools).

  At the same time, remove `gcc-toolchain "static"` from the macOS build env.

ACKs for top commit:
  hebasto:
    ACK 73d92309d7.

Tree-SHA512: 31392290b327cc0e19498cf053b7c9eb19e70295933d650b29b29589356ad455d35b6addcdaae702a9635513c07070fb17d61bcb48445d3cb1a9d4a93aa6ddf3
2024-04-04 12:02:13 +01:00
Hennadii Stepanov
3cb80febb8
guix: Remove another leftover from #29648 2024-04-03 12:21:49 +01:00
fanquake
3b12fc7bcd
Merge bitcoin/bitcoin#29787: guix: remove errant leftover from #29648
fd8527a20e guix: remove errant leftover from #29648 (fanquake)

Pull request description:

  We no longer build a lib, so a non-existent dir is causing builds to fail.

ACKs for top commit:
  josibake:
    ACK fd8527a20e
  hebasto:
    ACK fd8527a20e.
  TheCharlatan:
    ACK fd8527a20e

Tree-SHA512: 9175a0de3f95f56939b3eaa3e89dca2cfae4996bcd84ef6b8e2872672bef39cb0550c9f4a79475d887eb8fac92c15dfa8c352648ff167d54a0b736978412226c
2024-04-02 17:05:14 +01:00
fanquake
82b47cb52b
Merge bitcoin/bitcoin#29733: build, macos: Drop unused osx_volname target
eff19fa1c8 build, macos: Drop unused `osx_volname` target (Hennadii Stepanov)

Pull request description:

  The `osx_volname` makefile target was introduced in https://github.com/bitcoin/bitcoin/pull/7192 and was used to pass the package name to Gitian scripts as a content of the `osx_volname` file.

  With the current Guix scripts, the `osx_volname` file is never read. Therefore, its creation might be omitted.

  My Guix builds:
  ```
  x86_64
  5e2d254e207d53784621c8df331c9bf4a969da667d185992402f48a5ac49f563  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/SHA256SUMS.part
  089dba70685893aca5e7c8ce1d53a07380e87ca50eda8b3a2a75aeaeb1d28e48  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin-unsigned.tar.gz
  390c57197c6ab4aefdde1c665d5e4ebdfb4ae5e553f8f93b017f2fad1093d110  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin-unsigned.zip
  e1edde7ca28bf26aea8d956b1d3c1725a475f2a9c148f5c36b651db4b814091c  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin.tar.gz
  d0096ea73a5f75cc4d3cef4ef1761ae3e48c8a63aff918f07371c5c88896e4e6  guix-build-eff19fa1c8d7/output/dist-archive/bitcoin-eff19fa1c8d7.tar.gz
  51b4affb9fd6f8aea05b7d25d29f017d0a0a145395f457caa14b9af9646b035b  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/SHA256SUMS.part
  b1df081ecf636a92754e673e5388d1d988653d4646f0b0446a4c9f14d865a265  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin-unsigned.tar.gz
  62e09926029d176da950d3e3db7ff8ae6cbe4c0b2ea17b084fc1d28565f91475  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin-unsigned.zip
  477dcb2382cbd447bd88a3b644b4bd736f5b67d66d42cb73fe31ffc153d3e181  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin.tar.gz
  ```

ACKs for top commit:
  Empact:
    ACK eff19fa1c8
  Sjors:
    tACK eff19fa1c8
  TheCharlatan:
    ACK eff19fa1c8

Tree-SHA512: 29714be5c58caa07b3eb99846d71bb83366dade769af022059bb3c499878adcd34cdf03b006c5da561291f373ccc59abdb83c925057ec0049465eaa8dd6ef4e1
2024-04-02 14:57:22 +01:00
fanquake
fd8527a20e
guix: remove errant leftover from #29648
We no longer build a lib, so a non-existent dir is causing builds to
fail.
2024-04-02 13:39:33 +01:00
crazeteam
52fa0d285f
doc: fix some typos
Signed-off-by: crazeteam <lilujing@outlook.com>
2024-03-26 16:51:46 +00:00
fanquake
d04324a705
Merge bitcoin/bitcoin#29695: guix: build GCC with --enable-standard-branch-protection
7850c5fe20 guix: build GCC with --enable-standard-branch-protection (fanquake)

Pull request description:

  This is one change extracted from #24123 (which now produces fully BTI & PAC enabled bins), which will mean that everything in depends, for Guix builds, is compiled using `-mbranch-protection=standard`.

  Turning this on by default, is similar to what we already do with `--enable-default-ssp`, `--enable-default-pie` etc.

  See: https://gcc.gnu.org/install/specific.html#aarch64-x-x

  > To enable Branch Target Identification Mechanism and Return Address Signing by default at configure time use the `--enable-standard-branch-protection` option.

  > This is equivalent to having `-mbranch-protection=standard` during compilation. This can be explicitly disabled during compilation by passing the `-mbranch-protection=none` option which turns off all types of branch protections.

ACKs for top commit:
  TheCharlatan:
    ACK 7850c5fe20

Tree-SHA512: 18f898da27021bab502e708ea5fa9b325352f8f6e23d9488a2a0feda87e0af2ac0e4f87b3af9ad6a9a37bbfc99ab0285de4f0bdc174dcd38163d92c122e958e2
2024-03-26 13:45:33 +00:00
Hennadii Stepanov
eff19fa1c8
build, macos: Drop unused osx_volname target 2024-03-26 12:14:59 +00:00
fanquake
884330c0a5
guix: make cmake-minimal a global requirement
Needed for switching to building miniupnpc with CMake.
2024-03-26 10:01:56 +00:00
fanquake
11ee058ef5
tidy: remove C compiler check
Also requires disabling FFI.
2024-03-22 13:48:00 +00:00
fanquake
c3a4ea1971
tidy: set CMAKE_CXX_STANDARD to 20 2024-03-22 13:38:23 +00:00
fanquake
5b690aeb15
tidy: remove terminfo TODO
At the same time, also disable searching for CURL, LibEdit, LibXml2,
ZLIB and zstd none of which we use.
2024-03-22 13:33:10 +00:00
fanquake
24410e560a
tidy: set minimum CMake to 3.22
Matches https://github.com/hebasto/bitcoin/pull/123.
This also also dev/ci only code.
2024-03-22 12:32:36 +00:00
Hennadii Stepanov
669ea0aa4a
doc: Rename contrib/devtools/bitcoin-tidy/README to README.md
This change fixes the file formatting on the GitHub website.
2024-03-22 10:53:21 +00:00
fanquake
7850c5fe20
guix: build GCC with --enable-standard-branch-protection
To enable Branch Target Identification Mechanism and Return
Address Signing by default at configure time use the
`--enable-standard-branch-protection` option.

This is equivalent to having `-mbranch-protection=standard` during
compilation. This can be explicitly disabled during compilation
by passing the `-mbranch-protection=none` option which turns off
all types of branch protections.

See:
https://gcc.gnu.org/install/specific.html#aarch64-x-x
2024-03-21 17:33:59 +00:00
fanquake
73d92309d7
guix: use GCC 11 for macOS builds
Note that this is just the native compiler, that is used to build the
toolchain we use to build the actual binaries.

Partially motivated by 29091.
2024-03-21 11:05:39 +00:00
fanquake
cf5faf73c9
guix: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a
This includes a commit to fix building LLVM 17 on riscv64, see
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=4e26331a5ee87928a16888c36d51e270f0f10f90.

Followup to discussion in
https://github.com/bitcoin/bitcoin/pull/28880#issuecomment-1843313196.

If you don't have riscv64 hardware, this can be tested with the
following:
```bash
guix time-machine --commit=d5ca4d4fd713a9f7e17e074a1e37dda99bbb09fc -- build --target=riscv64-linux-gnu  llvm
....
riscv64-linux-gnu-ld: CMakeFiles/dsymutil.dir/dsymutil.cpp.o: undefined reference to symbol '__atomic_fetch_and_1@@LIBATOMIC_1.0'
riscv64-linux-gnu-ld: /gnu/store/i4ga0pnr1b74bir2bjyp8mcrrbsvk7d3-gcc-cross-riscv64-linux-gnu-11.3.0-lib/riscv64-linux-gnu/lib/libatomic.so.1:
  error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

guix time-machine --commit=dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a -- build --target=riscv64-linux-gnu  llvm
....
grafting '/gnu/store/7y0j0y8jaz4mjx2nz0y42wdnxxjp6id6-llvm-17.0.6-opt-viewer' -> '/gnu/store/8xvahrrjscbprh6cjj0qp5bm9mm78wwa-llvm-17.0.6-opt-viewer'...
grafting '/gnu/store/bjhw648bz7ijd2p9hgzzdbw1q8hpagk8-llvm-17.0.6' -> '/gnu/store/x50qi8i2ywgpx6azv4k55ms0w5xjxxg5-llvm-17.0.6'...
successfully built /gnu/store/q9xvk8gzzvb4dxfzf6yi5164zd0d1vj2-llvm-17.0.6.drv
```
2024-03-14 12:18:36 +00:00
fanquake
10d56530e0
guix: temporarily disable powerpcle taget
There non-determinism issues when compiling for this target across
x86_64 and aarch64.
2024-03-12 16:26:27 +00:00
fanquake
001412a4d2
guix: use GCC 12.3.0
Retain native GCC 10 toolchain for macOS, to prevent compile failures in
native tools (this will be removed entirely when we tansition to LLD).
Update the vmov-alignment patch, for changes in GCC 12.
2024-03-12 16:26:27 +00:00
Ava Chow
c07935bcf5
Merge bitcoin/bitcoin#28960: kernel: Remove dependency on CScheduler
d5228efb53 kernel: Remove dependency on CScheduler (TheCharlatan)
06069b3913 scripted-diff: Rename MainSignals to ValidationSignals (TheCharlatan)
0d6d2b650d scripted-diff: Rename SingleThreadedSchedulerClient to SerialTaskRunner (TheCharlatan)
4abde2c4e3 [refactor] Make MainSignals RAII styled (TheCharlatan)
84f5c135b8 refactor: De-globalize g_signals (TheCharlatan)
473dd4b97a [refactor] Prepare for g_signals de-globalization (TheCharlatan)
3fba3d5dee [refactor] Make signals optional in mempool and chainman (TheCharlatan)

Pull request description:

  By defining a virtual interface class for the scheduler client, users of the kernel can now define their own event consuming infrastructure, without having to spawn threads or rely on the scheduler design.

  Removing `CScheduler` also allows removing the thread and exception modules from the kernel library.

  To make the `CMainSignals` class easier to use from a kernel library perspective, remove its global instantiation and adopt RAII practices.

  Renames `CMainSignals` to `ValidationSignals`, which more accurately describes its purpose and scope.

  Also make the `ValidationSignals` in the `ChainstateManager` and CTxMemPool` optional. This could be useful in the future for using or testing these classes without having to instantiate any form of signal handling.

  ---

  This PR is part of the [libbitcoinkernel project](https://github.com/bitcoin/bitcoin/issues/27587). It improves the kernel API and removes two modules from the kernel library.

ACKs for top commit:
  maflcko:
    re-ACK d5228efb53 🌄
  ryanofsky:
    Code review ACK d5228efb53. Just comment change since last review.
  vasild:
    ACK d5228efb53
  furszy:
    diff ACK d5228ef

Tree-SHA512: e93a5f10eb6182effb84bb981859a7ce750e466efd8171045d8d9e7fe46e4065631d9f6f533c5967c4d34c9bb7d7a67e9f4593bd4c5b30cd7b3bbad7be7b331b
2024-03-08 20:58:04 -05:00
fanquake
7c3ac598dd
contrib: list other binaries in manpage output 2024-03-07 13:07:53 +00:00
Ava Chow
7ab54397f8 seeds: Update testnet seeds 2024-03-04 19:53:30 -05:00