Commit Graph

14330 Commits

Author SHA1 Message Date
Jack Grigg 8e55824119 depends: Update to latest config.guess & config.sub 2020-09-25 14:11:58 +01:00
Homu d8ab28426e Auto merge of #4747 - rex4539:fix-cargo-checksum, r=str4d
Remove reference to cargo-checksum.sh

Leftover after merging https://github.com/zcash/zcash/pull/4743.

Caused compilation warnings of the form:

```
shasum: cargo-checksum.sh: No such file or directory
```
2020-09-25 10:29:01 +00:00
Dimitris Apostolou 67ffb189b7
Fix typos 2020-09-25 10:49:57 +03:00
Dimitris Apostolou 4e1d3856ee
Remove reference to cargo-checksum.sh 2020-09-25 07:15:04 +03:00
Homu 8f15f5fcce Auto merge of #4734 - str4d:2-sodium-2-oxide, r=str4d
Replace libsodium BLAKE2b usage with blake2b_simd crate

Extracted from zcash/zcash#4654.

Also fixes a bug in the `tracing::Span` C++ class.
2020-09-24 23:41:48 +00:00
Homu 9ef15a8415 Auto merge of #4746 - str4d:remove-rust-mingw-workaround, r=ebfull
build: Remove Rust staticlib naming workaround

The bug this was working around was fixed in Rust 1.44.0. We now pin
Rust 1.44.1, so we no longer need the workaround (and in fact, it is
necessary to make this change, as rustc no longer generates the old
filename, causing our Windows cross-compile to fail).
2020-09-24 19:37:22 +00:00
Homu 256d6e33eb Auto merge of #4743 - str4d:cargo-vendor-cleanups, r=str4d
depends: Remove cargo-checksum.sh

Now that we are using `cargo vendor`, the checksum files are computed
automatically.
2020-09-24 16:07:18 +00:00
Jack Grigg 7169cfc0d8 build: Remove Rust staticlib naming workaround
The bug this was working around was fixed in Rust 1.44.0. We now pin
Rust 1.44.1, so we no longer need the workaround (and in fact, it is
necessary to make this change, as rustc no longer generates the old
filename).
2020-09-24 16:27:42 +01:00
Jack Grigg 0f3baaba71 tracing: Correctly override tracing::Span move constructors 2020-09-24 15:58:19 +01:00
Jack Grigg 02b7d2afa2 blake2b: Allow consuming partial BLAKE2b output
Some consumers were relying on the libsodium behaviour that the output
length was not checked against the configured hash output length.
blake2b_simd::Hash::as_bytes returns a correctly-sized slice, which we
were then failing to copy into the consumer's buffer. Instead of
requiring the consumer to provide a full-length buffer and then truncate
the output themselves (likely causing a double-copy, as we don't have
nice slices in C++), we instead allow the consumer to consume up to the
maximum output.
2020-09-24 15:58:19 +01:00
Jack Grigg 2d172e121f Replace libsodium's crypto_generichash_blake2b with blake2b_simd 2020-09-24 15:58:14 +01:00
Homu 31f48caf0e Auto merge of #4690 - LarryRuane:CopyPreviousWitnessesPart2, r=str4d
Flush witness data when consistent (part 2)

Closes #4680. After CWallet::ChainTipAdded() updates the witness data, it may flush it to disk (SetBestChain()); make sure the locator part is consistent with the witnesses (height).
2020-09-24 13:31:31 +00:00
Homu ad56e9c2e9 Auto merge of #4693 - daira:explicit-coercions, r=str4d
Make some conversions explicit to reduce sanitizer warnings

The warnings eliminated by this PR are of the forms, for example:
```
src/chain.h:591:16: runtime error: implicit conversion from type 'unsigned long' of value 18446744073709551615 (64-bit, unsigned) to type 'int' changed the value to -1 (32-bit, signed)
src/scalar_4x64_impl.h:130:110: runtime error: implicit conversion from type 'uint64_t' (aka 'unsigned long') of value 533633915002 (64-bit, unsigned) to type 'unsigned char' changed the value to 122 (8-bit, unsigned)
src/zcash/util.cpp:9:25: runtime error: implicit conversion from type 'uint64_t' (aka 'unsigned long') of value 1000000000 (64-bit, unsigned) to type 'std::vector<unsigned char, std::allocator<unsigned char> >::value_type' (aka 'unsigned char') changed the value to 0 (8-bit, unsigned)
```

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-09-24 12:16:11 +00:00
Jack Grigg a554f7ccc6 depends: Remove cargo-checksum.sh
Now that we are using `cargo vendor`, the checksum files are computed
automatically.
2020-09-23 11:30:35 +01:00
Homu 49fc20aced Auto merge of #4720 - ebfull:fix-perf-regressions, r=str4d
Address some performance regressions

@str4d identified and fixed some performance regressions in our elliptic curve and proving crates, and we also changed to complete formulas in `bls12_381` to get some better performance in some cases. The result:

```
v3.1.0
"runningtime": 0.59883

before upgrading rust:
"runningtime": 0.823932

after upgrading rust:
"runningtime": 0.83004

after upgrading rust packages:
"runningtime": 0.763065
```

which gets us some of the way back to where we were.
2020-09-23 01:36:00 +00:00
MarcoFalke f3e5adc160 Pull leveldb subtree 2020-09-23 00:12:01 +01:00
Jack Grigg dd6b34250c Squashed 'src/leveldb/' changes from 524b7e36a..f545dfabf
f545dfabf Merge #18: Use utf-8 to decode filename
f8e797a05 Use utf-8 to decode filename
2fc114812 Merge #14: Fixes to allow building with msvc.
d6eab9313 Fixes to allow building with msvc.

git-subtree-dir: src/leveldb
git-subtree-split: f545dfabff4c2e9836efed094dba99a34fbc6b88
2020-09-23 00:11:45 +01:00
MarcoFalke cd819bf14b Merge leveldb subtree
Merge commit '55f90917f519aa124455bd81ab81ff67a1c7fc84' into update-leveldb
2020-09-23 00:11:16 +01:00
Jack Grigg 55f90917f5 Squashed 'src/leveldb/' changes from 64052c76c..524b7e36a
524b7e36a Merge #19: Increase maximum read-only mmap()s used from 1000 to 4096 on 64-bit systems
4874cb8d3 Increase maximum number of read-only mmap()s used from 1000 to 4096 on 64 bit systems.

git-subtree-dir: src/leveldb
git-subtree-split: 524b7e36a8e3bce6fcbcd1b5df09024283f325ba
2020-09-23 00:10:53 +01:00
MarcoFalke 7474d2cfbb Bump leveldb subtree 2020-09-23 00:10:04 +01:00
Jack Grigg b3f8c6e5f4 Squashed 'src/leveldb/' changes from c521b3ac6..64052c76c
64052c76c Merge #15: Add filename to corruption errors
135ed0fb4 Add filename to corruption errors

git-subtree-dir: src/leveldb
git-subtree-split: 64052c76c567cff3dad32d1db0ef969d97b5882f
2020-09-23 00:09:29 +01:00
Pieter Wuille 990c6d244f Update LevelDB with latest Bitcoin-specific patches 2020-09-23 00:08:46 +01:00
Jack Grigg b3b77fb758 Squashed 'src/leveldb/' changes from 196962ff0..c521b3ac6
c521b3ac6 Merge #11: fixup define checks. Cleans up some oopses from #5.
8b1cd3753 fixup define checks. Cleans up some oopses from #5.
6b1508d6d Merge #6: Fixes typo
fceb80542 Merge #10: Clean up compile-time warnings (gcc 7.1)
0ec2a343f Clean up compile-time warnings (gcc 7.1)
d4c268a35 Merge #5: Move helper functions out of sse4.2 object
8d4eb0847 Add HasAcceleratedCRC32C to port_win.h
77cfbfd25 crc32: move helper functions out of port_posix_sse.cc
4c1e9e016 silence compiler warnings about uninitialized variables
495316485 Merge #2: Prefer std::atomic over MemoryBarrier
2953978ef Fixes typo
f134284a1 Merge #1: Merge upstream LevelDB 1.20
ba8a445fd Prefer std::atomic over MemoryBarrier

git-subtree-dir: src/leveldb
git-subtree-split: c521b3ac654cfbe009c575eacf7e5a6e189bb5bb
2020-09-23 00:08:27 +01:00
Cory Fields 55b4aa1942 build: verify that the assembler can handle crc32 functions
Also, enable crc32 even if -msse4.2 wasn't added by us, as long as it works.
This allows custom flags (such as -march=native) to work as expected.
2020-09-23 00:07:48 +01:00
Dimitris Tsapakidis b892fe13f8 Fixed multiple typos
A few "a->an" and "an->a".
"Shows, if the supplied default SOCKS5 proxy" -> "Shows if the supplied default SOCKS5 proxy". Change made on 3 occurrences.
"without fully understanding the ramification of a command" -> "without fully understanding the ramifications of a command".
Removed duplicate words such as "the the".

Zcash: Only the changes to files and code that we have.
2020-09-23 00:07:48 +01:00
MarcoFalke f204f575aa Add extra LevelDB source to Makefile 2020-09-23 00:07:48 +01:00
Cory Fields f261701265 leveldb: enable runtime-detected crc32 instructions 2020-09-23 00:07:48 +01:00
Pieter Wuille c333e99eca Update to LevelDB 1.20 2020-09-23 00:07:10 +01:00
Jack Grigg f67e496552 Squashed 'src/leveldb/' changes from a31c8aa40..196962ff0
196962ff0 Add AcceleratedCRC32C to port_win.h
1bdf1c34c Merge upstream LevelDB v1.20
d31721eb0 Merge #17: Fixed file sharing errors
fecd44902 Fixed file sharing error in Win32Env::GetFileSize(), Win32SequentialFile::_Init(), Win32RandomAccessFile::_Init() Fixed error checking in Win32SequentialFile::_Init()
5b7510f1b Merge #14: Merge upstream LevelDB 1.19
0d969fd57 Merge #16: [LevelDB] Do no crash if filesystem can't fsync
c8c029b5b [LevelDB] Do no crash if filesystem can't fsync
a53934a3a Increase leveldb version to 1.20.
f3f139737 Separate Env tests from PosixEnv tests.
eb4f0972f leveldb: Fix compilation warnings in port_posix_sse.cc on x86 (32-bit).
d0883b600 Fixed path to doc file: index.md.
7fa20948d Convert documentation to markdown.
ea175e28f Implement support for Intel crc32 instruction (SSE 4.2)
95cd743e5 Including <limits> for std::numeric_limits.
646c3588d Limit the number of read-only files the POSIX Env will have open.
d40bc3fa5 Merge #13: Typo
ebbd772d3 Typo
a2fb086d0 Add option for max file size. The currend hard-coded value of 2M is inefficient in colossus.

git-subtree-dir: src/leveldb
git-subtree-split: 196962ff01c39b4705d8117df5c3f8c205349950
2020-09-23 00:06:36 +01:00
Pieter Wuille 8dbec779e1 Merge in LevelDB 1.19 changes 2020-09-23 00:05:47 +01:00
Jack Grigg b4be0846d5 Squashed 'src/leveldb/' changes from 20ca81f08..a31c8aa40
a31c8aa40 Add NewAppendableFile for win32 environment
1913d718e Merge upstream LevelDB 1.19
3080a45b6 Increase leveldb version to 1.19.
fa6dc010a A zippy change broke test assumptions about the size of compressed output. Fix the tests by allowing more slop in zippy's behavior. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=123432472
06a191b8d fix problems in LevelDB's caching code
a7bff697b Fix LevelDB build when asserts are enabled in release builds. (#367)
ea992b467 Change std::uint64_t to uint64_t (#354)
e84b5bdb5 This CL fixes a bug encountered when reading records from leveldb files that have been split, as in a [] input task split.
321134390 Deleted redundant null ptr check prior to delete.
7306ef856 Merge pull request #348 from randomascii/master
6b18316d0 Fix signed/unsigned mismatch on VC++ builds
adbe3eb07 Putting build artifacts in subdirectory.
2d0320a45 Merge pull request #329 from ralphtheninja/travis-badge
dd1c3c357 add travis build badge
43fcf23af Merge pull request #328 from cmumford/master
9fcae6164 Added a Travis CI build file.
dac40d25f Merge pull request #284 from ideawu/master
8ec241a3b Merge pull request #317 from falvojr/patch-1
5d36bedd1 Merge pull request #272 from vapier/master
4753c9b61 Added a contributors section to README.md
e2446d084 Merge pull request #275 from paulirish/patch-1
706b7f8d4 Resolve race when getting approximate-memory-usage property
3c9ff3c69 Only compiling TrimSpace on linux.
f8d205cf8 Including atomic_pointer.h in port_posix
889de31a5 Let LevelDB use xcrun to determine Xcode.app path instead of using a hardcoded path.
528c2bc6a Add "approximate-memory-usage" property to leveldb::DB::GetProperty
359b6bcec Add leveldb::Cache::Prune
50e77a826 Fix size_t/int comparison/conversion issues in leveldb.
5208e7952 Added leveldb::Status::IsInvalidArgument() method.
ce45404bb Suppress error reporting after seeking but before a valid First or Full record is encountered.
b9afa1f2e include <assert> -> <cassert>
edf2939c0 Update README.md
65190ac48 Will not reuse manifest if reuse_logs options is false.
ac1d69da3 LevelDB now attempts to reuse the preceding MANIFEST and log file when re-opened.
76bba139c fix indent
8fcceb2a6 log compaction output file's level along with number
0e0f07417 documentation. improved link
c85addcdf readme: improved documentation link
ceff6f121 Fix Android/MIPS build.
77948e7ee Add benchmark that measures cost of repeatedly opening the database.
34ad72e3e Move header guard below copyright banner.
a75d435d1 Clean up layering of storage/leveldb/...
b234f65b3 Added a new fault injection test.
c4c38f9c1 Add arm64 support to leveldb.
cea9b10e5 Fixed incorrect comment wording for Iterator::Seek.
c00c569f2 Deleted old README file.

git-subtree-dir: src/leveldb
git-subtree-split: a31c8aa408d5594830f7cb20ead1ef1dff51b79e
2020-09-23 00:04:47 +01:00
Pavel Janík 1e66c822c3 Do not include env_win.cc on non-Windows systems 2020-09-22 23:08:42 +01:00
Luke Dashjr 7bf4f0b7e7 Add MIT license to Makefiles 2020-09-22 23:08:01 +01:00
Cory Fields 9cc7497692 build: out-of-tree fixups
Don't glob the leveldb for dist. That means we need to enumerate the headers.
2020-09-22 23:05:50 +01:00
Cory Fields a0336af870 build: No need to check for leveldb atomics
They're guaranteed with c++11
2020-09-22 23:03:22 +01:00
Cory Fields 58d1bbfe6f leveldb: integrate leveldb into our buildsystem
leveldb's buildsystem causes us a few problems:
- breaks out-of-tree builds
- forces flags used for some tools
- limits cross builds

Rather than continuing to add wrappers around it, simply integrate it into our
build.
2020-09-22 23:01:06 +01:00
Sean Bowe 52777e6d74
Update to latest zcash_* and zkcrypto crates. 2020-09-22 15:15:25 -06:00
Sean Bowe 16e91b0534
cargo update 2020-09-22 15:07:27 -06:00
Sean Bowe 03ce24013a
Update Rust to 1.44.1. 2020-09-22 15:06:01 -06:00
Homu c9672a49c2 Auto merge of #4696 - str4d:3640-z_sendmany-any-taddr, r=str4d
wallet: Add ANY_TADDR special string to z_sendmany

When using this special string as the from address, non-coinbase UTXOs
from any transparent addresses within the wallet will be used to fund the
transaction. Change outputs will be sent to a new transparent address,
as with any other spend of transparent funds.

Closes zcash/zcash#3640.
2020-09-22 18:09:58 +00:00
Jack Grigg 3311a85dbe rpc: Fix comma spacing in example z_sendmany commands 2020-09-22 17:45:09 +01:00
Jack Grigg e33f530a65 wallet: Ignore coinbase UTXOs with z_sendmany ANY_TADDR
Coinbase UTXOs from multiple transparent addresses may be shielded
together using z_shieldcoinbase.
2020-09-22 17:45:09 +01:00
Homu 8dcab5ee3b Auto merge of #4737 - nathan-at-least:link-to-read-the-docs-build-instructions, r=daira
Link README.md to readthedocs.io page for building on Debian/Ubuntu.
2020-09-22 07:14:13 +00:00
Daira Hopwood fbca35e9df
Line-wrap addition to README.md 2020-09-22 08:12:30 +01:00
Nate Wilcox 933e841a7a Link the README.md to the specific readthedocs.io page for building on Debian/Ubuntu. 2020-09-22 01:22:58 +00:00
Homu 35bb61be39 Auto merge of #4725 - str4d:cargo-vendor, r=str4d
depends: Switch to `cargo vendor` for Rust dependencies

When we first integrated Rust into our build system, we had two
limitations:

- We were building the `librustzcash` FFI library as a dependency, and
  therefore needed access to its crate dependencies in the depends
  system.
- Gitian builds happen offline, so we needed to fetch any crate
  dependencies ahead of time, and then configure cargo to use these in
  an offline environment.

At the time, `cargo` already had support for "Source Replacement", but
there was no easy way to package the dependencies in the necessary way.
What we implemented was effectively the `cargo-vendor` tool, built using
Makefiles. A noticeable downside was that we were pinning dependencies
twice: once in the `Cargo.lock` for the FFI library, and again in our
depends system.

Since then, `cargo-vendor` has been upstreamed into `cargo` itself, and
we have moved `librustzcash` into this repository. We can therefore use
`cargo vendor` directly from our pinned Rust compiler to fetch the
dependencies, and rely on our local `Cargo.lock` to pin the specific
crates we are relying on.
2020-09-19 12:37:51 +00:00
Jack Grigg 2449349882 depends: Ensure that SOURCES_PATH exists before vendoring crates
During Gitian builds, SOURCES_PATH is set to a path within the Gitian
cache. Normally this path is created as part of creating a particular
dependency's source directory, but in some situations we may vendor Rust
crates before this folder exists.
2020-09-19 13:35:36 +01:00
Jack Grigg c36ad21e74 QA: Comment out Rust crate checks in updatecheck.py
https://github.com/zcash/zcash/issues/4726 has been opened to track
fixing this.
2020-09-19 13:35:36 +01:00
Jack Grigg 549bf2dfa8 depends: Switch to `cargo vendor` for Rust dependencies
When we first integrated Rust into our build system, we had two
limitations:

- We were building the `librustzcash` FFI library as a dependency, and
  therefore needed access to its crate dependencies in the depends
  system.
- Gitian builds happen offline, so we needed to fetch any crate
  dependencies ahead of time, and then configure cargo to use these in
  an offline environment.

At the time, `cargo` already had support for "Source Replacement", but
there was no easy way to package the dependencies in the necessary way.
What we implemented was effectively the `cargo-vendor` tool, built using
Makefiles. A noticeable downside was that we were pinning dependencies
twice: once in the `Cargo.lock` for the FFI library, and again in our
depends system.

Since then, `cargo-vendor` has been upstreamed into `cargo` itself, and
we have moved `librustzcash` into this repository. We can therefore use
`cargo vendor` directly from our pinned Rust compiler to fetch the
dependencies, and rely on our local `Cargo.lock` to pin the specific
crates we are relying on.
2020-09-18 22:55:57 +01:00
Homu b8650d6f41 Auto merge of #4732 - zcash:3786_review_dependencies, r=str4d
Postponed dependency updates, refer to core team sync meeting.
2020-09-18 11:13:49 +00:00