Remove obsolete protobuf payment requests

This commit is contained in:
root
2026-05-03 05:30:25 +00:00
parent acf8b3ccb6
commit 9852dad996
34 changed files with 196 additions and 1288 deletions
+1 -4
View File
@@ -15,7 +15,7 @@
@SET_MAKE@ @SET_MAKE@
# Copyright (c) 2013-2016 The Bitcoin Core developers # 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 # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -427,9 +427,6 @@ PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PORT = @PORT@ PORT = @PORT@
PROTOBUF_CFLAGS = @PROTOBUF_CFLAGS@
PROTOBUF_LIBS = @PROTOBUF_LIBS@
PROTOC = @PROTOC@
PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CC = @PTHREAD_CC@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@ PTHREAD_LIBS = @PTHREAD_LIBS@
Vendored
+39 -365
View File
@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # 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>. # Report bugs to <www.agrarian.org>.
# #
@@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='Agrarian Core' PACKAGE_NAME='Agrarian Core'
PACKAGE_TARNAME='agrarian' PACKAGE_TARNAME='agrarian'
PACKAGE_VERSION='1.0.0' PACKAGE_VERSION='2.0.0'
PACKAGE_STRING='Agrarian Core 1.0.0' PACKAGE_STRING='Agrarian Core 2.0.0'
PACKAGE_BUGREPORT='www.agrarian.org' PACKAGE_BUGREPORT='www.agrarian.org'
PACKAGE_URL='' PACKAGE_URL=''
@@ -751,7 +751,6 @@ BUILD_BITCOIN_UTILS_FALSE
BUILD_BITCOIN_UTILS_TRUE BUILD_BITCOIN_UTILS_TRUE
BUILD_BITCOIND_FALSE BUILD_BITCOIND_FALSE
BUILD_BITCOIND_TRUE BUILD_BITCOIND_TRUE
PROTOC
EMBEDDED_UNIVALUE_FALSE EMBEDDED_UNIVALUE_FALSE
EMBEDDED_UNIVALUE_TRUE EMBEDDED_UNIVALUE_TRUE
UNIVALUE_LIBS UNIVALUE_LIBS
@@ -764,8 +763,6 @@ EVENT_LIBS
EVENT_CFLAGS EVENT_CFLAGS
QR_LIBS QR_LIBS
QR_CFLAGS QR_CFLAGS
PROTOBUF_LIBS
PROTOBUF_CFLAGS
CRYPTO_LIBS CRYPTO_LIBS
CRYPTO_CFLAGS CRYPTO_CFLAGS
SSL_LIBS SSL_LIBS
@@ -1033,7 +1030,6 @@ enable_asm
with_system_univalue with_system_univalue
enable_zmq enable_zmq
with_zerocoin_bignum with_zerocoin_bignum
with_protoc_bindir
enable_man enable_man
enable_debug enable_debug
with_sanitizers with_sanitizers
@@ -1117,8 +1113,6 @@ SSL_CFLAGS
SSL_LIBS SSL_LIBS
CRYPTO_CFLAGS CRYPTO_CFLAGS
CRYPTO_LIBS CRYPTO_LIBS
PROTOBUF_CFLAGS
PROTOBUF_LIBS
QR_CFLAGS QR_CFLAGS
QR_LIBS QR_LIBS
EVENT_CFLAGS 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. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF 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]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1749,7 +1743,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in 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 esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -1819,8 +1813,6 @@ Optional Packages:
--with-system-univalue Build with system UniValue (default is no) --with-system-univalue Build with system UniValue (default is no)
--with-zerocoin-bignum=gmp|openssl|auto --with-zerocoin-bignum=gmp|openssl|auto
Specify Bignum Implementation. Default is 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-sanitizers comma separated list of extra sanitizers to build
with (default is none enabled) with (default is none enabled)
--with-utils build agrarian-cli agrarian-tx (default=yes) --with-utils build agrarian-cli agrarian-tx (default=yes)
@@ -1962,10 +1954,6 @@ Some influential environment variables:
CRYPTO_CFLAGS CRYPTO_CFLAGS
C compiler flags for CRYPTO, overriding pkg-config C compiler flags for CRYPTO, overriding pkg-config
CRYPTO_LIBS linker 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_CFLAGS C compiler flags for QR, overriding pkg-config
QR_LIBS linker flags for QR, overriding pkg-config QR_LIBS linker flags for QR, overriding pkg-config
EVENT_CFLAGS EVENT_CFLAGS
@@ -2049,7 +2037,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
Agrarian Core configure 1.0.0 Agrarian Core configure 2.0.0
generated by GNU Autoconf 2.71 generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc. Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2596,7 +2584,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. 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 generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw $ $0$ac_configure_args_raw
@@ -4179,7 +4167,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='agrarian' PACKAGE='agrarian'
VERSION='1.0.0' VERSION='2.0.0'
# Some tools Automake needs. # Some tools Automake needs.
@@ -19888,14 +19876,6 @@ else $as_nop
fi 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. # Check whether --enable-man was given.
if test ${enable_man+y} if test ${enable_man+y}
then : then :
@@ -29340,7 +29320,15 @@ printf "%s\n" "#define QT_STATICPLUGIN 1" >>confdefs.h
if test "x$TARGET_OS" = xlinux; then if test "x$TARGET_OS" = xlinux; then
QT_LIBS="-lQt6XcbQpa -lQt6InputSupport -lQt6FbSupport -lQt6DeviceDiscoverySupport $QT_LIBS" QT_LIBS="-lQt6XcbQpa -lQt6InputSupport -lQt6FbSupport -lQt6DeviceDiscoverySupport $QT_LIBS"
if test "x$PKG_CONFIG" != x; then 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" QT_LIBS="$QT_LIBS $QT6_XCB_LIBS"
fi fi
fi fi
@@ -31054,8 +31042,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
fi fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for static Qt plugins: -lqminimal" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for optional static Qt plugins: -lqminimal" >&5
printf %s "checking for static Qt plugins: -lqminimal... " >&6; } printf %s "checking for optional static Qt plugins: -lqminimal... " >&6; }
CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS" CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS"
LIBS="-lqminimal $QT_LIBS $LIBS" LIBS="-lqminimal $QT_LIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -31075,33 +31063,23 @@ _ACEOF
if ac_fn_cxx_try_link "$LINENO" if ac_fn_cxx_try_link "$LINENO"
then : then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 { 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 else $as_nop
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }; 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
fi fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \ rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext conftest$ac_exeext conftest.$ac_ext
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS" 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 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\n" "$as_me:${as_lineno-$LINENO}: checking for optional static Qt plugins: -lqopensslbackend -lssl -lcrypto" >&5
printf %s "checking for static Qt plugins: -lqopensslbackend -lssl -lcrypto... " >&6; } printf %s "checking for optional static Qt plugins: -lqopensslbackend -lssl -lcrypto... " >&6; }
CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS" CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS"
LIBS="-lqopensslbackend -lssl -lcrypto $QT_LIBS $LIBS" LIBS="-lqopensslbackend -lssl -lcrypto $QT_LIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -31121,29 +31099,19 @@ _ACEOF
if ac_fn_cxx_try_link "$LINENO" if ac_fn_cxx_try_link "$LINENO"
then : then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 { 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 else $as_nop
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }; 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
fi fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \ rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext conftest$ac_exeext conftest.$ac_ext
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS" LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
printf "%s\n" "#define QT_TLS_OPENSSL 1" >>confdefs.h
fi fi
if test "x$TARGET_OS" = xwindows; then if test "x$TARGET_OS" = xwindows; then
@@ -34257,107 +34225,6 @@ else
printf "%s\n" "yes" >&6; } printf "%s\n" "yes" >&6; }
fi 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$use_qr != xno; then
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != 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 esac
fi 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$use_qr != xno; then
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != 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\n" "$as_me:${as_lineno-$LINENO}: checking whether to build agrariand" >&5
printf %s "checking whether to build agrariand... " >&6; } printf %s "checking whether to build agrariand... " >&6; }
if test x$build_bitcoind = xyes; then 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 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 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 CLIENT_VERSION_MINOR=0
@@ -36025,8 +35700,7 @@ CLIENT_VERSION_BUILD=0
CLIENT_VERSION_IS_RELEASE=true 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 # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" 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 generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES 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 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped' ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\ 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, configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"
-7
View File
@@ -212,8 +212,6 @@ AC_ARG_WITH([zerocoin-bignum],
[req_bignum=$withval], [req_bignum=$withval],
[req_bignum=auto]) [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, AC_ARG_ENABLE(man,
[AS_HELP_STRING([--disable-man], [AS_HELP_STRING([--disable-man],
[do not install man pages (default is to install)])],, [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([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto 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 if test x$use_qr != xno; then
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])]) BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
fi fi
@@ -1087,7 +1084,6 @@ else
esac esac
fi 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 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_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, 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_CFLAGS)
AC_SUBST(UNIVALUE_LIBS) AC_SUBST(UNIVALUE_LIBS)
BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
AC_MSG_CHECKING([whether to build agrariand]) AC_MSG_CHECKING([whether to build agrariand])
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes]) AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
AC_MSG_RESULT($build_bitcoind) AC_MSG_RESULT($build_bitcoind)
@@ -1401,7 +1395,6 @@ AC_SUBST(SSL_LIBS)
AC_SUBST(EVENT_LIBS) AC_SUBST(EVENT_LIBS)
AC_SUBST(EVENT_PTHREADS_LIBS) AC_SUBST(EVENT_PTHREADS_LIBS)
AC_SUBST(ZMQ_LIBS) AC_SUBST(ZMQ_LIBS)
AC_SUBST(PROTOBUF_LIBS)
AC_SUBST(QR_LIBS) AC_SUBST(QR_LIBS)
AC_SUBST(USE_NUM_GMP) AC_SUBST(USE_NUM_GMP)
AC_SUBST(USE_NUM_OPENSSL) AC_SUBST(USE_NUM_OPENSSL)
-2
View File
@@ -188,7 +188,6 @@ HEADERS += src/activemasternode.h \
src/qt/optionsdialog.h \ src/qt/optionsdialog.h \
src/qt/optionsmodel.h \ src/qt/optionsmodel.h \
src/qt/overviewpage.h \ src/qt/overviewpage.h \
src/qt/paymentrequest.pb.h \
src/qt/paymentrequestplus.h \ src/qt/paymentrequestplus.h \
src/qt/paymentserver.h \ src/qt/paymentserver.h \
src/qt/peertablemodel.h \ src/qt/peertablemodel.h \
@@ -481,7 +480,6 @@ SOURCES += src/activemasternode.cpp \
src/qt/optionsdialog.cpp \ src/qt/optionsdialog.cpp \
src/qt/optionsmodel.cpp \ src/qt/optionsmodel.cpp \
src/qt/overviewpage.cpp \ src/qt/overviewpage.cpp \
src/qt/paymentrequest.pb.cc \
src/qt/paymentrequestplus.cpp \ src/qt/paymentrequestplus.cpp \
src/qt/paymentserver.cpp \ src/qt/paymentserver.cpp \
src/qt/peertablemodel.cpp \ src/qt/peertablemodel.cpp \
+1 -54
View File
@@ -7,8 +7,6 @@ BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
HOST="${HOST:-$BUILD_HOST}" HOST="${HOST:-$BUILD_HOST}"
PREFIX="$ROOT/depends/$HOST" PREFIX="$ROOT/depends/$HOST"
BASE_CONFIG="$PREFIX/share/config.site" BASE_CONFIG="$PREFIX/share/config.site"
NATIVE_BIN="$ROOT/depends/build/$BUILD_HOST/bin"
PROTOC="$NATIVE_BIN/protoc"
require_cmd() { require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then if ! command -v "$1" >/dev/null 2>&1; then
@@ -94,54 +92,6 @@ EOF
echo " $QT_SYSTEM_PKG_CONFIG_LIBDIR" 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() { reset_configure_state() {
rm -f config.cache config.log config.status libtool rm -f config.cache config.log config.status libtool
@@ -170,7 +120,6 @@ else
fi fi
reset_qt_configure_state reset_qt_configure_state
remove_invalid_native_protobuf_cache
echo "Building native depends for $HOST..." echo "Building native depends for $HOST..."
# The legacy depends system mutates depends/$HOST while configuring each # 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 clean
make -C depends HOST="$HOST" NO_QT=0 -j1 make -C depends HOST="$HOST" NO_QT=0 -j1
require_path "$BASE_CONFIG" require_path "$BASE_CONFIG"
ensure_native_protoc
reset_configure_state reset_configure_state
./autogen.sh ./autogen.sh
@@ -191,8 +139,7 @@ QT_SYSTEM_PKG_CONFIG_LIBDIR="$QT_SYSTEM_PKG_CONFIG_LIBDIR" CONFIG_SITE="$BASE_CO
--disable-tests \ --disable-tests \
--disable-bench \ --disable-bench \
--with-gui=qt6 \ --with-gui=qt6 \
--with-qtdbus=no \ --with-qtdbus=no
--with-protoc-bindir="$NATIVE_BIN"
echo "Cleaning stale target objects before compiling..." echo "Cleaning stale target objects before compiling..."
make clean make clean
+1 -23
View File
@@ -7,9 +7,6 @@ HOST="${HOST:-x86_64-w64-mingw32}"
BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}" BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
PREFIX="$ROOT/depends/$HOST" PREFIX="$ROOT/depends/$HOST"
NATIVE_BIN="$ROOT/depends/build/$BUILD_HOST/bin" 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() { require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then if ! command -v "$1" >/dev/null 2>&1; then
@@ -51,20 +48,6 @@ EOF
fi 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() { ensure_native_tools() {
mkdir -p "$NATIVE_BIN" mkdir -p "$NATIVE_BIN"
@@ -77,10 +60,6 @@ ensure_native_tools() {
if [[ ! -x "$NATIVE_BIN/lupdate" ]] && command -v lupdate >/dev/null 2>&1; then if [[ ! -x "$NATIVE_BIN/lupdate" ]] && command -v lupdate >/dev/null 2>&1; then
cp "$(command -v lupdate)" "$NATIVE_BIN/lupdate" cp "$(command -v lupdate)" "$NATIVE_BIN/lupdate"
fi fi
if [[ ! -x "$NATIVE_BIN/protoc" ]] || ! "$NATIVE_BIN/protoc" --version | grep -q "libprotoc $PROTOBUF_VERSION"; then
build_native_protoc
fi
} }
cd "$ROOT" cd "$ROOT"
@@ -130,8 +109,7 @@ CONFIG_SITE="$PREFIX/share/config.site" ./configure \
--with-qt-libdir="$PREFIX/lib" \ --with-qt-libdir="$PREFIX/lib" \
--with-qt-plugindir="$PREFIX/plugins" \ --with-qt-plugindir="$PREFIX/plugins" \
--with-qt-translationdir="$PREFIX/translations" \ --with-qt-translationdir="$PREFIX/translations" \
--with-qt-bindir="$NATIVE_BIN" \ --with-qt-bindir="$NATIVE_BIN"
--with-protoc-bindir="$NATIVE_BIN"
echo "Cleaning stale target objects before compiling..." echo "Cleaning stale target objects before compiling..."
make clean make clean
-1
View File
@@ -23,7 +23,6 @@ Build-Depends: debhelper,
xvfb, xvfb,
qtbase5-dev, qttools5-dev-tools, qttools5-dev, qtbase5-dev, qttools5-dev-tools, qttools5-dev,
libqrencode-dev, libqrencode-dev,
libprotobuf-dev, protobuf-compiler,
python, python,
libzmq3-dev, libzmq3-dev,
dh-systemd dh-systemd
-1
View File
@@ -71,7 +71,6 @@ BuildRequires: qt5-qtbase-devel
# for /usr/bin/lrelease-qt5 # for /usr/bin/lrelease-qt5
BuildRequires: qt5-linguist BuildRequires: qt5-linguist
%endif %endif
BuildRequires: protobuf-devel
BuildRequires: qrencode-devel BuildRequires: qrencode-devel
BuildRequires: %{_bindir}/desktop-file-validate BuildRequires: %{_bindir}/desktop-file-validate
# for icon generation from SVG # for icon generation from SVG
-26
View File
@@ -114,31 +114,6 @@ ifneq ($(native_packages),)
echo " - $$p: $$f"; \ echo " - $$p: $$f"; \
tar --no-same-owner -xzf "$$f" -C "$(build_prefix)"; \ tar --no-same-owner -xzf "$$f" -C "$(build_prefix)"; \
done 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 endif
@echo "== Writing config.site: $(host_prefix)/share/config.site" @echo "== Writing config.site: $(host_prefix)/share/config.site"
@mkdir -p "$(host_prefix)/share" @mkdir -p "$(host_prefix)/share"
@@ -154,7 +129,6 @@ endif
echo "with_qt_plugindir='$(host_prefix)/plugins'"; \ echo "with_qt_plugindir='$(host_prefix)/plugins'"; \
echo "with_qt_translationdir='$(host_prefix)/translations'"; \ echo "with_qt_translationdir='$(host_prefix)/translations'"; \
echo "with_qt_bindir='$(host_prefix)/bin'"; \ echo "with_qt_bindir='$(host_prefix)/bin'"; \
echo "with_protoc_bindir='$(build_prefix)/bin'"; \
echo "CPPFLAGS='-I$(host_prefix)/include'"; \ echo "CPPFLAGS='-I$(host_prefix)/include'"; \
echo "LDFLAGS='-L$(host_prefix)/lib'"; \ echo "LDFLAGS='-L$(host_prefix)/lib'"; \
echo "BOOST_CPPFLAGS='-I$(host_prefix)/include'"; \ echo "BOOST_CPPFLAGS='-I$(host_prefix)/include'"; \
+1 -2
View File
@@ -38,8 +38,7 @@ points are the helpers in `contrib/`:
- `contrib/build-win64-wallet.sh` - `contrib/build-win64-wallet.sh`
- `contrib/agrarian-build-menu.sh` - `contrib/agrarian-build-menu.sh`
Those helpers set the correct Qt, host-tool, and protobuf paths around the Those helpers set the correct Qt and host-tool paths around the depends prefix.
depends prefix.
### Install the required dependencies: Ubuntu & Debian ### Install the required dependencies: Ubuntu & Debian
-5
View File
@@ -16,11 +16,6 @@ fi
if test -z $with_qt_bindir && test -z "@no_qt@"; then if test -z $with_qt_bindir && test -z "@no_qt@"; then
with_qt_bindir=$depends_prefix/native/bin with_qt_bindir=$depends_prefix/native/bin
fi 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 if test -z $enable_wallet && test -n "@no_wallet@"; then
enable_wallet=no enable_wallet=no
fi fi
-1
View File
@@ -201,7 +201,6 @@ $($(1)_postprocessed): | $($(1)_staged)
$(AT)touch $$@ $(AT)touch $$@
$($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed) $($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed)
$(AT)echo Caching $(1)... $(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)cd $$($(1)_staging_prefix_dir); find . | sort | tar --no-recursion -czf $$($(1)_staging_dir)/$$(@F) -T -
$(AT)mkdir -p $$(@D) $(AT)mkdir -p $$(@D)
$(AT)rm -rf $$(@D) && mkdir -p $$(@D) $(AT)rm -rf $$(@D) && mkdir -p $$(@D)
-29
View File
@@ -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
+2 -2
View File
@@ -22,8 +22,8 @@ USE_ZMQ ?= 0
USE_UPNP ?= 1 USE_UPNP ?= 1
# ---- Group definitions (as you had them) ---- # ---- Group definitions (as you had them) ----
qt_native_packages := native_protobuf qt_native_packages :=
qt_packages := qrencode protobuf zlib qt_packages := qrencode zlib
qt_linux_packages := expat freetype fontconfig qt qt_linux_packages := expat freetype fontconfig qt
qt_darwin_packages := qt qt_darwin_packages := qt
-34
View File
@@ -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
View File
@@ -53,9 +53,9 @@ instead of being required as Ubuntu system development packages.
The Linux Qt wallet option also installs Ubuntu desktop development headers The Linux Qt wallet option also installs Ubuntu desktop development headers
needed by Qt's xcb platform plugin, including fontconfig, freetype, xcb, and 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 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 `depends/` for the Linux Qt/font stack. Protobuf is not required because
`protoc` built by `depends/`, so a system protobuf compiler is not required. It obsolete BIP70 payment request support was removed. The helper also clears
also clears stale Qt work directories before rebuilding, because failed CMake stale Qt work directories before rebuilding, because failed CMake
feature checks can otherwise be cached between attempts. feature checks can otherwise be cached between attempts.
Defaults Defaults
+1 -1
View File
@@ -24,7 +24,7 @@ from Ubuntu. See `doc/modernization.md`.
Dependencies 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. See [dependencies.md](dependencies.md) for a complete overview.
+3 -4
View File
@@ -27,8 +27,8 @@ STANDARD BUILD WITH DEPENDS
make install (optional) make install (optional)
The native depends wallet path currently builds Qt 6.8.3, OpenSSL 3.5.6, 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 Boost 1.91.0, Expat 2.8.0, FreeType 2.14.3, Berkeley DB, and supporting
supporting libraries. libraries.
For a daemon-only build: For a daemon-only build:
@@ -45,8 +45,7 @@ data structures) - libevent : Networking (async networking) - libgmp :
Bignum arithmetic Bignum arithmetic
Optional: - miniupnpc : UPnP support - libdb4.8 : Berkeley DB (wallet Optional: - miniupnpc : UPnP support - libdb4.8 : Berkeley DB (wallet
builds only) - qt : GUI support - protobuf : GUI payment protocol - builds only) - qt : GUI support - libqrencode: QR code support - univalue : JSON parsing (bundled by
libqrencode: QR code support - univalue : JSON parsing (bundled by
default) - libzmq3 : ZMQ notifications (>= 4.0.0) default) - libzmq3 : ZMQ notifications (>= 4.0.0)
See dependencies.md for version details. See dependencies.md for version details.
+1 -1
View File
@@ -60,7 +60,7 @@ Why the helpers exist
The wallet build is sensitive to tool version mismatches: The wallet build is sensitive to tool version mismatches:
* Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, Expat, * 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 * Windows cross-target wallets use the deterministic depends Qt6 path and
matching Qt host tools staged by depends. matching Qt host tools staged by depends.
+9 -11
View File
@@ -79,8 +79,8 @@ GENERAL DEPENDENCIES
automake pkg-config bsdmainutils curl git make tar patch \ automake pkg-config bsdmainutils curl git make tar patch \
cmake ninja-build python3 cmake ninja-build python3
A host toolchain (build-essential) is required because some dependencies A host toolchain (build-essential) is required because some dependencies build
(e.g., protobuf) build host utilities during the process. host utilities during the process.
If building the Windows installer (`make deploy`): If building the Windows installer (`make deploy`):
@@ -133,7 +133,6 @@ The helper:
• Verifies the POSIX Mingw-w64 thread model. • Verifies the POSIX Mingw-w64 thread model.
• Builds the Win64 depends tree with Qt enabled. • Builds the Win64 depends tree with Qt enabled.
• Stages matching Qt host tools (`moc`, `uic`, `rcc`) into the depends prefix. • 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. • Configures the wallet against the generated depends prefix.
Manual equivalent: Manual equivalent:
@@ -153,8 +152,7 @@ Manual equivalent:
--with-qt-libdir=$PWD/depends/x86_64-w64-mingw32/lib \ --with-qt-libdir=$PWD/depends/x86_64-w64-mingw32/lib \
--with-qt-plugindir=$PWD/depends/x86_64-w64-mingw32/plugins \ --with-qt-plugindir=$PWD/depends/x86_64-w64-mingw32/plugins \
--with-qt-translationdir=$PWD/depends/x86_64-w64-mingw32/translations \ --with-qt-translationdir=$PWD/depends/x86_64-w64-mingw32/translations \
--with-qt-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin \ --with-qt-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin
--with-protoc-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin
make make
============================================================ ============================================================
@@ -224,12 +222,12 @@ You MUST select the POSIX thread model when prompted by
update-alternatives. update-alternatives.
============================================================ ============================================================
PROTOBUF NOTE PAYMENT REQUEST NOTE
============================================================ ============================================================
The Windows depends build uses protobuf 2.6.1 headers and libraries. Do not use Obsolete BIP70 payment request support was removed from Agrarian 2.0. The
a newer system `protoc` to regenerate wallet sources for this target. The helper Windows wallet build does not require protobuf or `protoc`. Standard
builds and stages a matching native `protoc` when needed. `agrarian:` URI payment links remain supported.
============================================================ ============================================================
QT NOTE QT NOTE
@@ -245,8 +243,8 @@ DEPENDS BASELINE NOTE
The 2.0 branch currently verifies Windows x86_64 builds against the same 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, 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 Qt 6.8.3, Berkeley DB 4.8.30, libevent 2.1.12-stable, and GMP 6.3.0. Expat
6.3.0. Expat 2.8.0 and FreeType 2.14.3 are part of the Linux Qt/font depends 2.8.0 and FreeType 2.14.3 are part of the Linux Qt/font depends
path and are documented in `doc/dependencies.md`. path and are documented in `doc/dependencies.md`.
============================================================ ============================================================
+2 -1
View File
@@ -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 | | | | OpenSSL | [3.5.6](https://www.openssl.org/source) | | No | | |
| GMP | [6.3.0](https://gmplib.org/) | | No | | | | GMP | [6.3.0](https://gmplib.org/) | | No | | |
| PCRE | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L66) | | 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) | | | | | Python (tests) | | [3.5](https://www.python.org/downloads) | | | |
| qrencode | [4.1.1](https://github.com/fukuchi/libqrencode/releases/tag/v4.1.1) | | No | | | | 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 | | | | 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. * Qt builds target Qt 6.8 LTS through the deterministic depends path.
* OpenSSL builds target OpenSSL 3.5 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. * 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 * Berkeley DB remains 4.8.30 in depends for legacy wallet portability. Wallets
built against other BDB major versions may not be portable. built against other BDB major versions may not be portable.
+4 -1
View File
@@ -17,13 +17,16 @@ The current deterministic `depends/` baseline is:
- Expat 2.8.0 for the Linux Qt/font stack - Expat 2.8.0 for the Linux Qt/font stack
- FreeType 2.14.3 for Qt 6 static font support - FreeType 2.14.3 for Qt 6 static font support
- Berkeley DB 4.8.30 for portable legacy wallet compatibility - 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 - qrencode 4.1.1 for Qt wallet QR code support
- libevent 2.1.12-stable - libevent 2.1.12-stable
- GMP 6.3.0 - GMP 6.3.0
- MiniUPnPc 2.3.3 when UPnP support is enabled - MiniUPnPc 2.3.3 when UPnP support is enabled
- ZeroMQ 4.3.5 when 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: The currently verified binaries are:
- Ubuntu daemon and command-line tools - Ubuntu daemon and command-line tools
-4
View File
@@ -578,10 +578,6 @@ if HARDEN
$(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS) $(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS)
endif endif
%.pb.cc %.pb.h: %.proto
@test -f $(PROTOC)
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(<D) $<
if EMBEDDED_LEVELDB if EMBEDDED_LEVELDB
include Makefile.leveldb.include include Makefile.leveldb.include
endif endif
+47 -89
View File
@@ -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_sv.ts qt/locale/agrarian_tr.ts \
qt/locale/agrarian_uk.ts qt/locale/agrarian_vi.ts \ qt/locale/agrarian_uk.ts qt/locale/agrarian_vi.ts \
qt/locale/agrarian_zh_CN.ts qt/locale/agrarian_zh_TW.ts \ qt/locale/agrarian_zh_CN.ts qt/locale/agrarian_zh_TW.ts \
qt/paymentrequest.proto qt/res/icons/add.png \ qt/res/icons/add.png qt/res/icons/address-book.png \
qt/res/icons/address-book.png qt/res/icons/automint_active.png \ qt/res/icons/automint_active.png \
qt/res/icons/automint_inactive.png qt/res/icons/bitcoin.ico \ 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.png qt/res/icons/bitcoin_testnet.ico \
qt/res/icons/bitcoin_testnet.png \ 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) $(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@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_addresstablemodel.$(OBJEXT) \
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_askpassphrasedialog.$(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_walletview.$(OBJEXT) \
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT) @ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT)
@ENABLE_QT_TRUE@am__objects_14 = \ @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@ 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@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_14) \
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_15) \ @ENABLE_QT_TRUE@ $(am__objects_15)
@ENABLE_QT_TRUE@ $(am__objects_16)
qt_libbitcoinqt_a_OBJECTS = $(am_qt_libbitcoinqt_a_OBJECTS) \ qt_libbitcoinqt_a_OBJECTS = $(am_qt_libbitcoinqt_a_OBJECTS) \
$(nodist_qt_libbitcoinqt_a_OBJECTS) $(nodist_qt_libbitcoinqt_a_OBJECTS)
@BUILD_BITCOIN_LIBS_TRUE@libbitcoinconsensus_la_DEPENDENCIES = \ @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/script.cpp script/interpreter.cpp \
script/bitcoinconsensus.cpp uint256.cpp utilstrencodings.cpp \ script/bitcoinconsensus.cpp uint256.cpp utilstrencodings.cpp \
compat/glibc_compat.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@am_libbitcoinconsensus_la_OBJECTS = \
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-allocators.lo \ @BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-allocators.lo \
@BUILD_BITCOIN_LIBS_TRUE@ primitives/libbitcoinconsensus_la-transaction.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@ script/libbitcoinconsensus_la-bitcoinconsensus.lo \
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-uint256.lo \ @BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-uint256.lo \
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-utilstrencodings.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) libbitcoinconsensus_la_OBJECTS = $(am_libbitcoinconsensus_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@) AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_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@am_libbitcoinconsensus_la_rpath = -rpath \
@BUILD_BITCOIN_LIBS_TRUE@ $(libdir) @BUILD_BITCOIN_LIBS_TRUE@ $(libdir)
am__agrarian_cli_SOURCES_DIST = agrarian-cli.cpp agrarian-cli-res.rc 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_agrarian_cli_OBJECTS = agrarian_cli-agrarian-cli.$(OBJEXT) \
$(am__objects_18) $(am__objects_17)
agrarian_cli_OBJECTS = $(am_agrarian_cli_OBJECTS) agrarian_cli_OBJECTS = $(am_agrarian_cli_OBJECTS)
am__DEPENDENCIES_1 = am__DEPENDENCIES_1 =
@EMBEDDED_UNIVALUE_FALSE@am__DEPENDENCIES_2 = $(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) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(agrarian_cli_CXXFLAGS) \
$(CXXFLAGS) $(agrarian_cli_LDFLAGS) $(LDFLAGS) -o $@ $(CXXFLAGS) $(agrarian_cli_LDFLAGS) $(LDFLAGS) -o $@
am__agrarian_tx_SOURCES_DIST = agrarian-tx.cpp agrarian-tx-res.rc 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_agrarian_tx_OBJECTS = agrarian_tx-agrarian-tx.$(OBJEXT) \
$(am__objects_19) $(am__objects_18)
agrarian_tx_OBJECTS = $(am_agrarian_tx_OBJECTS) agrarian_tx_OBJECTS = $(am_agrarian_tx_OBJECTS)
agrarian_tx_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBBITCOIN_COMMON) \ agrarian_tx_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBBITCOIN_COMMON) \
$(LIBBITCOIN_ZEROCOIN) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) \ $(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) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(agrarian_tx_CXXFLAGS) \
$(CXXFLAGS) $(agrarian_tx_LDFLAGS) $(LDFLAGS) -o $@ $(CXXFLAGS) $(agrarian_tx_LDFLAGS) $(LDFLAGS) -o $@
am__agrariand_SOURCES_DIST = agrariand.cpp agrariand-res.rc am__agrariand_SOURCES_DIST = agrariand.cpp agrariand-res.rc
@TARGET_WINDOWS_TRUE@am__objects_20 = agrariand-res.$(OBJEXT) @TARGET_WINDOWS_TRUE@am__objects_19 = agrariand-res.$(OBJEXT)
am_agrariand_OBJECTS = agrariand-agrariand.$(OBJEXT) $(am__objects_20) am_agrariand_OBJECTS = agrariand-agrariand.$(OBJEXT) $(am__objects_19)
agrariand_OBJECTS = $(am_agrariand_OBJECTS) agrariand_OBJECTS = $(am_agrariand_OBJECTS)
am__DEPENDENCIES_3 = $(am__append_12) am__DEPENDENCIES_3 = $(am__append_12)
am__DEPENDENCIES_4 = $(am__append_13) 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 \ am__qt_agrarian_qt_SOURCES_DIST = qt/agrarian.cpp \
qt/macdockiconhandler.mm qt/macnotificationhandler.mm \ qt/macdockiconhandler.mm qt/macnotificationhandler.mm \
qt/res/agrarian-qt-res.rc 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-macdockiconhandler.$(OBJEXT) \
@ENABLE_QT_TRUE@ qt/agrarian_qt-macnotificationhandler.$(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@@TARGET_DARWIN_TRUE@ $(am__objects_21) @ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@ $(am__objects_20)
@ENABLE_QT_TRUE@am__objects_23 = qt/res/agrarian-qt-res.$(OBJEXT) @ENABLE_QT_TRUE@am__objects_22 = 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_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@am_qt_agrarian_qt_OBJECTS = \
@ENABLE_QT_TRUE@ qt/agrarian_qt-agrarian.$(OBJEXT) \ @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) qt_agrarian_qt_OBJECTS = $(am_qt_agrarian_qt_OBJECTS)
@ENABLE_QT_TRUE@@ENABLE_ZMQ_TRUE@am__DEPENDENCIES_5 = \ @ENABLE_QT_TRUE@@ENABLE_ZMQ_TRUE@am__DEPENDENCIES_5 = \
@ENABLE_QT_TRUE@@ENABLE_ZMQ_TRUE@ $(LIBBITCOIN_ZMQ) \ @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) $(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@ $(LIBSECP256K1) $(am__DEPENDENCIES_1) \
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) @ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1)
qt_agrarian_qt_LINK = $(LIBTOOL) $(AM_V_lt) \ qt_agrarian_qt_LINK = $(LIBTOOL) $(AM_V_lt) \
$(qt_agrarian_qt_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(qt_agrarian_qt_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
$(OBJCXXLD) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS) \ $(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/uritests.cpp qt/test/uritests.h \
qt/test/paymentrequestdata.h qt/test/paymentservertests.h \ qt/test/paymentrequestdata.h qt/test/paymentservertests.h \
qt/test/paymentservertests.cpp 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@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@ qt/test/test_agrarian_qt-uritests.$(OBJEXT) \
@ENABLE_QT_TESTS_TRUE@ $(am__objects_3) $(am__objects_25) @ENABLE_QT_TESTS_TRUE@ $(am__objects_3) $(am__objects_24)
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_26 = qt/test/test_agrarian_qt-moc_paymentservertests.$(OBJEXT) @ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_25 = 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 = qt/test/test_agrarian_qt-moc_uritests.$(OBJEXT) \
@ENABLE_QT_TESTS_TRUE@ $(am__objects_26) @ENABLE_QT_TESTS_TRUE@ $(am__objects_25)
@ENABLE_QT_TESTS_TRUE@nodist_qt_test_test_agrarian_qt_OBJECTS = \ @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 = \ qt_test_test_agrarian_qt_OBJECTS = \
$(am_qt_test_test_agrarian_qt_OBJECTS) \ $(am_qt_test_test_agrarian_qt_OBJECTS) \
$(nodist_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) \ @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) $(LIBSECP256K1) \
@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)
@@ -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/script_invalid.json test/data/tx_invalid.json \
test/data/tx_valid.json test/data/sighash.json \ test/data/tx_valid.json test/data/sighash.json \
test/data/alertTests.raw 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@ 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@ wallet/test/test_test_agrarian-wallet_tests.$(OBJEXT) \
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@ test/test_agrarian-rpc_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_denomination_tests.$(OBJEXT) \
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_transactions_tests.$(OBJEXT) \ @ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_transactions_tests.$(OBJEXT) \
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_coinspend_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-uint256_tests.$(OBJEXT) \
@ENABLE_TESTS_TRUE@ test/test_agrarian-univalue_tests.$(OBJEXT) \ @ENABLE_TESTS_TRUE@ test/test_agrarian-univalue_tests.$(OBJEXT) \
@ENABLE_TESTS_TRUE@ test/test_agrarian-util_tests.$(OBJEXT) \ @ENABLE_TESTS_TRUE@ test/test_agrarian-util_tests.$(OBJEXT) \
@ENABLE_TESTS_TRUE@ $(am__objects_29) @ENABLE_TESTS_TRUE@ $(am__objects_28)
@ENABLE_TESTS_TRUE@am_test_test_agrarian_OBJECTS = $(am__objects_28) \ @ENABLE_TESTS_TRUE@am_test_test_agrarian_OBJECTS = $(am__objects_27) \
@ENABLE_TESTS_TRUE@ $(am__objects_30) $(am__objects_3) \ @ENABLE_TESTS_TRUE@ $(am__objects_29) $(am__objects_3) \
@ENABLE_TESTS_TRUE@ $(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@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) \ test_test_agrarian_OBJECTS = $(am_test_test_agrarian_OBJECTS) \
$(nodist_test_test_agrarian_OBJECTS) $(nodist_test_test_agrarian_OBJECTS)
@ENABLE_TESTS_TRUE@@ENABLE_ZMQ_TRUE@am__DEPENDENCIES_7 = \ @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-optionsdialog.Po \
qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po \ qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po \
qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po \ qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po \
qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po \
qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po \ qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po \
qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po \ qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po \
qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po \ qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po \
@@ -2004,9 +1999,6 @@ PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PORT = @PORT@ PORT = @PORT@
PROTOBUF_CFLAGS = @PROTOBUF_CFLAGS@
PROTOBUF_LIBS = @PROTOBUF_LIBS@
PROTOC = @PROTOC@
PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CC = @PTHREAD_CC@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@ PTHREAD_LIBS = @PTHREAD_LIBS@
@@ -2886,9 +2878,6 @@ EXTRA_DIST =
@ENABLE_QT_TRUE@QT_QRC = qt/agrarian.qrc @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_CPP = qt/qrc_agrarian_locale.cpp
@ENABLE_QT_TRUE@QT_QRC_LOCALE = qt/agrarian_locale.qrc @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@BITCOIN_QT_H = \
@ENABLE_QT_TRUE@ qt/addressbookpage.h \ @ENABLE_QT_TRUE@ qt/addressbookpage.h \
@ENABLE_QT_TRUE@ qt/addresstablemodel.h \ @ENABLE_QT_TRUE@ qt/addresstablemodel.h \
@@ -3110,23 +3099,21 @@ EXTRA_DIST =
@ENABLE_QT_TRUE@ -I$(builddir)/qt/forms @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_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_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(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_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@ $(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) $(PROTOBUF_CC) \
@ENABLE_QT_TRUE@ $(PROTOBUF_H) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
@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 # 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)))) @ENABLE_QT_TRUE@QT_FORMS_H = $(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:.ui=.h))))
# agrarian-qt binary # # agrarian-qt binary #
@ENABLE_QT_TRUE@qt_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ @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_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
@ENABLE_QT_TRUE@qt_agrarian_qt_SOURCES = qt/agrarian.cpp \ @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@ $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) \
@ENABLE_QT_TRUE@ $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) \ @ENABLE_QT_TRUE@ $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) \
@ENABLE_QT_TRUE@ $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) \ @ENABLE_QT_TRUE@ $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) \
@ENABLE_QT_TRUE@ $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) \ @ENABLE_QT_TRUE@ $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) \
@ENABLE_QT_TRUE@ $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) \ @ENABLE_QT_TRUE@ $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
@ENABLE_QT_TRUE@ $(LIBSECP256K1) $(EVENT_PTHREADS_LIBS) \ @ENABLE_QT_TRUE@ $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
@ENABLE_QT_TRUE@ $(EVENT_LIBS)
@ENABLE_QT_TRUE@qt_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) @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 @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/paymentservertests.h
@ENABLE_QT_TESTS_TRUE@qt_test_test_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ @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_agrarian_qt_SOURCES = \
@ENABLE_QT_TESTS_TRUE@ qt/test/test_main.cpp \ @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@ $(LIBLEVELDB) $(LIBLEVELDB_SSE42) \
@ENABLE_QT_TESTS_TRUE@ $(LIBMEMENV) $(BOOST_LIBS) \ @ENABLE_QT_TESTS_TRUE@ $(LIBMEMENV) $(BOOST_LIBS) \
@ENABLE_QT_TESTS_TRUE@ $(QT_DBUS_LIBS) $(QT_TEST_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@ $(QT_LIBS) $(QR_LIBS) $(BDB_LIBS) \
@ENABLE_QT_TESTS_TRUE@ $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) \ @ENABLE_QT_TESTS_TRUE@ $(SSL_LIBS) $(CRYPTO_LIBS) \
@ENABLE_QT_TESTS_TRUE@ $(MINIUPNPC_LIBS) $(LIBSECP256K1) \ @ENABLE_QT_TESTS_TRUE@ $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
@ENABLE_QT_TESTS_TRUE@ $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) @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) @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/$(DEPDIR)/$(am__dirstamp)
qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT): qt/$(am__dirstamp) \ qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT): qt/$(am__dirstamp) \
qt/$(DEPDIR)/$(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/libbitcoinqt_a-qrc_agrarian.$(OBJEXT): qt/$(am__dirstamp) \
qt/$(DEPDIR)/$(am__dirstamp) qt/$(DEPDIR)/$(am__dirstamp)
qt/libbitcoinqt_a-qrc_agrarian_locale.$(OBJEXT): qt/$(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-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-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-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-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-paymentserver.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.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@ @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` @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 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_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 @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-optionsdialog.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po -rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.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-paymentrequestplus.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po -rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.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-optionsdialog.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po -rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.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-paymentrequestplus.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po -rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.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@ @echo "Checking binary security..."
@HARDEN_TRUE@ $(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS) @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@$(BITCOIN_TESTS): $(GENERATED_TEST_FILES)
@ENABLE_TESTS_TRUE@agrarian_test: $(TEST_BINARY) @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_MOC): $(QT_FORMS_H)
@ENABLE_QT_TRUE@$(qt_libbitcoinqt_a_OBJECTS) $(qt_agrarian_qt_OBJECTS) : | $(QT_MOC) @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@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) @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@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
@ENABLE_QT_TRUE@ @rm $(@D)/temp_$(<F) @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@ @test -f $(RCC)
@ENABLE_QT_TRUE@ $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \ @ENABLE_QT_TRUE@ $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \
@ENABLE_QT_TRUE@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@ @ENABLE_QT_TRUE@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
+6 -16
View File
@@ -138,10 +138,6 @@ QT_QRC = qt/agrarian.qrc
QT_QRC_LOCALE_CPP = qt/qrc_agrarian_locale.cpp QT_QRC_LOCALE_CPP = qt/qrc_agrarian_locale.cpp
QT_QRC_LOCALE = qt/agrarian_locale.qrc 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 = \ BITCOIN_QT_H = \
qt/addressbookpage.h \ qt/addressbookpage.h \
qt/addresstablemodel.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 -I$(builddir)/qt/forms
qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ 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_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(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_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) \ nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
$(PROTOBUF_H) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
# forms/foo.h -> forms/ui_foo.h # forms/foo.h -> forms/ui_foo.h
QT_FORMS_H=$(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:.ui=.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_MOC): $(QT_FORMS_H)
$(qt_libbitcoinqt_a_OBJECTS) $(qt_agrarian_qt_OBJECTS) : | $(QT_MOC) $(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 # # agrarian-qt binary #
qt_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ 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_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
qt_agrarian_qt_SOURCES = qt/agrarian.cpp qt_agrarian_qt_SOURCES = qt/agrarian.cpp
@@ -415,7 +405,7 @@ if ENABLE_ZMQ
qt_agrarian_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS) qt_agrarian_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
endif endif
qt_agrarian_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \ 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) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
qt_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) qt_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
qt_agrarian_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX 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' > $@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
@rm $(@D)/temp_$(<F) @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) @test -f $(RCC)
$(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \ $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \
$(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
+2 -2
View File
@@ -16,7 +16,7 @@ TEST_QT_H = \
qt/test/paymentservertests.h qt/test/paymentservertests.h
qt_test_test_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ 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_agrarian_qt_SOURCES = \
qt/test/test_main.cpp \ qt/test/test_main.cpp \
@@ -38,7 +38,7 @@ qt_test_test_agrarian_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
endif endif
qt_test_test_agrarian_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) \ 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) \ $(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) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
qt_test_test_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) 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) qt_test_test_agrarian_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
-46
View File
@@ -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
View File
@@ -3,214 +3,42 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
//
// Wraps dumb protocol buffer paymentRequest
// with some extra methods
//
#include "paymentrequestplus.h" #include "paymentrequestplus.h"
#include <stdexcept>
#include <openssl/x509_vfy.h>
#include <QDateTime>
#include <QDebug> #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 PaymentRequestPlus::parse(const QByteArray& data)
{ {
bool parseOK = paymentRequest.ParseFromArray(data.data(), data.size()); Q_UNUSED(data);
if (!parseOK) { qWarning() << "PaymentRequestPlus::parse : BIP70 payment requests are no longer supported";
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();
return false; return false;
} }
parseOK = details.ParseFromString(paymentRequest.serialized_payment_details()); bool PaymentRequestPlus::SerializeToString(std::string* output) const
if (!parseOK) {
qWarning() << "PaymentRequestPlus::parse : Error parsing payment details";
paymentRequest.Clear();
return false;
}
return true;
}
bool PaymentRequestPlus::SerializeToString(string* output) const
{ {
return paymentRequest.SerializeToString(output); if (output)
output->clear();
return false;
} }
bool PaymentRequestPlus::IsInitialized() const bool PaymentRequestPlus::IsInitialized() const
{ {
return paymentRequest.IsInitialized(); return false;
} }
QString PaymentRequestPlus::getPKIType() const QString PaymentRequestPlus::getPKIType() const
{ {
if (!IsInitialized()) return QString("none"); return QString("none");
return QString::fromStdString(paymentRequest.pki_type());
} }
bool PaymentRequestPlus::getMerchant(X509_STORE* certStore, QString& merchant) const bool PaymentRequestPlus::getMerchant(X509_STORE* certStore, QString& merchant) const
{ {
Q_UNUSED(certStore);
merchant.clear(); merchant.clear();
if (!IsInitialized())
return false; 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> > PaymentRequestPlus::getPayTo() const
{ {
QList<std::pair<CScript, CAmount> > result; return QList<std::pair<CScript, CAmount> >();
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;
} }
+7 -21
View File
@@ -6,12 +6,11 @@
#ifndef BITCOIN_QT_PAYMENTREQUESTPLUS_H #ifndef BITCOIN_QT_PAYMENTREQUESTPLUS_H
#define BITCOIN_QT_PAYMENTREQUESTPLUS_H #define BITCOIN_QT_PAYMENTREQUESTPLUS_H
#pragma GCC diagnostic push #include "amount.h"
#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include "script/script.h"
#include "paymentrequest.pb.h"
#pragma GCC diagnostic pop
#include "base58.h" #include <string>
#include <utility>
#include <openssl/x509.h> #include <openssl/x509.h>
@@ -19,11 +18,9 @@
#include <QList> #include <QList>
#include <QString> #include <QString>
// // BIP70 payment requests were removed from the wallet to eliminate the
// Wraps dumb protocol buffer paymentRequest // obsolete protobuf dependency. The class stays as a compatibility shim for
// with extra methods // serialized wallet/order-form code paths that check for payment requests.
//
class PaymentRequestPlus class PaymentRequestPlus
{ {
public: public:
@@ -31,21 +28,10 @@ public:
bool parse(const QByteArray& data); bool parse(const QByteArray& data);
bool SerializeToString(std::string* output) const; bool SerializeToString(std::string* output) const;
bool IsInitialized() const; bool IsInitialized() const;
QString getPKIType() 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; bool getMerchant(X509_STORE* certStore, QString& merchant) const;
// Returns list of outputs, amount
QList<std::pair<CScript, CAmount> > getPayTo() const; 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 #endif // BITCOIN_QT_PAYMENTREQUESTPLUS_H
+23 -235
View File
@@ -48,14 +48,7 @@ using namespace std;
const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds
const QString BITCOIN_IPC_PREFIX("agrarian:"); const QString BITCOIN_IPC_PREFIX("agrarian:");
// BIP70 payment protocol messages // BIP70 max payment request size in bytes (kept for compatibility tests).
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)
const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE = 50000; const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE = 50000;
struct X509StoreDeleter { struct X509StoreDeleter {
@@ -210,16 +203,7 @@ void PaymentServer::ipcParseCommandLine(int argc, char* argv[])
} }
} else if (QFile::exists(arg)) // Filename } else if (QFile::exists(arg)) // Filename
{ {
savedPaymentRequests.append(arg); qWarning() << "PaymentServer::ipcSendCommandLine : BIP70 payment request files are no longer supported: " << arg;
PaymentRequestPlus request;
if (readPaymentRequestFromFile(arg, request)) {
if (request.getDetails().network() == "main") {
SelectParams(CBaseChainParams::MAIN);
} else if (request.getDetails().network() == "test") {
SelectParams(CBaseChainParams::TESTNET);
}
}
} else { } else {
// Printing to debug.log is about the best we can do here, the // 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. // 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), netManager(0),
optionsModel(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 // Install global event filter to catch QFileOpenEvents
// on Mac: sent when you click agrarian: links // on Mac: sent when you click agrarian: links
// other OSes: helpful when dealing with payment request files (in the future) // 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")); tr("Cannot start agrarian: click-to-pay handler"));
} else { } else {
connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection())); connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection()));
connect(this, SIGNAL(receivedPaymentACK(QString)), this, SLOT(handlePaymentACK(QString)));
} }
} }
} }
PaymentServer::~PaymentServer() PaymentServer::~PaymentServer()
{ {
google::protobuf::ShutdownProtobufLibrary();
} }
// //
@@ -374,21 +352,10 @@ void PaymentServer::handleURIOrFile(const QString& s)
QUrlQuery uri((QUrl(s))); QUrlQuery uri((QUrl(s)));
if (uri.hasQueryItem("r")) // payment request URI if (uri.hasQueryItem("r")) // payment request URI
{ {
QByteArray temp; qWarning() << "PaymentServer::handleURIOrFile : BIP70 payment request URLs are no longer supported.";
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;
emit message(tr("URI handling"), 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); CClientUIInterface::ICON_WARNING);
}
return; return;
} else // normal URI } else // normal URI
{ {
@@ -411,15 +378,10 @@ void PaymentServer::handleURIOrFile(const QString& s)
if (QFile::exists(s)) // payment request file if (QFile::exists(s)) // payment request file
{ {
PaymentRequestPlus request; qWarning() << "PaymentServer::handleURIOrFile : BIP70 payment request files are no longer supported: " << s;
SendCoinsRecipient recipient;
if (!readPaymentRequestFromFile(s, request)) {
emit message(tr("Payment request file handling"), 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); CClientUIInterface::ICON_WARNING);
} else if (processPaymentRequest(request, recipient))
emit receivedPaymentRequest(recipient);
return; return;
} }
} }
@@ -451,219 +413,45 @@ void PaymentServer::handleURIConnection()
// //
bool PaymentServer::readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request) bool PaymentServer::readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request)
{ {
QFile f(filename); Q_UNUSED(filename);
if (!f.open(QIODevice::ReadOnly)) { Q_UNUSED(request);
qWarning() << QString("PaymentServer::%1: Failed to open %2").arg(__func__).arg(filename);
qWarning() << "PaymentServer::readPaymentRequestFromFile : BIP70 payment request files are no longer supported.";
return false; 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) bool PaymentServer::processPaymentRequest(PaymentRequestPlus& request, SendCoinsRecipient& recipient)
{ {
if (!optionsModel) Q_UNUSED(request);
return false; 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"), emit message(tr("Payment request rejected"),
tr("Unverified payment requests to custom payment scripts are unsupported."), tr("BIP70 payment requests are no longer supported."),
CClientUIInterface::MSG_ERROR); CClientUIInterface::ICON_WARNING);
return false; 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) void PaymentServer::fetchRequest(const QUrl& url)
{ {
QNetworkRequest netRequest; Q_UNUSED(url);
netRequest.setAttribute(QNetworkRequest::User, BIP70_MESSAGE_PAYMENTREQUEST);
netRequest.setUrl(url); emit message(tr("Payment request rejected"),
netRequest.setRawHeader("User-Agent", CLIENT_NAME.c_str()); tr("BIP70 payment request URLs are no longer supported."),
netRequest.setRawHeader("Accept", BIP71_MIMETYPE_PAYMENTREQUEST); CClientUIInterface::ICON_WARNING);
netManager->get(netRequest);
} }
void PaymentServer::fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction) void PaymentServer::fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction)
{ {
const payments::PaymentDetails& details = recipient.paymentRequest.getDetails(); Q_UNUSED(wallet);
if (!details.has_payment_url()) Q_UNUSED(recipient);
return; Q_UNUSED(transaction);
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";
}
} }
void PaymentServer::netRequestFinished(QNetworkReply* reply) void PaymentServer::netRequestFinished(QNetworkReply* reply)
{ {
reply->deleteLater(); reply->deleteLater();
// BIP70 DoS protection qWarning() << "PaymentServer::netRequestFinished : Ignoring unexpected network reply after BIP70 removal.";
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()));
}
}
} }
void PaymentServer::reportSslErrors(QNetworkReply* reply, const QList<QSslError>& errs) void PaymentServer::reportSslErrors(QNetworkReply* reply, const QList<QSslError>& errs)
+4 -41
View File
@@ -6,7 +6,6 @@
#include "paymentservertests.h" #include "paymentservertests.h"
#include "optionsmodel.h" #include "optionsmodel.h"
#include "paymentrequestdata.h"
#include "random.h" #include "random.h"
#include "util.h" #include "util.h"
@@ -65,50 +64,14 @@ void PaymentServerTests::paymentServerTests()
SelectParams(CBaseChainParams::MAIN); SelectParams(CBaseChainParams::MAIN);
OptionsModel optionsModel; OptionsModel optionsModel;
PaymentServer* server = new PaymentServer(NULL, false); 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->setOptionsModel(&optionsModel);
server->uiReady(); server->uiReady();
// Now feed PaymentRequests to server, and observe signals it produces: // BIP70 payment requests are intentionally unsupported in Agrarian 2.0.
std::vector<unsigned char> data = DecodeBase64(paymentrequest1_BASE64); // Standard agrarian: URI handling remains covered by uritests.
std::vector<unsigned char> data(128, 0);
SendCoinsRecipient r = handleRequest(server, data); SendCoinsRecipient r = handleRequest(server, data);
QString merchant; QCOMPARE(r.paymentRequest.IsInitialized(), false);
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(""));
unsigned long lDoSProtectionTrigger = (unsigned long) BIP70_MAX_PAYMENTREQUEST_SIZE + 1; unsigned long lDoSProtectionTrigger = (unsigned long) BIP70_MAX_PAYMENTREQUEST_SIZE + 1;
std::string randData(lDoSProtectionTrigger, '\0'); std::string randData(lDoSProtectionTrigger, '\0');
+1 -14
View File
@@ -8,13 +8,13 @@
#include "bitcoinunits.h" #include "bitcoinunits.h"
#include "guiutil.h" #include "guiutil.h"
#include "paymentserver.h"
#include "transactionrecord.h" #include "transactionrecord.h"
#include "base58.h" #include "base58.h"
#include "db.h" #include "db.h"
#include "main.h" #include "main.h"
#include "script/script.h" #include "script/script.h"
#include "swifttx.h"
#include "timedata.h" #include "timedata.h"
#include "guiinterface.h" #include "guiinterface.h"
#include "util.h" #include "util.h"
@@ -258,19 +258,6 @@ QString TransactionDesc::toHTML(CWallet* wallet, CWalletTx& wtx, TransactionReco
if (r.first == "Message") if (r.first == "Message")
strHTML += "<br><b>" + tr("Message") + ":</b><br>" + GUIUtil::HtmlEscape(r.second, true) + "<br>"; 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()) { if (wtx.IsCoinBase()) {
quint32 numBlocksToMaturity = Params().COINBASE_MATURITY() + 1; 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>"; 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
View File
@@ -284,22 +284,6 @@ WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransact
// Pre-check input data for validity // Pre-check input data for validity
foreach (const SendCoinsRecipient& rcp, recipients) { 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)) { if (!validateAddress(rcp.address)) {
return InvalidAddress; return InvalidAddress;
} }
@@ -314,7 +298,6 @@ WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransact
total += rcp.amount; total += rcp.amount;
} }
}
if (setAddress.size() != nAddresses) { if (setAddress.size() != nAddresses) {
return DuplicateAddress; return DuplicateAddress;
} }
@@ -381,15 +364,9 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(WalletModelTransaction& tran
CWalletTx* newTx = transaction.getTransaction(); CWalletTx* newTx = transaction.getTransaction();
QList<SendCoinsRecipient> recipients = transaction.getRecipients(); 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) { foreach (const SendCoinsRecipient& rcp, recipients) {
if (rcp.paymentRequest.IsInitialized()) { if (!rcp.message.isEmpty()) {
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)
{
newTx->vOrderForm.push_back(make_pair("Message", rcp.message.toStdString())); 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, // Add addresses / update labels that we've sent to to the address book,
// and emit coinsSent signal for each recipient // and emit coinsSent signal for each recipient
foreach (const SendCoinsRecipient& rcp, transaction.getRecipients()) { 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(); std::string strAddress = rcp.address.toStdString();
CTxDestination dest = CBitcoinAddress(strAddress).Get(); CTxDestination dest = CBitcoinAddress(strAddress).Get();
std::string strLabel = rcp.label.toStdString(); std::string strLabel = rcp.label.toStdString();
updateAddressBookLabels(dest, strLabel, "send"); updateAddressBookLabels(dest, strLabel, "send");
}
emit coinsSent(wallet, rcp, transaction_array); emit coinsSent(wallet, rcp, transaction_array);
} }
checkBalanceChanged(); // update balance immediately, otherwise there could be a short noticeable delay until pollBalanceChanged hits checkBalanceChanged(); // update balance immediately, otherwise there could be a short noticeable delay until pollBalanceChanged hits
+2 -7
View File
@@ -54,12 +54,11 @@ public:
AvailableCoinsType inputType; AvailableCoinsType inputType;
bool useSwiftTX; bool useSwiftTX;
CAmount amount; CAmount amount;
// If from a payment request, this is used for storing the memo // Message from a standard agrarian: URI.
QString message; QString message;
// If from a payment request, paymentRequest.IsInitialized() will be true // Obsolete BIP70 compatibility field. The shim is intentionally never initialized.
PaymentRequestPlus paymentRequest; PaymentRequestPlus paymentRequest;
// Empty if no authentication or invalid signature/cert/etc.
QString authenticatedMerchant; QString authenticatedMerchant;
static const int CURRENT_VERSION = 1; static const int CURRENT_VERSION = 1;
@@ -74,8 +73,6 @@ public:
std::string sLabel = label.toStdString(); std::string sLabel = label.toStdString();
std::string sMessage = message.toStdString(); std::string sMessage = message.toStdString();
std::string sPaymentRequest; std::string sPaymentRequest;
if (!ser_action.ForRead() && paymentRequest.IsInitialized())
paymentRequest.SerializeToString(&sPaymentRequest);
std::string sAuthenticatedMerchant = authenticatedMerchant.toStdString(); std::string sAuthenticatedMerchant = authenticatedMerchant.toStdString();
READWRITE(this->nVersion); READWRITE(this->nVersion);
@@ -91,8 +88,6 @@ public:
address = QString::fromStdString(sAddress); address = QString::fromStdString(sAddress);
label = QString::fromStdString(sLabel); label = QString::fromStdString(sLabel);
message = QString::fromStdString(sMessage); message = QString::fromStdString(sMessage);
if (!sPaymentRequest.empty())
paymentRequest.parse(QByteArray::fromRawData(sPaymentRequest.data(), sPaymentRequest.size()));
authenticatedMerchant = QString::fromStdString(sAuthenticatedMerchant); authenticatedMerchant = QString::fromStdString(sAuthenticatedMerchant);
} }
} }