Merge branch 'beta' into mergemaster
# Conflicts: # src/main.cpp
This commit is contained in:
6
.gitignore
vendored
6
.gitignore
vendored
@@ -114,3 +114,9 @@ libzcashconsensus.pc
|
|||||||
src/fiat/-usd
|
src/fiat/-usd
|
||||||
contrib/debian/files
|
contrib/debian/files
|
||||||
contrib/debian/substvars
|
contrib/debian/substvars
|
||||||
|
|
||||||
|
src/rpcmisc~.cpp
|
||||||
|
src/komodo-cli
|
||||||
|
src/komodod
|
||||||
|
src/komodo-tx
|
||||||
|
src/komodo-test
|
||||||
|
|||||||
0
.gitmodules
vendored
Normal file
0
.gitmodules
vendored
Normal file
82
.travis.yml
82
.travis.yml
@@ -1,3 +1,4 @@
|
|||||||
|
<<<<<<< HEAD
|
||||||
language: cpp
|
language: cpp
|
||||||
|
|
||||||
compiler:
|
compiler:
|
||||||
@@ -21,3 +22,84 @@ notifications:
|
|||||||
- "Alt Message : %{repository_slug} - (%{commit} - %{author}): %{message}, Build Time: %{duration}"
|
- "Alt Message : %{repository_slug} - (%{commit} - %{author}): %{message}, Build Time: %{duration}"
|
||||||
- "Change view : %{compare_url}"
|
- "Change view : %{compare_url}"
|
||||||
- "Build details : %{build_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
|
This product includes software developed by the OpenSSL Project for use in the
|
||||||
OpenSSL Toolkit (https://www.openssl.org/). This product includes cryptographic
|
OpenSSL Toolkit (https://www.openssl.org/). This product includes cryptographic
|
||||||
software written by Eric Young (eay@cryptsoft.com),
|
software written by Eric Young (eay@cryptsoft.com).
|
||||||
and UPnP software written by Thomas Bernard.
|
|
||||||
|
|
||||||
|
|
||||||
Although almost all of the Zcash code is licensed under "permissive" open source
|
Although almost all of the Zcash code is licensed under "permissive" open source
|
||||||
|
|||||||
12
Dockerfile
12
Dockerfile
@@ -1,5 +1,13 @@
|
|||||||
FROM kolobus/ubuntu:komodo
|
FROM ubuntu:16.04
|
||||||
MAINTAINER Mihail Fedorov <tech@fedorov.net>
|
MAINTAINER Mihail Fedorov <kolo@komodoplatform.com>
|
||||||
|
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
apt-get -y upgrade && \
|
||||||
|
apt-get -y install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev \
|
||||||
|
unzip python zlib1g-dev wget bsdmainutils automake libssl-dev libprotobuf-dev \
|
||||||
|
protobuf-compiler libqrencode-dev libdb++-dev software-properties-common libcurl4-openssl-dev curl && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
ADD ./ /komodo
|
ADD ./ /komodo
|
||||||
ENV HOME /komodo
|
ENV HOME /komodo
|
||||||
|
|||||||
24
Makefile.am
24
Makefile.am
@@ -12,6 +12,7 @@ pkgconfigdir = $(libdir)/pkgconfig
|
|||||||
pkgconfig_DATA = libzcashconsensus.pc
|
pkgconfig_DATA = libzcashconsensus.pc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
BITCOIND_BIN=$(top_builddir)/src/zcashd$(EXEEXT)
|
BITCOIND_BIN=$(top_builddir)/src/zcashd$(EXEEXT)
|
||||||
BITCOIN_CLI_BIN=$(top_builddir)/src/zcash-cli$(EXEEXT)
|
BITCOIN_CLI_BIN=$(top_builddir)/src/zcash-cli$(EXEEXT)
|
||||||
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(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 \
|
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
|
||||||
$(top_srcdir)/contrib/devtools/security-check.py
|
$(top_srcdir)/contrib/devtools/security-check.py
|
||||||
|
|
||||||
|
|
||||||
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
|
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
|
||||||
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
|
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
|
||||||
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp
|
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp
|
||||||
@@ -54,7 +56,7 @@ COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
|||||||
else
|
else
|
||||||
COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
||||||
leveldb_baseline.info test_bitcoin_filtered.info total_coverage.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 \
|
leveldb_baseline_filtered.info test_bitcoin_coverage.info test_bitcoin.info \
|
||||||
#zcash-gtest.info zcash-gtest_filtered.info zcash-gtest_coverage.info
|
#zcash-gtest.info zcash-gtest_filtered.info zcash-gtest_coverage.info
|
||||||
endif
|
endif
|
||||||
@@ -72,14 +74,6 @@ distcheck-hook:
|
|||||||
distcleancheck:
|
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
|
$(if $(findstring src/,$(MAKECMDGOALS)),$(MAKECMDGOALS), none): FORCE
|
||||||
$(MAKE) -C src $(patsubst src/%,%,$@)
|
$(MAKE) -C src $(patsubst src/%,%,$@)
|
||||||
|
|
||||||
@@ -256,6 +250,7 @@ test_bitcoin_filtered.info: test_bitcoin.info
|
|||||||
-o $@
|
-o $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
block_test.info: test_bitcoin_filtered.info
|
block_test.info: test_bitcoin_filtered.info
|
||||||
$(MKDIR_P) qa/tmp
|
$(MKDIR_P) qa/tmp
|
||||||
-@TIMEOUT=15 qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool 0
|
-@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 $@
|
-o $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
test_bitcoin_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info
|
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 $@
|
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -o $@
|
||||||
|
|
||||||
@@ -329,12 +325,6 @@ endif
|
|||||||
|
|
||||||
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_bin_SCRIPTS = zcutil/fetch-params.sh
|
||||||
dist_noinst_SCRIPTS = autogen.sh zcutil/build-debian-package.sh zcutil/build.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:
|
install-exec-hook:
|
||||||
mv $(DESTDIR)$(bindir)/fetch-params.sh $(DESTDIR)$(bindir)/zcash-fetch-params
|
mv $(DESTDIR)$(bindir)/fetch-params.sh $(DESTDIR)$(bindir)/zcash-fetch-params
|
||||||
|
|
||||||
CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
|
|
||||||
|
|
||||||
.INTERMEDIATE: $(COVERAGE_INFO)
|
.INTERMEDIATE: $(COVERAGE_INFO)
|
||||||
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS = --enable-man
|
DISTCHECK_CONFIGURE_FLAGS = --enable-man
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
rm -rf test_bitcoin.coverage/ zcash-gtest.coverage/ total.coverage/ $(OSX_APP)
|
rm -rf test_bitcoin.coverage/ zcash-gtest.coverage/ total.coverage/
|
||||||
|
|||||||
15
README.md
15
README.md
@@ -1,3 +1,4 @@
|
|||||||
|
Komodo 1.0.15
|
||||||
|
|
||||||
## Komodod
|
## Komodod
|
||||||
This software is Komodo client, generally you will use this if you want to mine KMD or setup a full node.
|
This software is Komodo client, generally you will use this if you want to mine KMD or setup a full node.
|
||||||
@@ -33,7 +34,7 @@ Dependencies
|
|||||||
|
|
||||||
```
|
```
|
||||||
#The following packages are needed:
|
#The following packages are needed:
|
||||||
sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python python-zmq zlib1g-dev wget libcurl3-gnutls-dev bsdmainutils automake
|
sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python python-zmq zlib1g-dev wget libcurl4-openssl-dev bsdmainutils automake curl
|
||||||
```
|
```
|
||||||
|
|
||||||
Komodo
|
Komodo
|
||||||
@@ -63,6 +64,18 @@ cd komodo
|
|||||||
#This can take some time.
|
#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
|
# to update an existing version, git checkout dPoW if not on that branch already
|
||||||
git pull
|
git pull
|
||||||
./zcutil/fetch-params.sh
|
./zcutil/fetch-params.sh
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
# and this notice are preserved. This file is offered as-is, without any
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
# warranty.
|
# warranty.
|
||||||
|
|
||||||
#serial 23
|
#serial 26
|
||||||
|
|
||||||
AC_DEFUN([AX_BOOST_BASE],
|
AC_DEFUN([AX_BOOST_BASE],
|
||||||
[
|
[
|
||||||
@@ -95,8 +95,8 @@ if test "x$want_boost" = "xyes"; then
|
|||||||
x86_64)
|
x86_64)
|
||||||
libsubdirs="lib64 libx32 lib lib64"
|
libsubdirs="lib64 libx32 lib lib64"
|
||||||
;;
|
;;
|
||||||
ppc64|s390x|sparc64|aarch64)
|
ppc64|s390x|sparc64|aarch64|ppc64le)
|
||||||
libsubdirs="lib64 lib lib64"
|
libsubdirs="lib64 lib lib64 ppc64le"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ if test "x$want_boost" = "xyes"; then
|
|||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
succeeded=yes
|
succeeded=yes
|
||||||
found_system=yes
|
found_system=yes
|
||||||
],[:
|
],[
|
||||||
])
|
])
|
||||||
AC_LANG_POP([C++])
|
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 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
|
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
||||||
if test "x$succeeded" != "xyes"; then
|
if test "x$succeeded" != "xyes"; then
|
||||||
|
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||||
|
LDFLAGS="$LDFLAGS_SAVED"
|
||||||
|
BOOST_CPPFLAGS=
|
||||||
|
BOOST_LDFLAGS=
|
||||||
_version=0
|
_version=0
|
||||||
if test "$ac_boost_path" != ""; then
|
if test "$ac_boost_path" != ""; then
|
||||||
if test -d "$ac_boost_path" && test -r "$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/\./_/'`
|
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||||
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
|
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
|
||||||
done
|
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
|
fi
|
||||||
else
|
else
|
||||||
if test "$cross_compiling" != yes; then
|
if test "$cross_compiling" != yes; then
|
||||||
@@ -253,7 +263,7 @@ if test "x$want_boost" = "xyes"; then
|
|||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
succeeded=yes
|
succeeded=yes
|
||||||
found_system=yes
|
found_system=yes
|
||||||
],[:
|
],[
|
||||||
])
|
])
|
||||||
AC_LANG_POP([C++])
|
AC_LANG_POP([C++])
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
# and this notice are preserved. This file is offered as-is, without any
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
# warranty.
|
# warranty.
|
||||||
|
|
||||||
#serial 22
|
#serial 24
|
||||||
|
|
||||||
AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
|
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],
|
AC_CACHE_CHECK([whether the Boost::Program_Options library is available],
|
||||||
ax_cv_boost_program_options,
|
ax_cv_boost_program_options,
|
||||||
[AC_LANG_PUSH(C++)
|
[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;]])],
|
return 0;]])],
|
||||||
ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no)
|
ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no)
|
||||||
AC_LANG_POP([C++])
|
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])
|
AC_DEFINE(HAVE_BOOST_PROGRAM_OPTIONS,,[define if the Boost::PROGRAM_OPTIONS library is available])
|
||||||
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
||||||
if test "x$ax_boost_user_program_options_lib" = "x"; then
|
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
|
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}
|
ax_lib=${libextension}
|
||||||
AC_CHECK_LIB($ax_lib, exit,
|
AC_CHECK_LIB($ax_lib, exit,
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
# and this notice are preserved. This file is offered as-is, without any
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
# warranty.
|
# warranty.
|
||||||
|
|
||||||
#serial 17
|
#serial 18
|
||||||
|
|
||||||
AC_DEFUN([AX_BOOST_SYSTEM],
|
AC_DEFUN([AX_BOOST_SYSTEM],
|
||||||
[
|
[
|
||||||
@@ -68,9 +68,10 @@ AC_DEFUN([AX_BOOST_SYSTEM],
|
|||||||
ax_cv_boost_system,
|
ax_cv_boost_system,
|
||||||
[AC_LANG_PUSH([C++])
|
[AC_LANG_PUSH([C++])
|
||||||
CXXFLAGS_SAVE=$CXXFLAGS
|
CXXFLAGS_SAVE=$CXXFLAGS
|
||||||
|
CXXFLAGS=
|
||||||
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/system/error_code.hpp>]],
|
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)
|
ax_cv_boost_system=yes, ax_cv_boost_system=no)
|
||||||
CXXFLAGS=$CXXFLAGS_SAVE
|
CXXFLAGS=$CXXFLAGS_SAVE
|
||||||
AC_LANG_POP([C++])
|
AC_LANG_POP([C++])
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# SYNOPSIS
|
# 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
|
# DESCRIPTION
|
||||||
#
|
#
|
||||||
@@ -19,6 +19,8 @@
|
|||||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
# 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.
|
# 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
|
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||||
#
|
#
|
||||||
@@ -53,19 +55,19 @@
|
|||||||
# modified version of the Autoconf Macro, you may extend this special
|
# modified version of the Autoconf Macro, you may extend this special
|
||||||
# exception to the GPL to apply to your modified version as well.
|
# exception to the GPL to apply to your modified version as well.
|
||||||
|
|
||||||
#serial 2
|
#serial 4
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
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
|
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
_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,[yes])],
|
||||||
[AS_VAR_SET(CACHEVAR,[no])])
|
[AS_VAR_SET(CACHEVAR,[no])])
|
||||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
_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([$2], :)],
|
||||||
[m4_default([$3], :)])
|
[m4_default([$3], :)])
|
||||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# SYNOPSIS
|
# 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
|
# DESCRIPTION
|
||||||
#
|
#
|
||||||
@@ -19,6 +19,8 @@
|
|||||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
||||||
# issue an error when a bad flag is given.
|
# 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
|
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
||||||
#
|
#
|
||||||
@@ -53,18 +55,19 @@
|
|||||||
# modified version of the Autoconf Macro, you may extend this special
|
# modified version of the Autoconf Macro, you may extend this special
|
||||||
# exception to the GPL to apply to your modified version as well.
|
# exception to the GPL to apply to your modified version as well.
|
||||||
|
|
||||||
#serial 2
|
#serial 4
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_LINK_FLAG],
|
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, [
|
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
|
||||||
ax_check_save_flags=$LDFLAGS
|
ax_check_save_flags=$LDFLAGS
|
||||||
LDFLAGS="$LDFLAGS $4 $1"
|
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,[yes])],
|
||||||
[AS_VAR_SET(CACHEVAR,[no])])
|
[AS_VAR_SET(CACHEVAR,[no])])
|
||||||
LDFLAGS=$ax_check_save_flags])
|
LDFLAGS=$ax_check_save_flags])
|
||||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
AS_VAR_IF(CACHEVAR,yes,
|
||||||
[m4_default([$2], :)],
|
[m4_default([$2], :)],
|
||||||
[m4_default([$3], :)])
|
[m4_default([$3], :)])
|
||||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# SYNOPSIS
|
# 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
|
# DESCRIPTION
|
||||||
#
|
#
|
||||||
@@ -19,6 +19,8 @@
|
|||||||
# "CPPFLAGS EXTRA-FLAGS FLAG". This can for example be used to force the
|
# "CPPFLAGS EXTRA-FLAGS FLAG". This can for example be used to force the
|
||||||
# preprocessor to issue an error when a bad flag is given.
|
# 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
|
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||||
# macro in sync with AX_CHECK_{COMPILE,LINK}_FLAG.
|
# macro in sync with AX_CHECK_{COMPILE,LINK}_FLAG.
|
||||||
#
|
#
|
||||||
@@ -53,19 +55,19 @@
|
|||||||
# modified version of the Autoconf Macro, you may extend this special
|
# modified version of the Autoconf Macro, you may extend this special
|
||||||
# exception to the GPL to apply to your modified version as well.
|
# exception to the GPL to apply to your modified version as well.
|
||||||
|
|
||||||
#serial 2
|
#serial 4
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_PREPROC_FLAG],
|
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
|
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]cppflags_$4_$1])dnl
|
||||||
AC_CACHE_CHECK([whether _AC_LANG preprocessor accepts $1], CACHEVAR, [
|
AC_CACHE_CHECK([whether _AC_LANG preprocessor accepts $1], CACHEVAR, [
|
||||||
ax_check_save_flags=$CPPFLAGS
|
ax_check_save_flags=$CPPFLAGS
|
||||||
CPPFLAGS="$CPPFLAGS $4 $1"
|
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,[yes])],
|
||||||
[AS_VAR_SET(CACHEVAR,[no])])
|
[AS_VAR_SET(CACHEVAR,[no])])
|
||||||
CPPFLAGS=$ax_check_save_flags])
|
CPPFLAGS=$ax_check_save_flags])
|
||||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
AS_VAR_IF(CACHEVAR,yes,
|
||||||
[m4_default([$2], :)],
|
[m4_default([$2], :)],
|
||||||
[m4_default([$3], :)])
|
[m4_default([$3], :)])
|
||||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
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
|
# cold
|
||||||
# const
|
# const
|
||||||
# constructor
|
# constructor
|
||||||
|
# constructor_priority for constructor attribute with priority
|
||||||
# deprecated
|
# deprecated
|
||||||
# destructor
|
# destructor
|
||||||
# dllexport
|
# dllexport
|
||||||
@@ -73,7 +74,7 @@
|
|||||||
# and this notice are preserved. This file is offered as-is, without any
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
# warranty.
|
# warranty.
|
||||||
|
|
||||||
#serial 2
|
#serial 3
|
||||||
|
|
||||||
AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
|
AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
|
||||||
AS_VAR_PUSHDEF([ac_var], [ax_cv_have_func_attribute_$1])
|
AS_VAR_PUSHDEF([ac_var], [ax_cv_have_func_attribute_$1])
|
||||||
@@ -103,6 +104,9 @@ AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
|
|||||||
[const], [
|
[const], [
|
||||||
int foo( void ) __attribute__(($1));
|
int foo( void ) __attribute__(($1));
|
||||||
],
|
],
|
||||||
|
[constructor_priority], [
|
||||||
|
int foo( void ) __attribute__((__constructor__(65535/2)));
|
||||||
|
],
|
||||||
[constructor], [
|
[constructor], [
|
||||||
int foo( void ) __attribute__(($1));
|
int foo( void ) __attribute__(($1));
|
||||||
],
|
],
|
||||||
@@ -180,6 +184,8 @@ AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
|
|||||||
[visibility], [
|
[visibility], [
|
||||||
int foo_def( void ) __attribute__(($1("default")));
|
int foo_def( void ) __attribute__(($1("default")));
|
||||||
int foo_hid( void ) __attribute__(($1("hidden")));
|
int foo_hid( void ) __attribute__(($1("hidden")));
|
||||||
|
int foo_int( void ) __attribute__(($1("internal")));
|
||||||
|
int foo_pro( void ) __attribute__(($1("protected")));
|
||||||
],
|
],
|
||||||
[warning], [
|
[warning], [
|
||||||
int foo( void ) __attribute__(($1("")));
|
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.)
|
# 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,
|
# 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
|
# $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:
|
# variables in your default LIBS, CFLAGS, and CC:
|
||||||
#
|
#
|
||||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
# LIBS="$PTHREAD_LIBS $LIBS"
|
||||||
@@ -30,8 +30,8 @@
|
|||||||
# CC="$PTHREAD_CC"
|
# CC="$PTHREAD_CC"
|
||||||
#
|
#
|
||||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||||
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
|
# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
|
||||||
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||||
#
|
#
|
||||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||||
@@ -82,35 +82,40 @@
|
|||||||
# modified version of the Autoconf Macro, you may extend this special
|
# modified version of the Autoconf Macro, you may extend this special
|
||||||
# exception to the GPL to apply to your modified version as well.
|
# exception to the GPL to apply to your modified version as well.
|
||||||
|
|
||||||
#serial 21
|
#serial 22
|
||||||
|
|
||||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||||
AC_DEFUN([AX_PTHREAD], [
|
AC_DEFUN([AX_PTHREAD], [
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
|
AC_REQUIRE([AC_PROG_CC])
|
||||||
|
AC_REQUIRE([AC_PROG_SED])
|
||||||
AC_LANG_PUSH([C])
|
AC_LANG_PUSH([C])
|
||||||
ax_pthread_ok=no
|
ax_pthread_ok=no
|
||||||
|
|
||||||
# We used to check for pthread.h first, but this fails if pthread.h
|
# 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.
|
# It gets checked for in the link test anyway.
|
||||||
|
|
||||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||||
# etcetera environment variables, and if threads linking works using
|
# etcetera environment variables, and if threads linking works using
|
||||||
# them:
|
# them:
|
||||||
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
|
||||||
save_CFLAGS="$CFLAGS"
|
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"
|
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||||
save_LIBS="$LIBS"
|
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
LIBS="$PTHREAD_LIBS $LIBS"
|
||||||
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
|
||||||
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
|
AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
|
||||||
AC_MSG_RESULT([$ax_pthread_ok])
|
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_LIBS=""
|
||||||
PTHREAD_CFLAGS=""
|
PTHREAD_CFLAGS=""
|
||||||
fi
|
fi
|
||||||
LIBS="$save_LIBS"
|
CC="$ax_pthread_save_CC"
|
||||||
CFLAGS="$save_CFLAGS"
|
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||||
|
LIBS="$ax_pthread_save_LIBS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# We must check for the threads library under a number of different
|
# 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 indicates that we try without any flags at all, and "pthread-config"
|
||||||
# which is a program returning the flags for the Pth emulation library.
|
# 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
|
# The ordering *is* (sometimes) important. Some notes on the
|
||||||
# individual items follow:
|
# 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
|
# none: in case threads are in libc; should be tried before -Kthread and
|
||||||
# other compiler flags to prevent continual compiler warnings
|
# other compiler flags to prevent continual compiler warnings
|
||||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
|
||||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
# (Note: HP C rejects this with "bad form for `-t' option")
|
||||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
# -pthreads: Solaris/gcc (Note: HP C also rejects)
|
||||||
# -pthreads: Solaris/gcc
|
|
||||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
|
||||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
# doesn't hurt to check since this sometimes defines pthreads and
|
||||||
# also defines -D_REENTRANT)
|
# -D_REENTRANT too), HP C (must be checked before -lpthread, which
|
||||||
# ... -mt is also the pthreads flag for HP/aCC
|
# 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
|
# pthread: Linux, etcetera
|
||||||
# --thread-safe: KAI C++
|
# --thread-safe: KAI C++
|
||||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
# 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*)
|
solaris*)
|
||||||
|
|
||||||
# On Solaris (at least, for some versions), libc contains stubbed
|
# On Solaris (at least, for some versions), libc contains stubbed
|
||||||
# (non-functional) versions of the pthreads routines, so link-based
|
# (non-functional) versions of the pthreads routines, so link-based
|
||||||
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
# tests will erroneously succeed. (N.B.: The stubs are missing
|
||||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
# pthread_cleanup_push, or rather a function called by this macro,
|
||||||
# a function called by this macro, so we could check for that, but
|
# so we could check for that, but who knows whether they'll stub
|
||||||
# who knows whether they'll stub that too in a future libc.) So,
|
# that too in a future libc.) So we'll check first for the
|
||||||
# we'll just look for -pthreads and -lpthread first:
|
# standard Solaris way of linking pthreads (-mt -lpthread).
|
||||||
|
|
||||||
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
|
ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
|
||||||
;;
|
|
||||||
|
|
||||||
darwin*)
|
|
||||||
ax_pthread_flags="-pthread $ax_pthread_flags"
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Clang doesn't consider unrecognized options an error unless we specify
|
# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
|
||||||
# -Werror. We throw in some extra Clang-specific options to ensure that
|
|
||||||
# this doesn't happen for GCC, which also accepts -Werror.
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
|
AS_IF([test "x$GCC" = "xyes"],
|
||||||
save_CFLAGS="$CFLAGS"
|
[ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
|
||||||
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"
|
|
||||||
|
|
||||||
if test x"$ax_pthread_ok" = xno; then
|
# The presence of a feature test macro requesting re-entrant function
|
||||||
for flag in $ax_pthread_flags; do
|
# 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)
|
none)
|
||||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
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])
|
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
|
||||||
PTHREAD_CFLAGS="$flag"
|
PTHREAD_CFLAGS="$ax_pthread_try_flag"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
pthread-config)
|
pthread-config)
|
||||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
|
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_CFLAGS="`pthread-config --cflags`"
|
||||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
AC_MSG_CHECKING([for the pthreads library -l$flag])
|
AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
|
||||||
PTHREAD_LIBS="-l$flag"
|
PTHREAD_LIBS="-l$ax_pthread_try_flag"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
save_LIBS="$LIBS"
|
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||||
save_CFLAGS="$CFLAGS"
|
ax_pthread_save_LIBS="$LIBS"
|
||||||
|
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
LIBS="$PTHREAD_LIBS $LIBS"
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
|
|
||||||
|
|
||||||
# Check for various functions. We must include pthread.h,
|
# Check for various functions. We must include pthread.h,
|
||||||
# since some functions may be macros. (On the Sequent, we
|
# 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
|
# pthread_cleanup_push because it is one of the few pthread
|
||||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||||
# We try pthread_create on general principles.
|
# We try pthread_create on general principles.
|
||||||
|
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
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 routine(void *a) { a = 0; }
|
||||||
static void *start_routine(void *a) { return a; }],
|
static void *start_routine(void *a) { return a; }],
|
||||||
[pthread_t th; pthread_attr_t attr;
|
[pthread_t th; pthread_attr_t attr;
|
||||||
@@ -230,13 +382,11 @@ for flag in $ax_pthread_flags; do
|
|||||||
[ax_pthread_ok=yes],
|
[ax_pthread_ok=yes],
|
||||||
[])
|
[])
|
||||||
|
|
||||||
LIBS="$save_LIBS"
|
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||||
CFLAGS="$save_CFLAGS"
|
LIBS="$ax_pthread_save_LIBS"
|
||||||
|
|
||||||
AC_MSG_RESULT([$ax_pthread_ok])
|
AC_MSG_RESULT([$ax_pthread_ok])
|
||||||
if test "x$ax_pthread_ok" = xyes; then
|
AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
|
||||||
break;
|
|
||||||
fi
|
|
||||||
|
|
||||||
PTHREAD_LIBS=""
|
PTHREAD_LIBS=""
|
||||||
PTHREAD_CFLAGS=""
|
PTHREAD_CFLAGS=""
|
||||||
@@ -244,62 +394,65 @@ done
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Various other checks:
|
# Various other checks:
|
||||||
if test "x$ax_pthread_ok" = xyes; then
|
if test "x$ax_pthread_ok" = "xyes"; then
|
||||||
save_LIBS="$LIBS"
|
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
ax_pthread_save_LIBS="$LIBS"
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||||
|
LIBS="$PTHREAD_LIBS $LIBS"
|
||||||
|
|
||||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||||
AC_MSG_CHECKING([for joinable pthread attribute])
|
AC_CACHE_CHECK([for joinable pthread attribute],
|
||||||
attr_name=unknown
|
[ax_cv_PTHREAD_JOINABLE_ATTR],
|
||||||
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
[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>],
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||||
[int attr = $attr; return attr /* ; */])],
|
[int attr = $ax_pthread_attr; return attr /* ; */])],
|
||||||
[attr_name=$attr; break],
|
[ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
|
||||||
[])
|
[])
|
||||||
done
|
done
|
||||||
AC_MSG_RESULT([$attr_name])
|
])
|
||||||
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
|
||||||
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
|
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
|
[Define to necessary symbol if this constant
|
||||||
uses a non-standard name on your system.])
|
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])
|
AC_CACHE_CHECK([whether more special flags are required for pthreads],
|
||||||
flag=no
|
[ax_cv_PTHREAD_SPECIAL_FLAGS],
|
||||||
case ${host_os} in
|
[ax_cv_PTHREAD_SPECIAL_FLAGS=no
|
||||||
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
|
case $host_os in
|
||||||
osf* | hpux*) flag="-D_REENTRANT";;
|
|
||||||
solaris*)
|
solaris*)
|
||||||
if test "$GCC" = "yes"; then
|
ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
|
||||||
flag="-D_REENTRANT"
|
|
||||||
else
|
|
||||||
# TODO: What about Clang on Solaris?
|
|
||||||
flag="-mt -D_REENTRANT"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
AC_MSG_RESULT([$flag])
|
])
|
||||||
if test "x$flag" != xno; then
|
AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
|
||||||
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
test "x$ax_pthread_special_flags_added" != "xyes"],
|
||||||
fi
|
[PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
|
||||||
|
ax_pthread_special_flags_added=yes])
|
||||||
|
|
||||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||||
[ax_cv_PTHREAD_PRIO_INHERIT], [
|
[ax_cv_PTHREAD_PRIO_INHERIT],
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||||
[[int i = PTHREAD_PRIO_INHERIT;]])],
|
[[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||||
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||||
])
|
])
|
||||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
|
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
|
||||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
|
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="$ax_pthread_save_CFLAGS"
|
||||||
CFLAGS="$save_CFLAGS"
|
LIBS="$ax_pthread_save_LIBS"
|
||||||
|
|
||||||
# More AIX lossage: compile with *_r variant
|
# More AIX lossage: compile with *_r variant
|
||||||
if test "x$GCC" != xyes; then
|
if test "x$GCC" != "xyes"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
aix*)
|
aix*)
|
||||||
AS_CASE(["x/$CC"],
|
AS_CASE(["x/$CC"],
|
||||||
@@ -321,7 +474,7 @@ AC_SUBST([PTHREAD_CFLAGS])
|
|||||||
AC_SUBST([PTHREAD_CC])
|
AC_SUBST([PTHREAD_CC])
|
||||||
|
|
||||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
# 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])
|
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
|
||||||
:
|
:
|
||||||
else
|
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
|
||||||
|
])
|
||||||
@@ -41,19 +41,19 @@ is deemed necessary and appropriate to the circumstances. Maintainers are
|
|||||||
obligated to maintain confidentiality with regard to the reporter of an
|
obligated to maintain confidentiality with regard to the reporter of an
|
||||||
incident.
|
incident.
|
||||||
|
|
||||||
You may send reports to [our Conduct email](mailto:conduct@z.cash).
|
You may send reports to [our Conduct email](mailto:developer@komodoplatform.com).
|
||||||
|
|
||||||
If you wish to contact specific maintainers directly, the following have made
|
If you wish to contact specific maintainers directly, the following have made
|
||||||
themselves available for conduct issues:
|
themselves available for conduct issues:
|
||||||
|
|
||||||
- Daira Hopwood (daira at z.cash)
|
- Benny Fairbank (benny at komodoplatform.com)
|
||||||
- Sean Bowe (sean at z.cash)
|
- Support Team (support at komodoplatform.com)
|
||||||
|
- ca333 (ca333 at komodoplatform.com)
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
version 1.3.0, available at
|
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
|
[homepage]: https://www.contributor-covenant.org
|
||||||
[version]: http://contributor-covenant.org/version/1/3/0/
|
[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])
|
AC_PREREQ([2.60])
|
||||||
define(_CLIENT_VERSION_MAJOR, 1)
|
define(_CLIENT_VERSION_MAJOR, 1)
|
||||||
define(_CLIENT_VERSION_MINOR, 0)
|
define(_CLIENT_VERSION_MINOR, 0)
|
||||||
define(_CLIENT_VERSION_REVISION, 8)
|
define(_CLIENT_VERSION_REVISION, 15)
|
||||||
define(_CLIENT_VERSION_BUILD, 50)
|
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(_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)))
|
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_AUX_DIR([build-aux])
|
||||||
AC_CONFIG_MACRO_DIR([build-aux/m4])
|
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
|
AC_CANONICAL_HOST
|
||||||
|
|
||||||
AH_TOP([#ifndef BITCOIN_CONFIG_H])
|
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
|
unset FAKETIME
|
||||||
|
|
||||||
dnl Automake init set-up and checks
|
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 faketime messes with timestamps and causes configure to be re-run.
|
||||||
dnl --disable-maintainer-mode can be used to bypass this.
|
dnl --disable-maintainer-mode can be used to bypass this.
|
||||||
@@ -40,9 +50,6 @@ else
|
|||||||
CXXFLAGS_overridden=no
|
CXXFLAGS_overridden=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Zcash requries C++11 compatibility; set it early:
|
|
||||||
CXXFLAGS="-std=c++11 $CXXFLAGS"
|
|
||||||
|
|
||||||
AC_PROG_CXX
|
AC_PROG_CXX
|
||||||
m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
|
m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
|
||||||
|
|
||||||
@@ -54,6 +61,11 @@ case $host in
|
|||||||
lt_cv_deplibs_check_method="pass_all"
|
lt_cv_deplibs_check_method="pass_all"
|
||||||
;;
|
;;
|
||||||
esac
|
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.
|
dnl Libtool init checks.
|
||||||
LT_INIT([pic-only])
|
LT_INIT([pic-only])
|
||||||
|
|
||||||
@@ -63,7 +75,6 @@ AC_PATH_TOOL(RANLIB, ranlib)
|
|||||||
AC_PATH_TOOL(STRIP, strip)
|
AC_PATH_TOOL(STRIP, strip)
|
||||||
AC_PATH_TOOL(GCOV, gcov)
|
AC_PATH_TOOL(GCOV, gcov)
|
||||||
AC_PATH_PROG(LCOV, lcov)
|
AC_PATH_PROG(LCOV, lcov)
|
||||||
AC_PATH_PROG(JAVA, java)
|
|
||||||
AC_PATH_PROG(GENHTML, genhtml)
|
AC_PATH_PROG(GENHTML, genhtml)
|
||||||
AC_PATH_PROG([GIT], [git])
|
AC_PATH_PROG([GIT], [git])
|
||||||
AC_PATH_PROG(CCACHE,ccache)
|
AC_PATH_PROG(CCACHE,ccache)
|
||||||
@@ -72,9 +83,6 @@ AC_PATH_PROG(HEXDUMP,hexdump)
|
|||||||
AC_PATH_TOOL(READELF,readelf)
|
AC_PATH_TOOL(READELF,readelf)
|
||||||
AC_PATH_TOOL(CPPFILT,c++filt)
|
AC_PATH_TOOL(CPPFILT,c++filt)
|
||||||
|
|
||||||
dnl pkg-config check.
|
|
||||||
PKG_PROG_PKG_CONFIG
|
|
||||||
|
|
||||||
# Enable wallet
|
# Enable wallet
|
||||||
AC_ARG_ENABLE([wallet],
|
AC_ARG_ENABLE([wallet],
|
||||||
[AS_HELP_STRING([--enable-wallet],
|
[AS_HELP_STRING([--enable-wallet],
|
||||||
@@ -94,32 +102,28 @@ AC_ARG_ENABLE([rust],
|
|||||||
[enable_rust=$enableval],
|
[enable_rust=$enableval],
|
||||||
[enable_rust=yes])
|
[enable_rust=yes])
|
||||||
|
|
||||||
AC_ARG_WITH([miniupnpc],
|
AC_ARG_ENABLE([proton],
|
||||||
[AS_HELP_STRING([--with-miniupnpc],
|
[AS_HELP_STRING([--disable-proton],
|
||||||
[enable UPNP (default is yes if libminiupnpc is found)])],
|
[disable Proton (AMQP messaging)])],
|
||||||
[use_upnp=$withval],
|
[use_proton=$enableval],
|
||||||
[use_upnp=auto])
|
[use_proton=yes])
|
||||||
|
|
||||||
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(tests,
|
AC_ARG_ENABLE(tests,
|
||||||
AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
|
AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
|
||||||
[use_tests=$enableval],
|
[use_tests=$enableval],
|
||||||
[use_tests=yes])
|
[use_tests=yes])
|
||||||
|
|
||||||
AC_ARG_WITH([comparison-tool],
|
AC_ARG_ENABLE([asan],
|
||||||
AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
|
[AS_HELP_STRING([--enable-asan],
|
||||||
[use_comparison_tool=$withval],
|
[instrument the executables with asan (default is no)])],
|
||||||
[use_comparison_tool=no])
|
[use_asan=$enableval],
|
||||||
|
[use_asan=no])
|
||||||
|
|
||||||
AC_ARG_ENABLE([comparison-tool-reorg-tests],
|
AC_ARG_ENABLE([tsan],
|
||||||
AS_HELP_STRING([--enable-comparison-tool-reorg-tests],[enable expensive reorg tests in the comparison tool (default no)]),
|
[AS_HELP_STRING([--enable-tsan],
|
||||||
[use_comparison_tool_reorg_tests=$enableval],
|
[instrument the executables with tsan (default is no)])],
|
||||||
[use_comparison_tool_reorg_tests=no])
|
[use_tsan=$enableval],
|
||||||
|
[use_tsan=no])
|
||||||
|
|
||||||
if test x$TARGET_OS = xdarwin; then
|
if test x$TARGET_OS = xdarwin; then
|
||||||
AC_ARG_ENABLE([hardening],
|
AC_ARG_ENABLE([hardening],
|
||||||
@@ -180,6 +184,16 @@ AC_ARG_ENABLE([debug],
|
|||||||
[enable_debug=$enableval],
|
[enable_debug=$enableval],
|
||||||
[enable_debug=no])
|
[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
|
if test "x$enable_debug" = xyes; then
|
||||||
CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
|
CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
|
||||||
if test "x$GCC" = xyes; then
|
if test "x$GCC" = xyes; then
|
||||||
@@ -191,11 +205,28 @@ if test "x$enable_debug" = xyes; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## TODO: Remove these hard-coded paths and flags. They are here for the sake of
|
ERROR_CXXFLAGS=
|
||||||
## compatibility with the legacy buildsystem.
|
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
|
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
|
fi
|
||||||
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
|
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
|
||||||
|
|
||||||
@@ -217,8 +248,6 @@ AC_ARG_WITH([daemon],
|
|||||||
[build_bitcoind=$withval],
|
[build_bitcoind=$withval],
|
||||||
[build_bitcoind=yes])
|
[build_bitcoind=yes])
|
||||||
|
|
||||||
AC_LANG_PUSH([C++])
|
|
||||||
|
|
||||||
use_pkgconfig=yes
|
use_pkgconfig=yes
|
||||||
case $host in
|
case $host in
|
||||||
*mingw*)
|
*mingw*)
|
||||||
@@ -343,6 +372,7 @@ dnl fi
|
|||||||
|
|
||||||
AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
|
AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
|
||||||
CPPFLAGS="$CPPFLAGS -DMAC_OSX"
|
CPPFLAGS="$CPPFLAGS -DMAC_OSX"
|
||||||
|
OBJCXXFLAGS="$CXXFLAGS"
|
||||||
;;
|
;;
|
||||||
*linux*)
|
*linux*)
|
||||||
TARGET_OS=linux
|
TARGET_OS=linux
|
||||||
@@ -351,20 +381,14 @@ dnl fi
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test x$use_comparison_tool != xno; then
|
if test x$use_pkgconfig = xyes; then
|
||||||
if test x$JAVA = x; 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.)])
|
||||||
AC_MSG_ERROR("comparison tool set but java not found")
|
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
|
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
|
fi
|
||||||
|
|
||||||
if test x$use_lcov = xyes; then
|
if test x$use_lcov = xyes; then
|
||||||
@@ -374,15 +398,9 @@ if test x$use_lcov = xyes; then
|
|||||||
if test x$GCOV = x; then
|
if test x$GCOV = x; then
|
||||||
AC_MSG_ERROR("lcov testing requested but gcov not found")
|
AC_MSG_ERROR("lcov testing requested but gcov not found")
|
||||||
fi
|
fi
|
||||||
if test x$JAVA = x; then
|
|
||||||
AC_MSG_ERROR("lcov testing requested but java not found")
|
|
||||||
fi
|
|
||||||
if test x$GENHTML = x; then
|
if test x$GENHTML = x; then
|
||||||
AC_MSG_ERROR("lcov testing requested but genhtml not found")
|
AC_MSG_ERROR("lcov testing requested but genhtml not found")
|
||||||
fi
|
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"
|
LCOV="$LCOV --gcov-tool=$GCOV --rc lcov_branch_coverage=1"
|
||||||
GENHTML="$GENHTML --branch-coverage"
|
GENHTML="$GENHTML --branch-coverage"
|
||||||
AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
|
AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
|
||||||
@@ -443,6 +461,34 @@ else
|
|||||||
AC_SEARCH_LIBS([clock_gettime],[rt])
|
AC_SEARCH_LIBS([clock_gettime],[rt])
|
||||||
fi
|
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
|
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],[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])
|
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.
|
# 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,--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,--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
|
fi
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
@@ -476,11 +523,6 @@ if test x$use_hardening != xno; then
|
|||||||
AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
|
AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CXXFLAGS="$CXXFLAGS $HARDENED_CXXFLAGS"
|
|
||||||
CPPFLAGS="$CPPFLAGS $HARDENED_CPPFLAGS"
|
|
||||||
LDFLAGS="$LDFLAGS $HARDENED_LDFLAGS"
|
|
||||||
OBJCXXFLAGS="$CXXFLAGS"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
|
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
|
BITCOIN_FIND_BDB62
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Check for libminiupnpc (optional)
|
dnl Check Qpid Proton headers and library exist
|
||||||
if test x$use_upnp != xno; then
|
if test x$use_proton = xyes; then
|
||||||
AC_CHECK_HEADERS(
|
AC_CHECK_HEADERS([proton/connection.hpp],
|
||||||
[miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
|
[],
|
||||||
[AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
|
[AC_MSG_WARN([Proton headers not found, disabling Proton support])
|
||||||
[have_miniupnpc=no]
|
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
|
fi
|
||||||
|
|
||||||
if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then
|
if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then
|
||||||
@@ -567,33 +617,14 @@ fi
|
|||||||
if test x$use_boost = xyes; then
|
if test x$use_boost = xyes; then
|
||||||
|
|
||||||
dnl Check for boost libs
|
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_SYSTEM
|
||||||
AX_BOOST_FILESYSTEM
|
AX_BOOST_FILESYSTEM
|
||||||
AX_BOOST_PROGRAM_OPTIONS
|
AX_BOOST_PROGRAM_OPTIONS
|
||||||
AX_BOOST_THREAD
|
AX_BOOST_THREAD
|
||||||
AX_BOOST_CHRONO
|
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
|
fi
|
||||||
|
|
||||||
if test x$use_reduce_exports = xyes; then
|
if test x$use_reduce_exports = xyes; then
|
||||||
@@ -634,69 +665,11 @@ if test x$use_tests = xyes; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$use_boost = xyes; then
|
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"
|
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
|
fi
|
||||||
|
|
||||||
if test x$use_pkgconfig = xyes; then
|
if test x$use_pkgconfig = xyes; then
|
||||||
|
: dnl
|
||||||
if test x"$PKG_CONFIG" = "x"; then
|
|
||||||
AC_MSG_ERROR(pkg-config not found.)
|
|
||||||
fi
|
|
||||||
|
|
||||||
: #NOP
|
|
||||||
m4_ifdef(
|
m4_ifdef(
|
||||||
[PKG_CHECK_MODULES],
|
[PKG_CHECK_MODULES],
|
||||||
[
|
[
|
||||||
@@ -785,7 +758,8 @@ echo 'Hunting for libsnark include directory...'
|
|||||||
if test -d "$LIBSNARK_INCDIR"; then
|
if test -d "$LIBSNARK_INCDIR"; then
|
||||||
echo "Found libsnark include directory: $LIBSNARK_INCDIR"
|
echo "Found libsnark include directory: $LIBSNARK_INCDIR"
|
||||||
else
|
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
|
fi
|
||||||
|
|
||||||
CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS"
|
CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS"
|
||||||
@@ -803,15 +777,29 @@ if test x$enable_rust != xno; then
|
|||||||
RUST_LIBS="-lrustzcash"
|
RUST_LIBS="-lrustzcash"
|
||||||
fi
|
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"
|
# Gitian uses a config.site that sets depends_prefix, and then sets --prefix=/
|
||||||
LIBS_TEMP="$LIBS"
|
# build.sh just uses --prefix
|
||||||
CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
|
if test x$depends_prefix != x; then
|
||||||
LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS $GMP_LIBS $GMPXX_LIBS"
|
LIBSNARK_DEPINST="$depends_prefix"
|
||||||
AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
|
else
|
||||||
CXXFLAGS="$CXXFLAGS_TEMP"
|
LIBSNARK_DEPINST="$prefix"
|
||||||
LIBS="$LIBS_TEMP"
|
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])
|
AC_MSG_CHECKING([whether to build bitcoind])
|
||||||
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
||||||
@@ -881,35 +869,10 @@ else
|
|||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
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_ZMQ], [test "x$use_zmq" = "xyes"])
|
||||||
|
|
||||||
|
AM_CONDITIONAL([ENABLE_PROTON], [test "x$use_proton" = "xyes"])
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build test_bitcoin])
|
AC_MSG_CHECKING([whether to build test_bitcoin])
|
||||||
if test x$use_tests = xyes; then
|
if test x$use_tests = xyes; then
|
||||||
AC_MSG_RESULT([yes])
|
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_RUST],[test x$enable_rust = xyes])
|
||||||
AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
|
AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
|
||||||
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = 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([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
|
||||||
AM_CONDITIONAL([HARDEN],[test x$use_hardening = 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_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
|
||||||
AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor 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_BUILD, _CLIENT_VERSION_BUILD)
|
||||||
AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
|
AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
|
||||||
AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
|
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(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(LIBTOOL_APP_LDFLAGS)
|
||||||
AC_SUBST(USE_UPNP)
|
|
||||||
AC_SUBST(BOOST_LIBS)
|
AC_SUBST(BOOST_LIBS)
|
||||||
AC_SUBST(TESTDEFS)
|
AC_SUBST(TESTDEFS)
|
||||||
AC_SUBST(LEVELDB_TARGET_FLAGS)
|
AC_SUBST(LEVELDB_TARGET_FLAGS)
|
||||||
AC_SUBST(MINIUPNPC_CPPFLAGS)
|
AC_SUBST(CRYPTO_LIBS)
|
||||||
AC_SUBST(MINIUPNPC_LIBS)
|
AC_SUBST(SSL_LIBS)
|
||||||
|
AC_SUBST(EVENT_LIBS)
|
||||||
|
AC_SUBST(EVENT_PTHREADS_LIBS)
|
||||||
|
AC_SUBST(ZMQ_LIBS)
|
||||||
AC_SUBST(GMP_LIBS)
|
AC_SUBST(GMP_LIBS)
|
||||||
AC_SUBST(GMPXX_LIBS)
|
AC_SUBST(GMPXX_LIBS)
|
||||||
AC_SUBST(LIBSNARK_LIBS)
|
AC_SUBST(LIBSNARK_DEPINST)
|
||||||
AC_SUBST(LIBZCASH_LIBS)
|
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/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])
|
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
|
unset PKG_CONFIG_LIBDIR
|
||||||
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
|
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
|
||||||
|
|
||||||
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no"
|
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
|
||||||
AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue])
|
AC_CONFIG_SUBDIRS([src/secp256k1 src/snark src/univalue src/cryptoconditions])
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
@@ -1010,3 +987,25 @@ case $host in
|
|||||||
chmod 755 libtool
|
chmod 755 libtool
|
||||||
;;
|
;;
|
||||||
esac
|
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
|
zcash (1.0.8) jessie; urgency=medium
|
||||||
|
|
||||||
* 1.0.8 release.
|
* 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
|
Copyright: 1998-2016 The OpenSSL Project and 1995-1998 Eric Young
|
||||||
License: OpenSSL+SSLeay
|
License: OpenSSL+SSLeay
|
||||||
|
|
||||||
Files: depends/sources/miniupnpc-*.tar.gz
|
|
||||||
Copyright: 2005-2016 Thomas BERNARD
|
|
||||||
License: BSD-3clause
|
|
||||||
|
|
||||||
Files: depends/sources/zeromq-*.tar.gz
|
Files: depends/sources/zeromq-*.tar.gz
|
||||||
Copyright:
|
Copyright:
|
||||||
1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
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.
|
Copyright: 2008 Google Inc.
|
||||||
License: BSD-3clause-Google
|
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
|
License: Boost-Software-License-1.0
|
||||||
Permission is hereby granted, free of charge, to any person or organization
|
Permission is hereby granted, free of charge, to any person or organization
|
||||||
obtaining a copy of the software and accompanying documentation covered by
|
obtaining a copy of the software and accompanying documentation covered by
|
||||||
@@ -1091,3 +1099,226 @@ License: LGPL-with-ZeroMQ-exception
|
|||||||
Comment:
|
Comment:
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -4,25 +4,25 @@ TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)}
|
|||||||
SRCDIR=${SRCDIR:-$TOPDIR/src}
|
SRCDIR=${SRCDIR:-$TOPDIR/src}
|
||||||
MANDIR=${MANDIR:-$TOPDIR/doc/man}
|
MANDIR=${MANDIR:-$TOPDIR/doc/man}
|
||||||
|
|
||||||
ZCASHD=${ZCASHD:-$SRCDIR/zcashd}
|
KOMODOD=${KOMODOD:-$SRCDIR/komodod}
|
||||||
ZCASHCLI=${ZCASHCLI:-$SRCDIR/zcash-cli}
|
KOMODOCLI=${KOMODOCLI:-$SRCDIR/komodo-cli}
|
||||||
ZCASHTX=${ZCASHTX:-$SRCDIR/zcash-tx}
|
KOMODOTX=${KOMODOTX:-$SRCDIR/komodo-tx}
|
||||||
|
|
||||||
[ ! -x $ZCASHD ] && echo "$ZCASHD not found or not executable." && exit 1
|
[ ! -x $KOMODOD ] && echo "$KOMODOD not found or not executable." && exit 1
|
||||||
|
|
||||||
# The autodetected version git tag can screw up manpage output a little bit
|
# The autodetected version git tag can screw up manpage output a little bit
|
||||||
ZECVER=($($ZCASHCLI --version | head -n1 | awk -F'[ -]' '{ print $5, $6 }'))
|
KMDVER=($($KOMODOCLI --version | head -n1 | awk -F'[ -]' '{ print $5, $6 }'))
|
||||||
|
|
||||||
# Create a footer file with copyright content.
|
# Create a footer file with copyright content.
|
||||||
# This gets autodetected fine for zcashd if --version-string is not set,
|
# This gets autodetected fine for komodod if --version-string is not set,
|
||||||
# but has different outcomes for zcash-cli.
|
# but has different outcomes for komodo-cli.
|
||||||
echo "[COPYRIGHT]" > footer.h2m
|
echo "[COPYRIGHT]" > footer.h2m
|
||||||
$ZCASHD --version | sed -n '1!p' >> footer.h2m
|
$KOMODOD --version | sed -n '1!p' >> footer.h2m
|
||||||
|
|
||||||
for cmd in $ZCASHD $ZCASHCLI $ZCASHTX; do
|
for cmd in $KOMODOD $KOMODOCLI $KOMODOTX; do
|
||||||
cmdname="${cmd##*/}"
|
cmdname="${cmd##*/}"
|
||||||
help2man -N --version-string=${ZECVER[0]} --include=footer.h2m -o ${MANDIR}/${cmdname}.1 ${cmd}
|
help2man -N --version-string=${KMDVER[0]} --include=footer.h2m -o ${MANDIR}/${cmdname}.1 ${cmd}
|
||||||
sed -i "s/\\\-${ZECVER[1]}//g" ${MANDIR}/${cmdname}.1
|
sed -i "s/\\\-${KMDVER[1]}//g" ${MANDIR}/${cmdname}.1
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -f footer.h2m
|
rm -f footer.h2m
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import os
|
|||||||
|
|
||||||
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
|
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
|
||||||
OBJDUMP_CMD = os.getenv('OBJDUMP', '/usr/bin/objdump')
|
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):
|
def check_ELF_PIE(executable):
|
||||||
'''
|
'''
|
||||||
@@ -94,7 +95,7 @@ def check_ELF_RELRO(executable):
|
|||||||
raise IOError('Error opening file')
|
raise IOError('Error opening file')
|
||||||
for line in stdout.split(b'\n'):
|
for line in stdout.split(b'\n'):
|
||||||
tokens = line.split()
|
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
|
have_bindnow = True
|
||||||
return have_gnu_relro and have_bindnow
|
return have_gnu_relro and have_bindnow
|
||||||
|
|
||||||
@@ -114,26 +115,50 @@ def check_ELF_Canary(executable):
|
|||||||
|
|
||||||
def get_PE_dll_characteristics(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)
|
p = subprocess.Popen([OBJDUMP_CMD, '-x', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
(stdout, stderr) = p.communicate()
|
(stdout, stderr) = p.communicate()
|
||||||
if p.returncode:
|
if p.returncode:
|
||||||
raise IOError('Error opening file')
|
raise IOError('Error opening file')
|
||||||
|
arch = ''
|
||||||
|
bits = 0
|
||||||
for line in stdout.split('\n'):
|
for line in stdout.split('\n'):
|
||||||
tokens = line.split()
|
tokens = line.split()
|
||||||
|
if len(tokens)>=2 and tokens[0] == 'architecture:':
|
||||||
|
arch = tokens[1].rstrip(',')
|
||||||
if len(tokens)>=2 and tokens[0] == 'DllCharacteristics':
|
if len(tokens)>=2 and tokens[0] == 'DllCharacteristics':
|
||||||
return int(tokens[1],16)
|
bits = int(tokens[1],16)
|
||||||
return 0
|
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)'''
|
'''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):
|
def check_PE_NX(executable):
|
||||||
'''NX: DllCharacteristics bit 0x100 signifies nxcompat (DEP)'''
|
'''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 = {
|
CHECKS = {
|
||||||
'ELF': [
|
'ELF': [
|
||||||
@@ -143,7 +168,8 @@ CHECKS = {
|
|||||||
('Canary', check_ELF_Canary)
|
('Canary', check_ELF_Canary)
|
||||||
],
|
],
|
||||||
'PE': [
|
'PE': [
|
||||||
('PIE', check_PE_PIE),
|
('DYNAMIC_BASE', check_PE_DYNAMIC_BASE),
|
||||||
|
('HIGH_ENTROPY_VA', check_PE_HIGH_ENTROPY_VA),
|
||||||
('NX', check_PE_NX)
|
('NX', check_PE_NX)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -168,12 +194,18 @@ if __name__ == '__main__':
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
failed = []
|
failed = []
|
||||||
|
warning = []
|
||||||
for (name, func) in CHECKS[etype]:
|
for (name, func) in CHECKS[etype]:
|
||||||
if not func(filename):
|
if not func(filename):
|
||||||
|
if name in NONFATAL:
|
||||||
|
warning.append(name)
|
||||||
|
else:
|
||||||
failed.append(name)
|
failed.append(name)
|
||||||
if failed:
|
if failed:
|
||||||
print('%s: failed %s' % (filename, ' '.join(failed)))
|
print('%s: failed %s' % (filename, ' '.join(failed)))
|
||||||
retval = 1
|
retval = 1
|
||||||
|
if warning:
|
||||||
|
print('%s: warning %s' % (filename, ' '.join(warning)))
|
||||||
except IOError:
|
except IOError:
|
||||||
print('%s: cannot open' % filename)
|
print('%s: cannot open' % filename)
|
||||||
retval = 1
|
retval = 1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: "zcash-1.0.8"
|
name: "zcash-1.0.15"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
distro: "debian"
|
distro: "debian"
|
||||||
suites:
|
suites:
|
||||||
@@ -85,7 +85,7 @@ script: |
|
|||||||
BASEPREFIX=`pwd`/depends
|
BASEPREFIX=`pwd`/depends
|
||||||
# Build dependencies for each host
|
# Build dependencies for each host
|
||||||
for i in $HOSTS; do
|
for i in $HOSTS; do
|
||||||
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
NO_PROTON="x" make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Faketime for binaries
|
# Faketime for binaries
|
||||||
|
|||||||
160
contrib/komodo-cli.bash-completion
Normal file
160
contrib/komodo-cli.bash-completion
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
# 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
|
||||||
|
;;
|
||||||
|
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
|
# Copyright (c) 2016 The Bitcoin Core developers
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
_bitcoin_tx() {
|
_komodo_tx() {
|
||||||
local cur prev words=() cword
|
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
|
# it might not be in $PATH
|
||||||
bitcoin_tx="$1"
|
komodo_tx="$1"
|
||||||
|
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
_get_comp_words_by_ref -n =: cur prev words cword
|
_get_comp_words_by_ref -n =: cur prev words cword
|
||||||
@@ -27,15 +27,15 @@ _bitcoin_tx() {
|
|||||||
|
|
||||||
if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then
|
if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then
|
||||||
# only options (or an uncompletable hex-string) allowed
|
# only options (or an uncompletable hex-string) allowed
|
||||||
# parse bitcoin-tx -help for options
|
# parse komodo-tx -help for options
|
||||||
local helpopts
|
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" ) )
|
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
|
||||||
else
|
else
|
||||||
# only commands are allowed
|
# only commands are allowed
|
||||||
# parse -help for commands
|
# parse -help for commands
|
||||||
local helpcmds
|
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" ) )
|
COMPREPLY=( $( compgen -W "$helpcmds" -- "$cur" ) )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ _bitcoin_tx() {
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
} &&
|
} &&
|
||||||
complete -F _bitcoin_tx zcash-tx
|
complete -F _komodo_tx komodo-tx
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# mode: shell-script
|
# 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
|
# Copyright (c) 2012-2016 The Bitcoin Core developers
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
# call $bitcoin-cli for RPC
|
# call $zcash-cli for RPC
|
||||||
_zcash_rpc() {
|
_zcash_rpc() {
|
||||||
# determine already specified args necessary for RPC
|
# determine already specified args necessary for RPC
|
||||||
local rpcargs=()
|
local rpcargs=()
|
||||||
@@ -14,7 +14,7 @@ _zcash_rpc() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
$bitcoin_cli "${rpcargs[@]}" "$@"
|
$zcash_cli "${rpcargs[@]}" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add wallet accounts to COMPREPLY
|
# Add wallet accounts to COMPREPLY
|
||||||
@@ -28,11 +28,11 @@ _zcash_accounts() {
|
|||||||
|
|
||||||
_zcash_cli() {
|
_zcash_cli() {
|
||||||
local cur prev words=() cword
|
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
|
# save and use original argument to invoke zcash-cli for -help, help and RPC
|
||||||
# as bitcoin-cli might not be in $PATH
|
# as zcash-cli might not be in $PATH
|
||||||
bitcoin_cli="$1"
|
zcash_cli="$1"
|
||||||
|
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
_get_comp_words_by_ref -n = cur prev words cword
|
_get_comp_words_by_ref -n = cur prev words cword
|
||||||
@@ -82,10 +82,14 @@ _zcash_cli() {
|
|||||||
COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) )
|
COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) )
|
||||||
return 0
|
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" ) )
|
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
z_importkey|z_importviewingkey)
|
||||||
|
COMPREPLY=( $( compgen -W "yes no whenkeyisnew" -- "$cur" ) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
move|setaccount)
|
move|setaccount)
|
||||||
_zcash_accounts
|
_zcash_accounts
|
||||||
return 0
|
return 0
|
||||||
@@ -127,7 +131,7 @@ _zcash_cli() {
|
|||||||
|
|
||||||
# only parse -help if senseful
|
# only parse -help if senseful
|
||||||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
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
|
fi
|
||||||
|
|
||||||
# only parse help if senseful
|
# 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() {
|
_zcashd() {
|
||||||
local cur prev words=() cword
|
local cur prev words=() cword
|
||||||
local bitcoind
|
local zcashd
|
||||||
|
|
||||||
# save and use original argument to invoke zcashd for -help
|
# save and use original argument to invoke zcashd for -help
|
||||||
# it might not be in $PATH
|
# it might not be in $PATH
|
||||||
bitcoind="$1"
|
zcashd="$1"
|
||||||
|
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
_get_comp_words_by_ref -n = cur prev words cword
|
_get_comp_words_by_ref -n = cur prev words cword
|
||||||
@@ -21,7 +21,7 @@ _zcashd() {
|
|||||||
_filedir
|
_filedir
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-datadir=*)
|
-datadir=*|-exportdir=*)
|
||||||
cur="${cur#*=}"
|
cur="${cur#*=}"
|
||||||
_filedir -d
|
_filedir -d
|
||||||
return 0
|
return 0
|
||||||
@@ -34,7 +34,7 @@ _zcashd() {
|
|||||||
# only parse -help if senseful
|
# only parse -help if senseful
|
||||||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
||||||
local helpopts
|
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" ) )
|
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -74,9 +74,9 @@ include packages/packages.mk
|
|||||||
|
|
||||||
rust_packages_$(NO_RUST) = $(rust_packages)
|
rust_packages_$(NO_RUST) = $(rust_packages)
|
||||||
wallet_packages_$(NO_WALLET) = $(wallet_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)
|
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages)
|
||||||
all_packages = $(packages) $(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|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
|
||||||
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
|
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
|
||||||
-e 's|@no_wallet@|$(NO_WALLET)|' \
|
-e 's|@no_wallet@|$(NO_WALLET)|' \
|
||||||
-e 's|@no_upnp@|$(NO_UPNP)|' \
|
|
||||||
-e 's|@debug@|$(DEBUG)|' \
|
-e 's|@debug@|$(DEBUG)|' \
|
||||||
$< > $@
|
$< > $@
|
||||||
$(AT)touch $@
|
$(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
|
SOURCES_PATH: downloaded sources will be placed here
|
||||||
BASE_CACHE: built packages will be placed here
|
BASE_CACHE: built packages will be placed here
|
||||||
SDK_PATH: Path where sdk's can be found (used by OSX)
|
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_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
|
DEBUG: disable some optimizations and enable more runtime checking
|
||||||
|
|
||||||
If some packages are not built, for example `make NO_WALLET=1`, the appropriate
|
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_NM: = $(shell xcrun -f nm)
|
||||||
build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
|
build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
|
||||||
build_darwin_SHA256SUM = shasum -a 256
|
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 host on darwin builder. overrides darwin host preferences.
|
||||||
darwin_CC= gcc-5
|
#darwin_CC= gcc-5
|
||||||
darwin_CXX= g++-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_AR:=$(shell xcrun -f ar)
|
||||||
darwin_RANLIB:=$(shell xcrun -f ranlib)
|
darwin_RANLIB:=$(shell xcrun -f ranlib)
|
||||||
darwin_STRIP:=$(shell xcrun -f strip)
|
darwin_STRIP:=$(shell xcrun -f strip)
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
build_linux_SHA256SUM = sha256sum
|
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
|
if test -z $with_boost; then
|
||||||
with_boost=$depends_prefix
|
with_boost=$depends_prefix
|
||||||
fi
|
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
|
if test -z $enable_wallet && test -n "@no_wallet@"; then
|
||||||
enable_wallet=no
|
enable_wallet=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -z $with_miniupnpc && test -n "@no_upnp@"; then
|
|
||||||
with_miniupnpc=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x@host_os@ = xdarwin; then
|
if test x@host_os@ = xdarwin; then
|
||||||
BREW=no
|
BREW=no
|
||||||
PORT=no
|
PORT=no
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ endef
|
|||||||
define fetch_file
|
define fetch_file
|
||||||
(test -f $$($(1)_source_dir)/$(4) || \
|
(test -f $$($(1)_source_dir)/$(4) || \
|
||||||
( mkdir -p $$($(1)_download_dir) && echo Fetching $(1)... && \
|
( 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 && \
|
echo "$(5) $$($(1)_download_dir)/$(4).temp" > $$($(1)_download_dir)/.$(4).hash && \
|
||||||
$(build_SHA256SUM) -c $$($(1)_download_dir)/.$(4).hash && \
|
$(build_SHA256SUM) -c $$($(1)_download_dir)/.$(4).hash && \
|
||||||
mv $$($(1)_download_dir)/$(4).temp $$($(1)_source_dir)/$(4) && \
|
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)))
|
$(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)
|
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
|
#compute package-specific paths
|
||||||
$(1)_build_subdir?=.
|
$(1)_build_subdir?=.
|
||||||
$(1)_download_file?=$($(1)_file_name)
|
$(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_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig
|
||||||
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig
|
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig
|
||||||
$(1)_config_env+=PATH=$(build_prefix)/bin:$(PATH)
|
$(1)_config_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||||
$(1)_build_env+=PATH=$(build_prefix)/bin:$(PATH)
|
$(1)_build_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||||
$(1)_stage_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)"
|
$(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),)
|
ifneq ($($(1)_nm),)
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
OSX_MIN_VERSION=10.7
|
OSX_MIN_VERSION=10.8
|
||||||
OSX_SDK_VERSION=10.9
|
OSX_SDK_VERSION=10.11
|
||||||
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
||||||
LD64_VERSION=241.9
|
#<<<<<<< HEAD
|
||||||
darwin_CC=gcc-5 -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
#LD64_VERSION=241.9
|
||||||
darwin_CXX=g++-5 -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
#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_CFLAGS=-pipe
|
||||||
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
||||||
|
|||||||
@@ -9,6 +9,12 @@ define $(package)_set_vars
|
|||||||
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication
|
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication
|
||||||
$(package)_config_opts_mingw32=--enable-mingw
|
$(package)_config_opts_mingw32=--enable-mingw
|
||||||
$(package)_config_opts_linux=--with-pic
|
$(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
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ define $(package)_set_vars
|
|||||||
$(package)_config_opts_release=variant=release
|
$(package)_config_opts_release=variant=release
|
||||||
$(package)_config_opts_debug=variant=debug
|
$(package)_config_opts_debug=variant=debug
|
||||||
$(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-config.jam
|
$(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_linux=threadapi=pthread runtime-link=shared
|
||||||
$(package)_config_opts_darwin=--toolset=gcc 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
|
$(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)_toolset_darwin=gcc
|
||||||
$(package)_archiver_darwin=$($(package)_ar)
|
$(package)_archiver_darwin=$($(package)_ar)
|
||||||
$(package)_config_libraries=chrono,filesystem,program_options,system,thread,test
|
$(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
|
$(package)_cxxflags_linux=-fPIC
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ package=googlemock
|
|||||||
$(package)_version=1.7.0
|
$(package)_version=1.7.0
|
||||||
$(package)_dependencies=googletest
|
$(package)_dependencies=googletest
|
||||||
|
|
||||||
$(package)_download_path=https://github.com/google/$(package)/archive/
|
$(package)_download_path=https://github.com/google/$(package)/archive
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_download_file=release-$($(package)_version).tar.gz
|
$(package)_download_file=release-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=3f20b6acb37e5a98e8c4518165711e3e35d47deb6cdb5a4dd4566563b5efd232
|
$(package)_sha256_hash=3f20b6acb37e5a98e8c4518165711e3e35d47deb6cdb5a4dd4566563b5efd232
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package=googletest
|
package=googletest
|
||||||
$(package)_version=1.7.0
|
$(package)_version=1.8.0
|
||||||
$(package)_download_path=https://github.com/google/$(package)/archive/
|
$(package)_download_path=https://github.com/google/$(package)/archive/
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_download_file=release-$($(package)_version).tar.gz
|
$(package)_download_file=release-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=f73a6546fdf9fce9ff93a5015e0333a8af3062a152a9ad6bcb772c96687016cc
|
$(package)_sha256_hash=58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8
|
||||||
|
|
||||||
ifeq ($(build_os),darwin)
|
ifeq ($(build_os),darwin)
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
@@ -19,11 +19,15 @@ endef
|
|||||||
else
|
else
|
||||||
$(package)_install=install
|
$(package)_install=install
|
||||||
define $(package)_build_cmds
|
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
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
$($(package)_install) -D ./make/gtest.a $($(package)_staging_dir)$(host_prefix)/lib/libgtest.a && \
|
mkdir -p $($(package)_staging_dir)$(host_prefix)/lib && \
|
||||||
cp -a ./include $($(package)_staging_dir)$(host_prefix)/include
|
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
|
endef
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package=libsnark
|
package=libsnark
|
||||||
$(package)_version=0.1
|
$(package)_version=0.1
|
||||||
$(package)_download_path=https://supernetorg.bintray.com/misc/
|
$(package)_download_path=https://supernetorg.bintray.com/misc
|
||||||
$(package)_file_name=$(package)-$($(package)_git_commit).tar.gz
|
$(package)_file_name=$(package)-$($(package)_git_commit).tar.gz
|
||||||
$(package)_download_file=$(package)-$($(package)_git_commit).tar.gz
|
$(package)_download_file=$(package)-$($(package)_git_commit).tar.gz
|
||||||
$(package)_sha256_hash=47478adc2ae88c448dc736d59dfe007de6478e41e88d2d4d2ff4135a17ee6f90
|
$(package)_sha256_hash=47478adc2ae88c448dc736d59dfe007de6478e41e88d2d4d2ff4135a17ee6f90
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
package=libsodium
|
package=libsodium
|
||||||
$(package)_version=1.0.11
|
#<<<<<<< HEAD
|
||||||
$(package)_download_path=https://supernetorg.bintray.com/misc
|
#$(package)_version=1.0.11
|
||||||
$(package)_file_name=libsodium-1.0.11.tar.gz
|
#$(package)_download_path=https://supernetorg.bintray.com/misc
|
||||||
$(package)_sha256_hash=a14549db3c49f6ae2170cbbf4664bd48ace50681045e8dbea7c8d9fb96f9c765
|
#$(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)_dependencies=
|
||||||
$(package)_config_opts=
|
$(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_aarch64_linux=linux-generic64
|
||||||
$(package)_config_opts_mipsel_linux=linux-generic32
|
$(package)_config_opts_mipsel_linux=linux-generic32
|
||||||
$(package)_config_opts_mips_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_darwin=darwin64-x86_64-cc
|
||||||
$(package)_config_opts_x86_64_mingw32=mingw64
|
$(package)_config_opts_x86_64_mingw32=mingw64
|
||||||
$(package)_config_opts_i686_mingw32=mingw
|
$(package)_config_opts_i686_mingw32=mingw
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
rust_packages := rust librustzcash
|
rust_packages := rust librustzcash
|
||||||
zcash_packages := libsnark libgmp libsodium
|
|
||||||
|
|
||||||
|
proton_packages := proton
|
||||||
|
zcash_packages := libgmp libsodium
|
||||||
ifeq ($(host_os),linux)
|
ifeq ($(host_os),linux)
|
||||||
packages := boost openssl libevent zeromq $(zcash_packages) googletest googlemock
|
packages := boost openssl libevent zeromq $(zcash_packages) googletest #googlemock
|
||||||
else
|
else
|
||||||
packages := boost openssl libevent zeromq $(zcash_packages) googletest googlemock libcurl
|
packages := boost openssl libevent zeromq $(zcash_packages) libcurl googletest #googlemock
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
native_packages := native_ccache
|
native_packages := native_ccache
|
||||||
|
|
||||||
wallet_packages=bdb
|
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=rust
|
||||||
$(package)_version=1.16.0
|
$(package)_version=1.16.0
|
||||||
$(package)_download_path=https://static.rust-lang.org/dist
|
$(package)_download_path=https://static.rust-lang.org/dist
|
||||||
ifeq ($(build_os),darwin)
|
#<<<<<<< HEAD
|
||||||
$(package)_file_name=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz
|
#ifeq ($(build_os),darwin)
|
||||||
$(package)_sha256_hash=2d08259ee038d3a2c77a93f1a31fc59e7a1d6d1bbfcba3dba3c8213b2e5d1926
|
#$(package)_file_name=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz
|
||||||
else ifeq ($(host_os),mingw32)
|
#$(package)_sha256_hash=2d08259ee038d3a2c77a93f1a31fc59e7a1d6d1bbfcba3dba3c8213b2e5d1926
|
||||||
$(package)_file_name=rust-$($(package)_version)-i686-unknown-linux-gnu.tar.gz
|
#else ifeq ($(host_os),mingw32)
|
||||||
$(package)_sha256_hash=b5859161ebb182d3b75fa14a5741e5de87b088146fb0ef4a30f3b2439c6179c5
|
#$(package)_file_name=rust-$($(package)_version)-i686-unknown-linux-gnu.tar.gz
|
||||||
else
|
#$(package)_sha256_hash=b5859161ebb182d3b75fa14a5741e5de87b088146fb0ef4a30f3b2439c6179c5
|
||||||
$(package)_file_name=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz
|
#else
|
||||||
$(package)_sha256_hash=48621912c242753ba37cad5145df375eeba41c81079df46f93ffb4896542e8fd
|
#$(package)_file_name=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz
|
||||||
endif
|
#$(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
|
define $(package)_stage_cmds
|
||||||
./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig
|
./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ $(package)_sha256_hash=27d1e82a099228ee85a7ddb2260f40830212402c605a4a10b5e5498a7
|
|||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--without-documentation --disable-shared --disable-curve
|
$(package)_config_opts=--without-documentation --disable-shared --disable-curve
|
||||||
$(package)_config_opts_linux=--with-pic
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
$(package)_cxxflags=-std=c++11
|
||||||
endef
|
endef
|
||||||
endif
|
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
|
Zcash Contributors
|
||||||
==================
|
==================
|
||||||
|
|
||||||
Jack Grigg (392)
|
Jack Grigg (601)
|
||||||
Simon Liu (254)
|
Simon Liu (297)
|
||||||
Sean Bowe (185)
|
Sean Bowe (193)
|
||||||
Daira Hopwood (80)
|
Daira Hopwood (102)
|
||||||
|
Wladimir J. van der Laan (71)
|
||||||
Taylor Hornby (65)
|
Taylor Hornby (65)
|
||||||
Wladimir J. van der Laan (58)
|
Jay Graber (61)
|
||||||
Jonas Schnelli (48)
|
Nathan Wilcox (56)
|
||||||
Jay Graber (47)
|
Jonas Schnelli (49)
|
||||||
Kevin Gallagher (38)
|
Kevin Gallagher (38)
|
||||||
Cory Fields (15)
|
Cory Fields (30)
|
||||||
Pieter Wuille (14)
|
Pieter Wuille (24)
|
||||||
Nathan Wilcox (10)
|
syd (15)
|
||||||
nomnombtc (9)
|
nomnombtc (9)
|
||||||
fanquake (5)
|
Paige Peterson (9)
|
||||||
Paige Peterson (5)
|
Matt Corallo (9)
|
||||||
MarcoFalke (5)
|
fanquake (8)
|
||||||
|
MarcoFalke (7)
|
||||||
|
Luke Dashjr (6)
|
||||||
Johnathan Corgan (5)
|
Johnathan Corgan (5)
|
||||||
Gregory Maxwell (5)
|
Gregory Maxwell (5)
|
||||||
|
Ariel Gabizon (5)
|
||||||
|
kozyilmaz (4)
|
||||||
Philip Kaufmann (4)
|
Philip Kaufmann (4)
|
||||||
Peter Todd (4)
|
Peter Todd (4)
|
||||||
Patrick Strateman (4)
|
Patrick Strateman (4)
|
||||||
Matt Corallo (4)
|
|
||||||
Karl-Johan Alm (4)
|
Karl-Johan Alm (4)
|
||||||
|
Jorge Timón (4)
|
||||||
Jeff Garzik (4)
|
Jeff Garzik (4)
|
||||||
David Mercer (4)
|
David Mercer (4)
|
||||||
Daniel Cousens (4)
|
Daniel Cousens (4)
|
||||||
lpescher (3)
|
lpescher (3)
|
||||||
|
Suhas Daftuar (3)
|
||||||
Pavel Janík (3)
|
Pavel Janík (3)
|
||||||
|
João Barbosa (3)
|
||||||
|
Ariel (3)
|
||||||
Alfie John (3)
|
Alfie John (3)
|
||||||
|
str4d (2)
|
||||||
paveljanik (2)
|
paveljanik (2)
|
||||||
|
kpcyrd (2)
|
||||||
aniemerg (2)
|
aniemerg (2)
|
||||||
Scott (2)
|
Scott (2)
|
||||||
Robert C. Seacord (2)
|
Robert C. Seacord (2)
|
||||||
Luke Dashjr (2)
|
Per Grön (2)
|
||||||
João Barbosa (2)
|
Pavel Vasin (2)
|
||||||
Joe Turgeon (2)
|
Joe Turgeon (2)
|
||||||
|
Jason Davies (2)
|
||||||
Jack Gavigan (2)
|
Jack Gavigan (2)
|
||||||
ITH4Coinomia (2)
|
ITH4Coinomia (2)
|
||||||
Gavin Andresen (2)
|
Gavin Andresen (2)
|
||||||
|
Daniel Kraft (2)
|
||||||
|
Bjorn Hjortsberg (2)
|
||||||
|
Amgad Abdelhafez (2)
|
||||||
zathras-crypto (1)
|
zathras-crypto (1)
|
||||||
unsystemizer (1)
|
unsystemizer (1)
|
||||||
|
practicalswift (1)
|
||||||
mruddy (1)
|
mruddy (1)
|
||||||
mrbandrews (1)
|
mrbandrews (1)
|
||||||
kazcw (1)
|
kazcw (1)
|
||||||
|
jc (1)
|
||||||
isle2983 (1)
|
isle2983 (1)
|
||||||
instagibbs (1)
|
instagibbs (1)
|
||||||
|
emilrus (1)
|
||||||
dexX7 (1)
|
dexX7 (1)
|
||||||
|
daniel (1)
|
||||||
calebogden (1)
|
calebogden (1)
|
||||||
ayleph (1)
|
ayleph (1)
|
||||||
Tom Ritter (1)
|
Tom Ritter (1)
|
||||||
Stephen (1)
|
Stephen (1)
|
||||||
S. Matthew English (1)
|
S. Matthew English (1)
|
||||||
Pavel Vasin (1)
|
Ross Nicoll (1)
|
||||||
|
René Nyffenegger (1)
|
||||||
Paul Georgiou (1)
|
Paul Georgiou (1)
|
||||||
Paragon Initiative Enterprises, LLC (1)
|
Paragon Initiative Enterprises, LLC (1)
|
||||||
|
Nicolas DORIER (1)
|
||||||
Nathaniel Mahieu (1)
|
Nathaniel Mahieu (1)
|
||||||
Murilo Santana (1)
|
Murilo Santana (1)
|
||||||
|
Maxwell Gubler (1)
|
||||||
Matt Quinn (1)
|
Matt Quinn (1)
|
||||||
|
Mark Friedenbach (1)
|
||||||
|
Marius Kjærstad (1)
|
||||||
Louis Nyffenegger (1)
|
Louis Nyffenegger (1)
|
||||||
Leo Arias (1)
|
Leo Arias (1)
|
||||||
Lars-Magnus Skog (1)
|
Lars-Magnus Skog (1)
|
||||||
Jorge Timón (1)
|
Kevin Pan (1)
|
||||||
|
Jonathan "Duke" Leto (1)
|
||||||
|
Jonas Nick (1)
|
||||||
Jeffrey Walton (1)
|
Jeffrey Walton (1)
|
||||||
Ian Kelling (1)
|
Ian Kelling (1)
|
||||||
Gaurav Rana (1)
|
Gaurav Rana (1)
|
||||||
@@ -70,17 +95,23 @@ Forrest Voight (1)
|
|||||||
Florian Schmaus (1)
|
Florian Schmaus (1)
|
||||||
Ethan Heilman (1)
|
Ethan Heilman (1)
|
||||||
Eran Tromer (1)
|
Eran Tromer (1)
|
||||||
Daniel Kraft (1)
|
Duke Leto (1)
|
||||||
Christian von Roques (1)
|
Christian von Roques (1)
|
||||||
Chirag Davé (1)
|
Chirag Davé (1)
|
||||||
Casey Rodarmor (1)
|
Casey Rodarmor (1)
|
||||||
Cameron Boehmer (1)
|
Cameron Boehmer (1)
|
||||||
Bryan Stitt (1)
|
Bryan Stitt (1)
|
||||||
|
Bruno Arueira (1)
|
||||||
|
Boris Hajduk (1)
|
||||||
Bob McElrath (1)
|
Bob McElrath (1)
|
||||||
Bitcoin Error Log (1)
|
Bitcoin Error Log (1)
|
||||||
|
Ashley Holman (1)
|
||||||
|
Anthony Towns (1)
|
||||||
Allan Niemerg (1)
|
Allan Niemerg (1)
|
||||||
Alex van der Peet (1)
|
Alex van der Peet (1)
|
||||||
|
Alex Morcos (1)
|
||||||
Alex (1)
|
Alex (1)
|
||||||
Adam Weiss (1)
|
Adam Weiss (1)
|
||||||
Adam Brown (1)
|
Adam Brown (1)
|
||||||
4ZEC (1)
|
4ZEC (1)
|
||||||
|
21E14 (1)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
* zcash.conf: contains configuration settings for zcashd
|
* komodo.conf: contains configuration settings for komodod
|
||||||
* zcashd.pid: stores the process id of zcashd while running
|
* komodod.pid: stores the process id of komodod while running
|
||||||
* blocks/blk000??.dat: block data (custom, 128 MiB per file)
|
* blocks/blk000??.dat: block data (custom, 128 MiB per file)
|
||||||
* blocks/rev000??.dat; block undo data (custom)
|
* blocks/rev000??.dat; block undo data (custom)
|
||||||
* blocks/index/*; block index (LevelDB)
|
* blocks/index/*; block index (LevelDB)
|
||||||
* chainstate/*; block chain state database (LevelDB)
|
* chainstate/*; block chain state database (LevelDB)
|
||||||
* database/*: BDB database environment
|
* database/*: BDB database environment
|
||||||
* db.log: wallet database log file
|
* db.log: wallet database log file
|
||||||
* debug.log: contains debug information and general logging generated by zcashd
|
* debug.log: contains debug information and general logging generated by komodod
|
||||||
* fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation
|
* fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation
|
||||||
* peers.dat: peer IP address database (custom format)
|
* peers.dat: peer IP address database (custom format)
|
||||||
* wallet.dat: personal wallet (BDB) with keys and transactions
|
* wallet.dat: personal wallet (BDB) with keys and transactions
|
||||||
|
|||||||
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.
|
||||||
84
doc/man/komodo-cli.1
Normal file
84
doc/man/komodo-cli.1
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||||
|
.TH KOMODO-CLI "1" "March 2018" "komodo-cli v1.0.8" "User Commands"
|
||||||
|
.SH NAME
|
||||||
|
komodo-cli \- manual page for komodo-cli v1.0.8
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Komodo RPC client version v1.0.8
|
||||||
|
.PP
|
||||||
|
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||||
|
please see <https://z.cash/support/security/index.html>.
|
||||||
|
.SS "Usage:"
|
||||||
|
.TP
|
||||||
|
komodo\-cli [options] <command> [params]
|
||||||
|
Send command to Komodo
|
||||||
|
.TP
|
||||||
|
komodo\-cli [options] help
|
||||||
|
List commands
|
||||||
|
.TP
|
||||||
|
komodo\-cli [options] help <command>
|
||||||
|
Get help for a command
|
||||||
|
.SH OPTIONS
|
||||||
|
.HP
|
||||||
|
\-?
|
||||||
|
.IP
|
||||||
|
This help message
|
||||||
|
.HP
|
||||||
|
\fB\-conf=\fR<file>
|
||||||
|
.IP
|
||||||
|
Specify configuration file (default: komodo.conf)
|
||||||
|
.HP
|
||||||
|
\fB\-datadir=\fR<dir>
|
||||||
|
.IP
|
||||||
|
Specify data directory
|
||||||
|
.HP
|
||||||
|
\fB\-testnet\fR
|
||||||
|
.IP
|
||||||
|
Use the test network
|
||||||
|
.HP
|
||||||
|
\fB\-regtest\fR
|
||||||
|
.IP
|
||||||
|
Enter regression test mode, which uses a special chain in which blocks
|
||||||
|
can be solved instantly. This is intended for regression testing tools
|
||||||
|
and app development.
|
||||||
|
.HP
|
||||||
|
\fB\-rpcconnect=\fR<ip>
|
||||||
|
.IP
|
||||||
|
Send commands to node running on <ip> (default: 127.0.0.1)
|
||||||
|
.HP
|
||||||
|
\fB\-rpcport=\fR<port>
|
||||||
|
.IP
|
||||||
|
Connect to JSON\-RPC on <port> (default: 8232 or testnet: 18232)
|
||||||
|
.HP
|
||||||
|
\fB\-rpcwait\fR
|
||||||
|
.IP
|
||||||
|
Wait for RPC server to start
|
||||||
|
.HP
|
||||||
|
\fB\-rpcuser=\fR<user>
|
||||||
|
.IP
|
||||||
|
Username for JSON\-RPC connections
|
||||||
|
.HP
|
||||||
|
\fB\-rpcpassword=\fR<pw>
|
||||||
|
.IP
|
||||||
|
Password for JSON\-RPC connections
|
||||||
|
.HP
|
||||||
|
\fB\-rpcclienttimeout=\fR<n>
|
||||||
|
.IP
|
||||||
|
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/index.html>.
|
||||||
|
|
||||||
|
Copyright (C) 2009-2017 The Bitcoin Core Developers
|
||||||
|
Copyright (C) 2015-2017 The Zcash Developers
|
||||||
|
Copyright (C) 2015-2017 jl777 and SuperNET developers
|
||||||
|
|
||||||
|
This is experimental software.
|
||||||
|
|
||||||
|
Distributed under the MIT software license, see the accompanying file COPYING
|
||||||
|
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.
|
||||||
102
doc/man/komodo-tx.1
Normal file
102
doc/man/komodo-tx.1
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||||
|
.TH KOMODO-TX "1" "March 2018" "komodo-tx v1.0.8" "User Commands"
|
||||||
|
.SH NAME
|
||||||
|
komodo-tx \- manual page for komodo-tx v1.0.8
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Zcash zcash\-tx utility version v1.0.8
|
||||||
|
.SS "Usage:"
|
||||||
|
.TP
|
||||||
|
zcash\-tx [options] <hex\-tx> [commands]
|
||||||
|
Update hex\-encoded zcash transaction
|
||||||
|
.TP
|
||||||
|
zcash\-tx [options] \fB\-create\fR [commands]
|
||||||
|
Create hex\-encoded zcash transaction
|
||||||
|
.SH OPTIONS
|
||||||
|
.HP
|
||||||
|
\-?
|
||||||
|
.IP
|
||||||
|
This help message
|
||||||
|
.HP
|
||||||
|
\fB\-create\fR
|
||||||
|
.IP
|
||||||
|
Create new, empty TX.
|
||||||
|
.HP
|
||||||
|
\fB\-json\fR
|
||||||
|
.IP
|
||||||
|
Select JSON output
|
||||||
|
.HP
|
||||||
|
\fB\-txid\fR
|
||||||
|
.IP
|
||||||
|
Output only the hex\-encoded transaction id of the resultant transaction.
|
||||||
|
.HP
|
||||||
|
\fB\-regtest\fR
|
||||||
|
.IP
|
||||||
|
Enter regression test mode, which uses a special chain in which blocks
|
||||||
|
can be solved instantly.
|
||||||
|
.HP
|
||||||
|
\fB\-testnet\fR
|
||||||
|
.IP
|
||||||
|
Use the test network
|
||||||
|
.PP
|
||||||
|
Commands:
|
||||||
|
.IP
|
||||||
|
delin=N
|
||||||
|
.IP
|
||||||
|
Delete input N from TX
|
||||||
|
.IP
|
||||||
|
delout=N
|
||||||
|
.IP
|
||||||
|
Delete output N from TX
|
||||||
|
.IP
|
||||||
|
in=TXID:VOUT
|
||||||
|
.IP
|
||||||
|
Add input to TX
|
||||||
|
.IP
|
||||||
|
locktime=N
|
||||||
|
.IP
|
||||||
|
Set TX lock time to N
|
||||||
|
.IP
|
||||||
|
nversion=N
|
||||||
|
.IP
|
||||||
|
Set TX version to N
|
||||||
|
.IP
|
||||||
|
outaddr=VALUE:ADDRESS
|
||||||
|
.IP
|
||||||
|
Add address\-based output to TX
|
||||||
|
.IP
|
||||||
|
outscript=VALUE:SCRIPT
|
||||||
|
.IP
|
||||||
|
Add raw script output to TX
|
||||||
|
.IP
|
||||||
|
sign=SIGHASH\-FLAGS
|
||||||
|
.IP
|
||||||
|
Add zero or more signatures to transaction. This command requires JSON
|
||||||
|
registers:prevtxs=JSON object, privatekeys=JSON object. See
|
||||||
|
signrawtransaction docs for format of sighash flags, JSON objects.
|
||||||
|
.PP
|
||||||
|
Register Commands:
|
||||||
|
.IP
|
||||||
|
load=NAME:FILENAME
|
||||||
|
.IP
|
||||||
|
Load JSON file FILENAME into register NAME
|
||||||
|
.IP
|
||||||
|
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/index.html>.
|
||||||
|
|
||||||
|
Copyright (C) 2009-2017 The Bitcoin Core Developers
|
||||||
|
Copyright (C) 2015-2017 The Zcash Developers
|
||||||
|
Copyright (C) 2015-2017 jl777 and SuperNET developers
|
||||||
|
|
||||||
|
This is experimental software.
|
||||||
|
|
||||||
|
Distributed under the MIT software license, see the accompanying file COPYING
|
||||||
|
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.
|
||||||
472
doc/man/komodod.1
Normal file
472
doc/man/komodod.1
Normal file
@@ -0,0 +1,472 @@
|
|||||||
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||||
|
.TH KOMODOD "1" "March 2018" "komodod v1.0.8" "User Commands"
|
||||||
|
.SH NAME
|
||||||
|
komodod \- manual page for komodod v1.0.8
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Komodo Daemon version v1.0.8
|
||||||
|
.PP
|
||||||
|
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||||
|
please see <https://z.cash/support/security/index.html>.
|
||||||
|
.SS "Usage:"
|
||||||
|
.TP
|
||||||
|
komodod [options]
|
||||||
|
Start Komodo Daemon
|
||||||
|
.SH OPTIONS
|
||||||
|
.HP
|
||||||
|
\-?
|
||||||
|
.IP
|
||||||
|
This help message
|
||||||
|
.HP
|
||||||
|
\fB\-alerts\fR
|
||||||
|
.IP
|
||||||
|
Receive and display P2P network alerts (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-alertnotify=\fR<cmd>
|
||||||
|
.IP
|
||||||
|
Execute command when a relevant alert is received or we see a really
|
||||||
|
long fork (%s in cmd is replaced by message)
|
||||||
|
.HP
|
||||||
|
\fB\-blocknotify=\fR<cmd>
|
||||||
|
.IP
|
||||||
|
Execute command when the best block changes (%s in cmd is replaced by
|
||||||
|
block hash)
|
||||||
|
.HP
|
||||||
|
\fB\-checkblocks=\fR<n>
|
||||||
|
.IP
|
||||||
|
How many blocks to check at startup (default: 288, 0 = all)
|
||||||
|
.HP
|
||||||
|
\fB\-checklevel=\fR<n>
|
||||||
|
.IP
|
||||||
|
How thorough the block verification of \fB\-checkblocks\fR is (0\-4, default: 3)
|
||||||
|
.HP
|
||||||
|
\fB\-conf=\fR<file>
|
||||||
|
.IP
|
||||||
|
Specify configuration file (default: komodo.conf)
|
||||||
|
.HP
|
||||||
|
\fB\-daemon\fR
|
||||||
|
.IP
|
||||||
|
Run in the background as a daemon and accept commands
|
||||||
|
.HP
|
||||||
|
\fB\-datadir=\fR<dir>
|
||||||
|
.IP
|
||||||
|
Specify data directory
|
||||||
|
.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)
|
||||||
|
.HP
|
||||||
|
\fB\-loadblock=\fR<file>
|
||||||
|
.IP
|
||||||
|
Imports blocks from external blk000??.dat file on startup
|
||||||
|
.HP
|
||||||
|
\fB\-maxorphantx=\fR<n>
|
||||||
|
.IP
|
||||||
|
Keep at most <n> unconnectable transactions in memory (default: 100)
|
||||||
|
.HP
|
||||||
|
\fB\-par=\fR<n>
|
||||||
|
.IP
|
||||||
|
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>
|
||||||
|
.IP
|
||||||
|
Specify pid file (default: komodod.pid)
|
||||||
|
.HP
|
||||||
|
\fB\-prune=\fR<n>
|
||||||
|
.IP
|
||||||
|
Reduce storage requirements by pruning (deleting) old blocks. This mode
|
||||||
|
disables wallet support and is incompatible with \fB\-txindex\fR. Warning:
|
||||||
|
Reverting this setting requires re\-downloading the entire blockchain.
|
||||||
|
(default: 0 = disable pruning blocks, >550 = target size in MiB to use
|
||||||
|
for block files)
|
||||||
|
.HP
|
||||||
|
\fB\-reindex\fR
|
||||||
|
.IP
|
||||||
|
Rebuild block chain index from current blk000??.dat files on startup
|
||||||
|
.HP
|
||||||
|
\fB\-sysperms\fR
|
||||||
|
.IP
|
||||||
|
Create new files with system default permissions, instead of umask 077
|
||||||
|
(only effective with disabled wallet functionality)
|
||||||
|
.HP
|
||||||
|
\fB\-txindex\fR
|
||||||
|
.IP
|
||||||
|
Maintain a full transaction index, used by the getrawtransaction rpc
|
||||||
|
call (default: 0)
|
||||||
|
.PP
|
||||||
|
Connection options:
|
||||||
|
.HP
|
||||||
|
\fB\-addnode=\fR<ip>
|
||||||
|
.IP
|
||||||
|
Add a node to connect to and attempt to keep the connection open
|
||||||
|
.HP
|
||||||
|
\fB\-banscore=\fR<n>
|
||||||
|
.IP
|
||||||
|
Threshold for disconnecting misbehaving peers (default: 100)
|
||||||
|
.HP
|
||||||
|
\fB\-bantime=\fR<n>
|
||||||
|
.IP
|
||||||
|
Number of seconds to keep misbehaving peers from reconnecting (default:
|
||||||
|
86400)
|
||||||
|
.HP
|
||||||
|
\fB\-bind=\fR<addr>
|
||||||
|
.IP
|
||||||
|
Bind to given address and always listen on it. Use [host]:port notation
|
||||||
|
for IPv6
|
||||||
|
.HP
|
||||||
|
\fB\-connect=\fR<ip>
|
||||||
|
.IP
|
||||||
|
Connect only to the specified node(s)
|
||||||
|
.HP
|
||||||
|
\fB\-discover\fR
|
||||||
|
.IP
|
||||||
|
Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR
|
||||||
|
or \fB\-proxy\fR)
|
||||||
|
.HP
|
||||||
|
\fB\-dns\fR
|
||||||
|
.IP
|
||||||
|
Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-dnsseed\fR
|
||||||
|
.IP
|
||||||
|
Query for peer addresses via DNS lookup, if low on addresses (default: 1
|
||||||
|
unless \fB\-connect\fR)
|
||||||
|
.HP
|
||||||
|
\fB\-externalip=\fR<ip>
|
||||||
|
.IP
|
||||||
|
Specify your own public address
|
||||||
|
.HP
|
||||||
|
\fB\-forcednsseed\fR
|
||||||
|
.IP
|
||||||
|
Always query for peer addresses via DNS lookup (default: 0)
|
||||||
|
.HP
|
||||||
|
\fB\-listen\fR
|
||||||
|
.IP
|
||||||
|
Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
|
||||||
|
.HP
|
||||||
|
\fB\-listenonion\fR
|
||||||
|
.IP
|
||||||
|
Automatically create Tor hidden service (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-maxconnections=\fR<n>
|
||||||
|
.IP
|
||||||
|
Maintain at most <n> connections to peers (default: 125)
|
||||||
|
.HP
|
||||||
|
\fB\-maxreceivebuffer=\fR<n>
|
||||||
|
.IP
|
||||||
|
Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
|
||||||
|
.HP
|
||||||
|
\fB\-maxsendbuffer=\fR<n>
|
||||||
|
.IP
|
||||||
|
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
|
||||||
|
.HP
|
||||||
|
\fB\-onion=\fR<ip:port>
|
||||||
|
.IP
|
||||||
|
Use separate SOCKS5 proxy to reach peers via Tor hidden services
|
||||||
|
(default: \fB\-proxy\fR)
|
||||||
|
.HP
|
||||||
|
\fB\-onlynet=\fR<net>
|
||||||
|
.IP
|
||||||
|
Only connect to nodes in network <net> (ipv4, ipv6 or onion)
|
||||||
|
.HP
|
||||||
|
\fB\-permitbaremultisig\fR
|
||||||
|
.IP
|
||||||
|
Relay non\-P2SH multisig (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-port=\fR<port>
|
||||||
|
.IP
|
||||||
|
Listen for connections on <port> (default: 7770 or testnet: 17770)
|
||||||
|
.HP
|
||||||
|
\fB\-proxy=\fR<ip:port>
|
||||||
|
.IP
|
||||||
|
Connect through SOCKS5 proxy
|
||||||
|
.HP
|
||||||
|
\fB\-proxyrandomize\fR
|
||||||
|
.IP
|
||||||
|
Randomize credentials for every proxy connection. This enables Tor
|
||||||
|
stream isolation (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-seednode=\fR<ip>
|
||||||
|
.IP
|
||||||
|
Connect to a node to retrieve peer addresses, and disconnect
|
||||||
|
.HP
|
||||||
|
\fB\-timeout=\fR<n>
|
||||||
|
.IP
|
||||||
|
Specify connection timeout in milliseconds (minimum: 1, default: 5000)
|
||||||
|
.HP
|
||||||
|
\fB\-torcontrol=\fR<ip>:<port>
|
||||||
|
.IP
|
||||||
|
Tor control port to use if onion listening enabled (default:
|
||||||
|
127.0.0.1:9051)
|
||||||
|
.HP
|
||||||
|
\fB\-torpassword=\fR<pass>
|
||||||
|
.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
|
||||||
|
[host]:port notation for IPv6
|
||||||
|
.HP
|
||||||
|
\fB\-whitelist=\fR<netmask>
|
||||||
|
.IP
|
||||||
|
Whitelist peers connecting from the given netmask or IP address. Can be
|
||||||
|
specified multiple times. Whitelisted peers cannot be DoS banned and
|
||||||
|
their transactions are always relayed, even if they are already in the
|
||||||
|
mempool, useful e.g. for a gateway
|
||||||
|
.PP
|
||||||
|
Wallet options:
|
||||||
|
.HP
|
||||||
|
\fB\-disablewallet\fR
|
||||||
|
.IP
|
||||||
|
Do not load the wallet and disable wallet RPC calls
|
||||||
|
.HP
|
||||||
|
\fB\-keypool=\fR<n>
|
||||||
|
.IP
|
||||||
|
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)
|
||||||
|
.HP
|
||||||
|
\fB\-rescan\fR
|
||||||
|
.IP
|
||||||
|
Rescan the blockchain for missing wallet transactions on startup
|
||||||
|
.HP
|
||||||
|
\fB\-salvagewallet\fR
|
||||||
|
.IP
|
||||||
|
Attempt to recover private keys from a corrupt wallet.dat on startup
|
||||||
|
.HP
|
||||||
|
\fB\-sendfreetransactions\fR
|
||||||
|
.IP
|
||||||
|
Send transactions as zero\-fee transactions if possible (default: 0)
|
||||||
|
.HP
|
||||||
|
\fB\-spendzeroconfchange\fR
|
||||||
|
.IP
|
||||||
|
Spend unconfirmed change when sending transactions (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-txconfirmtarget=\fR<n>
|
||||||
|
.IP
|
||||||
|
If paytxfee is not set, include enough fee so transactions begin
|
||||||
|
confirmation on average within n blocks (default: 2)
|
||||||
|
.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)
|
||||||
|
.HP
|
||||||
|
\fB\-upgradewallet\fR
|
||||||
|
.IP
|
||||||
|
Upgrade wallet to latest format on startup
|
||||||
|
.HP
|
||||||
|
\fB\-wallet=\fR<file>
|
||||||
|
.IP
|
||||||
|
Specify wallet file (within data directory) (default: wallet.dat)
|
||||||
|
.HP
|
||||||
|
\fB\-walletbroadcast\fR
|
||||||
|
.IP
|
||||||
|
Make the wallet broadcast transactions (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-walletnotify=\fR<cmd>
|
||||||
|
.IP
|
||||||
|
Execute command when a wallet transaction changes (%s in cmd is replaced
|
||||||
|
by TxID)
|
||||||
|
.HP
|
||||||
|
\fB\-zapwallettxes=\fR<mode>
|
||||||
|
.IP
|
||||||
|
Delete all wallet transactions and only recover those parts of the
|
||||||
|
blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
|
||||||
|
account owner and payment request information, 2 = drop tx meta data)
|
||||||
|
.PP
|
||||||
|
ZeroMQ notification options:
|
||||||
|
.HP
|
||||||
|
\fB\-zmqpubhashblock=\fR<address>
|
||||||
|
.IP
|
||||||
|
Enable publish hash block in <address>
|
||||||
|
.HP
|
||||||
|
\fB\-zmqpubhashtx=\fR<address>
|
||||||
|
.IP
|
||||||
|
Enable publish hash transaction in <address>
|
||||||
|
.HP
|
||||||
|
\fB\-zmqpubrawblock=\fR<address>
|
||||||
|
.IP
|
||||||
|
Enable publish raw block in <address>
|
||||||
|
.HP
|
||||||
|
\fB\-zmqpubrawtx=\fR<address>
|
||||||
|
.IP
|
||||||
|
Enable publish raw transaction in <address>
|
||||||
|
.PP
|
||||||
|
Debugging/Testing options:
|
||||||
|
.HP
|
||||||
|
\fB\-debug=\fR<category>
|
||||||
|
.IP
|
||||||
|
Output debugging information (default: 0, supplying <category> is
|
||||||
|
optional). If <category> is not supplied or if <category> = 1, output
|
||||||
|
all debugging information. <category> can be: addrman, alert, bench,
|
||||||
|
coindb, db, estimatefee, http, libevent, lock, mempool, net,
|
||||||
|
partitioncheck, pow, proxy, prune, rand, reindex, rpc, selectcoins, tor,
|
||||||
|
zmq, zrpc, zrpcunsafe (implies zrpc).
|
||||||
|
.HP
|
||||||
|
\fB\-experimentalfeatures\fR
|
||||||
|
.IP
|
||||||
|
Enable use of experimental features
|
||||||
|
.HP
|
||||||
|
\fB\-help\-debug\fR
|
||||||
|
.IP
|
||||||
|
Show all debugging options (usage: \fB\-\-help\fR \fB\-help\-debug\fR)
|
||||||
|
.HP
|
||||||
|
\fB\-logips\fR
|
||||||
|
.IP
|
||||||
|
Include IP addresses in debug output (default: 0)
|
||||||
|
.HP
|
||||||
|
\fB\-logtimestamps\fR
|
||||||
|
.IP
|
||||||
|
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
|
||||||
|
(default: 0.000001)
|
||||||
|
.HP
|
||||||
|
\fB\-printtoconsole\fR
|
||||||
|
.IP
|
||||||
|
Send trace/debug info to console instead of debug.log file
|
||||||
|
.HP
|
||||||
|
\fB\-shrinkdebugfile\fR
|
||||||
|
.IP
|
||||||
|
Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
|
||||||
|
.HP
|
||||||
|
\fB\-testnet\fR
|
||||||
|
.IP
|
||||||
|
Use the test network
|
||||||
|
.PP
|
||||||
|
Node relay options:
|
||||||
|
.HP
|
||||||
|
\fB\-datacarrier\fR
|
||||||
|
.IP
|
||||||
|
Relay and mine data carrier transactions (default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-datacarriersize\fR
|
||||||
|
.IP
|
||||||
|
Maximum size of data in data carrier transactions we relay and mine
|
||||||
|
(default: 8192)
|
||||||
|
.PP
|
||||||
|
Block creation options:
|
||||||
|
.HP
|
||||||
|
\fB\-blockminsize=\fR<n>
|
||||||
|
.IP
|
||||||
|
Set minimum block size in bytes (default: 0)
|
||||||
|
.HP
|
||||||
|
\fB\-blockmaxsize=\fR<n>
|
||||||
|
.IP
|
||||||
|
Set maximum block size in bytes (default: 2000000)
|
||||||
|
.HP
|
||||||
|
\fB\-blockprioritysize=\fR<n>
|
||||||
|
.IP
|
||||||
|
Set maximum size of high\-priority/low\-fee transactions in bytes
|
||||||
|
(default: 1000000)
|
||||||
|
.PP
|
||||||
|
Mining options:
|
||||||
|
.HP
|
||||||
|
\fB\-gen\fR
|
||||||
|
.IP
|
||||||
|
Generate coins (default: 0)
|
||||||
|
.HP
|
||||||
|
\fB\-genproclimit=\fR<n>
|
||||||
|
.IP
|
||||||
|
Set the number of threads for coin generation if enabled (\fB\-1\fR = all
|
||||||
|
cores, default: 1)
|
||||||
|
.HP
|
||||||
|
\fB\-equihashsolver=\fR<name>
|
||||||
|
.IP
|
||||||
|
Specify the Equihash solver to be used if enabled (default: "default")
|
||||||
|
.HP
|
||||||
|
\fB\-mineraddress=\fR<addr>
|
||||||
|
.IP
|
||||||
|
Send mined coins to a specific single address
|
||||||
|
.HP
|
||||||
|
\fB\-minetolocalwallet\fR
|
||||||
|
.IP
|
||||||
|
Require that mined blocks use a coinbase address in the local wallet
|
||||||
|
(default: 1)
|
||||||
|
.PP
|
||||||
|
RPC server options:
|
||||||
|
.HP
|
||||||
|
\fB\-server\fR
|
||||||
|
.IP
|
||||||
|
Accept command line and JSON\-RPC commands
|
||||||
|
.HP
|
||||||
|
\fB\-rest\fR
|
||||||
|
.IP
|
||||||
|
Accept public REST requests (default: 0)
|
||||||
|
.HP
|
||||||
|
\fB\-rpcbind=\fR<addr>
|
||||||
|
.IP
|
||||||
|
Bind to given address to listen for JSON\-RPC connections. Use
|
||||||
|
[host]:port notation for IPv6. This option can be specified multiple
|
||||||
|
times (default: bind to all interfaces)
|
||||||
|
.HP
|
||||||
|
\fB\-rpcuser=\fR<user>
|
||||||
|
.IP
|
||||||
|
Username for JSON\-RPC connections
|
||||||
|
.HP
|
||||||
|
\fB\-rpcpassword=\fR<pw>
|
||||||
|
.IP
|
||||||
|
Password for JSON\-RPC connections
|
||||||
|
.HP
|
||||||
|
\fB\-rpcport=\fR<port>
|
||||||
|
.IP
|
||||||
|
Listen for JSON\-RPC connections on <port> (default: 7771 or testnet:
|
||||||
|
17771)
|
||||||
|
.HP
|
||||||
|
\fB\-rpcallowip=\fR<ip>
|
||||||
|
.IP
|
||||||
|
Allow JSON\-RPC connections from specified source. Valid for <ip> are a
|
||||||
|
single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0)
|
||||||
|
or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified
|
||||||
|
multiple times
|
||||||
|
.HP
|
||||||
|
\fB\-rpcthreads=\fR<n>
|
||||||
|
.IP
|
||||||
|
Set the number of threads to service RPC calls (default: 4)
|
||||||
|
.PP
|
||||||
|
Metrics Options (only if \fB\-daemon\fR and \fB\-printtoconsole\fR are not set):
|
||||||
|
.HP
|
||||||
|
\fB\-showmetrics\fR
|
||||||
|
.IP
|
||||||
|
Show metrics on stdout (default: 1 if running in a console, 0 otherwise)
|
||||||
|
.HP
|
||||||
|
\fB\-metricsui\fR
|
||||||
|
.IP
|
||||||
|
Set to 1 for a persistent metrics screen, 0 for sequential metrics
|
||||||
|
output (default: 1 if running in a console, 0 otherwise)
|
||||||
|
.HP
|
||||||
|
\fB\-metricsrefreshtime\fR
|
||||||
|
.IP
|
||||||
|
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/index.html>.
|
||||||
|
|
||||||
|
Copyright (C) 2009-2017 The Bitcoin Core Developers
|
||||||
|
Copyright (C) 2015-2017 The Zcash Developers
|
||||||
|
Copyright (C) 2015-2017 jl777 and SuperNET developers
|
||||||
|
|
||||||
|
This is experimental software.
|
||||||
|
|
||||||
|
Distributed under the MIT software license, see the accompanying file COPYING
|
||||||
|
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.
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||||
.TH ZCASH-CLI "1" "March 2017" "zcash-cli v1.0.8" "User Commands"
|
.TH ZCASH-CLI "1" "February 2018" "zcash-cli v1.0.15" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
zcash-cli \- manual page for zcash-cli v1.0.8
|
zcash-cli \- manual page for zcash-cli v1.0.15
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Zcash RPC client version v1.0.8
|
Zcash RPC client version v1.0.15
|
||||||
.PP
|
.PP
|
||||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
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:"
|
.SS "Usage:"
|
||||||
.TP
|
.TP
|
||||||
zcash\-cli [options] <command> [params]
|
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:
|
Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
|
||||||
900)
|
900)
|
||||||
.SH COPYRIGHT
|
.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) 2009-2017 The Bitcoin Core Developers
|
||||||
Copyright (C) 2015-2017 The Zcash 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
|
This product includes software developed by the OpenSSL Project for use in the
|
||||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
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.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||||
.TH ZCASH-TX "1" "March 2017" "zcash-tx v1.0.8" "User Commands"
|
.TH ZCASH-TX "1" "February 2018" "zcash-tx v1.0.15" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
zcash-tx \- manual page for zcash-tx v1.0.8
|
zcash-tx \- manual page for zcash-tx v1.0.15
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Zcash zcash\-tx utility version v1.0.8
|
Zcash zcash\-tx utility version v1.0.15
|
||||||
.SS "Usage:"
|
.SS "Usage:"
|
||||||
.TP
|
.TP
|
||||||
zcash\-tx [options] <hex\-tx> [commands]
|
zcash\-tx [options] <hex\-tx> [commands]
|
||||||
@@ -68,7 +68,7 @@ outscript=VALUE:SCRIPT
|
|||||||
.IP
|
.IP
|
||||||
Add raw script output to TX
|
Add raw script output to TX
|
||||||
.IP
|
.IP
|
||||||
sign=SIGHASH\-FLAGS
|
sign=HEIGHT:SIGHASH\-FLAGS
|
||||||
.IP
|
.IP
|
||||||
Add zero or more signatures to transaction. This command requires JSON
|
Add zero or more signatures to transaction. This command requires JSON
|
||||||
registers:prevtxs=JSON object, privatekeys=JSON object. See
|
registers:prevtxs=JSON object, privatekeys=JSON object. See
|
||||||
@@ -84,6 +84,10 @@ set=NAME:JSON\-STRING
|
|||||||
.IP
|
.IP
|
||||||
Set register NAME to given JSON\-STRING
|
Set register NAME to given JSON\-STRING
|
||||||
.SH COPYRIGHT
|
.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) 2009-2017 The Bitcoin Core Developers
|
||||||
Copyright (C) 2015-2017 The Zcash 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
|
This product includes software developed by the OpenSSL Project for use in the
|
||||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
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.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||||
.TH ZCASHD "1" "March 2017" "zcashd v1.0.8" "User Commands"
|
.TH ZCASHD "1" "February 2018" "zcashd v1.0.15" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
zcashd \- manual page for zcashd v1.0.8
|
zcashd \- manual page for zcashd v1.0.15
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Zcash Daemon version v1.0.8
|
Zcash Daemon version v1.0.15
|
||||||
.PP
|
.PP
|
||||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
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:"
|
.SS "Usage:"
|
||||||
.TP
|
.TP
|
||||||
zcashd [options]
|
zcashd [options]
|
||||||
@@ -51,13 +51,18 @@ Run in the background as a daemon and accept commands
|
|||||||
.IP
|
.IP
|
||||||
Specify data directory
|
Specify data directory
|
||||||
.HP
|
.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>
|
\fB\-exportdir=\fR<dir>
|
||||||
.IP
|
.IP
|
||||||
Specify directory to be used when exporting data
|
Specify directory to be used when exporting data
|
||||||
.HP
|
.HP
|
||||||
\fB\-dbcache=\fR<n>
|
\fB\-dbcache=\fR<n>
|
||||||
.IP
|
.IP
|
||||||
Set database cache size in megabytes (4 to 16384, default: 100)
|
Set database cache size in megabytes (4 to 16384, default: 450)
|
||||||
.HP
|
.HP
|
||||||
\fB\-loadblock=\fR<file>
|
\fB\-loadblock=\fR<file>
|
||||||
.IP
|
.IP
|
||||||
@@ -67,9 +72,14 @@ Imports blocks from external blk000??.dat file on startup
|
|||||||
.IP
|
.IP
|
||||||
Keep at most <n> unconnectable transactions in memory (default: 100)
|
Keep at most <n> unconnectable transactions in memory (default: 100)
|
||||||
.HP
|
.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>
|
\fB\-par=\fR<n>
|
||||||
.IP
|
.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)
|
leave that many cores free, default: 0)
|
||||||
.HP
|
.HP
|
||||||
\fB\-pid=\fR<file>
|
\fB\-pid=\fR<file>
|
||||||
@@ -207,10 +217,6 @@ Tor control port to use if onion listening enabled (default:
|
|||||||
.IP
|
.IP
|
||||||
Tor control port password (default: empty)
|
Tor control port password (default: empty)
|
||||||
.HP
|
.HP
|
||||||
\fB\-upnp\fR
|
|
||||||
.IP
|
|
||||||
Use UPnP to map the listening port (default: 0)
|
|
||||||
.HP
|
|
||||||
\fB\-whitebind=\fR<addr>
|
\fB\-whitebind=\fR<addr>
|
||||||
.IP
|
.IP
|
||||||
Bind to given address and whitelist peers connecting to it. Use
|
Bind to given address and whitelist peers connecting to it. Use
|
||||||
@@ -235,7 +241,7 @@ Set key pool size to <n> (default: 100)
|
|||||||
.HP
|
.HP
|
||||||
\fB\-paytxfee=\fR<amt>
|
\fB\-paytxfee=\fR<amt>
|
||||||
.IP
|
.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
|
.HP
|
||||||
\fB\-rescan\fR
|
\fB\-rescan\fR
|
||||||
.IP
|
.IP
|
||||||
@@ -258,10 +264,15 @@ Spend unconfirmed change when sending transactions (default: 1)
|
|||||||
If paytxfee is not set, include enough fee so transactions begin
|
If paytxfee is not set, include enough fee so transactions begin
|
||||||
confirmation on average within n blocks (default: 2)
|
confirmation on average within n blocks (default: 2)
|
||||||
.HP
|
.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>
|
\fB\-maxtxfee=\fR<amt>
|
||||||
.IP
|
.IP
|
||||||
Maximum total fees to use in a single wallet transaction; setting this
|
Maximum total fees (in ZEC) to use in a single wallet transaction;
|
||||||
too low may abort large transactions (default: 0.10)
|
setting this too low may abort large transactions (default: 0.10)
|
||||||
.HP
|
.HP
|
||||||
\fB\-upgradewallet\fR
|
\fB\-upgradewallet\fR
|
||||||
.IP
|
.IP
|
||||||
@@ -333,7 +344,7 @@ Prepend debug output with timestamp (default: 1)
|
|||||||
.HP
|
.HP
|
||||||
\fB\-minrelaytxfee=\fR<amt>
|
\fB\-minrelaytxfee=\fR<amt>
|
||||||
.IP
|
.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)
|
(default: 0.000001)
|
||||||
.HP
|
.HP
|
||||||
\fB\-printtoconsole\fR
|
\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
|
Number of seconds between metrics refreshes (default: 1 if running in a
|
||||||
console, 600 otherwise)
|
console, 600 otherwise)
|
||||||
.SH COPYRIGHT
|
.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) 2009-2017 The Bitcoin Core Developers
|
||||||
Copyright (C) 2015-2017 The Zcash 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
|
This product includes software developed by the OpenSSL Project for use in the
|
||||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
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
|
* Addresses : z_getnewaddress, z_listaddresses, z_validateaddress
|
||||||
* Keys : z_exportkey, z_importkey, z_exportwallet, z_importwallet
|
* Keys : z_exportkey, z_importkey, z_exportwallet, z_importwallet
|
||||||
* Operation: z_getoperationresult, z_getoperationstatus, z_listoperationids
|
* Operation: z_getoperationresult, z_getoperationstatus, z_listoperationids
|
||||||
* Payment : z_listreceivedbyaddress, z_sendmany
|
* Payment : z_listreceivedbyaddress, z_sendmany, z_shieldcoinbase
|
||||||
|
|
||||||
RPC parameter conventions:
|
RPC parameter conventions:
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ RPC parameter conventions:
|
|||||||
|
|
||||||
Command | Parameters | Description
|
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}
|
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
|
### 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_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_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
|
### Key Management
|
||||||
|
|
||||||
@@ -64,14 +64,15 @@ Command | Parameters | Description
|
|||||||
z_exportkey | zaddr | _Requires an unlocked wallet or an unencrypted wallet._<br><br>Return a zkey for a given zaddr belonging to the node’s wallet.<br><br>The key will be returned as a string formatted using Base58Check as described in the Zcash protocol spec.<br><br>Output:AKWUAkypwQjhZ6LLNaMuuuLcmZ6gt5UFyo8m3jGutvALmwZKLdR5
|
z_exportkey | zaddr | _Requires an unlocked wallet or an unencrypted wallet._<br><br>Return a zkey for a given zaddr belonging to the node’s wallet.<br><br>The key will be returned as a string formatted using Base58Check as described in the Zcash protocol spec.<br><br>Output:AKWUAkypwQjhZ6LLNaMuuuLcmZ6gt5UFyo8m3jGutvALmwZKLdR5
|
||||||
z_importkey | zkey [rescan=true] | _Wallet must be unlocked._<br><br>Add a zkey as returned by z_exportkey to a node's wallet.<br><br>The key should be formatted using Base58Check as described in the Zcash protocol spec.<br><br>Set rescan to true (the default) to rescan the entire local block database for transactions affecting any address or pubkey script in the wallet (including transactions affecting the newly-added address for this spending key).
|
z_importkey | zkey [rescan=true] | _Wallet must be unlocked._<br><br>Add a zkey as returned by z_exportkey to a node's wallet.<br><br>The key should be formatted using Base58Check as described in the Zcash protocol spec.<br><br>Set rescan to true (the default) to rescan the entire local block database for transactions affecting any address or pubkey script in the wallet (including transactions affecting the newly-added address for this spending key).
|
||||||
z_exportwallet | filename | _Requires an unlocked wallet or an unencrypted wallet._<br><br>Creates or overwrites a file with taddr private keys and zaddr private keys in a human-readable format.<br><br>Filename is the file in which the wallet dump will be placed. May be prefaced by an absolute file path. An existing file with that name will be overwritten.<br><br>No value is returned but a JSON-RPC error will be reported if a failure occurred.
|
z_exportwallet | filename | _Requires an unlocked wallet or an unencrypted wallet._<br><br>Creates or overwrites a file with taddr private keys and zaddr private keys in a human-readable format.<br><br>Filename is the file in which the wallet dump will be placed. May be prefaced by an absolute file path. An existing file with that name will be overwritten.<br><br>No value is returned but a JSON-RPC error will be reported if a failure occurred.
|
||||||
z_importwallet | filename | _Requires an unlocked wallet or an unencrypted wallet._<br><br>Imports private keys from a file in wallet export file format (see z_exportwallet). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.<br><br>Filename is the file to import. The path is relative to zcashd’s working directory.<br><br>No value is returned but a JSON-RPC error will be reported if a failure occurred.
|
z_importwallet | filename | _Requires an unlocked wallet or an unencrypted wallet._<br><br>Imports private keys from a file in wallet export file format (see z_exportwallet). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.<br><br>Filename is the file to import. The path is relative to komodod’s working directory.<br><br>No value is returned but a JSON-RPC error will be reported if a failure occurred.
|
||||||
|
|
||||||
### Payment
|
### Payment
|
||||||
|
|
||||||
Command | Parameters | Description
|
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_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
|
### Operations
|
||||||
|
|
||||||
@@ -100,7 +101,7 @@ It is currently not possible to cancel operations.
|
|||||||
|
|
||||||
Command | Parameters | Description
|
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_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…”, … ]
|
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_
|
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.
|
"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.
|
"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.
|
"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`.
|
"Could not find previous JoinSplit anchor" | Try restarting node with `-reindex`.
|
||||||
"Error decrypting output note of previous JoinSplit: __" |
|
"Error decrypting output note of previous JoinSplit: __" |
|
||||||
"Could not find witness for note commitment" | Try restarting node with `-rescan`.
|
"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.
|
"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.
|
"Not enough funds to pay miners fee" | Retry with sufficient funds.
|
||||||
"Missing hex data for raw transaction" | Raw transaction data is null.
|
"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
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user