mirror of
https://github.com/jwinterm/myriadcoin.git
synced 2026-10-28 06:28:34 +01:00
updates to files out of src tree
This commit is contained in:
@@ -106,24 +106,40 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
||||
dnl results to QT_LIBS.
|
||||
BITCOIN_QT_CHECK([
|
||||
TEMP_CPPFLAGS=$CPPFLAGS
|
||||
CPPFLAGS=$QT_INCLUDES
|
||||
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
|
||||
if test x$bitcoin_qt_got_major_vers = x5; then
|
||||
_BITCOIN_QT_IS_STATIC
|
||||
if test x$bitcoin_cv_static_qt = xyes; then
|
||||
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
|
||||
if test x$qt_plugin_path != x; then
|
||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
|
||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms"
|
||||
fi
|
||||
if test x$use_pkgconfig = xyes; then
|
||||
PKG_CHECK_MODULES([QTPLATFORM], [Qt5PlatformSupport], [QT_LIBS="$QTPLATFORM_LIBS $QT_LIBS"])
|
||||
fi
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
|
||||
AC_CACHE_CHECK(for Qt < 5.4, bitcoin_cv_need_acc_widget,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
[[#include <QtCore>]],[[
|
||||
#if QT_VERSION >= 0x050400
|
||||
choke;
|
||||
#endif
|
||||
]])],
|
||||
[bitcoin_cv_need_acc_widget=yes],
|
||||
[bitcoin_cv_need_acc_widget=no])
|
||||
])
|
||||
if test "x$bitcoin_cv_need_acc_widget" = "xyes"; then
|
||||
if test x$qt_plugin_path != x; then
|
||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
|
||||
fi
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
|
||||
fi
|
||||
if test x$TARGET_OS = xwindows; then
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows])
|
||||
AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows])
|
||||
elif test x$TARGET_OS = xlinux; then
|
||||
PKG_CHECK_MODULES([X11XCB], [x11-xcb], [QT_LIBS="$X11XCB_LIBS $QT_LIBS"])
|
||||
if ${PKG_CONFIG} --exists "Qt5Core >= 5.5" 2>/dev/null; then
|
||||
PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"])
|
||||
fi
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static])
|
||||
AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb])
|
||||
elif test x$TARGET_OS = xdarwin; then
|
||||
@@ -382,7 +398,8 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([z] ,[main],,AC_MSG_WARN([zlib not found. Assuming qt has it built-in])))
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([png] ,[main],,AC_MSG_WARN([libpng not found. Assuming qt has it built-in])))
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([jpeg] ,[main],,AC_MSG_WARN([libjpeg not found. Assuming qt has it built-in])))
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([pcre16] ,[main],,AC_MSG_WARN([libpcre16 not found. Assuming qt has it built-in])))
|
||||
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([pcre16_exec], [qtpcre pcre16],,AC_MSG_WARN([libpcre16 not found. Assuming qt has it built-in])))
|
||||
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([hb_ot_tags_from_script] ,[qtharfbuzzng harfbuzz],,AC_MSG_WARN([libharfbuzz not found. Assuming qt has it built-in or support is disabled])))
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXCore not found)))
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXGui not found)))
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXNetwork not found)))
|
||||
|
||||
@@ -1,3 +1,33 @@
|
||||
bitcoin (0.11.0-precise1) precise; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 14 Jul 2015 14:39:00 -1000
|
||||
|
||||
bitcoin (0.10.2-precise1) precise; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Mon, 29 Jun 2015 17:33:00 -1000
|
||||
|
||||
bitcoin (0.10.1-precise3) precise; urgency=medium
|
||||
|
||||
* Fix build dep (include python).
|
||||
|
||||
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 5 May 2015 09:28:00 -1000
|
||||
|
||||
bitcoin (0.10.1-precise2) precise; urgency=medium
|
||||
|
||||
* Fix miniupnpc dep.
|
||||
|
||||
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 5 May 2015 00:33:00 -1000
|
||||
|
||||
bitcoin (0.10.1-precise1) precise; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 5 May 2015 00:07:00 -1000
|
||||
|
||||
bitcoin (0.10.0-precise1) precise; urgency=medium
|
||||
|
||||
* New upstream releases.
|
||||
@@ -149,7 +179,7 @@ bitcoin (0.5.3-natty0) natty; urgency=low
|
||||
bitcoin (0.5.2-natty1) natty; urgency=low
|
||||
|
||||
* Remove mentions on anonymity in package descriptions and manpage.
|
||||
These should never have been there, bitcoin isnt anonymous without
|
||||
These should never have been there, bitcoin isn't anonymous without
|
||||
a ton of work that virtually no users will ever be willing and
|
||||
capable of doing
|
||||
|
||||
@@ -190,7 +220,7 @@ bitcoin (0.5.0~rc1-natty1) natty; urgency=low
|
||||
|
||||
* Add test_bitcoin to build test
|
||||
* Fix clean
|
||||
* Remove uneccessary build-dependancies
|
||||
* Remove unnecessary build-dependancies
|
||||
|
||||
-- Matt Corallo <matt@bluematt.me> Wed, 26 Oct 2011 14:37:18 -0400
|
||||
|
||||
@@ -350,7 +380,7 @@ bitcoin (0.3.20.01~dfsg-1) unstable; urgency=low
|
||||
|
||||
bitcoin (0.3.19~dfsg-6) unstable; urgency=low
|
||||
|
||||
* Fix override agressive optimizations.
|
||||
* Fix override aggressive optimizations.
|
||||
* Fix tighten build-dependencies to really fit backporting to Lenny:
|
||||
+ Add fallback build-dependency on libdb4.6++-dev.
|
||||
+ Tighten unversioned Boost build-dependencies to recent versions,
|
||||
|
||||
+18
-3
@@ -20,11 +20,12 @@ Build-Depends: debhelper,
|
||||
qt4-qmake,
|
||||
libqt4-dev,
|
||||
libqrencode-dev,
|
||||
libprotobuf-dev, protobuf-compiler
|
||||
libprotobuf-dev, protobuf-compiler,
|
||||
python
|
||||
Standards-Version: 3.9.2
|
||||
Homepage: http://www.bitcoin.org/
|
||||
Homepage: https://www.bitcoin.org/
|
||||
Vcs-Git: git://github.com/bitcoin/bitcoin.git
|
||||
Vcs-Browser: http://github.com/bitcoin/bitcoin
|
||||
Vcs-Browser: https://github.com/bitcoin/bitcoin
|
||||
|
||||
Package: bitcoind
|
||||
Architecture: any
|
||||
@@ -56,3 +57,17 @@ Description: peer-to-peer network based digital currency - Qt GUI
|
||||
requires 20+ GB of space, slowly growing.
|
||||
.
|
||||
This package provides Bitcoin-Qt, a GUI for Bitcoin based on Qt.
|
||||
|
||||
Package: bitcoin-tx
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: peer-to-peer digital currency - standalone transaction tool
|
||||
Bitcoin is a free open source peer-to-peer electronic cash system that
|
||||
is completely decentralized, without the need for a central server or
|
||||
trusted parties. Users hold the crypto keys to their own money and
|
||||
transact directly with each other, with the help of a P2P network to
|
||||
check for double-spending.
|
||||
.
|
||||
This package provides bitcoin-tx, a command-line transaction creation
|
||||
tool which can be used without a bitcoin daemon. Some means of
|
||||
exchanging minimal transaction data with peers is still required.
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
# JSON-RPC options (for controlling a running Bitcoin/bitcoind process)
|
||||
#
|
||||
|
||||
# server=1 tells Bitcoin-QT and bitcoind to accept JSON-RPC commands
|
||||
# server=1 tells Bitcoin-Qt and bitcoind to accept JSON-RPC commands
|
||||
#server=0
|
||||
|
||||
# Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6.
|
||||
@@ -82,7 +82,7 @@
|
||||
# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED,
|
||||
# because the rpcpassword is transmitted over the network unencrypted.
|
||||
|
||||
# server=1 tells Bitcoin-QT to accept JSON-RPC commands.
|
||||
# server=1 tells Bitcoin-Qt to accept JSON-RPC commands.
|
||||
# it is also read by bitcoind to determine if RPC should be enabled
|
||||
#rpcallowip=10.1.1.34/255.255.255.0
|
||||
#rpcallowip=1.2.3.4/24
|
||||
|
||||
@@ -24,7 +24,7 @@ files: []
|
||||
script: |
|
||||
WRAP_DIR=$HOME/wrapped
|
||||
HOSTS="i686-pc-linux-gnu x86_64-unknown-linux-gnu"
|
||||
CONFIGFLAGS="--enable-upnp-default --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
|
||||
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
|
||||
FAKETIME_HOST_PROGS=""
|
||||
FAKETIME_PROGS="date ar ranlib nm strip"
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ files:
|
||||
script: |
|
||||
WRAP_DIR=$HOME/wrapped
|
||||
HOSTS="x86_64-apple-darwin11"
|
||||
CONFIGFLAGS="--enable-upnp-default --enable-reduce-exports GENISOIMAGE=$WRAP_DIR/genisoimage"
|
||||
CONFIGFLAGS="--enable-reduce-exports GENISOIMAGE=$WRAP_DIR/genisoimage"
|
||||
FAKETIME_HOST_PROGS=""
|
||||
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ files: []
|
||||
script: |
|
||||
WRAP_DIR=$HOME/wrapped
|
||||
HOSTS="x86_64-w64-mingw32 i686-w64-mingw32"
|
||||
CONFIGFLAGS="--enable-upnp-default --enable-reduce-exports"
|
||||
CONFIGFLAGS="--enable-reduce-exports"
|
||||
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip"
|
||||
FAKETIME_PROGS="date makensis zip"
|
||||
|
||||
|
||||
Binary file not shown.
+1
-1
@@ -13,7 +13,7 @@ For example:
|
||||
make HOST=x86_64-w64-mingw32 -j4
|
||||
|
||||
A prefix will be generated that's suitable for plugging into Bitcoin's
|
||||
configure. In the above example, a dir named i686-w64-mingw32 will be
|
||||
configure. In the above example, a dir named x86_64-w64-mingw32 will be
|
||||
created. To use it for Bitcoin:
|
||||
|
||||
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
|
||||
|
||||
+1
-1
@@ -1117,7 +1117,7 @@ EOF
|
||||
# uname -m prints for DJGPP always 'pc', but it prints nothing about
|
||||
# the processor, so we play safe by assuming i586.
|
||||
# Note: whatever this is, it MUST be the same as what config.sub
|
||||
# prints for the "djgpp" host, or else GDB configury will decide that
|
||||
# prints for the "djgpp" host, or else GDB configure will decide that
|
||||
# this is a cross-build.
|
||||
echo i586-pc-msdosdjgpp
|
||||
exit ;;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=miniupnpc
|
||||
$(package)_version=1.9.20140701
|
||||
$(package)_version=1.9.20151008
|
||||
$(package)_download_path=http://miniupnp.free.fr/files
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=26f3985bad7768b8483b793448ae49414cdc4451d0ec83e7c1944367e15f9f07
|
||||
$(package)_sha256_hash=e444ac3b587ce82709c4d0cfca1fe71f44f9fc433e9f946b12b9e1bfe667a633
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_build_opts=CC="$($(package)_cc)"
|
||||
|
||||
@@ -10,7 +10,7 @@ $(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/o
|
||||
$(package)_config_opts+=no-krb5 no-camellia no-capieng no-cast no-cms no-dtls1 no-gost no-gmp no-heartbeats no-idea no-jpake no-md2
|
||||
$(package)_config_opts+=no-mdc2 no-rc5 no-rdrand no-rfc3779 no-rsax no-sctp no-seed no-sha0 no-static_engine no-whirlpool no-rc2 no-rc4 no-ssl2 no-ssl3
|
||||
$(package)_config_opts+=$($(package)_cflags) $($(package)_cppflags)
|
||||
$(package)_config_opts_linux=-fPIC
|
||||
$(package)_config_opts_linux=-fPIC -Wa,--noexecstack
|
||||
$(package)_config_opts_x86_64_linux=linux-x86_64
|
||||
$(package)_config_opts_i686_linux=linux-generic32
|
||||
$(package)_config_opts_arm_linux=linux-generic32
|
||||
|
||||
+109
-34
@@ -1,53 +1,131 @@
|
||||
PACKAGE=qt
|
||||
$(package)_version=5.2.1
|
||||
$(package)_download_path=http://download.qt-project.org/official_releases/qt/5.2/$($(package)_version)/single
|
||||
$(package)_file_name=$(package)-everywhere-opensource-src-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=84e924181d4ad6db00239d87250cc89868484a14841f77fb85ab1f1dbdcd7da1
|
||||
$(package)_version=5.5.0
|
||||
$(package)_download_path=http://download.qt.io/official_releases/qt/5.5/$($(package)_version)/submodules
|
||||
$(package)_suffix=opensource-src-$($(package)_version).tar.gz
|
||||
$(package)_file_name=qtbase-$($(package)_suffix)
|
||||
$(package)_sha256_hash=7e82b1318f88e56a2a9376e069aa608d4fd96b48cb0e1b880ae658b0a1af0561
|
||||
$(package)_dependencies=openssl
|
||||
$(package)_linux_dependencies=freetype fontconfig dbus libxcb libX11 xproto libXext
|
||||
$(package)_build_subdir=qtbase
|
||||
$(package)_qt_libs=corelib network widgets gui plugins testlib
|
||||
$(package)_patches=mac-qmake.conf fix-xcb-include-order.patch qt5-tablet-osx.patch qt5-yosemite.patch
|
||||
$(package)_patches=mac-qmake.conf fix-xcb-include-order.patch mingw-uuidof.patch
|
||||
|
||||
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
|
||||
$(package)_qttranslations_sha256_hash=c4bd6db6e426965c6f8824c54e81f68bbd61e2bae1bcadc328c6e81c45902a0d
|
||||
|
||||
$(package)_qttools_file_name=qttools-$($(package)_suffix)
|
||||
$(package)_qttools_sha256_hash=d9e06bd19ecc86afba5e95d45a906d1bc1ad579aa70001e36143c1aaf695bdd6
|
||||
|
||||
$(package)_extra_sources = $($(package)_qttranslations_file_name)
|
||||
$(package)_extra_sources += $($(package)_qttools_file_name)
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts_release = -release
|
||||
$(package)_config_opts_debug = -debug
|
||||
$(package)_config_opts += -opensource -confirm-license -no-audio-backend -no-sql-tds -no-glib -no-icu
|
||||
$(package)_config_opts += -no-cups -no-iconv -no-gif -no-audio-backend -no-freetype
|
||||
$(package)_config_opts += -no-sql-sqlite -no-nis -no-cups -no-iconv -no-pch
|
||||
$(package)_config_opts += -no-gif -no-feature-style-plastique
|
||||
$(package)_config_opts += -no-qml-debug -no-pch -no-nis -nomake examples -nomake tests
|
||||
$(package)_config_opts += -no-feature-style-cde -no-feature-style-s60 -no-feature-style-motif
|
||||
$(package)_config_opts += -no-feature-style-windowsmobile -no-feature-style-windowsce
|
||||
$(package)_config_opts += -no-feature-style-cleanlooks
|
||||
$(package)_config_opts += -no-sql-db2 -no-sql-ibase -no-sql-oci -no-sql-tds -no-sql-mysql
|
||||
$(package)_config_opts += -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2
|
||||
$(package)_config_opts += -skip qtsvg -skip qtwebkit -skip qtwebkit-examples -skip qtserialport
|
||||
$(package)_config_opts += -skip qtdeclarative -skip qtmultimedia -skip qtimageformats -skip qtx11extras
|
||||
$(package)_config_opts += -skip qtlocation -skip qtsensors -skip qtquick1 -skip qtxmlpatterns
|
||||
$(package)_config_opts += -skip qtquickcontrols -skip qtactiveqt -skip qtconnectivity -skip qtmacextras
|
||||
$(package)_config_opts += -skip qtwinextras -skip qtxmlpatterns -skip qtscript -skip qtdoc
|
||||
|
||||
$(package)_config_opts += -prefix $(host_prefix) -bindir $(build_prefix)/bin
|
||||
$(package)_config_opts += -no-c++11 -openssl-linked -v -static -silent -pkg-config
|
||||
$(package)_config_opts += -qt-libpng -qt-libjpeg -qt-zlib -qt-pcre
|
||||
$(package)_config_opts += -opensource -confirm-license
|
||||
$(package)_config_opts += -no-audio-backend
|
||||
$(package)_config_opts += -no-glib
|
||||
$(package)_config_opts += -no-icu
|
||||
$(package)_config_opts += -no-cups
|
||||
$(package)_config_opts += -no-iconv
|
||||
$(package)_config_opts += -no-gif
|
||||
$(package)_config_opts += -no-freetype
|
||||
$(package)_config_opts += -no-nis
|
||||
$(package)_config_opts += -no-pch
|
||||
$(package)_config_opts += -no-qml-debug
|
||||
$(package)_config_opts += -nomake examples
|
||||
$(package)_config_opts += -nomake tests
|
||||
$(package)_config_opts += -no-feature-style-windowsmobile
|
||||
$(package)_config_opts += -no-feature-style-windowsce
|
||||
$(package)_config_opts += -no-sql-db2
|
||||
$(package)_config_opts += -no-sql-ibase
|
||||
$(package)_config_opts += -no-sql-oci
|
||||
$(package)_config_opts += -no-sql-tds
|
||||
$(package)_config_opts += -no-sql-mysql
|
||||
$(package)_config_opts += -no-sql-odbc
|
||||
$(package)_config_opts += -no-sql-psql
|
||||
$(package)_config_opts += -no-sql-sqlite
|
||||
$(package)_config_opts += -no-sql-sqlite2
|
||||
$(package)_config_opts += -prefix $(host_prefix)
|
||||
$(package)_config_opts += -hostprefix $(build_prefix)
|
||||
$(package)_config_opts += -bindir $(build_prefix)/bin
|
||||
$(package)_config_opts += -no-c++11
|
||||
$(package)_config_opts += -openssl-linked
|
||||
$(package)_config_opts += -v
|
||||
$(package)_config_opts += -static
|
||||
$(package)_config_opts += -silent
|
||||
$(package)_config_opts += -pkg-config
|
||||
$(package)_config_opts += -qt-libpng
|
||||
$(package)_config_opts += -qt-libjpeg
|
||||
$(package)_config_opts += -qt-zlib
|
||||
$(package)_config_opts += -qt-pcre
|
||||
$(package)_config_opts += -no-pulseaudio
|
||||
$(package)_config_opts += -no-openvg
|
||||
$(package)_config_opts += -no-xrender
|
||||
$(package)_config_opts += -no-alsa
|
||||
$(package)_config_opts += -no-mtdev
|
||||
$(package)_config_opts += -no-gstreamer
|
||||
$(package)_config_opts += -no-mitshm
|
||||
$(package)_config_opts += -no-kms
|
||||
$(package)_config_opts += -no-reduce-relocations
|
||||
$(package)_config_opts += -no-egl
|
||||
$(package)_config_opts += -no-eglfs
|
||||
$(package)_config_opts += -no-linuxfb
|
||||
$(package)_config_opts += -no-xinput2
|
||||
$(package)_config_opts += -no-libudev
|
||||
$(package)_config_opts += -no-use-gold-linker
|
||||
$(package)_config_opts += -reduce-exports
|
||||
$(package)_config_opts += -optimized-qmake
|
||||
|
||||
ifneq ($(build_os),darwin)
|
||||
$(package)_config_opts_darwin = -xplatform macx-clang-linux -device-option MAC_SDK_PATH=$(OSX_SDK) -device-option CROSS_COMPILE="$(host)-"
|
||||
$(package)_config_opts_darwin += -device-option MAC_MIN_VERSION=$(OSX_MIN_VERSION) -device-option MAC_TARGET=$(host) -device-option MAC_LD64_VERSION=$(LD64_VERSION)
|
||||
$(package)_config_opts_darwin = -xplatform macx-clang-linux
|
||||
$(package)_config_opts_darwin += -device-option MAC_SDK_PATH=$(OSX_SDK)
|
||||
$(package)_config_opts_darwin += -device-option MAC_SDK_VERSION=$(OSX_SDK_VERSION)
|
||||
$(package)_config_opts_darwin += -device-option CROSS_COMPILE="$(host)-"
|
||||
$(package)_config_opts_darwin += -device-option MAC_MIN_VERSION=$(OSX_MIN_VERSION)
|
||||
$(package)_config_opts_darwin += -device-option MAC_TARGET=$(host)
|
||||
$(package)_config_opts_darwin += -device-option MAC_LD64_VERSION=$(LD64_VERSION)
|
||||
endif
|
||||
|
||||
$(package)_config_opts_linux = -qt-xkbcommon -qt-xcb -no-eglfs -no-linuxfb -system-freetype -no-sm -fontconfig -no-xinput2 -no-libudev -no-egl -no-opengl
|
||||
$(package)_config_opts_linux = -qt-xkbcommon
|
||||
$(package)_config_opts_linux += -qt-xcb
|
||||
$(package)_config_opts_linux += -system-freetype
|
||||
$(package)_config_opts_linux += -no-sm
|
||||
$(package)_config_opts_linux += -fontconfig
|
||||
$(package)_config_opts_linux += -no-opengl
|
||||
$(package)_config_opts_arm_linux = -platform linux-g++ -xplatform $(host)
|
||||
$(package)_config_opts_i686_linux = -xplatform linux-g++-32
|
||||
$(package)_config_opts_mingw32 = -no-opengl -xplatform win32-g++ -device-option CROSS_COMPILE="$(host)-"
|
||||
$(package)_build_env = QT_RCC_TEST=1
|
||||
endef
|
||||
|
||||
define $(package)_fetch_cmds
|
||||
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
|
||||
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttranslations_file_name),$($(package)_qttranslations_file_name),$($(package)_qttranslations_sha256_hash)) && \
|
||||
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_file_name),$($(package)_qttools_file_name),$($(package)_qttools_sha256_hash))
|
||||
endef
|
||||
|
||||
define $(package)_extract_cmds
|
||||
mkdir -p $($(package)_extract_dir) && \
|
||||
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
||||
echo "$($(package)_qttranslations_sha256_hash) $($(package)_source_dir)/$($(package)_qttranslations_file_name)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
||||
echo "$($(package)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
||||
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
||||
mkdir qtbase && \
|
||||
tar --strip-components=1 -xf $($(package)_source) -C qtbase && \
|
||||
mkdir qttranslations && \
|
||||
tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttranslations_file_name) -C qttranslations && \
|
||||
mkdir qttools && \
|
||||
tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttools_file_name) -C qttools
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
|
||||
sed -i.old "s/src_plugins.depends = src_sql src_xml src_network/src_plugins.depends = src_xml src_network/" qtbase/src/src.pro && \
|
||||
sed -i.old "/XIproto.h/d" qtbase/src/plugins/platforms/xcb/qxcbxsettings.cpp && \
|
||||
sed -i.old "s/PIDLIST_ABSOLUTE/ITEMIDLIST */" qtbase/src/plugins/platforms/windows/qwindowscontext.h &&\
|
||||
sed -i.old "s/PIDLIST_ABSOLUTE/ITEMIDLIST */" qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp &&\
|
||||
sed -i.old "s/PCIDLIST_ABSOLUTE/const ITEMIDLIST */" qtbase/src/plugins/platforms/windows/qwindowscontext.h &&\
|
||||
sed -i.old "s|X11/extensions/XIproto.h|X11/X.h|" qtbase/src/plugins/platforms/xcb/qxcbxsettings.cpp && \
|
||||
sed -i.old 's/if \[ "$$$$XPLATFORM_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/if \[ "$$$$BUILD_ON_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/' qtbase/configure && \
|
||||
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
|
||||
cp -f qtbase/mkspecs/macx-clang/Info.plist.lib qtbase/mkspecs/macx-clang-linux/ &&\
|
||||
@@ -55,8 +133,7 @@ define $(package)_preprocess_cmds
|
||||
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\
|
||||
cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \
|
||||
patch -p1 < $($(package)_patch_dir)/fix-xcb-include-order.patch && \
|
||||
patch -p1 < $($(package)_patch_dir)/qt5-tablet-osx.patch && \
|
||||
patch -d qtbase -p1 < $($(package)_patch_dir)/qt5-yosemite.patch && \
|
||||
patch -p1 < $($(package)_patch_dir)/mingw-uuidof.patch && \
|
||||
echo "QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||
echo "QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||
echo "QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||
@@ -69,7 +146,6 @@ define $(package)_config_cmds
|
||||
export PKG_CONFIG_SYSROOT_DIR=/ && \
|
||||
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \
|
||||
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \
|
||||
export CPATH=$(host_prefix)/include && \
|
||||
./configure $($(package)_config_opts) && \
|
||||
$(MAKE) sub-src-clean && \
|
||||
cd ../qttranslations && ../qtbase/bin/qmake qttranslations.pro -o Makefile && \
|
||||
@@ -78,7 +154,6 @@ define $(package)_config_cmds
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
export CPATH=$(host_prefix)/include && \
|
||||
$(MAKE) -C src $(addprefix sub-,$($(package)_qt_libs)) && \
|
||||
$(MAKE) -C ../qttools/src/linguist/lrelease && \
|
||||
$(MAKE) -C ../qttranslations
|
||||
@@ -94,6 +169,6 @@ define $(package)_stage_cmds
|
||||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
rm -rf mkspecs/ lib/cmake/ && \
|
||||
rm lib/libQt5Bootstrap.a lib/lib*.la lib/*.prl plugins/*/*.prl
|
||||
rm -rf native/mkspecs/ native/lib/ lib/cmake/ && \
|
||||
rm -f lib/lib*.la lib/*.prl plugins/*/*.prl
|
||||
endef
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
--- old/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-03-17 02:06:42.705930685 +0000
|
||||
+++ new/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-03-17 02:08:41.281926351 +0000
|
||||
@@ -103,7 +103,6 @@
|
||||
--- old/qtbase/src/plugins/platforms/xcb/xcb_qpa_lib.pro 2015-03-17 02:06:42.705930685 +0000
|
||||
+++ new/qtbase/src/plugins/platforms/xcb/xcb_qpa_lib.pro 2015-03-17 02:08:41.281926351 +0000
|
||||
@@ -94,8 +94,6 @@
|
||||
|
||||
DEFINES += $$QMAKE_DEFINES_XCB
|
||||
LIBS += $$QMAKE_LIBS_XCB
|
||||
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB
|
||||
-QMAKE_CFLAGS += $$QMAKE_CFLAGS_XCB
|
||||
|
||||
CONFIG += qpa/genericunixfontdatabase
|
||||
|
||||
@@ -118,7 +117,8 @@
|
||||
@@ -104,7 +102,8 @@
|
||||
contains(QT_CONFIG, xcb-qt) {
|
||||
DEFINES += XCB_USE_RENDER
|
||||
XCB_DIR = ../../../3rdparty/xcb
|
||||
@@ -17,15 +18,28 @@
|
||||
+ QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||
LIBS += -lxcb -L$$OUT_PWD/xcb-static -lxcb-static
|
||||
} else {
|
||||
LIBS += -lxcb -lxcb-image -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shm -lxcb-randr
|
||||
LIBS += -lxcb -lxcb-image -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shm -lxcb-randr -lxcb-shape -lxcb-keysyms
|
||||
--- old/qtbase/src/plugins/platforms/xcb/xcb-static/xcb-static.pro 2015-03-17 02:07:04.641929383 +0000
|
||||
+++ new/qtbase/src/plugins/platforms/xcb/xcb-static/xcb-static.pro 2015-03-17 02:10:15.485922059 +0000
|
||||
@@ -8,7 +8,7 @@
|
||||
@@ -8,7 +8,8 @@
|
||||
|
||||
XCB_DIR = ../../../../3rdparty/xcb
|
||||
|
||||
-INCLUDEPATH += $$XCB_DIR/include $$XCB_DIR/include/xcb $$XCB_DIR/sysinclude
|
||||
+QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/include/xcb -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||
+QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/include/xcb -I$$XCB_DIR/sysinclude
|
||||
+QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/include/xcb -I$$XCB_DIR/sysinclude
|
||||
|
||||
# ignore compiler warnings in 3rdparty code
|
||||
QMAKE_CFLAGS_STATIC_LIB+=-w
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB
|
||||
QMAKE_CFLAGS += $$QMAKE_CFLAGS_XCB
|
||||
--- old/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-07-24 16:02:59.530038830 -0400
|
||||
+++ new/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-07-24 16:01:22.106037459 -0400
|
||||
@@ -11,3 +11,9 @@
|
||||
qxcbmain.cpp
|
||||
OTHER_FILES += xcb.json README
|
||||
|
||||
+contains(QT_CONFIG, xcb-qt) {
|
||||
+ DEFINES += XCB_USE_RENDER
|
||||
+ XCB_DIR = ../../../3rdparty/xcb
|
||||
+ QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||
+ QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||
+}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
MAKEFILE_GENERATOR = UNIX
|
||||
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname
|
||||
DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG
|
||||
QMAKE_INCREMENTAL_STYLE = sublib
|
||||
include(../common/macx.conf)
|
||||
include(../common/gcc-base-mac.conf)
|
||||
@@ -10,8 +11,10 @@ QMAKE_XCODE_VERSION=4.3
|
||||
QMAKE_XCODE_DEVELOPER_PATH=/Developer
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = $${MAC_MIN_VERSION}
|
||||
QMAKE_MAC_SDK=macosx
|
||||
QMAKE_MAC_SDK.macosx.path = $$QMAKE_MAC_SDK_PATH
|
||||
QMAKE_MAC_SDK.macosx.path = $${MAC_SDK_PATH}
|
||||
QMAKE_MAC_SDK.macosx.platform_name = macosx
|
||||
QMAKE_MAC_SDK.macosx.version = $${MAC_SDK_VERSION}
|
||||
QMAKE_MAC_SDK.macosx.platform_path = /phony
|
||||
QMAKE_CFLAGS += -target $${MAC_TARGET}
|
||||
QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CFLAGS
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ PROJECT_NAME = Bitcoin
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = 0.11.0
|
||||
PROJECT_NUMBER = 0.11.2
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
Bitcoin Core 0.11.0
|
||||
Bitcoin Core 0.11.2
|
||||
=====================
|
||||
|
||||
Setup
|
||||
@@ -7,7 +7,7 @@ Setup
|
||||
|
||||
Running
|
||||
---------------------
|
||||
The following are some helpful notes on how to run Bitcoin on your native platform.
|
||||
The following are some helpful notes on how to run Bitcoin on your native platform.
|
||||
|
||||
### Unix
|
||||
|
||||
@@ -26,7 +26,7 @@ Unpack the files into a directory and run:
|
||||
|
||||
Unpack the files into a directory, and then run bitcoin-qt.exe.
|
||||
|
||||
### OSX
|
||||
### OS X
|
||||
|
||||
Drag Bitcoin-Qt to your applications folder, and then run Bitcoin-Qt.
|
||||
|
||||
@@ -41,7 +41,7 @@ Building
|
||||
---------------------
|
||||
The following are developer notes on how to build Bitcoin on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
|
||||
|
||||
- [OSX Build Notes](build-osx.md)
|
||||
- [OS X Build Notes](build-osx.md)
|
||||
- [Unix Build Notes](build-unix.md)
|
||||
- [Gitian Building Guide](gitian-building.md)
|
||||
|
||||
|
||||
+10
-10
@@ -1,12 +1,12 @@
|
||||
Deterministic OSX Dmg Notes.
|
||||
Deterministic OS X Dmg Notes.
|
||||
|
||||
Working OSX DMGs are created in Linux by combining a recent clang,
|
||||
Working OS X DMGs are created in Linux by combining a recent clang,
|
||||
the Apple's binutils (ld, ar, etc), and DMG authoring tools.
|
||||
|
||||
Apple uses clang extensively for development and has upstreamed the necessary
|
||||
functionality so that a vanilla clang can take advantage. It supports the use
|
||||
of -F, -target, -mmacosx-version-min, and --sysroot, which are all necessary
|
||||
when building for OSX. A pre-compiled version of 3.2 is used because it was not
|
||||
when building for OS X. A pre-compiled version of 3.2 is used because it was not
|
||||
available in the Precise repositories at the time this work was started. In the
|
||||
future, it can be switched to use system packages instead.
|
||||
|
||||
@@ -29,18 +29,18 @@ originally done in toolchain4.
|
||||
|
||||
To complicate things further, all builds must target an Apple SDK. These SDKs
|
||||
are free to download, but not redistributable.
|
||||
To obtain it, register for a developer account, then download the XCode 6.1.1 dmg:
|
||||
To obtain it, register for a developer account, then download the Xcode 6.1.1 dmg:
|
||||
https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_6.1.1/xcode_6.1.1.dmg
|
||||
|
||||
This file is several gigabytes in size, but only a single directory inside is
|
||||
needed: Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
|
||||
|
||||
Unfortunately, the usual linux tools (7zip, hpmount, loopback mount) are incapable of opening this file.
|
||||
To create a tarball suitable for gitian input, mount the dmg in OSX, then create it with:
|
||||
To create a tarball suitable for Gitian input, mount the dmg in OS X, then create it with:
|
||||
$ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.9.sdk.tar.gz MacOSX10.9.sdk
|
||||
|
||||
|
||||
The gitian descriptors build 2 sets of files: Linux tools, then Apple binaries
|
||||
The Gitian descriptors build 2 sets of files: Linux tools, then Apple binaries
|
||||
which are created using these tools. The build process has been designed to
|
||||
avoid including the SDK's files in Gitian's outputs. All interim tarballs are
|
||||
fully deterministic and may be freely redistributed.
|
||||
@@ -64,20 +64,20 @@ Ideally, the creation could be fixed and genisoimage would no longer be necessar
|
||||
|
||||
Background images and other features can be added to DMG files by inserting a
|
||||
.DS_Store before creation. The easiest way to create this file is to build a
|
||||
DMG without one, move it to a device running OSX, customize the layout, then
|
||||
DMG without one, move it to a device running OS X, customize the layout, then
|
||||
grab the .DS_Store file for later use. That is the approach taken here.
|
||||
|
||||
As of OSX Mavericks (10.9), using an Apple-blessed key to sign binaries is a
|
||||
As of OS X Mavericks (10.9), using an Apple-blessed key to sign binaries is a
|
||||
requirement in order to satisfy the new Gatekeeper requirements. Because this
|
||||
private key cannot be shared, we'll have to be a bit creative in order for the
|
||||
build process to remain somewhat deterministic. Here's how it works:
|
||||
|
||||
- Builders use gitian to create an unsigned release. This outputs an unsigned
|
||||
- Builders use Gitian to create an unsigned release. This outputs an unsigned
|
||||
dmg which users may choose to bless and run. It also outputs an unsigned app
|
||||
structure in the form of a tarball, which also contains all of the tools
|
||||
that have been previously (deterministically) built in order to create a
|
||||
final dmg.
|
||||
- The Apple keyholder uses this unsigned app to create a detached signature,
|
||||
using the script that is also included there.
|
||||
- Builders feed the unsigned app + detached signature back into gitian. It
|
||||
- Builders feed the unsigned app + detached signature back into Gitian. It
|
||||
uses the pre-built tools to recombine the pieces into a deterministic dmg.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Bitcoin Core 0.11.0
|
||||
Bitcoin Core 0.11.2
|
||||
=====================
|
||||
|
||||
Intro
|
||||
|
||||
@@ -9,8 +9,7 @@ Supported API
|
||||
####Transactions
|
||||
`GET /rest/tx/<TX-HASH>.<bin|hex|json>`
|
||||
|
||||
Given a transaction hash,
|
||||
Returns a transaction, in binary, hex-encoded binary or JSON formats.
|
||||
Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats.
|
||||
|
||||
For full TX query capability, one must enable the transaction index via "txindex=1" command line / configuration option.
|
||||
|
||||
@@ -18,8 +17,7 @@ For full TX query capability, one must enable the transaction index via "txindex
|
||||
`GET /rest/block/<BLOCK-HASH>.<bin|hex|json>`
|
||||
`GET /rest/block/notxdetails/<BLOCK-HASH>.<bin|hex|json>`
|
||||
|
||||
Given a block hash,
|
||||
Returns a block, in binary, hex-encoded binary or JSON formats.
|
||||
Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats.
|
||||
|
||||
The HTTP request and response are both handled entirely in-memory, thus making maximum memory usage at least 2.66MB (1 MB max block, plus hex encoding) per request.
|
||||
|
||||
@@ -28,8 +26,7 @@ With the /notxdetails/ option JSON response will only contain the transaction ha
|
||||
####Blockheaders
|
||||
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex>`
|
||||
|
||||
Given a block hash,
|
||||
Returns <COUNT> amount of blockheaders in upward direction.
|
||||
Given a block hash: returns <COUNT> amount of blockheaders in upward direction.
|
||||
|
||||
JSON is not supported.
|
||||
|
||||
@@ -81,4 +78,4 @@ $ curl localhost:18332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff76
|
||||
|
||||
Risks
|
||||
-------------
|
||||
Running a webbrowser on the same node with a REST enabled bitcoind can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:8332/rest/tx/1234567890.json">` which might break the nodes privacy.
|
||||
Running a web browser on the same node with a REST enabled bitcoind can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:8332/rest/tx/1234567890.json">` which might break the nodes privacy.
|
||||
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
Mac OS X Build Instructions and Notes
|
||||
====================================
|
||||
This guide will show you how to build bitcoind (headless client) for OSX.
|
||||
This guide will show you how to build bitcoind (headless client) for OS X.
|
||||
|
||||
Notes
|
||||
-----
|
||||
@@ -13,8 +13,8 @@ built-in one is located in `/Applications/Utilities`.
|
||||
Preparation
|
||||
-----------
|
||||
|
||||
You need to install XCode with all the options checked so that the compiler
|
||||
and everything is available in /usr not just /Developer. XCode should be
|
||||
You need to install Xcode with all the options checked so that the compiler
|
||||
and everything is available in /usr not just /Developer. Xcode should be
|
||||
available on your OS X installation media, but if not, you can get the
|
||||
current version from https://developer.apple.com/xcode/. If you install
|
||||
Xcode 4.3 or later, you'll need to install its command line tools. This can
|
||||
@@ -38,7 +38,7 @@ NOTE: Building with Qt4 is still supported, however, could result in a broken UI
|
||||
|
||||
### Building `bitcoind`
|
||||
|
||||
1. Clone the github tree to get the source code and go into the directory.
|
||||
1. Clone the GitHub tree to get the source code and go into the directory.
|
||||
|
||||
git clone https://github.com/bitcoin/bitcoin.git
|
||||
cd bitcoin
|
||||
@@ -62,7 +62,7 @@ Use Qt Creator as IDE
|
||||
You can use Qt Creator as IDE, for debugging and for manipulating forms, etc.
|
||||
Download Qt Creator from http://www.qt.io/download/. Download the "community edition" and only install Qt Creator (uncheck the rest during the installation process).
|
||||
|
||||
1. Make sure you installed everything through homebrew mentioned above
|
||||
1. Make sure you installed everything through Homebrew mentioned above
|
||||
2. Do a proper ./configure --with-gui=qt5 --enable-debug
|
||||
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project
|
||||
4. Enter "bitcoin-qt" as project name, enter src/qt as location
|
||||
|
||||
+2
-13
@@ -59,7 +59,7 @@ Build requirements:
|
||||
|
||||
sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev
|
||||
|
||||
for Ubuntu 12.04 and later or Debian 7 and later libboost-all-dev has to be installed:
|
||||
For Ubuntu 12.04 and later or Debian 7 and later libboost-all-dev has to be installed:
|
||||
|
||||
sudo apt-get install libboost-all-dev
|
||||
|
||||
@@ -72,18 +72,7 @@ for Ubuntu 12.04 and later or Debian 7 and later libboost-all-dev has to be inst
|
||||
Ubuntu 12.04 and later have packages for libdb5.1-dev and libdb5.1++-dev,
|
||||
but using these will break binary wallet compatibility, and is not recommended.
|
||||
|
||||
for Debian 7 (Wheezy) and later:
|
||||
The oldstable repository contains db4.8 packages.
|
||||
Add the following line to /etc/apt/sources.list,
|
||||
replacing [mirror] with any official debian mirror.
|
||||
|
||||
deb http://[mirror]/debian/ oldstable main
|
||||
|
||||
To enable the change run
|
||||
|
||||
sudo apt-get update
|
||||
|
||||
for other Debian & Ubuntu (with ppa):
|
||||
For other Debian & Ubuntu (with ppa):
|
||||
|
||||
sudo apt-get install libdb4.8-dev libdb4.8++-dev
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ As Doxygen recognizes the comments by the delimiters (`/**` and `*/` in this cas
|
||||
|
||||
To describe a class use the same construct above the class definition:
|
||||
```c++
|
||||
/**
|
||||
/**
|
||||
* Alerts are for notifying old versions if they become too obsolete and
|
||||
* need to upgrade. The message is displayed in the status bar.
|
||||
* @see GetWarnings()
|
||||
|
||||
@@ -7,7 +7,7 @@ As such, DNS seeds must be run by entities which have some minimum
|
||||
level of trust within the Bitcoin community.
|
||||
|
||||
Other implementations of Bitcoin software may also use the same
|
||||
seeds and may be more exposed. In light of this exposure, this
|
||||
seeds and may be more exposed. In light of this exposure, this
|
||||
document establishes some basic expectations for operating dnsseeds.
|
||||
|
||||
0. A DNS seed operating organization or person is expected to follow good
|
||||
|
||||
+8
-4
@@ -1,12 +1,16 @@
|
||||
Used in 0.8.0
|
||||
---------------------
|
||||
* wallet.dat: personal wallet (BDB) with keys and transactions
|
||||
* peers.dat: peer IP address database (custom format); since 0.7.0
|
||||
|
||||
* bitcoin.conf: contains configuration settings for bitcoind or bitcoin-qt
|
||||
* bitcoind.pid: stores the process id of bitcoind while running
|
||||
* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0
|
||||
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8)
|
||||
* blocks/index/*; block index (LevelDB); since 0.8.0
|
||||
* chainstate/*; block chain state database (LevelDB); since 0.8.0
|
||||
* database/*: BDB database environment; only used for wallet since 0.8.0
|
||||
* db.log: wallet database log file
|
||||
* debug.log: contains debug information and general logging generated by bitcoind or bitcoin-qt
|
||||
* fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation; since 0.10.0
|
||||
* peers.dat: peer IP address database (custom format); since 0.7.0
|
||||
* wallet.dat: personal wallet (BDB) with keys and transactions
|
||||
|
||||
Only used in pre-0.8.0
|
||||
---------------------
|
||||
|
||||
+31
-31
@@ -1,7 +1,7 @@
|
||||
Gitian building
|
||||
================
|
||||
|
||||
*Setup instructions for a gitian build of Bitcoin using a Debian VM or physical system.*
|
||||
*Setup instructions for a Gitian build of Bitcoin using a Debian VM or physical system.*
|
||||
|
||||
Gitian is the deterministic build process that is used to build the Bitcoin
|
||||
Core executables. It provides a way to be reasonably sure that the
|
||||
@@ -13,7 +13,7 @@ Multiple developers build the source code by following a specific descriptor
|
||||
These results are compared and only if they match, the build is accepted and uploaded
|
||||
to bitcoin.org.
|
||||
|
||||
More independent gitian builders are needed, which is why I wrote this
|
||||
More independent Gitian builders are needed, which is why I wrote this
|
||||
guide. It is preferred to follow these steps yourself instead of using someone else's
|
||||
VM image to avoid 'contaminating' the build.
|
||||
|
||||
@@ -22,9 +22,9 @@ Table of Contents
|
||||
|
||||
- [Create a new VirtualBox VM](#create-a-new-virtualbox-vm)
|
||||
- [Connecting to the VM](#connecting-to-the-vm)
|
||||
- [Setting up Debian for gitian building](#setting-up-debian-for-gitian-building)
|
||||
- [Installing gitian](#installing-gitian)
|
||||
- [Setting up the gitian image](#setting-up-the-gitian-image)
|
||||
- [Setting up Debian for Gitian building](#setting-up-debian-for-gitian-building)
|
||||
- [Installing Gitian](#installing-gitian)
|
||||
- [Setting up the Gitian image](#setting-up-the-gitian-image)
|
||||
- [Getting and building the inputs](#getting-and-building-the-inputs)
|
||||
- [Building Bitcoin](#building-bitcoin)
|
||||
- [Building an alternative repository](#building-an-alternative-repository)
|
||||
@@ -60,28 +60,28 @@ In the VirtualBox GUI click "Create" and choose the following parameters in the
|
||||

|
||||
|
||||
- Hard Drive: Create a virtual hard drive now
|
||||
|
||||
|
||||

|
||||
|
||||
- Hard Drive file type: Use the default, VDI (VirtualBox Disk Image)
|
||||
- Hard Drive file type: Use the default, VDI (VirtualBox Disk Image)
|
||||
|
||||

|
||||
|
||||
- Storage on Physical hard drive: Dynamically Allocated
|
||||
|
||||
|
||||
- Storage on Physical hard drive: Dynamically Allocated
|
||||
|
||||

|
||||
|
||||
- Disk size: at least 40GB; as low as 20GB *may* be possible, but better to err on the safe side
|
||||
- Disk size: at least 40GB; as low as 20GB *may* be possible, but better to err on the safe side
|
||||
- Push the `Create` button
|
||||
|
||||
Get the [Debian 7.8 net installer](http://cdimage.debian.org/debian-cd/7.8.0/amd64/iso-cd/debian-7.8.0-amd64-netinst.iso) (a more recent minor version should also work, see also [Debian Network installation](https://www.debian.org/CD/netinst/)).
|
||||
Get the [Debian 7.8 net installer](http://cdimage.debian.org/cdimage/archive/7.8.0/amd64/iso-cd/debian-7.8.0-amd64-netinst.iso) (a more recent minor version should also work, see also [Debian Network installation](https://www.debian.org/CD/netinst/)).
|
||||
This DVD image can be validated using a SHA256 hashing tool, for example on
|
||||
Unixy OSes by entering the following in a terminal:
|
||||
|
||||
echo "e39c36d6adc0fd86c6edb0e03e22919086c883b37ca194d063b8e3e8f6ff6a3a debian-7.8.0-amd64-netinst.iso" | sha256sum -c
|
||||
# (must return OK)
|
||||
|
||||
After creating the VM, we need to configure it.
|
||||
After creating the VM, we need to configure it.
|
||||
|
||||
- Click the `Settings` button, then go to the `Network` tab. Adapter 1 should be attached to `NAT`.
|
||||
|
||||
@@ -125,22 +125,22 @@ and proceed, just press `Enter`. To select a different button, press `Tab`.
|
||||

|
||||
|
||||
- The VM will detect network settings using DHCP, this should all proceed automatically
|
||||
- Configure the network:
|
||||
- Configure the network:
|
||||
- System name `debian`.
|
||||
- Leave domain name empty.
|
||||
|
||||

|
||||
|
||||
- Choose a root password and enter it twice (remember it for later)
|
||||
- Choose a root password and enter it twice (remember it for later)
|
||||
|
||||

|
||||
|
||||
- Name the new user `debian` (the full name doesn't matter, you can leave it empty)
|
||||
- Name the new user `debian` (the full name doesn't matter, you can leave it empty)
|
||||
|
||||

|
||||

|
||||
|
||||
- Choose a user password and enter it twice (remember it for later)
|
||||
- Choose a user password and enter it twice (remember it for later)
|
||||
|
||||

|
||||
|
||||
@@ -150,11 +150,11 @@ and proceed, just press `Enter`. To select a different button, press `Tab`.
|
||||

|
||||
|
||||
- Disk setup
|
||||
- Partitioning method: Guided - Use the entire disk
|
||||
|
||||
- Partitioning method: Guided - Use the entire disk
|
||||
|
||||

|
||||
|
||||
- Select disk to partition: SCSI1 (0,0,0)
|
||||
- Select disk to partition: SCSI1 (0,0,0)
|
||||
|
||||

|
||||
|
||||
@@ -168,7 +168,7 @@ and proceed, just press `Enter`. To select a different button, press `Tab`.
|
||||

|
||||
|
||||
- The base system will be installed, this will take a minute or so
|
||||
- Choose a mirror (any will do)
|
||||
- Choose a mirror (any will do)
|
||||
|
||||

|
||||
|
||||
@@ -217,7 +217,7 @@ Replace `root` with `debian` to log in as user.
|
||||
[1] http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
|
||||
[2] http://winscp.net/eng/index.php
|
||||
|
||||
Setting up Debian for gitian building
|
||||
Setting up Debian for Gitian building
|
||||
--------------------------------------
|
||||
|
||||
In this section we will be setting up the Debian installation for Gitian building.
|
||||
@@ -237,7 +237,7 @@ Then set up LXC and the rest with the following, which is a complex jumble of se
|
||||
|
||||
```bash
|
||||
# the version of lxc-start in Debian 7.4 needs to run as root, so make sure
|
||||
# that the build script can exectute it without providing a password
|
||||
# that the build script can execute it without providing a password
|
||||
echo "%sudo ALL=NOPASSWD: /usr/bin/lxc-start" > /etc/sudoers.d/gitian-lxc
|
||||
# add cgroup for LXC
|
||||
echo "cgroup /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab
|
||||
@@ -257,7 +257,7 @@ reboot
|
||||
At the end the VM is rebooted to make sure that the changes take effect. The steps in this
|
||||
section need only to be performed once.
|
||||
|
||||
Installing gitian
|
||||
Installing Gitian
|
||||
------------------
|
||||
|
||||
Re-login as the user `debian` that was created during installation.
|
||||
@@ -277,14 +277,14 @@ cd ..
|
||||
|
||||
**Note**: When sudo asks for a password, enter the password for the user *debian* not for *root*.
|
||||
|
||||
Clone the git repositories for bitcoin and gitian.
|
||||
Clone the git repositories for bitcoin and Gitian.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/devrandom/gitian-builder.git
|
||||
git clone https://github.com/bitcoin/bitcoin
|
||||
```
|
||||
|
||||
Setting up the gitian image
|
||||
Setting up the Gitian image
|
||||
-------------------------
|
||||
|
||||
Gitian needs a virtual image of the operating system to build in.
|
||||
@@ -310,13 +310,13 @@ Getting and building the inputs
|
||||
Follow the instructions in [doc/release-process.md](release-process.md) in the bitcoin repository
|
||||
under 'Fetch and build inputs' to install sources which require manual intervention. Also follow
|
||||
the next step: 'Seed the Gitian sources cache', which will fetch all necessary source files allowing
|
||||
for gitian to work offline.
|
||||
for Gitian to work offline.
|
||||
|
||||
Building Bitcoin
|
||||
----------------
|
||||
|
||||
To build Bitcoin (for Linux, OSX and Windows) just follow the steps under 'perform
|
||||
gitian builds' in [doc/release-process.md](release-process.md) in the bitcoin repository.
|
||||
To build Bitcoin (for Linux, OS X and Windows) just follow the steps under 'perform
|
||||
Gitian builds' in [doc/release-process.md](release-process.md) in the bitcoin repository.
|
||||
|
||||
This may take a long time as it also builds the dependencies needed for each descriptor.
|
||||
These dependencies will be cached after a successful build to avoid rebuilding them where possible.
|
||||
@@ -356,7 +356,7 @@ Building an alternative repository
|
||||
-----------------------------------
|
||||
|
||||
If you want to do a test build of a pull on GitHub it can be useful to point
|
||||
the gitian builder at an alternative repository, using the same descriptors
|
||||
the Gitian builder at an alternative repository, using the same descriptors
|
||||
and inputs.
|
||||
|
||||
For example:
|
||||
@@ -386,7 +386,7 @@ in `gitian.sigs` to your signing machine and do
|
||||
```
|
||||
|
||||
This will create the `.sig` files that can be committed together with the `.assert` files to assert your
|
||||
gitian build.
|
||||
Gitian build.
|
||||
|
||||
Uploading signatures
|
||||
---------------------
|
||||
|
||||
+3
-5
@@ -35,9 +35,8 @@ generate one from the shell yourself like this:
|
||||
|
||||
bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'
|
||||
|
||||
Once you have a password in hand, set rpcpassword= in /etc/bitcoin/bitcoin.conf
|
||||
|
||||
For an example configuration file that describes the configuration settings,
|
||||
For an example configuration file that describes the configuration settings,
|
||||
see contrib/debian/examples/bitcoin.conf.
|
||||
|
||||
3. Paths
|
||||
@@ -89,8 +88,8 @@ use old versions of Upstart and do not supply the start-stop-daemon utility.
|
||||
|
||||
Copy bitcoind.init to /etc/init.d/bitcoind. Test by running "service bitcoind start".
|
||||
|
||||
Using this script, you can adjust the path and flags to the bitcoind program by
|
||||
setting the BITCOIND and FLAGS environment variables in the file
|
||||
Using this script, you can adjust the path and flags to the bitcoind program by
|
||||
setting the BITCOIND and FLAGS environment variables in the file
|
||||
/etc/sysconfig/bitcoind. You can also use the DAEMONOPTS environment variable here.
|
||||
|
||||
5. Auto-respawn
|
||||
@@ -99,4 +98,3 @@ setting the BITCOIND and FLAGS environment variables in the file
|
||||
Auto respawning is currently only configured for Upstart and systemd.
|
||||
Reasonable defaults have been chosen but YMMV.
|
||||
|
||||
|
||||
|
||||
+122
-410
@@ -1,9 +1,10 @@
|
||||
Bitcoin Core version 0.11.0 is now available from:
|
||||
Bitcoin Core version 0.11.2 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.11.0/>
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.11.2/>
|
||||
|
||||
This is a new major version release, bringing both new features and
|
||||
bug fixes.
|
||||
This is a new minor version release, bringing bug fixes, the BIP65
|
||||
(CLTV) consensus change, and relay policy preparation for BIP113. It is
|
||||
recommended to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
@@ -44,176 +45,122 @@ supported and may break as soon as the older version attempts to reindex.
|
||||
This does not affect wallet forward or backward compatibility. There are no
|
||||
known problems when downgrading from 0.11.x to 0.10.x.
|
||||
|
||||
Important information
|
||||
======================
|
||||
Notable changes since 0.11.1
|
||||
============================
|
||||
|
||||
Transaction flooding
|
||||
---------------------
|
||||
BIP65 soft fork to enforce OP_CHECKLOCKTIMEVERIFY opcode
|
||||
--------------------------------------------------------
|
||||
|
||||
At the time of this release, the P2P network is being flooded with low-fee
|
||||
transactions. This causes a ballooning of the mempool size.
|
||||
This release includes several changes related to the [BIP65][] soft fork
|
||||
which redefines the existing OP_NOP2 opcode as OP_CHECKLOCKTIMEVERIFY
|
||||
(CLTV) so that a transaction output can be made unspendable until a
|
||||
specified point in the future.
|
||||
|
||||
If this growth of the mempool causes problematic memory use on your node, it is
|
||||
possible to change a few configuration options to work around this. The growth
|
||||
of the mempool can be monitored with the RPC command `getmempoolinfo`.
|
||||
1. This release will only relay and mine transactions spending a CLTV
|
||||
output if they comply with the BIP65 rules as provided in code.
|
||||
|
||||
One is to increase the minimum transaction relay fee `minrelaytxfee`, which
|
||||
defaults to 0.00001. This will cause transactions with fewer BTC/kB fee to be
|
||||
rejected, and thus fewer transactions entering the mempool.
|
||||
2. This release will produce version 4 blocks by default. Please see the
|
||||
*notice to miners* below.
|
||||
|
||||
The other is to restrict the relaying of free transactions with
|
||||
`limitfreerelay`. This option sets the number of kB/minute at which
|
||||
free transactions (with enough priority) will be accepted. It defaults to 15.
|
||||
Reducing this number reduces the speed at which the mempool can grow due
|
||||
to free transactions.
|
||||
3. Once 951 out of a sequence of 1,001 blocks on the local node's best block
|
||||
chain contain version 4 (or higher) blocks, this release will no
|
||||
longer accept new version 3 blocks and it will only accept version 4
|
||||
blocks if they comply with the BIP65 rules for CLTV.
|
||||
|
||||
For example, add the following to `bitcoin.conf`:
|
||||
For more information about the soft-forking change, please see
|
||||
<https://github.com/bitcoin/bitcoin/pull/6351>
|
||||
|
||||
minrelaytxfee=0.00005
|
||||
limitfreerelay=5
|
||||
Graphs showing the progress towards block version 4 adoption may be
|
||||
found at the URLs below:
|
||||
|
||||
More robust solutions are being worked on for a follow-up release.
|
||||
- Block versions over the last 50,000 blocks as progress towards BIP65
|
||||
consensus enforcement: <http://bitcoin.sipa.be/ver-50k.png>
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
- Block versions over the last 2,000 blocks showing the days to the
|
||||
earliest possible BIP65 consensus-enforced block: <http://bitcoin.sipa.be/ver-2k.png>
|
||||
|
||||
Block file pruning
|
||||
----------------------
|
||||
**Notice to miners:** Bitcoin Core’s block templates are now for
|
||||
version 4 blocks only, and any mining software relying on its
|
||||
getblocktemplate must be updated in parallel to use libblkmaker either
|
||||
version 0.4.3 or any version from 0.5.2 onward.
|
||||
|
||||
This release supports running a fully validating node without maintaining a copy
|
||||
of the raw block and undo data on disk. To recap, there are four types of data
|
||||
related to the blockchain in the bitcoin system: the raw blocks as received over
|
||||
the network (blk???.dat), the undo data (rev???.dat), the block index and the
|
||||
UTXO set (both LevelDB databases). The databases are built from the raw data.
|
||||
- If you are solo mining, this will affect you the moment you upgrade
|
||||
Bitcoin Core, which must be done prior to BIP65 achieving its 951/1001
|
||||
status.
|
||||
|
||||
Block pruning allows Bitcoin Core to delete the raw block and undo data once
|
||||
it's been validated and used to build the databases. At that point, the raw data
|
||||
is used only to relay blocks to other nodes, to handle reorganizations, to look
|
||||
up old transactions (if -txindex is enabled or via the RPC/REST interfaces), or
|
||||
for rescanning the wallet. The block index continues to hold the metadata about
|
||||
all blocks in the blockchain.
|
||||
- If you are mining with the stratum mining protocol: this does not
|
||||
affect you.
|
||||
|
||||
The user specifies how much space to allot for block & undo files. The minimum
|
||||
allowed is 550MB. Note that this is in addition to whatever is required for the
|
||||
block index and UTXO databases. The minimum was chosen so that Bitcoin Core will
|
||||
be able to maintain at least 288 blocks on disk (two days worth of blocks at 10
|
||||
minutes per block). In rare instances it is possible that the amount of space
|
||||
used will exceed the pruning target in order to keep the required last 288
|
||||
blocks on disk.
|
||||
- If you are mining with the getblocktemplate protocol to a pool: this
|
||||
will affect you at the pool operator’s discretion, which must be no
|
||||
later than BIP65 achieving its 951/1001 status.
|
||||
|
||||
Block pruning works during initial sync in the same way as during steady state,
|
||||
by deleting block files "as you go" whenever disk space is allocated. Thus, if
|
||||
the user specifies 550MB, once that level is reached the program will begin
|
||||
deleting the oldest block and undo files, while continuing to download the
|
||||
blockchain.
|
||||
[BIP65]: https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
|
||||
|
||||
For now, block pruning disables block relay. In the future, nodes with block
|
||||
pruning will at a minimum relay "new" blocks, meaning blocks that extend their
|
||||
active chain.
|
||||
BIP113 mempool-only locktime enforcement using GetMedianTimePast()
|
||||
----------------------------------------------------------------
|
||||
|
||||
Block pruning is currently incompatible with running a wallet due to the fact
|
||||
that block data is used for rescanning the wallet and importing keys or
|
||||
addresses (which require a rescan.) However, running the wallet with block
|
||||
pruning will be supported in the near future, subject to those limitations.
|
||||
Bitcoin transactions currently may specify a locktime indicating when
|
||||
they may be added to a valid block. Current consensus rules require
|
||||
that blocks have a block header time greater than the locktime specified
|
||||
in any transaction in that block.
|
||||
|
||||
Block pruning is also incompatible with -txindex and will automatically disable
|
||||
it.
|
||||
Miners get to choose what time they use for their header time, with the
|
||||
consensus rule being that no node will accept a block whose time is more
|
||||
than two hours in the future. This creates a incentive for miners to
|
||||
set their header times to future values in order to include locktimed
|
||||
transactions which weren't supposed to be included for up to two more
|
||||
hours.
|
||||
|
||||
Once you have pruned blocks, going back to unpruned state requires
|
||||
re-downloading the entire blockchain. To do this, re-start the node with
|
||||
-reindex. Note also that any problem that would cause a user to reindex (e.g.,
|
||||
disk corruption) will cause a pruned node to redownload the entire blockchain.
|
||||
Finally, note that when a pruned node reindexes, it will delete any blk???.dat
|
||||
and rev???.dat files in the data directory prior to restarting the download.
|
||||
The consensus rules also specify that valid blocks may have a header
|
||||
time greater than that of the median of the 11 previous blocks. This
|
||||
GetMedianTimePast() time has a key feature we generally associate with
|
||||
time: it can't go backwards.
|
||||
|
||||
To enable block pruning on the command line:
|
||||
[BIP113][] specifies a soft fork (**not enforced in this release**) that
|
||||
weakens this perverse incentive for individual miners to use a future
|
||||
time by requiring that valid blocks have a computed GetMedianTimePast()
|
||||
greater than the locktime specified in any transaction in that block.
|
||||
|
||||
- `-prune=N`: where N is the number of MB to allot for raw block & undo data.
|
||||
Mempool inclusion rules currently require transactions to be valid for
|
||||
immediate inclusion in a block in order to be accepted into the mempool.
|
||||
This release begins applying the BIP113 rule to received transactions,
|
||||
so transaction whose time is greater than the GetMedianTimePast() will
|
||||
no longer be accepted into the mempool.
|
||||
|
||||
Modified RPC calls:
|
||||
**Implication for miners:** you will begin rejecting transactions that
|
||||
would not be valid under BIP113, which will prevent you from producing
|
||||
invalid blocks if/when BIP113 is enforced on the network. Any
|
||||
transactions which are valid under the current rules but not yet valid
|
||||
under the BIP113 rules will either be mined by other miners or delayed
|
||||
until they are valid under BIP113. Note, however, that time-based
|
||||
locktime transactions are more or less unseen on the network currently.
|
||||
|
||||
- `getblockchaininfo` now includes whether we are in pruned mode or not.
|
||||
- `getblock` will check if the block's data has been pruned and if so, return an
|
||||
error.
|
||||
- `getrawtransaction` will no longer be able to locate a transaction that has a
|
||||
UTXO but where its block file has been pruned.
|
||||
**Implication for users:** GetMedianTimePast() always trails behind the
|
||||
current time, so a transaction locktime set to the present time will be
|
||||
rejected by nodes running this release until the median time moves
|
||||
forward. To compensate, subtract one hour (3,600 seconds) from your
|
||||
locktimes to allow those transactions to be included in mempools at
|
||||
approximately the expected time.
|
||||
|
||||
Pruning is disabled by default.
|
||||
[BIP113]: https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki
|
||||
|
||||
Big endian support
|
||||
--------------------
|
||||
Windows bug fix for corrupted UTXO database on unclean shutdowns
|
||||
----------------------------------------------------------------
|
||||
|
||||
Experimental support for big-endian CPU architectures was added in this
|
||||
release. All little-endian specific code was replaced with endian-neutral
|
||||
constructs. This has been tested on at least MIPS and PPC hosts. The build
|
||||
system will automatically detect the endianness of the target.
|
||||
Several Windows users reported that they often need to reindex the
|
||||
entire blockchain after an unclean shutdown of Bitcoin Core on Windows
|
||||
(or an unclean shutdown of Windows itself). Although unclean shutdowns
|
||||
remain unsafe, this release no longer relies on memory-mapped files for
|
||||
the UTXO database, which significantly reduced the frequency of unclean
|
||||
shutdowns leading to required reindexes during testing.
|
||||
|
||||
Memory usage optimization
|
||||
--------------------------
|
||||
For more information, see: <https://github.com/bitcoin/bitcoin/pull/6917>
|
||||
|
||||
There have been many changes in this release to reduce the default memory usage
|
||||
of a node, among which:
|
||||
Other fixes for database corruption on Windows are expected in the
|
||||
next major release.
|
||||
|
||||
- Accurate UTXO cache size accounting (#6102); this makes the option `-dbcache`
|
||||
precise where this grossly underestimated memory usage before
|
||||
- Reduce size of per-peer data structure (#6064 and others); this increases the
|
||||
number of connections that can be supported with the same amount of memory
|
||||
- Reduce the number of threads (#5964, #5679); lowers the amount of (esp.
|
||||
virtual) memory needed
|
||||
|
||||
Fee estimation changes
|
||||
----------------------
|
||||
|
||||
This release improves the algorithm used for fee estimation. Previously, -1
|
||||
was returned when there was insufficient data to give an estimate. Now, -1
|
||||
will also be returned when there is no fee or priority high enough for the
|
||||
desired confirmation target. In those cases, it can help to ask for an estimate
|
||||
for a higher target number of blocks. It is not uncommon for there to be no
|
||||
fee or priority high enough to be reliably (85%) included in the next block and
|
||||
for this reason, the default for `-txconfirmtarget=n` has changed from 1 to 2.
|
||||
|
||||
Privacy: Disable wallet transaction broadcast
|
||||
----------------------------------------------
|
||||
|
||||
This release adds an option `-walletbroadcast=0` to prevent automatic
|
||||
transaction broadcast and rebroadcast (#5951). This option allows separating
|
||||
transaction submission from the node functionality.
|
||||
|
||||
Making use of this, third-party scripts can be written to take care of
|
||||
transaction (re)broadcast:
|
||||
|
||||
- Send the transaction as normal, either through RPC or the GUI
|
||||
- Retrieve the transaction data through RPC using `gettransaction` (NOT
|
||||
`getrawtransaction`). The `hex` field of the result will contain the raw
|
||||
hexadecimal representation of the transaction
|
||||
- The transaction can then be broadcasted through arbitrary mechanisms
|
||||
supported by the script
|
||||
|
||||
One such application is selective Tor usage, where the node runs on the normal
|
||||
internet but transactions are broadcasted over Tor.
|
||||
|
||||
For an example script see [bitcoin-submittx](https://github.com/laanwj/bitcoin-submittx).
|
||||
|
||||
Privacy: Stream isolation for Tor
|
||||
----------------------------------
|
||||
|
||||
This release adds functionality to create a new circuit for every peer
|
||||
connection, when the software is used with Tor. The new option,
|
||||
`-proxyrandomize`, is on by default.
|
||||
|
||||
When enabled, every outgoing connection will (potentially) go through a
|
||||
different exit node. That significantly reduces the chance to get unlucky and
|
||||
pick a single exit node that is either malicious, or widely banned from the P2P
|
||||
network. This improves connection reliability as well as privacy, especially
|
||||
for the initial connections.
|
||||
|
||||
**Important note:** If a non-Tor SOCKS5 proxy is configured that supports
|
||||
authentication, but doesn't require it, this change may cause that proxy to reject
|
||||
connections. A user and password is sent where they weren't before. This setup
|
||||
is exceedingly rare, but in this case `-proxyrandomize=0` can be passed to
|
||||
disable the behavior.
|
||||
|
||||
0.11.0 Change log
|
||||
0.11.2 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
@@ -221,285 +168,50 @@ behavior, not code moves, refactors and string updates. For convenience in locat
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and REST
|
||||
- #5461 `5f7279a` signrawtransaction: validate private key
|
||||
- #5444 `103f66b` Add /rest/headers/<count>/<hash>.<ext>
|
||||
- #4964 `95ecc0a` Add scriptPubKey field to validateaddress RPC call
|
||||
- #5476 `c986972` Add time offset into getpeerinfo output
|
||||
- #5540 `84eba47` Add unconfirmed and immature balances to getwalletinfo
|
||||
- #5599 `40e96a3` Get rid of the internal miner's hashmeter
|
||||
- #5711 `87ecfb0` Push down RPC locks
|
||||
- #5754 `1c4e3f9` fix getblocktemplate lock issue
|
||||
- #5756 `5d901d8` Fix getblocktemplate_proposals test by mining one block
|
||||
- #5548 `d48ce48` Add /rest/chaininfos
|
||||
- #5992 `4c4f1b4` Push down RPC reqWallet flag
|
||||
- #6036 `585b5db` Show zero value txouts in listunspent
|
||||
- #5199 `6364408` Add RPC call `gettxoutproof` to generate and verify merkle blocks
|
||||
- #5418 `16341cc` Report missing inputs in sendrawtransaction
|
||||
- #5937 `40f5e8d` show script verification errors in signrawtransaction result
|
||||
- #5420 `1fd2d39` getutxos REST command (based on Bip64)
|
||||
- #6193 `42746b0` [REST] remove json input for getutxos, limit to query max. 15 outpoints
|
||||
- #6226 `5901596` json: fail read_string if string contains trailing garbage
|
||||
|
||||
### Configuration and command-line options
|
||||
- #5636 `a353ad4` Add option `-allowselfsignedrootcertificate` to allow self signed root certs (for testing payment requests)
|
||||
- #5900 `3e8a1f2` Add a consistency check `-checkblockindex` for the block chain data structures
|
||||
- #5951 `7efc9cf` Make it possible to disable wallet transaction broadcast (using `-walletbroadcast=0`)
|
||||
- #5911 `b6ea3bc` privacy: Stream isolation for Tor (on by default, use `-proxyrandomize=0` to disable)
|
||||
- #5863 `c271304` Add autoprune functionality (`-prune=<size>`)
|
||||
- #6153 `0bcf04f` Parameter interaction: disable upnp if -proxy set
|
||||
- #6274 `4d9c7fe` Add option `-alerts` to opt out of alert system
|
||||
|
||||
### Block and transaction handling
|
||||
- #5367 `dcc1304` Do all block index writes in a batch
|
||||
- #5253 `203632d` Check against MANDATORY flags prior to accepting to mempool
|
||||
- #5459 `4406c3e` Reject headers that build on an invalid parent
|
||||
- #5481 `055f3ae` Apply AreSane() checks to the fees from the network
|
||||
- #5580 `40d65eb` Preemptively catch a few potential bugs
|
||||
- #5349 `f55c5e9` Implement test for merkle tree malleability in CPartialMerkleTree
|
||||
- #5564 `a89b837` clarify obscure uses of EvalScript()
|
||||
- #5521 `8e4578a` Reject non-final txs even in testnet/regtest
|
||||
- #5707 `6af674e` Change hardcoded character constants to descriptive named constants for db keys
|
||||
- #5286 `fcf646c` Change the default maximum OP_RETURN size to 80 bytes
|
||||
- #5710 `175d86e` Add more information to errors in ReadBlockFromDisk
|
||||
- #5948 `b36f1ce` Use GetAncestor to compute new target
|
||||
- #5959 `a0bfc69` Add additional block index consistency checks
|
||||
- #6058 `7e0e7f8` autoprune minor post-merge improvements
|
||||
- #5159 `2cc1372` New fee estimation code
|
||||
- #6102 `6fb90d8` Implement accurate UTXO cache size accounting
|
||||
- #6129 `2a82298` Bug fix for clearing fCheckForPruning
|
||||
- #5947 `e9af4e6` Alert if it is very likely we are getting a bad chain
|
||||
- #6203 `c00ae64` Remove P2SH coinbase flag, no longer interesting
|
||||
- #5985 `37b4e42` Fix removing of orphan transactions
|
||||
- #6221 `6cb70ca` Prune: Support noncontiguous block files
|
||||
- #6256 `fce474c` Use best header chain timestamps to detect partitioning
|
||||
- #6233 `a587606` Advance pindexLastCommonBlock for blocks in chainActive
|
||||
|
||||
### P2P protocol and network code
|
||||
- #5507 `844ace9` Prevent DOS attacks on in-flight data structures
|
||||
- #5770 `32a8b6a` Sanitize command strings before logging them
|
||||
- #5859 `dd4ffce` Add correct bool combiner for net signals
|
||||
- #5876 `8e4fd0c` Add a NODE_GETUTXO service bit and document NODE_NETWORK
|
||||
- #6028 `b9311fb` Move nLastTry from CAddress to CAddrInfo
|
||||
- #5662 `5048465` Change download logic to allow calling getdata on inbound peers
|
||||
- #5971 `18d2832` replace absolute sleep with conditional wait
|
||||
- #5918 `7bf5d5e` Use equivalent PoW for non-main-chain requests
|
||||
- #6059 `f026ab6` chainparams: use SeedSpec6's rather than CAddress's for fixed seeds
|
||||
- #6080 `31c0bf1` Add jonasschnellis dns seeder
|
||||
- #5976 `9f7809f` Reduce download timeouts as blocks arrive
|
||||
- #6172 `b4bbad1` Ignore getheaders requests when not synced
|
||||
- #5875 `304892f` Be stricter in processing unrequested blocks
|
||||
- #6333 `41bbc85` Hardcoded seeds update June 2015
|
||||
|
||||
### Validation
|
||||
- #5143 `48e1765` Implement BIP62 rule 6
|
||||
- #5713 `41e6e4c` Implement BIP66
|
||||
|
||||
### Build system
|
||||
- #5501 `c76c9d2` Add mips, mipsel and aarch64 to depends platforms
|
||||
- #5334 `cf87536` libbitcoinconsensus: Add pkg-config support
|
||||
- #5514 `ed11d53` Fix 'make distcheck'
|
||||
- #5505 `a99ef7d` Build winshutdownmonitor.cpp on Windows only
|
||||
- #5582 `e8a6639` Osx toolchain update
|
||||
- #5684 `ab64022` osx: bump build sdk to 10.9
|
||||
- #5695 `23ef5b7` depends: latest config.guess and config.sub
|
||||
- #5509 `31dedb4` Fixes when compiling in c++11 mode
|
||||
- #5819 `f8e68f7` release: use static libstdc++ and disable reduced exports by default
|
||||
- #5510 `7c3fbc3` Big endian support
|
||||
- #5149 `c7abfa5` Add script to verify all merge commits are signed
|
||||
- #6082 `7abbb7e` qt: disable qt tests when one of the checks for the gui fails
|
||||
- #6244 `0401aa2` configure: Detect (and reject) LibreSSL
|
||||
- #6269 `95aca44` gitian: Use the new bitcoin-detached-sigs git repo for OSX signatures
|
||||
- #6285 `ef1d506` Fix scheduler build with some boost versions.
|
||||
- #6280 `25c2216` depends: fix Boost 1.55 build on GCC 5
|
||||
- #6303 `b711599` gitian: add a gitian-win-signer descriptor
|
||||
- #6246 `8ea6d37` Fix build on FreeBSD
|
||||
- #6282 `daf956b` fix crash on shutdown when e.g. changing -txindex and abort action
|
||||
- #6354 `bdf0d94` Gitian windows signing normalization
|
||||
|
||||
### Wallet
|
||||
- #2340 `811c71d` Discourage fee sniping with nLockTime
|
||||
- #5485 `d01bcc4` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option
|
||||
- #5508 `9a5cabf` Add RandAddSeedPerfmon to MakeNewKey
|
||||
- #4805 `8204e19` Do not flush the wallet in AddToWalletIfInvolvingMe(..)
|
||||
- #5319 `93b7544` Clean up wallet encryption code
|
||||
- #5831 `df5c246` Subtract fee from amount
|
||||
- #6076 `6c97fd1` wallet: fix boost::get usage with boost 1.58
|
||||
- #5511 `23c998d` Sort pending wallet transactions before reaccepting
|
||||
- #6126 `26e08a1` Change default nTxConfirmTarget to 2
|
||||
- #6183 `75a4d51` Fix off-by-one error w/ nLockTime in the wallet
|
||||
- #6276 `c9fd907` Fix getbalance * 0
|
||||
|
||||
### GUI
|
||||
- #5219 `f3af0c8` New icons
|
||||
- #5228 `bb3c75b` HiDPI (retina) support for splash screen
|
||||
- #5258 `73cbf0a` The RPC Console should be a QWidget to make window more independent
|
||||
- #5488 `851dfc7` Light blue icon color for regtest
|
||||
- #5547 `a39aa74` New icon for the debug window
|
||||
- #5493 `e515309` Adopt style colour for button icons
|
||||
- #5557 `70477a0` On close of splashscreen interrupt verifyDB
|
||||
- #5559 `83be8fd` Make the command-line-args dialog better
|
||||
- #5144 `c5380a9` Elaborate on signverify message dialog warning
|
||||
- #5489 `d1aa3c6` Optimize PNG files
|
||||
- #5649 `e0cd2f5` Use text-color icons for system tray Send/Receive menu entries
|
||||
- #5651 `848f55d` Coin Control: Use U+2248 "ALMOST EQUAL TO" rather than a simple tilde
|
||||
- #5626 `ab0d798` Fix icon sizes and column width
|
||||
- #5683 `c7b22aa` add new osx dmg background picture
|
||||
- #5620 `7823598` Payment request expiration bug fix
|
||||
- #5729 `9c4a5a5` Allow unit changes for read-only BitcoinAmountField
|
||||
- #5753 `0f44672` Add bitcoin logo to about screen
|
||||
- #5629 `a956586` Prevent amount overflow problem with payment requests
|
||||
- #5830 `215475a` Don't save geometry for options and about/help window
|
||||
- #5793 `d26f0b2` Honor current network when creating autostart link
|
||||
- #5847 `f238add` Startup script for centos, with documentation
|
||||
- #5915 `5bd3a92` Fix a static qt5 crash when using certain versions of libxcb
|
||||
- #5898 `bb56781` Fix rpc console font size to flexible metrics
|
||||
- #5467 `bc8535b` Payment request / server work - part 2
|
||||
- #6161 `180c164` Remove movable option for toolbar
|
||||
- #6160 `0d862c2` Overviewpage: make sure warning icons gets colored
|
||||
|
||||
### Tests
|
||||
- #5453 `2f2d337` Add ability to run single test manually to RPC tests
|
||||
- #5421 `886eb57` Test unexecuted OP_CODESEPARATOR
|
||||
- #5530 `565b300` Additional rpc tests
|
||||
- #5611 `37b185c` Fix spurious windows test failures after 012598880c
|
||||
- #5613 `2eda47b` Fix smartfees test for change to relay policy
|
||||
- #5612 `e3f5727` Fix zapwallettxes test
|
||||
- #5642 `30a5b5f` Prepare paymentservertests for new unit tests
|
||||
- #5784 `e3a3cd7` Fix usage of NegateSignatureS in script_tests
|
||||
- #5813 `ee9f2bf` Add unit tests for next difficulty calculations
|
||||
- #5855 `d7989c0` Travis: run unit tests in different orders
|
||||
- #5852 `cdae53e` Reinitialize state in between individual unit tests.
|
||||
- #5883 `164d7b6` tests: add a BasicTestingSetup and apply to all tests
|
||||
- #5940 `446bb70` Regression test for ResendWalletTransactions
|
||||
- #6052 `cf7adad` fix and enable bip32 unit test
|
||||
- #6039 `734f80a` tests: Error when setgenerate is used on regtest
|
||||
- #6074 `948beaf` Correct the PUSHDATA4 minimal encoding test in script_invalid.json
|
||||
- #6032 `e08886d` Stop nodes after RPC tests, even with --nocleanup
|
||||
- #6075 `df1609f` Add additional script edge condition tests
|
||||
- #5981 `da38dc6` Python P2P testing
|
||||
- #5958 `9ef00c3` Add multisig rpc tests
|
||||
- #6112 `fec5c0e` Add more script edge condition tests
|
||||
|
||||
### Miscellaneous
|
||||
- #5457, #5506, #5952, #6047 Update libsecp256k1
|
||||
- #5437 `84857e8` Add missing CAutoFile::IsNull() check in main
|
||||
- #5490 `ec20fd7` Replace uint256/uint160 with opaque blobs where possible
|
||||
- #5654, #5764 Adding jonasschnelli's GPG key
|
||||
- #5477 `5f04d1d` OS X 10.10: LSSharedFileListItemResolve() is deprecated
|
||||
- #5679 `beff11a` Get rid of DetectShutdownThread
|
||||
- #5787 `9bd8c9b` Add fanquake PGP key
|
||||
- #5366 `47a79bb` No longer check osx compatibility in RenameThread
|
||||
- #5689 `07f4386` openssl: abstract out OPENSSL_cleanse
|
||||
- #5708 `8b298ca` Add list of implemented BIPs
|
||||
- #5809 `46bfbe7` Add bitcoin-cli man page
|
||||
- #5839 `86eb461` keys: remove libsecp256k1 verification until it's actually supported
|
||||
- #5749 `d734d87` Help messages correctly formatted (79 chars)
|
||||
- #5884 `7077fe6` BUGFIX: Stack around the variable 'rv' was corrupted
|
||||
- #5849 `41259ca` contrib/init/bitcoind.openrc: Compatibility with previous OpenRC init script variables
|
||||
- #5950 `41113e3` Fix locale fallback and guard tests against invalid locale settings
|
||||
- #5965 `7c6bfb1` Add git-subtree-check.sh script
|
||||
- #6033 `1623f6e` FreeBSD, OpenBSD thread renaming
|
||||
- #6064 `b46e7c2` Several changes to mruset
|
||||
- #6104 `3e2559c` Show an init message while activating best chain
|
||||
- #6125 `351f73e` Clean up parsing of bool command line args
|
||||
- #5964 `b4c219b` Lightweight task scheduler
|
||||
- #6116 `30dc3c1` [OSX] rename Bitcoin-Qt.app to Bitcoin-Core.app
|
||||
- #6168 `b3024f0` contrib/linearize: Support linearization of testnet blocks
|
||||
- #6098 `7708fcd` Update Windows resource files (and add one for bitcoin-tx)
|
||||
- #6159 `e1412d3` Catch errors on datadir lock and pidfile delete
|
||||
- #6186 `182686c` Fix two problems in CSubnet parsing
|
||||
- #6174 `df992b9` doc: add translation strings policy
|
||||
- #6210 `dfdb6dd` build: disable optional use of gmp in internal secp256k1 build
|
||||
- #6264 `94cd705` Remove translation for -help-debug options
|
||||
- #6286 `3902c15` Remove berkeley-db4 workaround in MacOSX build docs
|
||||
- #6319 `3f8fcc9` doc: update mailing list address
|
||||
- #6124 `684636b` Make CScriptNum() take nMaxNumSize as an argument
|
||||
- #6124 `4fa7a04` Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
|
||||
- #6124 `6ea5ca4` Enable CHECKLOCKTIMEVERIFY as a standard script verify flag
|
||||
- #6351 `5e82e1c` Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
|
||||
- #6353 `ba1da90` Show softfork status in getblockchaininfo
|
||||
- #6351 `6af25b0` Add BIP65 to getblockchaininfo softforks list
|
||||
- #6688 `01878c9` Fix locking in GetTransaction
|
||||
- #6653 `b3eaa30` [Qt] Raise debug window when requested
|
||||
- #6600 `1e672ae` Debian/Ubuntu: Include bitcoin-tx binary
|
||||
- #6600 `2394f4d` Debian/Ubuntu: Split bitcoin-tx into its own package
|
||||
- #5987 `33d6825` Bugfix: Allow mining on top of old tip blocks for testnet
|
||||
- #6852 `21e58b8` build: make sure OpenSSL heeds noexecstack
|
||||
- #6846 `af6edac` alias `-h` for `--help`
|
||||
- #6867 `95a5039` Set TCP_NODELAY on P2P sockets.
|
||||
- #6856 `dfe55bd` Do not allow blockfile pruning during reindex.
|
||||
- #6566 `a1d3c6f` Add rules--presently disabled--for using GetMedianTimePast as end point for lock-time calculations
|
||||
- #6566 `f720c5f` Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints
|
||||
- #6917 `0af5b8e` leveldb: Win32WritableFile without memory mapping
|
||||
- #6948 `4e895b0` Always flush block and undo when switching to new file
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- 21E14
|
||||
- Adam Weiss
|
||||
- Alex Morcos
|
||||
- ayeowch
|
||||
- azeteki
|
||||
- Ben Holden-Crowther
|
||||
- bikinibabe
|
||||
- BitcoinPRReadingGroup
|
||||
- Blake Jakopovic
|
||||
- BtcDrak
|
||||
- charlescharles
|
||||
- Chris Arnesen
|
||||
- Ciemon
|
||||
- CohibAA
|
||||
- Corinne Dashjr
|
||||
- Cory Fields
|
||||
- Cozz Lovan
|
||||
- Daira Hopwood
|
||||
- Daniel Kraft
|
||||
- Dave Collins
|
||||
- David A. Harding
|
||||
- dexX7
|
||||
- Earlz
|
||||
- ฿tcDrak
|
||||
- Chris Kleeschulte
|
||||
- Daniel Cousens
|
||||
- Diego Viola
|
||||
- Eric Lombrozo
|
||||
- Eric R. Schulz
|
||||
- Everett Forth
|
||||
- Flavien Charlon
|
||||
- fsb4000
|
||||
- Gavin Andresen
|
||||
- Esteban Ordano
|
||||
- Gregory Maxwell
|
||||
- Heath
|
||||
- Ivan Pustogarov
|
||||
- Jacob Welsh
|
||||
- Jameson Lopp
|
||||
- Jason Lewicki
|
||||
- Jeff Garzik
|
||||
- Jonas Schnelli
|
||||
- Jonathan Brown
|
||||
- Jorge Timón
|
||||
- joshr
|
||||
- jtimon
|
||||
- Julian Yap
|
||||
- Luca Venturini
|
||||
- Luke Dashjr
|
||||
- Manuel Araoz
|
||||
- MarcoFalke
|
||||
- Matt Bogosian
|
||||
- Marco Falke
|
||||
- Mark Friedenbach
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Mike Hearn
|
||||
- mrbandrews
|
||||
- Nicolas Benoit
|
||||
- paveljanik
|
||||
- Pavel Janík
|
||||
- Pavel Vasin
|
||||
- Mitchell Cash
|
||||
- Peter Todd
|
||||
- Philip Kaufmann
|
||||
- Pieter Wuille
|
||||
- pstratem
|
||||
- randy-waterhouse
|
||||
- rion
|
||||
- Rob Van Mieghem
|
||||
- Ross Nicoll
|
||||
- Ruben de Vries
|
||||
- sandakersmann
|
||||
- Shaul Kfir
|
||||
- Shawn Wilkinson
|
||||
- sinetek
|
||||
- Suhas Daftuar
|
||||
- svost
|
||||
- Thomas Zander
|
||||
- Tom Harding
|
||||
- UdjinM6
|
||||
- Vitalii Demianets
|
||||
- Wladimir J. van der Laan
|
||||
- Zak Wilcox
|
||||
|
||||
And all those who contributed additional code review and/or security research:
|
||||
|
||||
- Sergio Demian Lerner
|
||||
And those who contributed additional code review and/or security research.
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ Tests:
|
||||
Miscellaneous:
|
||||
- `c9e022b` Initialization: set Boost path locale in main thread
|
||||
- `23126a0` Sanitize command strings before logging them.
|
||||
- `323de27` Initialization: setup environment before starting QT tests
|
||||
- `323de27` Initialization: setup environment before starting Qt tests
|
||||
- `7494e09` Initialization: setup environment before starting tests
|
||||
- `df45564` Initialization: set fallback locale as environment variable
|
||||
|
||||
|
||||
+17
-17
@@ -23,15 +23,15 @@ Release Process
|
||||
|
||||
* * *
|
||||
|
||||
###update gitian
|
||||
###update Gitian
|
||||
|
||||
In order to take advantage of the new caching features in gitian, be sure to update to a recent version (`e9741525c` or later is recommended)
|
||||
In order to take advantage of the new caching features in Gitian, be sure to update to a recent version (`e9741525c` or later is recommended)
|
||||
|
||||
###perform gitian builds
|
||||
###perform Gitian builds
|
||||
|
||||
From a directory containing the bitcoin source, gitian-builder and gitian.sigs
|
||||
|
||||
export SIGNER=(your gitian key, ie bluematt, sipa, etc)
|
||||
export SIGNER=(your Gitian key, ie bluematt, sipa, etc)
|
||||
export VERSION=(new version, e.g. 0.8.0)
|
||||
pushd ./bitcoin
|
||||
git checkout v${VERSION}
|
||||
@@ -39,29 +39,29 @@ Release Process
|
||||
pushd ./gitian-builder
|
||||
|
||||
###fetch and build inputs: (first time, or when dependency versions change)
|
||||
|
||||
|
||||
mkdir -p inputs
|
||||
wget -P inputs https://bitcoincore.org/cfields/osslsigncode-Backports-to-1.7.1.patch
|
||||
wget -P inputs http://downloads.sourceforge.net/project/osslsigncode/osslsigncode/osslsigncode-1.7.1.tar.gz
|
||||
|
||||
Register and download the Apple SDK: (see OSX Readme for details)
|
||||
|
||||
Register and download the Apple SDK: (see OS X Readme for details)
|
||||
|
||||
https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_6.1.1/xcode_6.1.1.dmg
|
||||
|
||||
|
||||
Using a Mac, create a tarball for the 10.9 SDK and copy it to the inputs directory:
|
||||
|
||||
|
||||
tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.9.sdk.tar.gz MacOSX10.9.sdk
|
||||
|
||||
###Optional: Seed the Gitian sources cache
|
||||
|
||||
By default, gitian will fetch source files as needed. For offline builds, they can be fetched ahead of time:
|
||||
By default, Gitian will fetch source files as needed. For offline builds, they can be fetched ahead of time:
|
||||
|
||||
make -C ../bitcoin/depends download SOURCES_PATH=`pwd`/cache/common
|
||||
|
||||
Only missing files will be fetched, so this is safe to re-run for each build.
|
||||
|
||||
###Build Bitcoin Core for Linux, Windows, and OS X:
|
||||
|
||||
|
||||
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
./bin/gsign --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
mv build/out/bitcoin-*.tar.gz build/out/src/bitcoin-*.tar.gz ../
|
||||
@@ -79,8 +79,8 @@ Release Process
|
||||
1. source tarball (bitcoin-${VERSION}.tar.gz)
|
||||
2. linux 32-bit and 64-bit dist tarballs (bitcoin-${VERSION}-linux[32|64].tar.gz)
|
||||
3. windows 32-bit and 64-bit unsigned installers and dist zips (bitcoin-${VERSION}-win[32|64]-setup-unsigned.exe, bitcoin-${VERSION}-win[32|64].zip)
|
||||
4. OSX unsigned installer and dist tarball (bitcoin-${VERSION}-osx-unsigned.dmg, bitcoin-${VERSION}-osx64.tar.gz)
|
||||
5. Gitian signatures (in gitian.sigs/${VERSION}-<linux|{win,osx}-unsigned>/(your gitian key)/
|
||||
4. OS X unsigned installer and dist tarball (bitcoin-${VERSION}-osx-unsigned.dmg, bitcoin-${VERSION}-osx64.tar.gz)
|
||||
5. Gitian signatures (in gitian.sigs/${VERSION}-<linux|{win,osx}-unsigned>/(your Gitian key)/
|
||||
|
||||
###Next steps:
|
||||
|
||||
@@ -94,11 +94,11 @@ Commit your signature to gitian.sigs:
|
||||
git push # Assuming you can push to the gitian.sigs tree
|
||||
popd
|
||||
|
||||
Wait for Windows/OSX detached signatures:
|
||||
Once the Windows/OSX builds each have 3 matching signatures, they will be signed with their respective release keys.
|
||||
Wait for Windows/OS X detached signatures:
|
||||
Once the Windows/OS X builds each have 3 matching signatures, they will be signed with their respective release keys.
|
||||
Detached signatures will then be committed to the bitcoin-detached-sigs repository, which can be combined with the unsigned apps to create signed binaries.
|
||||
|
||||
Create the signed OSX binary:
|
||||
Create the signed OS X binary:
|
||||
|
||||
pushd ./gitian-builder
|
||||
./bin/gbuild -i --commit signature=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
@@ -115,7 +115,7 @@ Commit your signature to gitian.sigs:
|
||||
mv build/out/bitcoin-*win32-setup.exe ../bitcoin-${VERSION}-win32-setup.exe
|
||||
popd
|
||||
|
||||
Commit your signature for the signed OSX/Windows binaries:
|
||||
Commit your signature for the signed OS X/Windows binaries:
|
||||
|
||||
pushd gitian.sigs
|
||||
git add ${VERSION}-osx-signed/${SIGNER}
|
||||
|
||||
+5
-6
@@ -15,15 +15,15 @@ outgoing connections be anonymized, but more is possible.
|
||||
|
||||
-proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy
|
||||
server will be used to try to reach .onion addresses as well.
|
||||
|
||||
|
||||
-onion=ip:port Set the proxy server to use for tor hidden services. You do not
|
||||
need to set this if it's the same as -proxy. You can use -noonion
|
||||
to explicitly disable access to hidden service.
|
||||
|
||||
|
||||
-listen When using -proxy, listening is disabled by default. If you want
|
||||
to run a hidden service (see next section), you'll need to enable
|
||||
it explicitly.
|
||||
|
||||
|
||||
-connect=X When behind a Tor proxy, you can specify .onion addresses instead
|
||||
-addnode=X of IP addresses or hostnames in these parameters. It requires
|
||||
-seednode=X SOCKS5. In Tor mode, such addresses can also be exchanged with
|
||||
@@ -55,10 +55,10 @@ your bitcoind's P2P listen port (8333 by default).
|
||||
preference for your node to advertize itself with, for connections
|
||||
coming from unroutable addresses (such as 127.0.0.1, where the
|
||||
Tor proxy typically runs).
|
||||
|
||||
|
||||
-listen You'll need to enable listening for incoming connections, as this
|
||||
is off by default behind a proxy.
|
||||
|
||||
|
||||
-discover When -externalip is specified, no attempt is made to discover local
|
||||
IPv4 or IPv6 addresses. If you want to run a dual stack, reachable
|
||||
from both Tor and IPv4 (or IPv6), you'll need to either pass your
|
||||
@@ -82,4 +82,3 @@ If you only want to use Tor to reach onion addresses, but not use it as a proxy
|
||||
for normal IPv4/IPv6 communication, use:
|
||||
|
||||
./bitcoin -onion=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -discover
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Translations
|
||||
============
|
||||
|
||||
The Bitcoin-Core project has been designed to support multiple localisations. This makes adding new phrases, and completely new languages easily achievable. For managing all application translations, Bitcoin-Core makes use of the Transifex online translation management tool.
|
||||
The Bitcoin-Core project has been designed to support multiple localisations. This makes adding new phrases, and completely new languages easily achievable. For managing all application translations, Bitcoin-Core makes use of the Transifex online translation management tool.
|
||||
|
||||
### Helping to translate (using Transifex)
|
||||
Transifex is setup to monitor the Github repo for updates, and when code containing new translations is found, Transifex will process any changes. It may take several hours after a pull-request has been merged, to appear in the Transifex web interface.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Translation Strings Policy
|
||||
===========================
|
||||
|
||||
This document provides guidelines for internationalization of the Bitcoin Core software.
|
||||
This document provides guidelines for internationalization of the Bitcoin Core software.
|
||||
|
||||
How to translate?
|
||||
------------------
|
||||
@@ -69,4 +69,3 @@ This may sometimes be at conflict with the recommendation in the previous sectio
|
||||
During a string freeze (often before a major release), no translation strings are to be added, modified or removed.
|
||||
|
||||
This can be checked by executing `make translate` in the `src` directory, then verifying that `bitcoin_en.ts` remains unchanged.
|
||||
|
||||
|
||||
Executable → Regular
-5
@@ -8,11 +8,6 @@ CURDIR=$(cd $(dirname "$0"); pwd)
|
||||
export BITCOINCLI=${BUILDDIR}/qa/pull-tester/run-bitcoin-cli
|
||||
export BITCOIND=${REAL_BITCOIND}
|
||||
|
||||
if [ "x${EXEEXT}" = "x.exe" ]; then
|
||||
echo "Win tests currently disabled"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#Run the tests
|
||||
|
||||
testScripts=(
|
||||
|
||||
@@ -12,10 +12,6 @@ Base class for new regression tests.
|
||||
### [test_framework/util.py](test_framework/util.py)
|
||||
Generally useful functions.
|
||||
|
||||
Bash-based tests, to be ported to Python:
|
||||
-----------------------------------------
|
||||
- conflictedbalance.sh : More testing of malleable transaction handling
|
||||
|
||||
Notes
|
||||
=====
|
||||
|
||||
|
||||
Executable → Regular
+76
-11
@@ -40,6 +40,11 @@ The test:
|
||||
it's missing an intermediate block.
|
||||
Node1 should reorg to this longer chain.
|
||||
|
||||
4b.Send 288 more blocks on the longer chain.
|
||||
Node0 should process all but the last block (too far ahead in height).
|
||||
Send all headers to Node1, and then send the last block in that chain.
|
||||
Node1 should accept the block because it's coming from a whitelisted peer.
|
||||
|
||||
5. Send a duplicate of the block in #3 to Node0.
|
||||
Node0 should not process the block because it is unrequested, and stay on
|
||||
the shorter chain.
|
||||
@@ -59,6 +64,8 @@ class TestNode(NodeConnCB):
|
||||
NodeConnCB.__init__(self)
|
||||
self.create_callback_map()
|
||||
self.connection = None
|
||||
self.ping_counter = 1
|
||||
self.last_pong = msg_pong()
|
||||
|
||||
def add_connection(self, conn):
|
||||
self.connection = conn
|
||||
@@ -82,6 +89,24 @@ class TestNode(NodeConnCB):
|
||||
def send_message(self, message):
|
||||
self.connection.send_message(message)
|
||||
|
||||
def on_pong(self, conn, message):
|
||||
self.last_pong = message
|
||||
|
||||
# Sync up with the node after delivery of a block
|
||||
def sync_with_ping(self, timeout=30):
|
||||
self.connection.send_message(msg_ping(nonce=self.ping_counter))
|
||||
received_pong = False
|
||||
sleep_time = 0.05
|
||||
while not received_pong and timeout > 0:
|
||||
time.sleep(sleep_time)
|
||||
timeout -= sleep_time
|
||||
with mininode_lock:
|
||||
if self.last_pong.nonce == self.ping_counter:
|
||||
received_pong = True
|
||||
self.ping_counter += 1
|
||||
return received_pong
|
||||
|
||||
|
||||
class AcceptBlockTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
parser.add_option("--testbinary", dest="testbinary",
|
||||
@@ -126,13 +151,15 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
# 2. Send one block that builds on each tip.
|
||||
# This should be accepted.
|
||||
blocks_h2 = [] # the height 2 blocks on each node's chain
|
||||
block_time = time.time() + 1
|
||||
for i in xrange(2):
|
||||
blocks_h2.append(create_block(tips[i], create_coinbase(), time.time()+1))
|
||||
blocks_h2.append(create_block(tips[i], create_coinbase(), block_time))
|
||||
blocks_h2[i].solve()
|
||||
block_time += 1
|
||||
test_node.send_message(msg_block(blocks_h2[0]))
|
||||
white_node.send_message(msg_block(blocks_h2[1]))
|
||||
|
||||
time.sleep(1)
|
||||
[ x.sync_with_ping() for x in [test_node, white_node] ]
|
||||
assert_equal(self.nodes[0].getblockcount(), 2)
|
||||
assert_equal(self.nodes[1].getblockcount(), 2)
|
||||
print "First height 2 block accepted by both nodes"
|
||||
@@ -145,7 +172,7 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
test_node.send_message(msg_block(blocks_h2f[0]))
|
||||
white_node.send_message(msg_block(blocks_h2f[1]))
|
||||
|
||||
time.sleep(1) # Give time to process the block
|
||||
[ x.sync_with_ping() for x in [test_node, white_node] ]
|
||||
for x in self.nodes[0].getchaintips():
|
||||
if x['hash'] == blocks_h2f[0].hash:
|
||||
assert_equal(x['status'], "headers-only")
|
||||
@@ -164,7 +191,7 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
test_node.send_message(msg_block(blocks_h3[0]))
|
||||
white_node.send_message(msg_block(blocks_h3[1]))
|
||||
|
||||
time.sleep(1)
|
||||
[ x.sync_with_ping() for x in [test_node, white_node] ]
|
||||
# Since the earlier block was not processed by node0, the new block
|
||||
# can't be fully validated.
|
||||
for x in self.nodes[0].getchaintips():
|
||||
@@ -182,6 +209,45 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
assert_equal(self.nodes[1].getblockcount(), 3)
|
||||
print "Successfully reorged to length 3 chain from whitelisted peer"
|
||||
|
||||
# 4b. Now mine 288 more blocks and deliver; all should be processed but
|
||||
# the last (height-too-high) on node0. Node1 should process the tip if
|
||||
# we give it the headers chain leading to the tip.
|
||||
tips = blocks_h3
|
||||
headers_message = msg_headers()
|
||||
all_blocks = [] # node0's blocks
|
||||
for j in xrange(2):
|
||||
for i in xrange(288):
|
||||
next_block = create_block(tips[j].sha256, create_coinbase(), tips[j].nTime+1)
|
||||
next_block.solve()
|
||||
if j==0:
|
||||
test_node.send_message(msg_block(next_block))
|
||||
all_blocks.append(next_block)
|
||||
else:
|
||||
headers_message.headers.append(CBlockHeader(next_block))
|
||||
tips[j] = next_block
|
||||
|
||||
time.sleep(2)
|
||||
for x in all_blocks:
|
||||
try:
|
||||
self.nodes[0].getblock(x.hash)
|
||||
if x == all_blocks[287]:
|
||||
raise AssertionError("Unrequested block too far-ahead should have been ignored")
|
||||
except:
|
||||
if x == all_blocks[287]:
|
||||
print "Unrequested block too far-ahead not processed"
|
||||
else:
|
||||
raise AssertionError("Unrequested block with more work should have been accepted")
|
||||
|
||||
headers_message.headers.pop() # Ensure the last block is unrequested
|
||||
white_node.send_message(headers_message) # Send headers leading to tip
|
||||
white_node.send_message(msg_block(tips[1])) # Now deliver the tip
|
||||
try:
|
||||
white_node.sync_with_ping()
|
||||
self.nodes[1].getblock(tips[1].hash)
|
||||
print "Unrequested block far ahead of tip accepted from whitelisted peer"
|
||||
except:
|
||||
raise AssertionError("Unrequested block from whitelisted peer not accepted")
|
||||
|
||||
# 5. Test handling of unrequested block on the node that didn't process
|
||||
# Should still not be processed (even though it has a child that has more
|
||||
# work).
|
||||
@@ -192,7 +258,7 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
# the node processes it and incorrectly advances the tip).
|
||||
# But this would be caught later on, when we verify that an inv triggers
|
||||
# a getdata request for this block.
|
||||
time.sleep(1)
|
||||
test_node.sync_with_ping()
|
||||
assert_equal(self.nodes[0].getblockcount(), 2)
|
||||
print "Unrequested block that would complete more-work chain was ignored"
|
||||
|
||||
@@ -204,21 +270,20 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
test_node.last_getdata = None
|
||||
test_node.send_message(msg_inv([CInv(2, blocks_h3[0].sha256)]))
|
||||
|
||||
time.sleep(1)
|
||||
test_node.sync_with_ping()
|
||||
with mininode_lock:
|
||||
getdata = test_node.last_getdata
|
||||
|
||||
# Check that the getdata is for the right block
|
||||
assert_equal(len(getdata.inv), 1)
|
||||
# Check that the getdata includes the right block
|
||||
assert_equal(getdata.inv[0].hash, blocks_h2f[0].sha256)
|
||||
print "Inv at tip triggered getdata for unprocessed block"
|
||||
|
||||
# 7. Send the missing block for the third time (now it is requested)
|
||||
test_node.send_message(msg_block(blocks_h2f[0]))
|
||||
|
||||
time.sleep(1)
|
||||
assert_equal(self.nodes[0].getblockcount(), 3)
|
||||
print "Successfully reorged to length 3 chain from non-whitelisted peer"
|
||||
test_node.sync_with_ping()
|
||||
assert_equal(self.nodes[0].getblockcount(), 290)
|
||||
print "Successfully reorged to longer chain from non-whitelisted peer"
|
||||
|
||||
[ c.disconnect_node() for c in connections ]
|
||||
|
||||
|
||||
Executable → Regular
+4
-1
@@ -61,6 +61,9 @@ class PruneTest(BitcoinTestFramework):
|
||||
self.address[0] = self.nodes[0].getnewaddress()
|
||||
self.address[1] = self.nodes[1].getnewaddress()
|
||||
|
||||
# Determine default relay fee
|
||||
self.relayfee = self.nodes[0].getnetworkinfo()["relayfee"]
|
||||
|
||||
connect_nodes(self.nodes[0], 1)
|
||||
connect_nodes(self.nodes[1], 2)
|
||||
connect_nodes(self.nodes[2], 0)
|
||||
@@ -239,7 +242,7 @@ class PruneTest(BitcoinTestFramework):
|
||||
outputs = {}
|
||||
t = self.utxo.pop()
|
||||
inputs.append({ "txid" : t["txid"], "vout" : t["vout"]})
|
||||
remchange = t["amount"] - Decimal("0.001000")
|
||||
remchange = t["amount"] - 100*self.relayfee # Fee must be above min relay rate for 66kb tx
|
||||
outputs[address]=remchange
|
||||
# Create a basic transaction that will send change back to ourself after account for a fee
|
||||
# And then insert the 128 generated transaction outs in the middle rawtx[92] is where the #
|
||||
|
||||
Executable → Regular
+1
-1
@@ -199,7 +199,7 @@ class RESTTest (BitcoinTestFramework):
|
||||
response = http_get_call(url.hostname, url.port, '/rest/getutxos'+json_request+self.FORMAT_SEPARATOR+'json', '', True)
|
||||
assert_equal(response.status, 200) #must be a 500 because we exceeding the limits
|
||||
|
||||
self.nodes[0].generate(1) #generate block to not affect upcomming tests
|
||||
self.nodes[0].generate(1) #generate block to not affect upcoming tests
|
||||
self.sync_all()
|
||||
|
||||
################
|
||||
|
||||
Executable → Regular
+49
-47
@@ -27,6 +27,20 @@ generator that returns TestInstance objects. See below for definition.
|
||||
|
||||
global mininode_lock
|
||||
|
||||
def wait_until(predicate, attempts=float('inf'), timeout=float('inf')):
|
||||
attempt = 0
|
||||
elapsed = 0
|
||||
|
||||
while attempt < attempts and elapsed < timeout:
|
||||
with mininode_lock:
|
||||
if predicate():
|
||||
return True
|
||||
attempt += 1
|
||||
elapsed += 0.05
|
||||
time.sleep(0.05)
|
||||
|
||||
return False
|
||||
|
||||
class TestNode(NodeConnCB):
|
||||
|
||||
def __init__(self, block_store, tx_store):
|
||||
@@ -43,6 +57,10 @@ class TestNode(NodeConnCB):
|
||||
# a response
|
||||
self.pingMap = {}
|
||||
self.lastInv = []
|
||||
self.closed = False
|
||||
|
||||
def on_close(self, conn):
|
||||
self.closed = True
|
||||
|
||||
def add_connection(self, conn):
|
||||
self.conn = conn
|
||||
@@ -116,7 +134,7 @@ class TestNode(NodeConnCB):
|
||||
# is reached) and then sent out in one inv message. Then the final block
|
||||
# will be synced across all connections, and the outcome of the final
|
||||
# block will be tested.
|
||||
# sync_every_tx: analagous to behavior for sync_every_block, except if outcome
|
||||
# sync_every_tx: analogous to behavior for sync_every_block, except if outcome
|
||||
# on the final tx is None, then contents of entire mempool are compared
|
||||
# across all connections. (If outcome of final tx is specified as true
|
||||
# or false, then only the last tx is tested against outcome.)
|
||||
@@ -132,6 +150,7 @@ class TestManager(object):
|
||||
def __init__(self, testgen, datadir):
|
||||
self.test_generator = testgen
|
||||
self.connections = []
|
||||
self.test_nodes = []
|
||||
self.block_store = BlockStore(datadir)
|
||||
self.tx_store = TxStore(datadir)
|
||||
self.ping_counter = 1
|
||||
@@ -139,54 +158,40 @@ class TestManager(object):
|
||||
def add_all_connections(self, nodes):
|
||||
for i in range(len(nodes)):
|
||||
# Create a p2p connection to each node
|
||||
self.connections.append(NodeConn('127.0.0.1', p2p_port(i),
|
||||
nodes[i], TestNode(self.block_store, self.tx_store)))
|
||||
test_node = TestNode(self.block_store, self.tx_store)
|
||||
self.test_nodes.append(test_node)
|
||||
self.connections.append(NodeConn('127.0.0.1', p2p_port(i), nodes[i], test_node))
|
||||
# Make sure the TestNode (callback class) has a reference to its
|
||||
# associated NodeConn
|
||||
self.connections[-1].cb.add_connection(self.connections[-1])
|
||||
test_node.add_connection(self.connections[-1])
|
||||
|
||||
def wait_for_disconnections(self):
|
||||
def disconnected():
|
||||
return all(node.closed for node in self.test_nodes)
|
||||
return wait_until(disconnected, timeout=10)
|
||||
|
||||
def wait_for_verack(self):
|
||||
sleep_time = 0.05
|
||||
max_tries = 10 / sleep_time # Wait at most 10 seconds
|
||||
while max_tries > 0:
|
||||
done = True
|
||||
with mininode_lock:
|
||||
for c in self.connections:
|
||||
if c.cb.verack_received is False:
|
||||
done = False
|
||||
break
|
||||
if done:
|
||||
break
|
||||
time.sleep(sleep_time)
|
||||
def veracked():
|
||||
return all(node.verack_received for node in self.test_nodes)
|
||||
return wait_until(veracked, timeout=10)
|
||||
|
||||
def wait_for_pings(self, counter):
|
||||
received_pongs = False
|
||||
while received_pongs is not True:
|
||||
time.sleep(0.05)
|
||||
received_pongs = True
|
||||
with mininode_lock:
|
||||
for c in self.connections:
|
||||
if c.cb.received_ping_response(counter) is not True:
|
||||
received_pongs = False
|
||||
break
|
||||
def received_pongs():
|
||||
return all(node.received_ping_response(counter) for node in self.test_nodes)
|
||||
return wait_until(received_pongs)
|
||||
|
||||
# sync_blocks: Wait for all connections to request the blockhash given
|
||||
# then send get_headers to find out the tip of each node, and synchronize
|
||||
# the response by using a ping (and waiting for pong with same nonce).
|
||||
def sync_blocks(self, blockhash, num_blocks):
|
||||
# Wait for nodes to request block (50ms sleep * 20 tries * num_blocks)
|
||||
max_tries = 20*num_blocks
|
||||
while max_tries > 0:
|
||||
with mininode_lock:
|
||||
results = [ blockhash in c.cb.block_request_map and
|
||||
c.cb.block_request_map[blockhash] for c in self.connections ]
|
||||
if False not in results:
|
||||
break
|
||||
time.sleep(0.05)
|
||||
max_tries -= 1
|
||||
def blocks_requested():
|
||||
return all(
|
||||
blockhash in node.block_request_map and node.block_request_map[blockhash]
|
||||
for node in self.test_nodes
|
||||
)
|
||||
|
||||
# --> error if not requested
|
||||
if max_tries == 0:
|
||||
if not wait_until(blocks_requested, attempts=20*num_blocks):
|
||||
# print [ c.cb.block_request_map for c in self.connections ]
|
||||
raise AssertionError("Not all nodes requested block")
|
||||
# --> Answer request (we did this inline!)
|
||||
@@ -202,18 +207,14 @@ class TestManager(object):
|
||||
# Analogous to sync_block (see above)
|
||||
def sync_transaction(self, txhash, num_events):
|
||||
# Wait for nodes to request transaction (50ms sleep * 20 tries * num_events)
|
||||
max_tries = 20*num_events
|
||||
while max_tries > 0:
|
||||
with mininode_lock:
|
||||
results = [ txhash in c.cb.tx_request_map and
|
||||
c.cb.tx_request_map[txhash] for c in self.connections ]
|
||||
if False not in results:
|
||||
break
|
||||
time.sleep(0.05)
|
||||
max_tries -= 1
|
||||
def transaction_requested():
|
||||
return all(
|
||||
txhash in node.tx_request_map and node.tx_request_map[txhash]
|
||||
for node in self.test_nodes
|
||||
)
|
||||
|
||||
# --> error if not requested
|
||||
if max_tries == 0:
|
||||
if not wait_until(transaction_requested, attempts=20*num_events):
|
||||
# print [ c.cb.tx_request_map for c in self.connections ]
|
||||
raise AssertionError("Not all nodes requested transaction")
|
||||
# --> Answer request (we did this inline!)
|
||||
@@ -336,6 +337,7 @@ class TestManager(object):
|
||||
print "Test %d: PASS" % test_number, [ c.rpc.getblockcount() for c in self.connections ]
|
||||
test_number += 1
|
||||
|
||||
[ c.disconnect_node() for c in self.connections ]
|
||||
self.wait_for_disconnections()
|
||||
self.block_store.close()
|
||||
self.tx_store.close()
|
||||
[ c.disconnect_node() for c in self.connections ]
|
||||
|
||||
Reference in New Issue
Block a user