Remove obsolete protobuf payment requests
This commit is contained in:
+1
-4
@@ -15,7 +15,7 @@
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (c) 2013-2016 The Bitcoin Core developers
|
||||
# Copyright (c) 2026 Agrarian Developers
|
||||
# Copyright (c) 2022-2036 Agrarian Developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -427,9 +427,6 @@ PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PORT = @PORT@
|
||||
PROTOBUF_CFLAGS = @PROTOBUF_CFLAGS@
|
||||
PROTOBUF_LIBS = @PROTOBUF_LIBS@
|
||||
PROTOC = @PROTOC@
|
||||
PTHREAD_CC = @PTHREAD_CC@
|
||||
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
|
||||
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.71 for Agrarian Core 1.0.0.
|
||||
# Generated by GNU Autoconf 2.71 for Agrarian Core 2.0.0.
|
||||
#
|
||||
# Report bugs to <www.agrarian.org>.
|
||||
#
|
||||
@@ -621,8 +621,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='Agrarian Core'
|
||||
PACKAGE_TARNAME='agrarian'
|
||||
PACKAGE_VERSION='1.0.0'
|
||||
PACKAGE_STRING='Agrarian Core 1.0.0'
|
||||
PACKAGE_VERSION='2.0.0'
|
||||
PACKAGE_STRING='Agrarian Core 2.0.0'
|
||||
PACKAGE_BUGREPORT='www.agrarian.org'
|
||||
PACKAGE_URL=''
|
||||
|
||||
@@ -751,7 +751,6 @@ BUILD_BITCOIN_UTILS_FALSE
|
||||
BUILD_BITCOIN_UTILS_TRUE
|
||||
BUILD_BITCOIND_FALSE
|
||||
BUILD_BITCOIND_TRUE
|
||||
PROTOC
|
||||
EMBEDDED_UNIVALUE_FALSE
|
||||
EMBEDDED_UNIVALUE_TRUE
|
||||
UNIVALUE_LIBS
|
||||
@@ -764,8 +763,6 @@ EVENT_LIBS
|
||||
EVENT_CFLAGS
|
||||
QR_LIBS
|
||||
QR_CFLAGS
|
||||
PROTOBUF_LIBS
|
||||
PROTOBUF_CFLAGS
|
||||
CRYPTO_LIBS
|
||||
CRYPTO_CFLAGS
|
||||
SSL_LIBS
|
||||
@@ -1033,7 +1030,6 @@ enable_asm
|
||||
with_system_univalue
|
||||
enable_zmq
|
||||
with_zerocoin_bignum
|
||||
with_protoc_bindir
|
||||
enable_man
|
||||
enable_debug
|
||||
with_sanitizers
|
||||
@@ -1117,8 +1113,6 @@ SSL_CFLAGS
|
||||
SSL_LIBS
|
||||
CRYPTO_CFLAGS
|
||||
CRYPTO_LIBS
|
||||
PROTOBUF_CFLAGS
|
||||
PROTOBUF_LIBS
|
||||
QR_CFLAGS
|
||||
QR_LIBS
|
||||
EVENT_CFLAGS
|
||||
@@ -1678,7 +1672,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures Agrarian Core 1.0.0 to adapt to many kinds of systems.
|
||||
\`configure' configures Agrarian Core 2.0.0 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -1749,7 +1743,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of Agrarian Core 1.0.0:";;
|
||||
short | recursive ) echo "Configuration of Agrarian Core 2.0.0:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1819,8 +1813,6 @@ Optional Packages:
|
||||
--with-system-univalue Build with system UniValue (default is no)
|
||||
--with-zerocoin-bignum=gmp|openssl|auto
|
||||
Specify Bignum Implementation. Default is auto
|
||||
--with-protoc-bindir=BIN_DIR
|
||||
specify protoc bin path
|
||||
--with-sanitizers comma separated list of extra sanitizers to build
|
||||
with (default is none enabled)
|
||||
--with-utils build agrarian-cli agrarian-tx (default=yes)
|
||||
@@ -1962,10 +1954,6 @@ Some influential environment variables:
|
||||
CRYPTO_CFLAGS
|
||||
C compiler flags for CRYPTO, overriding pkg-config
|
||||
CRYPTO_LIBS linker flags for CRYPTO, overriding pkg-config
|
||||
PROTOBUF_CFLAGS
|
||||
C compiler flags for PROTOBUF, overriding pkg-config
|
||||
PROTOBUF_LIBS
|
||||
linker flags for PROTOBUF, overriding pkg-config
|
||||
QR_CFLAGS C compiler flags for QR, overriding pkg-config
|
||||
QR_LIBS linker flags for QR, overriding pkg-config
|
||||
EVENT_CFLAGS
|
||||
@@ -2049,7 +2037,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
Agrarian Core configure 1.0.0
|
||||
Agrarian Core configure 2.0.0
|
||||
generated by GNU Autoconf 2.71
|
||||
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
@@ -2596,7 +2584,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by Agrarian Core $as_me 1.0.0, which was
|
||||
It was created by Agrarian Core $as_me 2.0.0, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
$ $0$ac_configure_args_raw
|
||||
@@ -4179,7 +4167,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='agrarian'
|
||||
VERSION='1.0.0'
|
||||
VERSION='2.0.0'
|
||||
|
||||
|
||||
# Some tools Automake needs.
|
||||
@@ -19888,14 +19876,6 @@ else $as_nop
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Check whether --with-protoc-bindir was given.
|
||||
if test ${with_protoc_bindir+y}
|
||||
then :
|
||||
withval=$with_protoc_bindir; protoc_bin_path=$withval
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --enable-man was given.
|
||||
if test ${enable_man+y}
|
||||
then :
|
||||
@@ -29340,7 +29320,15 @@ printf "%s\n" "#define QT_STATICPLUGIN 1" >>confdefs.h
|
||||
if test "x$TARGET_OS" = xlinux; then
|
||||
QT_LIBS="-lQt6XcbQpa -lQt6InputSupport -lQt6FbSupport -lQt6DeviceDiscoverySupport $QT_LIBS"
|
||||
if test "x$PKG_CONFIG" != x; then
|
||||
QT6_XCB_LIBS=`PKG_CONFIG_LIBDIR=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig $PKG_CONFIG --libs --static x11 x11-xcb xcb xcb-cursor xcb-icccm xcb-image xcb-keysyms xcb-randr xcb-renderutil xcb-shape xcb-shm xcb-sync xcb-xfixes xcb-xkb xkbcommon xkbcommon-x11 fontconfig freetype2 harfbuzz 2>/dev/null`
|
||||
qt_multiarch=`$CC -print-multiarch 2>/dev/null`
|
||||
qt_system_pc_path="${QT_SYSTEM_PKG_CONFIG_LIBDIR}"
|
||||
if test "x$qt_system_pc_path" = x && test "x$qt_multiarch" != x; then
|
||||
qt_system_pc_path="/usr/lib/$qt_multiarch/pkgconfig:/lib/$qt_multiarch/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
|
||||
fi
|
||||
if test "x$qt_system_pc_path" = x; then
|
||||
qt_system_pc_path="/usr/lib/pkgconfig:/usr/share/pkgconfig"
|
||||
fi
|
||||
QT6_XCB_LIBS=`PKG_CONFIG_LIBDIR="$qt_system_pc_path" $PKG_CONFIG --libs --static x11 x11-xcb xcb xcb-cursor xcb-icccm xcb-image xcb-keysyms xcb-randr xcb-render xcb-renderutil xcb-shape xcb-shm xcb-sync xcb-xfixes xcb-xkb xkbcommon xkbcommon-x11 fontconfig freetype2 harfbuzz 2>/dev/null`
|
||||
QT_LIBS="$QT_LIBS $QT6_XCB_LIBS"
|
||||
fi
|
||||
fi
|
||||
@@ -31054,8 +31042,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||
|
||||
fi
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for static Qt plugins: -lqminimal" >&5
|
||||
printf %s "checking for static Qt plugins: -lqminimal... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for optional static Qt plugins: -lqminimal" >&5
|
||||
printf %s "checking for optional static Qt plugins: -lqminimal... " >&6; }
|
||||
CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS"
|
||||
LIBS="-lqminimal $QT_LIBS $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -31075,33 +31063,23 @@ _ACEOF
|
||||
if ac_fn_cxx_try_link "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }; QT_LIBS="-lqminimal $QT_LIBS"
|
||||
printf "%s\n" "yes" >&6; }; QT_LIBS="-lqminimal $QT_LIBS";
|
||||
|
||||
printf "%s\n" "#define QT_QPA_PLATFORM_MINIMAL 1" >>confdefs.h
|
||||
|
||||
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; };
|
||||
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
|
||||
if test "x$bitcoin_enable_qt" != xno; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Could not resolve: -lqminimal; agrarian-qt frontend will not be built" >&5
|
||||
printf "%s\n" "$as_me: WARNING: Could not resolve: -lqminimal; agrarian-qt frontend will not be built" >&2;}
|
||||
fi
|
||||
bitcoin_enable_qt=no
|
||||
bitcoin_enable_qt_test=no
|
||||
else
|
||||
as_fn_error $? "Could not resolve: -lqminimal" "$LINENO" 5
|
||||
fi
|
||||
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
|
||||
|
||||
|
||||
printf "%s\n" "#define QT_QPA_PLATFORM_MINIMAL 1" >>confdefs.h
|
||||
|
||||
if test "x$QT_LIB_PREFIX" = xQt6; then
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for static Qt plugins: -lqopensslbackend -lssl -lcrypto" >&5
|
||||
printf %s "checking for static Qt plugins: -lqopensslbackend -lssl -lcrypto... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for optional static Qt plugins: -lqopensslbackend -lssl -lcrypto" >&5
|
||||
printf %s "checking for optional static Qt plugins: -lqopensslbackend -lssl -lcrypto... " >&6; }
|
||||
CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS"
|
||||
LIBS="-lqopensslbackend -lssl -lcrypto $QT_LIBS $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -31121,29 +31099,19 @@ _ACEOF
|
||||
if ac_fn_cxx_try_link "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }; QT_LIBS="-lqopensslbackend -lssl -lcrypto $QT_LIBS"
|
||||
printf "%s\n" "yes" >&6; }; QT_LIBS="-lqopensslbackend -lssl -lcrypto $QT_LIBS";
|
||||
|
||||
printf "%s\n" "#define QT_TLS_OPENSSL 1" >>confdefs.h
|
||||
|
||||
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; };
|
||||
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
|
||||
if test "x$bitcoin_enable_qt" != xno; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Could not resolve: -lqopensslbackend -lssl -lcrypto; agrarian-qt frontend will not be built" >&5
|
||||
printf "%s\n" "$as_me: WARNING: Could not resolve: -lqopensslbackend -lssl -lcrypto; agrarian-qt frontend will not be built" >&2;}
|
||||
fi
|
||||
bitcoin_enable_qt=no
|
||||
bitcoin_enable_qt_test=no
|
||||
else
|
||||
as_fn_error $? "Could not resolve: -lqopensslbackend -lssl -lcrypto" "$LINENO" 5
|
||||
fi
|
||||
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
|
||||
|
||||
|
||||
printf "%s\n" "#define QT_TLS_OPENSSL 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
if test "x$TARGET_OS" = xwindows; then
|
||||
|
||||
@@ -34257,107 +34225,6 @@ else
|
||||
printf "%s\n" "yes" >&6; }
|
||||
|
||||
fi
|
||||
|
||||
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != xno; then
|
||||
true
|
||||
|
||||
pkg_failed=no
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for protobuf" >&5
|
||||
printf %s "checking for protobuf... " >&6; }
|
||||
|
||||
if test -n "$PROTOBUF_CFLAGS"; then
|
||||
pkg_cv_PROTOBUF_CFLAGS="$PROTOBUF_CFLAGS"
|
||||
elif test -n "$PKG_CONFIG"; then
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"protobuf\""; } >&5
|
||||
($PKG_CONFIG --exists --print-errors "protobuf") 2>&5
|
||||
ac_status=$?
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
pkg_cv_PROTOBUF_CFLAGS=`$PKG_CONFIG --cflags "protobuf" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
else
|
||||
pkg_failed=untried
|
||||
fi
|
||||
if test -n "$PROTOBUF_LIBS"; then
|
||||
pkg_cv_PROTOBUF_LIBS="$PROTOBUF_LIBS"
|
||||
elif test -n "$PKG_CONFIG"; then
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"protobuf\""; } >&5
|
||||
($PKG_CONFIG --exists --print-errors "protobuf") 2>&5
|
||||
ac_status=$?
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
pkg_cv_PROTOBUF_LIBS=`$PKG_CONFIG --libs "protobuf" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
else
|
||||
pkg_failed=untried
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test $pkg_failed = yes; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||
_pkg_short_errors_supported=yes
|
||||
else
|
||||
_pkg_short_errors_supported=no
|
||||
fi
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
PROTOBUF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "protobuf" 2>&1`
|
||||
else
|
||||
PROTOBUF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "protobuf" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$PROTOBUF_PKG_ERRORS" >&5
|
||||
|
||||
|
||||
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
|
||||
if test "x$bitcoin_enable_qt" != xno; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libprotobuf not found; agrarian-qt frontend will not be built" >&5
|
||||
printf "%s\n" "$as_me: WARNING: libprotobuf not found; agrarian-qt frontend will not be built" >&2;}
|
||||
fi
|
||||
bitcoin_enable_qt=no
|
||||
bitcoin_enable_qt_test=no
|
||||
else
|
||||
as_fn_error $? "libprotobuf not found" "$LINENO" 5
|
||||
fi
|
||||
|
||||
elif test $pkg_failed = untried; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
|
||||
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
|
||||
if test "x$bitcoin_enable_qt" != xno; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libprotobuf not found; agrarian-qt frontend will not be built" >&5
|
||||
printf "%s\n" "$as_me: WARNING: libprotobuf not found; agrarian-qt frontend will not be built" >&2;}
|
||||
fi
|
||||
bitcoin_enable_qt=no
|
||||
bitcoin_enable_qt_test=no
|
||||
else
|
||||
as_fn_error $? "libprotobuf not found" "$LINENO" 5
|
||||
fi
|
||||
|
||||
else
|
||||
PROTOBUF_CFLAGS=$pkg_cv_PROTOBUF_CFLAGS
|
||||
PROTOBUF_LIBS=$pkg_cv_PROTOBUF_LIBS
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
have_protobuf=yes
|
||||
fi
|
||||
else
|
||||
true
|
||||
|
||||
fi
|
||||
|
||||
if test x$use_qr != xno; then
|
||||
|
||||
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != xno; then
|
||||
@@ -34949,68 +34816,6 @@ printf "%s\n" "#define ENABLE_ZMQ 0" >>confdefs.h
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != xno; then
|
||||
true
|
||||
as_ac_Lib=`printf "%s\n" "ac_cv_lib_protobuf ""_main" | $as_tr_sh`
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lprotobuf " >&5
|
||||
printf %s "checking for main in -lprotobuf ... " >&6; }
|
||||
if eval test \${$as_ac_Lib+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lprotobuf $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
namespace conftest {
|
||||
extern "C" int main ();
|
||||
}
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
return conftest::main ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_link "$LINENO"
|
||||
then :
|
||||
eval "$as_ac_Lib=yes"
|
||||
else $as_nop
|
||||
eval "$as_ac_Lib=no"
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
eval ac_res=\$$as_ac_Lib
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
||||
printf "%s\n" "$ac_res" >&6; }
|
||||
if eval test \"x\$"$as_ac_Lib"\" = x"yes"
|
||||
then :
|
||||
PROTOBUF_LIBS=-lprotobuf
|
||||
else $as_nop
|
||||
|
||||
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
|
||||
if test "x$bitcoin_enable_qt" != xno; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libprotobuf not found; agrarian-qt frontend will not be built" >&5
|
||||
printf "%s\n" "$as_me: WARNING: libprotobuf not found; agrarian-qt frontend will not be built" >&2;}
|
||||
fi
|
||||
bitcoin_enable_qt=no
|
||||
bitcoin_enable_qt_test=no
|
||||
else
|
||||
as_fn_error $? "libprotobuf not found" "$LINENO" 5
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
else
|
||||
true
|
||||
|
||||
fi
|
||||
|
||||
if test x$use_qr != xno; then
|
||||
|
||||
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != xno; then
|
||||
@@ -35313,136 +35118,6 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != xno; then
|
||||
true
|
||||
|
||||
if test "x$protoc_bin_path" != x; then
|
||||
for ac_prog in protoc
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
printf %s "checking for $ac_word... " >&6; }
|
||||
if test ${ac_cv_path_PROTOC+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
case $PROTOC in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_PROTOC="$PROTOC" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $protoc_bin_path
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_PROTOC="$as_dir$ac_word$ac_exec_ext"
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
PROTOC=$ac_cv_path_PROTOC
|
||||
if test -n "$PROTOC"; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PROTOC" >&5
|
||||
printf "%s\n" "$PROTOC" >&6; }
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$PROTOC" && break
|
||||
done
|
||||
|
||||
else
|
||||
for ac_prog in protoc
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
printf %s "checking for $ac_word... " >&6; }
|
||||
if test ${ac_cv_path_PROTOC+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
case $PROTOC in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_PROTOC="$PROTOC" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_PROTOC="$as_dir$ac_word$ac_exec_ext"
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
PROTOC=$ac_cv_path_PROTOC
|
||||
if test -n "$PROTOC"; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PROTOC" >&5
|
||||
printf "%s\n" "$PROTOC" >&6; }
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$PROTOC" && break
|
||||
done
|
||||
|
||||
fi
|
||||
if test "x$PROTOC" = x && test "x" != xyes; then
|
||||
|
||||
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
|
||||
if test "x$bitcoin_enable_qt" != xno; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: PROTOC not found; agrarian-qt frontend will not be built" >&5
|
||||
printf "%s\n" "$as_me: WARNING: PROTOC not found; agrarian-qt frontend will not be built" >&2;}
|
||||
fi
|
||||
bitcoin_enable_qt=no
|
||||
bitcoin_enable_qt_test=no
|
||||
else
|
||||
as_fn_error $? "PROTOC not found" "$LINENO" 5
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
else
|
||||
true
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build agrariand" >&5
|
||||
printf %s "checking whether to build agrariand... " >&6; }
|
||||
if test x$build_bitcoind = xyes; then
|
||||
@@ -35998,7 +35673,7 @@ fi
|
||||
|
||||
|
||||
|
||||
printf "%s\n" "#define CLIENT_VERSION_MAJOR 1" >>confdefs.h
|
||||
printf "%s\n" "#define CLIENT_VERSION_MAJOR 2" >>confdefs.h
|
||||
|
||||
|
||||
printf "%s\n" "#define CLIENT_VERSION_MINOR 0" >>confdefs.h
|
||||
@@ -36013,9 +35688,9 @@ printf "%s\n" "#define CLIENT_VERSION_BUILD 0" >>confdefs.h
|
||||
printf "%s\n" "#define CLIENT_VERSION_IS_RELEASE true" >>confdefs.h
|
||||
|
||||
|
||||
printf "%s\n" "#define COPYRIGHT_YEAR 2026" >>confdefs.h
|
||||
printf "%s\n" "#define COPYRIGHT_YEAR 2036" >>confdefs.h
|
||||
|
||||
CLIENT_VERSION_MAJOR=1
|
||||
CLIENT_VERSION_MAJOR=2
|
||||
|
||||
CLIENT_VERSION_MINOR=0
|
||||
|
||||
@@ -36025,8 +35700,7 @@ CLIENT_VERSION_BUILD=0
|
||||
|
||||
CLIENT_VERSION_IS_RELEASE=true
|
||||
|
||||
COPYRIGHT_YEAR=2026
|
||||
|
||||
COPYRIGHT_YEAR=2036
|
||||
|
||||
|
||||
|
||||
@@ -36761,7 +36435,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by Agrarian Core $as_me 1.0.0, which was
|
||||
This file was extended by Agrarian Core $as_me 2.0.0, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -36833,7 +36507,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config='$ac_cs_config_escaped'
|
||||
ac_cs_version="\\
|
||||
Agrarian Core config.status 1.0.0
|
||||
Agrarian Core config.status 2.0.0
|
||||
configured by $0, generated by GNU Autoconf 2.71,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
||||
@@ -212,8 +212,6 @@ AC_ARG_WITH([zerocoin-bignum],
|
||||
[req_bignum=$withval],
|
||||
[req_bignum=auto])
|
||||
|
||||
AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
|
||||
|
||||
AC_ARG_ENABLE(man,
|
||||
[AS_HELP_STRING([--disable-man],
|
||||
[do not install man pages (default is to install)])],,
|
||||
@@ -1027,7 +1025,6 @@ if test x$use_pkgconfig = xyes; then
|
||||
[
|
||||
PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
|
||||
PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
|
||||
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
|
||||
if test x$use_qr != xno; then
|
||||
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
|
||||
fi
|
||||
@@ -1087,7 +1084,6 @@ else
|
||||
esac
|
||||
fi
|
||||
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
|
||||
if test x$use_qr != xno; then
|
||||
BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
|
||||
BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
|
||||
@@ -1153,8 +1149,6 @@ AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$need_bundled_univalue = xyes])
|
||||
AC_SUBST(UNIVALUE_CFLAGS)
|
||||
AC_SUBST(UNIVALUE_LIBS)
|
||||
|
||||
BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
|
||||
|
||||
AC_MSG_CHECKING([whether to build agrariand])
|
||||
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
||||
AC_MSG_RESULT($build_bitcoind)
|
||||
@@ -1401,7 +1395,6 @@ AC_SUBST(SSL_LIBS)
|
||||
AC_SUBST(EVENT_LIBS)
|
||||
AC_SUBST(EVENT_PTHREADS_LIBS)
|
||||
AC_SUBST(ZMQ_LIBS)
|
||||
AC_SUBST(PROTOBUF_LIBS)
|
||||
AC_SUBST(QR_LIBS)
|
||||
AC_SUBST(USE_NUM_GMP)
|
||||
AC_SUBST(USE_NUM_OPENSSL)
|
||||
|
||||
@@ -188,7 +188,6 @@ HEADERS += src/activemasternode.h \
|
||||
src/qt/optionsdialog.h \
|
||||
src/qt/optionsmodel.h \
|
||||
src/qt/overviewpage.h \
|
||||
src/qt/paymentrequest.pb.h \
|
||||
src/qt/paymentrequestplus.h \
|
||||
src/qt/paymentserver.h \
|
||||
src/qt/peertablemodel.h \
|
||||
@@ -481,7 +480,6 @@ SOURCES += src/activemasternode.cpp \
|
||||
src/qt/optionsdialog.cpp \
|
||||
src/qt/optionsmodel.cpp \
|
||||
src/qt/overviewpage.cpp \
|
||||
src/qt/paymentrequest.pb.cc \
|
||||
src/qt/paymentrequestplus.cpp \
|
||||
src/qt/paymentserver.cpp \
|
||||
src/qt/peertablemodel.cpp \
|
||||
|
||||
@@ -7,8 +7,6 @@ BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
|
||||
HOST="${HOST:-$BUILD_HOST}"
|
||||
PREFIX="$ROOT/depends/$HOST"
|
||||
BASE_CONFIG="$PREFIX/share/config.site"
|
||||
NATIVE_BIN="$ROOT/depends/build/$BUILD_HOST/bin"
|
||||
PROTOC="$NATIVE_BIN/protoc"
|
||||
|
||||
require_cmd() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
@@ -94,54 +92,6 @@ EOF
|
||||
echo " $QT_SYSTEM_PKG_CONFIG_LIBDIR"
|
||||
}
|
||||
|
||||
ensure_native_protoc() {
|
||||
local archive found
|
||||
|
||||
if [[ -x "$PROTOC" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
archive="$(find "$ROOT/depends/built/$HOST/native_protobuf" \
|
||||
-name 'native_protobuf-*.tar.gz' -type f 2>/dev/null | sort | tail -n 1 || true)"
|
||||
|
||||
if [[ -n "$archive" ]]; then
|
||||
echo "Extracting native protoc from $archive"
|
||||
mkdir -p "$ROOT/depends/build/$BUILD_HOST"
|
||||
tar -xzf "$archive" -C "$ROOT/depends/build/$BUILD_HOST" ./bin/protoc
|
||||
fi
|
||||
|
||||
if [[ -x "$PROTOC" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
found="$(find "$ROOT/depends/build" "$ROOT/depends/work/staging" \
|
||||
-path '*/bin/protoc' -type f 2>/dev/null | sort | head -n 1 || true)"
|
||||
|
||||
if [[ -n "$found" ]]; then
|
||||
echo "Staging native protoc from $found"
|
||||
mkdir -p "$NATIVE_BIN"
|
||||
cp "$found" "$PROTOC"
|
||||
chmod +x "$PROTOC"
|
||||
fi
|
||||
|
||||
require_path "$PROTOC"
|
||||
}
|
||||
|
||||
remove_invalid_native_protobuf_cache() {
|
||||
local archive
|
||||
|
||||
archive="$(find "$ROOT/depends/built/$HOST/native_protobuf" \
|
||||
-name 'native_protobuf-*.tar.gz' -type f 2>/dev/null | sort | tail -n 1 || true)"
|
||||
|
||||
[[ -n "$archive" ]] || return 0
|
||||
if tar -tzf "$archive" ./bin/protoc >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Removing invalid native_protobuf cache without bin/protoc: $archive"
|
||||
rm -rf "$ROOT/depends/built/$HOST/native_protobuf"
|
||||
}
|
||||
|
||||
reset_configure_state() {
|
||||
rm -f config.cache config.log config.status libtool
|
||||
|
||||
@@ -170,7 +120,6 @@ else
|
||||
fi
|
||||
|
||||
reset_qt_configure_state
|
||||
remove_invalid_native_protobuf_cache
|
||||
|
||||
echo "Building native depends for $HOST..."
|
||||
# The legacy depends system mutates depends/$HOST while configuring each
|
||||
@@ -180,7 +129,6 @@ echo "Building native depends for $HOST..."
|
||||
make -C depends clean
|
||||
make -C depends HOST="$HOST" NO_QT=0 -j1
|
||||
require_path "$BASE_CONFIG"
|
||||
ensure_native_protoc
|
||||
|
||||
reset_configure_state
|
||||
./autogen.sh
|
||||
@@ -191,8 +139,7 @@ QT_SYSTEM_PKG_CONFIG_LIBDIR="$QT_SYSTEM_PKG_CONFIG_LIBDIR" CONFIG_SITE="$BASE_CO
|
||||
--disable-tests \
|
||||
--disable-bench \
|
||||
--with-gui=qt6 \
|
||||
--with-qtdbus=no \
|
||||
--with-protoc-bindir="$NATIVE_BIN"
|
||||
--with-qtdbus=no
|
||||
|
||||
echo "Cleaning stale target objects before compiling..."
|
||||
make clean
|
||||
|
||||
@@ -7,9 +7,6 @@ HOST="${HOST:-x86_64-w64-mingw32}"
|
||||
BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
|
||||
PREFIX="$ROOT/depends/$HOST"
|
||||
NATIVE_BIN="$ROOT/depends/build/$BUILD_HOST/bin"
|
||||
PROTOBUF_VERSION="${PROTOBUF_VERSION:-2.6.1}"
|
||||
PROTOBUF_SOURCE="$ROOT/depends/sources/protobuf-$PROTOBUF_VERSION.tar.bz2"
|
||||
PROTOBUF_BUILD="${PROTOBUF_BUILD:-/tmp/agrarian-protobuf-$PROTOBUF_VERSION-native}"
|
||||
|
||||
require_cmd() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
@@ -51,20 +48,6 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
build_native_protoc() {
|
||||
require_path "$PROTOBUF_SOURCE"
|
||||
rm -rf "$PROTOBUF_BUILD"
|
||||
mkdir -p "$PROTOBUF_BUILD"
|
||||
tar -xjf "$PROTOBUF_SOURCE" -C "$PROTOBUF_BUILD" --strip-components=1
|
||||
chmod -R u+rwX "$PROTOBUF_BUILD"
|
||||
(
|
||||
cd "$PROTOBUF_BUILD"
|
||||
bash configure --disable-shared --without-zlib
|
||||
make -C src protoc -j"$JOBS" SHELL=/bin/bash
|
||||
)
|
||||
cp "$PROTOBUF_BUILD/src/protoc" "$NATIVE_BIN/protoc"
|
||||
}
|
||||
|
||||
ensure_native_tools() {
|
||||
mkdir -p "$NATIVE_BIN"
|
||||
|
||||
@@ -77,10 +60,6 @@ ensure_native_tools() {
|
||||
if [[ ! -x "$NATIVE_BIN/lupdate" ]] && command -v lupdate >/dev/null 2>&1; then
|
||||
cp "$(command -v lupdate)" "$NATIVE_BIN/lupdate"
|
||||
fi
|
||||
|
||||
if [[ ! -x "$NATIVE_BIN/protoc" ]] || ! "$NATIVE_BIN/protoc" --version | grep -q "libprotoc $PROTOBUF_VERSION"; then
|
||||
build_native_protoc
|
||||
fi
|
||||
}
|
||||
|
||||
cd "$ROOT"
|
||||
@@ -130,8 +109,7 @@ CONFIG_SITE="$PREFIX/share/config.site" ./configure \
|
||||
--with-qt-libdir="$PREFIX/lib" \
|
||||
--with-qt-plugindir="$PREFIX/plugins" \
|
||||
--with-qt-translationdir="$PREFIX/translations" \
|
||||
--with-qt-bindir="$NATIVE_BIN" \
|
||||
--with-protoc-bindir="$NATIVE_BIN"
|
||||
--with-qt-bindir="$NATIVE_BIN"
|
||||
|
||||
echo "Cleaning stale target objects before compiling..."
|
||||
make clean
|
||||
|
||||
@@ -23,7 +23,6 @@ Build-Depends: debhelper,
|
||||
xvfb,
|
||||
qtbase5-dev, qttools5-dev-tools, qttools5-dev,
|
||||
libqrencode-dev,
|
||||
libprotobuf-dev, protobuf-compiler,
|
||||
python,
|
||||
libzmq3-dev,
|
||||
dh-systemd
|
||||
|
||||
@@ -71,7 +71,6 @@ BuildRequires: qt5-qtbase-devel
|
||||
# for /usr/bin/lrelease-qt5
|
||||
BuildRequires: qt5-linguist
|
||||
%endif
|
||||
BuildRequires: protobuf-devel
|
||||
BuildRequires: qrencode-devel
|
||||
BuildRequires: %{_bindir}/desktop-file-validate
|
||||
# for icon generation from SVG
|
||||
|
||||
@@ -114,31 +114,6 @@ ifneq ($(native_packages),)
|
||||
echo " - $$p: $$f"; \
|
||||
tar --no-same-owner -xzf "$$f" -C "$(build_prefix)"; \
|
||||
done
|
||||
@if [[ " $(native_packages) " == *" native_protobuf "* ]] && [[ ! -x "$(build_prefix)/bin/protoc" ]]; then \
|
||||
found="$$(find "$(build_prefix)" -path '*/bin/protoc' -type f 2>/dev/null | sort | head -n 1)"; \
|
||||
if [[ -n "$$found" ]]; then \
|
||||
echo "== Staging native protoc from: $$found"; \
|
||||
mkdir -p "$(build_prefix)/bin"; \
|
||||
cp "$$found" "$(build_prefix)/bin/protoc"; \
|
||||
chmod +x "$(build_prefix)/bin/protoc"; \
|
||||
fi; \
|
||||
fi
|
||||
@if [[ " $(native_packages) " == *" native_protobuf "* ]] && [[ ! -x "$(build_prefix)/bin/protoc" ]]; then \
|
||||
archive="$$(ls "$(BASE_CACHE)/$(HOST)/native_protobuf/"*.tar.gz 2>/dev/null | sort | tail -n 1)"; \
|
||||
if [[ -n "$$archive" ]] && tar -tzf "$$archive" ./bin/protoc >/dev/null 2>&1; then \
|
||||
echo "== Extracting native protoc directly from: $$archive"; \
|
||||
tar --no-same-owner -xzf "$$archive" -C "$(build_prefix)" ./bin/protoc; \
|
||||
chmod +x "$(build_prefix)/bin/protoc"; \
|
||||
elif [[ -n "$$archive" ]]; then \
|
||||
echo "== native_protobuf archive contents:"; \
|
||||
tar -tzf "$$archive" | sed -n '1,40p'; \
|
||||
fi; \
|
||||
fi
|
||||
@if [[ " $(native_packages) " == *" native_protobuf "* ]] && [[ ! -x "$(build_prefix)/bin/protoc" ]]; then \
|
||||
echo "ERROR: missing native protoc under $(build_prefix)/bin/protoc"; \
|
||||
echo "Fix: make -C $(BASEDIR) HOST=$(HOST) NO_QT=$(NO_QT) native_protobuf"; \
|
||||
exit 1; \
|
||||
fi
|
||||
endif
|
||||
@echo "== Writing config.site: $(host_prefix)/share/config.site"
|
||||
@mkdir -p "$(host_prefix)/share"
|
||||
@@ -154,7 +129,6 @@ endif
|
||||
echo "with_qt_plugindir='$(host_prefix)/plugins'"; \
|
||||
echo "with_qt_translationdir='$(host_prefix)/translations'"; \
|
||||
echo "with_qt_bindir='$(host_prefix)/bin'"; \
|
||||
echo "with_protoc_bindir='$(build_prefix)/bin'"; \
|
||||
echo "CPPFLAGS='-I$(host_prefix)/include'"; \
|
||||
echo "LDFLAGS='-L$(host_prefix)/lib'"; \
|
||||
echo "BOOST_CPPFLAGS='-I$(host_prefix)/include'"; \
|
||||
|
||||
+1
-2
@@ -38,8 +38,7 @@ points are the helpers in `contrib/`:
|
||||
- `contrib/build-win64-wallet.sh`
|
||||
- `contrib/agrarian-build-menu.sh`
|
||||
|
||||
Those helpers set the correct Qt, host-tool, and protobuf paths around the
|
||||
depends prefix.
|
||||
Those helpers set the correct Qt and host-tool paths around the depends prefix.
|
||||
|
||||
### Install the required dependencies: Ubuntu & Debian
|
||||
|
||||
|
||||
@@ -16,11 +16,6 @@ fi
|
||||
if test -z $with_qt_bindir && test -z "@no_qt@"; then
|
||||
with_qt_bindir=$depends_prefix/native/bin
|
||||
fi
|
||||
if test -z $with_protoc_bindir && test -z "@no_qt@"; then
|
||||
with_protoc_bindir=$depends_prefix/native/bin
|
||||
fi
|
||||
|
||||
|
||||
if test -z $enable_wallet && test -n "@no_wallet@"; then
|
||||
enable_wallet=no
|
||||
fi
|
||||
|
||||
@@ -201,7 +201,6 @@ $($(1)_postprocessed): | $($(1)_staged)
|
||||
$(AT)touch $$@
|
||||
$($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed)
|
||||
$(AT)echo Caching $(1)...
|
||||
$(AT)if [[ "$(1)" == "native_protobuf" && ! -x "$$($(1)_staging_prefix_dir)/bin/protoc" ]]; then echo "ERROR: native_protobuf cache missing bin/protoc"; find "$$($(1)_staging_dir)" -maxdepth 5 -print; exit 1; fi
|
||||
$(AT)cd $$($(1)_staging_prefix_dir); find . | sort | tar --no-recursion -czf $$($(1)_staging_dir)/$$(@F) -T -
|
||||
$(AT)mkdir -p $$(@D)
|
||||
$(AT)rm -rf $$(@D) && mkdir -p $$(@D)
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
package=native_protobuf
|
||||
$(package)_version=2.6.1
|
||||
$(package)_download_path=https://github.com/google/protobuf/releases/download/v$($(package)_version)
|
||||
$(package)_file_name=protobuf-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=ee445612d544d885ae240ffbcbf9267faa9f593b7b101f21d58beceb92661910
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-shared --without-zlib
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_autoconf)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -C src protoc
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
mkdir -p $($(package)_staging_prefix_dir)/bin && \
|
||||
cp src/protoc $($(package)_staging_prefix_dir)/bin/protoc && \
|
||||
$(build_STRIP) $($(package)_staging_prefix_dir)/bin/protoc
|
||||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
test -x bin/protoc || \
|
||||
(echo "ERROR: native_protobuf staged without bin/protoc" && find . -maxdepth 3 -type f -o -type d && exit 1) && \
|
||||
chmod +x bin/protoc
|
||||
endef
|
||||
@@ -22,8 +22,8 @@ USE_ZMQ ?= 0
|
||||
USE_UPNP ?= 1
|
||||
|
||||
# ---- Group definitions (as you had them) ----
|
||||
qt_native_packages := native_protobuf
|
||||
qt_packages := qrencode protobuf zlib
|
||||
qt_native_packages :=
|
||||
qt_packages := qrencode zlib
|
||||
|
||||
qt_linux_packages := expat freetype fontconfig qt
|
||||
qt_darwin_packages := qt
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package=protobuf
|
||||
$(package)_version=$(native_$(package)_version)
|
||||
$(package)_download_path=$(native_$(package)_download_path)
|
||||
$(package)_file_name=$(native_$(package)_file_name)
|
||||
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
||||
$(package)_dependencies=native_$(package)
|
||||
$(package)_cxxflags=-std=c++11
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
||||
$(package)_config_opts_linux=--with-pic
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub . &&\
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub gtest/build-aux
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_autoconf)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -C src libprotobuf.la
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) -C src install-libLTLIBRARIES install-nobase_includeHEADERS &&\
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA
|
||||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
rm lib/libprotoc.a
|
||||
endef
|
||||
+3
-3
@@ -53,9 +53,9 @@ instead of being required as Ubuntu system development packages.
|
||||
The Linux Qt wallet option also installs Ubuntu desktop development headers
|
||||
needed by Qt's xcb platform plugin, including fontconfig, freetype, xcb, and
|
||||
xkbcommon packages. Expat 2.8.0 and FreeType 2.14.3 are built through
|
||||
`depends/` for the Linux Qt/font stack. The wallet helper uses the matching
|
||||
`protoc` built by `depends/`, so a system protobuf compiler is not required. It
|
||||
also clears stale Qt work directories before rebuilding, because failed CMake
|
||||
`depends/` for the Linux Qt/font stack. Protobuf is not required because
|
||||
obsolete BIP70 payment request support was removed. The helper also clears
|
||||
stale Qt work directories before rebuilding, because failed CMake
|
||||
feature checks can otherwise be cached between attempts.
|
||||
|
||||
Defaults
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ from Ubuntu. See `doc/modernization.md`.
|
||||
Dependencies
|
||||
----------------------
|
||||
|
||||
brew install autoconf automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python3 qt6 zmq libevent qrencode gmp
|
||||
brew install autoconf automake berkeley-db4 libtool boost miniupnpc openssl pkg-config python3 qt6 zmq libevent qrencode gmp
|
||||
|
||||
See [dependencies.md](dependencies.md) for a complete overview.
|
||||
|
||||
|
||||
+3
-4
@@ -27,8 +27,8 @@ STANDARD BUILD WITH DEPENDS
|
||||
make install (optional)
|
||||
|
||||
The native depends wallet path currently builds Qt 6.8.3, OpenSSL 3.5.6,
|
||||
Boost 1.91.0, Expat 2.8.0, FreeType 2.14.3, protobuf, Berkeley DB, and
|
||||
supporting libraries.
|
||||
Boost 1.91.0, Expat 2.8.0, FreeType 2.14.3, Berkeley DB, and supporting
|
||||
libraries.
|
||||
|
||||
For a daemon-only build:
|
||||
|
||||
@@ -45,8 +45,7 @@ data structures) - libevent : Networking (async networking) - libgmp :
|
||||
Bignum arithmetic
|
||||
|
||||
Optional: - miniupnpc : UPnP support - libdb4.8 : Berkeley DB (wallet
|
||||
builds only) - qt : GUI support - protobuf : GUI payment protocol -
|
||||
libqrencode: QR code support - univalue : JSON parsing (bundled by
|
||||
builds only) - qt : GUI support - libqrencode: QR code support - univalue : JSON parsing (bundled by
|
||||
default) - libzmq3 : ZMQ notifications (>= 4.0.0)
|
||||
|
||||
See dependencies.md for version details.
|
||||
|
||||
@@ -60,7 +60,7 @@ Why the helpers exist
|
||||
The wallet build is sensitive to tool version mismatches:
|
||||
|
||||
* Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, Expat,
|
||||
FreeType, protobuf, and supporting libraries.
|
||||
FreeType, and supporting libraries.
|
||||
* Windows cross-target wallets use the deterministic depends Qt6 path and
|
||||
matching Qt host tools staged by depends.
|
||||
|
||||
|
||||
+9
-11
@@ -79,8 +79,8 @@ GENERAL DEPENDENCIES
|
||||
automake pkg-config bsdmainutils curl git make tar patch \
|
||||
cmake ninja-build python3
|
||||
|
||||
A host toolchain (build-essential) is required because some dependencies
|
||||
(e.g., protobuf) build host utilities during the process.
|
||||
A host toolchain (build-essential) is required because some dependencies build
|
||||
host utilities during the process.
|
||||
|
||||
If building the Windows installer (`make deploy`):
|
||||
|
||||
@@ -133,7 +133,6 @@ The helper:
|
||||
• Verifies the POSIX Mingw-w64 thread model.
|
||||
• Builds the Win64 depends tree with Qt enabled.
|
||||
• Stages matching Qt host tools (`moc`, `uic`, `rcc`) into the depends prefix.
|
||||
• Builds/stages protobuf 2.6.1 `protoc` when system `protoc` is newer.
|
||||
• Configures the wallet against the generated depends prefix.
|
||||
|
||||
Manual equivalent:
|
||||
@@ -153,8 +152,7 @@ Manual equivalent:
|
||||
--with-qt-libdir=$PWD/depends/x86_64-w64-mingw32/lib \
|
||||
--with-qt-plugindir=$PWD/depends/x86_64-w64-mingw32/plugins \
|
||||
--with-qt-translationdir=$PWD/depends/x86_64-w64-mingw32/translations \
|
||||
--with-qt-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin \
|
||||
--with-protoc-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin
|
||||
--with-qt-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin
|
||||
make
|
||||
|
||||
============================================================
|
||||
@@ -224,12 +222,12 @@ You MUST select the POSIX thread model when prompted by
|
||||
update-alternatives.
|
||||
|
||||
============================================================
|
||||
PROTOBUF NOTE
|
||||
PAYMENT REQUEST NOTE
|
||||
============================================================
|
||||
|
||||
The Windows depends build uses protobuf 2.6.1 headers and libraries. Do not use
|
||||
a newer system `protoc` to regenerate wallet sources for this target. The helper
|
||||
builds and stages a matching native `protoc` when needed.
|
||||
Obsolete BIP70 payment request support was removed from Agrarian 2.0. The
|
||||
Windows wallet build does not require protobuf or `protoc`. Standard
|
||||
`agrarian:` URI payment links remain supported.
|
||||
|
||||
============================================================
|
||||
QT NOTE
|
||||
@@ -245,8 +243,8 @@ DEPENDS BASELINE NOTE
|
||||
|
||||
The 2.0 branch currently verifies Windows x86_64 builds against the same
|
||||
modernized core dependency baseline as Linux: OpenSSL 3.5.6, Boost 1.91.0,
|
||||
Qt 6.8.3, Berkeley DB 4.8.30, protobuf 2.6.1, libevent 2.1.8-stable, and GMP
|
||||
6.3.0. Expat 2.8.0 and FreeType 2.14.3 are part of the Linux Qt/font depends
|
||||
Qt 6.8.3, Berkeley DB 4.8.30, libevent 2.1.12-stable, and GMP 6.3.0. Expat
|
||||
2.8.0 and FreeType 2.14.3 are part of the Linux Qt/font depends
|
||||
path and are documented in `doc/dependencies.md`.
|
||||
|
||||
============================================================
|
||||
|
||||
+2
-1
@@ -25,7 +25,6 @@ branch. You can find instructions for installing or building them in the
|
||||
| OpenSSL | [3.5.6](https://www.openssl.org/source) | | No | | |
|
||||
| GMP | [6.3.0](https://gmplib.org/) | | No | | |
|
||||
| PCRE | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L66) |
|
||||
| protobuf | [2.6.1](https://github.com/google/protobuf/releases) | | No | | |
|
||||
| Python (tests) | | [3.5](https://www.python.org/downloads) | | | |
|
||||
| qrencode | [4.1.1](https://github.com/fukuchi/libqrencode/releases/tag/v4.1.1) | | No | | |
|
||||
| Qt | [6.8.3](https://download.qt.io/official_releases/qt/) | 6.8 LTS | No | | |
|
||||
@@ -40,6 +39,8 @@ Modernization notes
|
||||
* Qt builds target Qt 6.8 LTS through the deterministic depends path.
|
||||
* OpenSSL builds target OpenSSL 3.5 LTS through the deterministic depends path.
|
||||
* Boost builds target Boost 1.91.0 through the deterministic depends path.
|
||||
* Protobuf was removed with obsolete BIP70 payment request support. Normal
|
||||
`agrarian:` URI payment handling remains available.
|
||||
* Berkeley DB remains 4.8.30 in depends for legacy wallet portability. Wallets
|
||||
built against other BDB major versions may not be portable.
|
||||
|
||||
|
||||
@@ -17,13 +17,16 @@ The current deterministic `depends/` baseline is:
|
||||
- Expat 2.8.0 for the Linux Qt/font stack
|
||||
- FreeType 2.14.3 for Qt 6 static font support
|
||||
- Berkeley DB 4.8.30 for portable legacy wallet compatibility
|
||||
- protobuf 2.6.1 for the existing Qt payment request sources
|
||||
- qrencode 4.1.1 for Qt wallet QR code support
|
||||
- libevent 2.1.12-stable
|
||||
- GMP 6.3.0
|
||||
- MiniUPnPc 2.3.3 when UPnP support is enabled
|
||||
- ZeroMQ 4.3.5 when enabled
|
||||
|
||||
Obsolete BIP70 payment request support was removed to eliminate the protobuf
|
||||
and `protoc` dependency from the wallet build. Standard `agrarian:` URI payment
|
||||
links are still supported.
|
||||
|
||||
The currently verified binaries are:
|
||||
|
||||
- Ubuntu daemon and command-line tools
|
||||
|
||||
@@ -578,10 +578,6 @@ if HARDEN
|
||||
$(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS)
|
||||
endif
|
||||
|
||||
%.pb.cc %.pb.h: %.proto
|
||||
@test -f $(PROTOC)
|
||||
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(<D) $<
|
||||
|
||||
if EMBEDDED_LEVELDB
|
||||
include Makefile.leveldb.include
|
||||
endif
|
||||
|
||||
+47
-89
@@ -671,8 +671,8 @@ am__qt_libbitcoinqt_a_SOURCES_DIST = qt/bantablemodel.cpp \
|
||||
qt/locale/agrarian_sv.ts qt/locale/agrarian_tr.ts \
|
||||
qt/locale/agrarian_uk.ts qt/locale/agrarian_vi.ts \
|
||||
qt/locale/agrarian_zh_CN.ts qt/locale/agrarian_zh_TW.ts \
|
||||
qt/paymentrequest.proto qt/res/icons/add.png \
|
||||
qt/res/icons/address-book.png qt/res/icons/automint_active.png \
|
||||
qt/res/icons/add.png qt/res/icons/address-book.png \
|
||||
qt/res/icons/automint_active.png \
|
||||
qt/res/icons/automint_inactive.png qt/res/icons/bitcoin.ico \
|
||||
qt/res/icons/bitcoin.png qt/res/icons/bitcoin_testnet.ico \
|
||||
qt/res/icons/bitcoin_testnet.png \
|
||||
@@ -793,7 +793,7 @@ am__qt_libbitcoinqt_a_SOURCES_DIST = qt/bantablemodel.cpp \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3)
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3)
|
||||
@ENABLE_QT_TRUE@am__objects_13 = qt/libbitcoinqt_a-moc_addressbookpage.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_addresstablemodel.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_askpassphrasedialog.$(OBJEXT) \
|
||||
@@ -848,14 +848,11 @@ am__qt_libbitcoinqt_a_SOURCES_DIST = qt/bantablemodel.cpp \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_walletview.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_14 = \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-paymentrequest.pb.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_15 = \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-qrc_agrarian.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_16 = qt/libbitcoinqt_a-qrc_agrarian_locale.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_15 = qt/libbitcoinqt_a-qrc_agrarian_locale.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@nodist_qt_libbitcoinqt_a_OBJECTS = $(am__objects_13) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_14) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_15) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_16)
|
||||
@ENABLE_QT_TRUE@ $(am__objects_15)
|
||||
qt_libbitcoinqt_a_OBJECTS = $(am_qt_libbitcoinqt_a_OBJECTS) \
|
||||
$(nodist_qt_libbitcoinqt_a_OBJECTS)
|
||||
@BUILD_BITCOIN_LIBS_TRUE@libbitcoinconsensus_la_DEPENDENCIES = \
|
||||
@@ -867,7 +864,7 @@ am__libbitcoinconsensus_la_SOURCES_DIST = allocators.cpp \
|
||||
script/script.cpp script/interpreter.cpp \
|
||||
script/bitcoinconsensus.cpp uint256.cpp utilstrencodings.cpp \
|
||||
compat/glibc_compat.cpp
|
||||
@BUILD_BITCOIN_LIBS_TRUE@@GLIBC_BACK_COMPAT_TRUE@am__objects_17 = compat/libbitcoinconsensus_la-glibc_compat.lo
|
||||
@BUILD_BITCOIN_LIBS_TRUE@@GLIBC_BACK_COMPAT_TRUE@am__objects_16 = compat/libbitcoinconsensus_la-glibc_compat.lo
|
||||
@BUILD_BITCOIN_LIBS_TRUE@am_libbitcoinconsensus_la_OBJECTS = \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-allocators.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ primitives/libbitcoinconsensus_la-transaction.lo \
|
||||
@@ -884,7 +881,7 @@ am__libbitcoinconsensus_la_SOURCES_DIST = allocators.cpp \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ script/libbitcoinconsensus_la-bitcoinconsensus.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-uint256.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-utilstrencodings.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ $(am__objects_17)
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ $(am__objects_16)
|
||||
libbitcoinconsensus_la_OBJECTS = $(am_libbitcoinconsensus_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
@@ -897,9 +894,9 @@ libbitcoinconsensus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@am_libbitcoinconsensus_la_rpath = -rpath \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ $(libdir)
|
||||
am__agrarian_cli_SOURCES_DIST = agrarian-cli.cpp agrarian-cli-res.rc
|
||||
@TARGET_WINDOWS_TRUE@am__objects_18 = agrarian-cli-res.$(OBJEXT)
|
||||
@TARGET_WINDOWS_TRUE@am__objects_17 = agrarian-cli-res.$(OBJEXT)
|
||||
am_agrarian_cli_OBJECTS = agrarian_cli-agrarian-cli.$(OBJEXT) \
|
||||
$(am__objects_18)
|
||||
$(am__objects_17)
|
||||
agrarian_cli_OBJECTS = $(am_agrarian_cli_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
@EMBEDDED_UNIVALUE_FALSE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
|
||||
@@ -912,9 +909,9 @@ agrarian_cli_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(agrarian_cli_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(agrarian_cli_LDFLAGS) $(LDFLAGS) -o $@
|
||||
am__agrarian_tx_SOURCES_DIST = agrarian-tx.cpp agrarian-tx-res.rc
|
||||
@TARGET_WINDOWS_TRUE@am__objects_19 = agrarian-tx-res.$(OBJEXT)
|
||||
@TARGET_WINDOWS_TRUE@am__objects_18 = agrarian-tx-res.$(OBJEXT)
|
||||
am_agrarian_tx_OBJECTS = agrarian_tx-agrarian-tx.$(OBJEXT) \
|
||||
$(am__objects_19)
|
||||
$(am__objects_18)
|
||||
agrarian_tx_OBJECTS = $(am_agrarian_tx_OBJECTS)
|
||||
agrarian_tx_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBBITCOIN_COMMON) \
|
||||
$(LIBBITCOIN_ZEROCOIN) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) \
|
||||
@@ -923,8 +920,8 @@ agrarian_tx_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(agrarian_tx_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(agrarian_tx_LDFLAGS) $(LDFLAGS) -o $@
|
||||
am__agrariand_SOURCES_DIST = agrariand.cpp agrariand-res.rc
|
||||
@TARGET_WINDOWS_TRUE@am__objects_20 = agrariand-res.$(OBJEXT)
|
||||
am_agrariand_OBJECTS = agrariand-agrariand.$(OBJEXT) $(am__objects_20)
|
||||
@TARGET_WINDOWS_TRUE@am__objects_19 = agrariand-res.$(OBJEXT)
|
||||
am_agrariand_OBJECTS = agrariand-agrariand.$(OBJEXT) $(am__objects_19)
|
||||
agrariand_OBJECTS = $(am_agrariand_OBJECTS)
|
||||
am__DEPENDENCIES_3 = $(am__append_12)
|
||||
am__DEPENDENCIES_4 = $(am__append_13)
|
||||
@@ -943,17 +940,17 @@ agrariand_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
am__qt_agrarian_qt_SOURCES_DIST = qt/agrarian.cpp \
|
||||
qt/macdockiconhandler.mm qt/macnotificationhandler.mm \
|
||||
qt/res/agrarian-qt-res.rc
|
||||
@ENABLE_QT_TRUE@am__objects_21 = \
|
||||
@ENABLE_QT_TRUE@am__objects_20 = \
|
||||
@ENABLE_QT_TRUE@ qt/agrarian_qt-macdockiconhandler.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/agrarian_qt-macnotificationhandler.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@am__objects_22 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@ $(am__objects_21)
|
||||
@ENABLE_QT_TRUE@am__objects_23 = qt/res/agrarian-qt-res.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@am__objects_24 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@ $(am__objects_23)
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@am__objects_21 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@ $(am__objects_20)
|
||||
@ENABLE_QT_TRUE@am__objects_22 = qt/res/agrarian-qt-res.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@am__objects_23 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@ $(am__objects_22)
|
||||
@ENABLE_QT_TRUE@am_qt_agrarian_qt_OBJECTS = \
|
||||
@ENABLE_QT_TRUE@ qt/agrarian_qt-agrarian.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_22) $(am__objects_24)
|
||||
@ENABLE_QT_TRUE@ $(am__objects_21) $(am__objects_23)
|
||||
qt_agrarian_qt_OBJECTS = $(am_qt_agrarian_qt_OBJECTS)
|
||||
@ENABLE_QT_TRUE@@ENABLE_ZMQ_TRUE@am__DEPENDENCIES_5 = \
|
||||
@ENABLE_QT_TRUE@@ENABLE_ZMQ_TRUE@ $(LIBBITCOIN_ZMQ) \
|
||||
@@ -969,8 +966,8 @@ qt_agrarian_qt_OBJECTS = $(am_qt_agrarian_qt_OBJECTS)
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
@ENABLE_QT_TRUE@ $(LIBSECP256K1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1)
|
||||
qt_agrarian_qt_LINK = $(LIBTOOL) $(AM_V_lt) \
|
||||
$(qt_agrarian_qt_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
|
||||
$(OBJCXXLD) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS) \
|
||||
@@ -979,15 +976,15 @@ am__qt_test_test_agrarian_qt_SOURCES_DIST = qt/test/test_main.cpp \
|
||||
qt/test/uritests.cpp qt/test/uritests.h \
|
||||
qt/test/paymentrequestdata.h qt/test/paymentservertests.h \
|
||||
qt/test/paymentservertests.cpp
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_25 = qt/test/test_agrarian_qt-paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_24 = qt/test/test_agrarian_qt-paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@am_qt_test_test_agrarian_qt_OBJECTS = qt/test/test_agrarian_qt-test_main.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ qt/test/test_agrarian_qt-uritests.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_3) $(am__objects_25)
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_26 = qt/test/test_agrarian_qt-moc_paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@am__objects_27 = qt/test/test_agrarian_qt-moc_uritests.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_26)
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_3) $(am__objects_24)
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_25 = qt/test/test_agrarian_qt-moc_paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@am__objects_26 = qt/test/test_agrarian_qt-moc_uritests.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_25)
|
||||
@ENABLE_QT_TESTS_TRUE@nodist_qt_test_test_agrarian_qt_OBJECTS = \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_27)
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_26)
|
||||
qt_test_test_agrarian_qt_OBJECTS = \
|
||||
$(am_qt_test_test_agrarian_qt_OBJECTS) \
|
||||
$(nodist_qt_test_test_agrarian_qt_OBJECTS)
|
||||
@@ -1012,7 +1009,6 @@ qt_test_test_agrarian_qt_OBJECTS = \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1)
|
||||
@@ -1054,12 +1050,12 @@ am__test_test_agrarian_SOURCES_DIST = test/test_agrarian.h \
|
||||
test/data/script_invalid.json test/data/tx_invalid.json \
|
||||
test/data/tx_valid.json test/data/sighash.json \
|
||||
test/data/alertTests.raw
|
||||
@ENABLE_TESTS_TRUE@am__objects_28 = \
|
||||
@ENABLE_TESTS_TRUE@am__objects_27 = \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-test_agrarian.$(OBJEXT)
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_29 = test/test_agrarian-accounting_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_28 = test/test_agrarian-accounting_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@ wallet/test/test_test_agrarian-wallet_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@ test/test_agrarian-rpc_wallet_tests.$(OBJEXT)
|
||||
@ENABLE_TESTS_TRUE@am__objects_30 = test/test_agrarian-zerocoin_implementation_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@am__objects_29 = test/test_agrarian-zerocoin_implementation_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_denomination_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_transactions_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_coinspend_tests.$(OBJEXT) \
|
||||
@@ -1105,13 +1101,13 @@ am__test_test_agrarian_SOURCES_DIST = test/test_agrarian.h \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-uint256_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-univalue_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-util_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_29)
|
||||
@ENABLE_TESTS_TRUE@am_test_test_agrarian_OBJECTS = $(am__objects_28) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_30) $(am__objects_3) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_28)
|
||||
@ENABLE_TESTS_TRUE@am_test_test_agrarian_OBJECTS = $(am__objects_27) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_29) $(am__objects_3) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_3)
|
||||
@ENABLE_TESTS_TRUE@am__objects_31 = $(am__objects_3) $(am__objects_3)
|
||||
@ENABLE_TESTS_TRUE@am__objects_30 = $(am__objects_3) $(am__objects_3)
|
||||
@ENABLE_TESTS_TRUE@nodist_test_test_agrarian_OBJECTS = \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_31)
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_30)
|
||||
test_test_agrarian_OBJECTS = $(am_test_test_agrarian_OBJECTS) \
|
||||
$(nodist_test_test_agrarian_OBJECTS)
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_ZMQ_TRUE@am__DEPENDENCIES_7 = \
|
||||
@@ -1392,7 +1388,6 @@ am__depfiles_remade = ./$(DEPDIR)/agrarian_cli-agrarian-cli.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po \
|
||||
@@ -2004,9 +1999,6 @@ PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PORT = @PORT@
|
||||
PROTOBUF_CFLAGS = @PROTOBUF_CFLAGS@
|
||||
PROTOBUF_LIBS = @PROTOBUF_LIBS@
|
||||
PROTOC = @PROTOC@
|
||||
PTHREAD_CC = @PTHREAD_CC@
|
||||
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
|
||||
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||
@@ -2886,9 +2878,6 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TRUE@QT_QRC = qt/agrarian.qrc
|
||||
@ENABLE_QT_TRUE@QT_QRC_LOCALE_CPP = qt/qrc_agrarian_locale.cpp
|
||||
@ENABLE_QT_TRUE@QT_QRC_LOCALE = qt/agrarian_locale.qrc
|
||||
@ENABLE_QT_TRUE@PROTOBUF_CC = qt/paymentrequest.pb.cc
|
||||
@ENABLE_QT_TRUE@PROTOBUF_H = qt/paymentrequest.pb.h
|
||||
@ENABLE_QT_TRUE@PROTOBUF_PROTO = qt/paymentrequest.proto
|
||||
@ENABLE_QT_TRUE@BITCOIN_QT_H = \
|
||||
@ENABLE_QT_TRUE@ qt/addressbookpage.h \
|
||||
@ENABLE_QT_TRUE@ qt/addresstablemodel.h \
|
||||
@@ -3110,23 +3099,21 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TRUE@ -I$(builddir)/qt/forms
|
||||
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(QR_CFLAGS)
|
||||
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(QT_PIE_FLAGS)
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_SOURCES = $(BITCOIN_QT_CPP) $(BITCOIN_QT_H) $(QT_FORMS_UI) \
|
||||
@ENABLE_QT_TRUE@ $(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(PROTOBUF_PROTO) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
|
||||
@ENABLE_QT_TRUE@nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(PROTOBUF_CC) \
|
||||
@ENABLE_QT_TRUE@ $(PROTOBUF_H) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
@ENABLE_QT_TRUE@ $(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
|
||||
@ENABLE_QT_TRUE@nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
|
||||
# forms/foo.h -> forms/ui_foo.h
|
||||
@ENABLE_QT_TRUE@QT_FORMS_H = $(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:.ui=.h))))
|
||||
|
||||
# agrarian-qt binary #
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(QR_CFLAGS)
|
||||
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_SOURCES = qt/agrarian.cpp \
|
||||
@@ -3139,10 +3126,9 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TRUE@ $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) \
|
||||
@ENABLE_QT_TRUE@ $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(LIBSECP256K1) $(EVENT_PTHREADS_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(EVENT_LIBS)
|
||||
@ENABLE_QT_TRUE@ $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TRUE@ $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX
|
||||
|
||||
@@ -3157,7 +3143,7 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TESTS_TRUE@ qt/test/paymentservertests.h
|
||||
|
||||
@ENABLE_QT_TESTS_TRUE@qt_test_test_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_INCLUDES) $(QT_TEST_INCLUDES) $(PROTOBUF_CFLAGS)
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_INCLUDES) $(QT_TEST_INCLUDES)
|
||||
|
||||
@ENABLE_QT_TESTS_TRUE@qt_test_test_agrarian_qt_SOURCES = \
|
||||
@ENABLE_QT_TESTS_TRUE@ qt/test/test_main.cpp \
|
||||
@@ -3173,8 +3159,8 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TESTS_TRUE@ $(LIBLEVELDB) $(LIBLEVELDB_SSE42) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(LIBMEMENV) $(BOOST_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_DBUS_LIBS) $(QT_TEST_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_LIBS) $(QR_LIBS) $(BDB_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(SSL_LIBS) $(CRYPTO_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
@ENABLE_QT_TESTS_TRUE@qt_test_test_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
@@ -3962,8 +3948,6 @@ qt/libbitcoinqt_a-moc_walletview.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-paymentrequest.pb.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-qrc_agrarian.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-qrc_agrarian_locale.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
@@ -4442,7 +4426,6 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po@am__quote@ # am--include-marker
|
||||
@@ -8757,20 +8740,6 @@ qt/libbitcoinqt_a-moc_zagrcontroldialog.obj: qt/moc_zagrcontroldialog.cpp
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -c -o qt/libbitcoinqt_a-moc_zagrcontroldialog.obj `if test -f 'qt/moc_zagrcontroldialog.cpp'; then $(CYGPATH_W) 'qt/moc_zagrcontroldialog.cpp'; else $(CYGPATH_W) '$(srcdir)/qt/moc_zagrcontroldialog.cpp'; fi`
|
||||
|
||||
qt/libbitcoinqt_a-paymentrequest.pb.o: qt/paymentrequest.pb.cc
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -MT qt/libbitcoinqt_a-paymentrequest.pb.o -MD -MP -MF qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo -c -o qt/libbitcoinqt_a-paymentrequest.pb.o `test -f 'qt/paymentrequest.pb.cc' || echo '$(srcdir)/'`qt/paymentrequest.pb.cc
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='qt/paymentrequest.pb.cc' object='qt/libbitcoinqt_a-paymentrequest.pb.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -c -o qt/libbitcoinqt_a-paymentrequest.pb.o `test -f 'qt/paymentrequest.pb.cc' || echo '$(srcdir)/'`qt/paymentrequest.pb.cc
|
||||
|
||||
qt/libbitcoinqt_a-paymentrequest.pb.obj: qt/paymentrequest.pb.cc
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -MT qt/libbitcoinqt_a-paymentrequest.pb.obj -MD -MP -MF qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo -c -o qt/libbitcoinqt_a-paymentrequest.pb.obj `if test -f 'qt/paymentrequest.pb.cc'; then $(CYGPATH_W) 'qt/paymentrequest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/qt/paymentrequest.pb.cc'; fi`
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='qt/paymentrequest.pb.cc' object='qt/libbitcoinqt_a-paymentrequest.pb.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -c -o qt/libbitcoinqt_a-paymentrequest.pb.obj `if test -f 'qt/paymentrequest.pb.cc'; then $(CYGPATH_W) 'qt/paymentrequest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/qt/paymentrequest.pb.cc'; fi`
|
||||
|
||||
qt/libbitcoinqt_a-qrc_agrarian.o: qt/qrc_agrarian.cpp
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -MT qt/libbitcoinqt_a-qrc_agrarian.o -MD -MP -MF qt/$(DEPDIR)/libbitcoinqt_a-qrc_agrarian.Tpo -c -o qt/libbitcoinqt_a-qrc_agrarian.o `test -f 'qt/qrc_agrarian.cpp' || echo '$(srcdir)/'`qt/qrc_agrarian.cpp
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) qt/$(DEPDIR)/libbitcoinqt_a-qrc_agrarian.Tpo qt/$(DEPDIR)/libbitcoinqt_a-qrc_agrarian.Po
|
||||
@@ -10504,7 +10473,6 @@ distclean: distclean-recursive
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po
|
||||
@@ -10924,7 +10892,6 @@ maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po
|
||||
@@ -11137,10 +11104,6 @@ check-security: $(bin_PROGRAMS)
|
||||
@HARDEN_TRUE@ @echo "Checking binary security..."
|
||||
@HARDEN_TRUE@ $(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS)
|
||||
|
||||
%.pb.cc %.pb.h: %.proto
|
||||
@test -f $(PROTOC)
|
||||
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(<D) $<
|
||||
|
||||
@ENABLE_TESTS_TRUE@$(BITCOIN_TESTS): $(GENERATED_TEST_FILES)
|
||||
|
||||
@ENABLE_TESTS_TRUE@agrarian_test: $(TEST_BINARY)
|
||||
@@ -11186,11 +11149,6 @@ check-security: $(bin_PROGRAMS)
|
||||
@ENABLE_QT_TRUE@$(QT_MOC): $(QT_FORMS_H)
|
||||
@ENABLE_QT_TRUE@$(qt_libbitcoinqt_a_OBJECTS) $(qt_agrarian_qt_OBJECTS) : | $(QT_MOC)
|
||||
|
||||
#Generating these with a half-written protobuf header leads to wacky results.
|
||||
#This makes sure it's done.
|
||||
@ENABLE_QT_TRUE@$(QT_MOC): $(PROTOBUF_H)
|
||||
@ENABLE_QT_TRUE@$(QT_MOC_CPP): $(PROTOBUF_H)
|
||||
|
||||
@ENABLE_QT_TRUE@SECONDARY: $(QT_QM)
|
||||
|
||||
@ENABLE_QT_TRUE@$(srcdir)/qt/agrarianstrings.cpp: $(libbitcoin_server_a_SOURCES) $(libbitcoin_wallet_a_SOURCES) $(libbitcoin_common_a_SOURCES) $(libbitcoin_zmq_a_SOURCES) $(libbitcoin_util_a_SOURCES)
|
||||
@@ -11208,7 +11166,7 @@ check-security: $(bin_PROGRAMS)
|
||||
@ENABLE_QT_TRUE@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
@ENABLE_QT_TRUE@ @rm $(@D)/temp_$(<F)
|
||||
|
||||
@ENABLE_QT_TRUE@$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES) $(PROTOBUF_H)
|
||||
@ENABLE_QT_TRUE@$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
@ENABLE_QT_TRUE@ @test -f $(RCC)
|
||||
@ENABLE_QT_TRUE@ $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \
|
||||
@ENABLE_QT_TRUE@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
|
||||
+6
-16
@@ -138,10 +138,6 @@ QT_QRC = qt/agrarian.qrc
|
||||
QT_QRC_LOCALE_CPP = qt/qrc_agrarian_locale.cpp
|
||||
QT_QRC_LOCALE = qt/agrarian_locale.qrc
|
||||
|
||||
PROTOBUF_CC = qt/paymentrequest.pb.cc
|
||||
PROTOBUF_H = qt/paymentrequest.pb.h
|
||||
PROTOBUF_PROTO = qt/paymentrequest.proto
|
||||
|
||||
BITCOIN_QT_H = \
|
||||
qt/addressbookpage.h \
|
||||
qt/addresstablemodel.h \
|
||||
@@ -372,15 +368,14 @@ BITCOIN_QT_INCLUDES = -I$(builddir)/qt -I$(srcdir)/qt -I$(srcdir)/qt/forms \
|
||||
-I$(builddir)/qt/forms
|
||||
|
||||
qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
$(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
$(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(QR_CFLAGS)
|
||||
qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(QT_PIE_FLAGS)
|
||||
|
||||
qt_libbitcoinqt_a_SOURCES = $(BITCOIN_QT_CPP) $(BITCOIN_QT_H) $(QT_FORMS_UI) \
|
||||
$(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(PROTOBUF_PROTO) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
$(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
|
||||
nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(PROTOBUF_CC) \
|
||||
$(PROTOBUF_H) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
|
||||
# forms/foo.h -> forms/ui_foo.h
|
||||
QT_FORMS_H=$(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:.ui=.h))))
|
||||
@@ -390,14 +385,9 @@ QT_FORMS_H=$(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:
|
||||
$(QT_MOC): $(QT_FORMS_H)
|
||||
$(qt_libbitcoinqt_a_OBJECTS) $(qt_agrarian_qt_OBJECTS) : | $(QT_MOC)
|
||||
|
||||
#Generating these with a half-written protobuf header leads to wacky results.
|
||||
#This makes sure it's done.
|
||||
$(QT_MOC): $(PROTOBUF_H)
|
||||
$(QT_MOC_CPP): $(PROTOBUF_H)
|
||||
|
||||
# agrarian-qt binary #
|
||||
qt_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
$(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
$(QT_INCLUDES) $(QR_CFLAGS)
|
||||
qt_agrarian_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
|
||||
qt_agrarian_qt_SOURCES = qt/agrarian.cpp
|
||||
@@ -415,7 +405,7 @@ if ENABLE_ZMQ
|
||||
qt_agrarian_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
||||
endif
|
||||
qt_agrarian_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
|
||||
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
qt_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
qt_agrarian_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX
|
||||
@@ -440,7 +430,7 @@ $(QT_QRC_LOCALE_CPP): $(QT_QRC_LOCALE) $(QT_QM)
|
||||
$(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
@rm $(@D)/temp_$(<F)
|
||||
|
||||
$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES) $(PROTOBUF_H)
|
||||
$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
@test -f $(RCC)
|
||||
$(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \
|
||||
$(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
|
||||
@@ -16,7 +16,7 @@ TEST_QT_H = \
|
||||
qt/test/paymentservertests.h
|
||||
|
||||
qt_test_test_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
$(QT_INCLUDES) $(QT_TEST_INCLUDES) $(PROTOBUF_CFLAGS)
|
||||
$(QT_INCLUDES) $(QT_TEST_INCLUDES)
|
||||
|
||||
qt_test_test_agrarian_qt_SOURCES = \
|
||||
qt/test/test_main.cpp \
|
||||
@@ -38,7 +38,7 @@ qt_test_test_agrarian_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
||||
endif
|
||||
qt_test_test_agrarian_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) \
|
||||
$(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
|
||||
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(QR_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
qt_test_test_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
qt_test_test_agrarian_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
//
|
||||
// Simple Bitcoin Payment Protocol messages
|
||||
//
|
||||
// Use fields 100+ for extensions;
|
||||
// to avoid conflicts, register extensions at:
|
||||
// https://en.bitcoin.it/wiki/Payment_Request
|
||||
//
|
||||
|
||||
package payments;
|
||||
option java_package = "org.bitcoin.protocols.payments";
|
||||
option java_outer_classname = "Protos";
|
||||
|
||||
// Generalized form of "send payment to this/these bitcoin addresses"
|
||||
message Output {
|
||||
optional uint64 amount = 1 [default = 0]; // amount is integer-number-of-satoshis
|
||||
required bytes script = 2; // usually one of the standard Script forms
|
||||
}
|
||||
message PaymentDetails {
|
||||
optional string network = 1 [default = "main"]; // "main" or "test"
|
||||
repeated Output outputs = 2; // Where payment should be sent
|
||||
required uint64 time = 3; // Timestamp; when payment request created
|
||||
optional uint64 expires = 4; // Timestamp; when this request should be considered invalid
|
||||
optional string memo = 5; // Human-readable description of request for the customer
|
||||
optional string payment_url = 6; // URL to send Payment and get PaymentACK
|
||||
optional bytes merchant_data = 7; // Arbitrary data to include in the Payment message
|
||||
}
|
||||
message PaymentRequest {
|
||||
optional uint32 payment_details_version = 1 [default = 1];
|
||||
optional string pki_type = 2 [default = "none"]; // none / x509+sha256 / x509+sha1
|
||||
optional bytes pki_data = 3; // depends on pki_type
|
||||
required bytes serialized_payment_details = 4; // PaymentDetails
|
||||
optional bytes signature = 5; // pki-dependent signature
|
||||
}
|
||||
message X509Certificates {
|
||||
repeated bytes certificate = 1; // DER-encoded X.509 certificate chain
|
||||
}
|
||||
message Payment {
|
||||
optional bytes merchant_data = 1; // From PaymentDetails.merchant_data
|
||||
repeated bytes transactions = 2; // Signed transactions that satisfy PaymentDetails.outputs
|
||||
repeated Output refund_to = 3; // Where to send refunds, if a refund is necessary
|
||||
optional string memo = 4; // Human-readable message for the merchant
|
||||
}
|
||||
message PaymentACK {
|
||||
required Payment payment = 1; // Payment message that triggered this ACK
|
||||
optional string memo = 2; // human-readable message for customer
|
||||
}
|
||||
+10
-182
@@ -3,214 +3,42 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
//
|
||||
// Wraps dumb protocol buffer paymentRequest
|
||||
// with some extra methods
|
||||
//
|
||||
|
||||
#include "paymentrequestplus.h"
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
#include <openssl/x509_vfy.h>
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QSslCertificate>
|
||||
|
||||
using namespace std;
|
||||
|
||||
class SSLVerifyError : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
SSLVerifyError(std::string err) : std::runtime_error(err) {}
|
||||
};
|
||||
|
||||
bool PaymentRequestPlus::parse(const QByteArray& data)
|
||||
{
|
||||
bool parseOK = paymentRequest.ParseFromArray(data.data(), data.size());
|
||||
if (!parseOK) {
|
||||
qWarning() << "PaymentRequestPlus::parse : Error parsing payment request";
|
||||
return false;
|
||||
}
|
||||
if (paymentRequest.payment_details_version() > 1) {
|
||||
qWarning() << "PaymentRequestPlus::parse : Received up-version payment details, version=" << paymentRequest.payment_details_version();
|
||||
Q_UNUSED(data);
|
||||
qWarning() << "PaymentRequestPlus::parse : BIP70 payment requests are no longer supported";
|
||||
return false;
|
||||
}
|
||||
|
||||
parseOK = details.ParseFromString(paymentRequest.serialized_payment_details());
|
||||
if (!parseOK) {
|
||||
qWarning() << "PaymentRequestPlus::parse : Error parsing payment details";
|
||||
paymentRequest.Clear();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PaymentRequestPlus::SerializeToString(string* output) const
|
||||
bool PaymentRequestPlus::SerializeToString(std::string* output) const
|
||||
{
|
||||
return paymentRequest.SerializeToString(output);
|
||||
if (output)
|
||||
output->clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PaymentRequestPlus::IsInitialized() const
|
||||
{
|
||||
return paymentRequest.IsInitialized();
|
||||
return false;
|
||||
}
|
||||
|
||||
QString PaymentRequestPlus::getPKIType() const
|
||||
{
|
||||
if (!IsInitialized()) return QString("none");
|
||||
return QString::fromStdString(paymentRequest.pki_type());
|
||||
return QString("none");
|
||||
}
|
||||
|
||||
bool PaymentRequestPlus::getMerchant(X509_STORE* certStore, QString& merchant) const
|
||||
{
|
||||
Q_UNUSED(certStore);
|
||||
merchant.clear();
|
||||
|
||||
if (!IsInitialized())
|
||||
return false;
|
||||
|
||||
// One day we'll support more PKI types, but just
|
||||
// x509 for now:
|
||||
const EVP_MD* digestAlgorithm = NULL;
|
||||
if (paymentRequest.pki_type() == "x509+sha256") {
|
||||
digestAlgorithm = EVP_sha256();
|
||||
} else if (paymentRequest.pki_type() == "x509+sha1") {
|
||||
digestAlgorithm = EVP_sha1();
|
||||
} else if (paymentRequest.pki_type() == "none") {
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : Payment request: pki_type == none";
|
||||
return false;
|
||||
} else {
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : Payment request: unknown pki_type " << QString::fromStdString(paymentRequest.pki_type());
|
||||
return false;
|
||||
}
|
||||
|
||||
payments::X509Certificates certChain;
|
||||
if (!certChain.ParseFromString(paymentRequest.pki_data())) {
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : Payment request: error parsing pki_data";
|
||||
return false;
|
||||
}
|
||||
|
||||
std::vector<X509*> certs;
|
||||
const QDateTime currentTime = QDateTime::currentDateTime();
|
||||
for (int i = 0; i < certChain.certificate_size(); i++) {
|
||||
QByteArray certData(certChain.certificate(i).data(), certChain.certificate(i).size());
|
||||
QSslCertificate qCert(certData, QSsl::Der);
|
||||
if (currentTime < qCert.effectiveDate() || currentTime > qCert.expiryDate()) {
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : Payment request: certificate expired or not yet active: " << qCert;
|
||||
return false;
|
||||
}
|
||||
if (qCert.isBlacklisted()) {
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : Payment request: certificate blacklisted: " << qCert;
|
||||
return false;
|
||||
}
|
||||
const unsigned char *data = (const unsigned char *)certChain.certificate(i).data();
|
||||
X509 *cert = d2i_X509(nullptr, &data, certChain.certificate(i).size());
|
||||
if (cert)
|
||||
certs.push_back(cert);
|
||||
}
|
||||
if (certs.empty()) {
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : Payment request: empty certificate chain";
|
||||
return false;
|
||||
}
|
||||
|
||||
// The first cert is the signing cert, the rest are untrusted certs that chain
|
||||
// to a valid root authority. OpenSSL needs them separately.
|
||||
STACK_OF(X509)* chain =
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||
reinterpret_cast<STACK_OF(X509)*>(OPENSSL_sk_new_null());
|
||||
#else
|
||||
sk_X509_new_null();
|
||||
#endif
|
||||
for (int i = certs.size() - 1; i > 0; i--) {
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||
OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK*>(chain), reinterpret_cast<void*>(certs[i]));
|
||||
#else
|
||||
sk_X509_push(chain, certs[i]);
|
||||
#endif
|
||||
}
|
||||
X509* signing_cert = certs[0];
|
||||
|
||||
// Now create a "store context", which is a single use object for checking,
|
||||
// load the signing cert into it and verify.
|
||||
X509_STORE_CTX* store_ctx = X509_STORE_CTX_new();
|
||||
if (!store_ctx) {
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : Payment request: error creating X509_STORE_CTX";
|
||||
return false;
|
||||
}
|
||||
|
||||
char* website = NULL;
|
||||
bool fResult = true;
|
||||
try {
|
||||
if (!X509_STORE_CTX_init(store_ctx, certStore, signing_cert, chain)) {
|
||||
int error = X509_STORE_CTX_get_error(store_ctx);
|
||||
throw SSLVerifyError(X509_verify_cert_error_string(error));
|
||||
}
|
||||
|
||||
// Now do the verification!
|
||||
int result = X509_verify_cert(store_ctx);
|
||||
if (result != 1) {
|
||||
int error = X509_STORE_CTX_get_error(store_ctx);
|
||||
throw SSLVerifyError(X509_verify_cert_error_string(error));
|
||||
}
|
||||
X509_NAME* certname = X509_get_subject_name(signing_cert);
|
||||
|
||||
// Valid cert; check signature:
|
||||
payments::PaymentRequest rcopy(paymentRequest); // Copy
|
||||
rcopy.set_signature(std::string(""));
|
||||
std::string data_to_verify; // Everything but the signature
|
||||
rcopy.SerializeToString(&data_to_verify);
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||
EVP_MD_CTX *ctx = EVP_MD_CTX_new();
|
||||
if (!ctx) throw SSLVerifyError("Error allocating OpenSSL context.");
|
||||
#else
|
||||
EVP_MD_CTX _ctx;
|
||||
EVP_MD_CTX *ctx;
|
||||
ctx = &_ctx;
|
||||
EVP_MD_CTX_init(ctx);
|
||||
#endif
|
||||
EVP_PKEY* pubkey = X509_get_pubkey(signing_cert);
|
||||
if (!EVP_VerifyInit_ex(ctx, digestAlgorithm, NULL) ||
|
||||
!EVP_VerifyUpdate(ctx, data_to_verify.data(), data_to_verify.size()) ||
|
||||
!EVP_VerifyFinal(ctx, (const unsigned char*)paymentRequest.signature().data(), paymentRequest.signature().size(), pubkey)) {
|
||||
throw SSLVerifyError("Bad signature, invalid PaymentRequest.");
|
||||
}
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||
EVP_MD_CTX_free(ctx);
|
||||
#endif
|
||||
|
||||
// OpenSSL API for getting human printable strings from certs is baroque.
|
||||
int textlen = X509_NAME_get_text_by_NID(certname, NID_commonName, NULL, 0);
|
||||
website = new char[textlen + 1];
|
||||
if (X509_NAME_get_text_by_NID(certname, NID_commonName, website, textlen + 1) == textlen && textlen > 0) {
|
||||
merchant = website;
|
||||
} else {
|
||||
throw SSLVerifyError("Bad certificate, missing common name.");
|
||||
}
|
||||
// TODO: detect EV certificates and set merchant = business name instead of unfriendly NID_commonName ?
|
||||
} catch (SSLVerifyError& err) {
|
||||
fResult = false;
|
||||
qWarning() << "PaymentRequestPlus::getMerchant : SSL error: " << err.what();
|
||||
}
|
||||
|
||||
if (website)
|
||||
delete[] website;
|
||||
X509_STORE_CTX_free(store_ctx);
|
||||
for (unsigned int i = 0; i < certs.size(); i++)
|
||||
X509_free(certs[i]);
|
||||
|
||||
return fResult;
|
||||
}
|
||||
|
||||
QList<std::pair<CScript, CAmount> > PaymentRequestPlus::getPayTo() const
|
||||
{
|
||||
QList<std::pair<CScript, CAmount> > result;
|
||||
for (int i = 0; i < details.outputs_size(); i++) {
|
||||
const unsigned char* scriptStr = (const unsigned char*)details.outputs(i).script().data();
|
||||
CScript s(scriptStr, scriptStr + details.outputs(i).script().size());
|
||||
|
||||
result.append(make_pair(s, details.outputs(i).amount()));
|
||||
}
|
||||
return result;
|
||||
return QList<std::pair<CScript, CAmount> >();
|
||||
}
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
#ifndef BITCOIN_QT_PAYMENTREQUESTPLUS_H
|
||||
#define BITCOIN_QT_PAYMENTREQUESTPLUS_H
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
#include "paymentrequest.pb.h"
|
||||
#pragma GCC diagnostic pop
|
||||
#include "amount.h"
|
||||
#include "script/script.h"
|
||||
|
||||
#include "base58.h"
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include <openssl/x509.h>
|
||||
|
||||
@@ -19,11 +18,9 @@
|
||||
#include <QList>
|
||||
#include <QString>
|
||||
|
||||
//
|
||||
// Wraps dumb protocol buffer paymentRequest
|
||||
// with extra methods
|
||||
//
|
||||
|
||||
// BIP70 payment requests were removed from the wallet to eliminate the
|
||||
// obsolete protobuf dependency. The class stays as a compatibility shim for
|
||||
// serialized wallet/order-form code paths that check for payment requests.
|
||||
class PaymentRequestPlus
|
||||
{
|
||||
public:
|
||||
@@ -31,21 +28,10 @@ public:
|
||||
|
||||
bool parse(const QByteArray& data);
|
||||
bool SerializeToString(std::string* output) const;
|
||||
|
||||
bool IsInitialized() const;
|
||||
QString getPKIType() const;
|
||||
// Returns true if merchant's identity is authenticated, and
|
||||
// returns human-readable merchant identity in merchant
|
||||
bool getMerchant(X509_STORE* certStore, QString& merchant) const;
|
||||
|
||||
// Returns list of outputs, amount
|
||||
QList<std::pair<CScript, CAmount> > getPayTo() const;
|
||||
|
||||
const payments::PaymentDetails& getDetails() const { return details; }
|
||||
|
||||
private:
|
||||
payments::PaymentRequest paymentRequest;
|
||||
payments::PaymentDetails details;
|
||||
};
|
||||
|
||||
#endif // BITCOIN_QT_PAYMENTREQUESTPLUS_H
|
||||
|
||||
+23
-235
@@ -48,14 +48,7 @@ using namespace std;
|
||||
|
||||
const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds
|
||||
const QString BITCOIN_IPC_PREFIX("agrarian:");
|
||||
// BIP70 payment protocol messages
|
||||
const char* BIP70_MESSAGE_PAYMENTACK = "PaymentACK";
|
||||
const char* BIP70_MESSAGE_PAYMENTREQUEST = "PaymentRequest";
|
||||
// BIP71 payment protocol media types
|
||||
const char* BIP71_MIMETYPE_PAYMENT = "application/agrarian-payment";
|
||||
const char* BIP71_MIMETYPE_PAYMENTACK = "application/agrarian-paymentack";
|
||||
const char* BIP71_MIMETYPE_PAYMENTREQUEST = "application/agrarian-paymentrequest";
|
||||
// BIP70 max payment request size in bytes (DoS protection)
|
||||
// BIP70 max payment request size in bytes (kept for compatibility tests).
|
||||
const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE = 50000;
|
||||
|
||||
struct X509StoreDeleter {
|
||||
@@ -210,16 +203,7 @@ void PaymentServer::ipcParseCommandLine(int argc, char* argv[])
|
||||
}
|
||||
} else if (QFile::exists(arg)) // Filename
|
||||
{
|
||||
savedPaymentRequests.append(arg);
|
||||
|
||||
PaymentRequestPlus request;
|
||||
if (readPaymentRequestFromFile(arg, request)) {
|
||||
if (request.getDetails().network() == "main") {
|
||||
SelectParams(CBaseChainParams::MAIN);
|
||||
} else if (request.getDetails().network() == "test") {
|
||||
SelectParams(CBaseChainParams::TESTNET);
|
||||
}
|
||||
}
|
||||
qWarning() << "PaymentServer::ipcSendCommandLine : BIP70 payment request files are no longer supported: " << arg;
|
||||
} else {
|
||||
// Printing to debug.log is about the best we can do here, the
|
||||
// GUI hasn't started yet so we can't pop up a message box.
|
||||
@@ -271,10 +255,6 @@ PaymentServer::PaymentServer(QObject* parent, bool startLocalServer) : QObject(p
|
||||
netManager(0),
|
||||
optionsModel(0)
|
||||
{
|
||||
// Verify that the version of the library that we linked against is
|
||||
// compatible with the version of the headers we compiled against.
|
||||
GOOGLE_PROTOBUF_VERIFY_VERSION;
|
||||
|
||||
// Install global event filter to catch QFileOpenEvents
|
||||
// on Mac: sent when you click agrarian: links
|
||||
// other OSes: helpful when dealing with payment request files (in the future)
|
||||
@@ -295,14 +275,12 @@ PaymentServer::PaymentServer(QObject* parent, bool startLocalServer) : QObject(p
|
||||
tr("Cannot start agrarian: click-to-pay handler"));
|
||||
} else {
|
||||
connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection()));
|
||||
connect(this, SIGNAL(receivedPaymentACK(QString)), this, SLOT(handlePaymentACK(QString)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PaymentServer::~PaymentServer()
|
||||
{
|
||||
google::protobuf::ShutdownProtobufLibrary();
|
||||
}
|
||||
|
||||
//
|
||||
@@ -374,21 +352,10 @@ void PaymentServer::handleURIOrFile(const QString& s)
|
||||
QUrlQuery uri((QUrl(s)));
|
||||
if (uri.hasQueryItem("r")) // payment request URI
|
||||
{
|
||||
QByteArray temp;
|
||||
temp.append(uri.queryItemValue("r").toUtf8());
|
||||
QString decoded = QUrl::fromPercentEncoding(temp);
|
||||
QUrl fetchUrl(decoded, QUrl::StrictMode);
|
||||
|
||||
if (fetchUrl.isValid()) {
|
||||
qDebug() << "PaymentServer::handleURIOrFile : fetchRequest(" << fetchUrl << ")";
|
||||
fetchRequest(fetchUrl);
|
||||
} else {
|
||||
qWarning() << "PaymentServer::handleURIOrFile : Invalid URL: " << fetchUrl;
|
||||
qWarning() << "PaymentServer::handleURIOrFile : BIP70 payment request URLs are no longer supported.";
|
||||
emit message(tr("URI handling"),
|
||||
tr("Payment request fetch URL is invalid: %1").arg(fetchUrl.toString()),
|
||||
tr("BIP70 payment request URLs are no longer supported. Use a standard agrarian: URI with address and amount."),
|
||||
CClientUIInterface::ICON_WARNING);
|
||||
}
|
||||
|
||||
return;
|
||||
} else // normal URI
|
||||
{
|
||||
@@ -411,15 +378,10 @@ void PaymentServer::handleURIOrFile(const QString& s)
|
||||
|
||||
if (QFile::exists(s)) // payment request file
|
||||
{
|
||||
PaymentRequestPlus request;
|
||||
SendCoinsRecipient recipient;
|
||||
if (!readPaymentRequestFromFile(s, request)) {
|
||||
qWarning() << "PaymentServer::handleURIOrFile : BIP70 payment request files are no longer supported: " << s;
|
||||
emit message(tr("Payment request file handling"),
|
||||
tr("Payment request file cannot be read! This can be caused by an invalid payment request file."),
|
||||
tr("BIP70 payment request files are no longer supported. Use a standard agrarian: URI instead."),
|
||||
CClientUIInterface::ICON_WARNING);
|
||||
} else if (processPaymentRequest(request, recipient))
|
||||
emit receivedPaymentRequest(recipient);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -451,219 +413,45 @@ void PaymentServer::handleURIConnection()
|
||||
//
|
||||
bool PaymentServer::readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request)
|
||||
{
|
||||
QFile f(filename);
|
||||
if (!f.open(QIODevice::ReadOnly)) {
|
||||
qWarning() << QString("PaymentServer::%1: Failed to open %2").arg(__func__).arg(filename);
|
||||
Q_UNUSED(filename);
|
||||
Q_UNUSED(request);
|
||||
|
||||
qWarning() << "PaymentServer::readPaymentRequestFromFile : BIP70 payment request files are no longer supported.";
|
||||
return false;
|
||||
}
|
||||
|
||||
// BIP70 DoS protection
|
||||
if (f.size() > BIP70_MAX_PAYMENTREQUEST_SIZE) {
|
||||
qWarning() << QString("PaymentServer::%1: Payment request %2 is too large (%3 bytes, allowed %4 bytes).")
|
||||
.arg(__func__)
|
||||
.arg(filename)
|
||||
.arg(f.size())
|
||||
.arg(BIP70_MAX_PAYMENTREQUEST_SIZE);
|
||||
return false;
|
||||
}
|
||||
|
||||
QByteArray data = f.readAll();
|
||||
|
||||
return request.parse(data);
|
||||
}
|
||||
|
||||
bool PaymentServer::processPaymentRequest(PaymentRequestPlus& request, SendCoinsRecipient& recipient)
|
||||
{
|
||||
if (!optionsModel)
|
||||
return false;
|
||||
Q_UNUSED(request);
|
||||
Q_UNUSED(recipient);
|
||||
|
||||
if (request.IsInitialized()) {
|
||||
const payments::PaymentDetails& details = request.getDetails();
|
||||
|
||||
// Payment request network matches client network?
|
||||
if (details.network() != Params().NetworkIDString()) {
|
||||
emit message(tr("Payment request rejected"), tr("Payment request network doesn't match client network."),
|
||||
CClientUIInterface::MSG_ERROR);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Expired payment request?
|
||||
if (details.has_expires() && (int64_t)details.expires() < GetTime()) {
|
||||
emit message(tr("Payment request rejected"), tr("Payment request has expired."),
|
||||
CClientUIInterface::MSG_ERROR);
|
||||
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
emit message(tr("Payment request error"), tr("Payment request is not initialized."),
|
||||
CClientUIInterface::MSG_ERROR);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
recipient.paymentRequest = request;
|
||||
recipient.message = GUIUtil::HtmlEscape(request.getDetails().memo());
|
||||
|
||||
request.getMerchant(certStore.get(), recipient.authenticatedMerchant);
|
||||
|
||||
QList<std::pair<CScript, CAmount> > sendingTos = request.getPayTo();
|
||||
QStringList addresses;
|
||||
|
||||
for (const auto& sendingTo : sendingTos) {
|
||||
// Extract and check destination addresses
|
||||
CTxDestination dest;
|
||||
if (ExtractDestination(sendingTo.first, dest)) {
|
||||
// Append destination address
|
||||
addresses.append(QString::fromStdString(CBitcoinAddress(dest).ToString()));
|
||||
} else if (!recipient.authenticatedMerchant.isEmpty()) {
|
||||
// Insecure payments to custom agrarian addresses are not supported
|
||||
// (there is no good way to tell the user where they are paying in a way
|
||||
// they'd have a chance of understanding).
|
||||
emit message(tr("Payment request rejected"),
|
||||
tr("Unverified payment requests to custom payment scripts are unsupported."),
|
||||
CClientUIInterface::MSG_ERROR);
|
||||
tr("BIP70 payment requests are no longer supported."),
|
||||
CClientUIInterface::ICON_WARNING);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Extract and check amounts
|
||||
CTxOut txOut(sendingTo.second, sendingTo.first);
|
||||
if (txOut.IsDust(::minRelayTxFee)) {
|
||||
emit message(tr("Payment request error"), tr("Requested payment amount of %1 is too small (considered dust).").arg(BitcoinUnits::formatWithUnit(optionsModel->getDisplayUnit(), sendingTo.second)),
|
||||
CClientUIInterface::MSG_ERROR);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
recipient.amount += sendingTo.second;
|
||||
}
|
||||
// Store addresses and format them to fit nicely into the GUI
|
||||
recipient.address = addresses.join("<br />");
|
||||
|
||||
if (!recipient.authenticatedMerchant.isEmpty()) {
|
||||
qDebug() << "PaymentServer::processPaymentRequest : Secure payment request from " << recipient.authenticatedMerchant;
|
||||
} else {
|
||||
qDebug() << "PaymentServer::processPaymentRequest : Insecure payment request to " << addresses.join(", ");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void PaymentServer::fetchRequest(const QUrl& url)
|
||||
{
|
||||
QNetworkRequest netRequest;
|
||||
netRequest.setAttribute(QNetworkRequest::User, BIP70_MESSAGE_PAYMENTREQUEST);
|
||||
netRequest.setUrl(url);
|
||||
netRequest.setRawHeader("User-Agent", CLIENT_NAME.c_str());
|
||||
netRequest.setRawHeader("Accept", BIP71_MIMETYPE_PAYMENTREQUEST);
|
||||
netManager->get(netRequest);
|
||||
Q_UNUSED(url);
|
||||
|
||||
emit message(tr("Payment request rejected"),
|
||||
tr("BIP70 payment request URLs are no longer supported."),
|
||||
CClientUIInterface::ICON_WARNING);
|
||||
}
|
||||
|
||||
void PaymentServer::fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction)
|
||||
{
|
||||
const payments::PaymentDetails& details = recipient.paymentRequest.getDetails();
|
||||
if (!details.has_payment_url())
|
||||
return;
|
||||
|
||||
QNetworkRequest netRequest;
|
||||
netRequest.setAttribute(QNetworkRequest::User, BIP70_MESSAGE_PAYMENTACK);
|
||||
netRequest.setUrl(QString::fromStdString(details.payment_url()));
|
||||
netRequest.setHeader(QNetworkRequest::ContentTypeHeader, BIP71_MIMETYPE_PAYMENT);
|
||||
netRequest.setRawHeader("User-Agent", CLIENT_NAME.c_str());
|
||||
netRequest.setRawHeader("Accept", BIP71_MIMETYPE_PAYMENTACK);
|
||||
|
||||
payments::Payment payment;
|
||||
payment.set_merchant_data(details.merchant_data());
|
||||
payment.add_transactions(transaction.data(), transaction.size());
|
||||
|
||||
// Create a new refund address, or re-use:
|
||||
QString account = tr("Refund from %1").arg(recipient.authenticatedMerchant);
|
||||
std::string strAccount = account.toStdString();
|
||||
set<CTxDestination> refundAddresses = wallet->GetAccountAddresses(strAccount);
|
||||
if (!refundAddresses.empty()) {
|
||||
CScript s = GetScriptForDestination(*refundAddresses.begin());
|
||||
payments::Output* refund_to = payment.add_refund_to();
|
||||
refund_to->set_script(&s[0], s.size());
|
||||
} else {
|
||||
CPubKey newKey;
|
||||
if (wallet->GetKeyFromPool(newKey)) {
|
||||
CKeyID keyID = newKey.GetID();
|
||||
wallet->SetAddressBook(keyID, strAccount, "refund");
|
||||
|
||||
CScript s = GetScriptForDestination(keyID);
|
||||
payments::Output* refund_to = payment.add_refund_to();
|
||||
refund_to->set_script(&s[0], s.size());
|
||||
} else {
|
||||
// This should never happen, because sending coins should have
|
||||
// just unlocked the wallet and refilled the keypool.
|
||||
qWarning() << "PaymentServer::fetchPaymentACK : Error getting refund key, refund_to not set";
|
||||
}
|
||||
}
|
||||
|
||||
int length = payment.ByteSize();
|
||||
netRequest.setHeader(QNetworkRequest::ContentLengthHeader, length);
|
||||
QByteArray serData(length, '\0');
|
||||
if (payment.SerializeToArray(serData.data(), length)) {
|
||||
netManager->post(netRequest, serData);
|
||||
} else {
|
||||
// This should never happen, either.
|
||||
qWarning() << "PaymentServer::fetchPaymentACK : Error serializing payment message";
|
||||
}
|
||||
Q_UNUSED(wallet);
|
||||
Q_UNUSED(recipient);
|
||||
Q_UNUSED(transaction);
|
||||
}
|
||||
|
||||
void PaymentServer::netRequestFinished(QNetworkReply* reply)
|
||||
{
|
||||
reply->deleteLater();
|
||||
|
||||
// BIP70 DoS protection
|
||||
if (reply->size() > BIP70_MAX_PAYMENTREQUEST_SIZE) {
|
||||
QString msg = tr("Payment request %1 is too large (%2 bytes, allowed %3 bytes).")
|
||||
.arg(reply->request().url().toString())
|
||||
.arg(reply->size())
|
||||
.arg(BIP70_MAX_PAYMENTREQUEST_SIZE);
|
||||
|
||||
qWarning() << QString("PaymentServer::%1:").arg(__func__) << msg;
|
||||
emit message(tr("Payment request DoS protection"), msg, CClientUIInterface::MSG_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
QString msg = tr("Error communicating with %1: %2")
|
||||
.arg(reply->request().url().toString())
|
||||
.arg(reply->errorString());
|
||||
|
||||
qWarning() << "PaymentServer::netRequestFinished: " << msg;
|
||||
emit message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
QByteArray data = reply->readAll();
|
||||
|
||||
QString requestType = reply->request().attribute(QNetworkRequest::User).toString();
|
||||
if (requestType == BIP70_MESSAGE_PAYMENTREQUEST) {
|
||||
PaymentRequestPlus request;
|
||||
SendCoinsRecipient recipient;
|
||||
if (!request.parse(data)) {
|
||||
qWarning() << "PaymentServer::netRequestFinished : Error parsing payment request";
|
||||
emit message(tr("Payment request error"),
|
||||
tr("Payment request cannot be parsed!"),
|
||||
CClientUIInterface::MSG_ERROR);
|
||||
} else if (processPaymentRequest(request, recipient))
|
||||
emit receivedPaymentRequest(recipient);
|
||||
|
||||
return;
|
||||
} else if (requestType == BIP70_MESSAGE_PAYMENTACK) {
|
||||
payments::PaymentACK paymentACK;
|
||||
if (!paymentACK.ParseFromArray(data.data(), data.size())) {
|
||||
QString msg = tr("Bad response from server %1")
|
||||
.arg(reply->request().url().toString());
|
||||
|
||||
qWarning() << "PaymentServer::netRequestFinished : " << msg;
|
||||
emit message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR);
|
||||
} else {
|
||||
emit receivedPaymentACK(GUIUtil::HtmlEscape(paymentACK.memo()));
|
||||
}
|
||||
}
|
||||
qWarning() << "PaymentServer::netRequestFinished : Ignoring unexpected network reply after BIP70 removal.";
|
||||
}
|
||||
|
||||
void PaymentServer::reportSslErrors(QNetworkReply* reply, const QList<QSslError>& errs)
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "paymentservertests.h"
|
||||
|
||||
#include "optionsmodel.h"
|
||||
#include "paymentrequestdata.h"
|
||||
|
||||
#include "random.h"
|
||||
#include "util.h"
|
||||
@@ -65,50 +64,14 @@ void PaymentServerTests::paymentServerTests()
|
||||
SelectParams(CBaseChainParams::MAIN);
|
||||
OptionsModel optionsModel;
|
||||
PaymentServer* server = new PaymentServer(NULL, false);
|
||||
X509_STORE* caStore = X509_STORE_new();
|
||||
X509_STORE_add_cert(caStore, parse_b64der_cert(caCert_BASE64));
|
||||
PaymentServer::LoadRootCAs(caStore);
|
||||
server->setOptionsModel(&optionsModel);
|
||||
server->uiReady();
|
||||
|
||||
// Now feed PaymentRequests to server, and observe signals it produces:
|
||||
std::vector<unsigned char> data = DecodeBase64(paymentrequest1_BASE64);
|
||||
// BIP70 payment requests are intentionally unsupported in Agrarian 2.0.
|
||||
// Standard agrarian: URI handling remains covered by uritests.
|
||||
std::vector<unsigned char> data(128, 0);
|
||||
SendCoinsRecipient r = handleRequest(server, data);
|
||||
QString merchant;
|
||||
r.paymentRequest.getMerchant(caStore, merchant);
|
||||
QCOMPARE(merchant, QString("testmerchant.org"));
|
||||
|
||||
// Version of the above, with an expired certificate:
|
||||
data = DecodeBase64(paymentrequest2_BASE64);
|
||||
r = handleRequest(server, data);
|
||||
r.paymentRequest.getMerchant(caStore, merchant);
|
||||
QCOMPARE(merchant, QString(""));
|
||||
|
||||
// Long certificate chain:
|
||||
data = DecodeBase64(paymentrequest3_BASE64);
|
||||
r = handleRequest(server, data);
|
||||
r.paymentRequest.getMerchant(caStore, merchant);
|
||||
QCOMPARE(merchant, QString("testmerchant8.org"));
|
||||
|
||||
// Long certificate chain, with an expired certificate in the middle:
|
||||
data = DecodeBase64(paymentrequest4_BASE64);
|
||||
r = handleRequest(server, data);
|
||||
r.paymentRequest.getMerchant(caStore, merchant);
|
||||
QCOMPARE(merchant, QString(""));
|
||||
|
||||
// Validly signed, but by a CA not in our root CA list:
|
||||
data = DecodeBase64(paymentrequest5_BASE64);
|
||||
r = handleRequest(server, data);
|
||||
r.paymentRequest.getMerchant(caStore, merchant);
|
||||
QCOMPARE(merchant, QString(""));
|
||||
|
||||
// Try again with no root CA's, verifiedMerchant should be empty:
|
||||
caStore = X509_STORE_new();
|
||||
PaymentServer::LoadRootCAs(caStore);
|
||||
data = DecodeBase64(paymentrequest1_BASE64);
|
||||
r = handleRequest(server, data);
|
||||
r.paymentRequest.getMerchant(caStore, merchant);
|
||||
QCOMPARE(merchant, QString(""));
|
||||
QCOMPARE(r.paymentRequest.IsInitialized(), false);
|
||||
|
||||
unsigned long lDoSProtectionTrigger = (unsigned long) BIP70_MAX_PAYMENTREQUEST_SIZE + 1;
|
||||
std::string randData(lDoSProtectionTrigger, '\0');
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
#include "bitcoinunits.h"
|
||||
#include "guiutil.h"
|
||||
#include "paymentserver.h"
|
||||
#include "transactionrecord.h"
|
||||
|
||||
#include "base58.h"
|
||||
#include "db.h"
|
||||
#include "main.h"
|
||||
#include "script/script.h"
|
||||
#include "swifttx.h"
|
||||
#include "timedata.h"
|
||||
#include "guiinterface.h"
|
||||
#include "util.h"
|
||||
@@ -258,19 +258,6 @@ QString TransactionDesc::toHTML(CWallet* wallet, CWalletTx& wtx, TransactionReco
|
||||
if (r.first == "Message")
|
||||
strHTML += "<br><b>" + tr("Message") + ":</b><br>" + GUIUtil::HtmlEscape(r.second, true) + "<br>";
|
||||
|
||||
//
|
||||
// PaymentRequest info:
|
||||
//
|
||||
for (const auto& r : wtx.vOrderForm) {
|
||||
if (r.first == "PaymentRequest") {
|
||||
PaymentRequestPlus req;
|
||||
req.parse(QByteArray::fromRawData(r.second.data(), r.second.size()));
|
||||
QString merchant;
|
||||
if (req.getMerchant(PaymentServer::getCertStore(), merchant))
|
||||
strHTML += "<b>" + tr("Merchant") + ":</b> " + GUIUtil::HtmlEscape(merchant) + "<br>";
|
||||
}
|
||||
}
|
||||
|
||||
if (wtx.IsCoinBase()) {
|
||||
quint32 numBlocksToMaturity = Params().COINBASE_MATURITY() + 1;
|
||||
strHTML += "<br>" + tr("Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to \"not accepted\" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours.").arg(QString::number(numBlocksToMaturity)) + "<br>";
|
||||
|
||||
+2
-29
@@ -284,22 +284,6 @@ WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransact
|
||||
|
||||
// Pre-check input data for validity
|
||||
foreach (const SendCoinsRecipient& rcp, recipients) {
|
||||
if (rcp.paymentRequest.IsInitialized()) { // PaymentRequest...
|
||||
CAmount subtotal = 0;
|
||||
const payments::PaymentDetails& details = rcp.paymentRequest.getDetails();
|
||||
for (int i = 0; i < details.outputs_size(); i++) {
|
||||
const payments::Output& out = details.outputs(i);
|
||||
if (out.amount() <= 0) continue;
|
||||
subtotal += out.amount();
|
||||
const unsigned char* scriptStr = (const unsigned char*)out.script().data();
|
||||
CScript scriptPubKey(scriptStr, scriptStr + out.script().size());
|
||||
vecSend.push_back(std::pair<CScript, CAmount>(scriptPubKey, out.amount()));
|
||||
}
|
||||
if (subtotal <= 0) {
|
||||
return InvalidAmount;
|
||||
}
|
||||
total += subtotal;
|
||||
} else { // User-entered agrarian address / amount:
|
||||
if (!validateAddress(rcp.address)) {
|
||||
return InvalidAddress;
|
||||
}
|
||||
@@ -314,7 +298,6 @@ WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransact
|
||||
|
||||
total += rcp.amount;
|
||||
}
|
||||
}
|
||||
if (setAddress.size() != nAddresses) {
|
||||
return DuplicateAddress;
|
||||
}
|
||||
@@ -381,15 +364,9 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(WalletModelTransaction& tran
|
||||
CWalletTx* newTx = transaction.getTransaction();
|
||||
QList<SendCoinsRecipient> recipients = transaction.getRecipients();
|
||||
|
||||
// Store PaymentRequests in wtx.vOrderForm in wallet.
|
||||
// Store message from normal agrarian:URI (agrarian:XyZ...?message=example).
|
||||
foreach (const SendCoinsRecipient& rcp, recipients) {
|
||||
if (rcp.paymentRequest.IsInitialized()) {
|
||||
std::string key("PaymentRequest");
|
||||
std::string value;
|
||||
rcp.paymentRequest.SerializeToString(&value);
|
||||
newTx->vOrderForm.push_back(make_pair(key, value));
|
||||
} else if (!rcp.message.isEmpty()) // Message from normal agrarian:URI (agrarian:XyZ...?message=example)
|
||||
{
|
||||
if (!rcp.message.isEmpty()) {
|
||||
newTx->vOrderForm.push_back(make_pair("Message", rcp.message.toStdString()));
|
||||
}
|
||||
}
|
||||
@@ -410,15 +387,11 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(WalletModelTransaction& tran
|
||||
// Add addresses / update labels that we've sent to to the address book,
|
||||
// and emit coinsSent signal for each recipient
|
||||
foreach (const SendCoinsRecipient& rcp, transaction.getRecipients()) {
|
||||
// Don't touch the address book when we have a payment request
|
||||
if (!rcp.paymentRequest.IsInitialized()) {
|
||||
|
||||
std::string strAddress = rcp.address.toStdString();
|
||||
CTxDestination dest = CBitcoinAddress(strAddress).Get();
|
||||
std::string strLabel = rcp.label.toStdString();
|
||||
|
||||
updateAddressBookLabels(dest, strLabel, "send");
|
||||
}
|
||||
emit coinsSent(wallet, rcp, transaction_array);
|
||||
}
|
||||
checkBalanceChanged(); // update balance immediately, otherwise there could be a short noticeable delay until pollBalanceChanged hits
|
||||
|
||||
@@ -54,12 +54,11 @@ public:
|
||||
AvailableCoinsType inputType;
|
||||
bool useSwiftTX;
|
||||
CAmount amount;
|
||||
// If from a payment request, this is used for storing the memo
|
||||
// Message from a standard agrarian: URI.
|
||||
QString message;
|
||||
|
||||
// If from a payment request, paymentRequest.IsInitialized() will be true
|
||||
// Obsolete BIP70 compatibility field. The shim is intentionally never initialized.
|
||||
PaymentRequestPlus paymentRequest;
|
||||
// Empty if no authentication or invalid signature/cert/etc.
|
||||
QString authenticatedMerchant;
|
||||
|
||||
static const int CURRENT_VERSION = 1;
|
||||
@@ -74,8 +73,6 @@ public:
|
||||
std::string sLabel = label.toStdString();
|
||||
std::string sMessage = message.toStdString();
|
||||
std::string sPaymentRequest;
|
||||
if (!ser_action.ForRead() && paymentRequest.IsInitialized())
|
||||
paymentRequest.SerializeToString(&sPaymentRequest);
|
||||
std::string sAuthenticatedMerchant = authenticatedMerchant.toStdString();
|
||||
|
||||
READWRITE(this->nVersion);
|
||||
@@ -91,8 +88,6 @@ public:
|
||||
address = QString::fromStdString(sAddress);
|
||||
label = QString::fromStdString(sLabel);
|
||||
message = QString::fromStdString(sMessage);
|
||||
if (!sPaymentRequest.empty())
|
||||
paymentRequest.parse(QByteArray::fromRawData(sPaymentRequest.data(), sPaymentRequest.size()));
|
||||
authenticatedMerchant = QString::fromStdString(sAuthenticatedMerchant);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user