The secp256k1 library is intended to be C89-compatible. Targeting both
C89 and MinGW with Clang triggers this bug that is fixed in MinGW 8.0.0:
bedff472af
Rather than requiring MinGW 8, we compile secp256k1 targeting C99.
For mingw32:
- We use the binaries provided by MSYS2, which do not go back as far as
libc++ 8. We use libc++ 9 here, matching the LLVM version we will be
switching to in a subsequent commit (to match the LLVM version used by
Rust 1.44). We manually specify the path to the libc++ headers,
because they don't match the headers used by Clang itself.
- We now require at least mingw-w64 6.0.0, which fixes two Clang
compilation bugs:
- 1bd66b53be
- 82b169c573
Darwin is ignored, as the Xcode SDK includes libc++.
For all other targets, we use the static libraries included in Clang
releases. We reuse the files we downloaded in native_clang for native
compilation, instead of fetching the archive twice.
Beef up the CoC to address use of dog-whistles
This will make it easier to put a stop to the shitty alt-right memes (for example, [Clown World](https://rationalwiki.org/wiki/Clown_World) and similar memes) posted by a small minority of forum users. The problem is that these memes are specifically designed for plausible deniability. Therefore it may be difficult to prove intent — and the harm to contributors from affected groups is done regardless of intent.
Note: use of alt-right dog-whistles is a problem that we actually have. Memes used by tankies aren't great either but that's not a problem we have (and we could add something to address that if we ever did).
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
Clang is used for compiling C/C++ dependencies, as well as the Zcash
binaries themselves. GCC is still required for compiling native
toolchain dependencies (such as ccache).
depends: Postpone current and scheduled Rust releases until 2021
We don't currently have a need for newer releases, and will likely be
pinning Rust for longer periods of time once we are also pinning Clang.
Rust releases occur every six weeks, so we can pre-emptively postpone
releases through the end of this year.
depends: Use patch rather than sed in bdb package
This converts a sed command within a makefile into a static patch file in the
`./depends` system for `bdb`. We use `sed` in some dependencies to replace
some "dynamic" stuff, where regular expressions are necessary (such as to
remove build-non-reproducibility, I believe). However, whenever we can use a
patchfile, I feel that's superior because it's easier to manually read a patch
file and it's known that the change is "static".
Equivalent to the first commit in https://github.com/bitcoin/bitcoin/pull/19761
MOVEONLY: Move logging code from util.{h,cpp} to new files
Based on bitcoin/bitcoin#13021 but implemented from scratch.
This introduces a cyclic dependency between `logging` and `util` that
should be cleaned up in a future PR.
Based on bitcoin/bitcoin#13021 but implemented from scratch.
This introduces a cyclic dependency between `logging` and `util` that
should be cleaned up in a future PR.
We don't currently have a need for newer releases, and will likely be
pinning Rust for longer periods of time once we are also pinning Clang.
Rust releases occur every six weeks, so we can pre-emptively postpone
releases through the end of this year.
Add logging when we receive an invalid note plaintext (using the "receiveunsafe" log category)
fixes#4735
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This change unifies handling of the -ibdskiptxverification
flag and ensures consistent handling of checkpoint heights
when evaluating whether transaction verification may be skipped.
This change also removes two redundant CheckBlock calls. This
change is consensus-critical and requires 3 reviews.
By blanket passing --disable-dependency-tracking to all depends packages
we end up with some warnings like:
configure: WARNING: unrecognized options: --disable-dependency-tracking
So instead, only pass it to packages that understand it.
Related to https://github.com/bitcoin/bitcoin/issues/16354.
We use pkg-config where we can, which generally replaces libtool at a
higher level and does not have the same downsides as libtool. These
archives sit in our depends tree with no purpose and pollute the final
bitcoin build with massive overlinking.