merge jl777/dev; zcash upgrade, CC to fix
This commit is contained in:
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@@ -37,6 +37,6 @@ Run `zcashd --version` to find out
|
||||
This includes the relevant contents of `~/.zcash/debug.log`. You can paste raw text, attach the file directly in the issue or link to the text via a pastebin type site.
|
||||
Please also include any non-standard things you did during compilation (extra flags, dependency version changes etc.) if applicable.
|
||||
|
||||
### Do you have a back up of `~/.zcash` directory and/or take a VM snapshot?
|
||||
### Do you have a backup of `~/.zcash` directory and/or take a VM snapshot?
|
||||
- Backing up / making a copy of the `~/.zcash` directory might help make the problem reproducible. Please redact appropriately.
|
||||
- Taking a VM snapshot is really helpful for interactively testing fixes
|
||||
|
||||
82
.travis.yml
82
.travis.yml
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
language: cpp
|
||||
|
||||
compiler:
|
||||
@@ -21,3 +22,84 @@ notifications:
|
||||
- "Alt Message : %{repository_slug} - (%{commit} - %{author}): %{message}, Build Time: %{duration}"
|
||||
- "Change view : %{compare_url}"
|
||||
- "Build details : %{build_url}"
|
||||
=======
|
||||
# errata:
|
||||
# - A travis bug causes caches to trample eachother when using the same
|
||||
# compiler key (which we don't use anyway). This is worked around for now by
|
||||
# replacing the "compilers" with a build name prefixed by the no-op ":"
|
||||
# command. See: https://github.com/travis-ci/travis-ci/issues/4393
|
||||
# - sudo/dist/group are set so as to get Blue Box VMs, necessary for [loopback]
|
||||
# IPv6 support
|
||||
|
||||
sudo: required
|
||||
dist: precise
|
||||
group: legacy
|
||||
|
||||
os: linux
|
||||
language: cpp
|
||||
compiler: gcc
|
||||
env:
|
||||
global:
|
||||
- MAKEJOBS=-j3
|
||||
- RUN_TESTS=false
|
||||
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
|
||||
- CCACHE_SIZE=100M
|
||||
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
||||
- CCACHE_COMPRESS=1
|
||||
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
|
||||
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
|
||||
- PYTHON_DEBUG=1
|
||||
- WINEDEBUG=fixme-all
|
||||
cache:
|
||||
apt: true
|
||||
directories:
|
||||
- depends/built
|
||||
- depends/sdk-sources
|
||||
- $HOME/.ccache
|
||||
matrix:
|
||||
fast_finish: true
|
||||
include:
|
||||
- compiler: ": ARM"
|
||||
env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
||||
- compiler: ": Win32"
|
||||
env: HOST=i686-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-i686 g++-mingw-w64-i686 binutils-mingw-w64-i686 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-reduce-exports" MAKEJOBS="-j2"
|
||||
- compiler: ": 32-bit + dash"
|
||||
env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python-zmq" PPA="ppa:chris-lea/zeromq" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash"
|
||||
- compiler: ": Win64"
|
||||
env: HOST=x86_64-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-reduce-exports" MAKEJOBS="-j2"
|
||||
- compiler: ": bitcoind"
|
||||
env: HOST=x86_64-unknown-linux-gnu PACKAGES="bc python-zmq" PPA="ppa:chris-lea/zeromq" DEP_OPTS="DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER"
|
||||
- compiler: ": No wallet"
|
||||
env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
||||
- compiler: ": Cross-Mac"
|
||||
env: HOST=x86_64-apple-darwin11 PACKAGES="cmake libcap-dev libz-dev libbz2-dev" BITCOIN_CONFIG="--enable-reduce-exports" OSX_SDK=10.9 GOAL="deploy"
|
||||
exclude:
|
||||
- compiler: gcc
|
||||
install:
|
||||
- if [ -n "$PACKAGES" ]; then sudo rm -f /etc/apt/sources.list.d/travis_ci_zeromq3-source.list; fi
|
||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
|
||||
before_script:
|
||||
- unset CC; unset CXX
|
||||
- mkdir -p depends/SDKs depends/sdk-sources
|
||||
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
||||
- if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
||||
- make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS
|
||||
script:
|
||||
- if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi
|
||||
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
|
||||
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
|
||||
- depends/$HOST/native/bin/ccache --max-size=$CCACHE_SIZE
|
||||
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then export CCACHE_READONLY=1; fi
|
||||
- test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh
|
||||
- ./configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
||||
- make distdir PACKAGE=bitcoin VERSION=$HOST
|
||||
- cd bitcoin-$HOST
|
||||
- ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
||||
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
|
||||
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
|
||||
- if [ "$RUN_TESTS" = "true" ]; then make check; fi
|
||||
- if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.sh; fi
|
||||
after_script:
|
||||
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then (echo "Upload goes here. Something like: scp -r $BASE_OUTDIR server" || echo "upload failed"); fi
|
||||
>>>>>>> zcash/master
|
||||
|
||||
3
COPYING
3
COPYING
@@ -28,8 +28,7 @@ open-source licenses. For further details see 'contrib/debian/copyright'.
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit (https://www.openssl.org/). This product includes cryptographic
|
||||
software written by Eric Young (eay@cryptsoft.com),
|
||||
and UPnP software written by Thomas Bernard.
|
||||
software written by Eric Young (eay@cryptsoft.com).
|
||||
|
||||
|
||||
Although almost all of the Zcash code is licensed under "permissive" open source
|
||||
|
||||
24
Makefile.am
24
Makefile.am
@@ -12,6 +12,7 @@ pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libzcashconsensus.pc
|
||||
endif
|
||||
|
||||
|
||||
BITCOIND_BIN=$(top_builddir)/src/zcashd$(EXEEXT)
|
||||
BITCOIN_CLI_BIN=$(top_builddir)/src/zcash-cli$(EXEEXT)
|
||||
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)
|
||||
@@ -33,6 +34,7 @@ DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md)
|
||||
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
|
||||
$(top_srcdir)/contrib/devtools/security-check.py
|
||||
|
||||
|
||||
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
|
||||
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
|
||||
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp
|
||||
@@ -54,7 +56,7 @@ COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
||||
else
|
||||
COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
||||
leveldb_baseline.info test_bitcoin_filtered.info total_coverage.info \
|
||||
baseline_filtered.info block_test_filtered.info \
|
||||
baseline_filtered.info \
|
||||
leveldb_baseline_filtered.info test_bitcoin_coverage.info test_bitcoin.info \
|
||||
#zcash-gtest.info zcash-gtest_filtered.info zcash-gtest_coverage.info
|
||||
endif
|
||||
@@ -72,14 +74,6 @@ distcheck-hook:
|
||||
distcleancheck:
|
||||
@:
|
||||
|
||||
$(BITCOIN_WIN_INSTALLER): all-recursive
|
||||
$(MKDIR_P) $(top_builddir)/release
|
||||
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release
|
||||
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release
|
||||
@test -f $(MAKENSIS) && $(MAKENSIS) -V2 $(top_builddir)/share/setup.nsi || \
|
||||
echo error: could not build $@
|
||||
@echo built $@
|
||||
|
||||
$(if $(findstring src/,$(MAKECMDGOALS)),$(MAKECMDGOALS), none): FORCE
|
||||
$(MAKE) -C src $(patsubst src/%,%,$@)
|
||||
|
||||
@@ -256,6 +250,7 @@ test_bitcoin_filtered.info: test_bitcoin.info
|
||||
-o $@
|
||||
endif
|
||||
|
||||
|
||||
block_test.info: test_bitcoin_filtered.info
|
||||
$(MKDIR_P) qa/tmp
|
||||
-@TIMEOUT=15 qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool 0
|
||||
@@ -289,6 +284,7 @@ block_test_filtered.info: block_test.info
|
||||
-o $@
|
||||
endif
|
||||
|
||||
|
||||
test_bitcoin_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info
|
||||
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -o $@
|
||||
|
||||
@@ -329,12 +325,6 @@ endif
|
||||
|
||||
endif
|
||||
|
||||
if USE_COMPARISON_TOOL
|
||||
check-local:
|
||||
$(MKDIR_P) qa/tmp
|
||||
@qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS) 2>&1
|
||||
endif
|
||||
|
||||
dist_bin_SCRIPTS = zcutil/fetch-params.sh
|
||||
dist_noinst_SCRIPTS = autogen.sh zcutil/build-debian-package.sh zcutil/build.sh
|
||||
|
||||
@@ -343,11 +333,9 @@ EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull
|
||||
install-exec-hook:
|
||||
mv $(DESTDIR)$(bindir)/fetch-params.sh $(DESTDIR)$(bindir)/zcash-fetch-params
|
||||
|
||||
CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
|
||||
|
||||
.INTERMEDIATE: $(COVERAGE_INFO)
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-man
|
||||
|
||||
clean-local:
|
||||
rm -rf test_bitcoin.coverage/ zcash-gtest.coverage/ total.coverage/ $(OSX_APP)
|
||||
rm -rf test_bitcoin.coverage/ zcash-gtest.coverage/ total.coverage/
|
||||
|
||||
13
README.md
13
README.md
@@ -1,3 +1,4 @@
|
||||
Komodo 1.0.15
|
||||
|
||||
## Komodod
|
||||
This software is Komodo client, generally you will use this if you want to mine KMD or setup a full node.
|
||||
@@ -63,6 +64,18 @@ cd komodo
|
||||
#This can take some time.
|
||||
```
|
||||
|
||||
|
||||
**komodo is experimental and a work-in-progress.** Use at your own risk.
|
||||
|
||||
Deprecation Policy
|
||||
------------------
|
||||
|
||||
This release is considered deprecated one year after the release day. There
|
||||
is an automatic deprecation shutdown feature which will halt the node some
|
||||
time after this one year period. The automatic feature is based on block
|
||||
height and can be explicitly disabled.
|
||||
|
||||
|
||||
# to update an existing version, git checkout dPoW if not on that branch already
|
||||
git pull
|
||||
./zcutil/fetch-params.sh
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 23
|
||||
#serial 26
|
||||
|
||||
AC_DEFUN([AX_BOOST_BASE],
|
||||
[
|
||||
@@ -95,8 +95,8 @@ if test "x$want_boost" = "xyes"; then
|
||||
x86_64)
|
||||
libsubdirs="lib64 libx32 lib lib64"
|
||||
;;
|
||||
ppc64|s390x|sparc64|aarch64)
|
||||
libsubdirs="lib64 lib lib64"
|
||||
ppc64|s390x|sparc64|aarch64|ppc64le)
|
||||
libsubdirs="lib64 lib lib64 ppc64le"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -170,7 +170,7 @@ if test "x$want_boost" = "xyes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
found_system=yes
|
||||
],[:
|
||||
],[
|
||||
])
|
||||
AC_LANG_POP([C++])
|
||||
|
||||
@@ -179,6 +179,10 @@ if test "x$want_boost" = "xyes"; then
|
||||
dnl if we found no boost with system layout we search for boost libraries
|
||||
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
||||
if test "x$succeeded" != "xyes"; then
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
LDFLAGS="$LDFLAGS_SAVED"
|
||||
BOOST_CPPFLAGS=
|
||||
BOOST_LDFLAGS=
|
||||
_version=0
|
||||
if test "$ac_boost_path" != ""; then
|
||||
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
||||
@@ -191,6 +195,12 @@ if test "x$want_boost" = "xyes"; then
|
||||
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
|
||||
done
|
||||
dnl if nothing found search for layout used in Windows distributions
|
||||
if test -z "$BOOST_CPPFLAGS"; then
|
||||
if test -d "$ac_boost_path/boost" && test -r "$ac_boost_path/boost"; then
|
||||
BOOST_CPPFLAGS="-I$ac_boost_path"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "$cross_compiling" != yes; then
|
||||
@@ -253,7 +263,7 @@ if test "x$want_boost" = "xyes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
found_system=yes
|
||||
],[:
|
||||
],[
|
||||
])
|
||||
AC_LANG_POP([C++])
|
||||
fi
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 22
|
||||
#serial 24
|
||||
|
||||
AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
|
||||
[
|
||||
@@ -63,9 +63,9 @@ AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
|
||||
AC_CACHE_CHECK([whether the Boost::Program_Options library is available],
|
||||
ax_cv_boost_program_options,
|
||||
[AC_LANG_PUSH(C++)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/program_options.hpp>
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/program_options/errors.hpp>
|
||||
]],
|
||||
[[boost::program_options::options_description generic("Generic options");
|
||||
[[boost::program_options::error err("Error message");
|
||||
return 0;]])],
|
||||
ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no)
|
||||
AC_LANG_POP([C++])
|
||||
@@ -74,7 +74,6 @@ AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
|
||||
AC_DEFINE(HAVE_BOOST_PROGRAM_OPTIONS,,[define if the Boost::PROGRAM_OPTIONS library is available])
|
||||
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
||||
if test "x$ax_boost_user_program_options_lib" = "x"; then
|
||||
ax_lib=
|
||||
for libextension in `ls $BOOSTLIBDIR/libboost_program_options*.so* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.so.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.dylib* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.dylib.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.a.*$;\1;'` ; do
|
||||
ax_lib=${libextension}
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 17
|
||||
#serial 18
|
||||
|
||||
AC_DEFUN([AX_BOOST_SYSTEM],
|
||||
[
|
||||
@@ -68,9 +68,10 @@ AC_DEFUN([AX_BOOST_SYSTEM],
|
||||
ax_cv_boost_system,
|
||||
[AC_LANG_PUSH([C++])
|
||||
CXXFLAGS_SAVE=$CXXFLAGS
|
||||
CXXFLAGS=
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/system/error_code.hpp>]],
|
||||
[[boost::system::system_category]])],
|
||||
[[boost::system::error_category *a = 0;]])],
|
||||
ax_cv_boost_system=yes, ax_cv_boost_system=no)
|
||||
CXXFLAGS=$CXXFLAGS_SAVE
|
||||
AC_LANG_POP([C++])
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
@@ -19,6 +19,8 @@
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
@@ -53,19 +55,19 @@
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
#serial 4
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
|
||||
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
@@ -19,6 +19,8 @@
|
||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
||||
# issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_LINK_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
||||
#
|
||||
@@ -53,18 +55,19 @@
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
#serial 4
|
||||
|
||||
AC_DEFUN([AX_CHECK_LINK_FLAG],
|
||||
[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS $4 $1"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
|
||||
AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
LDFLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_PREPROC_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
# AX_CHECK_PREPROC_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
@@ -19,6 +19,8 @@
|
||||
# "CPPFLAGS EXTRA-FLAGS FLAG". This can for example be used to force the
|
||||
# preprocessor to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_PREPROC_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{COMPILE,LINK}_FLAG.
|
||||
#
|
||||
@@ -53,19 +55,19 @@
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
#serial 4
|
||||
|
||||
AC_DEFUN([AX_CHECK_PREPROC_FLAG],
|
||||
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]cppflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG preprocessor accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$CPPFLAGS
|
||||
CPPFLAGS="$CPPFLAGS $4 $1"
|
||||
AC_PREPROC_IFELSE([AC_LANG_PROGRAM()],
|
||||
AC_PREPROC_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
CPPFLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
|
||||
568
build-aux/m4/ax_cxx_compile_stdcxx.m4
Normal file
568
build-aux/m4/ax_cxx_compile_stdcxx.m4
Normal file
@@ -0,0 +1,568 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check for baseline language coverage in the compiler for the specified
|
||||
# version of the C++ standard. If necessary, add switches to CXX and
|
||||
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
|
||||
# or '14' (for the C++14 standard).
|
||||
#
|
||||
# The second argument, if specified, indicates whether you insist on an
|
||||
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
|
||||
# -std=c++11). If neither is specified, you get whatever works, with
|
||||
# preference for an extended mode.
|
||||
#
|
||||
# The third argument, if specified 'mandatory' or if left unspecified,
|
||||
# indicates that baseline support for the specified C++ standard is
|
||||
# required and that the macro should error out if no mode with that
|
||||
# support is found. If specified 'optional', then configuration proceeds
|
||||
# regardless, after defining HAVE_CXX${VERSION} if and only if a
|
||||
# supporting mode is found.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
|
||||
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
|
||||
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
|
||||
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
|
||||
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
|
||||
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification, are
|
||||
# permitted in any medium without royalty provided the copyright notice
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 4
|
||||
|
||||
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
|
||||
dnl (serial version number 13).
|
||||
|
||||
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
||||
m4_if([$1], [11], [],
|
||||
[$1], [14], [],
|
||||
[$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
|
||||
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
|
||||
m4_if([$2], [], [],
|
||||
[$2], [ext], [],
|
||||
[$2], [noext], [],
|
||||
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
|
||||
m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
|
||||
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
|
||||
[$3], [optional], [ax_cxx_compile_cxx$1_required=false],
|
||||
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
|
||||
m4_if([$4], [], [ax_cxx_compile_cxx$1_try_default=true],
|
||||
[$4], [default], [ax_cxx_compile_cxx$1_try_default=true],
|
||||
[$4], [nodefault], [ax_cxx_compile_cxx$1_try_default=false],
|
||||
[m4_fatal([invalid fourth argument `$4' to AX_CXX_COMPILE_STDCXX])])
|
||||
AC_LANG_PUSH([C++])dnl
|
||||
ac_success=no
|
||||
|
||||
m4_if([$4], [nodefault], [], [dnl
|
||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
|
||||
ax_cv_cxx_compile_cxx$1,
|
||||
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
||||
[ax_cv_cxx_compile_cxx$1=yes],
|
||||
[ax_cv_cxx_compile_cxx$1=no])])
|
||||
if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
|
||||
ac_success=yes
|
||||
fi])
|
||||
|
||||
m4_if([$2], [noext], [], [dnl
|
||||
if test x$ac_success = xno; then
|
||||
for switch in -std=gnu++$1 -std=gnu++0x; do
|
||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
||||
$cachevar,
|
||||
[ac_save_CXX="$CXX"
|
||||
CXX="$CXX $switch"
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
||||
[eval $cachevar=yes],
|
||||
[eval $cachevar=no])
|
||||
CXX="$ac_save_CXX"])
|
||||
if eval test x\$$cachevar = xyes; then
|
||||
CXX="$CXX $switch"
|
||||
if test -n "$CXXCPP" ; then
|
||||
CXXCPP="$CXXCPP $switch"
|
||||
fi
|
||||
ac_success=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi])
|
||||
|
||||
m4_if([$2], [ext], [], [dnl
|
||||
if test x$ac_success = xno; then
|
||||
dnl HP's aCC needs +std=c++11 according to:
|
||||
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
|
||||
dnl Cray's crayCC needs "-h std=c++11"
|
||||
for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
|
||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
||||
$cachevar,
|
||||
[ac_save_CXX="$CXX"
|
||||
CXX="$CXX $switch"
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
||||
[eval $cachevar=yes],
|
||||
[eval $cachevar=no])
|
||||
CXX="$ac_save_CXX"])
|
||||
if eval test x\$$cachevar = xyes; then
|
||||
CXX="$CXX $switch"
|
||||
if test -n "$CXXCPP" ; then
|
||||
CXXCPP="$CXXCPP $switch"
|
||||
fi
|
||||
ac_success=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi])
|
||||
AC_LANG_POP([C++])
|
||||
if test x$ax_cxx_compile_cxx$1_required = xtrue; then
|
||||
if test x$ac_success = xno; then
|
||||
AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
|
||||
fi
|
||||
fi
|
||||
if test x$ac_success = xno; then
|
||||
HAVE_CXX$1=0
|
||||
AC_MSG_NOTICE([No compiler with C++$1 support was found])
|
||||
else
|
||||
HAVE_CXX$1=1
|
||||
AC_DEFINE(HAVE_CXX$1,1,
|
||||
[define if the compiler supports basic C++$1 syntax])
|
||||
fi
|
||||
AC_SUBST(HAVE_CXX$1)
|
||||
])
|
||||
|
||||
|
||||
dnl Test body for checking C++11 support
|
||||
|
||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
|
||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||
)
|
||||
|
||||
|
||||
dnl Test body for checking C++14 support
|
||||
|
||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
|
||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
||||
)
|
||||
|
||||
|
||||
dnl Tests for new features in C++11
|
||||
|
||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
|
||||
|
||||
// If the compiler admits that it is not ready for C++11, why torture it?
|
||||
// Hopefully, this will speed up the test.
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
#error "This is not a C++ compiler"
|
||||
|
||||
#elif __cplusplus < 201103L
|
||||
|
||||
#error "This is not a C++11 compiler"
|
||||
|
||||
#else
|
||||
|
||||
namespace cxx11
|
||||
{
|
||||
|
||||
namespace test_static_assert
|
||||
{
|
||||
|
||||
template <typename T>
|
||||
struct check
|
||||
{
|
||||
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
namespace test_final_override
|
||||
{
|
||||
|
||||
struct Base
|
||||
{
|
||||
virtual void f() {}
|
||||
};
|
||||
|
||||
struct Derived : public Base
|
||||
{
|
||||
virtual void f() override {}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
namespace test_double_right_angle_brackets
|
||||
{
|
||||
|
||||
template < typename T >
|
||||
struct check {};
|
||||
|
||||
typedef check<void> single_type;
|
||||
typedef check<check<void>> double_type;
|
||||
typedef check<check<check<void>>> triple_type;
|
||||
typedef check<check<check<check<void>>>> quadruple_type;
|
||||
|
||||
}
|
||||
|
||||
namespace test_decltype
|
||||
{
|
||||
|
||||
int
|
||||
f()
|
||||
{
|
||||
int a = 1;
|
||||
decltype(a) b = 2;
|
||||
return a + b;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace test_type_deduction
|
||||
{
|
||||
|
||||
template < typename T1, typename T2 >
|
||||
struct is_same
|
||||
{
|
||||
static const bool value = false;
|
||||
};
|
||||
|
||||
template < typename T >
|
||||
struct is_same<T, T>
|
||||
{
|
||||
static const bool value = true;
|
||||
};
|
||||
|
||||
template < typename T1, typename T2 >
|
||||
auto
|
||||
add(T1 a1, T2 a2) -> decltype(a1 + a2)
|
||||
{
|
||||
return a1 + a2;
|
||||
}
|
||||
|
||||
int
|
||||
test(const int c, volatile int v)
|
||||
{
|
||||
static_assert(is_same<int, decltype(0)>::value == true, "");
|
||||
static_assert(is_same<int, decltype(c)>::value == false, "");
|
||||
static_assert(is_same<int, decltype(v)>::value == false, "");
|
||||
auto ac = c;
|
||||
auto av = v;
|
||||
auto sumi = ac + av + 'x';
|
||||
auto sumf = ac + av + 1.0;
|
||||
static_assert(is_same<int, decltype(ac)>::value == true, "");
|
||||
static_assert(is_same<int, decltype(av)>::value == true, "");
|
||||
static_assert(is_same<int, decltype(sumi)>::value == true, "");
|
||||
static_assert(is_same<int, decltype(sumf)>::value == false, "");
|
||||
static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
|
||||
return (sumf > 0.0) ? sumi : add(c, v);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace test_noexcept
|
||||
{
|
||||
|
||||
int f() { return 0; }
|
||||
int g() noexcept { return 0; }
|
||||
|
||||
static_assert(noexcept(f()) == false, "");
|
||||
static_assert(noexcept(g()) == true, "");
|
||||
|
||||
}
|
||||
|
||||
namespace test_constexpr
|
||||
{
|
||||
|
||||
template < typename CharT >
|
||||
unsigned long constexpr
|
||||
strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
|
||||
{
|
||||
return *s ? strlen_c_r(s + 1, acc + 1) : acc;
|
||||
}
|
||||
|
||||
template < typename CharT >
|
||||
unsigned long constexpr
|
||||
strlen_c(const CharT *const s) noexcept
|
||||
{
|
||||
return strlen_c_r(s, 0UL);
|
||||
}
|
||||
|
||||
static_assert(strlen_c("") == 0UL, "");
|
||||
static_assert(strlen_c("1") == 1UL, "");
|
||||
static_assert(strlen_c("example") == 7UL, "");
|
||||
static_assert(strlen_c("another\0example") == 7UL, "");
|
||||
|
||||
}
|
||||
|
||||
namespace test_rvalue_references
|
||||
{
|
||||
|
||||
template < int N >
|
||||
struct answer
|
||||
{
|
||||
static constexpr int value = N;
|
||||
};
|
||||
|
||||
answer<1> f(int&) { return answer<1>(); }
|
||||
answer<2> f(const int&) { return answer<2>(); }
|
||||
answer<3> f(int&&) { return answer<3>(); }
|
||||
|
||||
void
|
||||
test()
|
||||
{
|
||||
int i = 0;
|
||||
const int c = 0;
|
||||
static_assert(decltype(f(i))::value == 1, "");
|
||||
static_assert(decltype(f(c))::value == 2, "");
|
||||
static_assert(decltype(f(0))::value == 3, "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace test_uniform_initialization
|
||||
{
|
||||
|
||||
struct test
|
||||
{
|
||||
static const int zero {};
|
||||
static const int one {1};
|
||||
};
|
||||
|
||||
static_assert(test::zero == 0, "");
|
||||
static_assert(test::one == 1, "");
|
||||
|
||||
}
|
||||
|
||||
namespace test_lambdas
|
||||
{
|
||||
|
||||
void
|
||||
test1()
|
||||
{
|
||||
auto lambda1 = [](){};
|
||||
auto lambda2 = lambda1;
|
||||
lambda1();
|
||||
lambda2();
|
||||
}
|
||||
|
||||
int
|
||||
test2()
|
||||
{
|
||||
auto a = [](int i, int j){ return i + j; }(1, 2);
|
||||
auto b = []() -> int { return '0'; }();
|
||||
auto c = [=](){ return a + b; }();
|
||||
auto d = [&](){ return c; }();
|
||||
auto e = [a, &b](int x) mutable {
|
||||
const auto identity = [](int y){ return y; };
|
||||
for (auto i = 0; i < a; ++i)
|
||||
a += b--;
|
||||
return x + identity(a + b);
|
||||
}(0);
|
||||
return a + b + c + d + e;
|
||||
}
|
||||
|
||||
int
|
||||
test3()
|
||||
{
|
||||
const auto nullary = [](){ return 0; };
|
||||
const auto unary = [](int x){ return x; };
|
||||
using nullary_t = decltype(nullary);
|
||||
using unary_t = decltype(unary);
|
||||
const auto higher1st = [](nullary_t f){ return f(); };
|
||||
const auto higher2nd = [unary](nullary_t f1){
|
||||
return [unary, f1](unary_t f2){ return f2(unary(f1())); };
|
||||
};
|
||||
return higher1st(nullary) + higher2nd(nullary)(unary);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace test_variadic_templates
|
||||
{
|
||||
|
||||
template <int...>
|
||||
struct sum;
|
||||
|
||||
template <int N0, int... N1toN>
|
||||
struct sum<N0, N1toN...>
|
||||
{
|
||||
static constexpr auto value = N0 + sum<N1toN...>::value;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct sum<>
|
||||
{
|
||||
static constexpr auto value = 0;
|
||||
};
|
||||
|
||||
static_assert(sum<>::value == 0, "");
|
||||
static_assert(sum<1>::value == 1, "");
|
||||
static_assert(sum<23>::value == 23, "");
|
||||
static_assert(sum<1, 2>::value == 3, "");
|
||||
static_assert(sum<5, 5, 11>::value == 21, "");
|
||||
static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
|
||||
|
||||
}
|
||||
|
||||
// http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
|
||||
// Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
|
||||
// because of this.
|
||||
namespace test_template_alias_sfinae
|
||||
{
|
||||
|
||||
struct foo {};
|
||||
|
||||
template<typename T>
|
||||
using member = typename T::member_type;
|
||||
|
||||
template<typename T>
|
||||
void func(...) {}
|
||||
|
||||
template<typename T>
|
||||
void func(member<T>*) {}
|
||||
|
||||
void test();
|
||||
|
||||
void test() { func<foo>(0); }
|
||||
|
||||
}
|
||||
|
||||
} // namespace cxx11
|
||||
|
||||
#endif // __cplusplus >= 201103L
|
||||
|
||||
]])
|
||||
|
||||
|
||||
dnl Tests for new features in C++14
|
||||
|
||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
|
||||
|
||||
// If the compiler admits that it is not ready for C++14, why torture it?
|
||||
// Hopefully, this will speed up the test.
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
#error "This is not a C++ compiler"
|
||||
|
||||
#elif __cplusplus < 201402L
|
||||
|
||||
#error "This is not a C++14 compiler"
|
||||
|
||||
#else
|
||||
|
||||
namespace cxx14
|
||||
{
|
||||
|
||||
namespace test_polymorphic_lambdas
|
||||
{
|
||||
|
||||
int
|
||||
test()
|
||||
{
|
||||
const auto lambda = [](auto&&... args){
|
||||
const auto istiny = [](auto x){
|
||||
return (sizeof(x) == 1UL) ? 1 : 0;
|
||||
};
|
||||
const int aretiny[] = { istiny(args)... };
|
||||
return aretiny[0];
|
||||
};
|
||||
return lambda(1, 1L, 1.0f, '1');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace test_binary_literals
|
||||
{
|
||||
|
||||
constexpr auto ivii = 0b0000000000101010;
|
||||
static_assert(ivii == 42, "wrong value");
|
||||
|
||||
}
|
||||
|
||||
namespace test_generalized_constexpr
|
||||
{
|
||||
|
||||
template < typename CharT >
|
||||
constexpr unsigned long
|
||||
strlen_c(const CharT *const s) noexcept
|
||||
{
|
||||
auto length = 0UL;
|
||||
for (auto p = s; *p; ++p)
|
||||
++length;
|
||||
return length;
|
||||
}
|
||||
|
||||
static_assert(strlen_c("") == 0UL, "");
|
||||
static_assert(strlen_c("x") == 1UL, "");
|
||||
static_assert(strlen_c("test") == 4UL, "");
|
||||
static_assert(strlen_c("another\0test") == 7UL, "");
|
||||
|
||||
}
|
||||
|
||||
namespace test_lambda_init_capture
|
||||
{
|
||||
|
||||
int
|
||||
test()
|
||||
{
|
||||
auto x = 0;
|
||||
const auto lambda1 = [a = x](int b){ return a + b; };
|
||||
const auto lambda2 = [a = lambda1(x)](){ return a; };
|
||||
return lambda2();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace test_digit_seperators
|
||||
{
|
||||
|
||||
constexpr auto ten_million = 100'000'000;
|
||||
static_assert(ten_million == 100000000, "");
|
||||
|
||||
}
|
||||
|
||||
namespace test_return_type_deduction
|
||||
{
|
||||
|
||||
auto f(int& x) { return x; }
|
||||
decltype(auto) g(int& x) { return x; }
|
||||
|
||||
template < typename T1, typename T2 >
|
||||
struct is_same
|
||||
{
|
||||
static constexpr auto value = false;
|
||||
};
|
||||
|
||||
template < typename T >
|
||||
struct is_same<T, T>
|
||||
{
|
||||
static constexpr auto value = true;
|
||||
};
|
||||
|
||||
int
|
||||
test()
|
||||
{
|
||||
auto x = 0;
|
||||
static_assert(is_same<int, decltype(f(x))>::value, "");
|
||||
static_assert(is_same<int&, decltype(g(x))>::value, "");
|
||||
return x;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} // namespace cxx14
|
||||
|
||||
#endif // __cplusplus >= 201402L
|
||||
|
||||
]])
|
||||
@@ -31,6 +31,7 @@
|
||||
# cold
|
||||
# const
|
||||
# constructor
|
||||
# constructor_priority for constructor attribute with priority
|
||||
# deprecated
|
||||
# destructor
|
||||
# dllexport
|
||||
@@ -73,7 +74,7 @@
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
|
||||
AS_VAR_PUSHDEF([ac_var], [ax_cv_have_func_attribute_$1])
|
||||
@@ -103,6 +104,9 @@ AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
|
||||
[const], [
|
||||
int foo( void ) __attribute__(($1));
|
||||
],
|
||||
[constructor_priority], [
|
||||
int foo( void ) __attribute__((__constructor__(65535/2)));
|
||||
],
|
||||
[constructor], [
|
||||
int foo( void ) __attribute__(($1));
|
||||
],
|
||||
@@ -180,6 +184,8 @@ AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
|
||||
[visibility], [
|
||||
int foo_def( void ) __attribute__(($1("default")));
|
||||
int foo_hid( void ) __attribute__(($1("hidden")));
|
||||
int foo_int( void ) __attribute__(($1("internal")));
|
||||
int foo_pro( void ) __attribute__(($1("protected")));
|
||||
],
|
||||
[warning], [
|
||||
int foo( void ) __attribute__(($1("")));
|
||||
|
||||
123
build-aux/m4/ax_openmp.m4
Normal file
123
build-aux/m4/ax_openmp.m4
Normal file
@@ -0,0 +1,123 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_openmp.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# This macro tries to find out how to compile programs that use OpenMP a
|
||||
# standard API and set of compiler directives for parallel programming
|
||||
# (see http://www-unix.mcs/)
|
||||
#
|
||||
# On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS
|
||||
# output variable to the flag (e.g. -omp) used both to compile *and* link
|
||||
# OpenMP programs in the current language.
|
||||
#
|
||||
# NOTE: You are assumed to not only compile your program with these flags,
|
||||
# but also link it with them as well.
|
||||
#
|
||||
# If you want to compile everything with OpenMP, you should set:
|
||||
#
|
||||
# CFLAGS="$CFLAGS $OPENMP_CFLAGS"
|
||||
# #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
|
||||
# #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS"
|
||||
#
|
||||
# (depending on the selected language).
|
||||
#
|
||||
# The user can override the default choice by setting the corresponding
|
||||
# environment variable (e.g. OPENMP_CFLAGS).
|
||||
#
|
||||
# ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is
|
||||
# found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is
|
||||
# not found. If ACTION-IF-FOUND is not specified, the default action will
|
||||
# define HAVE_OPENMP.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2015 John W. Peterson <jwpeterson@gmail.com>
|
||||
# Copyright (c) 2016 Nick R. Papior <nickpapior@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 13
|
||||
|
||||
AC_DEFUN([AX_OPENMP], [
|
||||
AC_PREREQ([2.69]) dnl for _AC_LANG_PREFIX
|
||||
|
||||
AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown
|
||||
# Flags to try: -fopenmp (gcc), -mp (SGI & PGI),
|
||||
# -qopenmp (icc>=15), -openmp (icc),
|
||||
# -xopenmp (Sun), -omp (Tru64),
|
||||
# -qsmp=omp (AIX),
|
||||
# none
|
||||
ax_openmp_flags="-fopenmp -openmp -qopenmp -mp -xopenmp -omp -qsmp=omp none"
|
||||
if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then
|
||||
ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags"
|
||||
fi
|
||||
for ax_openmp_flag in $ax_openmp_flags; do
|
||||
case $ax_openmp_flag in
|
||||
none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;;
|
||||
*) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;;
|
||||
esac
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[
|
||||
@%:@include <omp.h>
|
||||
|
||||
static void
|
||||
parallel_fill(int * data, int n)
|
||||
{
|
||||
int i;
|
||||
@%:@pragma omp parallel for
|
||||
for (i = 0; i < n; ++i)
|
||||
data[i] = i;
|
||||
}
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
int arr[100000];
|
||||
omp_set_num_threads(2);
|
||||
parallel_fill(arr, 100000);
|
||||
return 0;
|
||||
}
|
||||
]])],[ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break],[])
|
||||
done
|
||||
[]_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS
|
||||
])
|
||||
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then
|
||||
m4_default([$2],:)
|
||||
else
|
||||
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then
|
||||
OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp
|
||||
fi
|
||||
m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])])
|
||||
fi
|
||||
])dnl AX_OPENMP
|
||||
@@ -19,10 +19,10 @@
|
||||
# is necessary on AIX to use the special cc_r compiler alias.)
|
||||
#
|
||||
# NOTE: You are assumed to not only compile your program with these flags,
|
||||
# but also link it with them as well. e.g. you should link with
|
||||
# but also to link with them as well. For example, you might link with
|
||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
|
||||
#
|
||||
# If you are only building threads programs, you may wish to use these
|
||||
# If you are only building threaded programs, you may wish to use these
|
||||
# variables in your default LIBS, CFLAGS, and CC:
|
||||
#
|
||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
||||
@@ -30,8 +30,8 @@
|
||||
# CC="$PTHREAD_CC"
|
||||
#
|
||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
|
||||
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
|
||||
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
#
|
||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||
@@ -82,35 +82,40 @@
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 21
|
||||
#serial 22
|
||||
|
||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||
AC_DEFUN([AX_PTHREAD], [
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_PROG_SED])
|
||||
AC_LANG_PUSH([C])
|
||||
ax_pthread_ok=no
|
||||
|
||||
# We used to check for pthread.h first, but this fails if pthread.h
|
||||
# requires special compiler flags (e.g. on True64 or Sequent).
|
||||
# requires special compiler flags (e.g. on Tru64 or Sequent).
|
||||
# It gets checked for in the link test anyway.
|
||||
|
||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
# etcetera environment variables, and if threads linking works using
|
||||
# them:
|
||||
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
||||
save_CFLAGS="$CFLAGS"
|
||||
if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
|
||||
ax_pthread_save_CC="$CC"
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_save_LIBS="$LIBS"
|
||||
AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
||||
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
|
||||
AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
if test "x$ax_pthread_ok" = "xno"; then
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
fi
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
CC="$ax_pthread_save_CC"
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
LIBS="$ax_pthread_save_LIBS"
|
||||
fi
|
||||
|
||||
# We must check for the threads library under a number of different
|
||||
@@ -123,7 +128,7 @@ fi
|
||||
# which indicates that we try without any flags at all, and "pthread-config"
|
||||
# which is a program returning the flags for the Pth emulation library.
|
||||
|
||||
ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
@@ -132,82 +137,225 @@ ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mt
|
||||
# none: in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
||||
# -pthreads: Solaris/gcc
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
|
||||
# (Note: HP C rejects this with "bad form for `-t' option")
|
||||
# -pthreads: Solaris/gcc (Note: HP C also rejects)
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
# also defines -D_REENTRANT)
|
||||
# ... -mt is also the pthreads flag for HP/aCC
|
||||
# doesn't hurt to check since this sometimes defines pthreads and
|
||||
# -D_REENTRANT too), HP C (must be checked before -lpthread, which
|
||||
# is present but should not be used directly; and before -mthreads,
|
||||
# because the compiler interprets this as "-mt" + "-hreads")
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
|
||||
case ${host_os} in
|
||||
case $host_os in
|
||||
|
||||
freebsd*)
|
||||
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
|
||||
ax_pthread_flags="-kthread lthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
hpux*)
|
||||
|
||||
# From the cc(1) man page: "[-mt] Sets various -D flags to enable
|
||||
# multi-threading and also sets -lpthread."
|
||||
|
||||
ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
openedition*)
|
||||
|
||||
# IBM z/OS requires a feature-test macro to be defined in order to
|
||||
# enable POSIX threads at all, so give the user a hint if this is
|
||||
# not set. (We don't define these ourselves, as they can affect
|
||||
# other portions of the system API in unpredictable ways.)
|
||||
|
||||
AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
|
||||
[
|
||||
# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
|
||||
AX_PTHREAD_ZOS_MISSING
|
||||
# endif
|
||||
],
|
||||
[AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
|
||||
;;
|
||||
|
||||
solaris*)
|
||||
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
# a function called by this macro, so we could check for that, but
|
||||
# who knows whether they'll stub that too in a future libc.) So,
|
||||
# we'll just look for -pthreads and -lpthread first:
|
||||
# tests will erroneously succeed. (N.B.: The stubs are missing
|
||||
# pthread_cleanup_push, or rather a function called by this macro,
|
||||
# so we could check for that, but who knows whether they'll stub
|
||||
# that too in a future libc.) So we'll check first for the
|
||||
# standard Solaris way of linking pthreads (-mt -lpthread).
|
||||
|
||||
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
darwin*)
|
||||
ax_pthread_flags="-pthread $ax_pthread_flags"
|
||||
ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Clang doesn't consider unrecognized options an error unless we specify
|
||||
# -Werror. We throw in some extra Clang-specific options to ensure that
|
||||
# this doesn't happen for GCC, which also accepts -Werror.
|
||||
# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
|
||||
|
||||
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
|
||||
save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_extra_flags="-Werror"
|
||||
CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[ax_pthread_extra_flags=
|
||||
AC_MSG_RESULT([no])])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
AS_IF([test "x$GCC" = "xyes"],
|
||||
[ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
|
||||
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
for flag in $ax_pthread_flags; do
|
||||
# The presence of a feature test macro requesting re-entrant function
|
||||
# definitions is, on some systems, a strong hint that pthreads support is
|
||||
# correctly enabled
|
||||
|
||||
case $flag in
|
||||
case $host_os in
|
||||
darwin* | hpux* | linux* | osf* | solaris*)
|
||||
ax_pthread_check_macro="_REENTRANT"
|
||||
;;
|
||||
|
||||
aix* | freebsd*)
|
||||
ax_pthread_check_macro="_THREAD_SAFE"
|
||||
;;
|
||||
|
||||
*)
|
||||
ax_pthread_check_macro="--"
|
||||
;;
|
||||
esac
|
||||
AS_IF([test "x$ax_pthread_check_macro" = "x--"],
|
||||
[ax_pthread_check_cond=0],
|
||||
[ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
|
||||
|
||||
# Are we compiling with Clang?
|
||||
|
||||
AC_CACHE_CHECK([whether $CC is Clang],
|
||||
[ax_cv_PTHREAD_CLANG],
|
||||
[ax_cv_PTHREAD_CLANG=no
|
||||
# Note that Autoconf sets GCC=yes for Clang as well as GCC
|
||||
if test "x$GCC" = "xyes"; then
|
||||
AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
|
||||
[/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
|
||||
# if defined(__clang__) && defined(__llvm__)
|
||||
AX_PTHREAD_CC_IS_CLANG
|
||||
# endif
|
||||
],
|
||||
[ax_cv_PTHREAD_CLANG=yes])
|
||||
fi
|
||||
])
|
||||
ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
|
||||
|
||||
ax_pthread_clang_warning=no
|
||||
|
||||
# Clang needs special handling, because older versions handle the -pthread
|
||||
# option in a rather... idiosyncratic way
|
||||
|
||||
if test "x$ax_pthread_clang" = "xyes"; then
|
||||
|
||||
# Clang takes -pthread; it has never supported any other flag
|
||||
|
||||
# (Note 1: This will need to be revisited if a system that Clang
|
||||
# supports has POSIX threads in a separate library. This tends not
|
||||
# to be the way of modern systems, but it's conceivable.)
|
||||
|
||||
# (Note 2: On some systems, notably Darwin, -pthread is not needed
|
||||
# to get POSIX threads support; the API is always present and
|
||||
# active. We could reasonably leave PTHREAD_CFLAGS empty. But
|
||||
# -pthread does define _REENTRANT, and while the Darwin headers
|
||||
# ignore this macro, third-party headers might not.)
|
||||
|
||||
PTHREAD_CFLAGS="-pthread"
|
||||
PTHREAD_LIBS=
|
||||
|
||||
ax_pthread_ok=yes
|
||||
|
||||
# However, older versions of Clang make a point of warning the user
|
||||
# that, in an invocation where only linking and no compilation is
|
||||
# taking place, the -pthread option has no effect ("argument unused
|
||||
# during compilation"). They expect -pthread to be passed in only
|
||||
# when source code is being compiled.
|
||||
#
|
||||
# Problem is, this is at odds with the way Automake and most other
|
||||
# C build frameworks function, which is that the same flags used in
|
||||
# compilation (CFLAGS) are also used in linking. Many systems
|
||||
# supported by AX_PTHREAD require exactly this for POSIX threads
|
||||
# support, and in fact it is often not straightforward to specify a
|
||||
# flag that is used only in the compilation phase and not in
|
||||
# linking. Such a scenario is extremely rare in practice.
|
||||
#
|
||||
# Even though use of the -pthread flag in linking would only print
|
||||
# a warning, this can be a nuisance for well-run software projects
|
||||
# that build with -Werror. So if the active version of Clang has
|
||||
# this misfeature, we search for an option to squash it.
|
||||
|
||||
AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
|
||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
|
||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
|
||||
# Create an alternate version of $ac_link that compiles and
|
||||
# links in two steps (.c -> .o, .o -> exe) instead of one
|
||||
# (.c -> exe), because the warning occurs only in the second
|
||||
# step
|
||||
ax_pthread_save_ac_link="$ac_link"
|
||||
ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
|
||||
ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
|
||||
ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
|
||||
AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
|
||||
CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
|
||||
ac_link="$ax_pthread_save_ac_link"
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
|
||||
[ac_link="$ax_pthread_2step_ac_link"
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
|
||||
[break])
|
||||
])
|
||||
done
|
||||
ac_link="$ax_pthread_save_ac_link"
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
|
||||
ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
|
||||
])
|
||||
|
||||
case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
|
||||
no | unknown) ;;
|
||||
*) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
|
||||
esac
|
||||
|
||||
fi # $ax_pthread_clang = yes
|
||||
|
||||
if test "x$ax_pthread_ok" = "xno"; then
|
||||
for ax_pthread_try_flag in $ax_pthread_flags; do
|
||||
|
||||
case $ax_pthread_try_flag in
|
||||
none)
|
||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
;;
|
||||
|
||||
-mt,pthread)
|
||||
AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
|
||||
PTHREAD_CFLAGS="-mt"
|
||||
PTHREAD_LIBS="-lpthread"
|
||||
;;
|
||||
|
||||
-*)
|
||||
AC_MSG_CHECKING([whether pthreads work with $flag])
|
||||
PTHREAD_CFLAGS="$flag"
|
||||
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
|
||||
PTHREAD_CFLAGS="$ax_pthread_try_flag"
|
||||
;;
|
||||
|
||||
pthread-config)
|
||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
|
||||
if test x"$ax_pthread_config" = xno; then continue; fi
|
||||
AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
|
||||
PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_CHECKING([for the pthreads library -l$flag])
|
||||
PTHREAD_LIBS="-l$flag"
|
||||
AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
|
||||
PTHREAD_LIBS="-l$ax_pthread_try_flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
|
||||
|
||||
# Check for various functions. We must include pthread.h,
|
||||
# since some functions may be macros. (On the Sequent, we
|
||||
@@ -218,7 +366,11 @@ for flag in $ax_pthread_flags; do
|
||||
# pthread_cleanup_push because it is one of the few pthread
|
||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||
# We try pthread_create on general principles.
|
||||
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
||||
# if $ax_pthread_check_cond
|
||||
# error "$ax_pthread_check_macro must be defined"
|
||||
# endif
|
||||
static void routine(void *a) { a = 0; }
|
||||
static void *start_routine(void *a) { return a; }],
|
||||
[pthread_t th; pthread_attr_t attr;
|
||||
@@ -230,13 +382,11 @@ for flag in $ax_pthread_flags; do
|
||||
[ax_pthread_ok=yes],
|
||||
[])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
LIBS="$ax_pthread_save_LIBS"
|
||||
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
break;
|
||||
fi
|
||||
AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
@@ -244,62 +394,65 @@ done
|
||||
fi
|
||||
|
||||
# Various other checks:
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
if test "x$ax_pthread_ok" = "xyes"; then
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
|
||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
AC_MSG_CHECKING([for joinable pthread attribute])
|
||||
attr_name=unknown
|
||||
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
AC_CACHE_CHECK([for joinable pthread attribute],
|
||||
[ax_cv_PTHREAD_JOINABLE_ATTR],
|
||||
[ax_cv_PTHREAD_JOINABLE_ATTR=unknown
|
||||
for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||
[int attr = $attr; return attr /* ; */])],
|
||||
[attr_name=$attr; break],
|
||||
[int attr = $ax_pthread_attr; return attr /* ; */])],
|
||||
[ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
|
||||
[])
|
||||
done
|
||||
AC_MSG_RESULT([$attr_name])
|
||||
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
||||
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
|
||||
test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
|
||||
test "x$ax_pthread_joinable_attr_defined" != "xyes"],
|
||||
[AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
|
||||
[$ax_cv_PTHREAD_JOINABLE_ATTR],
|
||||
[Define to necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
fi
|
||||
ax_pthread_joinable_attr_defined=yes
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING([if more special flags are required for pthreads])
|
||||
flag=no
|
||||
case ${host_os} in
|
||||
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
|
||||
osf* | hpux*) flag="-D_REENTRANT";;
|
||||
AC_CACHE_CHECK([whether more special flags are required for pthreads],
|
||||
[ax_cv_PTHREAD_SPECIAL_FLAGS],
|
||||
[ax_cv_PTHREAD_SPECIAL_FLAGS=no
|
||||
case $host_os in
|
||||
solaris*)
|
||||
if test "$GCC" = "yes"; then
|
||||
flag="-D_REENTRANT"
|
||||
else
|
||||
# TODO: What about Clang on Solaris?
|
||||
flag="-mt -D_REENTRANT"
|
||||
fi
|
||||
ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$flag])
|
||||
if test "x$flag" != xno; then
|
||||
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
||||
fi
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
|
||||
test "x$ax_pthread_special_flags_added" != "xyes"],
|
||||
[PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
|
||||
ax_pthread_special_flags_added=yes])
|
||||
|
||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT], [
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT],
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||
[[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
|
||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
|
||||
test "x$ax_pthread_prio_inherit_defined" != "xyes"],
|
||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
|
||||
ax_pthread_prio_inherit_defined=yes
|
||||
])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
LIBS="$ax_pthread_save_LIBS"
|
||||
|
||||
# More AIX lossage: compile with *_r variant
|
||||
if test "x$GCC" != xyes; then
|
||||
if test "x$GCC" != "xyes"; then
|
||||
case $host_os in
|
||||
aix*)
|
||||
AS_CASE(["x/$CC"],
|
||||
@@ -321,7 +474,7 @@ AC_SUBST([PTHREAD_CFLAGS])
|
||||
AC_SUBST([PTHREAD_CC])
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$ax_pthread_ok" = xyes; then
|
||||
if test "x$ax_pthread_ok" = "xyes"; then
|
||||
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
|
||||
:
|
||||
else
|
||||
|
||||
40
build-aux/m4/l_atomic.m4
Normal file
40
build-aux/m4/l_atomic.m4
Normal file
@@ -0,0 +1,40 @@
|
||||
# Some versions of gcc/libstdc++ require linking with -latomic if
|
||||
# using the C++ atomic library.
|
||||
#
|
||||
# Sourced from http://bugs.debian.org/797228
|
||||
|
||||
m4_define([_CHECK_ATOMIC_testbody], [[
|
||||
#include <atomic>
|
||||
#include <cstdint>
|
||||
|
||||
int main() {
|
||||
std::atomic<int64_t> a{};
|
||||
|
||||
int64_t v = 5;
|
||||
int64_t r = a.fetch_add(v);
|
||||
return static_cast<int>(r);
|
||||
}
|
||||
]])
|
||||
|
||||
AC_DEFUN([CHECK_ATOMIC], [
|
||||
|
||||
AC_LANG_PUSH(C++)
|
||||
|
||||
AC_MSG_CHECKING([whether std::atomic can be used without link library])
|
||||
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[
|
||||
AC_MSG_RESULT([yes])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
LIBS="$LIBS -latomic"
|
||||
AC_MSG_CHECKING([whether std::atomic needs -latomic])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[
|
||||
AC_MSG_RESULT([yes])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([cannot figure our how to use std::atomic])
|
||||
])
|
||||
])
|
||||
|
||||
AC_LANG_POP
|
||||
])
|
||||
@@ -52,8 +52,8 @@ themselves available for conduct issues:
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 1.3.0, available at
|
||||
[http://contributor-covenant.org/version/1/3/0/][version]
|
||||
[https://www.contributor-covenant.org/version/1/3/0/][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/3/0/
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[version]: https://www.contributor-covenant.org/version/1/3/0/
|
||||
|
||||
|
||||
379
configure.ac
379
configure.ac
@@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
|
||||
AC_PREREQ([2.60])
|
||||
define(_CLIENT_VERSION_MAJOR, 1)
|
||||
define(_CLIENT_VERSION_MINOR, 0)
|
||||
define(_CLIENT_VERSION_REVISION, 8)
|
||||
define(_CLIENT_VERSION_REVISION, 15)
|
||||
define(_CLIENT_VERSION_BUILD, 50)
|
||||
define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50)))
|
||||
define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1)))
|
||||
@@ -14,6 +14,16 @@ AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_MACRO_DIR([build-aux/m4])
|
||||
|
||||
BITCOIN_DAEMON_NAME=zcashd
|
||||
BITCOIN_CLI_NAME=zcash-cli
|
||||
BITCOIN_TX_NAME=zcash-tx
|
||||
|
||||
dnl Unless the user specified ARFLAGS, force it to be cr
|
||||
AC_ARG_VAR(ARFLAGS, [Flags for the archiver, defaults to <cr> if not set])
|
||||
if test "x${ARFLAGS+set}" != "xset"; then
|
||||
ARFLAGS="cr"
|
||||
fi
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
AH_TOP([#ifndef BITCOIN_CONFIG_H])
|
||||
@@ -24,7 +34,7 @@ dnl faketime breaks configure and is only needed for make. Disable it here.
|
||||
unset FAKETIME
|
||||
|
||||
dnl Automake init set-up and checks
|
||||
AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
|
||||
AM_INIT_AUTOMAKE([no-define subdir-objects foreign tar-pax])
|
||||
|
||||
dnl faketime messes with timestamps and causes configure to be re-run.
|
||||
dnl --disable-maintainer-mode can be used to bypass this.
|
||||
@@ -40,9 +50,6 @@ else
|
||||
CXXFLAGS_overridden=no
|
||||
fi
|
||||
|
||||
# Zcash requries C++11 compatibility; set it early:
|
||||
CXXFLAGS="-std=c++11 $CXXFLAGS"
|
||||
|
||||
AC_PROG_CXX
|
||||
m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
|
||||
|
||||
@@ -54,6 +61,11 @@ case $host in
|
||||
lt_cv_deplibs_check_method="pass_all"
|
||||
;;
|
||||
esac
|
||||
dnl Require C++11 compiler (no GNU extensions)
|
||||
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
|
||||
dnl Check if -latomic is required for <std::atomic>
|
||||
CHECK_ATOMIC
|
||||
|
||||
dnl Libtool init checks.
|
||||
LT_INIT([pic-only])
|
||||
|
||||
@@ -63,7 +75,6 @@ AC_PATH_TOOL(RANLIB, ranlib)
|
||||
AC_PATH_TOOL(STRIP, strip)
|
||||
AC_PATH_TOOL(GCOV, gcov)
|
||||
AC_PATH_PROG(LCOV, lcov)
|
||||
AC_PATH_PROG(JAVA, java)
|
||||
AC_PATH_PROG(GENHTML, genhtml)
|
||||
AC_PATH_PROG([GIT], [git])
|
||||
AC_PATH_PROG(CCACHE,ccache)
|
||||
@@ -72,9 +83,6 @@ AC_PATH_PROG(HEXDUMP,hexdump)
|
||||
AC_PATH_TOOL(READELF,readelf)
|
||||
AC_PATH_TOOL(CPPFILT,c++filt)
|
||||
|
||||
dnl pkg-config check.
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
# Enable wallet
|
||||
AC_ARG_ENABLE([wallet],
|
||||
[AS_HELP_STRING([--enable-wallet],
|
||||
@@ -94,32 +102,28 @@ AC_ARG_ENABLE([rust],
|
||||
[enable_rust=$enableval],
|
||||
[enable_rust=yes])
|
||||
|
||||
AC_ARG_WITH([miniupnpc],
|
||||
[AS_HELP_STRING([--with-miniupnpc],
|
||||
[enable UPNP (default is yes if libminiupnpc is found)])],
|
||||
[use_upnp=$withval],
|
||||
[use_upnp=auto])
|
||||
|
||||
AC_ARG_ENABLE([upnp-default],
|
||||
[AS_HELP_STRING([--enable-upnp-default],
|
||||
[if UPNP is enabled, turn it on at startup (default is no)])],
|
||||
[use_upnp_default=$enableval],
|
||||
[use_upnp_default=no])
|
||||
AC_ARG_ENABLE([proton],
|
||||
[AS_HELP_STRING([--disable-proton],
|
||||
[disable Proton (AMQP messaging)])],
|
||||
[use_proton=$enableval],
|
||||
[use_proton=yes])
|
||||
|
||||
AC_ARG_ENABLE(tests,
|
||||
AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
|
||||
[use_tests=$enableval],
|
||||
[use_tests=yes])
|
||||
|
||||
AC_ARG_WITH([comparison-tool],
|
||||
AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
|
||||
[use_comparison_tool=$withval],
|
||||
[use_comparison_tool=no])
|
||||
AC_ARG_ENABLE([asan],
|
||||
[AS_HELP_STRING([--enable-asan],
|
||||
[instrument the executables with asan (default is no)])],
|
||||
[use_asan=$enableval],
|
||||
[use_asan=no])
|
||||
|
||||
AC_ARG_ENABLE([comparison-tool-reorg-tests],
|
||||
AS_HELP_STRING([--enable-comparison-tool-reorg-tests],[enable expensive reorg tests in the comparison tool (default no)]),
|
||||
[use_comparison_tool_reorg_tests=$enableval],
|
||||
[use_comparison_tool_reorg_tests=no])
|
||||
AC_ARG_ENABLE([tsan],
|
||||
[AS_HELP_STRING([--enable-tsan],
|
||||
[instrument the executables with tsan (default is no)])],
|
||||
[use_tsan=$enableval],
|
||||
[use_tsan=no])
|
||||
|
||||
if test x$TARGET_OS = xdarwin; then
|
||||
AC_ARG_ENABLE([hardening],
|
||||
@@ -180,6 +184,16 @@ AC_ARG_ENABLE([debug],
|
||||
[enable_debug=$enableval],
|
||||
[enable_debug=no])
|
||||
|
||||
# Turn warnings into errors
|
||||
AC_ARG_ENABLE([werror],
|
||||
[AS_HELP_STRING([--enable-werror],
|
||||
[Treat all compiler warnings as errors (default is no)])],
|
||||
[enable_werror=$enableval],
|
||||
[enable_werror=no])
|
||||
|
||||
AC_LANG_PUSH([C++])
|
||||
AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
|
||||
|
||||
if test "x$enable_debug" = xyes; then
|
||||
CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
|
||||
if test "x$GCC" = xyes; then
|
||||
@@ -191,11 +205,28 @@ if test "x$enable_debug" = xyes; then
|
||||
fi
|
||||
fi
|
||||
|
||||
## TODO: Remove these hard-coded paths and flags. They are here for the sake of
|
||||
## compatibility with the legacy buildsystem.
|
||||
##
|
||||
ERROR_CXXFLAGS=
|
||||
if test "x$enable_werror" = "xyes"; then
|
||||
if test "x$CXXFLAG_WERROR" = "x"; then
|
||||
AC_MSG_ERROR("enable-werror set but -Werror is not usable")
|
||||
fi
|
||||
ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror"
|
||||
fi
|
||||
|
||||
if test "x$CXXFLAGS_overridden" = "xno"; then
|
||||
CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-self-assign"
|
||||
AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
|
||||
|
||||
## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
|
||||
## unknown options if any other warning is produced. Test the -Wfoo case, and
|
||||
## set the -Wno-foo case if it works.
|
||||
AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
|
||||
fi
|
||||
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
|
||||
|
||||
@@ -217,8 +248,6 @@ AC_ARG_WITH([daemon],
|
||||
[build_bitcoind=$withval],
|
||||
[build_bitcoind=yes])
|
||||
|
||||
AC_LANG_PUSH([C++])
|
||||
|
||||
use_pkgconfig=yes
|
||||
case $host in
|
||||
*mingw*)
|
||||
@@ -343,6 +372,7 @@ dnl fi
|
||||
|
||||
AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
|
||||
CPPFLAGS="$CPPFLAGS -DMAC_OSX"
|
||||
OBJCXXFLAGS="$CXXFLAGS"
|
||||
;;
|
||||
*linux*)
|
||||
TARGET_OS=linux
|
||||
@@ -351,20 +381,14 @@ dnl fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if test x$use_comparison_tool != xno; then
|
||||
if test x$JAVA = x; then
|
||||
AC_MSG_ERROR("comparison tool set but java not found")
|
||||
if test x$use_pkgconfig = xyes; then
|
||||
m4_ifndef([PKG_PROG_PKG_CONFIG], [AC_MSG_ERROR(PKG_PROG_PKG_CONFIG macro not found. Please install pkg-config and re-run autogen.sh.)])
|
||||
m4_ifdef([PKG_PROG_PKG_CONFIG], [
|
||||
PKG_PROG_PKG_CONFIG
|
||||
if test x"$PKG_CONFIG" = "x"; then
|
||||
AC_MSG_ERROR(pkg-config not found.)
|
||||
fi
|
||||
AC_SUBST(JAVA_COMPARISON_TOOL, $use_comparison_tool)
|
||||
fi
|
||||
|
||||
if test x$use_comparison_tool_reorg_tests != xno; then
|
||||
if test x$use_comparison_tool = x; then
|
||||
AC_MSG_ERROR("comparison tool reorg tests but comparison tool was not specified")
|
||||
fi
|
||||
AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 1)
|
||||
else
|
||||
AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
|
||||
])
|
||||
fi
|
||||
|
||||
if test x$use_lcov = xyes; then
|
||||
@@ -374,15 +398,9 @@ if test x$use_lcov = xyes; then
|
||||
if test x$GCOV = x; then
|
||||
AC_MSG_ERROR("lcov testing requested but gcov not found")
|
||||
fi
|
||||
if test x$JAVA = x; then
|
||||
AC_MSG_ERROR("lcov testing requested but java not found")
|
||||
fi
|
||||
if test x$GENHTML = x; then
|
||||
AC_MSG_ERROR("lcov testing requested but genhtml not found")
|
||||
fi
|
||||
if test x$use_comparison_tool = x; then
|
||||
AC_MSG_ERROR("lcov testing requested but comparison tool was not specified")
|
||||
fi
|
||||
LCOV="$LCOV --gcov-tool=$GCOV --rc lcov_branch_coverage=1"
|
||||
GENHTML="$GENHTML --branch-coverage"
|
||||
AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
|
||||
@@ -443,6 +461,34 @@ else
|
||||
AC_SEARCH_LIBS([clock_gettime],[rt])
|
||||
fi
|
||||
|
||||
if test x$TARGET_OS != xwindows; then
|
||||
# All windows code is PIC, forcing it on just adds useless compile warnings
|
||||
AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
|
||||
fi
|
||||
|
||||
#asan and tsan cannot be used together
|
||||
if test x$use_asan$use_tsan == xyesyes; then
|
||||
AC_MSG_ERROR(asan and tsan cannot be simultaneously enabled)
|
||||
fi
|
||||
|
||||
# using asan flag to enable address sanitizer and undefined behavior sanitizer
|
||||
if test x$use_asan == xyes; then
|
||||
AX_CHECK_LINK_FLAG([-static-libstdc++],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libstdc++"],[AC_MSG_ERROR(Cannot statically link -static-libstdc++)])
|
||||
AX_CHECK_LINK_FLAG([-static-libasan],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libasan"],[AC_MSG_ERROR(Cannot statically link -static-libasan)])
|
||||
AX_CHECK_COMPILE_FLAG([-fsanitize=address],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=address"],[AC_MSG_ERROR(Cannot enable -fsanitize=address)])
|
||||
AX_CHECK_COMPILE_FLAG([-fsanitize=undefined],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=undefined"],[AC_MSG_ERROR(Cannot enable -fsanitize=undefined)])
|
||||
AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
|
||||
fi
|
||||
|
||||
# using tsan flag to enable address thread sanitizer
|
||||
# TSAN is supported on Linux x84_64 and tested on Ubuntu 12.04
|
||||
# Non-position-independent executables are not supported. Use with -fPIE and -pie flags
|
||||
# libc/libstdc++ static linking is not supported
|
||||
if test x$use_tsan == xyes; then
|
||||
AX_CHECK_COMPILE_FLAG([-fsanitize=thread],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=thread"],[AC_MSG_ERROR(Cannot enable -fsanitize=thread)])
|
||||
AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
|
||||
fi
|
||||
|
||||
if test x$use_hardening != xno; then
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat"],[AC_MSG_ERROR(Cannot enable -Wformat)])
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat-security],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat-security"],[AC_MSG_ERROR(Cannot enable -Wformat-security)],[-Wformat])
|
||||
@@ -469,6 +515,7 @@ if test x$use_hardening != xno; then
|
||||
# These are only available on Windows.
|
||||
AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)])
|
||||
AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"],[AC_MSG_ERROR(Cannot enable --nxcompat)])
|
||||
AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"],[AC_MSG_ERROR(Cannot enable ASLR)])
|
||||
fi
|
||||
|
||||
case $host in
|
||||
@@ -476,11 +523,6 @@ if test x$use_hardening != xno; then
|
||||
AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
|
||||
;;
|
||||
esac
|
||||
|
||||
CXXFLAGS="$CXXFLAGS $HARDENED_CXXFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $HARDENED_CPPFLAGS"
|
||||
LDFLAGS="$LDFLAGS $HARDENED_LDFLAGS"
|
||||
OBJCXXFLAGS="$CXXFLAGS"
|
||||
fi
|
||||
|
||||
dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
|
||||
@@ -549,13 +591,21 @@ if test x$enable_wallet != xno; then
|
||||
BITCOIN_FIND_BDB62
|
||||
fi
|
||||
|
||||
dnl Check for libminiupnpc (optional)
|
||||
if test x$use_upnp != xno; then
|
||||
AC_CHECK_HEADERS(
|
||||
[miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
|
||||
[AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
|
||||
[have_miniupnpc=no]
|
||||
)
|
||||
dnl Check Qpid Proton headers and library exist
|
||||
if test x$use_proton = xyes; then
|
||||
AC_CHECK_HEADERS([proton/connection.hpp],
|
||||
[],
|
||||
[AC_MSG_WARN([Proton headers not found, disabling Proton support])
|
||||
use_proton=no])
|
||||
AC_CHECK_LIB([qpid-proton-cpp], [main],
|
||||
[PROTON_LIBS="-lqpid-proton-cpp -lqpid-proton"],
|
||||
[AC_MSG_WARN([Proton libraries not found, disabling Proton support])
|
||||
use_proton=no])
|
||||
fi
|
||||
if test x$use_proton = xyes; then
|
||||
AC_DEFINE(ENABLE_PROTON, 1, [Define to 1 to enable Proton functions])
|
||||
else
|
||||
AC_DEFINE(ENABLE_PROTON, 0, [Define to 1 to enable Proton functions])
|
||||
fi
|
||||
|
||||
if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then
|
||||
@@ -567,33 +617,14 @@ fi
|
||||
if test x$use_boost = xyes; then
|
||||
|
||||
dnl Check for boost libs
|
||||
AX_BOOST_BASE
|
||||
dnl We need Boost >= 1.62 to fix a potential security bug (https://github.com/zcash/zcash/issues/1241)
|
||||
AX_BOOST_BASE([1.62])
|
||||
AX_BOOST_SYSTEM
|
||||
AX_BOOST_FILESYSTEM
|
||||
AX_BOOST_PROGRAM_OPTIONS
|
||||
AX_BOOST_THREAD
|
||||
AX_BOOST_CHRONO
|
||||
|
||||
|
||||
if test x$use_reduce_exports = xyes; then
|
||||
AC_MSG_CHECKING([for working boost reduced exports])
|
||||
TEMP_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
|
||||
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
|
||||
@%:@include <boost/version.hpp>
|
||||
]], [[
|
||||
#if BOOST_VERSION >= 104900
|
||||
// Everything is okay
|
||||
#else
|
||||
# error Boost version is too old
|
||||
#endif
|
||||
]])],[
|
||||
AC_MSG_RESULT(yes)
|
||||
],[
|
||||
AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
|
||||
])
|
||||
CPPFLAGS="$TEMP_CPPFLAGS"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$use_reduce_exports = xyes; then
|
||||
@@ -634,69 +665,11 @@ if test x$use_tests = xyes; then
|
||||
fi
|
||||
|
||||
if test x$use_boost = xyes; then
|
||||
|
||||
BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
|
||||
|
||||
dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
|
||||
dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
|
||||
dnl a working version is available, else fall back to sleep. sleep was removed
|
||||
dnl after 1.56.
|
||||
dnl If neither is available, abort.
|
||||
TEMP_LIBS="$LIBS"
|
||||
LIBS="$BOOST_LIBS $LIBS"
|
||||
TEMP_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <boost/thread/thread.hpp>
|
||||
#include <boost/version.hpp>
|
||||
]],[[
|
||||
#if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
|
||||
boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
|
||||
#else
|
||||
choke me
|
||||
#endif
|
||||
]])],
|
||||
[boost_sleep=yes;
|
||||
AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
|
||||
[boost_sleep=no])
|
||||
LIBS="$TEMP_LIBS"
|
||||
CPPFLAGS="$TEMP_CPPFLAGS"
|
||||
|
||||
if test x$boost_sleep != xyes; then
|
||||
TEMP_LIBS="$LIBS"
|
||||
LIBS="$BOOST_LIBS $LIBS"
|
||||
TEMP_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <boost/version.hpp>
|
||||
#include <boost/thread.hpp>
|
||||
#include <boost/date_time/posix_time/posix_time_types.hpp>
|
||||
]],[[
|
||||
#if BOOST_VERSION <= 105600
|
||||
boost::this_thread::sleep(boost::posix_time::milliseconds(0));
|
||||
#else
|
||||
choke me
|
||||
#endif
|
||||
]])],
|
||||
[boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
|
||||
[boost_sleep=no])
|
||||
LIBS="$TEMP_LIBS"
|
||||
CPPFLAGS="$TEMP_CPPFLAGS"
|
||||
fi
|
||||
|
||||
if test x$boost_sleep != xyes; then
|
||||
AC_MSG_ERROR(No working boost sleep implementation found.)
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if test x$use_pkgconfig = xyes; then
|
||||
|
||||
if test x"$PKG_CONFIG" = "x"; then
|
||||
AC_MSG_ERROR(pkg-config not found.)
|
||||
fi
|
||||
|
||||
: #NOP
|
||||
: dnl
|
||||
m4_ifdef(
|
||||
[PKG_CHECK_MODULES],
|
||||
[
|
||||
@@ -785,7 +758,8 @@ echo 'Hunting for libsnark include directory...'
|
||||
if test -d "$LIBSNARK_INCDIR"; then
|
||||
echo "Found libsnark include directory: $LIBSNARK_INCDIR"
|
||||
else
|
||||
AC_MSG_ERROR(libsnark include directory not found)
|
||||
#AC_MSG_ERROR(libsnark include directory not found)
|
||||
echo "libsnark include directory not found ($LIBSNARK_INCDIR)"
|
||||
fi
|
||||
|
||||
CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS"
|
||||
@@ -803,15 +777,29 @@ if test x$enable_rust != xno; then
|
||||
RUST_LIBS="-lrustzcash"
|
||||
fi
|
||||
|
||||
LIBZCASH_LIBS="-lsnark -lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium -fopenmp $RUST_LIBS"
|
||||
dnl Check for OpenMP support
|
||||
AX_OPENMP(
|
||||
[AC_DEFINE(HAVE_OPENMP, 1, [Define if OpenMP is enabled])
|
||||
AM_CONDITIONAL([HAVE_OPENMP], [true])
|
||||
CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"],
|
||||
[AC_MSG_WARN([OpenMP not supported, disabling multithreading])
|
||||
AC_DEFINE(HAVE_OPENMP, 0, [Define if OpenMP is enabled])
|
||||
AM_CONDITIONAL([HAVE_OPENMP], [false])])
|
||||
|
||||
CXXFLAGS_TEMP="$CXXFLAGS"
|
||||
LIBS_TEMP="$LIBS"
|
||||
CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
|
||||
LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS $GMP_LIBS $GMPXX_LIBS"
|
||||
AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
|
||||
CXXFLAGS="$CXXFLAGS_TEMP"
|
||||
LIBS="$LIBS_TEMP"
|
||||
# Gitian uses a config.site that sets depends_prefix, and then sets --prefix=/
|
||||
# build.sh just uses --prefix
|
||||
if test x$depends_prefix != x; then
|
||||
LIBSNARK_DEPINST="$depends_prefix"
|
||||
else
|
||||
LIBSNARK_DEPINST="$prefix"
|
||||
fi
|
||||
|
||||
# Additional Zcash flags
|
||||
AX_CHECK_COMPILE_FLAG([-fwrapv],[CXXFLAGS="$CXXFLAGS -fwrapv"])
|
||||
AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing],[CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wno-builtin-declaration-mismatch],[CXXFLAGS="$CXXFLAGS -Wno-builtin-declaration-mismatch"],,[[$CXXFLAG_WERROR]])
|
||||
|
||||
LIBZCASH_LIBS="-lgmp -lgmpxx -lboost_system -lcrypto -lsodium $RUST_LIBS"
|
||||
|
||||
AC_MSG_CHECKING([whether to build bitcoind])
|
||||
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
||||
@@ -881,35 +869,10 @@ else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
dnl enable upnp support
|
||||
AC_MSG_CHECKING([whether to build with support for UPnP])
|
||||
if test x$have_miniupnpc = xno; then
|
||||
if test x$use_upnp = xyes; then
|
||||
AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
|
||||
fi
|
||||
AC_MSG_RESULT(no)
|
||||
else
|
||||
if test x$use_upnp != xno; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING([whether to build with UPnP enabled by default])
|
||||
use_upnp=yes
|
||||
upnp_setting=0
|
||||
if test x$use_upnp_default != xno; then
|
||||
use_upnp_default=yes
|
||||
upnp_setting=1
|
||||
fi
|
||||
AC_MSG_RESULT($use_upnp_default)
|
||||
AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
|
||||
if test x$TARGET_OS = xwindows; then
|
||||
MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
|
||||
|
||||
AM_CONDITIONAL([ENABLE_PROTON], [test "x$use_proton" = "xyes"])
|
||||
|
||||
AC_MSG_CHECKING([whether to build test_bitcoin])
|
||||
if test x$use_tests = xyes; then
|
||||
AC_MSG_RESULT([yes])
|
||||
@@ -938,10 +901,10 @@ AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
|
||||
AM_CONDITIONAL([ENABLE_RUST],[test x$enable_rust = xyes])
|
||||
AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
|
||||
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
|
||||
AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
|
||||
AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
|
||||
AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
|
||||
AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
|
||||
AM_CONDITIONAL([ASAN],[test x$use_asan = xyes])
|
||||
AM_CONDITIONAL([TSAN],[test x$use_tsan = xyes])
|
||||
|
||||
AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
|
||||
AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
|
||||
@@ -955,20 +918,34 @@ AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
|
||||
AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
|
||||
AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
|
||||
AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
|
||||
AC_SUBST(BITCOIN_DAEMON_NAME)
|
||||
AC_SUBST(BITCOIN_CLI_NAME)
|
||||
AC_SUBST(BITCOIN_TX_NAME)
|
||||
|
||||
AC_SUBST(RELDFLAGS)
|
||||
AC_SUBST(ERROR_CXXFLAGS)
|
||||
AC_SUBST(SAN_CXXFLAGS)
|
||||
AC_SUBST(SAN_LDFLAGS)
|
||||
AC_SUBST(HARDENED_CXXFLAGS)
|
||||
AC_SUBST(HARDENED_CPPFLAGS)
|
||||
AC_SUBST(HARDENED_LDFLAGS)
|
||||
AC_SUBST(PIC_FLAGS)
|
||||
AC_SUBST(PIE_FLAGS)
|
||||
AC_SUBST(LIBTOOL_APP_LDFLAGS)
|
||||
AC_SUBST(USE_UPNP)
|
||||
AC_SUBST(BOOST_LIBS)
|
||||
AC_SUBST(TESTDEFS)
|
||||
AC_SUBST(LEVELDB_TARGET_FLAGS)
|
||||
AC_SUBST(MINIUPNPC_CPPFLAGS)
|
||||
AC_SUBST(MINIUPNPC_LIBS)
|
||||
AC_SUBST(CRYPTO_LIBS)
|
||||
AC_SUBST(SSL_LIBS)
|
||||
AC_SUBST(EVENT_LIBS)
|
||||
AC_SUBST(EVENT_PTHREADS_LIBS)
|
||||
AC_SUBST(ZMQ_LIBS)
|
||||
AC_SUBST(GMP_LIBS)
|
||||
AC_SUBST(GMPXX_LIBS)
|
||||
AC_SUBST(LIBSNARK_LIBS)
|
||||
AC_SUBST(LIBSNARK_DEPINST)
|
||||
AC_SUBST(LIBZCASH_LIBS)
|
||||
AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi src/test/buildenv.py])
|
||||
AC_SUBST(PROTON_LIBS)
|
||||
AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile src/test/buildenv.py])
|
||||
AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
|
||||
AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
|
||||
|
||||
@@ -995,8 +972,8 @@ PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
|
||||
unset PKG_CONFIG_LIBDIR
|
||||
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
|
||||
|
||||
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no"
|
||||
AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue src/cryptoconditions])
|
||||
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
|
||||
AC_CONFIG_SUBDIRS([src/secp256k1 src/snark src/univalue src/cryptoconditions])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
@@ -1010,3 +987,25 @@ case $host in
|
||||
chmod 755 libtool
|
||||
;;
|
||||
esac
|
||||
|
||||
echo
|
||||
echo "Options used to compile and link:"
|
||||
echo " with wallet = $enable_wallet"
|
||||
echo " with rust = $enable_rust"
|
||||
echo " with proton = $use_proton"
|
||||
echo " with zmq = $use_zmq"
|
||||
echo " with test = $use_tests"
|
||||
echo " debug enabled = $enable_debug"
|
||||
echo " werror = $enable_werror"
|
||||
echo
|
||||
echo " target os = $TARGET_OS"
|
||||
echo " build os = $BUILD_OS"
|
||||
echo
|
||||
echo " CC = $CC"
|
||||
echo " CFLAGS = $CFLAGS"
|
||||
echo " CPPFLAGS = $CPPFLAGS"
|
||||
echo " CXX = $CXX"
|
||||
echo " CXXFLAGS = $CXXFLAGS"
|
||||
echo " LDFLAGS = $LDFLAGS"
|
||||
echo " ARFLAGS = $ARFLAGS"
|
||||
echo
|
||||
|
||||
48
contrib/amqp/amqp_sub.py
Normal file
48
contrib/amqp/amqp_sub.py
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python2
|
||||
# Copyright (c) 2017 The Zcash developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
# Requirements:
|
||||
# pip install python-qpid-proton
|
||||
|
||||
import binascii
|
||||
from proton.handlers import MessagingHandler
|
||||
from proton.reactor import Container
|
||||
|
||||
port = 5672
|
||||
|
||||
class Server(MessagingHandler):
|
||||
def __init__(self, url):
|
||||
super(Server, self).__init__()
|
||||
self.url = url
|
||||
self.senders = {}
|
||||
|
||||
def on_start(self, event):
|
||||
print "Listening on:", self.url
|
||||
self.container = event.container
|
||||
self.acceptor = event.container.listen(self.url)
|
||||
|
||||
def on_message(self, event):
|
||||
m = event.message
|
||||
topic = m.subject
|
||||
body = m.body
|
||||
sequence = str( m.properties['x-opt-sequence-number'] )
|
||||
if topic == "hashablock":
|
||||
print '- HASH BLOCK ('+sequence+') -'
|
||||
print binascii.hexlify(body)
|
||||
elif topic == "hashtx":
|
||||
print '- HASH TX ('+sequence+') -'
|
||||
print binascii.hexlify(body)
|
||||
elif topic == "rawblock":
|
||||
print '- RAW BLOCK HEADER ('+sequence+') -'
|
||||
print binascii.hexlify(body[:80])
|
||||
elif topic == "rawtx":
|
||||
print '- RAW TX ('+sequence+') -'
|
||||
print binascii.hexlify(body)
|
||||
|
||||
try:
|
||||
Container(Server("127.0.0.1:%i" % port)).run()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
62
contrib/ci-workers/README.md
Normal file
62
contrib/ci-workers/README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Zcash CI workers
|
||||
|
||||
This folder contains the Ansible playbooks for configuring a fresh OS
|
||||
installation for use as a Buildbot worker in Zcash's CI.
|
||||
|
||||
# Criteria for Adding Workers
|
||||
|
||||
a. Don't add workers until users complain about a problem on a platform
|
||||
that doesn't yet have workers or if we anticipate many users will use
|
||||
a platform, we may pre-emptively add an unsupported worker for it.
|
||||
|
||||
b. Prioritize the platforms that seem to have the most users.
|
||||
|
||||
c. When adding workers start by adding workers for the "most common"
|
||||
variant of any distro, then if users later encounter problems with a
|
||||
sub-variant, we can consider adding new workers at that point.
|
||||
Example: add Ubuntu Desktop before Xubuntu, on the assumption the
|
||||
former has a larger population base.
|
||||
|
||||
# Setting up a latent worker on Amazon EC2
|
||||
|
||||
- Add a regular (non-latent) worker to the master.cfg for dev-ci.z.cash, and
|
||||
deploy the changes.
|
||||
- This enables the Ansible playbook to run to completion, ending in the worker
|
||||
connecting to the master.
|
||||
|
||||
- Start a basic EC2 instance using the template AMI for the target OS.
|
||||
- Choose the smallest instance size, it won't be used for building Zcash.
|
||||
|
||||
- Figure out which user to log into the instance with.
|
||||
- E.g. for the Ubuntu template, use "ubuntu" instead of "root"
|
||||
- If you get an Ansible error later with a message like "Failed to connect to
|
||||
the host via ssh: Received message too long 1349281121\r\n", that means the
|
||||
instance is sending a text string in response to the SSH connection, and the
|
||||
Ansible protocol is balking. Try manually logging in with the same
|
||||
credentials to diagnose.
|
||||
|
||||
- Create `inventory/hosts` containing the following:
|
||||
|
||||
[zcash-ci-worker-unix]
|
||||
some-name ansible_host=<INSTANCE_IP> ansible_ssh_user=<USERNAME>
|
||||
|
||||
- Run `ansible-playbook -e buildbot_worker_host_template=templates/host.ec2.j2 -i inventory/hosts unix.yml`,
|
||||
passing in the worker's Buildbot name and password.
|
||||
- After a successful run, the worker should be connected to dev-ci.z.cash and
|
||||
visible in its worker list.
|
||||
|
||||
- Create an AMI from the instance. This is the worker AMI to put into the
|
||||
master.cfg for dev-ci.z.cash.
|
||||
- 16 GB of storage should be sufficient.
|
||||
|
||||
- SSH into the instance, and edit the worker config to connect to ci.z.cash.
|
||||
|
||||
- Create an AMI from the instance. This is the worker AMI to put into the
|
||||
master.cfg for ci.z.cash.
|
||||
- 16 GB of storage should be sufficient.
|
||||
|
||||
- Delete the instance (it is no longer needed).
|
||||
|
||||
- Edit the master.cfg to turn the new worker into a latent (using the new AMI
|
||||
IDs), add it to the appropriate worker groups, set up new builders etc.
|
||||
- Deploy this via the normal PR review process.
|
||||
2
contrib/ci-workers/ansible.cfg
Normal file
2
contrib/ci-workers/ansible.cfg
Normal file
@@ -0,0 +1,2 @@
|
||||
[ssh_connection]
|
||||
pipelining = True
|
||||
27
contrib/ci-workers/grind.yml
Normal file
27
contrib/ci-workers/grind.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
# Configure a Buildbot worker
|
||||
- include: unix.yml
|
||||
|
||||
- name: Install grind-specific worker dependencies
|
||||
hosts: zcash-ci-worker-unix
|
||||
become: true
|
||||
|
||||
vars_files:
|
||||
- vars/default.yml
|
||||
|
||||
tasks:
|
||||
- name: Get dependencies for distribution
|
||||
include_vars: "{{ item }}"
|
||||
with_first_found:
|
||||
- files:
|
||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version | int }}.yml"
|
||||
- "vars/{{ ansible_distribution }}.yml"
|
||||
- "vars/{{ ansible_os_family }}.yml"
|
||||
skip: true
|
||||
|
||||
- name: Install required packages
|
||||
package:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
with_items: "{{ grind_deps }}"
|
||||
8
contrib/ci-workers/tasks/install-pip.yml
Normal file
8
contrib/ci-workers/tasks/install-pip.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
- name: Fetch pip installer
|
||||
get_url:
|
||||
url: https://bootstrap.pypa.io/get-pip.py
|
||||
dest: /tmp/get-pip.py
|
||||
|
||||
- name: Install pip
|
||||
command: "{{ ansible_python.executable }} /tmp/get-pip.py"
|
||||
17
contrib/ci-workers/templates/buildbot-worker.service.j2
Normal file
17
contrib/ci-workers/templates/buildbot-worker.service.j2
Normal file
@@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=Buildbot worker
|
||||
Wants=network.target
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
PIDFile=/home/{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/twistd.pid
|
||||
WorkingDirectory=/home/{{ buildbot_worker_user }}
|
||||
ExecStart={{ pip_bin_dir }}/buildbot-worker start {{ buildbot_worker_name }}
|
||||
ExecReload={{ pip_bin_dir }}/buildbot-worker restart {{ buildbot_worker_name }}
|
||||
ExecStop={{ pip_bin_dir }}/buildbot-worker stop {{ buildbot_worker_name }}
|
||||
Restart=always
|
||||
User={{ buildbot_worker_user }}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
1
contrib/ci-workers/templates/host.ec2.j2
Normal file
1
contrib/ci-workers/templates/host.ec2.j2
Normal file
@@ -0,0 +1 @@
|
||||
OS: {{ ansible_distribution }} {{ ansible_distribution_version }}
|
||||
3
contrib/ci-workers/templates/host.j2
Normal file
3
contrib/ci-workers/templates/host.j2
Normal file
@@ -0,0 +1,3 @@
|
||||
OS: {{ ansible_distribution }} {{ ansible_distribution_version }}
|
||||
Memory: {{ ansible_memtotal_mb }} MB
|
||||
CPU: {{ ansible_processor[1] }}
|
||||
152
contrib/ci-workers/unix.yml
Normal file
152
contrib/ci-workers/unix.yml
Normal file
@@ -0,0 +1,152 @@
|
||||
---
|
||||
- name: Configure a Buildbot worker for Zcash CI
|
||||
hosts: zcash-ci-worker-unix
|
||||
become: true
|
||||
gather_facts: False
|
||||
|
||||
vars_files:
|
||||
- vars/default.yml
|
||||
- vars/buildbot.yml
|
||||
|
||||
vars_prompt:
|
||||
- name: "buildbot_worker_admin"
|
||||
prompt: "Admin details"
|
||||
default: "Zcash <sysadmin@z.cash>"
|
||||
- name: "buildbot_worker_name"
|
||||
prompt: "Buildbot worker name (provided by ZECC)"
|
||||
private: no
|
||||
- name: "buildbot_worker_password"
|
||||
prompt: "Buildbot worker password (provided by ZECC)"
|
||||
|
||||
pre_tasks:
|
||||
- name: Install Python 2.7 for Ansible and Buildbot
|
||||
raw: test -e /usr/bin/python || test -e /usr/bin/python2 || test -e /usr/bin/python2.7 || test -e /usr/local/bin/python2.7 || (test -e /usr/bin/apt && apt -qqy update && apt install -qqy python) || (test -e /usr/bin/dnf && dnf install -qqy python2) || (test -e /usr/sbin/pkg && pkg install -qqy python2)
|
||||
register: output
|
||||
changed_when:
|
||||
- output.stdout != ""
|
||||
- output.stdout != "\r\n"
|
||||
|
||||
- name: Check if Python is in the configured location
|
||||
raw: test -e {{ ansible_python_interpreter }}
|
||||
ignore_errors: true
|
||||
register: python_check
|
||||
when: ansible_python_interpreter is defined
|
||||
|
||||
- name: Fail if configured Python is unavailable
|
||||
fail:
|
||||
msg: "Python is not accessible at {{ ansible_python_interpreter }} on this host! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2.7 binary."
|
||||
when: ansible_python_interpreter is defined and python_check.rc == 1
|
||||
|
||||
- name: Check if Python is in the default location
|
||||
raw: test -e /usr/bin/python
|
||||
ignore_errors: true
|
||||
register: python_check
|
||||
when: ansible_python_interpreter is undefined
|
||||
|
||||
- name: Fail if default Python is unavailable
|
||||
fail:
|
||||
msg: Python is not accessible at /usr/bin/python on this host! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2.7 binary.
|
||||
when: ansible_python_interpreter is undefined and python_check.rc == 1
|
||||
|
||||
- name: Gathering Facts
|
||||
setup:
|
||||
|
||||
- name: Fail if Python is the wrong version
|
||||
fail:
|
||||
msg: "The Python binary at {{ ansible_python.executable }} is version {{ ansible_python_version }}! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2.7 binary."
|
||||
when: ansible_python.version.major != 2 or ansible_python.version.minor != 7
|
||||
|
||||
tasks:
|
||||
- name: Get dependencies for distribution
|
||||
include_vars: "{{ item }}"
|
||||
with_first_found:
|
||||
- files:
|
||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version | int }}.yml"
|
||||
- "vars/{{ ansible_distribution }}.yml"
|
||||
- "vars/{{ ansible_os_family }}.yml"
|
||||
skip: true
|
||||
|
||||
- name: Collate dependencies
|
||||
set_fact:
|
||||
package_deps: "{{ buildbot_deps + fetch_deps + conf_deps + build_deps + link_deps + dist_deps }}"
|
||||
python_modules: "{{ buildbot_modules + rpc_test_modules }}"
|
||||
|
||||
- name: Update rolling release [Arch Linux]
|
||||
pacman:
|
||||
update_cache: yes
|
||||
upgrade: yes
|
||||
when: ansible_distribution == 'Archlinux'
|
||||
|
||||
- name: Install required packages
|
||||
package:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
with_items: "{{ package_deps }}"
|
||||
|
||||
- name: Install pip [CentOS]
|
||||
include: tasks/install-pip.yml
|
||||
when: ansible_distribution == 'CentOS'
|
||||
|
||||
- name: Install required Python modules
|
||||
pip:
|
||||
name: "{{ item }}"
|
||||
state: latest
|
||||
with_items: "{{ python_modules }}"
|
||||
notify: restart buildbot-worker
|
||||
|
||||
- name: Set up the Buildbot worker user
|
||||
user:
|
||||
name: "{{ buildbot_worker_user }}"
|
||||
comment: Buildbot worker
|
||||
shell: /bin/bash
|
||||
state: present
|
||||
|
||||
- name: Create Buildbot worker
|
||||
command: >
|
||||
buildbot-worker create-worker ~/{{ buildbot_worker_name }}
|
||||
{{ buildbot_master_host }}:{{ buildbot_master_port }}
|
||||
{{ buildbot_worker_name|quote }} {{ buildbot_worker_password|quote }}
|
||||
args:
|
||||
creates: "~/{{ buildbot_worker_name }}/buildbot.tac"
|
||||
become_user: "{{ buildbot_worker_user }}"
|
||||
|
||||
- name: Set admin details for Buildbot worker
|
||||
copy:
|
||||
content: "{{ buildbot_worker_admin }}"
|
||||
dest: "~{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/info/admin"
|
||||
owner: "{{ buildbot_worker_user }}"
|
||||
group: "{{ buildbot_worker_user }}"
|
||||
mode: "0644"
|
||||
|
||||
- name: Set host details for Buildbot worker
|
||||
template:
|
||||
src: "{{ buildbot_worker_host_template }}"
|
||||
dest: "~{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/info/host"
|
||||
owner: "{{ buildbot_worker_user }}"
|
||||
group: "{{ buildbot_worker_user }}"
|
||||
mode: "0644"
|
||||
|
||||
- name: Copy Buildbot worker systemd service unit
|
||||
template:
|
||||
src: templates/buildbot-worker.service.j2
|
||||
dest: "/etc/systemd/system/buildbot-worker.service"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
notify: reload systemd
|
||||
|
||||
- name: Start Buildbot worker.
|
||||
service:
|
||||
name: buildbot-worker
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
handlers:
|
||||
- name: restart buildbot-worker
|
||||
service:
|
||||
name: buildbot-worker
|
||||
state: restarted
|
||||
|
||||
- name: reload systemd
|
||||
command: /bin/systemctl daemon-reload
|
||||
7
contrib/ci-workers/vars/Archlinux.yml
Normal file
7
contrib/ci-workers/vars/Archlinux.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
buildbot_deps:
|
||||
- python2-pip
|
||||
build_deps:
|
||||
- multilib/gcc
|
||||
- make
|
||||
pip_bin_dir: /usr/bin
|
||||
13
contrib/ci-workers/vars/CentOS.yml
Normal file
13
contrib/ci-workers/vars/CentOS.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
buildbot_deps: [] # Empty to remove python-pip
|
||||
build_deps:
|
||||
- bzip2
|
||||
- gcc
|
||||
- gcc-c++
|
||||
- make
|
||||
- patch
|
||||
dist_deps:
|
||||
- pkgconfig # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
|
||||
- python-devel
|
||||
- redhat-rpm-config
|
||||
pip_bin_dir: /usr/bin
|
||||
6
contrib/ci-workers/vars/Debian.yml
Normal file
6
contrib/ci-workers/vars/Debian.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
build_deps:
|
||||
- build-essential # Depends on g++, libc6-dev, make
|
||||
dist_deps:
|
||||
- pkg-config # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
|
||||
- python-dev
|
||||
10
contrib/ci-workers/vars/Fedora.yml
Normal file
10
contrib/ci-workers/vars/Fedora.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
build_deps:
|
||||
- gcc
|
||||
- gcc-c++
|
||||
- make
|
||||
- patch
|
||||
dist_deps:
|
||||
- pkgconfig # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
|
||||
- python-devel
|
||||
- redhat-rpm-config
|
||||
9
contrib/ci-workers/vars/FreeBSD.yml
Normal file
9
contrib/ci-workers/vars/FreeBSD.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
buildbot_deps:
|
||||
- py27-pip
|
||||
build_deps:
|
||||
- gcc
|
||||
- gmake
|
||||
dist_deps:
|
||||
- bash
|
||||
- pkgconf # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
|
||||
5
contrib/ci-workers/vars/Ubuntu.yml
Normal file
5
contrib/ci-workers/vars/Ubuntu.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
build_deps:
|
||||
- build-essential # Depends on g++, libc6-dev, make
|
||||
dist_deps:
|
||||
- pkg-config # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
|
||||
5
contrib/ci-workers/vars/buildbot.yml
Normal file
5
contrib/ci-workers/vars/buildbot.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
buildbot_worker_user: zcbbworker
|
||||
buildbot_master_host: dev-ci.z.cash
|
||||
buildbot_master_port: 9899
|
||||
buildbot_worker_host_template: templates/host.j2
|
||||
49
contrib/ci-workers/vars/default.yml
Normal file
49
contrib/ci-workers/vars/default.yml
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
# These variables can be overridden in distribution files.
|
||||
|
||||
# Dependencies required to install Buildbot
|
||||
buildbot_deps:
|
||||
- python-pip # So we can install Python modules
|
||||
|
||||
# Dependencies required to download files
|
||||
fetch_deps:
|
||||
- git
|
||||
- wget # For zcutil/fetch-params.sh
|
||||
|
||||
# Dependencies required to configure Zcash
|
||||
conf_deps:
|
||||
- autoconf
|
||||
- automake
|
||||
- m4
|
||||
|
||||
# Dependencies required to compile Zcash
|
||||
build_deps:
|
||||
- g++
|
||||
- gcc
|
||||
- make
|
||||
|
||||
# Dependencies required to link Zcash
|
||||
link_deps:
|
||||
- libtool
|
||||
|
||||
# Additional distribution-specific dependencies
|
||||
dist_deps: []
|
||||
|
||||
# Additional grind-specific dependencies
|
||||
grind_deps:
|
||||
- lcov
|
||||
- valgrind
|
||||
|
||||
# Python modules required for a Zcash Buildbot worker
|
||||
buildbot_modules:
|
||||
- pip # Needs to be updated first so Buildbot installs
|
||||
- buildbot-worker
|
||||
- pyflakes
|
||||
|
||||
# Python modules required to run the Zcash RPC test suite
|
||||
rpc_test_modules:
|
||||
- pyblake2
|
||||
- pyzmq
|
||||
|
||||
# Environment variables
|
||||
pip_bin_dir: /usr/local/bin
|
||||
@@ -1,3 +1,93 @@
|
||||
zcash (1.0.15) stable; urgency=medium
|
||||
|
||||
* 1.0.15 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Wed, 28 Feb 2018 16:58:19 +0000
|
||||
|
||||
zcash (1.0.15~rc1) stable; urgency=medium
|
||||
|
||||
* 1.0.15-rc1 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Sat, 24 Feb 2018 04:20:05 +0000
|
||||
|
||||
zcash (1.0.14) stable; urgency=medium
|
||||
|
||||
* 1.0.14 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Wed, 03 Jan 2018 23:54:16 +0100
|
||||
|
||||
zcash (1.0.14~rc1) stable; urgency=medium
|
||||
|
||||
* 1.0.14-rc1 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Fri, 22 Dec 2017 10:12:41 +0000
|
||||
|
||||
zcash (1.0.13) stable; urgency=medium
|
||||
|
||||
* 1.0.13 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Mon, 20 Nov 2017 12:31:53 +0000
|
||||
|
||||
zcash (1.0.13~rc2) stable; urgency=medium
|
||||
|
||||
* 1.0.13-rc2 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Fri, 17 Nov 2017 18:01:08 +0000
|
||||
|
||||
zcash (1.0.13~rc1) stable; urgency=medium
|
||||
|
||||
* 1.0.13-rc1 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Wed, 15 Nov 2017 00:02:21 +0000
|
||||
|
||||
zcash (1.0.12) stable; urgency=medium
|
||||
|
||||
* 1.0.12 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Thu, 28 Sep 2017 01:26:44 +0100
|
||||
|
||||
zcash (1.0.12~rc1) stable; urgency=medium
|
||||
|
||||
* 1.0.12-rc1 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Sat, 23 Sep 2017 10:51:36 +0100
|
||||
|
||||
zcash (1.0.11) stable; urgency=medium
|
||||
|
||||
* 1.0.11 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Tue, 15 Aug 2017 10:06:25 +0100
|
||||
|
||||
zcash (1.0.11~rc1) stable; urgency=medium
|
||||
|
||||
* 1.0.11-rc1 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Tue, 01 Aug 2017 17:12:52 +0200
|
||||
|
||||
zcash (1.0.10+1) stable; urgency=medium
|
||||
|
||||
* 1.0.10-1 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Fri, 23 Jun 2017 19:50:41 -0700
|
||||
|
||||
zcash (1.0.10) stable; urgency=medium
|
||||
|
||||
* 1.0.10 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Thu, 22 Jun 2017 15:13:04 +1200
|
||||
|
||||
zcash (1.0.9) stable; urgency=medium
|
||||
|
||||
* 1.0.9 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Wed, 24 May 2017 12:51:06 -0700
|
||||
|
||||
zcash (1.0.8+1) jessie; urgency=high
|
||||
|
||||
* 1.0.8-1 release.
|
||||
|
||||
-- Zcash Company <team@z.cash> Thu, 13 Apr 2017 20:20:37 -0700
|
||||
|
||||
zcash (1.0.8) jessie; urgency=medium
|
||||
|
||||
* 1.0.8 release.
|
||||
|
||||
@@ -38,10 +38,6 @@ Files: depends/sources/openssl-*.tar.gz
|
||||
Copyright: 1998-2016 The OpenSSL Project and 1995-1998 Eric Young
|
||||
License: OpenSSL+SSLeay
|
||||
|
||||
Files: depends/sources/miniupnpc-*.tar.gz
|
||||
Copyright: 2005-2016 Thomas BERNARD
|
||||
License: BSD-3clause
|
||||
|
||||
Files: depends/sources/zeromq-*.tar.gz
|
||||
Copyright:
|
||||
1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
@@ -59,6 +55,18 @@ Files: depends/sources/google*.tar.gz
|
||||
Copyright: 2008 Google Inc.
|
||||
License: BSD-3clause-Google
|
||||
|
||||
Files: depends/sources/qpid-proton-*.tar.gz
|
||||
Copyright: 2012-2017 The Apache Software Foundation
|
||||
License: Apache-Qpid-Proton-with-BSD-Subcomponents
|
||||
|
||||
Files: src/secp256k1/build-aux/m4/ax_jni_include_dir.m4
|
||||
Copyright: 2008 Don Anderson <dda@sleepycat.com>
|
||||
License: GNU-All-permissive-License
|
||||
|
||||
Files: src/secp256k1/build-aux/m4/ax_prog_cc_for_build.m4
|
||||
Copyright: 2008 Paolo Bonzini <bonzini@gnu.org>
|
||||
License: GNU-All-permissive-License
|
||||
|
||||
License: Boost-Software-License-1.0
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
@@ -1091,3 +1099,226 @@ License: LGPL-with-ZeroMQ-exception
|
||||
Comment:
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
License: Apache-Qpid-Proton-with-BSD-Subcomponents
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
.
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
.
|
||||
1. Definitions.
|
||||
.
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
.
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
.
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
.
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
.
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
.
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
.
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
.
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
.
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
.
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
.
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
.
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
.
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
.
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
.
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
.
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
.
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
.
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
.
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
.
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
.
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
.
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
.
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
.
|
||||
END OF TERMS AND CONDITIONS
|
||||
.
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
.
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
.
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
.
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
.
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
.
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
.
|
||||
.
|
||||
PROTON SUBCOMPONENTS:
|
||||
.
|
||||
Proton includes freegetopt with a separate BSD license. Your use
|
||||
of the source code for freegetopt is subject to the terms and
|
||||
conditions of its license in examples/include/pncompat/internal/LICENSE.
|
||||
.
|
||||
The setup scripts for the python bindings include files derived by
|
||||
PyZMQ and are licensed with a separate Modified BSD license. Use of
|
||||
the source code in these setup files are subject to the terms and
|
||||
conditions in the license:
|
||||
proton-c/bindings/python/setuputils/PYZMQ_LICENSE.BSD.
|
||||
|
||||
License: GNU-All-permissive-License
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty provided the copyright notice
|
||||
and this notice are preserved. This file is offered as-is, without any
|
||||
warranty.
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import os
|
||||
|
||||
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
|
||||
OBJDUMP_CMD = os.getenv('OBJDUMP', '/usr/bin/objdump')
|
||||
NONFATAL = {'HIGH_ENTROPY_VA'} # checks which are non-fatal for now but only generate a warning
|
||||
|
||||
def check_ELF_PIE(executable):
|
||||
'''
|
||||
@@ -94,7 +95,7 @@ def check_ELF_RELRO(executable):
|
||||
raise IOError('Error opening file')
|
||||
for line in stdout.split(b'\n'):
|
||||
tokens = line.split()
|
||||
if len(tokens)>1 and tokens[1] == b'(BIND_NOW)' or (len(tokens)>2 and tokens[1] == b'(FLAGS)' and b'BIND_NOW' in tokens[2]):
|
||||
if len(tokens)>1 and tokens[1] == b'(BIND_NOW)' or (len(tokens)>2 and tokens[1] == b'(FLAGS)' and b'BIND_NOW' in tokens[2:]):
|
||||
have_bindnow = True
|
||||
return have_gnu_relro and have_bindnow
|
||||
|
||||
@@ -114,26 +115,50 @@ def check_ELF_Canary(executable):
|
||||
|
||||
def get_PE_dll_characteristics(executable):
|
||||
'''
|
||||
Get PE DllCharacteristics bits
|
||||
Get PE DllCharacteristics bits.
|
||||
Returns a tuple (arch,bits) where arch is 'i386:x86-64' or 'i386'
|
||||
and bits is the DllCharacteristics value.
|
||||
'''
|
||||
p = subprocess.Popen([OBJDUMP_CMD, '-x', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||
(stdout, stderr) = p.communicate()
|
||||
if p.returncode:
|
||||
raise IOError('Error opening file')
|
||||
arch = ''
|
||||
bits = 0
|
||||
for line in stdout.split('\n'):
|
||||
tokens = line.split()
|
||||
if len(tokens)>=2 and tokens[0] == 'architecture:':
|
||||
arch = tokens[1].rstrip(',')
|
||||
if len(tokens)>=2 and tokens[0] == 'DllCharacteristics':
|
||||
return int(tokens[1],16)
|
||||
return 0
|
||||
bits = int(tokens[1],16)
|
||||
return (arch,bits)
|
||||
|
||||
IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020
|
||||
IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040
|
||||
IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100
|
||||
|
||||
def check_PE_PIE(executable):
|
||||
def check_PE_DYNAMIC_BASE(executable):
|
||||
'''PIE: DllCharacteristics bit 0x40 signifies dynamicbase (ASLR)'''
|
||||
return bool(get_PE_dll_characteristics(executable) & 0x40)
|
||||
(arch,bits) = get_PE_dll_characteristics(executable)
|
||||
reqbits = IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE
|
||||
return (bits & reqbits) == reqbits
|
||||
|
||||
# On 64 bit, must support high-entropy 64-bit address space layout randomization in addition to DYNAMIC_BASE
|
||||
# to have secure ASLR.
|
||||
def check_PE_HIGH_ENTROPY_VA(executable):
|
||||
'''PIE: DllCharacteristics bit 0x20 signifies high-entropy ASLR'''
|
||||
(arch,bits) = get_PE_dll_characteristics(executable)
|
||||
if arch == 'i386:x86-64':
|
||||
reqbits = IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
|
||||
else: # Unnecessary on 32-bit
|
||||
assert(arch == 'i386')
|
||||
reqbits = 0
|
||||
return (bits & reqbits) == reqbits
|
||||
|
||||
def check_PE_NX(executable):
|
||||
'''NX: DllCharacteristics bit 0x100 signifies nxcompat (DEP)'''
|
||||
return bool(get_PE_dll_characteristics(executable) & 0x100)
|
||||
(arch,bits) = get_PE_dll_characteristics(executable)
|
||||
return (bits & IMAGE_DLL_CHARACTERISTICS_NX_COMPAT) == IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
|
||||
|
||||
CHECKS = {
|
||||
'ELF': [
|
||||
@@ -143,7 +168,8 @@ CHECKS = {
|
||||
('Canary', check_ELF_Canary)
|
||||
],
|
||||
'PE': [
|
||||
('PIE', check_PE_PIE),
|
||||
('DYNAMIC_BASE', check_PE_DYNAMIC_BASE),
|
||||
('HIGH_ENTROPY_VA', check_PE_HIGH_ENTROPY_VA),
|
||||
('NX', check_PE_NX)
|
||||
]
|
||||
}
|
||||
@@ -168,12 +194,18 @@ if __name__ == '__main__':
|
||||
continue
|
||||
|
||||
failed = []
|
||||
warning = []
|
||||
for (name, func) in CHECKS[etype]:
|
||||
if not func(filename):
|
||||
if name in NONFATAL:
|
||||
warning.append(name)
|
||||
else:
|
||||
failed.append(name)
|
||||
if failed:
|
||||
print('%s: failed %s' % (filename, ' '.join(failed)))
|
||||
retval = 1
|
||||
if warning:
|
||||
print('%s: warning %s' % (filename, ' '.join(warning)))
|
||||
except IOError:
|
||||
print('%s: cannot open' % filename)
|
||||
retval = 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: "zcash-1.0.8"
|
||||
name: "zcash-1.0.15"
|
||||
enable_cache: true
|
||||
distro: "debian"
|
||||
suites:
|
||||
@@ -85,7 +85,7 @@ script: |
|
||||
BASEPREFIX=`pwd`/depends
|
||||
# Build dependencies for each host
|
||||
for i in $HOSTS; do
|
||||
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
||||
NO_PROTON="x" make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
||||
done
|
||||
|
||||
# Faketime for binaries
|
||||
|
||||
161
contrib/komodo-cli.bash-completion
Normal file
161
contrib/komodo-cli.bash-completion
Normal file
@@ -0,0 +1,161 @@
|
||||
# bash programmable completion for komodo-cli(1)
|
||||
# Copyright (c) 2012-2016 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
# call $komodo-cli for RPC
|
||||
_komodo_rpc() {
|
||||
# determine already specified args necessary for RPC
|
||||
local rpcargs=()
|
||||
for i in ${COMP_LINE}; do
|
||||
case "$i" in
|
||||
-conf=*|-datadir=*|-regtest|-rpc*|-testnet)
|
||||
rpcargs=( "${rpcargs[@]}" "$i" )
|
||||
;;
|
||||
esac
|
||||
done
|
||||
$komodo_cli "${rpcargs[@]}" "$@"
|
||||
}
|
||||
|
||||
# Add wallet accounts to COMPREPLY
|
||||
_komodo_accounts() {
|
||||
local accounts
|
||||
# Accounts are deprecated in komodo
|
||||
#accounts=$(_komodo_rpc listaccounts | awk -F '"' '{ print $2 }')
|
||||
accounts="\\\"\\\""
|
||||
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) )
|
||||
}
|
||||
|
||||
_komodo_cli() {
|
||||
local cur prev words=() cword
|
||||
local komodo_cli
|
||||
|
||||
# save and use original argument to invoke komodo-cli for -help, help and RPC
|
||||
# as komodo-cli might not be in $PATH
|
||||
komodo_cli="$1"
|
||||
|
||||
COMPREPLY=()
|
||||
_get_comp_words_by_ref -n = cur prev words cword
|
||||
|
||||
if ((cword > 5)); then
|
||||
case ${words[cword-5]} in
|
||||
sendtoaddress)
|
||||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if ((cword > 4)); then
|
||||
case ${words[cword-4]} in
|
||||
importaddress|listtransactions|setban)
|
||||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
signrawtransaction)
|
||||
COMPREPLY=( $( compgen -W "ALL NONE SINGLE ALL|ANYONECANPAY NONE|ANYONECANPAY SINGLE|ANYONECANPAY" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if ((cword > 3)); then
|
||||
case ${words[cword-3]} in
|
||||
addmultisigaddress)
|
||||
_komodo_accounts
|
||||
return 0
|
||||
;;
|
||||
getbalance|gettxout|importaddress|importpubkey|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock)
|
||||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if ((cword > 2)); then
|
||||
case ${words[cword-2]} in
|
||||
addnode)
|
||||
COMPREPLY=( $( compgen -W "add remove onetry" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
setban)
|
||||
COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
fundrawtransaction|getblock|getblockheader|getmempoolancestors|getmempooldescendants|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction)
|
||||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
# KMD does not have viewing keys, yet
|
||||
# z_importkey|z_importviewingkey)
|
||||
# COMPREPLY=( $( compgen -W "yes no whenkeyisnew" -- "$cur" ) )
|
||||
# return 0
|
||||
# ;;
|
||||
move|setaccount)
|
||||
_komodo_accounts
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$prev" in
|
||||
backupwallet|dumpwallet|importwallet|z_exportwallet|z_importwallet)
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
getaddednodeinfo|getrawmempool|lockunspent|setgenerate)
|
||||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany)
|
||||
_komodo_accounts
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$cur" in
|
||||
-conf=*)
|
||||
cur="${cur#*=}"
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-datadir=*)
|
||||
cur="${cur#*=}"
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
-*=*) # prevent nonsense completions
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
local helpopts commands
|
||||
|
||||
# only parse -help if senseful
|
||||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
||||
helpopts=$($komodo_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
||||
fi
|
||||
|
||||
# only parse help if senseful
|
||||
if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then
|
||||
commands=$(_komodo_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }')
|
||||
fi
|
||||
|
||||
COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) )
|
||||
|
||||
# Prevent space if an argument is desired
|
||||
if [[ $COMPREPLY == *= ]]; then
|
||||
compopt -o nospace
|
||||
fi
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
} &&
|
||||
complete -F _komodo_cli komodo-cli
|
||||
|
||||
# Local variables:
|
||||
# mode: shell-script
|
||||
# sh-basic-offset: 4
|
||||
# sh-indent-comment: t
|
||||
# indent-tabs-mode: nil
|
||||
# End:
|
||||
# ex: ts=4 sw=4 et filetype=sh
|
||||
@@ -1,15 +1,15 @@
|
||||
# bash programmable completion for bitcoin-tx(1)
|
||||
# bash programmable completion for komodo-tx(1)
|
||||
# Copyright (c) 2016 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
_bitcoin_tx() {
|
||||
_komodo_tx() {
|
||||
local cur prev words=() cword
|
||||
local bitcoin_tx
|
||||
local komodo_tx
|
||||
|
||||
# save and use original argument to invoke bitcoin-tx for -help
|
||||
# save and use original argument to invoke komodo-tx for -help
|
||||
# it might not be in $PATH
|
||||
bitcoin_tx="$1"
|
||||
komodo_tx="$1"
|
||||
|
||||
COMPREPLY=()
|
||||
_get_comp_words_by_ref -n =: cur prev words cword
|
||||
@@ -27,15 +27,15 @@ _bitcoin_tx() {
|
||||
|
||||
if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then
|
||||
# only options (or an uncompletable hex-string) allowed
|
||||
# parse bitcoin-tx -help for options
|
||||
# parse komodo-tx -help for options
|
||||
local helpopts
|
||||
helpopts=$($bitcoin_tx -help | sed -e '/^ -/ p' -e d )
|
||||
helpopts=$($komodo_tx -help | sed -e '/^ -/ p' -e d )
|
||||
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
|
||||
else
|
||||
# only commands are allowed
|
||||
# parse -help for commands
|
||||
local helpcmds
|
||||
helpcmds=$($bitcoin_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^ [a-z]/ p' -e d )
|
||||
helpcmds=$($komodo_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^ [a-z]/ p' -e d )
|
||||
COMPREPLY=( $( compgen -W "$helpcmds" -- "$cur" ) )
|
||||
fi
|
||||
|
||||
@@ -46,7 +46,7 @@ _bitcoin_tx() {
|
||||
|
||||
return 0
|
||||
} &&
|
||||
complete -F _bitcoin_tx zcash-tx
|
||||
complete -F _komodo_tx komodo-tx
|
||||
|
||||
# Local variables:
|
||||
# mode: shell-script
|
||||
57
contrib/komodod.bash-completion
Normal file
57
contrib/komodod.bash-completion
Normal file
@@ -0,0 +1,57 @@
|
||||
# bash programmable completion for komodod(1)
|
||||
# Copyright (c) 2012-2017 The Bitcoin Core developers
|
||||
# Copyright (c) 2016-2017 The komodo developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
_komodod() {
|
||||
local cur prev words=() cword
|
||||
local komodod
|
||||
|
||||
# save and use original argument to invoke komodod for -help
|
||||
# it might not be in $PATH
|
||||
komodod="$1"
|
||||
|
||||
COMPREPLY=()
|
||||
_get_comp_words_by_ref -n = cur prev words cword
|
||||
|
||||
case "$cur" in
|
||||
-conf=*|-pid=*|-loadblock=*|-rpccookiefile=*|-wallet=*)
|
||||
cur="${cur#*=}"
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-datadir=*|-exportdir=*)
|
||||
cur="${cur#*=}"
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
-*=*) # prevent nonsense completions
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
|
||||
# only parse -help if senseful
|
||||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
||||
local helpopts
|
||||
helpopts=$($komodod -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
||||
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
|
||||
fi
|
||||
|
||||
# Prevent space if an argument is desired
|
||||
if [[ $COMPREPLY == *= ]]; then
|
||||
compopt -o nospace
|
||||
fi
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
} &&
|
||||
complete -F _komodod komodod
|
||||
|
||||
# Local variables:
|
||||
# mode: shell-script
|
||||
# sh-basic-offset: 4
|
||||
# sh-indent-comment: t
|
||||
# indent-tabs-mode: nil
|
||||
# End:
|
||||
# ex: ts=4 sw=4 et filetype=sh
|
||||
@@ -1,9 +1,9 @@
|
||||
# bash programmable completion for bitcoin-cli(1)
|
||||
# bash programmable completion for zcash-cli(1)
|
||||
# Copyright (c) 2012-2016 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
# call $bitcoin-cli for RPC
|
||||
# call $zcash-cli for RPC
|
||||
_zcash_rpc() {
|
||||
# determine already specified args necessary for RPC
|
||||
local rpcargs=()
|
||||
@@ -14,7 +14,7 @@ _zcash_rpc() {
|
||||
;;
|
||||
esac
|
||||
done
|
||||
$bitcoin_cli "${rpcargs[@]}" "$@"
|
||||
$zcash_cli "${rpcargs[@]}" "$@"
|
||||
}
|
||||
|
||||
# Add wallet accounts to COMPREPLY
|
||||
@@ -28,11 +28,11 @@ _zcash_accounts() {
|
||||
|
||||
_zcash_cli() {
|
||||
local cur prev words=() cword
|
||||
local bitcoin_cli
|
||||
local zcash_cli
|
||||
|
||||
# save and use original argument to invoke bitcoin-cli for -help, help and RPC
|
||||
# as bitcoin-cli might not be in $PATH
|
||||
bitcoin_cli="$1"
|
||||
# save and use original argument to invoke zcash-cli for -help, help and RPC
|
||||
# as zcash-cli might not be in $PATH
|
||||
zcash_cli="$1"
|
||||
|
||||
COMPREPLY=()
|
||||
_get_comp_words_by_ref -n = cur prev words cword
|
||||
@@ -82,10 +82,14 @@ _zcash_cli() {
|
||||
COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
fundrawtransaction|getblock|getblockheader|getmempoolancestors|getmempooldescendants|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction|z_importkey)
|
||||
fundrawtransaction|getblock|getblockheader|getmempoolancestors|getmempooldescendants|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction)
|
||||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
z_importkey|z_importviewingkey)
|
||||
COMPREPLY=( $( compgen -W "yes no whenkeyisnew" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
move|setaccount)
|
||||
_zcash_accounts
|
||||
return 0
|
||||
@@ -127,7 +131,7 @@ _zcash_cli() {
|
||||
|
||||
# only parse -help if senseful
|
||||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
||||
helpopts=$($bitcoin_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
||||
helpopts=$($zcash_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
||||
fi
|
||||
|
||||
# only parse help if senseful
|
||||
57
contrib/zcash-tx.bash-completion
Normal file
57
contrib/zcash-tx.bash-completion
Normal file
@@ -0,0 +1,57 @@
|
||||
# bash programmable completion for zcash-tx(1)
|
||||
# Copyright (c) 2016 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
_zcash_tx() {
|
||||
local cur prev words=() cword
|
||||
local zcash_tx
|
||||
|
||||
# save and use original argument to invoke zcash-tx for -help
|
||||
# it might not be in $PATH
|
||||
zcash_tx="$1"
|
||||
|
||||
COMPREPLY=()
|
||||
_get_comp_words_by_ref -n =: cur prev words cword
|
||||
|
||||
case "$cur" in
|
||||
load=*:*)
|
||||
cur="${cur#load=*:}"
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
*=*) # prevent attempts to complete other arguments
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then
|
||||
# only options (or an uncompletable hex-string) allowed
|
||||
# parse zcash-tx -help for options
|
||||
local helpopts
|
||||
helpopts=$($zcash_tx -help | sed -e '/^ -/ p' -e d )
|
||||
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
|
||||
else
|
||||
# only commands are allowed
|
||||
# parse -help for commands
|
||||
local helpcmds
|
||||
helpcmds=$($zcash_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^ [a-z]/ p' -e d )
|
||||
COMPREPLY=( $( compgen -W "$helpcmds" -- "$cur" ) )
|
||||
fi
|
||||
|
||||
# Prevent space if an argument is desired
|
||||
if [[ $COMPREPLY == *= ]]; then
|
||||
compopt -o nospace
|
||||
fi
|
||||
|
||||
return 0
|
||||
} &&
|
||||
complete -F _zcash_tx zcash-tx
|
||||
|
||||
# Local variables:
|
||||
# mode: shell-script
|
||||
# sh-basic-offset: 4
|
||||
# sh-indent-comment: t
|
||||
# indent-tabs-mode: nil
|
||||
# End:
|
||||
# ex: ts=4 sw=4 et filetype=sh
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
_zcashd() {
|
||||
local cur prev words=() cword
|
||||
local bitcoind
|
||||
local zcashd
|
||||
|
||||
# save and use original argument to invoke zcashd for -help
|
||||
# it might not be in $PATH
|
||||
bitcoind="$1"
|
||||
zcashd="$1"
|
||||
|
||||
COMPREPLY=()
|
||||
_get_comp_words_by_ref -n = cur prev words cword
|
||||
@@ -21,7 +21,7 @@ _zcashd() {
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-datadir=*)
|
||||
-datadir=*|-exportdir=*)
|
||||
cur="${cur#*=}"
|
||||
_filedir -d
|
||||
return 0
|
||||
@@ -34,7 +34,7 @@ _zcashd() {
|
||||
# only parse -help if senseful
|
||||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
||||
local helpopts
|
||||
helpopts=$($bitcoind -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
||||
helpopts=$($zcashd -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
||||
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
|
||||
fi
|
||||
|
||||
@@ -74,9 +74,9 @@ include packages/packages.mk
|
||||
|
||||
rust_packages_$(NO_RUST) = $(rust_packages)
|
||||
wallet_packages_$(NO_WALLET) = $(wallet_packages)
|
||||
upnp_packages_$(NO_UPNP) = $(upnp_packages)
|
||||
proton_packages_$(NO_PROTON) = $(proton_packages)
|
||||
|
||||
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(rust_packages_) $(wallet_packages_) $(upnp_packages_)
|
||||
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(rust_packages_) $(proton_packages_) $(wallet_packages_)
|
||||
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages)
|
||||
all_packages = $(packages) $(native_packages)
|
||||
|
||||
@@ -113,7 +113,6 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
|
||||
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
|
||||
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
|
||||
-e 's|@no_wallet@|$(NO_WALLET)|' \
|
||||
-e 's|@no_upnp@|$(NO_UPNP)|' \
|
||||
-e 's|@debug@|$(DEBUG)|' \
|
||||
$< > $@
|
||||
$(AT)touch $@
|
||||
|
||||
@@ -33,9 +33,8 @@ The following can be set when running make: make FOO=bar
|
||||
SOURCES_PATH: downloaded sources will be placed here
|
||||
BASE_CACHE: built packages will be placed here
|
||||
SDK_PATH: Path where sdk's can be found (used by OSX)
|
||||
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
|
||||
PRIORITY_DOWNLOAD_PATH: Try fetching source files from here before using their own URLs
|
||||
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
|
||||
NO_UPNP: Don't download/build/cache packages needed for enabling upnp
|
||||
DEBUG: disable some optimizations and enable more runtime checking
|
||||
|
||||
If some packages are not built, for example `make NO_WALLET=1`, the appropriate
|
||||
|
||||
@@ -7,11 +7,19 @@ build_darwin_OTOOL: = $(shell xcrun -f otool)
|
||||
build_darwin_NM: = $(shell xcrun -f nm)
|
||||
build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
|
||||
build_darwin_SHA256SUM = shasum -a 256
|
||||
build_darwin_DOWNLOAD = curl --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -L -f -o
|
||||
#<<<<<<< HEAD
|
||||
##build_darwin_DOWNLOAD = curl --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -L -f -o
|
||||
|
||||
#darwin host on darwin builder. overrides darwin host preferences.
|
||||
darwin_CC= gcc-5
|
||||
darwin_CXX= g++-5
|
||||
#darwin_CC= gcc-5
|
||||
#darwin_CXX= g++-5
|
||||
#=======
|
||||
build_darwin_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
|
||||
|
||||
#darwin host on darwin builder. overrides darwin host preferences.
|
||||
darwin_CC=$(shell xcrun -f clang) -mmacosx-version-min=$(OSX_MIN_VERSION)
|
||||
darwin_CXX:=$(shell xcrun -f clang++) -mmacosx-version-min=$(OSX_MIN_VERSION) -stdlib=libc++
|
||||
#>>>>>>> zcash/master
|
||||
darwin_AR:=$(shell xcrun -f ar)
|
||||
darwin_RANLIB:=$(shell xcrun -f ranlib)
|
||||
darwin_STRIP:=$(shell xcrun -f strip)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
build_linux_SHA256SUM = sha256sum
|
||||
build_linux_DOWNLOAD = wget --timeout=$(DOWNLOAD_CONNECT_TIMEOUT) --tries=$(DOWNLOAD_RETRIES) -nv -O
|
||||
build_linux_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
|
||||
|
||||
@@ -7,20 +7,12 @@ ac_tool_prefix=${host_alias}-
|
||||
if test -z $with_boost; then
|
||||
with_boost=$depends_prefix
|
||||
fi
|
||||
# Disable comparison utility (#592)
|
||||
#if test -z $with_comparison_tool; then
|
||||
# with_comparison_tool=$depends_prefix/native/share/BitcoindComparisonTool_jar/BitcoindComparisonTool.jar
|
||||
#fi
|
||||
|
||||
|
||||
if test -z $enable_wallet && test -n "@no_wallet@"; then
|
||||
enable_wallet=no
|
||||
fi
|
||||
|
||||
if test -z $with_miniupnpc && test -n "@no_upnp@"; then
|
||||
with_miniupnpc=no
|
||||
fi
|
||||
|
||||
if test x@host_os@ = xdarwin; then
|
||||
BREW=no
|
||||
PORT=no
|
||||
|
||||
@@ -22,7 +22,8 @@ endef
|
||||
define fetch_file
|
||||
(test -f $$($(1)_source_dir)/$(4) || \
|
||||
( mkdir -p $$($(1)_download_dir) && echo Fetching $(1)... && \
|
||||
( $(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(2)/$(3)" ) && \
|
||||
( $(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(PRIORITY_DOWNLOAD_PATH)/$(4)" || \
|
||||
$(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(2)/$(3)" ) && \
|
||||
echo "$(5) $$($(1)_download_dir)/$(4).temp" > $$($(1)_download_dir)/.$(4).hash && \
|
||||
$(build_SHA256SUM) -c $$($(1)_download_dir)/.$(4).hash && \
|
||||
mv $$($(1)_download_dir)/$(4).temp $$($(1)_source_dir)/$(4) && \
|
||||
@@ -42,6 +43,10 @@ $(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_ty
|
||||
$(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH)))
|
||||
final_build_id_long+=$($(package)_build_id_long)
|
||||
|
||||
#override platform specific files and hashes
|
||||
$(eval $(1)_file_name=$(if $($(1)_file_name_$(host_os)),$($(1)_file_name_$(host_os)),$($(1)_file_name)))
|
||||
$(eval $(1)_sha256_hash=$(if $($(1)_sha256_hash_$(host_os)),$($(1)_sha256_hash_$(host_os)),$($(1)_sha256_hash)))
|
||||
|
||||
#compute package-specific paths
|
||||
$(1)_build_subdir?=.
|
||||
$(1)_download_file?=$($(1)_file_name)
|
||||
@@ -124,9 +129,9 @@ $(1)_config_env+=$($(1)_config_env_$(host_arch)_$(host_os)) $($(1)_config_env_$(
|
||||
|
||||
$(1)_config_env+=PKG_CONFIG_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig
|
||||
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig
|
||||
$(1)_config_env+=PATH=$(build_prefix)/bin:$(PATH)
|
||||
$(1)_build_env+=PATH=$(build_prefix)/bin:$(PATH)
|
||||
$(1)_stage_env+=PATH=$(build_prefix)/bin:$(PATH)
|
||||
$(1)_config_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||
$(1)_build_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||
$(1)_stage_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||
$(1)_autoconf=./configure --host=$($($(1)_type)_host) --disable-dependency-tracking --prefix=$($($(1)_type)_prefix) $$($(1)_config_opts) CC="$$($(1)_cc)" CXX="$$($(1)_cxx)"
|
||||
|
||||
ifneq ($($(1)_nm),)
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
OSX_MIN_VERSION=10.7
|
||||
OSX_SDK_VERSION=10.9
|
||||
OSX_MIN_VERSION=10.8
|
||||
OSX_SDK_VERSION=10.11
|
||||
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
||||
LD64_VERSION=241.9
|
||||
darwin_CC=gcc-5 -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||
darwin_CXX=g++-5 -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||
#<<<<<<< HEAD
|
||||
#LD64_VERSION=241.9
|
||||
#darwin_CC=gcc-5 -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||
#darwin_CXX=g++-5 -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||
#=======
|
||||
LD64_VERSION=253.9
|
||||
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++
|
||||
#>>>>>>> zcash/master
|
||||
|
||||
darwin_CFLAGS=-pipe
|
||||
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
||||
|
||||
@@ -9,6 +9,12 @@ define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication
|
||||
$(package)_config_opts_mingw32=--enable-mingw
|
||||
$(package)_config_opts_linux=--with-pic
|
||||
$(package)_cxxflags=-std=c++11
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
sed -i.old 's/__atomic_compare_exchange\\(/__atomic_compare_exchange_db(/' src/dbinc/atomic.h && \
|
||||
sed -i.old 's/atomic_init/atomic_init_db/' src/dbinc/atomic.h src/mp/mp_region.c src/mp/mp_mvcc.c src/mp/mp_fget.c src/mutex/mut_method.c src/mutex/mut_tas.c
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
||||
@@ -9,7 +9,7 @@ define $(package)_set_vars
|
||||
$(package)_config_opts_release=variant=release
|
||||
$(package)_config_opts_debug=variant=debug
|
||||
$(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-config.jam
|
||||
$(package)_config_opts+=threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1
|
||||
$(package)_config_opts+=link=static -sNO_BZIP2=1 -sNO_ZLIB=1
|
||||
$(package)_config_opts_linux=threadapi=pthread runtime-link=shared
|
||||
$(package)_config_opts_darwin=--toolset=gcc threadapi=pthread runtime-link=shared
|
||||
$(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static
|
||||
@@ -21,7 +21,7 @@ $(package)_archiver_$(host_os)=$($(package)_ar)
|
||||
$(package)_toolset_darwin=gcc
|
||||
$(package)_archiver_darwin=$($(package)_ar)
|
||||
$(package)_config_libraries=chrono,filesystem,program_options,system,thread,test
|
||||
$(package)_cxxflags=-fvisibility=hidden
|
||||
$(package)_cxxflags=-std=c++11 -fvisibility=hidden
|
||||
$(package)_cxxflags_linux=-fPIC
|
||||
endef
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package=googletest
|
||||
$(package)_version=1.7.0
|
||||
$(package)_version=1.8.0
|
||||
$(package)_download_path=https://github.com/google/$(package)/archive/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_download_file=release-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=f73a6546fdf9fce9ff93a5015e0333a8af3062a152a9ad6bcb772c96687016cc
|
||||
$(package)_sha256_hash=58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8
|
||||
|
||||
ifeq ($(build_os),darwin)
|
||||
define $(package)_set_vars
|
||||
@@ -19,11 +19,15 @@ endef
|
||||
else
|
||||
$(package)_install=install
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -C make CXXFLAGS=-fPIC gtest.a
|
||||
$(MAKE) -C googlemock/make CXXFLAGS=-fPIC gmock.a && \
|
||||
$(MAKE) -C googletest/make CXXFLAGS=-fPIC gtest.a
|
||||
endef
|
||||
endif
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$($(package)_install) -D ./make/gtest.a $($(package)_staging_dir)$(host_prefix)/lib/libgtest.a && \
|
||||
cp -a ./include $($(package)_staging_dir)$(host_prefix)/include
|
||||
mkdir -p $($(package)_staging_dir)$(host_prefix)/lib && \
|
||||
install ./googlemock/make/gmock.a $($(package)_staging_dir)$(host_prefix)/lib/libgmock.a && \
|
||||
install ./googletest/make/gtest.a $($(package)_staging_dir)$(host_prefix)/lib/libgtest.a && \
|
||||
cp -a ./googlemock/include $($(package)_staging_dir)$(host_prefix)/ && \
|
||||
cp -a ./googletest/include $($(package)_staging_dir)$(host_prefix)/
|
||||
endef
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
package=libsodium
|
||||
$(package)_version=1.0.11
|
||||
$(package)_download_path=https://supernetorg.bintray.com/misc
|
||||
$(package)_file_name=libsodium-1.0.11.tar.gz
|
||||
$(package)_sha256_hash=a14549db3c49f6ae2170cbbf4664bd48ace50681045e8dbea7c8d9fb96f9c765
|
||||
#<<<<<<< HEAD
|
||||
#$(package)_version=1.0.11
|
||||
#$(package)_download_path=https://supernetorg.bintray.com/misc
|
||||
#$(package)_file_name=libsodium-1.0.11.tar.gz
|
||||
#$(package)_sha256_hash=a14549db3c49f6ae2170cbbf4664bd48ace50681045e8dbea7c8d9fb96f9c765
|
||||
#=======
|
||||
$(package)_version=1.0.15
|
||||
$(package)_download_path=https://download.libsodium.org/libsodium/releases/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4
|
||||
#>>>>>>> zcash/master
|
||||
$(package)_dependencies=
|
||||
$(package)_config_opts=
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
package=miniupnpc
|
||||
$(package)_version=2.0
|
||||
$(package)_download_path=http://miniupnp.free.fr/files
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=d434ceb8986efbe199c5ca53f90ed53eab290b1e6d0530b717eb6fa49d61f93b
|
||||
$(package)_patches=fix-solaris-compilation.patch strlen-before-memcmp.patch patch-strlen-patch.patch
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_build_opts=CC="$($(package)_cc)"
|
||||
$(package)_build_opts_darwin=OS=Darwin
|
||||
$(package)_build_opts_mingw32=-f Makefile.mingw
|
||||
$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)"
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
mkdir dll && \
|
||||
sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \
|
||||
sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw && \
|
||||
patch -p2 < $($(package)_patch_dir)/fix-solaris-compilation.patch && \
|
||||
patch -p2 < $($(package)_patch_dir)/strlen-before-memcmp.patch && \
|
||||
patch -p2 < $($(package)_patch_dir)/patch-strlen-patch.patch
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) libminiupnpc.a $($(package)_build_opts)
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\
|
||||
install *.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\
|
||||
install libminiupnpc.a $($(package)_staging_prefix_dir)/lib
|
||||
endef
|
||||
@@ -85,6 +85,7 @@ $(package)_config_opts_arm_linux=linux-generic32
|
||||
$(package)_config_opts_aarch64_linux=linux-generic64
|
||||
$(package)_config_opts_mipsel_linux=linux-generic32
|
||||
$(package)_config_opts_mips_linux=linux-generic32
|
||||
$(package)_config_opts_powerpc_linux=linux-generic32
|
||||
$(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc
|
||||
$(package)_config_opts_x86_64_mingw32=mingw64
|
||||
$(package)_config_opts_i686_mingw32=mingw
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
rust_packages := rust librustzcash
|
||||
zcash_packages := libsnark libgmp libsodium
|
||||
|
||||
proton_packages := proton
|
||||
zcash_packages := libgmp libsodium
|
||||
ifeq ($(host_os),linux)
|
||||
packages := boost openssl libevent zeromq $(zcash_packages) googletest googlemock
|
||||
packages := boost openssl libevent zeromq $(zcash_packages) #googletest googlemock
|
||||
else
|
||||
packages := boost openssl libevent zeromq $(zcash_packages) googletest googlemock libcurl
|
||||
packages := boost openssl libevent zeromq $(zcash_packages) libcurl # googletest googlemock libcurl
|
||||
endif
|
||||
|
||||
|
||||
native_packages := native_ccache
|
||||
|
||||
wallet_packages=bdb
|
||||
|
||||
upnp_packages=miniupnpc
|
||||
|
||||
24
depends/packages/proton.mk
Normal file
24
depends/packages/proton.mk
Normal file
@@ -0,0 +1,24 @@
|
||||
package=proton
|
||||
$(package)_version=0.17.0
|
||||
$(package)_download_path=http://apache.cs.utah.edu/qpid/proton/$($(package)_version)
|
||||
$(package)_file_name=qpid-proton-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=6ffd26d3d0e495bfdb5d9fefc5349954e6105ea18cc4bb191161d27742c5a01a
|
||||
$(package)_patches=minimal-build.patch
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/minimal-build.patch && \
|
||||
mkdir -p build/proton-c/src
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
cd build; cmake .. -DCMAKE_CXX_STANDARD=11 -DCMAKE_INSTALL_PREFIX=/ -DSYSINSTALL_BINDINGS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_PYTHON=OFF -DBUILD_PHP=OFF -DBUILD_JAVA=OFF -DBUILD_PERL=OFF -DBUILD_RUBY=OFF -DBUILD_JAVASCRIPT=OFF -DBUILD_GO=OFF
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
cd build; $(MAKE) VERBOSE=1
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
cd build; $(MAKE) VERBOSE=1 DESTDIR=$($(package)_staging_prefix_dir) install
|
||||
endef
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
package=rust
|
||||
$(package)_version=1.16.0
|
||||
$(package)_download_path=https://static.rust-lang.org/dist
|
||||
ifeq ($(build_os),darwin)
|
||||
$(package)_file_name=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz
|
||||
$(package)_sha256_hash=2d08259ee038d3a2c77a93f1a31fc59e7a1d6d1bbfcba3dba3c8213b2e5d1926
|
||||
else ifeq ($(host_os),mingw32)
|
||||
$(package)_file_name=rust-$($(package)_version)-i686-unknown-linux-gnu.tar.gz
|
||||
$(package)_sha256_hash=b5859161ebb182d3b75fa14a5741e5de87b088146fb0ef4a30f3b2439c6179c5
|
||||
else
|
||||
$(package)_file_name=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz
|
||||
$(package)_sha256_hash=48621912c242753ba37cad5145df375eeba41c81079df46f93ffb4896542e8fd
|
||||
endif
|
||||
#<<<<<<< HEAD
|
||||
#ifeq ($(build_os),darwin)
|
||||
#$(package)_file_name=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz
|
||||
#$(package)_sha256_hash=2d08259ee038d3a2c77a93f1a31fc59e7a1d6d1bbfcba3dba3c8213b2e5d1926
|
||||
#else ifeq ($(host_os),mingw32)
|
||||
#$(package)_file_name=rust-$($(package)_version)-i686-unknown-linux-gnu.tar.gz
|
||||
#$(package)_sha256_hash=b5859161ebb182d3b75fa14a5741e5de87b088146fb0ef4a30f3b2439c6179c5
|
||||
#else
|
||||
#$(package)_file_name=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz
|
||||
#$(package)_sha256_hash=48621912c242753ba37cad5145df375eeba41c81079df46f93ffb4896542e8fd
|
||||
#endif
|
||||
#=======
|
||||
$(package)_file_name_linux=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz
|
||||
$(package)_sha256_hash_linux=48621912c242753ba37cad5145df375eeba41c81079df46f93ffb4896542e8fd
|
||||
$(package)_file_name_darwin=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz
|
||||
$(package)_sha256_hash_darwin=2d08259ee038d3a2c77a93f1a31fc59e7a1d6d1bbfcba3dba3c8213b2e5d1926
|
||||
#>>>>>>> zcash/master
|
||||
|
||||
define $(package)_stage_cmds
|
||||
./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig
|
||||
|
||||
@@ -22,6 +22,7 @@ $(package)_sha256_hash=27d1e82a099228ee85a7ddb2260f40830212402c605a4a10b5e5498a7
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--without-documentation --disable-shared --disable-curve
|
||||
$(package)_config_opts_linux=--with-pic
|
||||
$(package)_cxxflags=-std=c++11
|
||||
endef
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
From 71ce1d6dfa5424f8fe8633e23494c7638ea2c79e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Bernard <miniupnp@free.fr>
|
||||
Date: Thu, 10 Nov 2016 21:55:33 +0100
|
||||
Subject: [PATCH] fix for Solaris 11 compilation
|
||||
|
||||
see #216
|
||||
---
|
||||
miniupnpc/Makefile | 2 ++
|
||||
miniupnpc/minissdpc.c | 3 +++
|
||||
2 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/miniupnpc/Makefile b/miniupnpc/Makefile
|
||||
index 5c23000..72cdc0f 100644
|
||||
--- a/miniupnpc/Makefile
|
||||
+++ b/miniupnpc/Makefile
|
||||
@@ -43,10 +43,12 @@ CFLAGS += -D_NETBSD_SOURCE
|
||||
endif
|
||||
ifneq ($(OS), FreeBSD)
|
||||
ifneq ($(OS), Darwin)
|
||||
+ifneq ($(OS), SunOS)
|
||||
#CFLAGS += -D_POSIX_C_SOURCE=200112L
|
||||
CFLAGS += -D_XOPEN_SOURCE=600
|
||||
endif
|
||||
endif
|
||||
+endif
|
||||
#CFLAGS += -ansi
|
||||
# -DNO_GETADDRINFO
|
||||
INSTALL = install
|
||||
diff --git a/miniupnpc/minissdpc.c b/miniupnpc/minissdpc.c
|
||||
index f200f07..263160e 100644
|
||||
--- a/miniupnpc/minissdpc.c
|
||||
+++ b/miniupnpc/minissdpc.c
|
||||
@@ -73,6 +73,9 @@ struct sockaddr_un {
|
||||
|
||||
#if !defined(HAS_IP_MREQN) && !defined(_WIN32)
|
||||
#include <sys/ioctl.h>
|
||||
+#if defined(__sun)
|
||||
+#include <sys/sockio.h>
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#if defined(HAS_IP_MREQN) && defined(NEED_STRUCT_IP_MREQN)
|
||||
@@ -1,22 +0,0 @@
|
||||
From 0aa7c46227acd8ddb135c577674ad454bf2fba86 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Bernard <miniupnp@free.fr>
|
||||
Date: Fri, 11 Nov 2016 17:53:21 +0100
|
||||
Subject: [PATCH] remove unsigned/signed comparison
|
||||
|
||||
---
|
||||
miniupnpc/portlistingparse.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/miniupnpc/portlistingparse.c b/miniupnpc/portlistingparse.c
|
||||
index 1bed763..07f3f87 100644
|
||||
--- a/miniupnpc/portlistingparse.c
|
||||
+++ b/miniupnpc/portlistingparse.c
|
||||
@@ -55,7 +55,7 @@ startelt(void * d, const char * name, int l)
|
||||
pdata->curelt = PortMappingEltNone;
|
||||
for(i = 0; elements[i].str; i++)
|
||||
{
|
||||
- if(strlen(elements[i].str) == l && memcmp(name, elements[i].str, l) == 0)
|
||||
+ if(strlen(elements[i].str) == (size_t)l && memcmp(name, elements[i].str, l) == 0)
|
||||
{
|
||||
pdata->curelt = elements[i].code;
|
||||
break;
|
||||
@@ -1,23 +0,0 @@
|
||||
From ec1c49bb0cd5e448e6f0adee7de3a831c4869bdd Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Bernard <miniupnp@free.fr>
|
||||
Date: Fri, 11 Nov 2016 17:24:39 +0100
|
||||
Subject: [PATCH] check strlen before memcmp
|
||||
|
||||
1st try to fix #220
|
||||
---
|
||||
miniupnpc/portlistingparse.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/miniupnpc/portlistingparse.c b/miniupnpc/portlistingparse.c
|
||||
index 0e09278..1bed763 100644
|
||||
--- a/miniupnpc/portlistingparse.c
|
||||
+++ b/miniupnpc/portlistingparse.c
|
||||
@@ -55,7 +55,7 @@ startelt(void * d, const char * name, int l)
|
||||
pdata->curelt = PortMappingEltNone;
|
||||
for(i = 0; elements[i].str; i++)
|
||||
{
|
||||
- if(memcmp(name, elements[i].str, l) == 0)
|
||||
+ if(strlen(elements[i].str) == l && memcmp(name, elements[i].str, l) == 0)
|
||||
{
|
||||
pdata->curelt = elements[i].code;
|
||||
break;
|
||||
288
depends/patches/proton/minimal-build.patch
Normal file
288
depends/patches/proton/minimal-build.patch
Normal file
@@ -0,0 +1,288 @@
|
||||
From 03f5fc0826115edbfca468261b70c0daf627f488 Mon Sep 17 00:00:00 2001
|
||||
From: Simon <simon@bitcartel.com>
|
||||
Date: Thu, 27 Apr 2017 17:15:59 -0700
|
||||
Subject: [PATCH] Enable C++11, build static library and cpp bindings with minimal dependencies.
|
||||
|
||||
---
|
||||
CMakeLists.txt | 13 +++++++------
|
||||
examples/cpp/CMakeLists.txt | 1 +
|
||||
proton-c/CMakeLists.txt | 32 +++++++++++++++----------------
|
||||
proton-c/bindings/CMakeLists.txt | 6 +++---
|
||||
proton-c/bindings/cpp/CMakeLists.txt | 24 +++++++++++------------
|
||||
proton-c/bindings/cpp/docs/CMakeLists.txt | 2 +-
|
||||
proton-c/docs/api/CMakeLists.txt | 2 +-
|
||||
7 files changed, 41 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index b538ffd..4a5e787 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -18,14 +18,15 @@
|
||||
#
|
||||
cmake_minimum_required (VERSION 2.8.7)
|
||||
|
||||
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
project (Proton C)
|
||||
|
||||
# Enable C++ now for examples and bindings subdirectories, but make it optional.
|
||||
enable_language(CXX OPTIONAL)
|
||||
|
||||
# Enable testing
|
||||
-enable_testing()
|
||||
-include (CTest)
|
||||
+#enable_testing()
|
||||
+#include (CTest)
|
||||
|
||||
# Pull in local cmake modules
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/tools/cmake/Modules/")
|
||||
@@ -141,7 +142,7 @@ set (BINDINGS_DIR ${LIB_INSTALL_DIR}/proton/bindings)
|
||||
|
||||
set (SYSINSTALL_BINDINGS OFF CACHE BOOL "If SYSINSTALL_BINDINGS is OFF then proton bindings will be installed underneath ${BINDINGS_DIR} and each user will need to modify their interpreter configuration to load the appropriate binding. If SYSINSTALL_BINDINGS is ON, then each language interpreter will be queried for the appropriate directory and proton bindings will be installed and available system wide with no additional per user configuration.")
|
||||
|
||||
-set (BINDING_LANGS PERL PHP PYTHON RUBY)
|
||||
+#set (BINDING_LANGS PERL PHP PYTHON RUBY)
|
||||
|
||||
foreach (LANG ${BINDING_LANGS})
|
||||
set (SYSINSTALL_${LANG} OFF CACHE BOOL "Install ${LANG} bindings into interpreter specified location.")
|
||||
@@ -156,10 +157,10 @@ set (PROTON_SHARE ${SHARE_INSTALL_DIR}/proton-${PN_VERSION})
|
||||
# End of variables used during install
|
||||
|
||||
# Check for valgrind here so tests under proton-c/ and examples/ can use it.
|
||||
-find_program(VALGRIND_EXE valgrind DOC "Location of the valgrind program")
|
||||
+#find_program(VALGRIND_EXE valgrind DOC "Location of the valgrind program")
|
||||
mark_as_advanced (VALGRIND_EXE)
|
||||
|
||||
-option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
|
||||
+#option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
|
||||
if (ENABLE_VALGRIND)
|
||||
if (NOT VALGRIND_EXE)
|
||||
message(STATUS "Can't locate the valgrind command; no run-time error detection")
|
||||
@@ -171,7 +172,7 @@ if (ENABLE_VALGRIND)
|
||||
endif (ENABLE_VALGRIND)
|
||||
|
||||
add_subdirectory(proton-c)
|
||||
-add_subdirectory(examples)
|
||||
+#add_subdirectory(examples)
|
||||
|
||||
install (FILES LICENSE README.md
|
||||
DESTINATION ${PROTON_SHARE})
|
||||
diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt
|
||||
index 304d899..f4877b4 100644
|
||||
--- a/examples/cpp/CMakeLists.txt
|
||||
+++ b/examples/cpp/CMakeLists.txt
|
||||
@@ -17,6 +17,7 @@
|
||||
# under the License.
|
||||
#
|
||||
|
||||
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
find_package(ProtonCpp REQUIRED)
|
||||
|
||||
include_directories(${ProtonCpp_INCLUDE_DIRS})
|
||||
diff --git a/proton-c/CMakeLists.txt b/proton-c/CMakeLists.txt
|
||||
index 8edb661..dc7b99c 100644
|
||||
--- a/proton-c/CMakeLists.txt
|
||||
+++ b/proton-c/CMakeLists.txt
|
||||
@@ -22,24 +22,24 @@ include(CheckSymbolExists)
|
||||
|
||||
include(soversion.cmake)
|
||||
|
||||
-add_custom_target(docs)
|
||||
-add_custom_target(doc DEPENDS docs)
|
||||
+#add_custom_target(docs)
|
||||
+#add_custom_target(doc DEPENDS docs)
|
||||
|
||||
# Set the default SSL/TLS implementation
|
||||
-find_package(OpenSSL)
|
||||
+#find_package(OpenSSL)
|
||||
find_package(PythonInterp REQUIRED)
|
||||
-find_package(SWIG)
|
||||
+#find_package(SWIG)
|
||||
# FindSwig.cmake "forgets" make its outputs advanced like a good citizen
|
||||
mark_as_advanced(SWIG_DIR SWIG_EXECUTABLE SWIG_VERSION)
|
||||
|
||||
# See if Cyrus SASL is available
|
||||
-find_library(CYRUS_SASL_LIBRARY sasl2)
|
||||
-find_path(CYRUS_SASL_INCLUDE_DIR sasl/sasl.h PATH_SUFFIXES include)
|
||||
-find_package_handle_standard_args(CyrusSASL DEFAULT_MSG CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR)
|
||||
+#find_library(CYRUS_SASL_LIBRARY sasl2)
|
||||
+#find_path(CYRUS_SASL_INCLUDE_DIR sasl/sasl.h PATH_SUFFIXES include)
|
||||
+#find_package_handle_standard_args(CyrusSASL DEFAULT_MSG CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR)
|
||||
mark_as_advanced(CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR)
|
||||
|
||||
# Find saslpasswd2 executable to generate test config
|
||||
-find_program(SASLPASSWD_EXE saslpasswd2 DOC "Program used to make SASL user db for testing")
|
||||
+#find_program(SASLPASSWD_EXE saslpasswd2 DOC "Program used to make SASL user db for testing")
|
||||
mark_as_advanced(SASLPASSWD_EXE)
|
||||
|
||||
if(WIN32 AND NOT CYGWIN)
|
||||
@@ -315,8 +315,8 @@ pn_absolute_install_dir(EXEC_PREFIX "." ${CMAKE_INSTALL_PREFIX})
|
||||
pn_absolute_install_dir(LIBDIR ${LIB_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX})
|
||||
pn_absolute_install_dir(INCLUDEDIR ${INCLUDE_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
-add_subdirectory(docs/api)
|
||||
-add_subdirectory(../tests/tools/apps/c ../tests/tools/apps/c)
|
||||
+#add_subdirectory(docs/api)
|
||||
+#add_subdirectory(../tests/tools/apps/c ../tests/tools/apps/c)
|
||||
|
||||
# for full source distribution:
|
||||
set (qpid-proton-platform-all
|
||||
@@ -507,7 +507,7 @@ if (BUILD_WITH_CXX)
|
||||
endif (BUILD_WITH_CXX)
|
||||
|
||||
add_library (
|
||||
- qpid-proton-core SHARED
|
||||
+ qpid-proton-core STATIC
|
||||
${qpid-proton-core}
|
||||
${qpid-proton-layers}
|
||||
${qpid-proton-platform}
|
||||
@@ -527,7 +527,7 @@ set_target_properties (
|
||||
)
|
||||
|
||||
add_library(
|
||||
- qpid-proton SHARED
|
||||
+ qpid-proton STATIC
|
||||
# Proton Core
|
||||
${qpid-proton-core}
|
||||
${qpid-proton-layers}
|
||||
@@ -629,7 +629,7 @@ install (FILES
|
||||
|
||||
# c tests:
|
||||
|
||||
-add_subdirectory(src/tests)
|
||||
+#add_subdirectory(src/tests)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL Windows)
|
||||
# No change needed for windows already use correct separator
|
||||
@@ -712,7 +712,7 @@ if (BUILD_PYTHON)
|
||||
|
||||
endif (BUILD_PYTHON)
|
||||
|
||||
-find_program(RUBY_EXE "ruby")
|
||||
+#find_program(RUBY_EXE "ruby")
|
||||
if (RUBY_EXE AND BUILD_RUBY)
|
||||
set (rb_root "${pn_test_root}/ruby")
|
||||
set (rb_src "${CMAKE_CURRENT_SOURCE_DIR}/bindings/ruby")
|
||||
@@ -751,8 +751,8 @@ if (RUBY_EXE AND BUILD_RUBY)
|
||||
else (DEFAULT_RUBY_TESTING)
|
||||
message(STATUS "Skipping Ruby tests: missing dependencies")
|
||||
endif (DEFAULT_RUBY_TESTING)
|
||||
-else (RUBY_EXE)
|
||||
- message (STATUS "Cannot find ruby, skipping ruby tests")
|
||||
+#else (RUBY_EXE)
|
||||
+# message (STATUS "Cannot find ruby, skipping ruby tests")
|
||||
endif()
|
||||
|
||||
mark_as_advanced (RUBY_EXE RSPEC_EXE)
|
||||
diff --git a/proton-c/bindings/CMakeLists.txt b/proton-c/bindings/CMakeLists.txt
|
||||
index 6b88384..d1a50a5 100644
|
||||
--- a/proton-c/bindings/CMakeLists.txt
|
||||
+++ b/proton-c/bindings/CMakeLists.txt
|
||||
@@ -19,14 +19,14 @@
|
||||
|
||||
# Add bindings that do not require swig here - the directory name must be the same as the binding name
|
||||
# See below for swig bindings
|
||||
-set(BINDINGS javascript cpp go)
|
||||
+set(BINDINGS cpp)
|
||||
|
||||
# Prerequisites for javascript.
|
||||
#
|
||||
# It uses a C/C++ to JavaScript cross-compiler called emscripten (https://github.com/kripken/emscripten). Emscripten takes C/C++
|
||||
# and compiles it into a highly optimisable subset of JavaScript called asm.js (http://asmjs.org/) that can be
|
||||
# aggressively optimised and run at near-native speed (usually between 1.5 to 10 times slower than native C/C++).
|
||||
-find_package(Emscripten)
|
||||
+#find_package(Emscripten)
|
||||
if (EMSCRIPTEN_FOUND)
|
||||
set (DEFAULT_JAVASCRIPT ON)
|
||||
endif (EMSCRIPTEN_FOUND)
|
||||
@@ -37,7 +37,7 @@ if (CMAKE_CXX_COMPILER)
|
||||
endif (CMAKE_CXX_COMPILER)
|
||||
|
||||
# Prerequisites for Go
|
||||
-find_program(GO_EXE go)
|
||||
+#find_program(GO_EXE go)
|
||||
mark_as_advanced(GO_EXE)
|
||||
if (GO_EXE)
|
||||
if(WIN32)
|
||||
diff --git a/proton-c/bindings/cpp/CMakeLists.txt b/proton-c/bindings/cpp/CMakeLists.txt
|
||||
index 0cc4024..796fe29 100644
|
||||
--- a/proton-c/bindings/cpp/CMakeLists.txt
|
||||
+++ b/proton-c/bindings/cpp/CMakeLists.txt
|
||||
@@ -16,7 +16,7 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
-
|
||||
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
include(cpp.cmake) # Compiler checks
|
||||
|
||||
include_directories(
|
||||
@@ -89,7 +89,7 @@ set_source_files_properties (
|
||||
COMPILE_FLAGS "${LTO}"
|
||||
)
|
||||
|
||||
-add_library(qpid-proton-cpp SHARED ${qpid-proton-cpp-source})
|
||||
+add_library(qpid-proton-cpp STATIC ${qpid-proton-cpp-source})
|
||||
|
||||
target_link_libraries (qpid-proton-cpp ${PLATFORM_LIBS} qpid-proton)
|
||||
|
||||
@@ -120,8 +120,8 @@ endif (MSVC)
|
||||
|
||||
install (DIRECTORY "include/proton" DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.hpp")
|
||||
|
||||
-add_subdirectory(docs)
|
||||
-add_subdirectory(${CMAKE_SOURCE_DIR}/tests/tools/apps/cpp ${CMAKE_BINARY_DIR}/tests/tools/apps/cpp)
|
||||
+#add_subdirectory(docs)
|
||||
+#add_subdirectory(${CMAKE_SOURCE_DIR}/tests/tools/apps/cpp ${CMAKE_BINARY_DIR}/tests/tools/apps/cpp)
|
||||
|
||||
# Pkg config file
|
||||
configure_file(
|
||||
@@ -171,12 +171,12 @@ macro(add_cpp_test test)
|
||||
endif ()
|
||||
endmacro(add_cpp_test)
|
||||
|
||||
-add_cpp_test(codec_test)
|
||||
+#add_cpp_test(codec_test)
|
||||
#add_cpp_test(engine_test)
|
||||
-add_cpp_test(thread_safe_test)
|
||||
-add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests)
|
||||
-add_cpp_test(message_test)
|
||||
-add_cpp_test(scalar_test)
|
||||
-add_cpp_test(value_test)
|
||||
-add_cpp_test(container_test)
|
||||
-add_cpp_test(url_test)
|
||||
+#add_cpp_test(thread_safe_test)
|
||||
+#add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests)
|
||||
+#add_cpp_test(message_test)
|
||||
+#add_cpp_test(scalar_test)
|
||||
+#add_cpp_test(value_test)
|
||||
+#add_cpp_test(container_test)
|
||||
+#add_cpp_test(url_test)
|
||||
diff --git a/proton-c/bindings/cpp/docs/CMakeLists.txt b/proton-c/bindings/cpp/docs/CMakeLists.txt
|
||||
index d512d15..8576867 100644
|
||||
--- a/proton-c/bindings/cpp/docs/CMakeLists.txt
|
||||
+++ b/proton-c/bindings/cpp/docs/CMakeLists.txt
|
||||
@@ -17,7 +17,7 @@
|
||||
# under the License.
|
||||
#
|
||||
|
||||
-find_package(Doxygen)
|
||||
+#find_package(Doxygen)
|
||||
|
||||
if (DOXYGEN_FOUND)
|
||||
configure_file (
|
||||
diff --git a/proton-c/docs/api/CMakeLists.txt b/proton-c/docs/api/CMakeLists.txt
|
||||
index 7756e48..71ebb93 100644
|
||||
--- a/proton-c/docs/api/CMakeLists.txt
|
||||
+++ b/proton-c/docs/api/CMakeLists.txt
|
||||
@@ -17,7 +17,7 @@
|
||||
# under the License.
|
||||
#
|
||||
|
||||
-find_package(Doxygen)
|
||||
+#find_package(Doxygen)
|
||||
if (DOXYGEN_FOUND)
|
||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/user.doxygen.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/user.doxygen)
|
||||
--
|
||||
2.7.4
|
||||
|
||||
123
doc/amqp.md
Normal file
123
doc/amqp.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# Block and Transaction Broadcasting With AMQP 1.0 (Experimental Feature)
|
||||
|
||||
[AMQP](https://www.amqp.org/) is an enterprise-level message queuing
|
||||
protocol for the reliable passing of real-time data and business
|
||||
transactions between applications. AMQP supports both broker and
|
||||
brokerless messaging. AMQP 1.0 is an open standard and has been
|
||||
ratified as ISO/IEC 19464.
|
||||
|
||||
The Zcash daemon can be configured to act as a trusted "border
|
||||
router", implementing the Zcash P2P protocol and relay, making
|
||||
consensus decisions, maintaining the local blockchain database,
|
||||
broadcasting locally generated transactions into the network, and
|
||||
providing a queryable RPC interface to interact on a polled basis for
|
||||
requesting blockchain related data. However, there exists only a
|
||||
limited service to notify external software of events like the arrival
|
||||
of new blocks or transactions.
|
||||
|
||||
The AMQP facility implements a notification interface through a set
|
||||
of specific notifiers. Currently there are notifiers that publish
|
||||
blocks and transactions. This read-only facility requires only the
|
||||
connection of a corresponding AMQP subscriber port in receiving
|
||||
software.
|
||||
|
||||
Currently the facility is not authenticated nor is there any two-way
|
||||
protocol involvement. Therefore, subscribers should validate the
|
||||
received data since it may be out of date, incomplete or even invalid.
|
||||
|
||||
Because AMQP is message oriented, subscribers receive transactions
|
||||
and blocks all-at-once and do not need to implement any sort of
|
||||
buffering or reassembly.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
The AMQP feature in Zcash requires [Qpid Proton](https://qpid.apache.org/proton/)
|
||||
version 0.17 or newer, which you will need to install if you are not
|
||||
using the depends system. Typically, it is packaged by distributions as
|
||||
something like *libqpid-proton*. The C++ wrapper for AMQP *is* required.
|
||||
|
||||
In order to run the example Python client scripts in contrib/ one must
|
||||
also install *python-qpid-proton*, though this is not necessary for
|
||||
daemon operation.
|
||||
|
||||
## Enabling
|
||||
|
||||
By default, the AMQP feature is automatically compiled in if the
|
||||
necessary prerequisites are found. To disable, use --disable-proton
|
||||
during the *configure* step of building zcashd:
|
||||
|
||||
$ ./configure --disable-proton (other options)
|
||||
|
||||
To actually enable operation, one must set the appropriate options on
|
||||
the commandline or in the configuration file.
|
||||
|
||||
## Usage
|
||||
|
||||
AMQP support is currently an experimental feature, so you must pass
|
||||
the option:
|
||||
|
||||
-experimentalfeatures
|
||||
|
||||
Currently, the following notifications are supported:
|
||||
|
||||
-amqppubhashtx=address
|
||||
-amqppubhashblock=address
|
||||
-amqppubrawblock=address
|
||||
-amqppubrawtx=address
|
||||
|
||||
The address must be a valid AMQP address, where the same address can be
|
||||
used in more than notification. Note that SSL and SASL addresses are
|
||||
not currently supported.
|
||||
|
||||
Launch zcashd like this:
|
||||
|
||||
$ zcashd -amqppubhashtx=amqp://127.0.0.1:5672
|
||||
|
||||
Or this:
|
||||
|
||||
$ zcashd -amqppubhashtx=amqp://127.0.0.1:5672 \
|
||||
-amqppubrawtx=amqp://127.0.0.1:5672 \
|
||||
-amqppubrawblock=amqp://127.0.0.1:5672 \
|
||||
-amqppubhashblock=amqp://127.0.0.1:5672 \
|
||||
-debug=amqp
|
||||
|
||||
The debug category `amqp` enables AMQP-related logging.
|
||||
|
||||
Each notification has a topic and body, where the header corresponds
|
||||
to the notification type. For instance, for the notification `-amqpubhashtx`
|
||||
the topic is `hashtx` (no null terminator) and the body is the hexadecimal
|
||||
transaction hash (32 bytes). This transaction hash and the block hash
|
||||
found in `hashblock` are in RPC byte order.
|
||||
|
||||
These options can also be provided in zcash.conf.
|
||||
|
||||
Please see `contrib/amqp/amqp_sub.py` for a working example of an
|
||||
AMQP server listening for messages.
|
||||
|
||||
## Remarks
|
||||
|
||||
From the perspective of zcashd, the local end of an AMQP link is write-only.
|
||||
|
||||
No information is broadcast that wasn't already received from the public
|
||||
P2P network.
|
||||
|
||||
No authentication or authorization is done on peers that zcashd connects
|
||||
to; it is assumed that the AMQP link is exposed only to trusted entities,
|
||||
using other means such as firewalling.
|
||||
|
||||
TLS support may be added once OpenSSL has been removed from the Zcash
|
||||
project and alternative TLS implementations have been evaluated.
|
||||
|
||||
SASL support may be added in a future update for secure communication.
|
||||
|
||||
Note that when the block chain tip changes, a reorganisation may occur
|
||||
and just the tip will be notified. It is up to the subscriber to
|
||||
retrieve the chain from the last known block to the new tip.
|
||||
|
||||
At present, zcashd does not try to resend a notification if there was
|
||||
a problem confirming receipt. Support for delivery guarantees such as
|
||||
*at-least-once* and *exactly-once* will be added in in a future update.
|
||||
|
||||
Currently, zcashd appends an up-counting sequence number to each notification
|
||||
which allows listeners to detect lost notifications.
|
||||
|
||||
@@ -1,68 +1,93 @@
|
||||
Zcash Contributors
|
||||
==================
|
||||
|
||||
Jack Grigg (392)
|
||||
Simon Liu (254)
|
||||
Sean Bowe (185)
|
||||
Daira Hopwood (80)
|
||||
Jack Grigg (601)
|
||||
Simon Liu (297)
|
||||
Sean Bowe (193)
|
||||
Daira Hopwood (102)
|
||||
Wladimir J. van der Laan (71)
|
||||
Taylor Hornby (65)
|
||||
Wladimir J. van der Laan (58)
|
||||
Jonas Schnelli (48)
|
||||
Jay Graber (47)
|
||||
Jay Graber (61)
|
||||
Nathan Wilcox (56)
|
||||
Jonas Schnelli (49)
|
||||
Kevin Gallagher (38)
|
||||
Cory Fields (15)
|
||||
Pieter Wuille (14)
|
||||
Nathan Wilcox (10)
|
||||
Cory Fields (30)
|
||||
Pieter Wuille (24)
|
||||
syd (15)
|
||||
nomnombtc (9)
|
||||
fanquake (5)
|
||||
Paige Peterson (5)
|
||||
MarcoFalke (5)
|
||||
Paige Peterson (9)
|
||||
Matt Corallo (9)
|
||||
fanquake (8)
|
||||
MarcoFalke (7)
|
||||
Luke Dashjr (6)
|
||||
Johnathan Corgan (5)
|
||||
Gregory Maxwell (5)
|
||||
Ariel Gabizon (5)
|
||||
kozyilmaz (4)
|
||||
Philip Kaufmann (4)
|
||||
Peter Todd (4)
|
||||
Patrick Strateman (4)
|
||||
Matt Corallo (4)
|
||||
Karl-Johan Alm (4)
|
||||
Jorge Timón (4)
|
||||
Jeff Garzik (4)
|
||||
David Mercer (4)
|
||||
Daniel Cousens (4)
|
||||
lpescher (3)
|
||||
Suhas Daftuar (3)
|
||||
Pavel Janík (3)
|
||||
João Barbosa (3)
|
||||
Ariel (3)
|
||||
Alfie John (3)
|
||||
str4d (2)
|
||||
paveljanik (2)
|
||||
kpcyrd (2)
|
||||
aniemerg (2)
|
||||
Scott (2)
|
||||
Robert C. Seacord (2)
|
||||
Luke Dashjr (2)
|
||||
João Barbosa (2)
|
||||
Per Grön (2)
|
||||
Pavel Vasin (2)
|
||||
Joe Turgeon (2)
|
||||
Jason Davies (2)
|
||||
Jack Gavigan (2)
|
||||
ITH4Coinomia (2)
|
||||
Gavin Andresen (2)
|
||||
Daniel Kraft (2)
|
||||
Bjorn Hjortsberg (2)
|
||||
Amgad Abdelhafez (2)
|
||||
zathras-crypto (1)
|
||||
unsystemizer (1)
|
||||
practicalswift (1)
|
||||
mruddy (1)
|
||||
mrbandrews (1)
|
||||
kazcw (1)
|
||||
jc (1)
|
||||
isle2983 (1)
|
||||
instagibbs (1)
|
||||
emilrus (1)
|
||||
dexX7 (1)
|
||||
daniel (1)
|
||||
calebogden (1)
|
||||
ayleph (1)
|
||||
Tom Ritter (1)
|
||||
Stephen (1)
|
||||
S. Matthew English (1)
|
||||
Pavel Vasin (1)
|
||||
Ross Nicoll (1)
|
||||
René Nyffenegger (1)
|
||||
Paul Georgiou (1)
|
||||
Paragon Initiative Enterprises, LLC (1)
|
||||
Nicolas DORIER (1)
|
||||
Nathaniel Mahieu (1)
|
||||
Murilo Santana (1)
|
||||
Maxwell Gubler (1)
|
||||
Matt Quinn (1)
|
||||
Mark Friedenbach (1)
|
||||
Marius Kjærstad (1)
|
||||
Louis Nyffenegger (1)
|
||||
Leo Arias (1)
|
||||
Lars-Magnus Skog (1)
|
||||
Jorge Timón (1)
|
||||
Kevin Pan (1)
|
||||
Jonathan "Duke" Leto (1)
|
||||
Jonas Nick (1)
|
||||
Jeffrey Walton (1)
|
||||
Ian Kelling (1)
|
||||
Gaurav Rana (1)
|
||||
@@ -70,17 +95,23 @@ Forrest Voight (1)
|
||||
Florian Schmaus (1)
|
||||
Ethan Heilman (1)
|
||||
Eran Tromer (1)
|
||||
Daniel Kraft (1)
|
||||
Duke Leto (1)
|
||||
Christian von Roques (1)
|
||||
Chirag Davé (1)
|
||||
Casey Rodarmor (1)
|
||||
Cameron Boehmer (1)
|
||||
Bryan Stitt (1)
|
||||
Bruno Arueira (1)
|
||||
Boris Hajduk (1)
|
||||
Bob McElrath (1)
|
||||
Bitcoin Error Log (1)
|
||||
Ashley Holman (1)
|
||||
Anthony Towns (1)
|
||||
Allan Niemerg (1)
|
||||
Alex van der Peet (1)
|
||||
Alex Morcos (1)
|
||||
Alex (1)
|
||||
Adam Weiss (1)
|
||||
Adam Brown (1)
|
||||
4ZEC (1)
|
||||
21E14 (1)
|
||||
|
||||
74
doc/hotfix-process.md
Normal file
74
doc/hotfix-process.md
Normal file
@@ -0,0 +1,74 @@
|
||||
Hotfix Release Process
|
||||
======================
|
||||
|
||||
Hotfix releases are versioned by incrementing the build number of the latest
|
||||
release. For example:
|
||||
|
||||
First hotfix: v1.0.11 -> v1.0.11-1
|
||||
Second hotfix: v1.0.11-1 -> v1.0.11-2
|
||||
|
||||
In the commands below, <RELEASE> and <RELEASE_PREV> are prefixed with a v, ie.
|
||||
v1.0.11 (not 1.0.11).
|
||||
|
||||
## Create a hotfix branch
|
||||
|
||||
Create a hotfix branch from the previous release tag, and push it to the main
|
||||
repository:
|
||||
|
||||
$ git branch hotfix-<RELEASE> <RELEASE_PREV>
|
||||
$ git push 'git@github.com:zcash/zcash' hotfix-<RELEASE>
|
||||
|
||||
## Implement hotfix changes
|
||||
|
||||
Hotfix changes are implemented the same way as regular changes (developers work
|
||||
in separate branches per change, and push the branches to their own repositories),
|
||||
except that the branches are based on the hotfix branch instead of master:
|
||||
|
||||
$ git checkout hotfix-<RELEASE>
|
||||
$ git checkout -b <BRANCH_NAME>
|
||||
|
||||
## Merge hotfix PRs
|
||||
|
||||
Hotfix PRs are created like regular PRs, except using the hotfix branch as the
|
||||
base instead of master. Each PR should be reviewed as normal, and then the
|
||||
following process should be used to merge:
|
||||
|
||||
- A CI merge build is manually run by logging into the CI server, going to the
|
||||
pr-merge builder, clicking the "force" button, and entering the following
|
||||
values:
|
||||
|
||||
- Repository: https://github.com/<DevUser>/zcash
|
||||
- <DevUser> must be in the set of "safe" users as-specified in the CI
|
||||
config.
|
||||
- Branch: name of the hotfix PR branch (not the hotfix release branch).
|
||||
|
||||
- A link to the build and its result is manually added to the PR as a comment.
|
||||
|
||||
- If the build was successful, the PR is merged via the GitHub button.
|
||||
|
||||
## Release process
|
||||
|
||||
The majority of this process is identical to the standard release process.
|
||||
However, there are a few notable differences:
|
||||
|
||||
- When running the release script, use the `--hotfix` flag:
|
||||
|
||||
$ ./zcutil/make-release.py --hotfix <RELEASE> <RELEASE_PREV> <APPROX_RELEASE_HEIGHT>
|
||||
|
||||
- To review the automated changes in git:
|
||||
|
||||
$ git log hotfix-<RELEASE>..HEAD
|
||||
|
||||
- After the standard review process, use the hotfix merge process outlined above
|
||||
instead of the regular merge process.
|
||||
|
||||
- When making the tag, check out the hotfix branch instead of master.
|
||||
|
||||
## Post-release
|
||||
|
||||
Once the hotfix release has been created, a new PR should be opened for merging
|
||||
the hotfix release branch into master. This may require fixing merge conflicts
|
||||
(e.g. changing the version number in the hotfix branch to match master, if
|
||||
master is ahead). Such conflicts **MUST** be addressed with additional commits
|
||||
to the hotfix branch; specifically, the branch **MUST NOT** be rebased on
|
||||
master.
|
||||
@@ -1,12 +1,12 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
|
||||
.TH ZCASH-CLI "1" "March 2017" "zcash-cli v1.0.8" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH ZCASH-CLI "1" "February 2018" "zcash-cli v1.0.15" "User Commands"
|
||||
.SH NAME
|
||||
zcash-cli \- manual page for zcash-cli v1.0.8
|
||||
zcash-cli \- manual page for zcash-cli v1.0.15
|
||||
.SH DESCRIPTION
|
||||
Zcash RPC client version v1.0.8
|
||||
Zcash RPC client version v1.0.15
|
||||
.PP
|
||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/index.html>.
|
||||
please see <https://z.cash/support/security/>.
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
zcash\-cli [options] <command> [params]
|
||||
@@ -66,6 +66,10 @@ Password for JSON\-RPC connections
|
||||
Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
|
||||
900)
|
||||
.SH COPYRIGHT
|
||||
|
||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
||||
Copyright (C) 2009-2017 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2017 The Zcash Developers
|
||||
|
||||
@@ -76,4 +80,4 @@ or <http://www.opensource.org/licenses/mit-license.php>.
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
||||
by Eric Young and UPnP software written by Thomas Bernard.
|
||||
by Eric Young.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
|
||||
.TH ZCASH-TX "1" "March 2017" "zcash-tx v1.0.8" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH ZCASH-TX "1" "February 2018" "zcash-tx v1.0.15" "User Commands"
|
||||
.SH NAME
|
||||
zcash-tx \- manual page for zcash-tx v1.0.8
|
||||
zcash-tx \- manual page for zcash-tx v1.0.15
|
||||
.SH DESCRIPTION
|
||||
Zcash zcash\-tx utility version v1.0.8
|
||||
Zcash zcash\-tx utility version v1.0.15
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
zcash\-tx [options] <hex\-tx> [commands]
|
||||
@@ -68,7 +68,7 @@ outscript=VALUE:SCRIPT
|
||||
.IP
|
||||
Add raw script output to TX
|
||||
.IP
|
||||
sign=SIGHASH\-FLAGS
|
||||
sign=HEIGHT:SIGHASH\-FLAGS
|
||||
.IP
|
||||
Add zero or more signatures to transaction. This command requires JSON
|
||||
registers:prevtxs=JSON object, privatekeys=JSON object. See
|
||||
@@ -84,6 +84,10 @@ set=NAME:JSON\-STRING
|
||||
.IP
|
||||
Set register NAME to given JSON\-STRING
|
||||
.SH COPYRIGHT
|
||||
|
||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
||||
Copyright (C) 2009-2017 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2017 The Zcash Developers
|
||||
|
||||
@@ -94,4 +98,4 @@ or <http://www.opensource.org/licenses/mit-license.php>.
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
||||
by Eric Young and UPnP software written by Thomas Bernard.
|
||||
by Eric Young.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
|
||||
.TH ZCASHD "1" "March 2017" "zcashd v1.0.8" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH ZCASHD "1" "February 2018" "zcashd v1.0.15" "User Commands"
|
||||
.SH NAME
|
||||
zcashd \- manual page for zcashd v1.0.8
|
||||
zcashd \- manual page for zcashd v1.0.15
|
||||
.SH DESCRIPTION
|
||||
Zcash Daemon version v1.0.8
|
||||
Zcash Daemon version v1.0.15
|
||||
.PP
|
||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/index.html>.
|
||||
please see <https://z.cash/support/security/>.
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
zcashd [options]
|
||||
@@ -51,13 +51,18 @@ Run in the background as a daemon and accept commands
|
||||
.IP
|
||||
Specify data directory
|
||||
.HP
|
||||
\fB\-disabledeprecation=\fR<version>
|
||||
.IP
|
||||
Disable block\-height node deprecation and automatic shutdown (example:
|
||||
\fB\-disabledeprecation\fR=\fI\,1\/\fR.0.15)
|
||||
.HP
|
||||
\fB\-exportdir=\fR<dir>
|
||||
.IP
|
||||
Specify directory to be used when exporting data
|
||||
.HP
|
||||
\fB\-dbcache=\fR<n>
|
||||
.IP
|
||||
Set database cache size in megabytes (4 to 16384, default: 100)
|
||||
Set database cache size in megabytes (4 to 16384, default: 450)
|
||||
.HP
|
||||
\fB\-loadblock=\fR<file>
|
||||
.IP
|
||||
@@ -67,9 +72,14 @@ Imports blocks from external blk000??.dat file on startup
|
||||
.IP
|
||||
Keep at most <n> unconnectable transactions in memory (default: 100)
|
||||
.HP
|
||||
\fB\-mempooltxinputlimit=\fR<n>
|
||||
.IP
|
||||
Set the maximum number of transparent inputs in a transaction that the
|
||||
mempool will accept (default: 0 = no limit applied)
|
||||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 =
|
||||
Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
@@ -207,10 +217,6 @@ Tor control port to use if onion listening enabled (default:
|
||||
.IP
|
||||
Tor control port password (default: empty)
|
||||
.HP
|
||||
\fB\-upnp\fR
|
||||
.IP
|
||||
Use UPnP to map the listening port (default: 0)
|
||||
.HP
|
||||
\fB\-whitebind=\fR<addr>
|
||||
.IP
|
||||
Bind to given address and whitelist peers connecting to it. Use
|
||||
@@ -235,11 +241,11 @@ Set key pool size to <n> (default: 100)
|
||||
.HP
|
||||
\fB\-paytxfee=\fR<amt>
|
||||
.IP
|
||||
Fee (in BTC/kB) to add to transactions you send (default: 0.00)
|
||||
Fee (in ZEC/kB) to add to transactions you send (default: 0.00)
|
||||
.HP
|
||||
\fB\-rescan\fR
|
||||
.IP
|
||||
Rescan the blockchain for missing wallet transactions on startup
|
||||
Rescan the block chain for missing wallet transactions on startup
|
||||
.HP
|
||||
\fB\-salvagewallet\fR
|
||||
.IP
|
||||
@@ -258,10 +264,15 @@ Spend unconfirmed change when sending transactions (default: 1)
|
||||
If paytxfee is not set, include enough fee so transactions begin
|
||||
confirmation on average within n blocks (default: 2)
|
||||
.HP
|
||||
\fB\-txexpirydelta\fR
|
||||
.IP
|
||||
Set the number of blocks after which a transaction that has not been
|
||||
mined will become invalid (default: 20)
|
||||
.HP
|
||||
\fB\-maxtxfee=\fR<amt>
|
||||
.IP
|
||||
Maximum total fees to use in a single wallet transaction; setting this
|
||||
too low may abort large transactions (default: 0.10)
|
||||
Maximum total fees (in ZEC) to use in a single wallet transaction;
|
||||
setting this too low may abort large transactions (default: 0.10)
|
||||
.HP
|
||||
\fB\-upgradewallet\fR
|
||||
.IP
|
||||
@@ -333,7 +344,7 @@ Prepend debug output with timestamp (default: 1)
|
||||
.HP
|
||||
\fB\-minrelaytxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in BTC/Kb) smaller than this are considered zero fee for relaying
|
||||
Fees (in ZEC/kB) smaller than this are considered zero fee for relaying
|
||||
(default: 0.000001)
|
||||
.HP
|
||||
\fB\-printtoconsole\fR
|
||||
@@ -454,6 +465,10 @@ output (default: 1 if running in a console, 0 otherwise)
|
||||
Number of seconds between metrics refreshes (default: 1 if running in a
|
||||
console, 600 otherwise)
|
||||
.SH COPYRIGHT
|
||||
|
||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
||||
Copyright (C) 2009-2017 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2017 The Zcash Developers
|
||||
|
||||
@@ -464,4 +479,4 @@ or <http://www.opensource.org/licenses/mit-license.php>.
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
||||
by Eric Young and UPnP software written by Thomas Bernard.
|
||||
by Eric Young.
|
||||
|
||||
@@ -32,7 +32,7 @@ RPC calls by category:
|
||||
* Addresses : z_getnewaddress, z_listaddresses, z_validateaddress
|
||||
* Keys : z_exportkey, z_importkey, z_exportwallet, z_importwallet
|
||||
* Operation: z_getoperationresult, z_getoperationstatus, z_listoperationids
|
||||
* Payment : z_listreceivedbyaddress, z_sendmany
|
||||
* Payment : z_listreceivedbyaddress, z_sendmany, z_shieldcoinbase
|
||||
|
||||
RPC parameter conventions:
|
||||
|
||||
@@ -46,7 +46,7 @@ RPC parameter conventions:
|
||||
|
||||
Command | Parameters | Description
|
||||
--- | --- | ---
|
||||
z_getbalance<br>| address [minconf=1] | Returns the balance of a taddr or zaddr belonging to the node’s wallet.<br><br>Optionally set the minimum number of confirmations a private or transaction transaction must have in order to be included in the balance. Use 0 to count unconfirmed transactions.
|
||||
z_getbalance<br>| address [minconf=1] | Returns the balance of a taddr or zaddr belonging to the node’s wallet.<br><br>Optionally set the minimum number of confirmations a private or transparent transaction must have in order to be included in the balance. Use 0 to count unconfirmed transactions.
|
||||
z_gettotalbalance<br>| [minconf=1] | Return the total value of funds stored in the node’s wallet.<br><br>Optionally set the minimum number of confirmations a private or transparent transaction must have in order to be included in the balance. Use 0 to count unconfirmed transactions.<br><br>Output:<br>{<br>"transparent" : 1.23,<br>"private" : 4.56,<br>"total" : 5.79}
|
||||
|
||||
### Addresses
|
||||
@@ -55,7 +55,7 @@ Command | Parameters | Description
|
||||
--- | --- | ---
|
||||
z_getnewaddress | | Return a new zaddr for sending and receiving payments. The spending key for this zaddr will be added to the node’s wallet.<br><br>Output:<br>zN68D8hSs3...
|
||||
z_listaddresses | | Returns a list of all the zaddrs in this node’s wallet for which you have a spending key.<br><br>Output:<br>{ [“z123…”, “z456...”, “z789...”] }
|
||||
z_validateaddress | | Return information about a given zaddr.<br><br>Output:<br>{"isvalid" : true,<br>"address" : "zcWsmq...",<br>"payingkey" : "f5bb3c...",<br>"transmissionkey" : "7a58c7...",<br>"ismine" : true}
|
||||
z_validateaddress | zaddr | Return information about a given zaddr.<br><br>Output:<br>{"isvalid" : true,<br>"address" : "zcWsmq...",<br>"payingkey" : "f5bb3c...",<br>"transmissionkey" : "7a58c7...",<br>"ismine" : true}
|
||||
|
||||
### Key Management
|
||||
|
||||
@@ -71,7 +71,8 @@ z_importwallet | filename | _Requires an unlocked wallet or an unencrypted walle
|
||||
Command | Parameters | Description
|
||||
--- | --- | ---
|
||||
z_listreceivedbyaddress<br> | zaddr [minconf=1] | Return a list of amounts received by a zaddr belonging to the node’s wallet.<br><br>Optionally set the minimum number of confirmations which a received amount must have in order to be included in the result. Use 0 to count unconfirmed transactions.<br><br>Output:<br>[{<br>“txid”: “4a0f…”,<br>“amount”: 0.54,<br>“memo”:”F0FF…”,}, {...}, {...}<br>]
|
||||
z_sendmany<br> | fromaddress amounts [minconf=1] [fee=0.0001] | _This is an Asynchronous RPC call_<br><br>Send funds from an address to multiple outputs. The address can be either a taddr or a zaddr.<br><br>Amounts is a list containing key/value pairs corresponding to the addresses and amount to pay. Each output address can be in taddr or zaddr format.<br><br>When sending to a zaddr, you also have the option of attaching a memo in hexadecimal format.<br><br>**NOTE:**When sending coinbase funds to a zaddr, the node's wallet does not allow any change. Put another way, spending a partial amount of a coinbase utxo is not allowed. This is not a consensus rule but a local wallet rule due to the current implementation of z_sendmany. In future, this rule may be removed.<br><br>Example of Outputs parameter:<br>[{“address”:”t123…”, “amount”:0.005},<br>,{“address”:”z010…”,”amount”:0.03, “memo”:”f508af…”}]<br><br>Optionally set the minimum number of confirmations which a private or transparent transaction must have in order to be used as an input.<br><br>Optionally set a transaction fee, which by default is 0.0001 ZEC.<br><br>Any transparent change will be sent to a new transparent address. Any private change will be sent back to the zaddr being used as the source of funds.<br><br>Returns an operationid. You use the operationid value with z_getoperationstatus and z_getoperationresult to obtain the result of sending funds, which if successful, will be a txid.
|
||||
z_sendmany<br> | fromaddress amounts [minconf=1] [fee=0.0001] | _This is an Asynchronous RPC call_<br><br>Send funds from an address to multiple outputs. The address can be either a taddr or a zaddr.<br><br>Amounts is a list containing key/value pairs corresponding to the addresses and amount to pay. Each output address can be in taddr or zaddr format.<br><br>When sending to a zaddr, you also have the option of attaching a memo in hexadecimal format.<br><br>**NOTE:**When sending coinbase funds to a zaddr, the node's wallet does not allow any change. Put another way, spending a partial amount of a coinbase utxo is not allowed. This is not a consensus rule but a local wallet rule due to the current implementation of z_sendmany. In future, this rule may be removed.<br><br>Example of Outputs parameter:<br>[{“address”:”t123…”, “amount”:0.005},<br>,{“address”:”z010…”,”amount”:0.03, “memo”:”f508af…”}]<br><br>Optionally set the minimum number of confirmations which a private or transparent transaction must have in order to be used as an input. When sending from a zaddr, minconf must be greater than zero.<br><br>Optionally set a transaction fee, which by default is 0.0001 ZEC.<br><br>Any transparent change will be sent to a new transparent address. Any private change will be sent back to the zaddr being used as the source of funds.<br><br>Returns an operationid. You use the operationid value with z_getoperationstatus and z_getoperationresult to obtain the result of sending funds, which if successful, will be a txid.
|
||||
z_shieldcoinbase<br> | fromaddress toaddress [fee=0.0001] [limit=50] | _This is an Asynchronous RPC call_<br><br>Shield transparent coinbase funds by sending to a shielded z address. Utxos selected for shielding will be locked. If there is an error, they are unlocked. The RPC call `listlockunspent` can be used to return a list of locked utxos.<br><br>The number of coinbase utxos selected for shielding can be set with the limit parameter, which has a default value of 50. If the parameter is set to 0, the number of utxos selected is limited by the `-mempooltxinputlimit` option. Any limit is constrained by a consensus rule defining a maximum transaction size of 100000 bytes. <br><br>The from address is a taddr or "*" for all taddrs belonging to the wallet. The to address is a zaddr. The default fee is 0.0001.<br><br>Returns an object containing an operationid which can be used with z_getoperationstatus and z_getoperationresult, along with key-value pairs regarding how many utxos are being shielded in this transaction and what remains to be shielded.
|
||||
|
||||
### Operations
|
||||
|
||||
@@ -100,7 +101,7 @@ It is currently not possible to cancel operations.
|
||||
|
||||
Command | Parameters | Description
|
||||
--- | --- | ---
|
||||
z_getoperationresult <br>| [operationids] | Return OperationStatus JSON objects for all completed operations the node is currently aware of, and then remove the operation from memory.<br><br>Operationids is an optional array to filter which operations you want to receive status objects for.<br><br>Output is a list of operation status objects, where the status is either "failed", "cancelled" or "success".<br>[<br>{“operationid”: “opid-11ee…”,<br>“status”: “cancelled”},<br>{“operationid”: “opid-9876”, “status”: ”failed”},<br>{“operationid”: “opid-0e0e”,<br>“status”:”success”,<br>“execution_time”:”25”,<br>“result”: {“txid”:”af3887654…”,...}<br>},<br>]
|
||||
z_getoperationresult <br>| [operationids] | Return OperationStatus JSON objects for all completed operations the node is currently aware of, and then remove the operation from memory.<br><br>Operationids is an optional array to filter which operations you want to receive status objects for.<br><br>Output is a list of operation status objects, where the status is either "failed", "cancelled" or "success".<br>[<br>{“operationid”: “opid-11ee…”,<br>“status”: “cancelled”},<br>{“operationid”: “opid-9876”, “status”: ”failed”},<br>{“operationid”: “opid-0e0e”,<br>“status”:”success”,<br>“execution_time”:”25”,<br>“result”: {“txid”:”af3887654…”,...}<br>},<br>]<br><br> Examples:<br>zcash-cli z_getoperationresult '["opid-8120fa20-5ee7-4587-957b-f2579c2d882b"]'<br> zcash-cli z_getoperationresult
|
||||
z_getoperationstatus <br>| [operationids] | Return OperationStatus JSON objects for all operations the node is currently aware of.<br><br>Operationids is an optional array to filter which operations you want to receive status objects for.<br><br>Output is a list of operation status objects.<br>[<br>{“operationid”: “opid-12ee…”,<br>“status”: “queued”},<br>{“operationid”: “opd-098a…”, “status”: ”executing”},<br>{“operationid”: “opid-9876”, “status”: ”failed”}<br>]<br><br>When the operation succeeds, the status object will also include the result.<br><br>{“operationid”: “opid-0e0e”,<br>“status”:”success”,<br>“execution_time”:”25”,<br>“result”: {“txid”:”af3887654…”,...}<br>}
|
||||
z_listoperationids <br>| [state] | Return a list of operationids for all operations which the node is currently aware of.<br><br>State is an optional string parameter to filter the operations you want listed by their state. Acceptable parameter values are ‘queued’, ‘executing’, ‘success’, ‘failed’, ‘cancelled’.<br><br>[“opid-0e0e…”, “opid-1af4…”, … ]
|
||||
|
||||
@@ -112,6 +113,7 @@ Zcash error codes are defined in https://github.com/zcash/zcash/blob/master/src/
|
||||
|
||||
RPC_INVALID_PARAMETER (-8) | _Invalid, missing or duplicate parameter_
|
||||
---------------------------| -------------------------------------------------
|
||||
"Minconf cannot be zero when sending from zaddr" | Cannot accept minimum confirmation value of zero when sending from zaddr.
|
||||
"Minconf cannot be negative" | Cannot accept negative minimum confirmation number.
|
||||
"Minimum number of confirmations cannot be less than 0" | Cannot accept negative minimum confirmation number.
|
||||
"From address parameter missing" | Missing an address to send funds from.
|
||||
@@ -157,7 +159,7 @@ RPC_WALLET_ERROR (-4) | _Unspecified problem with wallet_
|
||||
"Could not find previous JoinSplit anchor" | Try restarting node with `-reindex`.
|
||||
"Error decrypting output note of previous JoinSplit: __" |
|
||||
"Could not find witness for note commitment" | Try restarting node with `-rescan`.
|
||||
"Witness for note commitment is null" | Missing witness for note commitement.
|
||||
"Witness for note commitment is null" | Missing witness for note commitment.
|
||||
"Witness for spendable note does not have same anchor as change input" | Invalid anchor for spendable note witness.
|
||||
"Not enough funds to pay miners fee" | Retry with sufficient funds.
|
||||
"Missing hex data for raw transaction" | Raw transaction data is null.
|
||||
|
||||
107
doc/payment-disclosure.md
Normal file
107
doc/payment-disclosure.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# Payment Disclosure (Experimental Feature)
|
||||
|
||||
**Summary**
|
||||
|
||||
Use RPC calls `z_getpaymentdisclosure` and `z_validatepaymentdisclosure` to reveal details of a shielded payment.
|
||||
|
||||
**Who should read this document**
|
||||
|
||||
Frequent users of shielded transactions, payment processors, exchanges, block explorer
|
||||
|
||||
### Experimental Feature
|
||||
|
||||
This is an experimental feature. Enable it by launching `zcashd` with flags:
|
||||
|
||||
zcashd -experimentalfeatures -paymentdisclosure -debug=paymentdisclosure -txindex=1
|
||||
|
||||
These flags can also be set as options in `zcash.conf`.
|
||||
|
||||
All nodes that generate or validate payment disclosures must run with `txindex=1` enabled.
|
||||
|
||||
### Background
|
||||
|
||||
Payment Disclosure is an implementation of the work-in-progress Payment Disclosure ZIP [1].
|
||||
|
||||
The ZIP describes a method of proving that a payment was sent to a shielded address. In the typical case, this means enabling a sender to present a proof that they transferred funds to a recipient's shielded address.
|
||||
|
||||
[1] https://github.com/zcash/zips/pull/119
|
||||
|
||||
### Example Use Case
|
||||
|
||||
Alice the customer sends 10 ZEC to Bob the merchant at the shielded address shown on their website. However, Bob is not sure if he received the funds.
|
||||
|
||||
Alice's node is running with payment disclosure enabled, so Alice generates a payment disclosure and provides it to Bob, who verifies the payment was made.
|
||||
|
||||
If Bob is a bad merchant, Alice can present the payment disclosure to a third party to validate that payment was indeed made.
|
||||
|
||||
### Solution
|
||||
|
||||
A payment disclosure can be generated for any output of a JoinSplit using the RPC call:
|
||||
|
||||
z_getpaymentdisclosure txid js_index output_index (message)
|
||||
|
||||
An optional message can be supplied. This could be used for a refund address or some other reference, as currently it is not common practice to (ahead of time) include a refund address in the memo field when making a payment.
|
||||
|
||||
To validate a payment disclosure, the following RPC call can be used:
|
||||
|
||||
z_validatepaymentdisclosure hexdata
|
||||
|
||||
### Example
|
||||
|
||||
Generate a payment disclosure for the first joinsplit, second output (index starts from zero):
|
||||
|
||||
zcash-cli z_getpaymentdisclosure 79189528d611e811a1c7bb0358dd31343033d14b4c1e998d7c4799c40f8b652b 0 1 "Hello"
|
||||
|
||||
This returns a payment disclosure in the form of a hex string:
|
||||
|
||||
706462ff000a3722aafa8190cdf9710bfad6da2af6d3a74262c1fc96ad47df814b0cd5641c2b658b0fc499477c8d991e4c4bd133303431dd5803bbc7a111e811d6289518790000000000000000017e861adb829d8cb1cbcf6330b8c2e25fb0d08041a67a857815a136f0227f8a5342bce5b3c0d894e2983000eb594702d3c1580817d0374e15078528e56bb6f80c0548656c6c6f59a7085395c9e706d82afe3157c54ad4ae5bf144fcc774a8d9c921c58471402019c156ec5641e2173c4fb6467df5f28530dc4636fa71f4d0e48fc5c560fac500
|
||||
|
||||
To validate the payment disclosure:
|
||||
|
||||
zcash-cli z_validatepaymentdisclosure HEXDATA
|
||||
|
||||
This returns data related to the payment and the payment disclosure:
|
||||
|
||||
{
|
||||
"txid": "79189528d611e811a1c7bb0358dd31343033d14b4c1e998d7c4799c40f8b652b",
|
||||
"jsIndex": 0,
|
||||
"outputIndex": 1,
|
||||
"version": 0,
|
||||
"onetimePrivKey": "1c64d50c4b81df47ad96fcc16242a7d3f62adad6fa0b71f9cd9081faaa22370a",
|
||||
"message": "Hello",
|
||||
"joinSplitPubKey": "d1c465d16166b602992479acfac18e87dc18065f6cefde6a002e70bc371b9faf",
|
||||
"signatureVerified": true,
|
||||
"paymentAddress": "ztaZJXy8iX8nrk2ytXKDBoTWqPkhQcj6E2ifARnD3wfkFwsxXs5SoX7NGmrjkzSiSKn8VtLHTJae48vX5NakvmDhtGNY5eb",
|
||||
"memo": "f600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"value": 12.49900000,
|
||||
"commitmentMatch": true,
|
||||
"valid": true
|
||||
}
|
||||
|
||||
The `signatureVerified` field confirms that the payment disclosure was generated and signed with the joinSplitPrivKey, which should only be known by the node generating and sending the transaction 7918...652b in question.
|
||||
|
||||
### Where is the data stored?
|
||||
|
||||
For all nodes, payment disclosure does not touch `wallet.dat` in any way.
|
||||
|
||||
For nodes that only validate payment disclosures, no data is stored locally.
|
||||
|
||||
For nodes that generate payment disclosures, a LevelDB database is created in the node's datadir. For most users, this would be in the folder:
|
||||
|
||||
$HOME/.zcash/paymentdisclosure
|
||||
|
||||
If you decide you don't want to use payment disclosure, it is safe to shut down your node and delete the database folder.
|
||||
|
||||
### Security Properties
|
||||
|
||||
Please consult the work-in-progress ZIP for details about the protocol, security properties and caveats.
|
||||
|
||||
### Reminder
|
||||
|
||||
Feedback is most welcome!
|
||||
|
||||
This is an experimental feature so there are no guarantees that the protocol, database format, RPC interface etc. will remain the same in the future.
|
||||
|
||||
### Notes
|
||||
|
||||
Currently there is no user friendly way to help senders identify which joinsplit output index maps to a given payment they made. It is possible to construct this from `debug.log`. Ideas and feedback are most welcome on how to improve the user experience.
|
||||
8
doc/reducing-memory-usage.md
Normal file
8
doc/reducing-memory-usage.md
Normal file
@@ -0,0 +1,8 @@
|
||||
In-memory caches
|
||||
----------------
|
||||
|
||||
The size of some in-memory caches can be reduced. As caches trade off memory usage for performance, usually reducing these have a negative effect on performance.
|
||||
|
||||
- `-dbcache=<n>` - the UTXO database cache size, this defaults to `450` (`100` before 1.0.15). The unit is MiB (where 1 GiB = 1024 MiB).
|
||||
- The minimum value for `-dbcache` is 4.
|
||||
- A lower dbcache make initial sync time much longer. After the initial sync, the effect is less pronounced for most use-cases, unless fast validation of blocks is important such as for mining.
|
||||
6
doc/release-notes.md
Normal file
6
doc/release-notes.md
Normal file
@@ -0,0 +1,6 @@
|
||||
(note: this is a temporary file, to be added-to by anybody, and moved to
|
||||
release-notes at release time)
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
11
doc/release-notes/release-notes-1.0.10-1.md
Normal file
11
doc/release-notes/release-notes-1.0.10-1.md
Normal file
@@ -0,0 +1,11 @@
|
||||
Jack Grigg (1):
|
||||
Disable building Proton in Gitian
|
||||
|
||||
Sean Bowe (2):
|
||||
Revert "Remove an unneeded version workaround as per @str4d's review comment."
|
||||
Revert "Delete old protocol version constants and simplify code that used them."
|
||||
|
||||
Simon Liu (2):
|
||||
make-release.py: Versioning changes for 1.0.10-1.
|
||||
make-release.py: Updated manpages for 1.0.10-1.
|
||||
|
||||
79
doc/release-notes/release-notes-1.0.10.md
Normal file
79
doc/release-notes/release-notes-1.0.10.md
Normal file
@@ -0,0 +1,79 @@
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Signature validation using libsecp256k1
|
||||
---------------------------------------
|
||||
|
||||
ECDSA signatures inside Zcash transactions now use validation using
|
||||
[https://github.com/bitcoin/secp256k1](libsecp256k1) instead of OpenSSL.
|
||||
|
||||
Depending on the platform, this means a significant speedup for raw signature
|
||||
validation speed. The advantage is largest on x86_64, where validation is over
|
||||
five times faster. In practice, this translates to a raw reindexing and new
|
||||
block validation times that are less than half of what it was before.
|
||||
|
||||
Libsecp256k1 has undergone very extensive testing and validation upstream.
|
||||
|
||||
A side effect of this change is that libconsensus no longer depends on OpenSSL.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Boris Hajduk (1):
|
||||
documentatin z_validateaddress was missing param
|
||||
|
||||
Daira Hopwood (8):
|
||||
Delete old protocol version constants and simplify code that used them. fixes #2244
|
||||
Remove an unneeded version workaround as per @str4d's review comment.
|
||||
Remove unneeded lax ECDSA signature verification.
|
||||
Strict DER signatures are always enforced; remove the flag and code that used it.
|
||||
Repair tests for strict DER signatures. While we're at it, repair a similar test for CLTV, and make the repaired RPC tests run by default.
|
||||
Make transaction test failures print the comments preceding the test JSON.
|
||||
Fix a comment that was made stale before launch by #1016 (commit 542da61).
|
||||
Delete test that is redundant and inapplicable to Zcash.
|
||||
|
||||
Jack Grigg (20):
|
||||
Fix incorrect locking in CCryptoKeyStore
|
||||
Use AtomicTimer for metrics screen thread count
|
||||
Revert "Fix secp256k1 test compilation"
|
||||
Squashed 'src/secp256k1/' changes from 22f60a6..84973d3
|
||||
Fix potential overflows in ECDSA DER parsers
|
||||
Rename FALLBACK_DOWNLOAD_PATH to PRIORITY_DOWNLOAD_PATH
|
||||
Add test for incorrect consensus logic
|
||||
Correct consensus logic in ContextualCheckInputs
|
||||
Add comments
|
||||
Update Debian copyright list
|
||||
Specify ECDSA constant sizes as constants
|
||||
Remove redundant `= 0` initialisations
|
||||
Ensure that ECDSA constant sizes are correctly-sized
|
||||
Add test for -mempooltxinputlimit
|
||||
Hold an ECCVerifyHandle in zcash-gtest
|
||||
Additional testing of -mempooltxinputlimit
|
||||
Fix comment
|
||||
Use sendfrom for both t-addr calls
|
||||
make-release.py: Versioning changes for 1.0.10.
|
||||
make-release.py: Updated manpages for 1.0.10.
|
||||
|
||||
Kevin Pan (1):
|
||||
"getblocktemplate" could work without wallet
|
||||
|
||||
Pieter Wuille (2):
|
||||
Update key.cpp to new secp256k1 API
|
||||
Switch to libsecp256k1-based validation for ECDSA
|
||||
|
||||
Simon Liu (5):
|
||||
Fix intermediate vpub_new leakage in multi joinsplit tx (#1360)
|
||||
Add option 'mempooltxinputlimit' so the mempool can reject a transaction based on the number of transparent inputs.
|
||||
Check mempooltxinputlimit when creating a transaction to avoid local mempool rejection.
|
||||
Partial revert & fix for commit 9e84b5a ; code block in wrong location.
|
||||
Fix #b1eb4f2 so test checks sendfrom as originally intended.
|
||||
|
||||
Wladimir J. van der Laan (2):
|
||||
Use real number of cores for default -par, ignore virtual cores
|
||||
Remove ChainParams::DefaultMinerThreads
|
||||
|
||||
kozyilmaz (3):
|
||||
[macOS] system linker does not support “--version” option but only “-v”
|
||||
option to disable building libraries (zcutil/build.sh)
|
||||
support per platform filename and hash setting for dependencies
|
||||
|
||||
44
doc/release-notes/release-notes-1.0.11-rc1.md
Normal file
44
doc/release-notes/release-notes-1.0.11-rc1.md
Normal file
@@ -0,0 +1,44 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Ariel Gabizon (2):
|
||||
make-release.py: Versioning changes for 1.0.11-rc1.
|
||||
make-release.py: Updated manpages for 1.0.11-rc1.
|
||||
|
||||
Daira Hopwood (7):
|
||||
Clean up imports to be pyflakes-checkable. fixes #2450
|
||||
For unused variables reported by pyflakes, either remove the variable, suppress the warning, or fix a bug (if the wrong variable was used). refs #2450
|
||||
Cosmetics (trailing whitespace, comment conventions, etc.)
|
||||
Alert 1004 (version 1.0.10 only)
|
||||
Remove UPnP support. fixes #2500
|
||||
Change wording in Security Warnings section of README.md.
|
||||
Document our criteria for adding CI workers. closes #2499
|
||||
|
||||
Jack Grigg (15):
|
||||
Pull in temporary release notes during the release process
|
||||
Ansible playbook for installing Zcash dependencies and Buildbot worker
|
||||
Variable overrides for Debian, Ubuntu and Fedora
|
||||
Variable overrides for FreeBSD
|
||||
Simplify Python installation, inform user if they need to manually configure
|
||||
Add test for issue #2444
|
||||
Add Buildbot worker setup to Ansible playbook
|
||||
Add steps for setting up a latent worker on Amazon EC2
|
||||
Add pyblake2 to required Python modules
|
||||
Remove Buildbot version from host file
|
||||
Add a separate Buildbot host info template for EC2
|
||||
Add pyflakes to required Python modules
|
||||
Add block download progress to metrics UI
|
||||
Correct and extend EstimateNetHeightInner tests
|
||||
Improve network height estimation
|
||||
|
||||
Simon Liu (3):
|
||||
Closes #2446 by adding generated field to listunspent.
|
||||
Fixes #2519. When sending from a zaddr, minconf cannot be zero.
|
||||
Fixes #2480. Null entry in map was dereferenced leading to a segfault.
|
||||
|
||||
Wladimir J. van der Laan (1):
|
||||
rpc: Add WWW-Authenticate header to 401 response
|
||||
|
||||
practicalswift (1):
|
||||
Net: Fix resource leak in ReadBinaryFile(...)
|
||||
|
||||
47
doc/release-notes/release-notes-1.0.11.md
Normal file
47
doc/release-notes/release-notes-1.0.11.md
Normal file
@@ -0,0 +1,47 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Ariel Gabizon (3):
|
||||
make-release.py: Versioning changes for 1.0.11-rc1.
|
||||
make-release.py: Updated manpages for 1.0.11-rc1.
|
||||
make-release.py: Updated release notes and changelog for 1.0.11-rc1.
|
||||
|
||||
Daira Hopwood (7):
|
||||
Clean up imports to be pyflakes-checkable. fixes #2450
|
||||
For unused variables reported by pyflakes, either remove the variable, suppress the warning, or fix a bug (if the wrong variable was used). refs #2450
|
||||
Cosmetics (trailing whitespace, comment conventions, etc.)
|
||||
Alert 1004 (version 1.0.10 only)
|
||||
Remove UPnP support. fixes #2500
|
||||
Change wording in Security Warnings section of README.md.
|
||||
Document our criteria for adding CI workers. closes #2499
|
||||
|
||||
Jack Grigg (17):
|
||||
Pull in temporary release notes during the release process
|
||||
Ansible playbook for installing Zcash dependencies and Buildbot worker
|
||||
Variable overrides for Debian, Ubuntu and Fedora
|
||||
Variable overrides for FreeBSD
|
||||
Simplify Python installation, inform user if they need to manually configure
|
||||
Add test for issue #2444
|
||||
Add Buildbot worker setup to Ansible playbook
|
||||
Add steps for setting up a latent worker on Amazon EC2
|
||||
Add pyblake2 to required Python modules
|
||||
Remove Buildbot version from host file
|
||||
Add a separate Buildbot host info template for EC2
|
||||
Add pyflakes to required Python modules
|
||||
Add block download progress to metrics UI
|
||||
Correct and extend EstimateNetHeightInner tests
|
||||
Improve network height estimation
|
||||
make-release.py: Versioning changes for 1.0.11.
|
||||
make-release.py: Updated manpages for 1.0.11.
|
||||
|
||||
Simon Liu (3):
|
||||
Closes #2446 by adding generated field to listunspent.
|
||||
Fixes #2519. When sending from a zaddr, minconf cannot be zero.
|
||||
Fixes #2480. Null entry in map was dereferenced leading to a segfault.
|
||||
|
||||
Wladimir J. van der Laan (1):
|
||||
rpc: Add WWW-Authenticate header to 401 response
|
||||
|
||||
practicalswift (1):
|
||||
Net: Fix resource leak in ReadBinaryFile(...)
|
||||
|
||||
57
doc/release-notes/release-notes-1.0.12-rc1.md
Normal file
57
doc/release-notes/release-notes-1.0.12-rc1.md
Normal file
@@ -0,0 +1,57 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Ariel (1):
|
||||
add examples to z_getoperationresult
|
||||
|
||||
Ariel Gabizon (1):
|
||||
add load-wallet benchmark
|
||||
|
||||
Bjorn Hjortsberg (2):
|
||||
Do not warn on built in declaration mismatch
|
||||
Remove deprecated exception specification
|
||||
|
||||
Jack Grigg (20):
|
||||
ci-workers: Enable pipelining, and use root to set admin and host details
|
||||
Variable overrides for Arch Linux
|
||||
Rationalize currency unit to "ZEC"
|
||||
ci-workers: Fail if Python is not version 2.7
|
||||
ci-workers: Variable overrides and process tweaks for CentOS 7
|
||||
Add build progress to the release script if progressbar module is available
|
||||
Add hotfix support to release script
|
||||
Document the hotfix release process
|
||||
Enforce sequential hotfix versioning
|
||||
Benchmark time to call sendtoaddress with many UTXOs
|
||||
Fix bug in benchmark data generation script
|
||||
Adjust instructions for UTXO dataset creation
|
||||
Add GitHub release notes to release process
|
||||
Clarify branching and force-building operations in hotfix process
|
||||
Update user guide translations as part of release process
|
||||
make-release.py: Send stderr to stdout
|
||||
List dependencies for release script in release process doc
|
||||
Additional test cases for importprivkey RPC test
|
||||
make-release.py: Versioning changes for 1.0.12-rc1.
|
||||
make-release.py: Updated manpages for 1.0.12-rc1.
|
||||
|
||||
Jason Davies (1):
|
||||
Fix deprecation policy comment.
|
||||
|
||||
Nathan Wilcox (5):
|
||||
key_import_export rpc-test: verify that UTXO view co-evolves for nodes sharing a key.
|
||||
Add a new rpc-test-specified requirement: `importprivkey` outputs the associated address. (Test fails.)
|
||||
[tests pass] Output address on new key import.
|
||||
Add a new requirement that `importprivkey` API is idempotent.
|
||||
[tests pass] Ensure `importprivkey` outputs the address in case key is already imported.
|
||||
|
||||
Ross Nicoll (1):
|
||||
Rationalize currency unit to "BTC"
|
||||
|
||||
Simon Liu (3):
|
||||
Closes #2583. Exclude watch-only utxos from z_sendmany coin selection.
|
||||
Set up a clean chain. Delete redundant method wait_until_miner_sees() via use of sync_all().
|
||||
Implement RPC shield_coinbase #2448.
|
||||
|
||||
kpcyrd (2):
|
||||
Fetch params from ipfs if possible
|
||||
Prefer wget over ipfs
|
||||
|
||||
65
doc/release-notes/release-notes-1.0.12.md
Normal file
65
doc/release-notes/release-notes-1.0.12.md
Normal file
@@ -0,0 +1,65 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Ariel (1):
|
||||
add examples to z_getoperationresult
|
||||
|
||||
Ariel Gabizon (1):
|
||||
add load-wallet benchmark
|
||||
|
||||
Bjorn Hjortsberg (2):
|
||||
Do not warn on built in declaration mismatch
|
||||
Remove deprecated exception specification
|
||||
|
||||
Jack Grigg (26):
|
||||
ci-workers: Enable pipelining, and use root to set admin and host details
|
||||
Variable overrides for Arch Linux
|
||||
Rationalize currency unit to "ZEC"
|
||||
ci-workers: Fail if Python is not version 2.7
|
||||
ci-workers: Variable overrides and process tweaks for CentOS 7
|
||||
Add build progress to the release script if progressbar module is available
|
||||
Add hotfix support to release script
|
||||
Document the hotfix release process
|
||||
Enforce sequential hotfix versioning
|
||||
Benchmark time to call sendtoaddress with many UTXOs
|
||||
Fix bug in benchmark data generation script
|
||||
Adjust instructions for UTXO dataset creation
|
||||
Add GitHub release notes to release process
|
||||
Clarify branching and force-building operations in hotfix process
|
||||
Update user guide translations as part of release process
|
||||
make-release.py: Send stderr to stdout
|
||||
List dependencies for release script in release process doc
|
||||
Additional test cases for importprivkey RPC test
|
||||
make-release.py: Versioning changes for 1.0.12-rc1.
|
||||
make-release.py: Updated manpages for 1.0.12-rc1.
|
||||
make-release.py: Updated release notes and changelog for 1.0.12-rc1.
|
||||
Fix pyflakes warnings in RPC tests
|
||||
Individualise performance-measurements.sh errors for debugging
|
||||
Fix incorrect failure in memory benchmark
|
||||
make-release.py: Versioning changes for 1.0.12.
|
||||
make-release.py: Updated manpages for 1.0.12.
|
||||
|
||||
Jason Davies (1):
|
||||
Fix deprecation policy comment.
|
||||
|
||||
Nathan Wilcox (5):
|
||||
key_import_export rpc-test: verify that UTXO view co-evolves for nodes sharing a key.
|
||||
Add a new rpc-test-specified requirement: `importprivkey` outputs the associated address. (Test fails.)
|
||||
[tests pass] Output address on new key import.
|
||||
Add a new requirement that `importprivkey` API is idempotent.
|
||||
[tests pass] Ensure `importprivkey` outputs the address in case key is already imported.
|
||||
|
||||
Ross Nicoll (1):
|
||||
Rationalize currency unit to "BTC"
|
||||
|
||||
Simon Liu (5):
|
||||
Closes #2583. Exclude watch-only utxos from z_sendmany coin selection.
|
||||
Set up a clean chain. Delete redundant method wait_until_miner_sees() via use of sync_all().
|
||||
Implement RPC shield_coinbase #2448.
|
||||
Update which lock to synchronize on when calling GetBestAnchor().
|
||||
Closes #2637. Make z_shieldcoinbase an experimental feature where it can be enabled with: zcashd -experimentalfeatures -zshieldcoinbase.
|
||||
|
||||
kpcyrd (2):
|
||||
Fetch params from ipfs if possible
|
||||
Prefer wget over ipfs
|
||||
|
||||
88
doc/release-notes/release-notes-1.0.13-rc1.md
Normal file
88
doc/release-notes/release-notes-1.0.13-rc1.md
Normal file
@@ -0,0 +1,88 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Ariel Gabizon (1):
|
||||
boost::format -> tinyformat
|
||||
|
||||
Bruno Arueira (1):
|
||||
Removes out bitcoin mention in favor for zcash
|
||||
|
||||
Cory Fields (1):
|
||||
httpserver: explicitly detach worker threads
|
||||
|
||||
Duke Leto (1):
|
||||
Update performance-measurements.sh
|
||||
|
||||
Jack Grigg (37):
|
||||
Squashed 'src/snark/' content from commit 9ada3f8
|
||||
Add libsnark compile flag to not copy DEPINST to PREFIX
|
||||
Add Ansible playbook for grind workers
|
||||
Add connections in BIP65 and BIP66 tests to the test manager
|
||||
Add benchmark for listunspent
|
||||
[Test] MiniNode: Implement JSDescription parsing
|
||||
[Test] MiniNode: Implement v2 CTransaction parsing
|
||||
[Test] MiniNode: Implement Zcash block parsing
|
||||
[Test] MiniNode: Update protocol version and network magics
|
||||
[Test] MiniNode: Use Zcash PoW
|
||||
[Test] MiniNode: Fix coinbase creation
|
||||
[Test] MiniNode: Coerce OP_PUSHDATA bytearrays to bytes
|
||||
[Test] MiniNode: Implement Zcash coinbase
|
||||
Fix BIP65 and BIP66 tests
|
||||
Un-indent RPC test output in test runner
|
||||
Replace full-test-suite.sh with a new test suite driver script
|
||||
Move ensure-no-dot-so-in-depends.py into full_test_suite.py
|
||||
Move check-security-hardening.sh into full_test_suite.py
|
||||
Add memory benchmark for validatelargetx
|
||||
Migrate libsnark test code to Google Test
|
||||
Remove test code corresponding to removed code
|
||||
Add alt_bn128 to QAP and Merkle tree gadget tests
|
||||
Update libsnark LDLIBS
|
||||
Add "make check" to libsnark that runs the Google Tests
|
||||
Add "make libsnark-tests" that runs libsnark's "make check"
|
||||
Changes to get test_r1cs_ppzksnark passing
|
||||
Add bitcoin-util-test.py to full_test_suite.py
|
||||
Add stdout notice if any stage fails
|
||||
Add libsnark to "make clean"
|
||||
Ensure that libsnark is built first, so its headers are available
|
||||
Remove OpenSSL libraries from libsnark LDLIBS
|
||||
Add libsnark tests to full_test_suite.py
|
||||
Add --list-stages argument to full_test_suite.py
|
||||
Fix NPE in rpc_wallet_tests
|
||||
make-release.py: Versioning changes for 1.0.13-rc1.
|
||||
make-release.py: Updated manpages for 1.0.13-rc1.
|
||||
Change auto-senescence cycle to 16 weeks
|
||||
|
||||
Jason Davies (1):
|
||||
Replace "bitcoin" with "Zcash".
|
||||
|
||||
Jay Graber (1):
|
||||
s/zcash/Zcash
|
||||
|
||||
Jonathan "Duke" Leto (1):
|
||||
Fix bug where performance-measurements.sh fails hards when given no args
|
||||
|
||||
João Barbosa (1):
|
||||
Improve shutdown process
|
||||
|
||||
Sean Bowe (5):
|
||||
Remove libsnark from depends system and integrate it into build system.
|
||||
Remove crusty old "loadVerifyingKey"/"loadProvingKey" APIs and associated invariants.
|
||||
Refactor proof generation function.
|
||||
Add streaming prover.
|
||||
Integrate low memory prover.
|
||||
|
||||
Simon Liu (7):
|
||||
Replace 'bitcoin address' with 'zcash address'.
|
||||
Closes #2639. z_shieldcoinbase is now supported, no longer experimental.
|
||||
Closes #2263 fixing broken pipe error.
|
||||
Closes #2576. Update link to security info on z.cash website.
|
||||
Closes #2639. Adds optional limit parameter with a default value of 50.
|
||||
Fix an issue where qa test wallet_shieldcoinbase could hang.
|
||||
Add payment disclosure as experimental feature.
|
||||
|
||||
Wladimir J. van der Laan (4):
|
||||
Make HTTP server shutdown more graceful
|
||||
http: Wait for worker threads to exit
|
||||
http: Force-exit event loop after predefined time
|
||||
http: speed up shutdown
|
||||
|
||||
95
doc/release-notes/release-notes-1.0.13-rc2.md
Normal file
95
doc/release-notes/release-notes-1.0.13-rc2.md
Normal file
@@ -0,0 +1,95 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Ariel Gabizon (1):
|
||||
boost::format -> tinyformat
|
||||
|
||||
Bruno Arueira (1):
|
||||
Removes out bitcoin mention in favor for zcash
|
||||
|
||||
Cory Fields (1):
|
||||
httpserver: explicitly detach worker threads
|
||||
|
||||
Duke Leto (1):
|
||||
Update performance-measurements.sh
|
||||
|
||||
Jack Grigg (44):
|
||||
Squashed 'src/snark/' content from commit 9ada3f8
|
||||
Add libsnark compile flag to not copy DEPINST to PREFIX
|
||||
Add Ansible playbook for grind workers
|
||||
Add connections in BIP65 and BIP66 tests to the test manager
|
||||
Add benchmark for listunspent
|
||||
[Test] MiniNode: Implement JSDescription parsing
|
||||
[Test] MiniNode: Implement v2 CTransaction parsing
|
||||
[Test] MiniNode: Implement Zcash block parsing
|
||||
[Test] MiniNode: Update protocol version and network magics
|
||||
[Test] MiniNode: Use Zcash PoW
|
||||
[Test] MiniNode: Fix coinbase creation
|
||||
[Test] MiniNode: Coerce OP_PUSHDATA bytearrays to bytes
|
||||
[Test] MiniNode: Implement Zcash coinbase
|
||||
Fix BIP65 and BIP66 tests
|
||||
Un-indent RPC test output in test runner
|
||||
Replace full-test-suite.sh with a new test suite driver script
|
||||
Move ensure-no-dot-so-in-depends.py into full_test_suite.py
|
||||
Move check-security-hardening.sh into full_test_suite.py
|
||||
Add memory benchmark for validatelargetx
|
||||
Migrate libsnark test code to Google Test
|
||||
Remove test code corresponding to removed code
|
||||
Add alt_bn128 to QAP and Merkle tree gadget tests
|
||||
Update libsnark LDLIBS
|
||||
Add "make check" to libsnark that runs the Google Tests
|
||||
Add "make libsnark-tests" that runs libsnark's "make check"
|
||||
Changes to get test_r1cs_ppzksnark passing
|
||||
Add bitcoin-util-test.py to full_test_suite.py
|
||||
Add stdout notice if any stage fails
|
||||
Add libsnark to "make clean"
|
||||
Ensure that libsnark is built first, so its headers are available
|
||||
Remove OpenSSL libraries from libsnark LDLIBS
|
||||
Add libsnark tests to full_test_suite.py
|
||||
Add --list-stages argument to full_test_suite.py
|
||||
Fix NPE in rpc_wallet_tests
|
||||
make-release.py: Versioning changes for 1.0.13-rc1.
|
||||
make-release.py: Updated manpages for 1.0.13-rc1.
|
||||
make-release.py: Updated release notes and changelog for 1.0.13-rc1.
|
||||
Change auto-senescence cycle to 16 weeks
|
||||
Move libsnark from DIST_SUBDIRS into EXTRA_DIST
|
||||
Pass correct dependencies path to libsnark from both Gitian and build.sh
|
||||
Mark libsnark includes as library includes
|
||||
Add the tar-pax option to automake
|
||||
make-release.py: Versioning changes for 1.0.13-rc2.
|
||||
make-release.py: Updated manpages for 1.0.13-rc2.
|
||||
|
||||
Jason Davies (1):
|
||||
Replace "bitcoin" with "Zcash".
|
||||
|
||||
Jay Graber (1):
|
||||
s/zcash/Zcash
|
||||
|
||||
Jonathan "Duke" Leto (1):
|
||||
Fix bug where performance-measurements.sh fails hards when given no args
|
||||
|
||||
João Barbosa (1):
|
||||
Improve shutdown process
|
||||
|
||||
Sean Bowe (5):
|
||||
Remove libsnark from depends system and integrate it into build system.
|
||||
Remove crusty old "loadVerifyingKey"/"loadProvingKey" APIs and associated invariants.
|
||||
Refactor proof generation function.
|
||||
Add streaming prover.
|
||||
Integrate low memory prover.
|
||||
|
||||
Simon Liu (7):
|
||||
Replace 'bitcoin address' with 'zcash address'.
|
||||
Closes #2639. z_shieldcoinbase is now supported, no longer experimental.
|
||||
Closes #2263 fixing broken pipe error.
|
||||
Closes #2576. Update link to security info on z.cash website.
|
||||
Closes #2639. Adds optional limit parameter with a default value of 50.
|
||||
Fix an issue where qa test wallet_shieldcoinbase could hang.
|
||||
Add payment disclosure as experimental feature.
|
||||
|
||||
Wladimir J. van der Laan (4):
|
||||
Make HTTP server shutdown more graceful
|
||||
http: Wait for worker threads to exit
|
||||
http: Force-exit event loop after predefined time
|
||||
http: speed up shutdown
|
||||
|
||||
98
doc/release-notes/release-notes-1.0.13.md
Normal file
98
doc/release-notes/release-notes-1.0.13.md
Normal file
@@ -0,0 +1,98 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Ariel Gabizon (1):
|
||||
boost::format -> tinyformat
|
||||
|
||||
Bruno Arueira (1):
|
||||
Removes out bitcoin mention in favor for zcash
|
||||
|
||||
Cory Fields (1):
|
||||
httpserver: explicitly detach worker threads
|
||||
|
||||
Duke Leto (1):
|
||||
Update performance-measurements.sh
|
||||
|
||||
Jack Grigg (47):
|
||||
Squashed 'src/snark/' content from commit 9ada3f8
|
||||
Add libsnark compile flag to not copy DEPINST to PREFIX
|
||||
Add Ansible playbook for grind workers
|
||||
Add connections in BIP65 and BIP66 tests to the test manager
|
||||
Add benchmark for listunspent
|
||||
[Test] MiniNode: Implement JSDescription parsing
|
||||
[Test] MiniNode: Implement v2 CTransaction parsing
|
||||
[Test] MiniNode: Implement Zcash block parsing
|
||||
[Test] MiniNode: Update protocol version and network magics
|
||||
[Test] MiniNode: Use Zcash PoW
|
||||
[Test] MiniNode: Fix coinbase creation
|
||||
[Test] MiniNode: Coerce OP_PUSHDATA bytearrays to bytes
|
||||
[Test] MiniNode: Implement Zcash coinbase
|
||||
Fix BIP65 and BIP66 tests
|
||||
Un-indent RPC test output in test runner
|
||||
Replace full-test-suite.sh with a new test suite driver script
|
||||
Move ensure-no-dot-so-in-depends.py into full_test_suite.py
|
||||
Move check-security-hardening.sh into full_test_suite.py
|
||||
Add memory benchmark for validatelargetx
|
||||
Migrate libsnark test code to Google Test
|
||||
Remove test code corresponding to removed code
|
||||
Add alt_bn128 to QAP and Merkle tree gadget tests
|
||||
Update libsnark LDLIBS
|
||||
Add "make check" to libsnark that runs the Google Tests
|
||||
Add "make libsnark-tests" that runs libsnark's "make check"
|
||||
Changes to get test_r1cs_ppzksnark passing
|
||||
Add bitcoin-util-test.py to full_test_suite.py
|
||||
Add stdout notice if any stage fails
|
||||
Add libsnark to "make clean"
|
||||
Ensure that libsnark is built first, so its headers are available
|
||||
Remove OpenSSL libraries from libsnark LDLIBS
|
||||
Add libsnark tests to full_test_suite.py
|
||||
Add --list-stages argument to full_test_suite.py
|
||||
Fix NPE in rpc_wallet_tests
|
||||
make-release.py: Versioning changes for 1.0.13-rc1.
|
||||
make-release.py: Updated manpages for 1.0.13-rc1.
|
||||
make-release.py: Updated release notes and changelog for 1.0.13-rc1.
|
||||
Change auto-senescence cycle to 16 weeks
|
||||
Move libsnark from DIST_SUBDIRS into EXTRA_DIST
|
||||
Pass correct dependencies path to libsnark from both Gitian and build.sh
|
||||
Mark libsnark includes as library includes
|
||||
Add the tar-pax option to automake
|
||||
make-release.py: Versioning changes for 1.0.13-rc2.
|
||||
make-release.py: Updated manpages for 1.0.13-rc2.
|
||||
make-release.py: Updated release notes and changelog for 1.0.13-rc2.
|
||||
make-release.py: Versioning changes for 1.0.13.
|
||||
make-release.py: Updated manpages for 1.0.13.
|
||||
|
||||
Jason Davies (1):
|
||||
Replace "bitcoin" with "Zcash".
|
||||
|
||||
Jay Graber (1):
|
||||
s/zcash/Zcash
|
||||
|
||||
Jonathan "Duke" Leto (1):
|
||||
Fix bug where performance-measurements.sh fails hards when given no args
|
||||
|
||||
João Barbosa (1):
|
||||
Improve shutdown process
|
||||
|
||||
Sean Bowe (5):
|
||||
Remove libsnark from depends system and integrate it into build system.
|
||||
Remove crusty old "loadVerifyingKey"/"loadProvingKey" APIs and associated invariants.
|
||||
Refactor proof generation function.
|
||||
Add streaming prover.
|
||||
Integrate low memory prover.
|
||||
|
||||
Simon Liu (7):
|
||||
Replace 'bitcoin address' with 'zcash address'.
|
||||
Closes #2639. z_shieldcoinbase is now supported, no longer experimental.
|
||||
Closes #2263 fixing broken pipe error.
|
||||
Closes #2576. Update link to security info on z.cash website.
|
||||
Closes #2639. Adds optional limit parameter with a default value of 50.
|
||||
Fix an issue where qa test wallet_shieldcoinbase could hang.
|
||||
Add payment disclosure as experimental feature.
|
||||
|
||||
Wladimir J. van der Laan (4):
|
||||
Make HTTP server shutdown more graceful
|
||||
http: Wait for worker threads to exit
|
||||
http: Force-exit event loop after predefined time
|
||||
http: speed up shutdown
|
||||
|
||||
156
doc/release-notes/release-notes-1.0.14-rc1.md
Normal file
156
doc/release-notes/release-notes-1.0.14-rc1.md
Normal file
@@ -0,0 +1,156 @@
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Incoming viewing keys
|
||||
---------------------
|
||||
|
||||
Support for incoming viewing keys, as described in
|
||||
[the Zcash protocol spec](https://github.com/zcash/zips/blob/master/protocol/protocol.pdf),
|
||||
has been added to the wallet.
|
||||
|
||||
Use the `z_exportviewingkey` RPC method to obtain the incoming viewing key for a
|
||||
z-address in a node's wallet. For Sprout z-addresses, these always begin with
|
||||
"ZiVK" (or "ZiVt" for testnet z-addresses). Use `z_importviewingkey` to import
|
||||
these into another node.
|
||||
|
||||
A node that possesses an incoming viewing key for a z-address can view all past
|
||||
transactions received by that address, as well as all future transactions sent
|
||||
to it, by using `z_listreceivedbyaddress`. They cannot spend any funds from the
|
||||
address. This is similar to the behaviour of "watch-only" t-addresses.
|
||||
|
||||
`z_gettotalbalance` now has an additional boolean parameter for including the
|
||||
balance of "watch-only" addresses (both transparent and shielded), which is set
|
||||
to `false` by default. `z_getbalance` has also been updated to work with
|
||||
watch-only addresses.
|
||||
|
||||
- **Caution:** for z-addresses, these balances will **not** be accurate if any
|
||||
funds have been sent from the address. This is because incoming viewing keys
|
||||
cannot detect spends, and so the "balance" is just the sum of all received
|
||||
notes, including ones that have been spent. Some future use-cases for incoming
|
||||
viewing keys will include synchronization data to keep their balances accurate
|
||||
(e.g. [#2542](https://github.com/zcash/zcash/issues/2542)).
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Anthony Towns (1):
|
||||
Add configure check for -latomic
|
||||
|
||||
Cory Fields (12):
|
||||
c++11: don't throw from the reverselock destructor
|
||||
c++11: CAccountingEntry must be defined before use in a list
|
||||
c++11: fix libbdb build against libc++ in c++11 mode
|
||||
depends: use c++11
|
||||
depends: bump OSX toolchain
|
||||
build: Split hardening/fPIE options out
|
||||
build: define base filenames for use elsewhere in the buildsystem
|
||||
build: quiet annoying warnings without adding new ones
|
||||
build: fix Windows builds without pkg-config
|
||||
build: force a c++ standard to be specified
|
||||
build: warn about variable length arrays
|
||||
build: add --enable-werror option
|
||||
|
||||
Jack Grigg (36):
|
||||
Squashed 'src/secp256k1/' changes from 84973d3..6ad5cdb
|
||||
Use g-prefixed coreutils commands if they are available
|
||||
Replace hard-coded defaults for HOST and BUILD with config.guess
|
||||
Remove manual -std=c++11 flag
|
||||
Replace "install -D" with "mkdir -p && install"
|
||||
Check if OpenMP is available before using it
|
||||
[libsnark] Use POSIX-compliant ar arguments
|
||||
Include endian-ness compatibility layer in Equihash implementation
|
||||
build: Split hardening/fPIE options out in Zcash-specific binaries
|
||||
Change --enable-werror to apply to all warnings, use it in build.sh
|
||||
Move Zcash flags into configure.ac
|
||||
ViewingKey -> ReceivingKey per zcash/zips#117
|
||||
Implement viewing key storage in the keystore
|
||||
Factor out common logic from CZCPaymentAddress and CZCSpendingKey
|
||||
Track net value entering and exiting the Sprout circuit
|
||||
Add Sprout value pool to getblock and getblockchaininfo
|
||||
Apply -fstack-protector-all to libsnark
|
||||
Add Rust and Proton to configure options printout
|
||||
Clarify operator precedence in serialization of nSproutValue
|
||||
Remove nSproutValue TODO from CDiskBlockIndex
|
||||
Add Base58 encoding of viewing keys
|
||||
Implement viewing key storage in the wallet
|
||||
Add RPC methods for exporting/importing viewing keys
|
||||
Update wallet logic to account for viewing keys
|
||||
Add watch-only support to Zcash RPC methods
|
||||
Modify zcrawkeygen RPC method to set "zcviewingkey" to the viewing key
|
||||
Cleanup: Add braces for clarity
|
||||
Add cautions to z_getbalance and z_gettotalbalance help text about viewing keys
|
||||
Add release notes for incoming viewing keys
|
||||
Create release notes starting from the previous non-beta non-RC release
|
||||
release-notes.py: Remove unnecessary parameter
|
||||
Regenerate previous release notes to conform to new format
|
||||
Exclude beta and RC release notes from author tallies
|
||||
Fix pyflakes warnings in zkey_import_export RPC test
|
||||
make-release.py: Versioning changes for 1.0.14-rc1.
|
||||
make-release.py: Updated manpages for 1.0.14-rc1.
|
||||
|
||||
Jay Graber (3):
|
||||
Add cli and rpc examples for z_sendmany
|
||||
Fix cli help result for z_shieldcoinbase
|
||||
Add rpc test that exercises z_importkey
|
||||
|
||||
Jonas Schnelli (1):
|
||||
Add compile and link options echo to configure
|
||||
|
||||
Luke Dashjr (4):
|
||||
depends: Use curl for fetching on Linux
|
||||
Travis: Use curl rather than wget for Mac SDK
|
||||
Bugfix: depends/Travis: Use --location (follow redirects) and --fail [on HTTP error response] with curl
|
||||
Travis: Use Blue Box VMs for IPv6 loopback support
|
||||
|
||||
MarcoFalke (2):
|
||||
Fix url in .travis.yml
|
||||
[depends] builders: No need to set -L and --location for curl
|
||||
|
||||
Per Grön (2):
|
||||
Deduplicate test utility method wait_and_assert_operationid_status
|
||||
Print result of RPC call in test only when PYTHON_DEBUG is set
|
||||
|
||||
René Nyffenegger (1):
|
||||
Use AC_ARG_VAR to set ARFLAGS.
|
||||
|
||||
Simon Liu (5):
|
||||
RPC dumpwallet and z_exportwallet updated to no longer allow overwriting an existing file.
|
||||
Add documentation for shielding coinbase utxos.
|
||||
Add documentation for payment disclosure.
|
||||
Closes #2759. Fixes broken pipe error with QA test wallet.py.
|
||||
Closes #2746. Payment disclosure blobs now use 'zpd:' prefix.
|
||||
|
||||
Wladimir J. van der Laan (6):
|
||||
build: Enable C++11 build, require C++11 compiler
|
||||
build: update ax_cxx_compile_stdcxx to serial 4
|
||||
test: Remove java comparison tool
|
||||
build: Remove check for `openssl/ec.h`
|
||||
devtools: Check for high-entropy ASLR in 64-bit PE executables
|
||||
build: supply `-Wl,--high-entropy-va`
|
||||
|
||||
daniel (1):
|
||||
add powerpc build support for openssl lib
|
||||
|
||||
fanquake (3):
|
||||
[build-aux] Update Boost & check macros to latest serials
|
||||
[depends] Add -stdlib=libc++ to darwin CXX flags
|
||||
[depends] Set OSX_MIN_VERSION to 10.8
|
||||
|
||||
kozyilmaz (1):
|
||||
empty spaces in PATH variable cause build failure
|
||||
|
||||
syd (13):
|
||||
Upgrade googletest to 1.8.0
|
||||
Get the sec-hard tests to run correctly.
|
||||
Update libsodium from 1.0.11 to 1.0.15
|
||||
Remove Boost conditional compilation.
|
||||
Update to address @daira comments wrt fixing configure.ac
|
||||
Get rid of consensus.fPowAllowMinDifficultyBlocks.
|
||||
Don't compile libgtest.a when building libsnark.
|
||||
Add gtests to .gitignore
|
||||
Get rid of fp3 from libsnark, it is not used.
|
||||
InitGoogleMock instead of InitGoogleTest per CR
|
||||
Get rid of underscore prefixes for include guards.
|
||||
Rename bash completion files so that they refer to zcash and not bitcoin.
|
||||
Fix libsnark test failure.
|
||||
|
||||
160
doc/release-notes/release-notes-1.0.14.md
Normal file
160
doc/release-notes/release-notes-1.0.14.md
Normal file
@@ -0,0 +1,160 @@
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Incoming viewing keys
|
||||
---------------------
|
||||
|
||||
Support for incoming viewing keys, as described in
|
||||
[the Zcash protocol spec](https://github.com/zcash/zips/blob/master/protocol/protocol.pdf),
|
||||
has been added to the wallet.
|
||||
|
||||
Use the `z_exportviewingkey` RPC method to obtain the incoming viewing key for a
|
||||
z-address in a node's wallet. For Sprout z-addresses, these always begin with
|
||||
"ZiVK" (or "ZiVt" for testnet z-addresses). Use `z_importviewingkey` to import
|
||||
these into another node.
|
||||
|
||||
A node that possesses an incoming viewing key for a z-address can view all past
|
||||
transactions received by that address, as well as all future transactions sent
|
||||
to it, by using `z_listreceivedbyaddress`. They cannot spend any funds from the
|
||||
address. This is similar to the behaviour of "watch-only" t-addresses.
|
||||
|
||||
`z_gettotalbalance` now has an additional boolean parameter for including the
|
||||
balance of "watch-only" addresses (both transparent and shielded), which is set
|
||||
to `false` by default. `z_getbalance` has also been updated to work with
|
||||
watch-only addresses.
|
||||
|
||||
- **Caution:** for z-addresses, these balances will **not** be accurate if any
|
||||
funds have been sent from the address. This is because incoming viewing keys
|
||||
cannot detect spends, and so the "balance" is just the sum of all received
|
||||
notes, including ones that have been spent. Some future use-cases for incoming
|
||||
viewing keys will include synchronization data to keep their balances accurate
|
||||
(e.g. [#2542](https://github.com/zcash/zcash/issues/2542)).
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Anthony Towns (1):
|
||||
Add configure check for -latomic
|
||||
|
||||
Cory Fields (12):
|
||||
c++11: don't throw from the reverselock destructor
|
||||
c++11: CAccountingEntry must be defined before use in a list
|
||||
c++11: fix libbdb build against libc++ in c++11 mode
|
||||
depends: use c++11
|
||||
depends: bump OSX toolchain
|
||||
build: Split hardening/fPIE options out
|
||||
build: define base filenames for use elsewhere in the buildsystem
|
||||
build: quiet annoying warnings without adding new ones
|
||||
build: fix Windows builds without pkg-config
|
||||
build: force a c++ standard to be specified
|
||||
build: warn about variable length arrays
|
||||
build: add --enable-werror option
|
||||
|
||||
Jack Grigg (40):
|
||||
Squashed 'src/secp256k1/' changes from 84973d3..6ad5cdb
|
||||
Use g-prefixed coreutils commands if they are available
|
||||
Replace hard-coded defaults for HOST and BUILD with config.guess
|
||||
Remove manual -std=c++11 flag
|
||||
Replace "install -D" with "mkdir -p && install"
|
||||
Check if OpenMP is available before using it
|
||||
[libsnark] Use POSIX-compliant ar arguments
|
||||
Include endian-ness compatibility layer in Equihash implementation
|
||||
build: Split hardening/fPIE options out in Zcash-specific binaries
|
||||
Change --enable-werror to apply to all warnings, use it in build.sh
|
||||
Move Zcash flags into configure.ac
|
||||
ViewingKey -> ReceivingKey per zcash/zips#117
|
||||
Implement viewing key storage in the keystore
|
||||
Factor out common logic from CZCPaymentAddress and CZCSpendingKey
|
||||
Track net value entering and exiting the Sprout circuit
|
||||
Add Sprout value pool to getblock and getblockchaininfo
|
||||
Apply -fstack-protector-all to libsnark
|
||||
Add Rust and Proton to configure options printout
|
||||
Clarify operator precedence in serialization of nSproutValue
|
||||
Remove nSproutValue TODO from CDiskBlockIndex
|
||||
Add Base58 encoding of viewing keys
|
||||
Implement viewing key storage in the wallet
|
||||
Add RPC methods for exporting/importing viewing keys
|
||||
Update wallet logic to account for viewing keys
|
||||
Add watch-only support to Zcash RPC methods
|
||||
Modify zcrawkeygen RPC method to set "zcviewingkey" to the viewing key
|
||||
Cleanup: Add braces for clarity
|
||||
Add cautions to z_getbalance and z_gettotalbalance help text about viewing keys
|
||||
Add release notes for incoming viewing keys
|
||||
Create release notes starting from the previous non-beta non-RC release
|
||||
release-notes.py: Remove unnecessary parameter
|
||||
Regenerate previous release notes to conform to new format
|
||||
Exclude beta and RC release notes from author tallies
|
||||
Fix pyflakes warnings in zkey_import_export RPC test
|
||||
make-release.py: Versioning changes for 1.0.14-rc1.
|
||||
make-release.py: Updated manpages for 1.0.14-rc1.
|
||||
make-release.py: Updated release notes and changelog for 1.0.14-rc1.
|
||||
Update release process
|
||||
make-release.py: Versioning changes for 1.0.14.
|
||||
make-release.py: Updated manpages for 1.0.14.
|
||||
|
||||
Jay Graber (3):
|
||||
Add cli and rpc examples for z_sendmany
|
||||
Fix cli help result for z_shieldcoinbase
|
||||
Add rpc test that exercises z_importkey
|
||||
|
||||
Jonas Schnelli (1):
|
||||
Add compile and link options echo to configure
|
||||
|
||||
Luke Dashjr (4):
|
||||
depends: Use curl for fetching on Linux
|
||||
Travis: Use curl rather than wget for Mac SDK
|
||||
Bugfix: depends/Travis: Use --location (follow redirects) and --fail [on HTTP error response] with curl
|
||||
Travis: Use Blue Box VMs for IPv6 loopback support
|
||||
|
||||
MarcoFalke (2):
|
||||
Fix url in .travis.yml
|
||||
[depends] builders: No need to set -L and --location for curl
|
||||
|
||||
Per Grön (2):
|
||||
Deduplicate test utility method wait_and_assert_operationid_status
|
||||
Print result of RPC call in test only when PYTHON_DEBUG is set
|
||||
|
||||
René Nyffenegger (1):
|
||||
Use AC_ARG_VAR to set ARFLAGS.
|
||||
|
||||
Simon Liu (5):
|
||||
RPC dumpwallet and z_exportwallet updated to no longer allow overwriting an existing file.
|
||||
Add documentation for shielding coinbase utxos.
|
||||
Add documentation for payment disclosure.
|
||||
Closes #2759. Fixes broken pipe error with QA test wallet.py.
|
||||
Closes #2746. Payment disclosure blobs now use 'zpd:' prefix.
|
||||
|
||||
Wladimir J. van der Laan (6):
|
||||
build: Enable C++11 build, require C++11 compiler
|
||||
build: update ax_cxx_compile_stdcxx to serial 4
|
||||
test: Remove java comparison tool
|
||||
build: Remove check for `openssl/ec.h`
|
||||
devtools: Check for high-entropy ASLR in 64-bit PE executables
|
||||
build: supply `-Wl,--high-entropy-va`
|
||||
|
||||
daniel (1):
|
||||
add powerpc build support for openssl lib
|
||||
|
||||
fanquake (3):
|
||||
[build-aux] Update Boost & check macros to latest serials
|
||||
[depends] Add -stdlib=libc++ to darwin CXX flags
|
||||
[depends] Set OSX_MIN_VERSION to 10.8
|
||||
|
||||
kozyilmaz (1):
|
||||
empty spaces in PATH variable cause build failure
|
||||
|
||||
syd (13):
|
||||
Upgrade googletest to 1.8.0
|
||||
Get the sec-hard tests to run correctly.
|
||||
Update libsodium from 1.0.11 to 1.0.15
|
||||
Remove Boost conditional compilation.
|
||||
Update to address @daira comments wrt fixing configure.ac
|
||||
Get rid of consensus.fPowAllowMinDifficultyBlocks.
|
||||
Don't compile libgtest.a when building libsnark.
|
||||
Add gtests to .gitignore
|
||||
Get rid of fp3 from libsnark, it is not used.
|
||||
InitGoogleMock instead of InitGoogleTest per CR
|
||||
Get rid of underscore prefixes for include guards.
|
||||
Rename bash completion files so that they refer to zcash and not bitcoin.
|
||||
Fix libsnark test failure.
|
||||
|
||||
165
doc/release-notes/release-notes-1.0.15-rc1.md
Normal file
165
doc/release-notes/release-notes-1.0.15-rc1.md
Normal file
@@ -0,0 +1,165 @@
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
UTXO and note merging
|
||||
---------------------
|
||||
|
||||
In order to simplify the process of combining many small UTXOs and notes into a
|
||||
few larger ones, a new RPC method `z_mergetoaddress` has been added. It merges
|
||||
funds from t-addresses, z-addresses, or both, and sends them to a single
|
||||
t-address or z-address.
|
||||
|
||||
Unlike most other RPC methods, `z_mergetoaddress` operates over a particular
|
||||
quantity of UTXOs and notes, instead of a particular amount of ZEC. By default,
|
||||
it will merge 50 UTXOs and 10 notes at a time; these limits can be adjusted with
|
||||
the parameters `transparent_limit` and `shielded_limit`.
|
||||
|
||||
`z_mergetoaddress` also returns the number of UTXOs and notes remaining in the
|
||||
given addresses, which can be used to automate the merging process (for example,
|
||||
merging until the number of UTXOs falls below some value).
|
||||
|
||||
UTXO memory accounting
|
||||
----------------------
|
||||
|
||||
The default -dbcache has been changed in this release to 450MiB. Users can set -dbcache to a higher value (e.g. to keep the UTXO set more fully cached in memory). Users on low-memory systems (such as systems with 1GB or less) should consider specifying a lower value for this parameter.
|
||||
|
||||
Additional information relating to running on low-memory systems can be found here: [reducing-memory-usage.md](https://github.com/zcash/zcash/blob/master/doc/reducing-memory-usage.md).
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
21E14 (1):
|
||||
Remove obsolete reference to CValidationState from UpdateCoins.
|
||||
|
||||
Alex Morcos (1):
|
||||
Implement helper class for CTxMemPoolEntry constructor
|
||||
|
||||
Ariel (2):
|
||||
add blake2b writer
|
||||
update SignatureHash according to Overwinter spec
|
||||
|
||||
Ashley Holman (1):
|
||||
TxMemPool: Change mapTx to a boost::multi_index_container
|
||||
|
||||
Cory Fields (2):
|
||||
chainparams: move CCheckpointData into chainparams.h
|
||||
chainparams: don't use std namespace
|
||||
|
||||
Daniel Kraft (1):
|
||||
Clean up chainparams some more.
|
||||
|
||||
Jack Grigg (38):
|
||||
Scope the ECDSA constant sizes to CPubKey / CKey classes
|
||||
Enable Bash completion for -exportdir
|
||||
Check chainValueZat when checking value pool monitoring
|
||||
Add missing namespace for boost::get
|
||||
Add viewing key prefix to regtest parameters
|
||||
zkey_import_export: Synchronize mempools before mining
|
||||
Use JoinSplitTestingSetup for Boost sighash tests
|
||||
Network upgrade activation mechanism
|
||||
Allow changing network upgrade parameters on regtest
|
||||
Test network upgrade logic
|
||||
Adjust rewind logic to use the network upgrade mechanism
|
||||
Add Overwinter to upgrade list
|
||||
Add method for fetching the next activation height after a given block height
|
||||
Use a boost::optional for nCachedBranchId
|
||||
Change UI/log status message for block rewinding
|
||||
Update quote from ZIP 200
|
||||
Update SignatureHash tests for transaction format changes
|
||||
Implement roll-back limit for reorganisation
|
||||
Add rollback limit to block index rewinding
|
||||
Remove mempool transactions which commit to an unmineable branch ID
|
||||
Remove P2WPKH and P2WSH from signing logic
|
||||
Add consensus branch ID parameter to SignatureHash, remove SigVersion parameter
|
||||
Cleanup: Wrap function arguments
|
||||
Regenerate SignatureHash tests
|
||||
Make number of inputs configurable in validatelargetx test
|
||||
Use v3 transactions with caching for validatelargetx benchmark
|
||||
Extend CWallet::GetFilteredNotes to enable filtering on a set of addresses
|
||||
Add branch IDs for current and next block to getblockchaininfo
|
||||
Check Equihash solution when loading block index
|
||||
Implement z_mergetoaddress for combining UTXOs and notes
|
||||
Gate z_mergetoaddress as an experimental feature
|
||||
Add z_mergetoaddress to release notes
|
||||
Check upgrade status in wallet_overwintertx RPC test
|
||||
Document that consensus.chaintip != consensus.nextblock just before an upgrade
|
||||
Regenerate sighash tests
|
||||
wallet_mergetoaddress: Add additional syncs to prevent race conditions
|
||||
make-release.py: Versioning changes for 1.0.15-rc1.
|
||||
make-release.py: Updated manpages for 1.0.15-rc1.
|
||||
|
||||
Jay Graber (8):
|
||||
Add getdeprecationinfo rpc call to return current version and deprecation block height.
|
||||
Make applicable only on mainnet
|
||||
Add upgrades field to RPC call getblockchaininfo
|
||||
Implement transaction expiry for Overwinter
|
||||
Add -txexpirydelta cli option
|
||||
Add mempool_tx_expiry.py test
|
||||
Add expiry to z_mergetoaddress
|
||||
Change rpc_tests to 21
|
||||
|
||||
Jonas Nick (1):
|
||||
Reduce unnecessary hashing in signrawtransaction
|
||||
|
||||
Jorge Timón (3):
|
||||
Chainparams: Introduce CreateGenesisBlock() static function
|
||||
Chainparams: CTestNetParams and CRegTestParams extend directly from CChainParams
|
||||
Mempool: Use Consensus::CheckTxInputs direclty over main::CheckInputs
|
||||
|
||||
Marius Kjærstad (1):
|
||||
Changed http:// to https:// on some links
|
||||
|
||||
Mark Friedenbach (1):
|
||||
Explicitly set tx.nVersion for the genesis block and mining tests
|
||||
|
||||
Matt Corallo (5):
|
||||
Add failing test checking timelocked-txn removal during reorg
|
||||
Fix removal of time-locked transactions during reorg
|
||||
Fix comment in removeForReorg
|
||||
Make indentation in ActivateBestChainStep readable
|
||||
removeForReorg calls once-per-disconnect-> once-per-reorg
|
||||
|
||||
Maxwell Gubler (1):
|
||||
Fix syntax examples for z_importwallet and export
|
||||
|
||||
Nicolas DORIER (1):
|
||||
Unit test for sighash caching
|
||||
|
||||
Pavel Vasin (1):
|
||||
remove unused NOBLKS_VERSION_{START,END} constants
|
||||
|
||||
Pieter Wuille (8):
|
||||
Add rewind logic to deal with post-fork software updates
|
||||
Support -checkmempool=N, which runs checks on average once every N transactions
|
||||
Report non-mandatory script failures correctly
|
||||
Refactor script validation to observe amounts
|
||||
BIP143: Verification logic
|
||||
BIP143: Signing logic
|
||||
Precompute sighashes
|
||||
Rename to PrecomputedTransactionData
|
||||
|
||||
Simon Liu (11):
|
||||
Fixes #2793. Backport commit f33afd3 to increase dbcache default.
|
||||
Add documentation about dbcache.
|
||||
Add note about dbcache to 1.0.15 release notes.
|
||||
Remove redundant service flag NODE_GETUTXO meant for Bitcoin XT.
|
||||
Implementation of Overwinter transaction format ZIP 202.
|
||||
Add test to check malformed v1 transaction against Overwinter tx parser
|
||||
Closes #2964. z_sendmany once again makes v1 tx for taddr to taddr.
|
||||
Closes #2954 and #2959. Fixes Overwinter issues in sighash_tests.
|
||||
Add field nProtocolVersion to struct NetworkUpgrade.
|
||||
Overwinter peer management and network handshaking.
|
||||
Add python qa test overwinter_peer_management.
|
||||
|
||||
Suhas Daftuar (3):
|
||||
Track coinbase spends in CTxMemPoolEntry
|
||||
Don't call removeForReorg if DisconnectTip fails
|
||||
Fix removeForReorg to use MedianTimePast
|
||||
|
||||
jc (1):
|
||||
read hashReserved from disk block index
|
||||
|
||||
syd (2):
|
||||
Fix libsnark dependency build.
|
||||
Remove OSX and Windows files from Makefile + share directory.
|
||||
|
||||
209
doc/release-notes/release-notes-1.0.15.md
Normal file
209
doc/release-notes/release-notes-1.0.15.md
Normal file
@@ -0,0 +1,209 @@
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Overwinter network upgrade
|
||||
--------------------------
|
||||
|
||||
The code preparations for the Overwinter network upgrade, as described in [ZIP
|
||||
200](https://github.com/zcash/zips/blob/master/zip-0200.rst), [ZIP
|
||||
201](https://github.com/zcash/zips/blob/master/zip-0201.rst), [ZIP
|
||||
202](https://github.com/zcash/zips/blob/master/zip-0202.rst), [ZIP
|
||||
203](https://github.com/zcash/zips/blob/master/zip-0203.rst), and [ZIP
|
||||
143](https://github.com/zcash/zips/blob/master/zip-0143.rst) are
|
||||
finished and included in this release. Overwinter will activate on testnet at
|
||||
height 207500, and can also be activated at a specific height in regtest mode
|
||||
by setting the config option `-nuparams=5ba81b19:HEIGHT`.
|
||||
|
||||
However, because the Overwinter activation height is not yet specified for
|
||||
mainnet, version 1.0.15 will behave similarly as other pre-Overwinter releases
|
||||
even after a future activation of Overwinter on the network. Upgrading from
|
||||
1.0.15 will be required in order to follow the Overwinter network upgrade on
|
||||
mainnet.
|
||||
|
||||
Overwinter transaction format
|
||||
-----------------------------
|
||||
|
||||
Once Overwinter has activated, transactions must use the new v3 format
|
||||
(including coinbase transactions). All RPC methods that create new transactions
|
||||
(such as `createrawtransaction` and `getblocktemplate`) will create v3
|
||||
transactions once the Overwinter activation height has been reached.
|
||||
|
||||
Overwinter transaction expiry
|
||||
-----------------------------
|
||||
|
||||
Overwinter transactions created by `zcashd` will also have a default expiry
|
||||
height set (the block height after which the transaction becomes invalid) of 20
|
||||
blocks after the height of the next block. This can be configured with the
|
||||
config option `-txexpirydelta`.
|
||||
|
||||
UTXO and note merging
|
||||
---------------------
|
||||
|
||||
In order to simplify the process of combining many small UTXOs and notes into a
|
||||
few larger ones, a new RPC method `z_mergetoaddress` has been added. It merges
|
||||
funds from t-addresses, z-addresses, or both, and sends them to a single
|
||||
t-address or z-address.
|
||||
|
||||
Unlike most other RPC methods, `z_mergetoaddress` operates over a particular
|
||||
quantity of UTXOs and notes, instead of a particular amount of ZEC. By default,
|
||||
it will merge 50 UTXOs and 10 notes at a time; these limits can be adjusted with
|
||||
the parameters `transparent_limit` and `shielded_limit`.
|
||||
|
||||
`z_mergetoaddress` also returns the number of UTXOs and notes remaining in the
|
||||
given addresses, which can be used to automate the merging process (for example,
|
||||
merging until the number of UTXOs falls below some value).
|
||||
|
||||
UTXO memory accounting
|
||||
----------------------
|
||||
|
||||
The default `-dbcache` has been changed in this release to 450MiB. Users can set
|
||||
`-dbcache` to a higher value (e.g. to keep the UTXO set more fully cached in
|
||||
memory). Users on low-memory systems (such as systems with 1GB or less) should
|
||||
consider specifying a lower value for this parameter.
|
||||
|
||||
Additional information relating to running on low-memory systems can be found
|
||||
here: [reducing-memory-usage.md](https://github.com/zcash/zcash/blob/master/doc/reducing-memory-usage.md).
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
21E14 (1):
|
||||
Remove obsolete reference to CValidationState from UpdateCoins.
|
||||
|
||||
Alex Morcos (1):
|
||||
Implement helper class for CTxMemPoolEntry constructor
|
||||
|
||||
Ariel (2):
|
||||
add blake2b writer
|
||||
update SignatureHash according to Overwinter spec
|
||||
|
||||
Ashley Holman (1):
|
||||
TxMemPool: Change mapTx to a boost::multi_index_container
|
||||
|
||||
Cory Fields (2):
|
||||
chainparams: move CCheckpointData into chainparams.h
|
||||
chainparams: don't use std namespace
|
||||
|
||||
Daniel Kraft (1):
|
||||
Clean up chainparams some more.
|
||||
|
||||
Jack Grigg (43):
|
||||
Scope the ECDSA constant sizes to CPubKey / CKey classes
|
||||
Enable Bash completion for -exportdir
|
||||
Check chainValueZat when checking value pool monitoring
|
||||
Add missing namespace for boost::get
|
||||
Add viewing key prefix to regtest parameters
|
||||
zkey_import_export: Synchronize mempools before mining
|
||||
Use JoinSplitTestingSetup for Boost sighash tests
|
||||
Network upgrade activation mechanism
|
||||
Allow changing network upgrade parameters on regtest
|
||||
Test network upgrade logic
|
||||
Adjust rewind logic to use the network upgrade mechanism
|
||||
Add Overwinter to upgrade list
|
||||
Add method for fetching the next activation height after a given block height
|
||||
Use a boost::optional for nCachedBranchId
|
||||
Change UI/log status message for block rewinding
|
||||
Update quote from ZIP 200
|
||||
Update SignatureHash tests for transaction format changes
|
||||
Implement roll-back limit for reorganisation
|
||||
Add rollback limit to block index rewinding
|
||||
Remove mempool transactions which commit to an unmineable branch ID
|
||||
Remove P2WPKH and P2WSH from signing logic
|
||||
Add consensus branch ID parameter to SignatureHash, remove SigVersion parameter
|
||||
Cleanup: Wrap function arguments
|
||||
Regenerate SignatureHash tests
|
||||
Make number of inputs configurable in validatelargetx test
|
||||
Use v3 transactions with caching for validatelargetx benchmark
|
||||
Extend CWallet::GetFilteredNotes to enable filtering on a set of addresses
|
||||
Add branch IDs for current and next block to getblockchaininfo
|
||||
Check Equihash solution when loading block index
|
||||
Implement z_mergetoaddress for combining UTXOs and notes
|
||||
Gate z_mergetoaddress as an experimental feature
|
||||
Add z_mergetoaddress to release notes
|
||||
Check upgrade status in wallet_overwintertx RPC test
|
||||
Document that consensus.chaintip != consensus.nextblock just before an upgrade
|
||||
Regenerate sighash tests
|
||||
wallet_mergetoaddress: Add additional syncs to prevent race conditions
|
||||
make-release.py: Versioning changes for 1.0.15-rc1.
|
||||
make-release.py: Updated manpages for 1.0.15-rc1.
|
||||
make-release.py: Updated release notes and changelog for 1.0.15-rc1.
|
||||
Use block hash comparison for consistency check when loading block index
|
||||
Overwinter release notes and testnet activation height
|
||||
make-release.py: Versioning changes for 1.0.15.
|
||||
make-release.py: Updated manpages for 1.0.15.
|
||||
|
||||
Jay Graber (8):
|
||||
Add getdeprecationinfo rpc call to return current version and deprecation block height.
|
||||
Make applicable only on mainnet
|
||||
Add upgrades field to RPC call getblockchaininfo
|
||||
Implement transaction expiry for Overwinter
|
||||
Add -txexpirydelta cli option
|
||||
Add mempool_tx_expiry.py test
|
||||
Add expiry to z_mergetoaddress
|
||||
Change rpc_tests to 21
|
||||
|
||||
Jonas Nick (1):
|
||||
Reduce unnecessary hashing in signrawtransaction
|
||||
|
||||
Jorge Timón (3):
|
||||
Chainparams: Introduce CreateGenesisBlock() static function
|
||||
Chainparams: CTestNetParams and CRegTestParams extend directly from CChainParams
|
||||
Mempool: Use Consensus::CheckTxInputs direclty over main::CheckInputs
|
||||
|
||||
Marius Kjærstad (1):
|
||||
Changed http:// to https:// on some links
|
||||
|
||||
Mark Friedenbach (1):
|
||||
Explicitly set tx.nVersion for the genesis block and mining tests
|
||||
|
||||
Matt Corallo (5):
|
||||
Add failing test checking timelocked-txn removal during reorg
|
||||
Fix removal of time-locked transactions during reorg
|
||||
Fix comment in removeForReorg
|
||||
Make indentation in ActivateBestChainStep readable
|
||||
removeForReorg calls once-per-disconnect-> once-per-reorg
|
||||
|
||||
Maxwell Gubler (1):
|
||||
Fix syntax examples for z_importwallet and export
|
||||
|
||||
Nicolas DORIER (1):
|
||||
Unit test for sighash caching
|
||||
|
||||
Pavel Vasin (1):
|
||||
remove unused NOBLKS_VERSION_{START,END} constants
|
||||
|
||||
Pieter Wuille (8):
|
||||
Add rewind logic to deal with post-fork software updates
|
||||
Support -checkmempool=N, which runs checks on average once every N transactions
|
||||
Report non-mandatory script failures correctly
|
||||
Refactor script validation to observe amounts
|
||||
BIP143: Verification logic
|
||||
BIP143: Signing logic
|
||||
Precompute sighashes
|
||||
Rename to PrecomputedTransactionData
|
||||
|
||||
Simon Liu (11):
|
||||
Fixes #2793. Backport commit f33afd3 to increase dbcache default.
|
||||
Add documentation about dbcache.
|
||||
Add note about dbcache to 1.0.15 release notes.
|
||||
Remove redundant service flag NODE_GETUTXO meant for Bitcoin XT.
|
||||
Implementation of Overwinter transaction format ZIP 202.
|
||||
Add test to check malformed v1 transaction against Overwinter tx parser
|
||||
Closes #2964. z_sendmany once again makes v1 tx for taddr to taddr.
|
||||
Closes #2954 and #2959. Fixes Overwinter issues in sighash_tests.
|
||||
Add field nProtocolVersion to struct NetworkUpgrade.
|
||||
Overwinter peer management and network handshaking.
|
||||
Add python qa test overwinter_peer_management.
|
||||
|
||||
Suhas Daftuar (3):
|
||||
Track coinbase spends in CTxMemPoolEntry
|
||||
Don't call removeForReorg if DisconnectTip fails
|
||||
Fix removeForReorg to use MedianTimePast
|
||||
|
||||
jc (1):
|
||||
read hashReserved from disk block index
|
||||
|
||||
syd (2):
|
||||
Fix libsnark dependency build.
|
||||
Remove OSX and Windows files from Makefile + share directory.
|
||||
|
||||
16
doc/release-notes/release-notes-1.0.8-1.md
Normal file
16
doc/release-notes/release-notes-1.0.8-1.md
Normal file
@@ -0,0 +1,16 @@
|
||||
Daira Hopwood (3):
|
||||
Don't rely on a finite upper bound on fee rate or priority.
|
||||
Simplify JoinSplit priority calculation. refs 1896
|
||||
Add check for JoinSplit priority as calculated by CCoinsViewCache::GetPriority.
|
||||
|
||||
Jack Grigg (1):
|
||||
Use a larger -rpcclienttimeout for slow performance measurements
|
||||
|
||||
Nathan Wilcox (2):
|
||||
Bump version numbers for v1.0.8-1.
|
||||
Commit the changes from gen-manpages.sh, except manually tweak the version strings.
|
||||
|
||||
str4d (2):
|
||||
Update tests to check actual infinity as well as INF_FEERATE
|
||||
Add unit test for security issue 2017-04-11.a
|
||||
|
||||
90
doc/release-notes/release-notes-1.0.9.md
Normal file
90
doc/release-notes/release-notes-1.0.9.md
Normal file
@@ -0,0 +1,90 @@
|
||||
Amgad Abdelhafez (2):
|
||||
Update timedata.cpp
|
||||
Update timedata.cpp
|
||||
|
||||
Daira Hopwood (4):
|
||||
Fix an error reporting bug due to BrokenPipeError and ConnectionResetError not existing in Python 2. refs #2263
|
||||
Alert 1002 (versions 1.0.0-1.0.2 inclusive).
|
||||
Alert 1003 (versions 1.0.3-1.0.8 inclusive).
|
||||
Disable building Proton by default.
|
||||
|
||||
Jack Grigg (14):
|
||||
Fix prioritisetransaction RPC test
|
||||
torcontrol: Handle escapes in Tor QuotedStrings
|
||||
torcontrol: Add missing copyright header
|
||||
Convert Zcash versions to Debian format
|
||||
[manpage] Handle build numbers in versions
|
||||
Address Daira's comments
|
||||
Address Daira's further comments
|
||||
Correctly handle three-digit octals with leading digit 4-7
|
||||
Check that >3-digit octals are truncated.
|
||||
Implement automatic shutdown of deprecated Zcash versions
|
||||
Wrap messages nicely on metrics screen
|
||||
Regenerate miner tests
|
||||
Add a benchmark for calling ConnectBlock on a block with many inputs
|
||||
Remove additional sources of determinism from benchmark archive
|
||||
|
||||
Jay Graber (2):
|
||||
Change help text examples to use Zcash addresses
|
||||
Poll on getblocktemplate result rather than use bare sleep to avoid race condition.
|
||||
|
||||
Nathan Wilcox (39):
|
||||
[Direct master commit] Fix a release snafu in debian version string.
|
||||
Show toolchain versions in build.sh.
|
||||
Start on a make-release.py script; currently just arg parsing and unittests [unittests fail].
|
||||
Update version spec by altering test; also update regex to pass single 0 digits in major/minor/patch.
|
||||
Add another case from debian-style versions.
|
||||
Add all of the zcash release tags in my current repo as positive test vector.
|
||||
Add support for beta/rc release versions.
|
||||
Add version sorting, assert that RELEASE_PREV is the most recent release.
|
||||
Make SystemExit errors less redundant in output; verify clean git status on master.
|
||||
Always run unittests prior to actual runs.
|
||||
Make --help output clean by not running self-test.
|
||||
Add an option to run against a different repo directory.
|
||||
Make sure to pull the latest master.
|
||||
Exit instead of raising an unexpected exception, since it's already logged.
|
||||
Implement `PathPatcher` abstraction, `clientversion.h` rewrite, and build numbering w/ unittests.
|
||||
Implement the IS_RELEASE rule for betas.
|
||||
Generalize buildnum patching for both `clientversion.h` and `configure.ac`.
|
||||
Modify the `APPROX_RELEASE_HEIGHT`.
|
||||
Remove portions of `./doc/release-process.md` now implemented in `make-release.py`.
|
||||
Switch from `sh_out_logged` to `sh_log`.
|
||||
Shorten the arg log line.
|
||||
Commit the version changes and build.
|
||||
Generate manpages; commit that; improve error output in sh_log.
|
||||
Polish logging a bit more.
|
||||
Tidy up / systematize logging output a bit more.
|
||||
First full-release-branch version of script; rewrite large swatch of release-process.md. [Manually tested.]
|
||||
Enable set -u mode.
|
||||
Fix a variable name typo.
|
||||
Reuse zcash_rpc.
|
||||
Do not use `-rpcwait` on all `zcash_rpc` invocations, only block when starting zcashd.
|
||||
Fix `release-process.md` doc usage for `make-release.py` to have correct arguments and order.
|
||||
Include release version in commit comments.
|
||||
Examine all future versions which are assumed to follow the same Version parser schema.
|
||||
Consider both beta and rc versions to be `IS_RELEASE == false`.
|
||||
Add a few more version strings to positive parser test.
|
||||
Define the deprecation policy for 1.0.9.
|
||||
Clarify that the feature is automated *shutdown*.
|
||||
make-release.py: Versioning changes for 1.0.9.
|
||||
make-release.py: Updated manpages for 1.0.9.
|
||||
|
||||
Paige Peterson (4):
|
||||
wallet backup instructions
|
||||
typo and rewording edits
|
||||
str4d and Ariel's suggestions
|
||||
specify exportdir being within homedirectory
|
||||
|
||||
Sean Bowe (1):
|
||||
Check that pairings work properly when the G1 point is at infinity.
|
||||
|
||||
Simon Liu (5):
|
||||
Add AMQP 1.0 support via Apache Qpid Proton C++ API 0.17.0
|
||||
Add --disable-proton flag to build.sh. Proton has build/linker issues with gcc 4.9.2 and requires gcc 5.x.
|
||||
Fix proton build issue with debian jessie, as used on CI servers.
|
||||
Change regtest port to 18344. Closes #2269.
|
||||
Patch to build Proton with minimal dependencies.
|
||||
|
||||
emilrus (1):
|
||||
Replace bitcoind with zcashd
|
||||
|
||||
@@ -2,125 +2,132 @@ Release Process
|
||||
====================
|
||||
Meta: There should always be a single release engineer to disambiguate responsibility.
|
||||
|
||||
If this is a hotfix release, please see `./hotfix-process.md` before proceeding.
|
||||
|
||||
## Pre-release
|
||||
|
||||
The following should have been checked well in advance of the release:
|
||||
### Github Milestone
|
||||
|
||||
- All dependencies have been updated as appropriate:
|
||||
- BDB
|
||||
- Boost
|
||||
- ccache
|
||||
- libgmp
|
||||
- libsnark (upstream of our fork)
|
||||
- libsodium
|
||||
- miniupnpc
|
||||
- OpenSSL
|
||||
Ensure all goals for the github milestone are met. If not, remove tickets
|
||||
or PRs with a comment as to why it is not included. (Running out of time
|
||||
is a common reason.)
|
||||
|
||||
### Pre-release checklist:
|
||||
|
||||
Check that dependencies are properly hosted by looking at the `check-depends` builder:
|
||||
|
||||
https://ci.z.cash/#/builders/1
|
||||
|
||||
Check that there are no surprising performance regressions:
|
||||
|
||||
https://speed.z.cash
|
||||
|
||||
Ensure that new performance metrics appear on that site.
|
||||
|
||||
### Protocol Safety Checks:
|
||||
|
||||
If this release changes the behavior of the protocol or fixes a serious
|
||||
bug, verify that a pre-release PR merge updated `PROTOCOL_VERSION` in
|
||||
`version.h` correctly.
|
||||
|
||||
If this release breaks backwards compatibility or needs to prevent
|
||||
interaction with software forked projects, change the network magic
|
||||
numbers. Set the four `pchMessageStart` in `CTestNetParams` in
|
||||
`chainparams.cpp` to random values.
|
||||
|
||||
Both of these should be done in standard PRs ahead of the release
|
||||
process. If these were not anticipated correctly, this could block the
|
||||
release, so if you suspect this is necessary, double check with the
|
||||
whole engineering team.
|
||||
|
||||
## Release dependencies
|
||||
|
||||
The release script has the following dependencies:
|
||||
|
||||
- `help2man`
|
||||
- `debchange` (part of the devscripts Debian package)
|
||||
|
||||
You can optionally install the `progressbar2` Python module with pip to have a
|
||||
progress bar displayed during the build process.
|
||||
|
||||
## Release process
|
||||
|
||||
## A. Define the release version as:
|
||||
In the commands below, <RELEASE> and <RELEASE_PREV> are prefixed with a v, ie.
|
||||
v1.0.9 (not 1.0.9).
|
||||
|
||||
$ ZCASH_RELEASE=MAJOR.MINOR.REVISION(-BUILD_STRING)
|
||||
### Create the release branch
|
||||
|
||||
Example:
|
||||
Run the release script, which will verify you are on the latest clean
|
||||
checkout of master, create a branch, then commit standard automated
|
||||
changes to that branch locally:
|
||||
|
||||
$ ZCASH_RELEASE=1.0.0-beta2
|
||||
$ ./zcutil/make-release.py <RELEASE> <RELEASE_PREV> <RELEASE_FROM> <APPROX_RELEASE_HEIGHT>
|
||||
|
||||
Also, the following commands use the `ZCASH_RELEASE_PREV` bash variable for the
|
||||
previous release:
|
||||
Examples:
|
||||
|
||||
$ ZCASH_RELEASE_PREV=1.0.0-beta1
|
||||
$ ./zcutil/make-release.py v1.0.9 v1.0.8-1 v1.0.8-1 120000
|
||||
$ ./zcutil/make-release.py v1.0.13 v1.0.13-rc1 v1.0.12 222900
|
||||
|
||||
## B. Create a new release branch / github PR
|
||||
### Create, Review, and Merge the release branch pull request
|
||||
|
||||
### B1. Check that you are up-to-date with current master, then create a release branch.
|
||||
Review the automated changes in git:
|
||||
|
||||
### B2. Update (commit) version in sources.
|
||||
$ git log master..HEAD
|
||||
|
||||
README.md
|
||||
src/clientversion.h
|
||||
configure.ac
|
||||
contrib/gitian-descriptors/gitian-linux.yml
|
||||
Push the resulting branch to github:
|
||||
|
||||
In `configure.ac` and `clientversion.h`:
|
||||
$ git push 'git@github.com:$YOUR_GITHUB_NAME/zcash' $(git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
- Increment `CLIENT_VERSION_BUILD` according to the following schema:
|
||||
Then create the PR on github. Complete the standard review process,
|
||||
then merge, then wait for CI to complete.
|
||||
|
||||
- 0-24: `1.0.0-beta1`-`1.0.0-beta25`
|
||||
- 25-49: `1.0.0-rc1`-`1.0.0-rc25`
|
||||
- 50: `1.0.0`
|
||||
- 51-99: `1.0.0-1`-`1.0.0-49`
|
||||
- (`CLIENT_VERSION_REVISION` rolls over)
|
||||
- 0-24: `1.0.1-beta1`-`1.0.1-beta25`
|
||||
|
||||
- Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase.
|
||||
|
||||
If this release changes the behavior of the protocol or fixes a serious bug, we may
|
||||
also wish to change the `PROTOCOL_VERSION` in `version.h`.
|
||||
|
||||
Commit these changes. (Be sure to do this before building, or else the built binary will include the flag `-dirty`)
|
||||
|
||||
Build by running `./zcutil/build.sh`.
|
||||
|
||||
Then perform the following command:
|
||||
|
||||
$ bash contrib/devtools/gen-manpages.sh
|
||||
|
||||
Commit the changes.
|
||||
|
||||
### B3. Generate release notes
|
||||
|
||||
Run the release-notes.py script to generate release notes and update authors.md file. For example:
|
||||
|
||||
$ python zcutil/release-notes.py --version $ZCASH_RELEASE
|
||||
|
||||
Add the newly created release notes to the Git repository:
|
||||
|
||||
$ git add doc/release-notes/release-notes-$ZCASH_RELEASE.md
|
||||
|
||||
Update the Debian package changelog:
|
||||
|
||||
export DEBVERSION="${ZCASH_RELEASE}"
|
||||
export DEBEMAIL="${DEBEMAIL:-team@z.cash}"
|
||||
export DEBFULLNAME="${DEBFULLNAME:-Zcash Company}"
|
||||
|
||||
dch -v $DEBVERSION -D jessie -c contrib/debian/changelog
|
||||
|
||||
(`dch` comes from the devscripts package.)
|
||||
|
||||
### B4. Change the network magics
|
||||
|
||||
If this release breaks backwards compatibility, change the network magic
|
||||
numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp`
|
||||
to random values.
|
||||
|
||||
### B5. Merge the previous changes
|
||||
|
||||
Do the normal pull-request, review, testing process for this release PR.
|
||||
|
||||
## C. Verify code artifact hosting
|
||||
|
||||
### C1. Ensure depends tree is working
|
||||
|
||||
https://ci.z.cash/builders/depends-sources
|
||||
|
||||
### C2. Ensure public parameters work
|
||||
|
||||
Run `./fetch-params.sh`.
|
||||
|
||||
## D. Make tag for the newly merged result
|
||||
## Make tag for the newly merged result
|
||||
|
||||
Checkout master and pull the latest version to ensure master is up to date with the release PR which was merged in before.
|
||||
|
||||
Check the last commit on the local and remote versions of master to make sure they are the same.
|
||||
$ git checkout master
|
||||
$ git pull --ff-only
|
||||
|
||||
Then create the git tag:
|
||||
Check the last commit on the local and remote versions of master to make sure they are the same:
|
||||
|
||||
$ git tag -s v${ZCASH_RELEASE}
|
||||
$ git push origin v${ZCASH_RELEASE}
|
||||
$ git log -1
|
||||
|
||||
## E. Deploy testnet
|
||||
The output should include something like, which is created by Homu:
|
||||
|
||||
Auto merge of #4242 - nathan-at-least:release-v1.0.9, r=nathan-at-least
|
||||
|
||||
Then create the git tag. The `-s` means the release tag will be
|
||||
signed. **CAUTION:** Remember the `v` at the beginning here:
|
||||
|
||||
$ git tag -s v1.0.9
|
||||
$ git push origin v1.0.9
|
||||
|
||||
## Make and deploy deterministic builds
|
||||
|
||||
- Run the [Gitian deterministic build environment](https://github.com/zcash/zcash-gitian)
|
||||
- Compare the uploaded [build manifests on gitian.sigs](https://github.com/zcash/gitian.sigs)
|
||||
- If all is well, the DevOps engineer will build the Debian packages and update the
|
||||
[apt.z.cash package repository](https://apt.z.cash).
|
||||
|
||||
## Add release notes to GitHub
|
||||
|
||||
- Go to the [GitHub tags page](https://github.com/zcash/zcash/tags).
|
||||
- Click "Add release notes" beside the tag for this release.
|
||||
- Copy the release blog post into the release description, and edit to suit
|
||||
publication on GitHub. See previous release notes for examples.
|
||||
- Click "Publish release" if publishing the release blog post now, or
|
||||
"Save draft" to store the notes internally (and then return later to publish
|
||||
once the blog post is up).
|
||||
|
||||
Note that some GitHub releases are marked as "Verified", and others as
|
||||
"Unverified". This is related to the GPG signature on the release tag - in
|
||||
particular, GitHub needs the corresponding public key to be uploaded to a
|
||||
corresponding GitHub account. If this release is marked as "Unverified", click
|
||||
the marking to see what GitHub wants to be done.
|
||||
|
||||
## Post Release Task List
|
||||
|
||||
### Deploy testnet
|
||||
|
||||
Notify the Zcash DevOps engineer/sysadmin that the release has been tagged. They update some variables in the company's automation code and then run an Ansible playbook, which:
|
||||
|
||||
@@ -131,26 +138,12 @@ Notify the Zcash DevOps engineer/sysadmin that the release has been tagged. They
|
||||
|
||||
Then, verify that nodes can connect to the testnet server, and update the guide on the wiki to ensure the correct hostname is listed in the recommended zcash.conf.
|
||||
|
||||
## F. Update the 1.0 User Guide
|
||||
### Update the 1.0 User Guide
|
||||
|
||||
## G. Publish the release announcement (blog, zcash-dev, slack)
|
||||
This also means updating [the translations](https://github.com/zcash/zcash-docs).
|
||||
Coordinate with the translation team for now. Suggestions for improving this
|
||||
part of the process should be added to #2596.
|
||||
|
||||
### G1. Check in with users who opened issues that were resolved in the release
|
||||
### Publish the release announcement (blog, github, zcash-dev, slack)
|
||||
|
||||
Contact all users who opened `user support` issues that were resolved in the release, and ask them if the release fixes or improves their issue.
|
||||
|
||||
## H. Make and deploy deterministic builds
|
||||
|
||||
- Run the [Gitian deterministic build environment](https://github.com/zcash/zcash-gitian)
|
||||
- Compare the uploaded [build manifests on gitian.sigs](https://github.com/zcash/gitian.sigs)
|
||||
- If all is well, the DevOps engineer will build the Debian packages and update the
|
||||
[apt.z.cash package repository](https://apt.z.cash).
|
||||
|
||||
## I. Celebrate
|
||||
|
||||
## missing steps
|
||||
Zcash still needs:
|
||||
|
||||
* thorough pre-release testing (presumably more thorough than standard PR tests)
|
||||
|
||||
* automated release deployment (e.g.: updating build-depends mirror, deploying testnet, etc...)
|
||||
## Celebrate
|
||||
|
||||
@@ -42,7 +42,7 @@ Wallet encryption is disabled, for several reasons:
|
||||
|
||||
You should use full-disk encryption (or encryption of your home directory) to
|
||||
protect your wallet at rest, and should assume (even unprivileged) users who are
|
||||
runnng on your OS can read your wallet.dat file.
|
||||
running on your OS can read your wallet.dat file.
|
||||
|
||||
Side-Channel Attacks
|
||||
--------------------
|
||||
|
||||
101
doc/shield-coinbase.md
Normal file
101
doc/shield-coinbase.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# Shielding Coinbase UTXOs
|
||||
|
||||
**Summary**
|
||||
|
||||
Use `z_shieldcoinbase` RPC call to shield coinbase UTXOs.
|
||||
|
||||
**Who should read this document**
|
||||
|
||||
Miners, Mining pools, Online wallets
|
||||
|
||||
## Background
|
||||
|
||||
The current Zcash protocol includes a consensus rule that coinbase rewards must be sent to a shielded address.
|
||||
|
||||
## User Experience Challenges
|
||||
|
||||
A user can use the z_sendmany RPC call to shield coinbase funds, but the call was not designed for sweeping up many UTXOs, and offered a suboptimal user experience.
|
||||
|
||||
If customers send mining pool payouts to their online wallet, the service provider must sort through UTXOs to correctly determine the non-coinbase UTXO funds that can be withdrawn or transferred by customers to another transparent address.
|
||||
|
||||
## Solution
|
||||
|
||||
The z_shieldcoinbase call makes it easy to sweep up coinbase rewards from multiple coinbase UTXOs across multiple coinbase reward addresses.
|
||||
|
||||
z_shieldcoinbase fromaddress toaddress (fee) (limit)
|
||||
|
||||
The default fee is 0.0010000 ZEC and the default limit on the maximum number of UTXOs to shield is 50.
|
||||
|
||||
## Examples
|
||||
|
||||
Sweep up coinbase UTXOs from a transparent address you use for mining:
|
||||
|
||||
zcash-cli z_shieldcoinbase tMyMiningAddress zMyPrivateAddress
|
||||
|
||||
Sweep up coinbase UTXOs from multiple transparent addresses to a shielded address:
|
||||
|
||||
zcash-cli z_shieldcoinbase "*" zMyPrivateAddress
|
||||
|
||||
Sweep up with a fee of 1.23 ZEC:
|
||||
|
||||
zcash-cli z_shieldcoinbase tMyMiningAddress zMyPrivateAddress 1.23
|
||||
|
||||
Sweep up with a fee of 0.1 ZEC and set limit on the maximum number of UTXOs to shield at 25:
|
||||
|
||||
zcash-cli z_shieldcoinbase "*" zMyPrivateAddress 0.1 25
|
||||
|
||||
### Asynchronous Call
|
||||
|
||||
The `z_shieldcoinbase` RPC call is an asynchronous call, so you can queue up multiple operations.
|
||||
|
||||
When you invoke
|
||||
|
||||
zcash-cli z_shieldcoinbase tMyMiningAddress zMyPrivateAddress
|
||||
|
||||
JSON will be returned immediately, with the following data fields populated:
|
||||
|
||||
- operationid: a temporary id to use with `z_getoperationstatus` and `z_getoperationresult` to get the status and result of the operation.
|
||||
- shieldedUTXOs: number of coinbase UTXOs being shielded
|
||||
- shieldedValue: value of coinbase UTXOs being shielded.
|
||||
- remainingUTXOs: number of coinbase UTXOs still available for shielding.
|
||||
- remainingValue: value of coinbase UTXOs still available for shielding
|
||||
|
||||
### Locking UTXOs
|
||||
|
||||
The `z_shieldcoinbase` call will lock any selected UTXOs. This prevents the selected UTXOs which are already queued up from being selected for any other send operation. If the `z_shieldcoinbase` call fails, any locked UTXOs are unlocked.
|
||||
|
||||
You can use the RPC call `lockunspent` to see which UTXOs have been locked. You can also use this call to unlock any UTXOs in the event of an unexpected system failure which leaves UTXOs in a locked state.
|
||||
|
||||
### Limits, Performance and Transaction Confirmation
|
||||
|
||||
The number of coinbase UTXOs selected for shielding can be adjusted by setting the limit parameter. The default value is 50.
|
||||
|
||||
If the limit parameter is set to zero, the zcashd `mempooltxinputlimit` option will be used instead, where the default value for `mempooltxinputlimit` is zero, which means no limit.
|
||||
|
||||
Any limit is constrained by a hard limit due to the consensus rule defining a maximum transaction size of 100,000 bytes.
|
||||
|
||||
In general, the more UTXOs that are selected, the longer it takes for the transaction to be verified. Due to the quadratic hashing problem, some miners use the `mempooltxinputlimit` option to reject transactions with a large number of UTXO inputs.
|
||||
|
||||
Currently, as of November 2017, there is no commonly agreed upon limit, but as a rule of thumb (a form of emergent consensus) if a transaction has less than 100 UTXO inputs, the transaction will be mined promptly by the majority of mining pools, but if it has many more UTXO inputs, such as 500, it might take several days to be mined by a miner who has higher or no limits.
|
||||
|
||||
### Anatomy of a z_shieldcoinbase transaction
|
||||
|
||||
The transaction created is a shielded transaction. It consists of a single joinsplit, which consumes coinbase UTXOs as input, and deposits value at a shielded address, minus any fee.
|
||||
|
||||
The number of coinbase UTXOs is determined by a user configured limit.
|
||||
|
||||
If no limit is set (in the case when limit parameter and `mempooltxinputlimit` options are set to zero) the behaviour of z_shieldcoinbase is to consume as many UTXOs as possible, with `z_shieldcoinbase` constructing a transaction up to the size limit of 100,000 bytes.
|
||||
|
||||
As a result, the maximum number of inputs that can be selected is:
|
||||
|
||||
- P2PKH coinbase UTXOs ~ 662
|
||||
- 2-of-3 multisig P2SH coinbase UTXOs ~ 244.
|
||||
|
||||
Here is an example of using `z_shieldcoinbase` on testnet to shield multi-sig coinbase UTXOs.
|
||||
|
||||
- Block 141042 is almost ~2 MB in size (the maximum size for a block) and contains 1 coinbase reward transaction and 20 transactions, each indivually created by a call to z_shieldcoinbase.
|
||||
- https://explorer.testnet.z.cash/block/0050552a78e97c89f666713c8448d49ad1d7263274422272696187dedf6c0d03
|
||||
- Drilling down into a transaction, you can see there is one joinsplit, with 244 inputs (vin) and 0 outputs (vout).
|
||||
- https://explorer.testnet.z.cash/tx/cf4f3da2e434f68b6e361303403344e22a9ff9a8fda9abc180d9520d0ca6527d
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ In a typical situation, where you're only reachable via Tor, this should suffice
|
||||
listen on all devices and another node could establish a clearnet connection, when knowing
|
||||
your address. To mitigate this, additionally bind the address of your Tor proxy:
|
||||
|
||||
./bitcoind ... -bind=127.0.0.1
|
||||
./zcashd ... -bind=127.0.0.1
|
||||
|
||||
If you don't care too much about hiding your node, and want to be reachable on IPv4
|
||||
as well, use `discover` instead:
|
||||
|
||||
91
doc/wallet-backup.md
Normal file
91
doc/wallet-backup.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Wallet Backup Instructions
|
||||
|
||||
## Overview
|
||||
|
||||
Backing up your Zcash private keys is the best way to be proactive about preventing loss of access to your ZEC.
|
||||
|
||||
Problems resulting from bugs in the code, user error, device failure, etc. may lead to losing access to your wallet (and as a result, the private keys of addresses which are required to spend from them).
|
||||
|
||||
No matter what the cause of a corrupted or lost wallet could be, we highly recommend all users backup on a regular basis. Anytime a new address in the wallet is generated, we recommending making a new backup so all private keys for addresses in your wallet are safe.
|
||||
|
||||
Note that a backup is a duplicate of data needed to spend ZEC so where you keep your backup(s) is another important consideration. You should not store backups where they would be equally or increasingly susceptible to loss or theft.
|
||||
|
||||
## Instructions for backing up your wallet and/or private keys
|
||||
|
||||
These instructions are specific for the officially supported Zcash Linux client. For backing up with third-party wallets, please consult with user guides or support channels provided for those services.
|
||||
|
||||
There are multiple ways to make sure you have at least one other copy of the private keys needed to spend your ZEC and view your shielded ZEC.
|
||||
|
||||
For all methods, you will need to include an export directory setting in your config file (`zcash.conf` located in the data directory which is `~/.zcash/` unless it's been overridden with `datadir=` setting):
|
||||
|
||||
`exportdir=path/to/chosen/export/directory`
|
||||
|
||||
You may chose any directory within the home directory as the location for export & backup files. If the directory doesn't exist, it will be created.
|
||||
|
||||
Note that zcashd will need to be stopped and restarted for edits in the config file to take effect.
|
||||
|
||||
### Using `backupwallet`
|
||||
|
||||
To create a backup of your wallet, use:
|
||||
|
||||
`zcash-cli backupwallet <nameofbackup>`.
|
||||
|
||||
The backup will be an exact copy of the current state of your wallet.dat file stored in the export directory you specified in the config file. The file path will also be returned.
|
||||
|
||||
If you generate a new Zcash address, it will not be reflected in the backup file.
|
||||
|
||||
If your original `wallet.dat` file becomes inaccessible for whatever reason, you can use your backup by copying it into your data directory and renaming the copy to `wallet.dat`.
|
||||
|
||||
### Using `z_exportwallet` & `z_importwallet`
|
||||
|
||||
If you prefer to have an export of your private keys in human readable format, you can use:
|
||||
|
||||
`zcash-cli z_exportwallet <nameofbackup>`
|
||||
|
||||
This will generate a file in the export directory listing all transparent and shielded private keys with their associated public addresses. The file path will be returned in the command line.
|
||||
|
||||
To import keys into a wallet which were previously exported to a file, use:
|
||||
|
||||
`zcash-cli z_importwallet <path/to/exportdir/nameofbackup>`
|
||||
|
||||
### Using `z_exportkey`, `z_importkey`, `dumpprivkey` & `importprivkey`
|
||||
|
||||
If you prefer to export a single private key for a shielded address, you can use:
|
||||
|
||||
`zcash-cli z_exportkey <z-address>`
|
||||
|
||||
This will return the private key and will not create a new file.
|
||||
|
||||
For exporting a single private key for a transparent address, you can use the command inherited from Bitcoin:
|
||||
|
||||
`zcash-cli dumpprivkey <t-address>`
|
||||
|
||||
This will return the private key and will not create a new file.
|
||||
|
||||
To import a private key for a shielded address, use:
|
||||
|
||||
`zcash-cli z_importkey <z-priv-key>`
|
||||
|
||||
This will add the key to your wallet and rescan the wallet for associated transactions if it is not already part of the wallet.
|
||||
|
||||
The rescanning process can take a few minutes for a new private key. To skip it, instead use:
|
||||
|
||||
`zcash-cli z_importkey <z-private-key> no`
|
||||
|
||||
For other instructions on fine-tuning the wallet rescan, see the command's help documentation:
|
||||
|
||||
`zcash-cli help z_importkey`
|
||||
|
||||
To import a private key for a transparent address, use:
|
||||
|
||||
`zcash-cli importprivkey <t-priv-key>`
|
||||
|
||||
This has the same functionality as `z_importkey` but works with transparent addresses.
|
||||
|
||||
See the command's help documentation for instructions on fine-tuning the wallet rescan:
|
||||
|
||||
`zcash-cli help importprivkey`
|
||||
|
||||
### Using `dumpwallet`
|
||||
|
||||
This command inherited from Bitcoin is deprecated. It will export private keys in a similar fashion as `z_exportwallet` but only for transparent addresses.
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
[ZeroMQ](http://zeromq.org/) is a lightweight wrapper around TCP
|
||||
connections, inter-process communication, and shared-memory,
|
||||
providing various message-oriented semantics such as publish/subcribe,
|
||||
providing various message-oriented semantics such as publish/subscribe,
|
||||
request/reply, and push/pull.
|
||||
|
||||
The Zcash daemon can be configured to act as a trusted "border
|
||||
router", implementing the zcash wire protocol and relay, making
|
||||
router", implementing the Zcash wire protocol and relay, making
|
||||
consensus decisions, maintaining the local blockchain database,
|
||||
broadcasting locally generated transactions into the network, and
|
||||
providing a queryable RPC interface to interact on a polled basis for
|
||||
@@ -102,6 +102,6 @@ and just the tip will be notified. It is up to the subscriber to
|
||||
retrieve the chain from the last known block to the new tip.
|
||||
|
||||
There are several possibilities that ZMQ notification can get lost
|
||||
during transmission depending on the communication type your are
|
||||
during transmission depending on the communication type you are
|
||||
using. Zcashd appends an up-counting sequence number to each
|
||||
notification which allows listeners to detect lost notifications.
|
||||
|
||||
@@ -11,10 +11,15 @@ export BITCOIND=${REAL_BITCOIND}
|
||||
#Run the tests
|
||||
|
||||
testScripts=(
|
||||
'paymentdisclosure.py'
|
||||
'prioritisetransaction.py'
|
||||
'wallet_treestate.py'
|
||||
'wallet_anchorfork.py'
|
||||
'wallet_protectcoinbase.py'
|
||||
'wallet_shieldcoinbase.py'
|
||||
'wallet_mergetoaddress.py'
|
||||
'wallet.py'
|
||||
'wallet_overwintertx.py'
|
||||
'wallet_nullifiers.py'
|
||||
'wallet_1941.py'
|
||||
'listtransactions.py'
|
||||
@@ -25,7 +30,10 @@ testScripts=(
|
||||
'rawtransactions.py'
|
||||
'rest.py'
|
||||
'mempool_spendcoinbase.py'
|
||||
'mempool_coinbase_spends.py'
|
||||
'mempool_reorg.py'
|
||||
'mempool_tx_input_limit.py'
|
||||
'mempool_nu_activation.py'
|
||||
'mempool_tx_expiry.py'
|
||||
'httpbasics.py'
|
||||
'zapwallettxes.py'
|
||||
'proxy_test.py'
|
||||
@@ -33,17 +41,21 @@ testScripts=(
|
||||
'fundrawtransaction.py'
|
||||
'signrawtransactions.py'
|
||||
'walletbackup.py'
|
||||
'key_import_export.py'
|
||||
'nodehandling.py'
|
||||
'reindex.py'
|
||||
'decodescript.py'
|
||||
'disablewallet.py'
|
||||
'zcjoinsplit.py'
|
||||
'zcjoinsplitdoublespend.py'
|
||||
'zkey_import_export.py'
|
||||
'reorg_limit.py'
|
||||
'getblocktemplate.py'
|
||||
'bip65-cltv-p2p.py'
|
||||
'bipdersig-p2p.py'
|
||||
'overwinter_peer_management.py'
|
||||
);
|
||||
testScriptsExt=(
|
||||
'bipdersig-p2p.py'
|
||||
'bipdersig.py'
|
||||
'getblocktemplate_longpoll.py'
|
||||
'getblocktemplate_proposals.py'
|
||||
'pruning.py'
|
||||
@@ -65,6 +77,10 @@ if [ "x$ENABLE_ZMQ" = "x1" ]; then
|
||||
testScripts+=('zmq_test.py')
|
||||
fi
|
||||
|
||||
if [ "x$ENABLE_PROTON" = "x1" ]; then
|
||||
testScripts+=('proton_test.py')
|
||||
fi
|
||||
|
||||
extArg="-extended"
|
||||
passOn=${@#$extArg}
|
||||
|
||||
@@ -78,7 +94,7 @@ function runTestScript
|
||||
|
||||
echo -e "=== Running testscript ${testName} ==="
|
||||
|
||||
if eval "$@" | sed 's/^/ /'
|
||||
if eval "$@"
|
||||
then
|
||||
successCount=$(expr $successCount + 1)
|
||||
echo "--- Success: ${testName} ---"
|
||||
|
||||
@@ -11,6 +11,7 @@ EXEEXT="@EXEEXT@"
|
||||
@BUILD_BITCOIN_UTILS_TRUE@ENABLE_UTILS=1
|
||||
@BUILD_BITCOIND_TRUE@ENABLE_BITCOIND=1
|
||||
@ENABLE_ZMQ_TRUE@ENABLE_ZMQ=1
|
||||
@ENABLE_PROTON_TRUE@ENABLE_PROTON=1
|
||||
|
||||
REAL_BITCOIND="$BUILDDIR/src/zcashd${EXEEXT}"
|
||||
REAL_BITCOINCLI="$BUILDDIR/src/zcash-cli${EXEEXT}"
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
Regression tests of RPC interface
|
||||
=================================
|
||||
|
||||
### [python-bitcoinrpc](https://github.com/jgarzik/python-bitcoinrpc)
|
||||
Git subtree of [https://github.com/jgarzik/python-bitcoinrpc](https://github.com/jgarzik/python-bitcoinrpc).
|
||||
Changes to python-bitcoinrpc should be made upstream, and then
|
||||
pulled here using git subtree.
|
||||
|
||||
### [test_framework/test_framework.py](test_framework/test_framework.py)
|
||||
Base class for new regression tests.
|
||||
Base class for RPC regression tests.
|
||||
|
||||
### [test_framework/util.py](test_framework/util.py)
|
||||
Generally useful functions.
|
||||
@@ -35,8 +30,8 @@ If you set the environment variable `PYTHON_DEBUG=1` you will get some debug out
|
||||
|
||||
A 200-block -regtest blockchain and wallets for four nodes
|
||||
is created the first time a regression test is run and
|
||||
is stored in the cache/ directory. Each node has 25 mature
|
||||
blocks (25*50=1250 BTC) in its wallet.
|
||||
is stored in the cache/ directory. Each node has the miner
|
||||
subsidy from 25 mature blocks (25*10=250 ZEC) in its wallet.
|
||||
|
||||
After the first run, the cache/ blockchain and wallets are
|
||||
copied into a temporary directory and used as the initial
|
||||
@@ -47,5 +42,5 @@ to recover with:
|
||||
|
||||
```bash
|
||||
rm -rf cache
|
||||
killall bitcoind
|
||||
killall zcashd
|
||||
```
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user