67 Commits

Author SHA1 Message Date
root f975a12c31 Repair broken Ubuntu apt mirrors in build menu 2026-05-03 10:25:17 +00:00
root 633b95db4f Reset before recreating build branch 2026-05-03 10:20:21 +00:00
root 4098527982 Force build checkout to remote branch 2026-05-03 10:18:29 +00:00
root 3317191540 Reset build checkout before pulling 2026-05-03 10:13:07 +00:00
root c2354607cf Use GNU mirror for GMP source 2026-05-03 09:18:49 +00:00
root 1d382a7560 Recover depends downloads with stale fetch stamps 2026-05-03 08:59:37 +00:00
root 18f14e0c80 Validate depends source archives before reuse 2026-05-03 08:48:40 +00:00
root a857bed5a3 Track dev handoff 2026-05-03 08:40:48 +00:00
root b616e06813 Add ARM64 build targets and release roadmap 2026-05-03 08:38:55 +00:00
root 2dcdd26c12 Document Berkeley DB 4.8 wallet compatibility 2026-05-03 05:51:03 +00:00
root 9852dad996 Remove obsolete protobuf payment requests 2026-05-03 05:30:25 +00:00
root acf8b3ccb6 Update GMP to 6.3.0 2026-05-03 03:34:26 +00:00
root ff9d35dd35 Update miniupnpc to 2.3.3 2026-05-03 03:01:02 +00:00
root 8bc6b03ebb Update qrencode to 4.1.1 2026-05-03 02:14:19 +00:00
root b7c43274d6 Update ZeroMQ to 4.3.5 2026-05-02 23:46:55 +00:00
root 625d01ed85 Update libevent to 2.1.12 2026-05-02 22:12:47 +00:00
root 69034155bc Update zlib to 1.3.2 2026-05-02 21:32:34 +00:00
root 7855326c14 Update FreeType to 2.14.3 2026-05-02 20:45:09 +00:00
root ff3cedd772 Fix Qt shutdown and Linux wallet build 2026-05-02 19:53:47 +00:00
root 7173f6fe48 Bump Agrarian version to 2.0 2026-05-02 14:40:00 +00:00
root 6821fadc3d Add Qt mining controls and update Agrarian copyrights 2026-05-02 14:35:54 +00:00
root 9b110d5523 Clean stale objects before Linux daemon builds 2026-05-02 07:25:10 +00:00
root b7a32e71d0 Fix build menu process guard exit 2026-05-02 07:10:18 +00:00
root 37e006a65f Improve small-network sync and build safety 2026-05-02 07:07:02 +00:00
root 83e0085a60 Update build docs for current depends baseline 2026-05-02 04:37:05 +00:00
root 4b5743df75 Upgrade Expat and FreeType depends 2026-05-02 04:30:57 +00:00
root 7371eb703e Harden Windows cross-builds 2026-05-01 23:08:37 +00:00
root 746e787bf6 Build Qt lrelease in depends 2026-05-01 19:23:48 +00:00
root fae5c5cf8a Harden Linux Qt wallet installer 2026-05-01 17:48:50 +00:00
root 223cf305e9 Make Qt OpenSSL TLS plugin optional 2026-05-01 16:15:17 +00:00
root 906a6affea Bootstrap secp256k1 in build scripts 2026-05-01 15:55:52 +00:00
root 5e4789e28c Make qminimal plugin optional for Qt6 2026-05-01 14:43:31 +00:00
root 1d70ec7cde Cache native packages from build prefix 2026-05-01 14:19:13 +00:00
root dac5bbedc6 Reject invalid native protobuf cache 2026-05-01 14:09:50 +00:00
root fa0162eff2 Verify build menu checkout freshness 2026-05-01 04:53:52 +00:00
root 8a52d9d220 Diagnose missing native protoc archives 2026-05-01 04:50:16 +00:00
root 1d98d86549 Stage native protoc directly 2026-05-01 04:45:22 +00:00
root e2a4fac0af Recover native protoc during depends install 2026-05-01 04:12:06 +00:00
root cff863ed61 Harden depends archive installation 2026-05-01 01:15:35 +00:00
root 918f4258c2 Normalize native protoc path handling 2026-05-01 00:52:13 +00:00
root 97544982c8 Stage native protoc for Linux wallet builds 2026-05-01 00:46:54 +00:00
root c77e9e431e Avoid duplicate build menu prompts 2026-05-01 00:26:32 +00:00
root feddf93f4c Update depends install prefix for Qt6 2026-05-01 00:25:23 +00:00
root 683984aab1 Remove stale Qt work tree before wallet builds 2026-04-30 23:58:35 +00:00
root f30ecfcba9 Clear stale Qt configure state for wallet builds 2026-04-30 19:52:31 +00:00
root 31afab9651 Re-exec build menu after checkout update 2026-04-30 19:45:40 +00:00
root 537af9013d Complete Linux Qt xcb dependency set 2026-04-30 19:41:38 +00:00
root 3dad5765ca Install target packages after repo update 2026-04-30 19:36:55 +00:00
root f59b53a467 Use depends protoc for Linux wallet builds 2026-04-30 19:33:03 +00:00
root 99ff9fefbb Install Linux Qt xcb build dependencies 2026-04-30 19:22:08 +00:00
root e5677eab7e Default build menu jobs to CPU count 2026-04-30 19:15:09 +00:00
root ab515d7773 Preserve generated Makefiles in Linux build 2026-04-30 19:11:48 +00:00
root bb3181775b Reset stale configure state for Linux builds 2026-04-30 17:59:15 +00:00
root 80896f3248 Add C++17 support to autotools macro 2026-04-30 17:55:34 +00:00
root cf17c878f4 Use depends for Linux daemon builds 2026-04-30 15:54:38 +00:00
root b1cfd32e8e Add Ubuntu apt source repair to build menu 2026-04-30 15:34:08 +00:00
root 68f5e69a2e Improve build menu apt dependency handling 2026-04-30 15:30:07 +00:00
root 1d659458ae Make build menu branch aware 2026-04-30 15:23:28 +00:00
root a95d23c7f1 Keep build menu under local user 2026-04-30 15:16:24 +00:00
root f7fd473a4c Add interactive Agrarian build menu 2026-04-30 15:06:40 +00:00
root 1fc1048a51 Update documentation for Agrarian 2.0 modernization 2026-04-30 14:51:14 +00:00
root c90370640c Modernize Windows Qt6 wallet build 2026-04-30 14:46:44 +00:00
root 099316b662 Update build documentation 2026-04-30 06:48:22 +00:00
root 49ac41045b Modernize Qt dependency path 2026-04-30 06:38:51 +00:00
root c655e4d576 Upgrade depends Boost to 1.91 2026-04-29 20:37:24 +00:00
root 20d8028ead Upgrade depends OpenSSL to 3.5 LTS 2026-04-29 18:08:11 +00:00
root 6d2161f41f Add Ubuntu daemon installer and DNS seeds 2026-04-29 16:13:07 +00:00
145 changed files with 5140 additions and 2456 deletions
+9
View File
@@ -23,6 +23,12 @@ Thumbs.db
core core
core.* core.*
# Runtime node/wallet config. Examples under contrib/ stay tracked.
/agrarian.conf
/bitcoin.conf
/.agrarian/
/.bitcoin/
# ----------------------------- # -----------------------------
# Autotools / configure outputs # Autotools / configure outputs
# ----------------------------- # -----------------------------
@@ -100,6 +106,8 @@ ninja-build/
# Qt build artifacts (if applicable) # Qt build artifacts (if applicable)
*.qrc.depends *.qrc.depends
moc_*.cpp moc_*.cpp
*.moc
*.qm
ui_*.h ui_*.h
qrc_*.cpp qrc_*.cpp
@@ -115,6 +123,7 @@ qrc_*.cpp
/depends/i686-w64-mingw32/ /depends/i686-w64-mingw32/
/depends/x86_64-w64-mingw32/ /depends/x86_64-w64-mingw32/
/depends/*-apple-darwin*/ /depends/*-apple-darwin*/
/depends/*-linux-gnu/
/depends/*-unknown-linux-gnu*/ /depends/*-unknown-linux-gnu*/
/depends/*-pc-linux-gnu*/ /depends/*-pc-linux-gnu*/
/depends/*-w64-mingw32*/ /depends/*-w64-mingw32*/
+3 -1
View File
@@ -1,8 +1,10 @@
## travis build scripts ## travis build scripts
Status: legacy documentation. The current Agrarian 2.0 modernization work is
validated with local build helpers and smoke tests, not Travis CI.
The `.travis` directory contains scripts for each build step in each build stage. The `.travis` directory contains scripts for each build step in each build stage.
Currently the travis build defines two stages `lint` and `test`. Each stage has Currently the travis build defines two stages `lint` and `test`. Each stage has
it's own [lifecycle](https://docs.travis-ci.com/user/customizing-the-build/#the-build-lifecycle). it's own [lifecycle](https://docs.travis-ci.com/user/customizing-the-build/#the-build-lifecycle).
Every script in here is named and numbered according to which stage and lifecycle Every script in here is named and numbered according to which stage and lifecycle
step it belongs to. step it belongs to.
+20 -5
View File
@@ -1,13 +1,28 @@
Building Agrarian Building Agrarian
Use the autogen script to prepare the build environment. The preferred current build path uses the deterministic depends system.
./autogen.sh ./autogen.sh
./configure JOBS=1 ./contrib/build-linux.sh
For the Ubuntu desktop wallet:
JOBS=1 ./contrib/build-linux-wallet.sh
For a manual build, build depends first and configure against its config.site:
make -C depends HOST=x86_64-pc-linux-gnu NO_QT=0
./autogen.sh
CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
make make
Always verify the signatures and checksums. The current native Qt wallet depends baseline includes Qt 6.8.3, OpenSSL 3.5.6,
Boost 1.91.0, Expat 2.8.0, FreeType 2.14.3, Berkeley DB 4.8.30, libevent, and
GMP. Protobuf/BIP70 payment requests were removed. Prefer the helper scripts in
`contrib/` for repeatable fresh-host builds.
Always verify source checksums and release signatures when building a release.
See doc/build-*.md for instructions on building agrariand, See doc/build-*.md for instructions on building agrariand,
the intended-for-services, no-graphical-interface, reference the intended-for-services, no-graphical-interface implementation of Agrarian,
implementation of Agrarian. and agrarian-qt, the desktop wallet.
+1 -1
View File
@@ -1,5 +1,5 @@
# 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.
+7 -9
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.
@@ -237,8 +237,9 @@ am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/test/functional/test_runner.py \ $(top_srcdir)/test/functional/test_runner.py \
$(top_srcdir)/test/util/bitcoin-util-test.py \ $(top_srcdir)/test/util/bitcoin-util-test.py \
$(top_srcdir)/test/util/rpcauth-test.py COPYING INSTALL \ $(top_srcdir)/test/util/rpcauth-test.py COPYING INSTALL \
build-aux/compile build-aux/config.guess build-aux/config.sub \ README.md build-aux/compile build-aux/config.guess \
build-aux/install-sh build-aux/ltmain.sh build-aux/missing build-aux/config.sub build-aux/install-sh build-aux/ltmain.sh \
build-aux/missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir) top_distdir = $(distdir)
@@ -354,6 +355,7 @@ EVENT_PTHREADS_LIBS = @EVENT_PTHREADS_LIBS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@ EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@
FGREP = @FGREP@ FGREP = @FGREP@
FILECMD = @FILECMD@
GCOV = @GCOV@ GCOV = @GCOV@
GENHTML = @GENHTML@ GENHTML = @GENHTML@
GENISOIMAGE = @GENISOIMAGE@ GENISOIMAGE = @GENISOIMAGE@
@@ -364,7 +366,7 @@ GREP = @GREP@
HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@ HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@
HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@ HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@
HARDENED_LDFLAGS = @HARDENED_LDFLAGS@ HARDENED_LDFLAGS = @HARDENED_LDFLAGS@
HAVE_CXX11 = @HAVE_CXX11@ HAVE_CXX17 = @HAVE_CXX17@
HEXDUMP = @HEXDUMP@ HEXDUMP = @HEXDUMP@
IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@ IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@
INSTALL = @INSTALL@ INSTALL = @INSTALL@
@@ -425,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@
@@ -435,8 +434,6 @@ PYTHON = @PYTHON@
PYTHONPATH = @PYTHONPATH@ PYTHONPATH = @PYTHONPATH@
QR_CFLAGS = @QR_CFLAGS@ QR_CFLAGS = @QR_CFLAGS@
QR_LIBS = @QR_LIBS@ QR_LIBS = @QR_LIBS@
QT5_CFLAGS = @QT5_CFLAGS@
QT5_LIBS = @QT5_LIBS@
QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@ QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@
QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@ QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@
QTCGL_CFLAGS = @QTCGL_CFLAGS@ QTCGL_CFLAGS = @QTCGL_CFLAGS@
@@ -459,6 +456,7 @@ QTTHEME_CFLAGS = @QTTHEME_CFLAGS@
QTTHEME_LIBS = @QTTHEME_LIBS@ QTTHEME_LIBS = @QTTHEME_LIBS@
QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@ QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@
QTXCBQPA_LIBS = @QTXCBQPA_LIBS@ QTXCBQPA_LIBS = @QTXCBQPA_LIBS@
QT_CFLAGS = @QT_CFLAGS@
QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@ QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@
QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@ QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@
QT_DBUS_LIBS = @QT_DBUS_LIBS@ QT_DBUS_LIBS = @QT_DBUS_LIBS@
+38 -9
View File
@@ -15,13 +15,13 @@ Agrarian is a C++ cryptocurrency-style codebase with a deterministic `depends/`
## System Requirements (Ubuntu) ## System Requirements (Ubuntu)
Install required build tools: Install the baseline build tools:
```bash ```bash
sudo apt update sudo apt update
sudo apt install -y \ sudo apt install -y \
build-essential pkg-config autoconf automake libtool \ build-essential pkg-config autoconf automake libtool \
bsdmainutils python3 curl git bsdmainutils cmake ninja-build python3 curl git
``` ```
For Windows cross-compilation support: For Windows cross-compilation support:
@@ -34,20 +34,25 @@ sudo apt install -y mingw-w64
## Building Dependencies (Deterministic Depends System) ## Building Dependencies (Deterministic Depends System)
All dependency builds are executed from within the `depends/` directory. The preferred build path uses the deterministic `depends/` system instead of
mixing system libraries. The current native Ubuntu wallet path builds Qt 6.8.3,
OpenSSL 3.5.6, Boost 1.91.0, Expat 2.8.0, FreeType 2.14.3, Berkeley DB
4.8.30, and supporting libraries inside `depends/<host-triplet>/`.
All dependency builds are executed from within the `depends/` directory or via
the helper scripts in `contrib/`.
### Native Linux ### Native Linux
```bash ```bash
cd depends cd depends
make -j"$(nproc)" make HOST=x86_64-pc-linux-gnu NO_QT=0 -j"$(nproc)"
``` ```
### Windows Cross-Compile (64-bit) ### Windows Cross-Compile (64-bit)
```bash ```bash
cd depends JOBS=1 ./contrib/build-win64-wallet.sh
make HOST=x86_64-w64-mingw32 -j"$(nproc)"
``` ```
### Windows Cross-Compile (32-bit) ### Windows Cross-Compile (32-bit)
@@ -76,11 +81,27 @@ These directories should not be committed to version control.
## Building Agrarian ## Building Agrarian
Standard autotools workflow: Recommended native Ubuntu daemon build:
```bash ```bash
./autogen.sh ./autogen.sh
./configure JOBS=1 ./contrib/build-linux.sh
```
Recommended native Ubuntu desktop wallet build:
```bash
JOBS=1 ./contrib/build-linux-wallet.sh
```
Use a larger `JOBS` value only when the host has enough RAM. On an 8-core,
16 GB host, `JOBS=8` is reasonable.
Manual autotools workflow:
```bash
./autogen.sh
CONFIG_SITE="$PWD/depends/x86_64-pc-linux-gnu/share/config.site" ./configure
make -j"$(nproc)" make -j"$(nproc)"
``` ```
@@ -92,6 +113,8 @@ To see configuration options:
For current build notes, see: For current build notes, see:
- `doc/modernization.md` for the current 2.0 dependency and build baseline.
- `doc/build-menu.md` for the interactive build menu.
- `doc/build-ubuntu-24.md` for native Ubuntu daemon and wallet builds. - `doc/build-ubuntu-24.md` for native Ubuntu daemon and wallet builds.
- `doc/build-windows.md` for Windows cross-compilation. - `doc/build-windows.md` for Windows cross-compilation.
- `doc/build-wallets.md` for the repeatable desktop wallet quick start. - `doc/build-wallets.md` for the repeatable desktop wallet quick start.
@@ -106,7 +129,13 @@ If enabled:
make check make check
``` ```
Refer to scripts under `contrib/` for additional CI or functional test flows. Current smoke tests:
```bash
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
```
--- ---
+5 -1
View File
@@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# 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.
@@ -26,4 +26,8 @@ if ! command -v autoreconf >/dev/null 2>&1; then
exit 1 exit 1
fi fi
if [ -x "$srcdir/src/secp256k1/autogen.sh" ]; then
(cd "$srcdir/src/secp256k1" && ./autogen.sh)
fi
autoreconf --install --force --warnings=all autoreconf --install --force --warnings=all
+3 -35
View File
@@ -64,7 +64,7 @@ AC_DEFUN([AX_BOOST_SYSTEM],
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS export LDFLAGS
AC_CACHE_CHECK(whether the Boost::System library is available, AC_CACHE_CHECK(whether Boost::System headers are available,
ax_cv_boost_system, ax_cv_boost_system,
[AC_LANG_PUSH([C++]) [AC_LANG_PUSH([C++])
CXXFLAGS_SAVE=$CXXFLAGS CXXFLAGS_SAVE=$CXXFLAGS
@@ -80,40 +80,8 @@ AC_DEFUN([AX_BOOST_SYSTEM],
AC_SUBST(BOOST_CPPFLAGS) AC_SUBST(BOOST_CPPFLAGS)
AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available]) AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available])
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` BOOST_SYSTEM_LIB=""
AC_SUBST(BOOST_SYSTEM_LIB)
LDFLAGS_SAVE=$LDFLAGS
if test "x$ax_boost_user_system_lib" = "x"; then
ax_lib=
for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
[link_system="no"])
done
if test "x$link_system" != "xyes"; then
for libextension in `ls -r $BOOSTLIBDIR/boost_system* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
[link_system="no"])
done
fi
else
for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do
AC_CHECK_LIB($ax_lib, exit,
[BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
[link_system="no"])
done
fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_system library!)
fi
if test "x$link_system" = "xno"; then
AC_MSG_ERROR(Could not link against $ax_lib !)
fi
fi fi
CPPFLAGS="$CPPFLAGS_SAVED" CPPFLAGS="$CPPFLAGS_SAVED"
+63 -3
View File
@@ -10,8 +10,8 @@
# #
# Check for baseline language coverage in the compiler for the specified # Check for baseline language coverage in the compiler for the specified
# version of the C++ standard. If necessary, add switches to CXX and # version of the C++ standard. If necessary, add switches to CXX and
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard) # CXXCPP to enable support. VERSION may be '11' (for the C++11 standard),
# or '14' (for the C++14 standard). # '14' (for the C++14 standard), or '17' (for the C++17 standard).
# #
# The second argument, if specified, indicates whether you insist on an # The second argument, if specified, indicates whether you insist on an
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
@@ -47,7 +47,7 @@ dnl (serial version number 13).
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
m4_if([$1], [11], [], m4_if([$1], [11], [],
[$1], [14], [], [$1], [14], [],
[$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])], [$1], [17], [],
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
m4_if([$2], [], [], m4_if([$2], [], [],
[$2], [ext], [], [$2], [ext], [],
@@ -154,6 +154,12 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
) )
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17
)
dnl Tests for new features in C++11 dnl Tests for new features in C++11
@@ -566,3 +572,57 @@ namespace cxx14
#endif // __cplusplus >= 201402L #endif // __cplusplus >= 201402L
]]) ]])
dnl Tests for new features in C++17
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
#ifndef __cplusplus
#error "This is not a C++ compiler"
#elif __cplusplus < 201703L
#error "This is not a C++17 compiler"
#else
#include <type_traits>
namespace cxx17
{
namespace test_if_constexpr
{
template <typename T>
constexpr int test(T)
{
if constexpr (std::is_integral<T>::value)
return 1;
else
return 0;
}
static_assert(test(1) == 1, "");
static_assert(test(1.0) == 0, "");
}
namespace test_inline_variables
{
struct constants
{
inline static constexpr int value = 17;
};
static_assert(constants::value == 17, "");
}
} // namespace cxx17
#endif // __cplusplus >= 201703L
]])
+112 -15
View File
@@ -53,7 +53,7 @@ dnl CAUTION: Do not use this inside of a conditional.
AC_DEFUN([BITCOIN_QT_INIT],[ AC_DEFUN([BITCOIN_QT_INIT],[
dnl enable qt support dnl enable qt support
AC_ARG_WITH([gui], AC_ARG_WITH([gui],
[AS_HELP_STRING([--with-gui@<:@=no|qt5|auto@:>@], [AS_HELP_STRING([--with-gui@<:@=no|qt5|qt6|auto@:>@],
[build agrarian-qt GUI (default=auto)])], [build agrarian-qt GUI (default=auto)])],
[ [
bitcoin_qt_want_version=$withval bitcoin_qt_want_version=$withval
@@ -134,13 +134,23 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
if test "x$bitcoin_cv_need_acc_widget" = xyes; then if test "x$bitcoin_cv_need_acc_widget" = xyes; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets]) _BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
fi fi
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QMinimalIntegrationPlugin)],[-lqminimal]) _BITCOIN_QT_CHECK_STATIC_PLUGINS_OPTIONAL([Q_IMPORT_PLUGIN(QMinimalIntegrationPlugin)],[-lqminimal],[
AC_DEFINE(QT_QPA_PLATFORM_MINIMAL, 1, [Define this symbol if the minimal qt platform exists]) AC_DEFINE(QT_QPA_PLATFORM_MINIMAL, 1, [Define this symbol if the minimal qt platform exists])
])
if test "x$QT_LIB_PREFIX" = xQt6; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS_OPTIONAL([Q_IMPORT_PLUGIN(QTlsBackendOpenSSL)],[-lqopensslbackend -lssl -lcrypto],[
AC_DEFINE(QT_TLS_OPENSSL, 1, [Define this symbol if the Qt OpenSSL TLS backend exists])
])
fi
if test "x$TARGET_OS" = xwindows; then if test "x$TARGET_OS" = xwindows; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows]) _BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows])
AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows]) AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows])
elif test "x$TARGET_OS" = xlinux; then elif test "x$TARGET_OS" = xlinux; then
if test "x$QT_LIB_PREFIX" = xQt6; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb])
else
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static]) _BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static])
fi
AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb]) AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb])
elif test "x$TARGET_OS" = xdarwin; then elif test "x$TARGET_OS" = xdarwin; then
AX_CHECK_LINK_FLAG([[-framework IOKit]],[QT_LIBS="$QT_LIBS -framework IOKit"],[AC_MSG_ERROR(could not iokit framework)]) AX_CHECK_LINK_FLAG([[-framework IOKit]],[QT_LIBS="$QT_LIBS -framework IOKit"],[AC_MSG_ERROR(could not iokit framework)])
@@ -153,7 +163,13 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
]) ])
if test "x$use_pkgconfig$qt_bin_path" = xyes; then if test "x$use_pkgconfig$qt_bin_path" = xyes; then
qt_bin_path="`$PKG_CONFIG --variable=host_bins Qt5Core 2>/dev/null`" qt_bin_path="`$PKG_CONFIG --variable=host_bins ${QT_LIB_PREFIX}Core 2>/dev/null`"
fi
if test "x$qt_bin_path" != x && test -d "$qt_bin_path/../libexec"; then
qt_bin_path="$qt_bin_path$PATH_SEPARATOR$qt_bin_path/../libexec"
fi
if test "x$qt_bin_path" != x; then
qt_bin_path="$qt_bin_path$PATH_SEPARATOR$PATH"
fi fi
if test "x$use_hardening" != xno; then if test "x$use_hardening" != xno; then
@@ -203,11 +219,11 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
]) ])
fi fi
BITCOIN_QT_PATH_PROGS([MOC], [moc-qt5 moc5 moc], $qt_bin_path) BITCOIN_QT_PATH_PROGS([MOC], [moc-qt6 moc6 moc-qt5 moc5 moc], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([UIC], [uic-qt5 uic5 uic], $qt_bin_path) BITCOIN_QT_PATH_PROGS([UIC], [uic-qt6 uic6 uic-qt5 uic5 uic], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt5 rcc5 rcc], $qt_bin_path) BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt6 rcc6 rcc-qt5 rcc5 rcc], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt5 lrelease5 lrelease], $qt_bin_path) BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt6 lrelease6 lrelease-qt5 lrelease5 lrelease], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt5 lupdate5 lupdate],$qt_bin_path, yes) BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt6 lupdate6 lupdate-qt5 lupdate5 lupdate],$qt_bin_path, yes)
MOC_DEFS='-DHAVE_CONFIG_H -I$(srcdir)' MOC_DEFS='-DHAVE_CONFIG_H -I$(srcdir)'
case $host in case $host in
@@ -246,7 +262,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
],[ ],[
bitcoin_enable_qt=no bitcoin_enable_qt=no
]) ])
AC_MSG_RESULT([$bitcoin_enable_qt (Qt5)]) AC_MSG_RESULT([$bitcoin_enable_qt ($QT_LIB_PREFIX)])
AC_SUBST(QT_PIE_FLAGS) AC_SUBST(QT_PIE_FLAGS)
AC_SUBST(QT_INCLUDES) AC_SUBST(QT_INCLUDES)
@@ -256,7 +272,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
AC_SUBST(QT_DBUS_LIBS) AC_SUBST(QT_DBUS_LIBS)
AC_SUBST(QT_TEST_INCLUDES) AC_SUBST(QT_TEST_INCLUDES)
AC_SUBST(QT_TEST_LIBS) AC_SUBST(QT_TEST_LIBS)
AC_SUBST(QT_SELECT, qt5) AC_SUBST(QT_SELECT)
AC_SUBST(MOC_DEFS) AC_SUBST(MOC_DEFS)
]) ])
@@ -284,6 +300,26 @@ AC_DEFUN([_BITCOIN_QT_CHECK_QT5],[
[bitcoin_cv_qt5=no]) [bitcoin_cv_qt5=no])
])]) ])])
dnl Internal. Check if the included version of Qt is Qt6.
dnl Requires: INCLUDES must be populated as necessary.
dnl Output: bitcoin_cv_qt6=yes|no
AC_DEFUN([_BITCOIN_QT_CHECK_QT6],[
AC_CACHE_CHECK(for Qt 6, bitcoin_cv_qt6,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if QT_VERSION < 0x060000 || QT_VERSION_MAJOR < 6
choke
#endif
]])],
[bitcoin_cv_qt6=yes],
[bitcoin_cv_qt6=no])
])])
dnl Internal. Check if the included version of Qt is greater than Qt58. dnl Internal. Check if the included version of Qt is greater than Qt58.
dnl Requires: INCLUDES must be populated as necessary. dnl Requires: INCLUDES must be populated as necessary.
dnl Output: bitcoin_cv_qt5=yes|no dnl Output: bitcoin_cv_qt5=yes|no
@@ -350,6 +386,24 @@ AC_DEFUN([_BITCOIN_QT_CHECK_STATIC_PLUGINS],[
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS" LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
]) ])
dnl Internal. Check optional static plugin link requirements.
dnl Inputs: $1: A series of Q_IMPORT_PLUGIN().
dnl Inputs: $2: The libraries that resolve $1.
dnl Inputs: $3: Action if found.
AC_DEFUN([_BITCOIN_QT_CHECK_STATIC_PLUGINS_OPTIONAL],[
AC_MSG_CHECKING(for optional static Qt plugins: $2)
CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS"
LIBS="$2 $QT_LIBS $LIBS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#define QT_STATICPLUGIN
#include <QtPlugin>
$1]],
[[return 0;]])],
[AC_MSG_RESULT(yes); QT_LIBS="$2 $QT_LIBS"; $3],
[AC_MSG_RESULT(no)])
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
])
dnl Internal. Find paths necessary for linking qt static plugins dnl Internal. Find paths necessary for linking qt static plugins
dnl Inputs: qt_plugin_path. optional. dnl Inputs: qt_plugin_path. optional.
dnl Outputs: QT_LIBS is appended dnl Outputs: QT_LIBS is appended
@@ -359,6 +413,39 @@ AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
if test -d "$qt_plugin_path/accessible"; then if test -d "$qt_plugin_path/accessible"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible" QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
fi fi
if test "x$QT_LIB_PREFIX" = xQt6; then
if test -d "$qt_plugin_path/imageformats"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/imageformats"
fi
if test -d "$qt_plugin_path/tls"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/tls"
fi
if test -d "$qt_plugin_path/platforminputcontexts"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforminputcontexts"
fi
if test -d "$qt_plugin_path/generic"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/generic"
fi
QT_LIBS="$QT_LIBS -lQt6BundledHarfbuzz -lQt6BundledLibpng -lQt6BundledLibjpeg -lQt6BundledPcre2"
if test "x$TARGET_OS" = xwindows; then
QT_LIBS="$QT_LIBS -lQt6BundledFreetype -ld3d11 -ldxgi -ldwrite -ldwmapi -luxtheme -lversion -lauthz -luserenv -lnetapi32 -lsynchronization -lsecur32 -lwinhttp -lsetupapi -lshcore -lwtsapi32 -ld3d9 -lruntimeobject"
fi
if test "x$TARGET_OS" = xlinux; then
QT_LIBS="-lQt6XcbQpa -lQt6InputSupport -lQt6FbSupport -lQt6DeviceDiscoverySupport $QT_LIBS"
if test "x$PKG_CONFIG" != x; then
qt_multiarch=`$CC -print-multiarch 2>/dev/null`
qt_system_pc_path="${QT_SYSTEM_PKG_CONFIG_LIBDIR}"
if test "x$qt_system_pc_path" = x && test "x$qt_multiarch" != x; then
qt_system_pc_path="/usr/lib/$qt_multiarch/pkgconfig:/lib/$qt_multiarch/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
fi
if test "x$qt_system_pc_path" = x; then
qt_system_pc_path="/usr/lib/pkgconfig:/usr/share/pkgconfig"
fi
QT6_XCB_LIBS=`PKG_CONFIG_LIBDIR="$qt_system_pc_path" $PKG_CONFIG --libs --static x11 x11-xcb xcb xcb-cursor xcb-icccm xcb-image xcb-keysyms xcb-randr xcb-render xcb-renderutil xcb-shape xcb-shm xcb-sync xcb-xfixes xcb-xkb xkbcommon xkbcommon-x11 fontconfig freetype2 harfbuzz 2>/dev/null`
QT_LIBS="$QT_LIBS $QT6_XCB_LIBS"
fi
fi
else
if test "x$use_pkgconfig" = xyes; then if test "x$use_pkgconfig" = xyes; then
: dnl : dnl
m4_ifdef([PKG_CHECK_MODULES],[ m4_ifdef([PKG_CHECK_MODULES],[
@@ -416,6 +503,7 @@ AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
fi fi
fi fi
fi fi
fi
]) ])
dnl Internal. Find Qt libraries using pkg-config. dnl Internal. Find Qt libraries using pkg-config.
@@ -427,14 +515,17 @@ dnl Outputs: All necessary QT_* variables are set.
dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no. dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no.
AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG],[ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG],[
m4_ifdef([PKG_CHECK_MODULES],[ m4_ifdef([PKG_CHECK_MODULES],[
QT_LIB_PREFIX=Qt6
qt_modules="Qt6Core Qt6Gui Qt6Network Qt6Widgets"
if test "x$bitcoin_qt_want_version" = xqt5; then
QT_LIB_PREFIX=Qt5 QT_LIB_PREFIX=Qt5
qt5_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets" qt_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets"
fi
BITCOIN_QT_CHECK([ BITCOIN_QT_CHECK([
PKG_CHECK_MODULES([QT5], [$qt5_modules], [QT_INCLUDES="$QT5_CFLAGS"; QT_LIBS="$QT5_LIBS" have_qt=yes],[have_qt=no]) PKG_CHECK_MODULES([QT], [$qt_modules], [QT_INCLUDES="$QT_CFLAGS"; QT_LIBS="$QT_LIBS" have_qt=yes],[have_qt=no])
if test "x$have_qt" != xyes; then if test "x$have_qt" != xyes; then
have_qt=no _BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG
BITCOIN_QT_FAIL([Qt dependencies not found])
fi fi
]) ])
BITCOIN_QT_CHECK([ BITCOIN_QT_CHECK([
@@ -471,10 +562,17 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
BITCOIN_QT_CHECK([ BITCOIN_QT_CHECK([
if test "x$bitcoin_qt_want_version" = xauto; then if test "x$bitcoin_qt_want_version" = xauto; then
_BITCOIN_QT_CHECK_QT6
_BITCOIN_QT_CHECK_QT5 _BITCOIN_QT_CHECK_QT5
_BITCOIN_QT_CHECK_QT58 _BITCOIN_QT_CHECK_QT58
fi fi
QT_LIB_PREFIX=Qt6
if test "x$bitcoin_qt_want_version" = xqt5; then
QT_LIB_PREFIX=Qt5 QT_LIB_PREFIX=Qt5
fi
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_cv_qt6" != xyes; then
QT_LIB_PREFIX=Qt5
fi
]) ])
BITCOIN_QT_CHECK([ BITCOIN_QT_CHECK([
@@ -527,4 +625,3 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
CXXFLAGS="$TEMP_CXXFLAGS" CXXFLAGS="$TEMP_CXXFLAGS"
LIBS="$TEMP_LIBS" LIBS="$TEMP_LIBS"
]) ])
Vendored
+1853 -677
View File
File diff suppressed because it is too large Load Diff
+5 -12
View File
@@ -1,15 +1,15 @@
dnl Copyright (c) 2026 Agrarian Developers dnl Copyright (c) 2022-2036 Agrarian Developers
dnl Distributed under the MIT/X11 software license, see the accompanying dnl Distributed under the MIT/X11 software license, see the accompanying
dnl file COPYING or http://www.opensource.org/licenses/mit-license.php. dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60]) AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 1) define(_CLIENT_VERSION_MAJOR, 2)
define(_CLIENT_VERSION_MINOR, 0) define(_CLIENT_VERSION_MINOR, 0)
define(_CLIENT_VERSION_REVISION, 0) define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, true) define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2026) define(_COPYRIGHT_YEAR, 2036)
AC_INIT([Agrarian Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[www.agrarian.org],[agrarian]) AC_INIT([Agrarian Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[www.agrarian.org],[agrarian])
AC_CONFIG_SRCDIR([src/main.cpp]) AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADERS([src/config/agrarian-config.h]) AC_CONFIG_HEADERS([src/config/agrarian-config.h])
@@ -62,8 +62,8 @@ case $host in
lt_cv_deplibs_check_method="pass_all" lt_cv_deplibs_check_method="pass_all"
;; ;;
esac esac
dnl Require C++11 compiler (no GNU extensions) dnl Require C++17 compiler (no GNU extensions). Qt 6.8 requires C++17.
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault]) AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory], [nodefault])
dnl Check if -latomic is required for <std::atomic> dnl Check if -latomic is required for <std::atomic>
CHECK_ATOMIC CHECK_ATOMIC
@@ -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)
+14 -5
View File
@@ -2,7 +2,7 @@ Wallet Tools
--------------------- ---------------------
### [BitRPC](/contrib/bitrpc) ### ### [BitRPC](/contrib/bitrpc) ###
Allows for sending of all standard Bitcoin commands via RPC rather than as command line args. Allows for sending standard Agrarian RPC commands via RPC rather than as command line args.
### [SpendFrom](/contrib/spendfrom) ### ### [SpendFrom](/contrib/spendfrom) ###
@@ -21,7 +21,7 @@ Construct a linear, no-fork, best version of the blockchain.
### [Qos](/contrib/qos) ### ### [Qos](/contrib/qos) ###
A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Bitcoin network. This means one can have an always-on bitcoind instance running, and another local bitcoind/bitcoin-qt instance which connects to this node and receives blocks from it. A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Agrarian network. This means one can have an always-on agrariand instance running, and another local agrariand/agrarian-qt instance which connects to this node and receives blocks from it.
### [Seeds](/contrib/seeds) ### ### [Seeds](/contrib/seeds) ###
Utility to generate the pnSeed[] array that is compiled into the client. Utility to generate the pnSeed[] array that is compiled into the client.
@@ -30,8 +30,8 @@ Build Tools and Keys
--------------------- ---------------------
### [Debian](/contrib/debian) ### ### [Debian](/contrib/debian) ###
Contains files used to package bitcoind/bitcoin-qt Contains files used to package agrariand/agrarian-qt
for Debian-based Linux systems. If you compile bitcoind/bitcoin-qt yourself, there are some useful files here. for Debian-based Linux systems. If you compile agrariand/agrarian-qt yourself, there are some useful files here.
### [Gitian-descriptors](/contrib/gitian-descriptors) ### ### [Gitian-descriptors](/contrib/gitian-descriptors) ###
Gavin's notes on getting gitian builds up and running using KVM. Gavin's notes on getting gitian builds up and running using KVM.
@@ -46,7 +46,16 @@ Test and Verify Tools
--------------------- ---------------------
### [TestGen](/contrib/testgen) ### ### [TestGen](/contrib/testgen) ###
Utilities to generate test vectors for the data-driven Bitcoin tests. Utilities to generate test vectors for the data-driven Agrarian tests.
### Smoke Tests ###
Current native build smoke tests:
```
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
```
### [Test Patches](/contrib/test-patches) ### ### [Test Patches](/contrib/test-patches) ###
These patches are applied when the automated pull-tester These patches are applied when the automated pull-tester
+836
View File
@@ -0,0 +1,836 @@
#!/usr/bin/env bash
set -euo pipefail
REPO_URL="${REPO_URL:-https://github.com/pacificao/agrarian.git}"
WORKDIR="${WORKDIR:-$HOME/agrarian}"
HOST_WIN64="${HOST_WIN64:-x86_64-w64-mingw32}"
HOST_ARM64="${HOST_ARM64:-aarch64-linux-gnu}"
MENU_CHOICE="${AGRARIAN_MENU_CHOICE:-}"
ROOT=""
DAEMON_WAS_RUNNING=0
DAEMON_RESTART_MODE=""
DAEMON_RESTART_CMD=()
DAEMON_SYSTEMD_SERVICE=""
detect_script_branch() {
local script_dir
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
git -C "$script_dir" rev-parse --abbrev-ref HEAD 2>/dev/null || true
}
if [[ -z "${BRANCH:-}" ]]; then
BRANCH="$(detect_script_branch)"
fi
BRANCH="${BRANCH:-main}"
detect_build_jobs() {
if command -v nproc >/dev/null 2>&1; then
nproc
elif command -v getconf >/dev/null 2>&1; then
getconf _NPROCESSORS_ONLN
else
echo 1
fi
}
JOBS="${JOBS:-$(detect_build_jobs)}"
if [[ "${EUID:-$(id -u)}" -eq 0 && "${ALLOW_ROOT_BUILD_MENU:-0}" != "1" ]]; then
cat >&2 <<EOF
Do not run this script with sudo.
Run it as your normal local user:
./contrib/agrarian-build-menu.sh
The script will ask for sudo only when it needs to install Ubuntu packages or
set the MinGW POSIX compiler alternatives. Repository checkout, compilation,
daemon config, and user systemd service setup run as the local user.
EOF
exit 1
fi
has_cmd() {
command -v "$1" >/dev/null 2>&1
}
progress() {
local percent="$1"
local message="$2"
local width=30
local filled=$((percent * width / 100))
local empty=$((width - filled))
local bar
bar="$(printf '%*s' "$filled" '' | tr ' ' '#')"
bar+="$(printf '%*s' "$empty" '' | tr ' ' '-')"
printf '\n[%s] %3d%% %s\n' "$bar" "$percent" "$message"
}
fail() {
echo
echo "ERROR: $*" >&2
exit 1
}
run_step() {
local percent="$1"
local message="$2"
shift 2
progress "$percent" "$message"
"$@"
}
prompt() {
local question="$1"
local default="${2:-}"
local answer
read -r -p "$question${default:+ [$default]}: " answer
echo "${answer:-$default}"
}
confirm() {
local question="$1"
local answer
read -r -p "$question [y/N]: " answer
[[ "$answer" == "y" || "$answer" == "Y" || "$answer" == "yes" || "$answer" == "YES" ]]
}
process_pids() {
local name="$1"
pgrep -u "$(id -u)" -x "$name" 2>/dev/null || true
}
all_process_pids() {
local name="$1"
pgrep -x "$name" 2>/dev/null || true
}
other_user_process_pids() {
local name="$1"
local pid owner current_user
current_user="$(id -un)"
while IFS= read -r pid; do
[[ -n "$pid" ]] || continue
owner="$(ps -o user= -p "$pid" 2>/dev/null | awk '{print $1}')"
if [[ -n "$owner" && "$owner" != "$current_user" ]]; then
printf '%s %s\n' "$pid" "$owner"
fi
done < <(all_process_pids "$name")
return 0
}
process_cmdline() {
local pid="$1"
tr '\0' '\n' < "/proc/$pid/cmdline" 2>/dev/null || true
}
daemon_cli_path() {
if [[ -x "$ROOT/src/agrarian-cli" ]]; then
echo "$ROOT/src/agrarian-cli"
elif has_cmd agrarian-cli; then
command -v agrarian-cli
else
return 1
fi
}
daemon_args_from_cmdline() {
local pid="$1"
local arg
while IFS= read -r arg; do
case "$arg" in
-conf=*|-datadir=*|-testnet|-regtest)
printf '%s\n' "$arg"
;;
esac
done < <(process_cmdline "$pid")
}
remember_daemon_restart() {
local pid="$1"
local arg exe
DAEMON_RESTART_MODE="command"
DAEMON_RESTART_CMD=()
exe="$(readlink -f "/proc/$pid/exe" 2>/dev/null || true)"
[[ -n "$exe" ]] || exe="$ROOT/src/agrariand"
DAEMON_RESTART_CMD+=("$exe")
while IFS= read -r arg; do
DAEMON_RESTART_CMD+=("$arg")
done < <(daemon_args_from_cmdline "$pid")
case " ${DAEMON_RESTART_CMD[*]} " in
*" -daemon "*) ;;
*) DAEMON_RESTART_CMD+=("-daemon") ;;
esac
}
active_user_daemon_service() {
has_cmd systemctl || return 1
systemctl --user is-active --quiet agrariand.service 2>/dev/null || return 1
echo "agrariand.service"
}
stop_running_daemon() {
local pids pid cli args=() service
pids="$(process_pids agrariand)"
[[ -n "$pids" ]] || return 0
DAEMON_WAS_RUNNING=1
service="$(active_user_daemon_service || true)"
if [[ -n "$service" ]]; then
DAEMON_RESTART_MODE="systemd"
DAEMON_SYSTEMD_SERVICE="$service"
echo "Detected running user service: $service"
else
pid="$(printf '%s\n' "$pids" | head -n 1)"
remember_daemon_restart "$pid"
echo "Detected running agrariand process: $pid"
fi
if ! confirm "Stop agrariand gracefully before building?"; then
fail "Refusing to build while agrariand is running."
fi
if [[ "$DAEMON_RESTART_MODE" == "systemd" ]]; then
systemctl --user stop "$DAEMON_SYSTEMD_SERVICE"
else
pid="$(printf '%s\n' "$pids" | head -n 1)"
cli="$(daemon_cli_path)" || fail "agrarian-cli is required to stop the running daemon gracefully."
mapfile -t args < <(daemon_args_from_cmdline "$pid")
"$cli" "${args[@]}" stop
fi
local waited=0
while [[ -n "$(process_pids agrariand)" && "$waited" -lt 120 ]]; do
sleep 1
waited=$((waited + 1))
done
[[ -z "$(process_pids agrariand)" ]] || fail "agrariand did not stop within 120 seconds. Build was not started."
}
stop_running_qt_wallet() {
local pids
pids="$(process_pids agrarian-qt)"
[[ -n "$pids" ]] || return 0
cat >&2 <<EOF
Detected a running Agrarian Qt wallet for the current user:
$pids
For wallet safety, this script will not force-close the GUI wallet. Close the
wallet normally and wait for it to finish shutting down before the build starts.
EOF
while [[ -n "$(process_pids agrarian-qt)" ]]; do
if ! confirm "I have closed agrarian-qt; check again?"; then
fail "Refusing to build while agrarian-qt is running."
fi
done
}
prepare_running_processes_for_build() {
local other
other="$(other_user_process_pids agrarian-qt)"
[[ -z "$other" ]] || fail "agrarian-qt is running under another user. Stop it before building: $other"
other="$(other_user_process_pids agrariand)"
[[ -z "$other" ]] || fail "agrariand is running under another user. Stop it before building: $other"
stop_running_qt_wallet
stop_running_daemon
}
restart_previous_daemon() {
[[ "$DAEMON_WAS_RUNNING" == "1" ]] || return 0
if [[ -n "$(process_pids agrariand)" ]]; then
echo "agrariand is already running."
return 0
fi
if ! confirm "Restart agrariand now using the previous startup method?"; then
echo "agrariand was running before the build and is currently stopped."
return 0
fi
if [[ "$DAEMON_RESTART_MODE" == "systemd" ]]; then
if [[ "$MENU_CHOICE" == "linux-daemon" || "$MENU_CHOICE" == "linux-qt" ]]; then
mkdir -p "$HOME/.local/bin"
[[ -x "$ROOT/src/agrariand" ]] && install -m 0755 "$ROOT/src/agrariand" "$HOME/.local/bin/agrariand"
[[ -x "$ROOT/src/agrarian-cli" ]] && install -m 0755 "$ROOT/src/agrarian-cli" "$HOME/.local/bin/agrarian-cli"
fi
systemctl --user start "$DAEMON_SYSTEMD_SERVICE"
elif [[ "${#DAEMON_RESTART_CMD[@]}" -gt 0 ]]; then
"${DAEMON_RESTART_CMD[@]}"
else
fail "Could not determine how to restart agrariand."
fi
sleep 5
if [[ -n "$(process_pids agrariand)" ]]; then
echo "agrariand restarted."
else
fail "agrariand did not appear to restart."
fi
}
select_target() {
if [[ -n "$MENU_CHOICE" ]]; then
return 0
fi
if has_cmd whiptail; then
MENU_CHOICE="$(whiptail --title "Agrarian Build Menu" --menu "Select a build target" 20 78 10 \
"linux-daemon" "Compile Linux daemon and CLI tools" \
"linux-qt" "Compile Linux Qt GUI wallet" \
"windows-daemon" "Cross-compile Windows daemon and CLI tools" \
"windows-qt" "Cross-compile Windows Qt GUI wallet" \
"linux-arm64-daemon" "Compile Linux ARM64 daemon and CLI tools" \
"linux-arm64-qt" "Compile Linux ARM64 Qt GUI wallet" \
3>&1 1>&2 2>&3)" || exit 0
else
echo "Agrarian Build Menu"
echo "1) Compile Linux daemon and CLI tools"
echo "2) Compile Linux Qt GUI wallet"
echo "3) Cross-compile Windows daemon and CLI tools"
echo "4) Cross-compile Windows Qt GUI wallet"
echo "5) Compile Linux ARM64 daemon and CLI tools"
echo "6) Compile Linux ARM64 Qt GUI wallet"
local choice
read -r -p "Selection [1-6]: " choice
case "$choice" in
1) MENU_CHOICE="linux-daemon" ;;
2) MENU_CHOICE="linux-qt" ;;
3) MENU_CHOICE="windows-daemon" ;;
4) MENU_CHOICE="windows-qt" ;;
5) MENU_CHOICE="linux-arm64-daemon" ;;
6) MENU_CHOICE="linux-arm64-qt" ;;
*) fail "Invalid selection: $choice" ;;
esac
fi
}
sudo_cmd() {
if [[ "${EUID:-$(id -u)}" -eq 0 ]]; then
"$@"
elif has_cmd sudo; then
sudo "$@"
else
fail "sudo is required to install missing packages. Install sudo or run as root."
fi
}
apt_source_text() {
grep -RhsE '^(deb |Types:|URIs:|Suites:|Components:)' \
/etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources \
2>/dev/null || true
}
ubuntu_sources_need_repair() {
[[ -r /etc/os-release ]] || return 1
# shellcheck disable=SC1091
. /etc/os-release
[[ "${ID:-}" == "ubuntu" && -n "${VERSION_CODENAME:-}" ]] || return 1
local sources
sources="$(apt_source_text)"
[[ "$sources" == *"$VERSION_CODENAME-updates"* && "$sources" == *"$VERSION_CODENAME-security"* ]] && return 1
return 0
}
repair_ubuntu_sources() {
[[ -r /etc/os-release ]] || return 0
# shellcheck disable=SC1091
. /etc/os-release
[[ "${ID:-}" == "ubuntu" && -n "${VERSION_CODENAME:-}" ]] || return 0
local arch uri security_uri source_file
arch="$(dpkg --print-architecture 2>/dev/null || true)"
case "$arch" in
arm64|armhf|ppc64el|riscv64|s390x)
uri="http://ports.ubuntu.com/ubuntu-ports"
security_uri="http://ports.ubuntu.com/ubuntu-ports"
;;
*)
uri="http://archive.ubuntu.com/ubuntu"
security_uri="http://security.ubuntu.com/ubuntu"
;;
esac
source_file="/etc/apt/sources.list.d/agrarian-ubuntu.sources"
cat >&2 <<EOF
This Ubuntu image appears to be missing standard apt suites such as
$VERSION_CODENAME-updates or $VERSION_CODENAME-security.
These suites are required for normal build packages like build-essential,
dpkg-dev, and bzip2 to resolve correctly.
EOF
if ! confirm "Add standard Ubuntu main/universe apt sources for this architecture?"; then
return 0
fi
local temp_file
temp_file="$(mktemp)"
cat > "$temp_file" <<EOF
Types: deb
URIs: $uri
Suites: $VERSION_CODENAME $VERSION_CODENAME-updates
Components: main universe
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: $security_uri
Suites: $VERSION_CODENAME-security
Components: main universe
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF
sudo_cmd install -m 0644 "$temp_file" "$source_file"
rm -f "$temp_file"
echo "Added $source_file"
}
disable_known_bad_ubuntu_mirrors() {
local files=()
local file backup temp_file
[[ -e /etc/apt/sources.list ]] && files+=("/etc/apt/sources.list")
for file in /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do
[[ -e "$file" ]] && files+=("$file")
done
for file in "${files[@]}"; do
if grep -q 'asi-fs-w\.contabo\.net/ubuntu' "$file" 2>/dev/null; then
backup="$file.agrarian-disabled"
temp_file="$(mktemp)"
if [[ "$file" == *.sources ]]; then
cat > "$temp_file" <<EOF
# Disabled by Agrarian build menu because this Ubuntu mirror returned apt errors.
# Original file saved at: $backup
EOF
else
sed 's/^/# Disabled by Agrarian build menu: /' "$file" > "$temp_file"
fi
sudo_cmd cp "$file" "$backup"
sudo_cmd install -m 0644 "$temp_file" "$file"
rm -f "$temp_file"
echo "Disabled broken Ubuntu mirror in $file"
fi
done
}
repair_ubuntu_apt_on_failure() {
local reason="$1"
cat >&2 <<EOF
apt-get update failed while using the current Ubuntu apt sources.
$reason
The script can add official Ubuntu apt sources and disable known broken Ubuntu
mirrors such as asi-fs-w.contabo.net/ubuntu.
EOF
if ! confirm "Repair Ubuntu apt sources and retry?"; then
return 1
fi
repair_ubuntu_sources
disable_known_bad_ubuntu_mirrors
sudo_cmd apt-get update
}
apt_get_update_with_repair() {
if sudo_cmd apt-get update; then
return 0
fi
repair_ubuntu_apt_on_failure "This commonly happens on VPS images with stale provider mirrors."
}
install_packages() {
has_cmd apt-get || fail "This installer currently supports Ubuntu/Debian apt-get hosts."
local packages=(
ca-certificates git build-essential pkg-config autoconf automake libtool
bsdmainutils cmake ninja-build python3 curl make tar patch bzip2 xz-utils
)
case "$MENU_CHOICE" in
linux-qt|linux-arm64-qt)
packages+=(
xvfb
libfontconfig1-dev libfreetype6-dev libharfbuzz-dev
libbrotli-dev libbz2-dev libexpat1-dev libglib2.0-dev
libgraphite2-dev libpng-dev zlib1g-dev
libx11-xcb-dev libxcb1-dev libxcb-cursor-dev libxcb-image0-dev
libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-randr0-dev
libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev
libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev
libxcb-xinerama0-dev libxcb-xkb-dev libxau-dev libxdmcp-dev
libxext-dev libxi-dev libxrender-dev
libxkbcommon-dev libxkbcommon-x11-dev
)
;;
windows-daemon|windows-qt)
packages+=(mingw-w64 g++-mingw-w64-x86-64 g++-mingw-w64-x86-64-posix)
;;
linux-arm64-daemon)
if [[ "$(detect_native_host)" != aarch64-* ]]; then
packages+=(g++-aarch64-linux-gnu binutils-aarch64-linux-gnu)
fi
;;
esac
export DEBIAN_FRONTEND=noninteractive
if ubuntu_sources_need_repair; then
repair_ubuntu_sources
fi
apt_get_update_with_repair
if ! sudo_cmd apt-get install -y "${packages[@]}"; then
cat >&2 <<EOF
Package installation failed.
On a minimal Ubuntu image, this is often an apt source configuration problem.
Check that the standard Ubuntu repositories are enabled, then rerun this script:
sudo apt-cache policy bzip2 build-essential dpkg-dev
sudo apt-get update
EOF
exit 1
fi
}
install_bootstrap_packages() {
has_cmd apt-get || return 0
has_cmd git && return 0
export DEBIAN_FRONTEND=noninteractive
if ubuntu_sources_need_repair; then
repair_ubuntu_sources
fi
apt_get_update_with_repair
sudo_cmd apt-get install -y ca-certificates git
}
ensure_repo() {
local head remote_head
if [[ "${AGRARIAN_PROMPTS_DONE:-0}" != "1" ]]; then
WORKDIR="$(prompt "Repository directory" "$WORKDIR")"
JOBS="$(prompt "Parallel build jobs" "$JOBS")"
fi
if [[ -d "$WORKDIR/.git" ]]; then
ROOT="$WORKDIR"
run_step 25 "Fetching existing Agrarian checkout" git -C "$ROOT" fetch origin "$BRANCH"
run_step 30 "Resetting checkout to origin/$BRANCH" git -C "$ROOT" reset --hard "origin/$BRANCH"
run_step 35 "Checking out $BRANCH" git -C "$ROOT" checkout -B "$BRANCH" "origin/$BRANCH"
run_step 37 "Removing local untracked checkout files" git -C "$ROOT" clean -fd
else
mkdir -p "$(dirname "$WORKDIR")"
run_step 35 "Cloning Agrarian into $WORKDIR" git clone --branch "$BRANCH" "$REPO_URL" "$WORKDIR"
ROOT="$WORKDIR"
fi
head="$(git -C "$ROOT" rev-parse --short HEAD)"
remote_head="$(git -C "$ROOT" rev-parse --short "origin/$BRANCH" 2>/dev/null || true)"
if [[ -n "$remote_head" && "$head" != "$remote_head" ]]; then
fail "Checkout is at $head but origin/$BRANCH is $remote_head. Refusing to build an outdated checkout."
fi
echo "Using Agrarian $BRANCH at commit $head"
cd "$ROOT"
}
reexec_from_checkout() {
[[ "${AGRARIAN_REEXECED:-0}" == "1" ]] && return 0
local repo_script
repo_script="$ROOT/contrib/agrarian-build-menu.sh"
[[ -x "$repo_script" ]] || return 0
repo_script="$(cd "$(dirname "$repo_script")" && pwd -P)/$(basename "$repo_script")"
echo
echo "Restarting with the updated build menu from the checkout..."
exec env \
AGRARIAN_REEXECED=1 \
AGRARIAN_MENU_CHOICE="$MENU_CHOICE" \
AGRARIAN_PROMPTS_DONE=1 \
BRANCH="$BRANCH" \
WORKDIR="$WORKDIR" \
JOBS="$JOBS" \
HOST_WIN64="$HOST_WIN64" \
HOST_ARM64="$HOST_ARM64" \
"$repo_script"
}
detect_native_host() {
"$ROOT/depends/config.guess"
}
ensure_posix_mingw() {
local gcc_path="/usr/bin/$HOST_WIN64-gcc-posix"
local gxx_path="/usr/bin/$HOST_WIN64-g++-posix"
if [[ -x "$gcc_path" && -x "$gxx_path" ]]; then
sudo_cmd update-alternatives --set "$HOST_WIN64-gcc" "$gcc_path" >/dev/null || true
sudo_cmd update-alternatives --set "$HOST_WIN64-g++" "$gxx_path" >/dev/null || true
fi
has_cmd "$HOST_WIN64-g++" || fail "Missing $HOST_WIN64-g++ after package install."
"$HOST_WIN64-g++" --version | head -n 1 | grep -qi posix || fail "$HOST_WIN64-g++ is not using the POSIX thread model."
}
build_windows_daemon() {
ensure_posix_mingw
run_step 45 "Building Windows daemon depends" make -C depends HOST="$HOST_WIN64" NO_QT=1 -j1
if [[ ! -f configure || ! -f src/secp256k1/configure || ! -f src/secp256k1/Makefile.in ]]; then
run_step 60 "Generating configure script" ./autogen.sh
fi
run_step 72 "Configuring Windows daemon build" env CONFIG_SITE="$ROOT/depends/$HOST_WIN64/share/config.site" ./configure \
--prefix=/ \
--without-gui \
--disable-maintainer-mode \
--disable-tests \
--disable-bench \
--disable-zmq \
--with-miniupnpc=no
run_step 82 "Cleaning stale target objects" make clean
run_step 90 "Compiling Windows daemon and CLI tools" make -j"$JOBS"
}
ensure_arm64_toolchain() {
if [[ "$(detect_native_host)" == aarch64-* ]]; then
return 0
fi
has_cmd aarch64-linux-gnu-g++ || fail "Missing aarch64-linux-gnu-g++. Install g++-aarch64-linux-gnu."
has_cmd aarch64-linux-gnu-ar || fail "Missing aarch64-linux-gnu-ar. Install binutils-aarch64-linux-gnu."
}
build_linux_arm64_daemon() {
local build_host
build_host="$(detect_native_host)"
if [[ "$build_host" == aarch64-* ]]; then
run_step 45 "Compiling native Linux ARM64 daemon and CLI tools" env JOBS="$JOBS" ./contrib/build-linux.sh
return 0
fi
ensure_arm64_toolchain
run_step 45 "Building Linux ARM64 daemon depends" make -C depends HOST="$HOST_ARM64" NO_QT=1 -j1
if [[ ! -f configure || ! -f src/secp256k1/configure || ! -f src/secp256k1/Makefile.in ]]; then
run_step 60 "Generating configure script" ./autogen.sh
fi
run_step 72 "Configuring Linux ARM64 daemon build" env CONFIG_SITE="$ROOT/depends/$HOST_ARM64/share/config.site" ./configure \
--build="$build_host" \
--host="$HOST_ARM64" \
--prefix=/ \
--without-gui \
--disable-maintainer-mode \
--disable-tests \
--disable-bench \
--disable-zmq \
--with-miniupnpc=no
run_step 82 "Cleaning stale target objects" make clean
run_step 90 "Compiling Linux ARM64 daemon and CLI tools" make -j"$JOBS"
}
build_linux_arm64_qt() {
local build_host
build_host="$(detect_native_host)"
if [[ "$build_host" != aarch64-* ]]; then
fail "Linux ARM64 Qt wallet builds are native-only for now. Run this option on an ARM64 Ubuntu machine, or use the ARM64 daemon cross-build from this host."
fi
run_step 45 "Compiling native Linux ARM64 Qt GUI wallet" env JOBS="$JOBS" ./contrib/build-linux-wallet.sh
}
build_selected() {
case "$MENU_CHOICE" in
linux-daemon)
run_step 45 "Compiling Linux daemon and CLI tools" env JOBS="$JOBS" ./contrib/build-linux.sh
;;
linux-qt)
run_step 45 "Compiling Linux Qt GUI wallet" env JOBS="$JOBS" ./contrib/build-linux-wallet.sh
;;
windows-daemon)
build_windows_daemon
;;
windows-qt)
run_step 45 "Compiling Windows Qt GUI wallet" env JOBS="$JOBS" ./contrib/build-win64-wallet.sh
;;
linux-arm64-daemon)
build_linux_arm64_daemon
;;
linux-arm64-qt)
build_linux_arm64_qt
;;
*)
fail "Unknown build choice: $MENU_CHOICE"
;;
esac
}
install_user_daemon_service() {
local bindir="$HOME/.local/bin"
local confdir="$HOME/.agrarian"
local systemd_dir="$HOME/.config/systemd/user"
local service_file="$systemd_dir/agrariand.service"
local conf_file="$confdir/agrarian.conf"
local rpcpass
[[ -x "$ROOT/src/agrariand" ]] || fail "Linux daemon binary not found at src/agrariand."
[[ -x "$ROOT/src/agrarian-cli" ]] || fail "Linux CLI binary not found at src/agrarian-cli."
has_cmd systemctl || fail "systemctl is required for user service setup."
mkdir -p "$bindir" "$confdir" "$systemd_dir"
install -m 0755 "$ROOT/src/agrariand" "$bindir/agrariand"
install -m 0755 "$ROOT/src/agrarian-cli" "$bindir/agrarian-cli"
if [[ ! -f "$conf_file" ]]; then
if has_cmd openssl; then
rpcpass="$(openssl rand -hex 32)"
else
rpcpass="$(date +%s)-$RANDOM-$RANDOM"
fi
cat > "$conf_file" <<EOF
server=1
daemon=0
listen=1
dnsseed=1
rpcuser=agrarianrpc
rpcpassword=$rpcpass
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
EOF
chmod 0600 "$conf_file"
fi
cat > "$service_file" <<EOF
[Unit]
Description=Agrarian daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=$bindir/agrariand -conf=$conf_file -datadir=$confdir
ExecStop=$bindir/agrarian-cli -conf=$conf_file -datadir=$confdir stop
Restart=on-failure
RestartSec=10
TimeoutStopSec=120
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now agrariand.service
if has_cmd loginctl; then
loginctl enable-linger "$USER" >/dev/null 2>&1 || true
fi
echo
echo "Agrarian daemon service is installed for the current user."
echo "Config: $conf_file"
echo "Service: $service_file"
echo "Status: systemctl --user status agrariand"
}
show_completion() {
progress 100 "Build finished"
echo
case "$MENU_CHOICE" in
linux-daemon|linux-arm64-daemon)
echo "Linux daemon binaries:"
echo " $ROOT/src/agrariand"
echo " $ROOT/src/agrarian-cli"
echo " $ROOT/src/agrarian-tx"
if [[ "$DAEMON_WAS_RUNNING" == "1" ]]; then
echo "agrariand was running before the build and has been handled by the restart step."
elif confirm "Start agrariand now and enable automatic start at boot for the current user?"; then
install_user_daemon_service
else
echo "Start manually with: $ROOT/src/agrariand -daemon"
fi
;;
linux-qt|linux-arm64-qt)
echo "Linux wallet binaries:"
echo " $ROOT/src/qt/agrarian-qt"
echo " $ROOT/src/agrariand"
echo " $ROOT/src/agrarian-cli"
if [[ "$DAEMON_WAS_RUNNING" == "1" ]]; then
echo "agrariand was running before the build and has been handled by the restart step."
elif confirm "Start agrariand now and enable automatic start at boot for the current user?"; then
install_user_daemon_service
fi
;;
windows-daemon)
echo "Windows daemon binaries:"
echo " $ROOT/src/agrariand.exe"
echo " $ROOT/src/agrarian-cli.exe"
echo " $ROOT/src/agrarian-tx.exe"
echo
echo "Copy those .exe files to a folder on the Windows machine."
echo "Start the daemon from PowerShell or Command Prompt:"
echo " agrariand.exe"
echo "Then use:"
echo " agrarian-cli.exe help"
;;
windows-qt)
echo "Windows wallet binaries:"
echo " $ROOT/src/qt/agrarian-qt.exe"
echo " $ROOT/src/agrariand.exe"
echo " $ROOT/src/agrarian-cli.exe"
echo " $ROOT/src/agrarian-tx.exe"
echo
echo "Copy those .exe files to a folder on the Windows machine."
echo "Launch the GUI wallet with:"
echo " agrarian-qt.exe"
;;
esac
}
main() {
select_target
progress 5 "Selected target: $MENU_CHOICE"
run_step 10 "Installing bootstrap Ubuntu packages" install_bootstrap_packages
ensure_repo
reexec_from_checkout
run_step 40 "Installing required Ubuntu packages" install_packages
run_step 43 "Preparing running Agrarian processes" prepare_running_processes_for_build
build_selected
restart_previous_daemon
show_completion
}
main "$@"
-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 -1
View File
@@ -1,5 +1,5 @@
### BitRPC ### BitRPC
Allows for sending of all standard Bitcoin commands via RPC rather than as command line args. Allows for sending standard Agrarian RPC commands via RPC rather than as command line args.
### Looking for Wallet Tools? ### Looking for Wallet Tools?
BitRPC.py is able to do the exact same thing as `walletchangepass.py` and `walletunlock.py`. Their respective commands in BitRPC.py are: BitRPC.py is able to do the exact same thing as `walletchangepass.py` and `walletunlock.py`. Their respective commands in BitRPC.py are:
+111 -29
View File
@@ -3,13 +3,10 @@ set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
JOBS="${JOBS:-1}" JOBS="${JOBS:-1}"
HOST="${HOST:-x86_64-pc-linux-gnu}" BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
HOST="${HOST:-$BUILD_HOST}"
PREFIX="$ROOT/depends/$HOST" PREFIX="$ROOT/depends/$HOST"
BASE_CONFIG="$PREFIX/share/config.site" BASE_CONFIG="$PREFIX/share/config.site"
CONFIG_SITE_FILE="${CONFIG_SITE_FILE:-/tmp/agrarian-linux-wallet-config.site}"
QT_PKG_CONFIG_DIR="${QT_PKG_CONFIG_DIR:-/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig}"
QT_BINDIR="${QT_BINDIR:-/usr/lib/qt5/bin}"
PROTOC_BINDIR="${PROTOC_BINDIR:-/usr/bin}"
require_cmd() { require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then if ! command -v "$1" >/dev/null 2>&1; then
@@ -25,42 +22,127 @@ require_path() {
fi fi
} }
reset_qt_configure_state() {
local qt_work="$ROOT/depends/work/build/$HOST/qt"
[[ -d "$qt_work" ]] || return 0
echo "Clearing stale Qt configure state for $HOST..."
rm -rf "$qt_work"
}
detect_system_pkg_config_libdir() {
local dirs=()
local multiarch pc_path dir
if command -v dpkg-architecture >/dev/null 2>&1; then
multiarch="$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)"
[[ -n "$multiarch" ]] && dirs+=("/usr/lib/$multiarch/pkgconfig" "/lib/$multiarch/pkgconfig")
fi
multiarch="$(gcc -print-multiarch 2>/dev/null || true)"
[[ -n "$multiarch" ]] && dirs+=("/usr/lib/$multiarch/pkgconfig" "/lib/$multiarch/pkgconfig")
IFS=: read -r -a pc_path <<<"$(pkg-config --variable pc_path pkg-config 2>/dev/null || true)"
dirs+=("${pc_path[@]}" /usr/lib/pkgconfig /usr/share/pkgconfig)
local unique=()
for dir in "${dirs[@]}"; do
[[ -n "$dir" && -d "$dir" ]] || continue
case ":${unique[*]}:" in
*":$dir:"*) ;;
*) unique+=("$dir") ;;
esac
done
(IFS=:; echo "${unique[*]}")
}
preflight_linux_qt_deps() {
local missing=()
local modules=(
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 zlib libpng libbrotlidec libbrotlicommon expat glib-2.0
graphite2
)
local module
export QT_SYSTEM_PKG_CONFIG_LIBDIR="${QT_SYSTEM_PKG_CONFIG_LIBDIR:-$(detect_system_pkg_config_libdir)}"
for module in "${modules[@]}"; do
if ! PKG_CONFIG_LIBDIR="$QT_SYSTEM_PKG_CONFIG_LIBDIR" pkg-config --exists "$module"; then
missing+=("$module")
fi
done
if ((${#missing[@]})); then
cat >&2 <<EOF
Missing Linux Qt/XCB development pkg-config modules:
${missing[*]}
Install the Ubuntu packages from contrib/agrarian-build-menu.sh, then rerun.
For a direct build on Ubuntu 24.04, start with:
sudo apt-get install libfontconfig1-dev libfreetype6-dev libharfbuzz-dev libbrotli-dev libbz2-dev libexpat1-dev libglib2.0-dev libgraphite2-dev libpng-dev zlib1g-dev libx11-xcb-dev libxcb1-dev libxcb-cursor-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxau-dev libxdmcp-dev libxext-dev libxi-dev libxrender-dev libxkbcommon-dev libxkbcommon-x11-dev
EOF
exit 1
fi
echo "Using system pkg-config path for Qt/XCB:"
echo " $QT_SYSTEM_PKG_CONFIG_LIBDIR"
}
reset_configure_state() {
rm -f config.cache config.log config.status libtool
# Stale generated makefiles and libtool scripts can trigger rechecks with
# old autotools/libtool macros after a failed or moved build.
find . \( -name Makefile -o -name config.status -o -name config.log -o -name libtool \) \
! -path './depends/*' \
! -path './.git/*' \
-delete
}
cd "$ROOT" cd "$ROOT"
require_cmd make require_cmd make
require_cmd pkg-config require_cmd pkg-config
require_cmd gcc require_cmd gcc
require_cmd g++ require_cmd g++
require_cmd sed require_cmd cmake
require_cmd cp require_cmd ninja
require_cmd "$PROTOC_BINDIR/protoc"
require_path "$QT_BINDIR/moc"
require_path "$QT_BINDIR/uic"
require_path "$QT_BINDIR/rcc"
require_path "$QT_BINDIR/lrelease"
require_path "$QT_BINDIR/lupdate"
echo "Building native depends for $HOST..." if [[ "$HOST" == "$BUILD_HOST" ]]; then
make -C depends -j"$JOBS" preflight_linux_qt_deps
require_path "$BASE_CONFIG" else
echo "Linux Qt wallet build expects a native HOST. Got HOST=$HOST BUILD_HOST=$BUILD_HOST" >&2
cp "$BASE_CONFIG" "$CONFIG_SITE_FILE" exit 1
sed -i.old \
-e "s#^with_qt_bindir=.*#with_qt_bindir='$QT_BINDIR'#" \
-e "s#^with_protoc_bindir=.*#with_protoc_bindir='$PROTOC_BINDIR'#" \
-e "s#^PKG_CONFIG_LIBDIR=.*#PKG_CONFIG_LIBDIR='$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig:$QT_PKG_CONFIG_DIR'#" \
"$CONFIG_SITE_FILE"
if [[ ! -f configure ]]; then
./autogen.sh
fi fi
echo "Configuring Ubuntu Qt wallet build..." reset_qt_configure_state
CONFIG_SITE="$CONFIG_SITE_FILE" ./configure \
echo "Building native depends for $HOST..."
# The legacy depends system mutates depends/$HOST while configuring each
# package. Package-level parallelism can race and remove headers/libs another
# package is probing, so keep depends serial and use JOBS for the final wallet
# compile below.
make -C depends clean
make -C depends HOST="$HOST" NO_QT=0 -j1
require_path "$BASE_CONFIG"
reset_configure_state
./autogen.sh
echo "Configuring Ubuntu Qt6 wallet build..."
QT_SYSTEM_PKG_CONFIG_LIBDIR="$QT_SYSTEM_PKG_CONFIG_LIBDIR" CONFIG_SITE="$BASE_CONFIG" ./configure \
--disable-maintainer-mode \ --disable-maintainer-mode \
--disable-tests \ --disable-tests \
--disable-bench \ --disable-bench \
--with-gui=qt5 --with-gui=qt6 \
--with-qtdbus=no
echo "Cleaning stale target objects before compiling..."
make clean
echo "Building Ubuntu Qt wallet with JOBS=$JOBS..." echo "Building Ubuntu Qt wallet with JOBS=$JOBS..."
make -j"$JOBS" make -j"$JOBS"
+39 -6
View File
@@ -4,23 +4,56 @@ set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
JOBS="${JOBS:-1}" JOBS="${JOBS:-1}"
MODE="${MODE:-daemon}" MODE="${MODE:-daemon}"
HOST="${HOST:-$("$ROOT/depends/config.guess")}"
PREFIX="$ROOT/depends/$HOST"
BASE_CONFIG="$PREFIX/share/config.site"
require_path() {
if [[ ! -e "$1" ]]; then
echo "Missing required path: $1" >&2
exit 1
fi
}
reset_configure_state() {
rm -f config.cache config.log config.status libtool
# Stale generated makefiles and libtool scripts can trigger rechecks with
# old configure arguments or old autotools/libtool macros after a failed
# build attempt.
find . \( -name Makefile -o -name config.status -o -name config.log -o -name libtool \) \
! -path './depends/*' \
! -path './.git/*' \
-delete
}
cd "$ROOT" cd "$ROOT"
if [[ ! -f configure ]]; then
./autogen.sh
fi
case "$MODE" in case "$MODE" in
daemon) daemon)
./configure \ echo "Building native daemon depends for $HOST..."
# The legacy depends system mutates depends/$HOST while configuring each
# package, so package-level parallelism can race and remove headers/libs
# another package is probing. Keep depends serial; use JOBS for the final
# Agrarian compile below.
make -C depends clean
make -C depends HOST="$HOST" NO_QT=1 -j1
require_path "$BASE_CONFIG"
reset_configure_state
./autogen.sh
echo "Configuring Linux daemon build..."
CONFIG_SITE="$BASE_CONFIG" ./configure \
--without-gui \ --without-gui \
--disable-tests \ --disable-tests \
--disable-bench \ --disable-bench \
--disable-zmq \ --disable-zmq \
--with-miniupnpc=no \ --with-miniupnpc=no \
--with-incompatible-bdb \
CXXFLAGS="${CXXFLAGS:--O0 -g0 --param ggc-min-expand=1 --param ggc-min-heapsize=32768}" CXXFLAGS="${CXXFLAGS:--O0 -g0 --param ggc-min-expand=1 --param ggc-min-heapsize=32768}"
echo "Cleaning stale target objects before compiling..."
make clean
;; ;;
wallet) wallet)
exec "$ROOT/contrib/build-linux-wallet.sh" exec "$ROOT/contrib/build-linux-wallet.sh"
+34 -35
View File
@@ -4,11 +4,9 @@ set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
JOBS="${JOBS:-1}" JOBS="${JOBS:-1}"
HOST="${HOST:-x86_64-w64-mingw32}" HOST="${HOST:-x86_64-w64-mingw32}"
BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
PREFIX="$ROOT/depends/$HOST" PREFIX="$ROOT/depends/$HOST"
NATIVE_BIN="$PREFIX/native/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
@@ -27,7 +25,7 @@ require_path() {
copy_first_match() { copy_first_match() {
local name="$1" local name="$1"
local match local match
match="$(find "$ROOT/depends/work/build/$HOST" -path "*/qtbase/bin/$name" -type f | sort | tail -n 1 || true)" match="$(find "$ROOT/depends/$BUILD_HOST" \( -path "*/bin/$name" -o -path "*/libexec/$name" \) -type f | sort | tail -n 1 || true)"
if [[ -z "$match" ]]; then if [[ -z "$match" ]]; then
echo "Could not find Qt host tool after depends build: $name" >&2 echo "Could not find Qt host tool after depends build: $name" >&2
exit 1 exit 1
@@ -50,38 +48,17 @@ 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"
for tool in moc uic rcc; do for tool in moc uic rcc lrelease; do
if [[ ! -x "$NATIVE_BIN/$tool" ]]; then if [[ ! -x "$NATIVE_BIN/$tool" ]]; then
copy_first_match "$tool" copy_first_match "$tool"
fi fi
done done
for tool in lrelease lupdate; do if [[ ! -x "$NATIVE_BIN/lupdate" ]] && command -v lupdate >/dev/null 2>&1; then
if [[ ! -x "$NATIVE_BIN/$tool" ]]; then cp "$(command -v lupdate)" "$NATIVE_BIN/lupdate"
require_cmd "$tool"
cp "$(command -v "$tool")" "$NATIVE_BIN/$tool"
fi
done
if [[ ! -x "$NATIVE_BIN/protoc" ]] || ! "$NATIVE_BIN/protoc" --version | grep -q "libprotoc $PROTOBUF_VERSION"; then
build_native_protoc
fi fi
} }
@@ -97,25 +74,47 @@ require_cmd cp
ensure_posix_mingw ensure_posix_mingw
echo "Building Win64 depends for $HOST..." echo "Building Win64 depends for $HOST..."
make -C depends HOST="$HOST" NO_QT=0 -j"$JOBS" echo "Building native Qt6 host tools and metadata for $BUILD_HOST..."
# Keep the top-level depends scheduler serial. Individual package build
# systems still use parallelism, but parallel package configure steps race on
# the shared depends prefix and can make Qt see missing zlib/OpenSSL paths.
make -C depends HOST="$BUILD_HOST" NO_QT=0 qt -j1
qt_host_cache=( "$ROOT/depends/built/$BUILD_HOST/qt"/qt-*.tar.gz )
if [[ ${#qt_host_cache[@]} -ne 1 || ! -f "${qt_host_cache[0]}" ]]; then
echo "Could not locate a single native Qt6 cache archive for $BUILD_HOST" >&2
exit 1
fi
mkdir -p "$ROOT/depends/$BUILD_HOST"
tar --no-same-owner -xf "${qt_host_cache[0]}" -C "$ROOT/depends/$BUILD_HOST"
make -C depends HOST="$HOST" NO_QT=0 -j1
require_path "$PREFIX/share/config.site" require_path "$PREFIX/share/config.site"
ensure_native_tools ensure_native_tools
if [[ ! -f configure ]]; then if [[ ! -f configure || ! -f src/secp256k1/configure || ! -f src/secp256k1/Makefile.in ]]; then
./autogen.sh ./autogen.sh
fi fi
echo "Configuring Win64 Qt wallet build..." if [[ build-aux/m4/bitcoin_qt.m4 -nt configure || build-aux/m4/bitcoin_qt.m4 -nt aclocal.m4 ]]; then
./autogen.sh
fi
echo "Configuring Win64 Qt6 wallet build..."
CONFIG_SITE="$PREFIX/share/config.site" ./configure \ CONFIG_SITE="$PREFIX/share/config.site" ./configure \
--prefix=/ \ --prefix=/ \
--disable-maintainer-mode \ --disable-maintainer-mode \
--disable-tests \ --disable-tests \
--disable-bench \ --disable-bench \
--with-gui=qt5 \ --with-gui=qt6 \
--with-qt-incdir="$PREFIX/include" \ --with-qt-incdir="$PREFIX/include" \
--with-qt-libdir="$PREFIX/lib" --with-qt-libdir="$PREFIX/lib" \
--with-qt-plugindir="$PREFIX/plugins" \
--with-qt-translationdir="$PREFIX/translations" \
--with-qt-bindir="$NATIVE_BIN"
echo "Building Win64 Qt wallet with JOBS=$JOBS..." echo "Cleaning stale target objects before compiling..."
make clean
echo "Building Win64 Qt6 wallet with JOBS=$JOBS..."
make -j"$JOBS" make -j"$JOBS"
echo "Windows wallet build complete:" echo "Windows wallet build complete:"
-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
+8 -8
View File
@@ -25,7 +25,7 @@ git diff -U0 HEAD~1.. | ./contrib/devtools/clang-format-diff.py -p1 -i -v
copyright\_header.py copyright\_header.py
==================== ====================
Provides utilities for managing copyright headers of `The PIVX Provides utilities for managing copyright headers of `The Agrarian
developers` in repository source files. It has three subcommands: developers` in repository source files. It has three subcommands:
``` ```
@@ -44,31 +44,31 @@ Specifying `verbose` will list the full filenames of files of each category.
copyright\_header.py update \<base\_directory\> [verbose] copyright\_header.py update \<base\_directory\> [verbose]
--------------------------------------------------------- ---------------------------------------------------------
Updates all the copyright headers of `The PIVX developers` which were Updates all the copyright headers of `The Agrarian developers` which were
changed in a year more recent than is listed. For example: changed in a year more recent than is listed. For example:
``` ```
// Copyright (c) <firstYear>-<lastYear> The PIVX developers // Copyright (c) <firstYear>-<lastYear> The Agrarian developers
``` ```
will be updated to: will be updated to:
``` ```
// Copyright (c) <firstYear>-<lastModifiedYear> The PIVX developers // Copyright (c) <firstYear>-<lastModifiedYear> The Agrarian developers
``` ```
where `<lastModifiedYear>` is obtained from the `git log` history. where `<lastModifiedYear>` is obtained from the `git log` history.
This subcommand also handles copyright headers that have only a single year. In This subcommand also handles copyright headers that have only a single year. In
those cases: those cases:
``` ```
// Copyright (c) <year> The PIVX developers // Copyright (c) <year> The Agrarian developers
``` ```
will be updated to: will be updated to:
``` ```
// Copyright (c) <year>-<lastModifiedYear> The PIVX developers // Copyright (c) <year>-<lastModifiedYear> The Agrarian developers
``` ```
where the update is appropriate. where the update is appropriate.
copyright\_header.py insert \<file\> copyright\_header.py insert \<file\>
------------------------------------ ------------------------------------
Inserts a copyright header for `The PIVX developers` at the top of the Inserts a copyright header for `The Agrarian developers` at the top of the
file in either Python or C++ style as determined by the file extension. If the file in either Python or C++ style as determined by the file extension. If the
file is a Python file and it has `#!` starting the first line, the header is file is a Python file and it has `#!` starting the first line, the header is
inserted in the line below it. inserted in the line below it.
@@ -78,7 +78,7 @@ The copyright dates will be set to be `<year_introduced>-<current_year>` where
`<year_introduced>` is equal to `<current_year>`, it will be set as a single `<year_introduced>` is equal to `<current_year>`, it will be set as a single
year rather than two hyphenated years. year rather than two hyphenated years.
If the file already has a copyright for `The PIVX developers`, the If the file already has a copyright for `The Agrarian developers`, the
script will exit. script will exit.
gen-manpages.sh gen-manpages.sh
+100
View File
@@ -0,0 +1,100 @@
#!/usr/bin/env bash
set -euo pipefail
REPO_URL="${REPO_URL:-https://github.com/pacificao/agrarian.git}"
BRANCH="${BRANCH:-main}"
INSTALL_DIR="${INSTALL_DIR:-/opt/agrarian}"
AGRARIAN_USER="${AGRARIAN_USER:-agrarian}"
DATA_DIR="${DATA_DIR:-/var/lib/agrarian}"
CONF_DIR="${CONF_DIR:-/etc/agrarian}"
CONF_FILE="${CONF_FILE:-$CONF_DIR/agrarian.conf}"
SERVICE_FILE="${SERVICE_FILE:-/etc/systemd/system/agrariand.service}"
JOBS="${JOBS:-$(nproc)}"
RPCUSER="${RPCUSER:-agrarianrpc}"
RPCPASSWORD="${RPCPASSWORD:-$(openssl rand -hex 32)}"
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
echo "Run as root: sudo $0" >&2
exit 1
fi
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y \
git ca-certificates build-essential pkg-config autoconf automake libtool \
bsdmainutils libboost-all-dev libevent-dev libgmp-dev libssl-dev \
libdb5.3-dev libdb5.3++-dev
if ! id "$AGRARIAN_USER" >/dev/null 2>&1; then
useradd --system --home "$DATA_DIR" --shell /usr/sbin/nologin "$AGRARIAN_USER"
fi
mkdir -p "$(dirname "$INSTALL_DIR")" "$DATA_DIR" "$CONF_DIR"
if [[ -d "$INSTALL_DIR/.git" ]]; then
git -C "$INSTALL_DIR" fetch origin
git -C "$INSTALL_DIR" checkout "$BRANCH"
git -C "$INSTALL_DIR" pull --ff-only origin "$BRANCH"
else
rm -rf "$INSTALL_DIR"
git clone --branch "$BRANCH" "$REPO_URL" "$INSTALL_DIR"
fi
cd "$INSTALL_DIR"
chmod +x ./autogen.sh ./contrib/build-linux.sh
JOBS="$JOBS" ./contrib/build-linux.sh
install -m 0755 src/agrariand /usr/local/bin/agrariand
install -m 0755 src/agrarian-cli /usr/local/bin/agrarian-cli
chown -R "$AGRARIAN_USER:$AGRARIAN_USER" "$DATA_DIR" "$CONF_DIR"
if [[ ! -f "$CONF_FILE" ]]; then
install -m 0640 -o "$AGRARIAN_USER" -g "$AGRARIAN_USER" /dev/null "$CONF_FILE"
cat > "$CONF_FILE" <<EOF
server=1
daemon=0
listen=1
dnsseed=1
txindex=1
rpcuser=$RPCUSER
rpcpassword=$RPCPASSWORD
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
EOF
chown "$AGRARIAN_USER:$AGRARIAN_USER" "$CONF_FILE"
chmod 0640 "$CONF_FILE"
fi
cat > "$SERVICE_FILE" <<EOF
[Unit]
Description=Agrarian daemon
After=network-online.target
Wants=network-online.target
[Service]
User=$AGRARIAN_USER
Group=$AGRARIAN_USER
Type=simple
ExecStart=/usr/local/bin/agrariand -conf=$CONF_FILE -datadir=$DATA_DIR
ExecStop=/usr/local/bin/agrarian-cli -conf=$CONF_FILE -datadir=$DATA_DIR stop
Restart=on-failure
RestartSec=10
TimeoutStopSec=120
PrivateTmp=true
ProtectSystem=full
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now agrariand
echo "Agrarian daemon installed and started."
echo "Branch: $BRANCH"
echo "Install: $INSTALL_DIR"
echo "Config: $CONF_FILE"
echo "Data: $DATA_DIR"
+1 -1
View File
@@ -1,5 +1,5 @@
### Qos ### ### Qos ###
This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Bitcoin network. It limits outbound TCP traffic with a source or destination port of 51336, but not if the destination IP is within a LAN (defined as 192.168.x.x). This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Agrarian network. It limits outbound TCP traffic with a source or destination port of 51336, but not if the destination IP is within a LAN (defined as 192.168.x.x).
This means one can have an always-on agrariand instance running, and another local agrariand/agrarian-qt instance which connects to this node and receives blocks from it. This means one can have an always-on agrariand instance running, and another local agrariand/agrarian-qt instance which connects to this node and receives blocks from it.
+7 -4
View File
@@ -1,6 +1,10 @@
RPM Spec File Notes RPM Spec File Notes
------------------- -------------------
Status: this RPM packaging guide is historical. It has not been revalidated for
the Agrarian 2.0 Qt6/OpenSSL3/Boost modernization path. Prefer the Ubuntu 24.04
depends-based build docs until RPM packaging is refreshed.
The RPM spec file provided here is for Bitcoin-Core 0.12.0 and builds on CentOS The RPM spec file provided here is for Bitcoin-Core 0.12.0 and builds on CentOS
7 with either the CentOS provided OpenSSL library or with LibreSSL as packaged 7 with either the CentOS provided OpenSSL library or with LibreSSL as packaged
at [LibreLAMP.com](https://librelamp.com/). It should hopefully not be too at [LibreLAMP.com](https://librelamp.com/). It should hopefully not be too
@@ -72,10 +76,9 @@ difficult for a user to recover from backup in the event of a system failure.
## Graphical User Interface and Qt Version ## Graphical User Interface and Qt Version
The RPM spec file will by default build the GUI client linked against the Qt5 The historical RPM spec targeted older Qt libraries. For Agrarian 2.0, new RPM
libraries. If you wish instead to link against the Qt4 libraries you need to work should target Qt 6.8 LTS and the dependency baseline in
pass the switch `-D '_use_qt4 1'` at build time to the `rpmbuild` or `mock` `doc/modernization.md`.
command used to build the packages.
If you would prefer not to build the GUI at all, you can pass the switch If you would prefer not to build the GUI at all, you can pass the switch
`-D '_no_gui 1'` to the `rpmbuild` or `mock` build command. `-D '_no_gui 1'` to the `rpmbuild` or `mock` build command.
-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
+4 -3
View File
@@ -54,17 +54,18 @@ EOF
-rpcbind=127.0.0.1 -rpcport="$RPCPORT" -port="$PORT" -keypool=1 -daemon -rpcbind=127.0.0.1 -rpcport="$RPCPORT" -port="$PORT" -keypool=1 -daemon
for _ in $(seq 1 "$WAIT_SECONDS"); do for _ in $(seq 1 "$WAIT_SECONDS"); do
if rpc getinfo >/dev/null 2>&1; then if rpc getwalletinfo >/dev/null 2>&1; then
break break
fi fi
sleep 1 sleep 1
done done
if ! rpc getinfo >/dev/null; then if ! rpc getwalletinfo >/dev/null; then
echo "Timed out waiting for RPC on 127.0.0.1:$RPCPORT" >&2 echo "Timed out waiting for wallet RPC on 127.0.0.1:$RPCPORT" >&2
tail -n 80 "$DATADIR/regtest/debug.log" >&2 || true tail -n 80 "$DATADIR/regtest/debug.log" >&2 || true
exit 1 exit 1
fi fi
rpc getinfo >/dev/null
rpc getwalletinfo >/dev/null rpc getwalletinfo >/dev/null
rpc getmininginfo >/dev/null rpc getmininginfo >/dev/null
rpc getstakingstatus >/dev/null rpc getstakingstatus >/dev/null
+48
View File
@@ -0,0 +1,48 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
DATADIR="${DATADIR:-$(mktemp -d /tmp/agrarian-qt-smoke.XXXXXX)}"
LOGFILE="${LOGFILE:-/tmp/agrarian-qt-smoke.log}"
WAIT_SECONDS="${WAIT_SECONDS:-25}"
AGRARIAN_QT="${AGRARIAN_QT:-$ROOT/src/qt/agrarian-qt}"
require_path() {
if [[ ! -x "$1" ]]; then
echo "Missing executable: $1" >&2
exit 1
fi
}
require_path "$AGRARIAN_QT"
mkdir -p "$DATADIR"
rm -f "$LOGFILE"
set +e
timeout --kill-after=5s "${WAIT_SECONDS}s" xvfb-run -a "$AGRARIAN_QT" \
-regtest -datadir="$DATADIR" -choosedatadir=0 -debug=qt -debug=rpc \
-printtoconsole -server=0 -listen=0 -dnsseed=0 -connect=0 >"$LOGFILE" 2>&1
exit_code=$?
set -e
if [[ "$exit_code" -ne 124 ]]; then
echo "Expected Qt wallet to keep running until timeout, got exit code $exit_code" >&2
tail -n 80 "$LOGFILE" >&2 || true
exit 1
fi
if ! grep -q "init message: Done loading" "$LOGFILE"; then
echo "Qt wallet did not reach Done loading" >&2
tail -n 120 "$LOGFILE" >&2 || true
exit 1
fi
if grep -E "No functional TLS|No such signal|Unknown property" "$LOGFILE" >/dev/null; then
echo "Qt wallet logged a Qt6 runtime compatibility warning" >&2
grep -E "No functional TLS|No such signal|Unknown property" "$LOGFILE" >&2 || true
exit 1
fi
echo "Agrarian Qt smoke test passed"
echo " datadir: $DATADIR"
echo " log: $LOGFILE"
+102
View File
@@ -0,0 +1,102 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
DATADIR="${DATADIR:-$(mktemp -d /tmp/agrarian-wallet-smoke.XXXXXX)}"
RPCPORT="${RPCPORT:-36435}"
PORT="${PORT:-36436}"
WAIT_SECONDS="${WAIT_SECONDS:-90}"
AGRARIAND="${AGRARIAND:-$ROOT/src/agrariand}"
AGRARIAN_CLI="${AGRARIAN_CLI:-$ROOT/src/agrarian-cli}"
BACKUP="${BACKUP:-/tmp/agrarian-wallet-backup-smoke.dat}"
cleanup() {
if [[ -x "$AGRARIAN_CLI" && -d "$DATADIR" ]]; then
"$AGRARIAN_CLI" -datadir="$DATADIR" -regtest \
-rpcuser=wallet -rpcpassword=wallet-pass -rpcport="$RPCPORT" stop >/dev/null 2>&1 || true
fi
}
trap cleanup EXIT
require_path() {
if [[ ! -x "$1" ]]; then
echo "Missing executable: $1" >&2
exit 1
fi
}
rpc() {
"$AGRARIAN_CLI" -datadir="$DATADIR" -regtest \
-rpcuser=wallet -rpcpassword=wallet-pass -rpcconnect=127.0.0.1 \
-rpcport="$RPCPORT" "$@"
}
require_path "$AGRARIAND"
require_path "$AGRARIAN_CLI"
mkdir -p "$DATADIR"
cat > "$DATADIR/agrarian.conf" <<EOF
regtest=1
server=1
rpcuser=wallet
rpcpassword=wallet-pass
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
listen=0
dnsseed=0
upnp=0
staking=0
keypool=10
EOF
"$AGRARIAND" -datadir="$DATADIR" -regtest -server -listen=0 -dnsseed=0 \
-connect=0 -upnp=0 -staking=0 -rpcuser=wallet -rpcpassword=wallet-pass \
-rpcbind=127.0.0.1 -rpcport="$RPCPORT" -port="$PORT" -keypool=10 -daemon
for _ in $(seq 1 "$WAIT_SECONDS"); do
if rpc getinfo >/dev/null 2>&1; then
break
fi
sleep 1
done
if ! rpc getinfo >/dev/null; then
echo "Timed out waiting for RPC on 127.0.0.1:$RPCPORT" >&2
tail -n 80 "$DATADIR/regtest/debug.log" >&2 || true
exit 1
fi
rpc getwalletinfo >/dev/null
receive_address="$(rpc getnewaddress receive)"
send_address="$(rpc getnewaddress sendtest)"
rpc generate 101 >/dev/null
mined_balance="$(rpc getbalance)"
txid="$(rpc sendtoaddress "$send_address" 1.0)"
rpc generate 1 >/dev/null
rpc gettransaction "$txid" >/dev/null
rm -f "$BACKUP"
rpc backupwallet "$BACKUP"
test -s "$BACKUP"
set +e
encrypt_output="$(rpc encryptwallet smoke-passphrase 2>&1)"
encrypt_code=$?
set -e
if [[ "$encrypt_code" -ne 0 ]]; then
echo "$encrypt_output" >&2
exit "$encrypt_code"
fi
sleep 2
if rpc getinfo >/dev/null 2>&1; then
echo "Expected encryptwallet to stop the daemon, but RPC is still available" >&2
exit 1
fi
echo "Agrarian wallet smoke test passed"
echo " datadir: $DATADIR"
echo " receive_address: $receive_address"
echo " send_txid: $txid"
echo " mined_balance_before_send: $mined_balance"
echo " backup: $BACKUP"
+1 -1
View File
@@ -1,6 +1,6 @@
### TestGen ### ### TestGen ###
Utilities to generate test vectors for the data-driven Bitcoin tests. Utilities to generate test vectors for the data-driven Agrarian tests.
Usage: Usage:
+42 -15
View File
@@ -67,12 +67,12 @@ include funcs.mk
all: install all: install
# Optional convenience targets (only build what you need) # Optional convenience targets (only build what you need)
.PHONY: base wallet zmq upnp qt .PHONY: base wallet zmq upnp qt-deps
base: $(packages) base: $(packages)
wallet: $(wallet_packages) wallet: $(wallet_packages)
zmq: $(zmq_packages) zmq: $(zmq_packages)
upnp: $(upnp_packages) upnp: $(upnp_packages)
qt: $(qt_packages) $(qt_$(host_os)_packages) qt-deps: $(qt_packages) $(qt_$(host_os)_packages)
# Download-only: uses stage targets generated by funcs.mk # Download-only: uses stage targets generated by funcs.mk
.PHONY: download .PHONY: download
@@ -83,23 +83,42 @@ download: $(foreach p,$(all_packages),$($(p)_fetched))
# and generate share/config.site for top-level ./configure. # and generate share/config.site for top-level ./configure.
# -------------------------------------------------------------------- # --------------------------------------------------------------------
.PHONY: install install-clean reinstall install-prefix .PHONY: install install-clean reinstall install-prefix clean-sources
install: install-prefix install: install-prefix
clean-sources:
@echo "== Removing downloaded source archives and fetch stamps"
@rm -rf "$(SOURCES_PATH)"
install-prefix: $(packages) install-prefix: $(packages)
@echo "== Installing depends into: $(host_prefix)" @echo "== Installing depends into: $(host_prefix)"
@rm -rf "$(host_prefix)" @rm -rf "$(host_prefix)"
@mkdir -p "$(host_prefix)" @mkdir -p "$(host_prefix)"
@set -euo pipefail; \ @set -euo pipefail; \
for p in $(packages); do \ for f in $(foreach p,$(packages),$($(p)_cached)); do \
f="$(BASE_CACHE)/$(HOST)/$$p/"*.tar.gz; \ p="$$(basename "$$(dirname "$$f")")"; \
if ! ls $$f >/dev/null 2>&1; then \ if [[ ! -f "$$f" ]]; then \
echo "ERROR: missing built artifact for $$p (expected: $$f)"; \ echo "ERROR: expected current built artifact for $$p: $$f"; \
exit 1; \ exit 1; \
fi; \ fi; \
echo " - $$p: $$f"; \ echo " - $$p: $$f"; \
tar -xzf $$f -C "$(host_prefix)"; \ tar --no-same-owner -xzf "$$f" -C "$(host_prefix)"; \
done done
ifneq ($(native_packages),)
@echo "== Installing native depends into: $(build_prefix)"
@rm -rf "$(build_prefix)"
@mkdir -p "$(build_prefix)"
@set -euo pipefail; \
for f in $(foreach p,$(native_packages),$($(p)_cached)); do \
p="$$(basename "$$(dirname "$$f")")"; \
if [[ ! -f "$$f" ]]; then \
echo "ERROR: expected current native built artifact for $$p: $$f"; \
exit 1; \
fi; \
echo " - $$p: $$f"; \
tar --no-same-owner -xzf "$$f" -C "$(build_prefix)"; \
done
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"
@{ \ @{ \
@@ -109,18 +128,19 @@ install-prefix: $(packages)
echo "host_alias='$(HOST)'"; \ echo "host_alias='$(HOST)'"; \
echo "ac_tool_prefix='$(HOST)-'"; \ echo "ac_tool_prefix='$(HOST)-'"; \
echo "with_boost='$(host_prefix)'"; \ echo "with_boost='$(host_prefix)'"; \
echo "with_qt_incdir='$(host_prefix)/include'"; \
echo "with_qt_libdir='$(host_prefix)/lib'"; \
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)/native/bin'"; \ echo "with_qt_bindir='$(host_prefix)/bin'"; \
echo "with_protoc_bindir='$(host_prefix)/native/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'"; \
echo "BOOST_LDFLAGS='-L$(host_prefix)/lib'"; \ echo "BOOST_LDFLAGS='-L$(host_prefix)/lib'"; \
echo "PATH=\"$(host_prefix)/native/bin:\$$PATH\""; \ echo "PATH=\"$(build_prefix)/bin:\$$PATH\""; \
echo "PKG_CONFIG='`which pkg-config` --static'"; \ echo "PKG_CONFIG='`which pkg-config` --static'"; \
echo "PKG_CONFIG_LIBDIR='$(host_prefix)/lib/pkgconfig:$(host_prefix)/share/pkgconfig'"; \ echo "PKG_CONFIG_LIBDIR='$(host_prefix)/lib/pkgconfig:$(host_prefix)/share/pkgconfig'"; \
echo "PKG_CONFIG_PATH=\"$$PKG_CONFIG_LIBDIR\""; \ echo "PKG_CONFIG_PATH=\"\$$PKG_CONFIG_LIBDIR\""; \
echo "export PKG_CONFIG_LIBDIR"; \ echo "export PKG_CONFIG_LIBDIR"; \
echo "export PKG_CONFIG_PATH"; \ echo "export PKG_CONFIG_PATH"; \
echo "export PKG_CONFIG"; \ echo "export PKG_CONFIG"; \
@@ -158,9 +178,16 @@ install-prefix: $(packages)
fi; \ fi; \
done done
@if [[ "$(NO_QT)" = "0" ]] && [[ "$(host_os)" = "linux" ]]; then \ @if [[ "$(NO_QT)" = "0" ]] && [[ "$(host_os)" = "linux" ]]; then \
for pc in Qt5Core Qt5Gui Qt5Network Qt5Widgets; do \ for lib in Qt6Core Qt6Gui Qt6Network Qt6Widgets; do \
if [[ ! -f "$(host_prefix)/lib/pkgconfig/$${pc}.pc" ]] && [[ ! -f "$(host_prefix)/share/pkgconfig/$${pc}.pc" ]]; then \ if [[ ! -f "$(host_prefix)/lib/lib$${lib}.a" ]]; then \
echo "ERROR: missing Qt pkg-config file for $${pc} under $(host_prefix)/(lib|share)/pkgconfig"; \ echo "ERROR: missing Qt library lib$${lib}.a under $(host_prefix)/lib"; \
echo "Fix: make -C $(BASEDIR) HOST=$(HOST) USE_WALLET=$(USE_WALLET)"; \
exit 1; \
fi; \
done; \
for tool in qmake qt-cmake; do \
if [[ ! -x "$(host_prefix)/bin/$${tool}" ]]; then \
echo "ERROR: missing Qt tool $${tool} under $(host_prefix)/bin"; \
echo "Fix: make -C $(BASEDIR) HOST=$(HOST) USE_WALLET=$(USE_WALLET)"; \ echo "Fix: make -C $(BASEDIR) HOST=$(HOST) USE_WALLET=$(USE_WALLET)"; \
exit 1; \ exit 1; \
fi; \ fi; \
+32 -9
View File
@@ -2,7 +2,7 @@
To build dependencies for the current arch+OS: To build dependencies for the current arch+OS:
make make HOST=x86_64-pc-linux-gnu NO_QT=0
To build for another arch/OS: To build for another arch/OS:
@@ -10,13 +10,13 @@ To build for another arch/OS:
For example: For example:
make HOST=x86_64-w64-mingw32 -j4 make HOST=x86_64-w64-mingw32 NO_QT=0 -j1
A prefix will be generated that's suitable for plugging into Bitcoin's A prefix will be generated that's suitable for plugging into Agrarian's
configure. In the above example, a dir named x86_64-w64-mingw32 will be configure. In the above example, a dir named x86_64-w64-mingw32 will be
created. To use it for Bitcoin: created. To use it for Agrarian:
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32 CONFIG_SITE=`pwd`/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
Common `host-platform-triplets` for cross compilation are: Common `host-platform-triplets` for cross compilation are:
@@ -30,6 +30,16 @@ Common `host-platform-triplets` for cross compilation are:
No other options are needed, the paths are automatically configured. No other options are needed, the paths are automatically configured.
For the current Agrarian 2.0 branch, the preferred user-facing build entry
points are the helpers in `contrib/`:
- `contrib/build-linux.sh`
- `contrib/build-linux-wallet.sh`
- `contrib/build-win64-wallet.sh`
- `contrib/agrarian-build-menu.sh`
Those helpers set the correct Qt and host-tool paths around the depends prefix.
### Install the required dependencies: Ubuntu & Debian ### Install the required dependencies: Ubuntu & Debian
#### For macOS cross compilation #### For macOS cross compilation
@@ -44,7 +54,21 @@ No other options are needed, the paths are automatically configured.
Common linux dependencies: Common linux dependencies:
sudo apt-get install make automake cmake curl g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch sudo apt-get install make automake cmake curl git g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch bzip2 xz-utils
Native Linux Qt wallet builds also need the desktop development headers used by
Qt's xcb/font stack:
sudo apt-get install libfontconfig1-dev libfreetype-dev libharfbuzz-dev \
libbrotli-dev libbz2-dev libexpat1-dev libglib2.0-dev \
libgraphite2-dev libpng-dev zlib1g-dev libx11-xcb-dev \
libxcb1-dev libxcb-cursor-dev libxcb-icccm4-dev libxcb-image0-dev \
libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render0-dev \
libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev \
libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev \
libxcb-xinerama0-dev libxcb-xkb-dev libxau-dev libxdmcp-dev \
libxext-dev libxi-dev libxrender-dev libxkbcommon-dev \
libxkbcommon-x11-dev
For linux ARM cross compilation: For linux ARM cross compilation:
@@ -69,7 +93,7 @@ The following can be set when running make: make FOO=bar
SDK_PATH: Path where sdk's can be found (used by macOS) SDK_PATH: Path where sdk's can be found (used by macOS)
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
NO_QT: Don't download/build/cache qt and its dependencies NO_QT: Don't download/build/cache qt and its dependencies
NO_ZMQ: Don't download/build/cache packages needed for enabling zeromq USE_ZMQ: Build and cache ZeroMQ for optional ZMQ notification support
NO_WALLET: Don't download/build/cache libs needed to enable the wallet NO_WALLET: Don't download/build/cache libs needed to enable the wallet
NO_UPNP: Don't download/build/cache packages needed for enabling upnp NO_UPNP: Don't download/build/cache packages needed for enabling upnp
DEBUG: disable some optimizations and enable more runtime checking DEBUG: disable some optimizations and enable more runtime checking
@@ -77,7 +101,7 @@ The following can be set when running make: make FOO=bar
BUILD_ID_SALT: Optional salt to use when generating build package ids BUILD_ID_SALT: Optional salt to use when generating build package ids
If some packages are not built, for example `make NO_WALLET=1`, the appropriate If some packages are not built, for example `make NO_WALLET=1`, the appropriate
options will be passed to bitcoin's configure. In this case, `--disable-wallet`. options will be passed to Agrarian's configure. In this case, `--disable-wallet`.
### Additional targets ### Additional targets
@@ -90,4 +114,3 @@ options will be passed to bitcoin's configure. In this case, `--disable-wallet`.
- [description.md](description.md): General description of the depends system - [description.md](description.md): General description of the depends system
- [packages.md](packages.md): Steps for adding packages - [packages.md](packages.md): Steps for adding packages
-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 -1
View File
@@ -1,4 +1,4 @@
This is a system of building and caching dependencies necessary for building Bitcoin. This is a system of building and caching dependencies necessary for building Agrarian.
There are several features that make it different from most similar systems: There are several features that make it different from most similar systems:
### It is designed to be builder and host agnostic ### It is designed to be builder and host agnostic
+13 -6
View File
@@ -29,9 +29,12 @@ define fetch_file_inner
endef endef
define fetch_file define fetch_file
( test -f $$($(1)_source_dir)/$(4) || \ ( test -f $$($(1)_source_dir)/$(4) && \
echo "$(5) $$($(1)_source_dir)/$(4)" > $$($(1)_source_dir)/.$(4).existing.hash && \
$(build_SHA256SUM) -c $$($(1)_source_dir)/.$(4).existing.hash || \
( rm -f $$($(1)_source_dir)/$(4) && \
( $(call fetch_file_inner,$(1),$(2),$(3),$(4),$(5)) || \ ( $(call fetch_file_inner,$(1),$(2),$(3),$(4),$(5)) || \
$(call fetch_file_inner,$(1),$(FALLBACK_DOWNLOAD_PATH),$(3),$(4),$(5)))) $(call fetch_file_inner,$(1),$(FALLBACK_DOWNLOAD_PATH),$(3),$(4),$(5)))))
endef endef
define int_get_build_recipe_hash define int_get_build_recipe_hash
@@ -79,7 +82,12 @@ $(1)_download_path_fixed=$(subst :,\:,$$($(1)_download_path))
#default commands #default commands
# The default behavior for tar will try to set ownership when running as uid 0 and may not succeed, --no-same-owner disables this behavior # The default behavior for tar will try to set ownership when running as uid 0 and may not succeed, --no-same-owner disables this behavior
$(1)_fetch_cmds ?= $(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)),$$($(1)_download_file),$($(1)_file_name),$($(1)_sha256_hash)) $(1)_fetch_cmds ?= $(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)),$$($(1)_download_file),$($(1)_file_name),$($(1)_sha256_hash))
$(1)_extract_cmds ?= mkdir -p $$($(1)_extract_dir) && echo "$$($(1)_sha256_hash) $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash && $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash && tar --no-same-owner --strip-components=1 -xf $$($(1)_source) $(1)_extract_cmds ?= mkdir -p $$($(1)_extract_dir) && echo "$$($(1)_sha256_hash) $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash && \
( $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash || \
( rm -f $$($(1)_source) $$($(1)_fetched) && \
$(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)),$$($(1)_download_file),$($(1)_file_name),$($(1)_sha256_hash)) && \
$(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash ) ) && \
tar --no-same-owner --strip-components=1 -xf $$($(1)_source)
$(1)_preprocess_cmds ?= $(1)_preprocess_cmds ?=
$(1)_build_cmds ?= $(1)_build_cmds ?=
$(1)_config_cmds ?= $(1)_config_cmds ?=
@@ -163,7 +171,6 @@ define int_add_cmds
$($(1)_fetched): $($(1)_fetched):
$(AT)mkdir -p $$(@D) $(SOURCES_PATH) $(AT)mkdir -p $$(@D) $(SOURCES_PATH)
$(AT)rm -f $$@ $(AT)rm -f $$@
$(AT)touch $$@
$(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1)) $(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1))
$(AT)cd $($(1)_source_dir); $(foreach source,$($(1)_all_sources),$(build_SHA256SUM) $(source) >> $$(@);) $(AT)cd $($(1)_source_dir); $(foreach source,$($(1)_all_sources),$(build_SHA256SUM) $(source) >> $$(@);)
$(AT)touch $$@ $(AT)touch $$@
@@ -191,7 +198,7 @@ $($(1)_built): | $($(1)_configured)
$(AT)touch $$@ $(AT)touch $$@
$($(1)_staged): | $($(1)_built) $($(1)_staged): | $($(1)_built)
$(AT)echo Staging $(1)... $(AT)echo Staging $(1)...
$(AT)mkdir -p $($(1)_staging_dir)/$(host_prefix) $(AT)mkdir -p $$($(1)_staging_prefix_dir)
$(AT)cd $($(1)_build_dir); $($(1)_stage_env) $(call $(1)_stage_cmds, $(1)) $(AT)cd $($(1)_build_dir); $($(1)_stage_env) $(call $(1)_stage_cmds, $(1))
$(AT)rm -rf $($(1)_extract_dir) $(AT)rm -rf $($(1)_extract_dir)
$(AT)touch $$@ $(AT)touch $$@
@@ -201,7 +208,7 @@ $($(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)cd $$($(1)_staging_dir)/$(host_prefix); 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)
$(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@) $(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@)
+2
View File
@@ -0,0 +1,2 @@
# aarch64 Linux native build alias.
include hosts/aarch64-unknown-linux-gnu.mk
@@ -0,0 +1,13 @@
# aarch64 Linux native build (Ubuntu 22.04/24.04 arm64)
host_arch := aarch64
host_os := linux
host_prefix := $(BASEDIR)/$(HOST)
build_prefix := $(BASEDIR)/build/$(BUILD)
aarch64_linux_host := $(HOST)
aarch64_linux_prefix := $(host_prefix)
aarch64_linux_id_string := $(HOST)
include hosts/default.mk
include hosts/linux.mk
+1 -1
View File
@@ -1,4 +1,4 @@
# 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 https://www.opensource.org/licenses/mit-license.php. # file COPYING or https://www.opensource.org/licenses/mit-license.php.
+1 -1
View File
@@ -1,4 +1,4 @@
# 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 https://www.opensource.org/licenses/mit-license.php. # file COPYING or https://www.opensource.org/licenses/mit-license.php.
+4 -4
View File
@@ -1,11 +1,11 @@
package=boost package=boost
$(package)_version=1_64_0 $(package)_version=1_91_0
# Bintray was shut down; use the official Boost archives mirror. # Bintray was shut down; use the official Boost archives mirror.
# NOTE: download_path should NOT end with a trailing slash because the fetch # NOTE: download_path should NOT end with a trailing slash because the fetch
# helper appends "/$(file)". # helper appends "/$(file)".
$(package)_download_path=https://archives.boost.io/release/1.64.0/source $(package)_download_path=https://archives.boost.io/release/1.91.0/source
$(package)_file_name=$(package)_$($(package)_version).tar.bz2 $(package)_file_name=$(package)_$($(package)_version).tar.bz2
$(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332 $(package)_sha256_hash=de5e6b0e4913395c6bdfa90537febd9028ea4c0735d2cdb0cd9b45d5f51264f5
define $(package)_set_vars define $(package)_set_vars
$(package)_config_opts_release=variant=release $(package)_config_opts_release=variant=release
@@ -26,7 +26,7 @@ $(package)_toolset_$(host_os)=gcc
$(package)_archiver_$(host_os)=$($(package)_ar) $(package)_archiver_$(host_os)=$($(package)_ar)
$(package)_toolset_darwin=darwin $(package)_toolset_darwin=darwin
$(package)_archiver_darwin=$($(package)_libtool) $(package)_archiver_darwin=$($(package)_libtool)
$(package)_config_libraries=chrono,filesystem,program_options,system,thread,test $(package)_config_libraries=chrono,filesystem,program_options,thread,test
$(package)_cxxflags=-std=c++11 -fvisibility=hidden $(package)_cxxflags=-std=c++11 -fvisibility=hidden
$(package)_cxxflags_linux=-fPIC $(package)_cxxflags_linux=-fPIC
endef endef
+3 -3
View File
@@ -1,8 +1,8 @@
package=expat package=expat
$(package)_version=2.2.6 $(package)_version=2.8.0
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_2_6/ $(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_8_0/
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 $(package)_file_name=$(package)-$($(package)_version).tar.bz2
$(package)_sha256_hash=17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2 $(package)_sha256_hash=586494499ac3ad46d87f3beda7b1f770c1c8026a9b60e151593f8b29089a52ca
define $(package)_set_vars define $(package)_set_vars
$(package)_config_opts=--disable-static --without-docbook $(package)_config_opts=--disable-static --without-docbook
+3 -3
View File
@@ -1,8 +1,8 @@
package=freetype package=freetype
$(package)_version=2.7.1 $(package)_version=2.14.3
$(package)_download_path=https://download.savannah.gnu.org/releases/$(package) $(package)_download_path=https://download.savannah.gnu.org/releases/$(package)
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 $(package)_file_name=$(package)-$($(package)_version).tar.xz
$(package)_sha256_hash=3a3bb2c4e15ffb433f2032f50a5b5a92558206822e22bfe8cbe339af4aa82f88 $(package)_sha256_hash=36bc4f1cc413335368ee656c42afca65c5a3987e8768cc28cf11ba775e785a5f
define $(package)_set_vars define $(package)_set_vars
$(package)_config_opts=--without-zlib --without-png --without-harfbuzz --without-bzip2 --disable-static $(package)_config_opts=--without-zlib --without-png --without-harfbuzz --without-bzip2 --disable-static
+4 -5
View File
@@ -1,8 +1,8 @@
package=gmp package=gmp
$(package)_version=6.1.2 $(package)_version=6.3.0
$(package)_download_path=https://gmplib.org/download/gmp $(package)_download_path=https://ftp.gnu.org/gnu/gmp
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 $(package)_file_name=$(package)-$($(package)_version).tar.xz
$(package)_sha256_hash=5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2 $(package)_sha256_hash=a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898
define $(package)_set_vars define $(package)_set_vars
$(package)_config_opts=--disable-shared $(package)_config_opts=--disable-shared
@@ -21,4 +21,3 @@ endef
define $(package)_stage_cmds define $(package)_stage_cmds
$(MAKE) DESTDIR=$($(package)_staging_dir) install $(MAKE) DESTDIR=$($(package)_staging_dir) install
endef endef
+2 -2
View File
@@ -1,8 +1,8 @@
package=libevent package=libevent
$(package)_version=2.1.8-stable $(package)_version=2.1.12-stable
$(package)_download_path=https://github.com/libevent/libevent/archive/ $(package)_download_path=https://github.com/libevent/libevent/archive/
$(package)_file_name=release-$($(package)_version).tar.gz $(package)_file_name=release-$($(package)_version).tar.gz
$(package)_sha256_hash=316ddb401745ac5d222d7c529ef1eada12f58f6376a66c1118eee803cb70f83d $(package)_sha256_hash=7180a979aaa7000e1264da484f712d403fcf7679b1e9212c4e3d09f5c93efc24
$(package)_patches=glibc-arc4random-addrandom.patch $(package)_patches=glibc-arc4random-addrandom.patch
define $(package)_preprocess_cmds define $(package)_preprocess_cmds
+10 -8
View File
@@ -1,8 +1,8 @@
package=miniupnpc package=miniupnpc
$(package)_version=2.0.20180203 $(package)_version=2.3.3
$(package)_download_path=https://miniupnp.tuxfamily.org/files/ $(package)_download_path=https://miniupnp.tuxfamily.org/files/
$(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=90dda8c7563ca6cd4a83e23b3c66dbbea89603a1675bfdb852897c2c9cc220b7 $(package)_sha256_hash=d52a0afa614ad6c088cc9ddff1ae7d29c8c595ac5fdd321170a05f41e634bd1a
define $(package)_set_vars define $(package)_set_vars
$(package)_build_opts=CC="$($(package)_cc)" $(package)_build_opts=CC="$($(package)_cc)"
@@ -12,17 +12,19 @@ $(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$
endef endef
define $(package)_preprocess_cmds define $(package)_preprocess_cmds
mkdir dll && \ mkdir -p dll
sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \
sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw
endef endef
define $(package)_build_cmds define $(package)_build_cmds
$(MAKE) libminiupnpc.a $($(package)_build_opts) $(MAKE) $(if $(findstring mingw32,$(host_os)),libminiupnpc.a,build/libminiupnpc.a) $($(package)_build_opts)
endef endef
define $(package)_stage_cmds define $(package)_stage_cmds
mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\ mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\
install *.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\ install include/*.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\
install libminiupnpc.a $($(package)_staging_prefix_dir)/lib if test -f build/libminiupnpc.a; then \
install build/libminiupnpc.a $($(package)_staging_prefix_dir)/lib; \
else \
install libminiupnpc.a $($(package)_staging_prefix_dir)/lib; \
fi
endef endef
-25
View File
@@ -1,25 +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
$(MAKE) -C src DESTDIR=$($(package)_staging_dir) install-strip
endef
define $(package)_postprocess_cmds
rm -rf lib include
endef
+11 -40
View File
@@ -1,45 +1,19 @@
package=openssl package=openssl
$(package)_version=1.0.1k $(package)_version=3.5.6
$(package)_download_path=https://openssl-library.org/source/old/1.0.1 $(package)_download_path=https://github.com/openssl/openssl/releases/download/openssl-$($(package)_version)
$(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=8f9faeaebad088e772f4ef5e38252d472be4d878c6b3a2718c10a4fcebe7a41c $(package)_sha256_hash=deae7c80cba99c4b4f940ecadb3c3338b13cb77418409238e57d7f31f2a3b736
define $(package)_set_vars define $(package)_set_vars
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" $(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" CXX="$($(package)_cxx)"
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl $(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl --libdir=lib
$(package)_config_opts+=no-camellia
$(package)_config_opts+=no-capieng
$(package)_config_opts+=no-cast
$(package)_config_opts+=no-comp $(package)_config_opts+=no-comp
$(package)_config_opts+=no-docs
$(package)_config_opts+=no-dso $(package)_config_opts+=no-dso
$(package)_config_opts+=no-dtls1 $(package)_config_opts+=no-tests
$(package)_config_opts+=no-ec_nistp_64_gcc_128
$(package)_config_opts+=no-gost
$(package)_config_opts+=no-gmp
$(package)_config_opts+=no-heartbeats
$(package)_config_opts+=no-idea
$(package)_config_opts+=no-jpake
$(package)_config_opts+=no-krb5
$(package)_config_opts+=no-libunbound
$(package)_config_opts+=no-md2
$(package)_config_opts+=no-mdc2
$(package)_config_opts+=no-rc4
$(package)_config_opts+=no-rc5
$(package)_config_opts+=no-rdrand
$(package)_config_opts+=no-rfc3779
$(package)_config_opts+=no-rsax
$(package)_config_opts+=no-sctp
$(package)_config_opts+=no-seed
$(package)_config_opts+=no-sha0
$(package)_config_opts+=no-shared $(package)_config_opts+=no-shared
$(package)_config_opts+=no-ssl-trace
$(package)_config_opts+=no-ssl2
$(package)_config_opts+=no-ssl3 $(package)_config_opts+=no-ssl3
$(package)_config_opts+=no-static_engine
$(package)_config_opts+=no-store
$(package)_config_opts+=no-unit-test
$(package)_config_opts+=no-weak-ssl-ciphers $(package)_config_opts+=no-weak-ssl-ciphers
$(package)_config_opts+=no-whirlpool
$(package)_config_opts+=no-zlib $(package)_config_opts+=no-zlib
$(package)_config_opts+=no-zlib-dynamic $(package)_config_opts+=no-zlib-dynamic
$(package)_config_opts+=$($(package)_cflags) $($(package)_cppflags) $(package)_config_opts+=$($(package)_cflags) $($(package)_cppflags)
@@ -62,11 +36,8 @@ $(package)_config_opts_m68k_linux=linux-generic32
$(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc $(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc
$(package)_config_opts_x86_64_mingw32=mingw64 $(package)_config_opts_x86_64_mingw32=mingw64
$(package)_config_opts_i686_mingw32=mingw $(package)_config_opts_i686_mingw32=mingw
endef $(package)_config_env_x86_64_mingw32=WINDRES=x86_64-w64-mingw32-windres
$(package)_config_env_i686_mingw32=WINDRES=i686-w64-mingw32-windres
define $(package)_preprocess_cmds
sed -i.old "/define DATE/d" util/mkbuildinf.pl && \
sed -i.old "s|engines apps test|engines|" Makefile.org
endef endef
define $(package)_config_cmds define $(package)_config_cmds
@@ -74,11 +45,11 @@ define $(package)_config_cmds
endef endef
define $(package)_build_cmds define $(package)_build_cmds
$(MAKE) -j1 build_libs libcrypto.pc libssl.pc openssl.pc $(MAKE) build_libs libcrypto.pc libssl.pc openssl.pc
endef endef
define $(package)_stage_cmds define $(package)_stage_cmds
$(MAKE) INSTALL_PREFIX=$($(package)_staging_dir) -j1 install_sw $(MAKE) DESTDIR=$($(package)_staging_dir) -j1 install_sw
endef endef
define $(package)_postprocess_cmds define $(package)_postprocess_cmds
+3 -3
View File
@@ -22,10 +22,10 @@ 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 := qt expat dbus libxcb xcb_proto libXau xproto freetype fontconfig libX11 xextproto libXext xtrans qt_linux_packages := expat freetype fontconfig qt
qt_darwin_packages := qt qt_darwin_packages := qt
qt_mingw32_packages := qt qt_mingw32_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
+6 -6
View File
@@ -1,16 +1,16 @@
package=qrencode package=qrencode
$(package)_version=3.4.4 $(package)_version=4.1.1
$(package)_download_path=https://fukuchi.org/works/qrencode/ $(package)_download_path=https://github.com/fukuchi/libqrencode/archive/v$($(package)_version)/
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 $(package)_file_name=lib$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=efe5188b1ddbcbf98763b819b146be6a90481aac30cfc8d858ab78a19cde1fa5 $(package)_sha256_hash=5385bc1b8c2f20f3b91d258bf8ccc8cf62023935df2d2676b5b67049f31a049c
define $(package)_set_vars define $(package)_set_vars
$(package)_config_opts=--disable-shared -without-tools --disable-sdltest $(package)_config_opts=--disable-shared --without-tools
$(package)_config_opts_linux=--with-pic $(package)_config_opts_linux=--with-pic
endef endef
define $(package)_preprocess_cmds define $(package)_preprocess_cmds
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub use ./autogen.sh && cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub .
endef endef
define $(package)_config_cmds define $(package)_config_cmds
+74 -145
View File
@@ -1,20 +1,18 @@
PACKAGE=qt PACKAGE=qt
$(package)_version=5.9.7 $(package)_version=6.8.3
$(package)_download_path=https://download.qt.io/new_archive/qt/5.9/$($(package)_version)/submodules $(package)_download_path=https://download.qt.io/official_releases/qt/6.8/$($(package)_version)/submodules
$(package)_suffix=opensource-src-$($(package)_version).tar.xz $(package)_suffix=everywhere-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix) $(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=36dd9574f006eaa1e5af780e4b33d11fe39d09fd7c12f3b9d83294174bd28f00 $(package)_sha256_hash=56001b905601bb9023d399f3ba780d7fa940f3e4861e496a7c490331f49e0b80
$(package)_dependencies=openssl zlib $(package)_dependencies=openssl zlib
$(package)_linux_dependencies=freetype fontconfig libxcb libX11 xproto libXext $(package)_linux_dependencies=
$(package)_build_subdir=qtbase $(package)_build_subdir=qtbase-build
$(package)_qt_libs=corelib network widgets gui plugins testlib
$(package)_patches=mac-qmake.conf
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix) $(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
$(package)_qttranslations_sha256_hash=b36da7d93c3ab6fca56b32053bb73bc619c8b192bb89b74e3bcde2705f1c2a14 $(package)_qttranslations_sha256_hash=c3c61d79c3d8fe316a20b3617c64673ce5b5519b2e45535f49bee313152fa531
$(package)_qttools_file_name=qttools-$($(package)_suffix) $(package)_qttools_file_name=qttools-$($(package)_suffix)
$(package)_qttools_sha256_hash=d62e0f70d99645d6704dbb8976fb2222443061743689943d40970c52c49367a1 $(package)_qttools_sha256_hash=02a4e219248b94f1333df843d25763f35251c1074cdc4fb5bda67d340f8c8b3a
$(package)_extra_sources = $($(package)_qttranslations_file_name) $(package)_extra_sources = $($(package)_qttranslations_file_name)
$(package)_extra_sources += $($(package)_qttools_file_name) $(package)_extra_sources += $($(package)_qttools_file_name)
@@ -22,100 +20,51 @@ $(package)_extra_sources += $($(package)_qttools_file_name)
define $(package)_set_vars define $(package)_set_vars
$(package)_config_opts_release = -release $(package)_config_opts_release = -release
$(package)_config_opts_debug = -debug $(package)_config_opts_debug = -debug
$(package)_config_opts += -bindir $(build_prefix)/bin $(package)_config_opts += -bindir bin
$(package)_config_opts += -c++std c++11
$(package)_config_opts += -confirm-license $(package)_config_opts += -confirm-license
$(package)_config_opts += -dbus-runtime
$(package)_config_opts += -hostprefix $(build_prefix)
$(package)_config_opts += -no-compile-examples
$(package)_config_opts += -no-cups $(package)_config_opts += -no-cups
$(package)_config_opts += -no-egl $(package)_config_opts += -no-dbus
$(package)_config_opts += -no-eglfs
$(package)_config_opts += -no-freetype
$(package)_config_opts += -no-gif
$(package)_config_opts += -no-glib $(package)_config_opts += -no-glib
$(package)_config_opts += -no-icu $(package)_config_opts += -no-icu
$(package)_config_opts += -no-iconv $(package)_config_opts += -no-opengl
$(package)_config_opts += -no-kms $(package)_config_opts += -no-pch
$(package)_config_opts += -no-linuxfb $(package)_config_opts += -no-feature-brotli
$(package)_config_opts += -no-libudev $(package)_config_opts += -no-feature-sql
$(package)_config_opts += -no-mtdev $(package)_config_opts += -no-feature-vulkan
$(package)_config_opts += -no-openvg
$(package)_config_opts += -no-reduce-relocations
$(package)_config_opts += -no-qml-debug
$(package)_config_opts += -no-sql-db2
$(package)_config_opts += -no-sql-ibase
$(package)_config_opts += -no-sql-oci
$(package)_config_opts += -no-sql-tds
$(package)_config_opts += -no-sql-mysql
$(package)_config_opts += -no-sql-odbc
$(package)_config_opts += -no-sql-psql
$(package)_config_opts += -no-sql-sqlite
$(package)_config_opts += -no-sql-sqlite2
$(package)_config_opts += -no-use-gold-linker
$(package)_config_opts += -no-xinput2
$(package)_config_opts += -nomake examples $(package)_config_opts += -nomake examples
$(package)_config_opts += -nomake tests $(package)_config_opts += -nomake tests
$(package)_config_opts += -opensource $(package)_config_opts += -opensource
$(package)_config_opts += -openssl-linked $(package)_config_opts += -openssl-linked
$(package)_config_opts += -optimized-qmake
$(package)_config_opts += -no-pch
$(package)_config_opts += -pkg-config $(package)_config_opts += -pkg-config
$(package)_config_opts += -prefix $(host_prefix) $(package)_config_opts += -prefix $(host_prefix)
$(package)_config_opts += -qt-libpng
$(package)_config_opts += -qt-libjpeg
$(package)_config_opts += -qt-pcre
$(package)_config_opts += -qt-harfbuzz $(package)_config_opts += -qt-harfbuzz
$(package)_config_opts += -system-zlib $(package)_config_opts += -qt-libjpeg
$(package)_config_opts += -qt-libpng
$(package)_config_opts += -qt-pcre
$(package)_config_opts += -static $(package)_config_opts += -static
$(package)_config_opts += -silent $(package)_config_opts += -system-zlib
$(package)_config_opts += -v $(package)_config_opts_linux = -fontconfig
$(package)_config_opts += -no-feature-dial $(package)_config_opts_linux += -qpa xcb
$(package)_config_opts += -no-feature-ftp $(package)_config_opts_linux += -xcb
$(package)_config_opts += -no-feature-lcdnumber $(package)_config_opts_linux += -xkbcommon
$(package)_config_opts += -no-feature-pdf $(package)_config_opts_linux += -feature-xkbcommon-x11
$(package)_config_opts += -no-feature-printer
$(package)_config_opts += -no-feature-printdialog
$(package)_config_opts += -no-feature-concurrent
$(package)_config_opts += -no-feature-sql
$(package)_config_opts += -no-feature-statemachine
$(package)_config_opts += -no-feature-syntaxhighlighter
$(package)_config_opts += -no-feature-textbrowser
$(package)_config_opts += -no-feature-textodfwriter
$(package)_config_opts += -no-feature-udpsocket
$(package)_config_opts += -no-feature-wizard
$(package)_config_opts += -no-feature-xml
ifneq ($(build_os),darwin)
$(package)_config_opts_darwin = -xplatform macx-clang-linux
$(package)_config_opts_darwin += -device-option MAC_SDK_PATH=$(OSX_SDK)
$(package)_config_opts_darwin += -device-option MAC_SDK_VERSION=$(OSX_SDK_VERSION)
$(package)_config_opts_darwin += -device-option CROSS_COMPILE="$(host)-"
$(package)_config_opts_darwin += -device-option MAC_MIN_VERSION=$(OSX_MIN_VERSION)
$(package)_config_opts_darwin += -device-option MAC_TARGET=$(host)
$(package)_config_opts_darwin += -device-option MAC_LD64_VERSION=$(LD64_VERSION)
endif
$(package)_config_opts_linux = -qt-xkbcommon-x11
$(package)_config_opts_linux += -qt-xcb
$(package)_config_opts_linux += -system-freetype $(package)_config_opts_linux += -system-freetype
$(package)_config_opts_linux += -no-feature-sessionmanager $(package)_config_opts_linux += -no-feature-sessionmanager
$(package)_config_opts_linux += -fontconfig $(package)_config_opts_mingw32 = -qpa windows
$(package)_config_opts_linux += -no-opengl $(package)_config_opts_darwin = -qpa cocoa
$(package)_config_opts_arm_linux += -platform linux-g++ -xplatform agrarian-linux-g++ $(package)_cmake_opts_mingw32 = -DCMAKE_SYSTEM_NAME=Windows
$(package)_config_opts_i686_linux = -xplatform linux-g++-32 $(package)_cmake_opts_mingw32 += -DCMAKE_C_COMPILER=$($(package)_cc)
$(package)_config_opts_x86_64_linux = -xplatform linux-g++-64 $(package)_cmake_opts_mingw32 += -DCMAKE_CXX_COMPILER=$($(package)_cxx)
$(package)_config_opts_aarch64_linux = -xplatform linux-aarch64-gnu-g++ $(package)_cmake_opts_mingw32 += -DCMAKE_RC_COMPILER=$(host_toolchain)windres
$(package)_config_opts_riscv64_linux = -platform linux-g++ -xplatform agrarian-linux-g++ $(package)_cmake_opts_mingw32 += -DOPENSSL_ROOT_DIR=$(host_prefix)
$(package)_config_opts_s390x_linux += -platform linux-g++ -xplatform linux-g++-64 $(package)_cmake_opts_mingw32 += -DOPENSSL_USE_STATIC_LIBS=TRUE
$(package)_config_opts_powerpc_linux += -platform linux-g++ -xplatform linux-g++-32 $(package)_cmake_opts_mingw32 += -DZLIB_ROOT=$(host_prefix)
$(package)_config_opts_powerpc64le_linux += -platform linux-g++ -xplatform linux-g++-64 $(package)_cmake_opts_mingw32 += -DQT_HOST_PATH=$(BASEDIR)/$(BUILD)
$(package)_config_opts_sparc64_linux += -platform linux-g++ -xplatform linux-g++-64 $(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH=$(host_prefix)
$(package)_config_opts_alpha_linux += -platform linux-g++ -xplatform linux-g++-64 $(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY
$(package)_config_opts_m68k_linux += -platform linux-g++ -xplatform linux-g++-32 $(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY
$(package)_config_opts_mingw32 = -no-opengl -xplatform win32-g++ -device-option CROSS_COMPILE="$(host)-" $(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
$(package)_build_env = QT_RCC_TEST=1 $(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
$(package)_build_env += QT_RCC_SOURCE_DATE_OVERRIDE=1
endef endef
define $(package)_fetch_cmds define $(package)_fetch_cmds
@@ -130,75 +79,55 @@ define $(package)_extract_cmds
echo "$($(package)_qttranslations_sha256_hash) $($(package)_source_dir)/$($(package)_qttranslations_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \ echo "$($(package)_qttranslations_sha256_hash) $($(package)_source_dir)/$($(package)_qttranslations_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \ echo "$($(package)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \ $(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir qtbase && \ mkdir qtbase qtbase-build qttools qttools-build qttranslations qttranslations-build && \
tar --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \ tar --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
mkdir qttranslations && \ tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttools_file_name) -C qttools && \
tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttranslations_file_name) -C qttranslations && \ tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttranslations_file_name) -C qttranslations
mkdir qttools && \
tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttools_file_name) -C qttools
endef
define $(package)_preprocess_cmds
sed -i.old "s|FT_Get_Font_Format|FT_Get_X11_Font_Format|" qtbase/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp && \
sed -i.old "/#include <QtCore\/qbytearray.h>/a #include <limits>" qtbase/src/corelib/tools/qbytearraymatcher.h && \
sed -i.old "/#include \"qfloat16_p.h\"/a #include <limits>" qtbase/src/corelib/global/qfloat16.cpp && \
sed -i.old "s/#if defined(Q_CC_MINGW) || !defined(TOUCHEVENTF_MOVE)/#if (defined(Q_CC_MINGW) \&\& WINVER < 0x0601) || !defined(TOUCHEVENTF_MOVE)/" qtbase/src/plugins/platforms/windows/qwindowsmousehandler.cpp && \
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
sed -i.old "/updateqm.depends =/d" qttranslations/translations/translations.pro && \
sed -i.old "s/src_plugins.depends = src_sql src_network/src_plugins.depends = src_network/" qtbase/src/src.pro && \
sed -i.old "s|X11/extensions/XIproto.h|X11/X.h|" qtbase/src/plugins/platforms/xcb/qxcbxsettings.cpp && \
sed -i.old "/SUBDIRS += printsupport/d" qtbase/src/plugins/plugins.pro && \
sed -i.old -e 's/if \[ "$$$$XPLATFORM_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/if \[ "$$$$BUILD_ON_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/' -e 's|/bin/pwd|pwd|' qtbase/configure && \
sed -i.old 's/CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, 0)/CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, kCGMouseButtonLeft)/' qtbase/src/plugins/platforms/cocoa/qcocoacursor.mm && \
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
cp -f qtbase/mkspecs/macx-clang/Info.plist.lib qtbase/mkspecs/macx-clang-linux/ &&\
cp -f qtbase/mkspecs/macx-clang/Info.plist.app qtbase/mkspecs/macx-clang-linux/ &&\
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\
cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \
cp -r qtbase/mkspecs/linux-arm-gnueabi-g++ qtbase/mkspecs/agrarian-linux-g++ && \
sed -i.old "s/arm-linux-gnueabi-/$(host)-/g" qtbase/mkspecs/agrarian-linux-g++/qmake.conf && \
echo "!host_build: QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
echo "!host_build: QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
echo "!host_build: QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
echo "QMAKE_LINK_OBJECT_MAX = 10" >> qtbase/mkspecs/win32-g++/qmake.conf &&\
echo "QMAKE_LINK_OBJECT_SCRIPT = object_script" >> qtbase/mkspecs/win32-g++/qmake.conf &&\
sed -i.old "s|QMAKE_CFLAGS = |!host_build: QMAKE_CFLAGS = $($(package)_cflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
sed -i.old "s|QMAKE_LFLAGS = |!host_build: QMAKE_LFLAGS = $($(package)_ldflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
sed -i.old "s|QMAKE_CXXFLAGS = |!host_build: QMAKE_CXXFLAGS = $($(package)_cxxflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf
endef endef
define $(package)_config_cmds define $(package)_config_cmds
qt_system_pc="$$$${QT_SYSTEM_PKG_CONFIG_LIBDIR:-`unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH; pkg-config --variable pc_path pkg-config 2>/dev/null || true`}" && \
if test -z "$$$${qt_system_pc}"; then \
qt_multiarch="`gcc -print-multiarch 2>/dev/null || true`"; \
if test -n "$$$${qt_multiarch}"; then \
qt_system_pc="/usr/lib/$$$${qt_multiarch}/pkgconfig:/lib/$$$${qt_multiarch}/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"; \
else \
qt_system_pc="/usr/lib/pkgconfig:/usr/share/pkgconfig"; \
fi; \
fi && \
export PKG_CONFIG_SYSROOT_DIR=/ && \ export PKG_CONFIG_SYSROOT_DIR=/ && \
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \ export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig$(if $(filter linux,$(host_os)),:$$$${qt_system_pc}) && \
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \ export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \
./configure $($(package)_config_opts) && \ ../qtbase/configure $($(package)_config_opts) -- -G Ninja $($(package)_cmake_opts) $($(package)_cmake_opts_$(host_os)) $($(package)_cmake_opts_$(host_arch)_$(host_os))
echo "host_build: QT_CONFIG ~= s/system-zlib/zlib" >> mkspecs/qconfig.pri && \
echo "CONFIG += force_bootstrap" >> mkspecs/qconfig.pri && \
$(MAKE) sub-src-clean && \
cd ../qttranslations && ../qtbase/bin/qmake qttranslations.pro -o Makefile && \
cd translations && ../../qtbase/bin/qmake translations.pro -o Makefile && cd ../.. && \
cd qttools/src/linguist/lrelease/ && ../../../../qtbase/bin/qmake lrelease.pro -o Makefile && \
cd ../lupdate/ && ../../../../qtbase/bin/qmake lupdate.pro -o Makefile && cd ../../../..
endef endef
define $(package)_build_cmds define $(package)_build_cmds
$(MAKE) -C src $(addprefix sub-,$($(package)_qt_libs)) && \ cmake --build . --parallel
$(MAKE) -C ../qttools/src/linguist/lrelease && \
$(MAKE) -C ../qttools/src/linguist/lupdate && \
$(MAKE) -C ../qttranslations
endef endef
ifeq ($(host_os),mingw32)
define $(package)_stage_cmds define $(package)_stage_cmds
$(MAKE) -C src INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_qt_libs))) && cd .. && \ DESTDIR=$($(package)_staging_dir) cmake --install .
$(MAKE) -C qttools/src/linguist/lrelease INSTALL_ROOT=$($(package)_staging_dir) install_target && \
$(MAKE) -C qttools/src/linguist/lupdate INSTALL_ROOT=$($(package)_staging_dir) install_target && \
$(MAKE) -C qttranslations INSTALL_ROOT=$($(package)_staging_dir) install_subtargets && \
if `test -f qtbase/src/plugins/platforms/xcb/xcb-static/libxcb-static.a`; then \
cp qtbase/src/plugins/platforms/xcb/xcb-static/libxcb-static.a $($(package)_staging_prefix_dir)/lib; \
fi
endef endef
else
define $(package)_stage_cmds
DESTDIR=$($(package)_staging_dir) cmake --install . && \
mkdir -p ../qttools-build && \
cd ../qttools-build && \
cmake -G Ninja ../qttools \
-DCMAKE_PREFIX_PATH=$($(package)_staging_prefix_dir) \
-DCMAKE_INSTALL_PREFIX=$(host_prefix) \
-DQT_HOST_PATH=$($(package)_staging_prefix_dir) \
-DQT_BUILD_EXAMPLES=FALSE \
-DQT_BUILD_TESTS=FALSE \
-DBUILD_SHARED_LIBS=OFF && \
cmake --build . --target lrelease --parallel && \
mkdir -p $($(package)_staging_prefix_dir)/libexec && \
cp ../qttools-build/bin/lrelease $($(package)_staging_prefix_dir)/libexec/lrelease
endef
endif
define $(package)_postprocess_cmds define $(package)_postprocess_cmds
rm -rf native/mkspecs/ native/lib/ lib/cmake/ && \ rm -rf share/doc share/examples share/qt6/sbom && \
rm -f lib/lib*.la lib/*.prl plugins/*/*.prl rm -f lib/lib*.la lib/*.prl plugins/*/*.prl
endef endef
+9
View File
@@ -9,6 +9,15 @@ define $(package)_set_vars
$(package)_config_opts_linux=--with-pic $(package)_config_opts_linux=--with-pic
endef endef
define $(package)_preprocess_cmds
sed -i.old \
-e 's/import sys, os, py_compile, imp/import sys, os, py_compile, importlib.util/' \
-e "s/hasattr(imp, 'get_tag')/True/g" \
-e 's/imp.cache_from_source(filepath)/importlib.util.cache_from_source(filepath)/g' \
-e 's/imp.cache_from_source(filepath, False)/importlib.util.cache_from_source(filepath, optimization="")/g' \
py-compile
endef
define $(package)_config_cmds define $(package)_config_cmds
$($(package)_autoconf) $($(package)_autoconf)
endef endef
+2 -5
View File
@@ -1,9 +1,8 @@
package=zeromq package=zeromq
$(package)_version=4.3.1 $(package)_version=4.3.5
$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/ $(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/
$(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=bcbabe1e2c7d0eec4ed612e10b94b112dd5f06fcefa994a0c79a45d835cd21eb $(package)_sha256_hash=6653ef5910f17954861fe72332e68b03ca6e4d9c7160eb3a8de5a5a913bfab43
$(package)_patches=0001-fix-build-with-older-mingw64.patch 0002-disable-pthread_set_name_np.patch
define $(package)_set_vars define $(package)_set_vars
$(package)_config_opts=--without-docs --disable-shared --without-libsodium --disable-curve --disable-curve-keygen --disable-perf --disable-Werror $(package)_config_opts=--without-docs --disable-shared --without-libsodium --disable-curve --disable-curve-keygen --disable-perf --disable-Werror
@@ -12,8 +11,6 @@ define $(package)_set_vars
endef endef
define $(package)_preprocess_cmds define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/0001-fix-build-with-older-mingw64.patch && \
patch -p1 < $($(package)_patch_dir)/0002-disable-pthread_set_name_np.patch && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub config cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub config
endef endef
+2 -2
View File
@@ -1,8 +1,8 @@
package=zlib package=zlib
$(package)_version=1.2.11 $(package)_version=1.3.2
$(package)_download_path=https://www.zlib.net $(package)_download_path=https://www.zlib.net
$(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 $(package)_sha256_hash=bb329a0a2cd0274d05519d61c667c062e06990d72e125ee2dfa8de64f0119d16
define $(package)_set_vars define $(package)_set_vars
$(package)_build_opts= CC="$($(package)_cc)" $(package)_build_opts= CC="$($(package)_cc)"
+124
View File
@@ -0,0 +1,124 @@
# Agrarian Codex Handoff
## Project State
Active repo:
```bash
/var/www/root_builds/agrarian
```
Active branch:
```bash
2.0
```
The 2.0 branch is intended to become the main development line after final build
validation. The worktree may contain build-generated files after local compiles;
do not commit generated build output.
## Current Build Baseline
Validated locally during the final pre-main pass:
```bash
env JOBS=8 ./contrib/build-linux.sh
env JOBS=8 ./contrib/build-linux-wallet.sh
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
```
Expected successful artifacts:
```bash
src/agrariand
src/agrarian-cli
src/agrarian-tx
src/qt/agrarian-qt
```
Additional validation completed during this pass:
```bash
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=windows-daemon WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=windows-qt WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=linux-arm64-daemon WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=linux-arm64-qt WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
```
The ARM64 daemon cross-build produced ARM aarch64 ELF binaries. The ARM64 Qt
target correctly refused to run on x86_64 and remains native-only.
## Build Menu
Use the menu for fresh-machine testing:
```bash
curl -L https://raw.githubusercontent.com/pacificao/agrarian/2.0/contrib/agrarian-build-menu.sh -o agrarian-build-menu.sh
chmod +x agrarian-build-menu.sh
BRANCH=2.0 ./agrarian-build-menu.sh
```
For controlled root-only environments only:
```bash
ALLOW_ROOT_BUILD_MENU=1 BRANCH=2.0 ./contrib/agrarian-build-menu.sh
```
The menu now includes Linux, Windows, and ARM64 targets. ARM64 daemon cross-build
from x86_64 is supported. ARM64 Qt is native-only for now.
## Network Notes
Mainnet P2P port:
```text
51336
```
Seed nodes currently use:
```text
node1.agrariancoin.com
node2.agrariancoin.com
node3.agrariancoin.com
node4.agrariancoin.com
node5.agrariancoin.com
```
The daemon has been used to test peer visibility with another node at
`dev.barnealogy.com`. Recheck connectivity after major consensus or network
changes.
## Important Decisions
- Keep Berkeley DB at 4.8.30 for 2.0 wallet compatibility.
- Do not upgrade to BDB 18.x in this release.
- Treat a SQLite wallet backend as a future migration project with backup,
migration, and rollback documentation.
- For now, Linux validation is the fastest correctness loop, but Windows builds
must pass before release.
- Do not assume Linux success guarantees Windows success; cross-build and Qt
plugin/link behavior can fail independently.
## Known Warning Areas
- `std::random_shuffle` deprecation warnings remain.
- Some vendored dependency warnings remain.
- Some old Boost/LevelDB warning noise remains.
- Cleanup should be correctness-driven, not broad cosmetic churn before release.
## Safe Cleanup Pattern
Before committing, stage intentional source/doc/script files first, then revert
unstaged build output:
```bash
git add <intentional files>
git restore .
git clean -nd
```
Only run `git clean -fd` after reviewing the dry-run output.
+87
View File
@@ -0,0 +1,87 @@
# Agrarian 2.0 Development Roadmap
This file tracks the 2.0 line before it becomes the main Agrarian codebase.
## Current Release Goal
Agrarian 2.0 should be the modern, buildable baseline for the coin:
- Ubuntu daemon builds
- Ubuntu Qt wallet builds
- Windows daemon cross-builds
- Windows Qt wallet cross-builds
- ARM64 daemon builds for server nodes
- clean enough docs and scripts for repeatable fresh-server builds
- stable network behavior with existing Agrarian nodes
## Validation Before Promoting 2.0 To Main
- Linux daemon: validated on Ubuntu with `contrib/build-linux.sh`.
- Linux Qt wallet: validated on Ubuntu with `contrib/build-linux-wallet.sh`.
- Daemon smoke test: validated with `contrib/smoke-test-daemon.sh`.
- Wallet smoke test: validated with `contrib/smoke-test-wallet.sh`.
- Qt smoke test: validated with `contrib/smoke-test-qt.sh`.
- Windows daemon: validated with the build menu on x86_64 Ubuntu.
- Windows Qt wallet: validated with the build menu on x86_64 Ubuntu.
- Linux ARM64 daemon: validated with the build menu cross-build from x86_64 Ubuntu.
- Linux ARM64 Qt wallet: native ARM64 build only for now; x86_64 menu guard validated.
## Build Script Targets
The build menu is the preferred entry point:
```bash
./contrib/agrarian-build-menu.sh
```
Supported targets:
- Linux daemon and CLI tools
- Linux Qt GUI wallet
- Windows daemon and CLI tools
- Windows Qt GUI wallet
- Linux ARM64 daemon and CLI tools
- Linux ARM64 Qt GUI wallet, native ARM64 host only
The script should:
- clone or fast-forward the selected branch
- install Ubuntu packages needed for the selected target
- refuse unsafe root execution unless explicitly overridden for controlled CI/root environments
- stop a running user daemon gracefully before replacing binaries
- refuse to force-close the GUI wallet
- restore a daemon it stopped when the build completes
## Dependency Policy
Already modernized in the 2.0 line:
- OpenSSL LTS path
- Boost current modern path
- Qt 6.8 LTS path
- expat
- freetype
- zlib
- libevent
- zeromq
- qrencode
- miniupnpc
- GMP
- protobuf
Berkeley DB stays on 4.8.30 for the 2.0 release to preserve wallet compatibility.
Do not jump to BDB 18.x in 2.0. A future wallet database migration should be a
planned project, likely toward SQLite, with explicit wallet backup and migration
tooling.
## Known Follow-Up Work
- Re-run Windows daemon and Windows Qt wallet validation after every dependency change.
- Keep ARM64 Qt wallet as native-only until a reliable cross-Qt path is designed.
- Reduce remaining compiler warning noise where it affects correctness.
- Replace deprecated `std::random_shuffle` usage.
- Audit old Boost and LevelDB warning areas without changing consensus behavior casually.
- Build a formal release packaging process for Linux and Windows artifacts.
- Add repeatable clean-machine CI once the local build menu is stable.
- Plan the SQLite wallet migration as a post-2.0 milestone.
- Continue wallet UX modernization after the 2.0 build baseline is promoted.
+8 -1
View File
@@ -36,17 +36,24 @@ Building
The following are developer notes on how to build Agrarian Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc. The following are developer notes on how to build Agrarian Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
- [Dependencies](dependencies.md) - [Dependencies](dependencies.md)
- [Agrarian 2.0 Modernization Status](modernization.md)
- [Interactive Build Menu](build-menu.md)
- [Ubuntu 24.04 Build Notes](build-ubuntu-24.md)
- [Desktop Wallet Build Quick Start](build-wallets.md)
- [macOS Build Notes](build-osx.md) - [macOS Build Notes](build-osx.md)
- [Unix Build Notes](build-unix.md) - [Unix Build Notes](build-unix.md)
- [Windows Build Notes](build-windows.md) - [Windows Build Notes](build-windows.md)
- [Gitian Building Guide](gitian-building.md) - [Gitian Building Guide](gitian-building.md)
The verified 2.0 build path is Ubuntu 24.04 with deterministic `depends/`.
macOS, RPM, Gitian, and Travis documentation is retained as historical
reference unless the individual document says it has been revalidated.
Development Development
--------------------- ---------------------
The Agrarian repo's [root README](/README.md) contains relevant information on the development process and automated testing. The Agrarian repo's [root README](/README.md) contains relevant information on the development process and automated testing.
- [Developer Notes](developer-notes.md) - [Developer Notes](developer-notes.md)
- [Multiwallet Qt Development](multiwallet-qt.md)
- [Release Notes](release-notes.md) - [Release Notes](release-notes.md)
- [Release Process](release-process.md) - [Release Process](release-process.md)
- [Source Code Documentation (External Link)](https://www.fuzzbawls.pw/agrarian/doxygen/) - [Source Code Documentation (External Link)](https://www.fuzzbawls.pw/agrarian/doxygen/)
+119
View File
@@ -0,0 +1,119 @@
Interactive Build Menu
======================
`contrib/agrarian-build-menu.sh` provides an interactive Ubuntu build workflow
for common Agrarian targets:
- Linux daemon and CLI tools
- Linux Qt GUI wallet
- Windows daemon and CLI tools
- Windows Qt GUI wallet
- Linux ARM64 daemon and CLI tools
- Linux ARM64 Qt GUI wallet
The script clones the Agrarian repository if the selected checkout directory
does not exist. If the checkout already exists, it fetches, checks out the
configured branch, and performs a fast-forward pull.
Only bootstrap packages needed to update the checkout are installed before the
pull. Target-specific packages are installed after the checkout is current, so
fresh dependency fixes on the selected branch are applied before the build.
After updating the checkout, the launcher restarts itself from the checked-out
copy so the current branch version of the menu is used for package installation
and build steps. The selected target, checkout directory, and job count are
preserved across that restart.
Quick Start
-----------
From an existing checkout:
./contrib/agrarian-build-menu.sh
Do not run the script with `sudo`. It runs checkout, compilation, daemon config,
and the user systemd service as the current local user. It asks for sudo only
when it needs to install Ubuntu packages or set MinGW compiler alternatives.
From a fresh Ubuntu host:
sudo apt-get update
sudo apt-get install -y git ca-certificates
git clone --branch 2.0 https://github.com/pacificao/agrarian.git agrarian
cd agrarian
./contrib/agrarian-build-menu.sh
On minimal VPS images, apt sources may be incomplete. The script checks for
missing Ubuntu `-updates` and `-security` suites before installing build
packages. If they are missing, it asks before adding a standard
`/etc/apt/sources.list.d/agrarian-ubuntu.sources` file for the host
architecture.
The Linux daemon option uses the deterministic native `depends/` build with Qt
disabled, so Berkeley DB and other core libraries are built inside the checkout
instead of being required as Ubuntu system development packages.
The Linux Qt wallet option also installs Ubuntu desktop development headers
needed by Qt's xcb platform plugin, including fontconfig, freetype, xcb, and
xkbcommon packages. Expat 2.8.0 and FreeType 2.14.3 are built through
`depends/` for the Linux Qt/font stack. Protobuf is not required because
obsolete BIP70 payment request support was removed. The helper also clears
stale Qt work directories before rebuilding, because failed CMake
feature checks can otherwise be cached between attempts.
The Linux ARM64 daemon option cross-compiles the daemon and CLI tools from an
x86_64 Ubuntu host when the `g++-aarch64-linux-gnu` and
`binutils-aarch64-linux-gnu` packages are available. On an ARM64 Ubuntu host it
uses the normal native Linux daemon path.
The Linux ARM64 Qt wallet option is native-only. Run it on an ARM64 Ubuntu
desktop/server with the Qt/XCB development packages installed. The current Qt 6
Linux wallet build depends on target-system XCB/font pkg-config metadata, so the
menu does not advertise a fragile x86_64-to-ARM64 Qt GUI cross-build path.
Defaults
--------
The script can be configured with environment variables:
REPO_URL=https://github.com/pacificao/agrarian.git
BRANCH=<current checkout branch, or main when run standalone>
WORKDIR=$HOME/agrarian
JOBS=<detected CPU count>
Example:
JOBS=8 WORKDIR=$HOME/src/agrarian ./contrib/agrarian-build-menu.sh
To test the 2.0 branch from a standalone downloaded copy of the script:
BRANCH=2.0 ./agrarian-build-menu.sh
Linux Daemon Autostart
----------------------
After a Linux daemon-capable build, the script asks whether to install and start
`agrariand` for the current user. If accepted, it creates:
- `$HOME/.local/bin/agrariand`
- `$HOME/.local/bin/agrarian-cli`
- `$HOME/.agrarian/agrarian.conf`
- `$HOME/.config/systemd/user/agrariand.service`
It then enables and starts the user service with:
systemctl --user enable --now agrariand.service
Windows Build Output
--------------------
For Windows targets, the script prints the `.exe` artifact paths when the build
finishes. Copy the generated files from `src/` and `src/qt/` to the Windows
machine and run either `agrariand.exe` or `agrarian-qt.exe`.
ARM64 Build Output
------------------
For ARM64 daemon targets, the script prints the generated Linux binaries in
`src/`. Copy them to the ARM64 machine if the build was cross-compiled. For the
ARM64 Qt wallet target, the build should be run directly on the ARM64 machine
and the wallet binary is `src/qt/agrarian-qt`.
+9 -2
View File
@@ -13,10 +13,18 @@ When the popup appears, click `Install`.
Then install [Homebrew](https://brew.sh). Then install [Homebrew](https://brew.sh).
Status
------
This macOS guide is legacy documentation. It has not been revalidated for the
Agrarian 2.0 Qt6/OpenSSL3/Boost modernization path. The currently verified
desktop wallet paths are Ubuntu 24.04 native and Windows x86_64 cross-compiled
from Ubuntu. See `doc/modernization.md`.
Dependencies Dependencies
---------------------- ----------------------
brew install autoconf automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python3 qt5 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.
@@ -207,4 +215,3 @@ build process to remain somewhat deterministic. Here's how it works:
using the script that is also included there. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs). using the script that is also included there. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs).
- Builders feed the unsigned app + detached signature back into Gitian. It - Builders feed the unsigned app + detached signature back into Gitian. It
uses the pre-built tools to recombine the pieces into a deterministic dmg. uses the pre-built tools to recombine the pieces into a deterministic dmg.
+45 -39
View File
@@ -1,4 +1,4 @@
Copyright (c) 2026 Agrarian Developers Copyright (c) 2022-2036 Agrarian Developers
Ubuntu 24.04 Build Notes Ubuntu 24.04 Build Notes
======================== ========================
@@ -13,6 +13,8 @@ Use at least 2 GB RAM for a reliable build. A 512 MB host with 2 GB swap can
configure successfully, but compilation is extremely slow and may time out while configure successfully, but compilation is extremely slow and may time out while
building large translation units. building large translation units.
Use `JOBS=1` on small hosts. On an 8-core, 16 GB host, `JOBS=8` is reasonable.
Packages Packages
-------- --------
@@ -21,35 +23,33 @@ Install the native daemon build dependencies:
sudo apt-get update sudo apt-get update
sudo apt-get install -y \ sudo apt-get install -y \
build-essential pkg-config autoconf automake libtool bsdmainutils \ build-essential pkg-config autoconf automake libtool bsdmainutils \
libboost-all-dev libevent-dev libgmp-dev libssl-dev \ cmake ninja-build python3 curl git make tar patch bzip2 xz-utils
libdb5.3-dev libdb5.3++-dev
For the desktop wallet, also install Qt and protobuf tools: For a native Qt wallet build and headless Qt smoke test, also install:
sudo apt-get install -y \ sudo apt-get install -y \
qtbase5-dev qttools5-dev-tools qtchooser \ xvfb libfontconfig1-dev libfreetype-dev libharfbuzz-dev \
libqrencode-dev libprotobuf-dev protobuf-compiler libbrotli-dev libbz2-dev libexpat1-dev libglib2.0-dev \
libgraphite2-dev libpng-dev zlib1g-dev libx11-xcb-dev \
libxcb1-dev libxcb-cursor-dev libxcb-icccm4-dev \
libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev \
libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev \
libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev \
libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev \
libxau-dev libxdmcp-dev libxext-dev libxi-dev libxrender-dev \
libxkbcommon-dev libxkbcommon-x11-dev
Daemon-only build Daemon build
----------------- ------------
For the pool daemon, the GUI, tests, bench, ZMQ, and UPnP can be disabled: For the daemon and CLI tools, use:
./autogen.sh
./configure \
--without-gui \
--disable-tests \
--disable-bench \
--disable-zmq \
--with-miniupnpc=no \
--with-incompatible-bdb \
CXXFLAGS="-O0 -g0 --param ggc-min-expand=1 --param ggc-min-heapsize=32768"
make -j1
The daemon helper runs the same path:
JOBS=1 ./contrib/build-linux.sh JOBS=1 ./contrib/build-linux.sh
The daemon helper builds/restores the native deterministic depends prefix first
with Qt disabled. Berkeley DB, OpenSSL, Boost, libevent, GMP, and supporting
libraries come from `depends/`, not from Ubuntu system headers.
Qt wallet build Qt wallet build
--------------- ---------------
@@ -57,42 +57,48 @@ For the desktop wallet, use:
JOBS=1 ./contrib/build-linux-wallet.sh JOBS=1 ./contrib/build-linux-wallet.sh
The wallet helper builds/restores the native depends prefix first, then creates The wallet helper builds/restores the native depends prefix first, including
a temporary config.site that keeps the depends libraries while allowing system Qt 6.8.3, OpenSSL 3.5.6, Boost 1.91.0, Expat 2.8.0, FreeType 2.14.3, and the
Qt 5 tools and pkg-config files to be used. Linux Qt font/xcb support libraries. It then configures the project with the
generated depends `config.site` and builds the Ubuntu Qt wallet.
Defaults: Defaults:
HOST=x86_64-pc-linux-gnu HOST=x86_64-pc-linux-gnu
QT_BINDIR=/usr/lib/qt5/bin
PROTOC_BINDIR=/usr/bin
CONFIG_SITE_FILE=/tmp/agrarian-linux-wallet-config.site
Warnings Warnings
-------- --------
Qt 5.15 and protobuf 3.x emit compatibility/deprecation warnings in a few Qt The Qt6/OpenSSL3 path should build without Qt compatibility warnings. First-run
translation units. Those warnings are expected while the Windows build remains runtime logs may report missing cache files such as `peers.dat`, `banlist.dat`,
pinned to Qt 5.9.7 and protobuf 2.6.1. or masternode cache files; those are created during startup.
Functional smoke test Functional smoke test
--------------------- ---------------------
After building the daemon, run the isolated regtest smoke test: After building, run the isolated smoke tests:
./contrib/smoke-test-daemon.sh ./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
The script starts `agrariand` with a temporary regtest datadir, confirms RPC and The daemon script confirms RPC and wallet calls work, mines one block, checks
wallet calls work, mines one block with `generate`, checks the block count, and the block count, and stops the daemon. The wallet script checks address
stops the daemon. creation, mining, send/confirm, backup, and encryption shutdown. The Qt script
starts `agrarian-qt` under Xvfb and confirms the GUI reaches `Done loading`
without Qt6 TLS, signal, or stylesheet compatibility warnings.
OpenSSL 3 OpenSSL 3
--------- ---------
Ubuntu 24.04 ships OpenSSL 3. Agrarian no longer rejects this only because The deterministic depends build currently uses OpenSSL 3.5.6.
`RAND_egd` is unavailable. Some deprecated OpenSSL SHA calls still warn during
compilation; those warnings are expected until the hashing helper code is Expat and FreeType
modernized. ------------------
The native Ubuntu Qt wallet path uses Expat 2.8.0 through fontconfig and
FreeType 2.14.3 for Qt 6 static font support. Keep those in the deterministic
depends graph; do not satisfy them with ad hoc system-library fallbacks.
Berkeley DB Berkeley DB
----------- -----------
+38 -15
View File
@@ -1,8 +1,10 @@
Copyright (c) 2026 Agrarian Developers Copyright (c) 2022-2036 Agrarian Developers
UNIX Build Notes UNIX Build Notes
These notes describe how to build Agrarian Core on Unix-based systems. These notes describe how to build Agrarian Core on Unix-based systems.
For Ubuntu 24.04, prefer the shorter and tested path in
`doc/build-ubuntu-24.md`.
IMPORTANT IMPORTANT
@@ -16,14 +18,25 @@ Example:
$BDB_PREFIX must be an absolute path. Using $(pwd) ensures an absolute $BDB_PREFIX must be an absolute path. Using $(pwd) ensures an absolute
path is used. path is used.
STANDARD BUILD STANDARD BUILD WITH DEPENDS
make -C depends HOST=x86_64-pc-linux-gnu NO_QT=0 -j$(nproc)
./autogen.sh ./autogen.sh
./configure CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
make make -j$(nproc)
make install (optional) make install (optional)
If dependencies are satisfied, this will build agrarian-qt as well. 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, Berkeley DB, and supporting
libraries.
For a daemon-only build:
JOBS=1 ./contrib/build-linux.sh
For a native Ubuntu desktop wallet build:
JOBS=1 ./contrib/build-linux-wallet.sh
DEPENDENCIES DEPENDENCIES
@@ -32,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.
@@ -50,15 +62,15 @@ UBUNTU / DEBIAN
Build tools: Build tools:
sudo apt-get install build-essential libtool bsdmainutils autotools-dev autoconf pkg-config automake python3 sudo apt-get install build-essential libtool bsdmainutils autotools-dev autoconf pkg-config automake cmake ninja-build python3 curl git
Libraries: System libraries are needed only for non-depends builds. The deterministic
depends build should be preferred for reproducibility.
Libraries for a system-library build:
sudo apt-get install libssl-dev libgmp-dev libevent-dev libboost-all-dev sudo apt-get install libssl-dev libgmp-dev libevent-dev libboost-all-dev
OpenSSL Note: For Ubuntu >= 18.04 or Debian >= Stretch use
libssl1.0-dev. OpenSSL 1.1 is not officially supported.
Berkeley DB 4.8 (wallet support): Berkeley DB 4.8 (wallet support):
sudo apt-get install software-properties-common sudo apt-get install software-properties-common
@@ -73,7 +85,9 @@ Optional:
Qt GUI: Qt GUI:
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler Use the native depends wallet helper for Qt6:
JOBS=1 ./contrib/build-linux-wallet.sh
Disable GUI: Disable GUI:
@@ -83,7 +97,7 @@ FEDORA
Build tools: Build tools:
sudo dnf install which gcc-c++ libtool make autoconf automake compat-openssl10-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel gmp-devel python3 sudo dnf install which gcc-c++ libtool make autoconf automake openssl-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel gmp-devel python3
Optional: Optional:
@@ -91,7 +105,8 @@ Optional:
Qt: Qt:
sudo dnf install qt5-qttools-devel qt5-qtbase-devel protobuf-devel Native Qt6 builds are currently tested through the Ubuntu depends path.
Fedora system-Qt builds are not part of the current verified path.
HARDENING HARDENING
@@ -121,3 +136,11 @@ ARM CROSS COMPILATION
./autogen.sh ./autogen.sh
./configure --prefix=$PWD/depends/arm-linux-gnueabihf --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++ ./configure --prefix=$PWD/depends/arm-linux-gnueabihf --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++
make make
SMOKE TESTS
After a native build, run:
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
+22 -14
View File
@@ -1,4 +1,4 @@
Copyright (c) 2026 Agrarian Developers Copyright (c) 2022-2036 Agrarian Developers
Desktop Wallet Build Quick Start Desktop Wallet Build Quick Start
================================ ================================
@@ -19,7 +19,8 @@ Use one job on small servers:
JOBS=1 ./contrib/build-linux-wallet.sh JOBS=1 ./contrib/build-linux-wallet.sh
JOBS=1 ./contrib/build-win64-wallet.sh JOBS=1 ./contrib/build-win64-wallet.sh
Use more jobs only when the host has enough memory. Use more jobs only when the host has enough memory. On an 8-core, 16 GB host,
`JOBS=8` is reasonable. On very small VPS instances, prefer `JOBS=1` and swap.
Ubuntu package baseline Ubuntu package baseline
----------------------- -----------------------
@@ -32,14 +33,21 @@ Ubuntu package baseline
For the native Ubuntu wallet: For the native Ubuntu wallet:
sudo apt-get install -y \ sudo apt-get install -y \
qtbase5-dev qttools5-dev-tools qtchooser \ cmake ninja-build xvfb libfontconfig1-dev libfreetype-dev \
libqrencode-dev libprotobuf-dev protobuf-compiler libharfbuzz-dev libbrotli-dev libbz2-dev libexpat1-dev \
libglib2.0-dev libgraphite2-dev libpng-dev zlib1g-dev \
libx11-xcb-dev libxcb1-dev libxcb-cursor-dev libxcb-icccm4-dev \
libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev \
libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev \
libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev \
libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev \
libxau-dev libxdmcp-dev libxext-dev libxi-dev libxrender-dev \
libxkbcommon-dev libxkbcommon-x11-dev
For the Windows wallet: For the Windows wallet:
sudo apt-get install -y \ sudo apt-get install -y \
mingw-w64 g++-mingw-w64-x86-64 g++-mingw-w64-x86-64-posix \ mingw-w64 g++-mingw-w64-x86-64 g++-mingw-w64-x86-64-posix
qttools5-dev-tools
Then select POSIX Mingw-w64 threading: Then select POSIX Mingw-w64 threading:
@@ -51,11 +59,10 @@ 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 current system Qt tools and protobuf while keeping the * Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, Expat,
deterministic depends libraries. FreeType, and supporting libraries.
* Windows uses the Qt 5.9.7 and protobuf 2.6.1 libraries from depends. Its host * Windows cross-target wallets use the deterministic depends Qt6 path and
tools must match those libraries closely enough for generated C++ output to matching Qt host tools staged by depends.
compile.
The helper scripts keep those rules in one place so the build is repeatable on a The helper scripts keep those rules in one place so the build is repeatable on a
fresh server. fresh server.
@@ -80,10 +87,11 @@ After the Windows wallet build:
Version checks Version checks
-------------- --------------
On Ubuntu: On Ubuntu, use the smoke tests:
QT_QPA_PLATFORM=offscreen src/qt/agrarian-qt --version ./contrib/smoke-test-daemon.sh
src/agrariand --version ./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
For Windows binaries from the Linux build host: For Windows binaries from the Linux build host:
+37 -13
View File
@@ -1,4 +1,4 @@
Copyright (c) 2026 Agrarian Developers Copyright (c) 2022-2036 Agrarian Developers
============================================================ ============================================================
Agrarian Core Windows Build Notes Agrarian Core Windows Build Notes
@@ -56,7 +56,7 @@ INSTALLING WSL
3. Complete Setup 3. Complete Setup
- Open command prompt - Open command prompt
- Run: Ubuntu1804 - Launch the installed Ubuntu distribution
- Create a UNIX user account - Create a UNIX user account
Once WSL is active, continue with cross-compilation instructions below. Once WSL is active, continue with cross-compilation instructions below.
@@ -77,10 +77,10 @@ GENERAL DEPENDENCIES
sudo apt update sudo apt update
sudo apt install -y build-essential libtool autotools-dev \ sudo apt install -y build-essential libtool autotools-dev \
automake pkg-config bsdmainutils curl git make tar patch \ automake pkg-config bsdmainutils curl git make tar patch \
qttools5-dev-tools 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:
@@ -148,20 +147,27 @@ Manual equivalent:
--disable-maintainer-mode \ --disable-maintainer-mode \
--disable-tests \ --disable-tests \
--disable-bench \ --disable-bench \
--with-gui=qt5 \ --with-gui=qt6 \
--with-qt-incdir=$PWD/depends/x86_64-w64-mingw32/include \ --with-qt-incdir=$PWD/depends/x86_64-w64-mingw32/include \
--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-translationdir=$PWD/depends/x86_64-w64-mingw32/translations \
--with-qt-bindir=$PWD/depends/build/x86_64-pc-linux-gnu/bin
make make
============================================================ ============================================================
BUILDING FOR 32-BIT WINDOWS BUILDING FOR 32-BIT WINDOWS
============================================================ ============================================================
The current verified 2.0 Windows path is x86_64. The 32-bit instructions below
are retained as a legacy cross-build reference and should be revalidated before
release use.
Install toolchain: Install toolchain:
sudo apt install g++-mingw-w64-i686 mingw-w64-i686-dev sudo apt install g++-mingw-w64-i686 mingw-w64-i686-dev
Ubuntu 18.04: If multiple MinGW thread models are installed:
sudo update-alternatives --config i686-w64-mingw32-g++ sudo update-alternatives --config i686-w64-mingw32-g++
@@ -216,12 +222,30 @@ 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
============================================================
The Windows cross-build helper targets the Qt 6.8 LTS depends path. Keep the
helper's Qt host tools (`moc`, `uic`, `rcc`) staged from the matching depends
build to avoid mixing host Qt tools with target Qt libraries.
============================================================
DEPENDS BASELINE NOTE
============================================================
The 2.0 branch currently verifies Windows x86_64 builds against the same
modernized core dependency baseline as Linux: OpenSSL 3.5.6, Boost 1.91.0,
Qt 6.8.3, Berkeley DB 4.8.30, libevent 2.1.12-stable, and GMP 6.3.0. Expat
2.8.0 and FreeType 2.14.3 are part of the Linux Qt/font depends
path and are documented in `doc/dependencies.md`.
============================================================ ============================================================
END OF DOCUMENT END OF DOCUMENT
+31 -16
View File
@@ -1,35 +1,50 @@
Dependencies Dependencies
============ ============
These are the dependencies currently used by Agrarian Core. You can find instructions for installing them in the `build-*.md` file for your platform. These are the dependencies currently used by the Agrarian 2.0 modernization
branch. You can find instructions for installing or building them in the
`build-*.md` file for your platform. The preferred path is the deterministic
`depends/` tree, not mixed system libraries.
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) | | Dependency | Version used | Minimum required | CVEs | Shared | Bundled Qt library |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | | | Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
| Boost | [1.64.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | | | Boost | [1.91.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | |
| Clang | | [3.3+](https://llvm.org/releases/download.html) (C++11 support) | | | | | Clang | | C++17 support | | | |
| D-Bus | [1.10.18](https://cgit.freedesktop.org/dbus/dbus/tree/NEWS?h=dbus-1.10) | | No | Yes | | | D-Bus | [1.10.18](https://cgit.freedesktop.org/dbus/dbus/tree/NEWS?h=dbus-1.10) | | No | Yes | |
| Expat | [2.2.6](https://libexpat.github.io/) | | No | Yes | | | Expat | [2.8.0](https://libexpat.github.io/) | | Security fixes | Yes | |
| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | | | fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
| FreeType | [2.7.1](https://download.savannah.gnu.org/releases/freetype) | | No | | | | FreeType | [2.14.3](https://download.savannah.gnu.org/releases/freetype) | | Qt 6 static font support | | |
| GCC | | [4.8+](https://gcc.gnu.org/) (C++11 support) | | | | | GCC | | C++17 support | | | |
| HarfBuzz-NG | | | | | | | HarfBuzz-NG | | | | | |
| libevent | [2.1.8-stable](https://github.com/libevent/libevent/releases) | 2.0.22 | No | | | | libevent | [2.1.12-stable](https://github.com/libevent/libevent/releases) | 2.0.22 | No | | |
| libjpeg | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L65) | | libjpeg | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L65) |
| libpng | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L64) | | libpng | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L64) |
| librsvg | | | | | | | librsvg | | | | | |
| MiniUPnPc | [2.0.20180203](http://miniupnp.free.fr/files) | | No | | | | MiniUPnPc | [2.3.3](https://miniupnp.tuxfamily.org/files/) | | No | | |
| OpenSSL | [1.0.1k](https://www.openssl.org/source) | | Yes | | | | OpenSSL | [3.5.6](https://www.openssl.org/source) | | No | | |
| GMP | [6.1.2](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 | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | | | qrencode | [4.1.1](https://github.com/fukuchi/libqrencode/releases/tag/v4.1.1) | | No | | |
| Qt | [5.9.7](https://download.qt.io/official_releases/qt/) | [5.5.1](https://github.com/bitcoin/bitcoin/issues/13478) | No | | | | Qt | [6.8.3](https://download.qt.io/official_releases/qt/) | 6.8 LTS | No | | |
| XCB | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L87) (Linux only) | | XCB | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L87) (Linux only) |
| xkbcommon | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L86) (Linux only) | | xkbcommon | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L86) (Linux only) |
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | | | ZeroMQ | [4.3.5](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
| zlib | [1.2.11](https://zlib.net/) | | | | No | | zlib | [1.3.2](https://zlib.net/) | | | | No |
Modernization notes
-------------------
* Qt builds target Qt 6.8 LTS through the deterministic depends path.
* OpenSSL builds target OpenSSL 3.5 LTS through the deterministic depends path.
* Boost builds target Boost 1.91.0 through the deterministic depends path.
* Protobuf was removed with obsolete BIP70 payment request support. Normal
`agrarian:` URI payment handling remains available.
* Berkeley DB intentionally remains 4.8.30 in depends for legacy `wallet.dat`
portability. Do not upgrade Berkeley DB in-place for normal releases; migrate
to a new wallet backend such as SQLite through a dedicated, tested wallet
migration path.
Controlling dependencies Controlling dependencies
------------------------ ------------------------
+28 -17
View File
@@ -1,6 +1,17 @@
Installer (Ubuntu) Installer (Ubuntu)
================== ==================
Status
---------------------
The preferred fresh-host workflow for the 2.0 branch is currently
`contrib/agrarian-build-menu.sh`, with the direct helper scripts
`contrib/build-linux.sh`, `contrib/build-linux-wallet.sh`, and
`contrib/build-win64-wallet.sh` used for repeatable scripted builds. This
installer document is retained for the older `installer/agrarian-installer.sh`
CLI and should be treated as secondary until that installer is revalidated
against the current Qt 6.8.3/OpenSSL 3.5.6/Boost 1.91.0/Expat 2.8.0/FreeType
2.14.3 depends baseline.
Overview Overview
--------------------- ---------------------
The Agrarian installer is `installer/agrarian-installer.sh`. It automates the Ubuntu build steps by: The Agrarian installer is `installer/agrarian-installer.sh`. It automates the Ubuntu build steps by:
@@ -9,13 +20,13 @@ The Agrarian installer is `installer/agrarian-installer.sh`. It automates the Ub
- Configuring the project with the depends `config.site` and prefix. - Configuring the project with the depends `config.site` and prefix.
- Building the daemon and CLI utilities (via `--action daemon` or `--action all`). - Building the daemon and CLI utilities (via `--action daemon` or `--action all`).
- Building the Qt wallet on Linux hosts (via `--action qt`, or `--action all` when Qt is enabled). - Building the Qt wallet on Linux hosts (via `--action qt`, or `--action all` when Qt is enabled).
- Cross-compiling Qt wallets for Windows and Linux ARM targets (via `--action qt --qt-target ...`). - Cross-compiling Qt wallets for Windows targets (via `--action qt --qt-target ...`).
It does not: It does not:
- Install system packages (it only checks for required toolchains and prints an `apt-get` command if missing). - Install system packages (it only checks for required toolchains and prints an `apt-get` command if missing).
- Run `make install` or copy binaries into `/usr/local`. - Run `make install` or copy binaries into `/usr/local`.
- Package platform installers (e.g., Windows/macOS/ARM Qt wallet bundles). - Package platform installers (e.g., Windows/macOS wallet bundles).
- Run or configure the daemon after the build. - Run or configure the daemon after the build.
Quick Start (Ubuntu/Debian) Quick Start (Ubuntu/Debian)
@@ -45,11 +56,13 @@ Build Qt wallets for cross targets (examples):
```bash ```bash
./installer/agrarian-installer.sh --action qt --qt-target win64 ./installer/agrarian-installer.sh --action qt --qt-target win64
./installer/agrarian-installer.sh --action qt --qt-target win32 ./installer/agrarian-installer.sh --action qt --qt-target win32
./installer/agrarian-installer.sh --action qt --qt-target armhf
./installer/agrarian-installer.sh --action qt --qt-target aarch64
./installer/agrarian-installer.sh --action qt --qt-target all ./installer/agrarian-installer.sh --action qt --qt-target all
``` ```
Use `contrib/agrarian-build-menu.sh` for the current ARM64 daemon and native
ARM64 Qt wallet flows. The legacy installer document is kept as secondary
reference and should not be treated as the release authority for ARM builds.
Expected outputs: Expected outputs:
- Depends prefix: `depends/<host-triplet>/` - Depends prefix: `depends/<host-triplet>/`
@@ -73,14 +86,12 @@ Common Installer Options
- `qt` builds the Qt wallet (`src/qt/agrarian-qt`). If depends are missing, the installer builds them first. - `qt` builds the Qt wallet (`src/qt/agrarian-qt`). If depends are missing, the installer builds them first.
- `all` builds depends and then runs top-level `make` in the repo root. - `all` builds depends and then runs top-level `make` in the repo root.
`--qt-target <native|win64|win32|armhf|aarch64|all>` `--qt-target <native|win64|win32|all>`
- `native` uses `--host` as-is (default). - `native` uses `--host` as-is (default).
- `win64` maps to `x86_64-w64-mingw32`. - `win64` maps to `x86_64-w64-mingw32`.
- `win32` maps to `i686-w64-mingw32`. - `win32` maps to `i686-w64-mingw32`.
- `armhf` maps to `arm-linux-gnueabihf`. - `all` builds native + the Windows cross targets listed above.
- `aarch64` maps to `aarch64-unknown-linux-gnu`.
- `all` builds native + all cross targets listed above.
`--host <triplet>` `--host <triplet>`
@@ -110,14 +121,14 @@ Troubleshooting
--------------------- ---------------------
Boost library naming/layout (the `-mt` suffix) Boost library naming/layout (the `-mt` suffix)
- Depends builds may produce Boost libs with suffixes like `libboost_thread-gcc-mt-1_64.a`. - Depends builds may produce Boost libs with suffixes like `libboost_thread-gcc-mt-1_91.a`.
- The installer checks for `libboost_thread*.a` and `libboost_system*.a`, so it tolerates `-mt` and versioned names. - The installer checks for `libboost_thread*.a` and `libboost_system*.a`, so it tolerates `-mt` and versioned names.
- If you are configuring manually, keep `--with-boost=<depends-prefix>` (the installer sets this for you) to avoid system Boost fallback. - If you are configuring manually, keep `--with-boost=<depends-prefix>` (the installer sets this for you) to avoid system Boost fallback.
`config.site` and PATH pitfalls `config.site` and PATH pitfalls
- The installer configures with `CONFIG_SITE=depends/<host>/share/config.site`. - The installer configures with `CONFIG_SITE=depends/<host>/share/config.site`.
- That `config.site` prepends `depends/<host>/native/bin` to `PATH`. Do not overwrite `PATH` with a minimal value; ensure `/usr/bin` and other system paths remain available. - Current helper builds use native host tools from `depends/build/<build-host>/bin`. Do not overwrite `PATH` with a minimal value; ensure `/usr/bin` and other system paths remain available.
- If `config.site` is missing, rebuild depends: - If `config.site` is missing, rebuild depends:
```bash ```bash
@@ -128,10 +139,10 @@ Qt pkg-config files missing in the depends prefix
The installer requires these `.pc` files in `depends/<host>/(lib|share)/pkgconfig`: The installer requires these `.pc` files in `depends/<host>/(lib|share)/pkgconfig`:
- `Qt5Core.pc` - Native Ubuntu Qt6 path: `Qt6Core.pc`, `Qt6Gui.pc`, `Qt6Network.pc`,
- `Qt5Gui.pc` `Qt6Widgets.pc`
- `Qt5Network.pc` - Windows cross-build Qt6 path: `Qt6Core.pc`, `Qt6Gui.pc`, `Qt6Network.pc`,
- `Qt5Widgets.pc` `Qt6Widgets.pc`
Fix by rebuilding depends with Qt enabled: Fix by rebuilding depends with Qt enabled:
@@ -153,14 +164,14 @@ Qt Cross-Compilation Packages (Ubuntu/Debian)
Install the common Linux build tools (from `depends/README.md`): Install the common Linux build tools (from `depends/README.md`):
```bash ```bash
sudo apt-get install make automake cmake curl g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch sudo apt-get install make automake cmake curl git g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch bzip2 xz-utils
``` ```
Then install toolchains per target: Then install toolchains per target:
- win64: `g++-mingw-w64-x86-64` (see `doc/build-windows.md`) - win64: `g++-mingw-w64-x86-64` (see `doc/build-windows.md`)
- win32: `g++-mingw-w64-i686` (see `doc/build-windows.md`) - win32: `g++-mingw-w64-i686` (see `doc/build-windows.md`)
- armhf: `g++-arm-linux-gnueabihf` and `binutils-arm-linux-gnueabihf` - aarch64 daemon builds through `contrib/agrarian-build-menu.sh` use
- aarch64: `g++-aarch64-linux-gnu` and `binutils-aarch64-linux-gnu` `g++-aarch64-linux-gnu` and `binutils-aarch64-linux-gnu`
If any toolchain binaries are missing, the installer prints a single `apt-get install` command that includes the required packages for the selected Qt targets. If any toolchain binaries are missing, the installer prints a single `apt-get install` command that includes the required packages for the selected Qt targets.
+3 -3
View File
@@ -247,6 +247,7 @@ EVENT_PTHREADS_LIBS = @EVENT_PTHREADS_LIBS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@ EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@
FGREP = @FGREP@ FGREP = @FGREP@
FILECMD = @FILECMD@
GCOV = @GCOV@ GCOV = @GCOV@
GENHTML = @GENHTML@ GENHTML = @GENHTML@
GENISOIMAGE = @GENISOIMAGE@ GENISOIMAGE = @GENISOIMAGE@
@@ -257,7 +258,7 @@ GREP = @GREP@
HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@ HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@
HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@ HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@
HARDENED_LDFLAGS = @HARDENED_LDFLAGS@ HARDENED_LDFLAGS = @HARDENED_LDFLAGS@
HAVE_CXX11 = @HAVE_CXX11@ HAVE_CXX17 = @HAVE_CXX17@
HEXDUMP = @HEXDUMP@ HEXDUMP = @HEXDUMP@
IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@ IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@
INSTALL = @INSTALL@ INSTALL = @INSTALL@
@@ -328,8 +329,6 @@ PYTHON = @PYTHON@
PYTHONPATH = @PYTHONPATH@ PYTHONPATH = @PYTHONPATH@
QR_CFLAGS = @QR_CFLAGS@ QR_CFLAGS = @QR_CFLAGS@
QR_LIBS = @QR_LIBS@ QR_LIBS = @QR_LIBS@
QT5_CFLAGS = @QT5_CFLAGS@
QT5_LIBS = @QT5_LIBS@
QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@ QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@
QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@ QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@
QTCGL_CFLAGS = @QTCGL_CFLAGS@ QTCGL_CFLAGS = @QTCGL_CFLAGS@
@@ -352,6 +351,7 @@ QTTHEME_CFLAGS = @QTTHEME_CFLAGS@
QTTHEME_LIBS = @QTTHEME_LIBS@ QTTHEME_LIBS = @QTTHEME_LIBS@
QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@ QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@
QTXCBQPA_LIBS = @QTXCBQPA_LIBS@ QTXCBQPA_LIBS = @QTXCBQPA_LIBS@
QT_CFLAGS = @QT_CFLAGS@
QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@ QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@
QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@ QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@
QT_DBUS_LIBS = @QT_DBUS_LIBS@ QT_DBUS_LIBS = @QT_DBUS_LIBS@
+84
View File
@@ -0,0 +1,84 @@
Agrarian 2.0 Modernization Status
=================================
This branch is the modernization line for Agrarian. The goal is to preserve
network behavior while making the codebase build repeatably on current systems.
Verified Build Baseline
-----------------------
Use Ubuntu 24.04 as the primary build host.
The current deterministic `depends/` baseline is:
- Qt 6.8.3 LTS
- OpenSSL 3.5.6 LTS
- Boost 1.91.0
- Expat 2.8.0 for the Linux Qt/font stack
- FreeType 2.14.3 for Qt 6 static font support
- Berkeley DB 4.8.30 for portable legacy wallet compatibility
- qrencode 4.1.1 for Qt wallet QR code support
- libevent 2.1.12-stable
- GMP 6.3.0
- MiniUPnPc 2.3.3 when UPnP support is enabled
- ZeroMQ 4.3.5 when enabled
Obsolete BIP70 payment request support was removed to eliminate the protobuf
and `protoc` dependency from the wallet build. Standard `agrarian:` URI payment
links are still supported.
Berkeley DB 4.8.30 is intentionally retained for legacy `wallet.dat`
compatibility. Future wallet-storage modernization should add a dedicated SQLite
backend and migration flow instead of changing the BDB version in-place.
The currently verified binaries are:
- Ubuntu daemon and command-line tools
- Ubuntu Qt desktop wallet
- Windows x86_64 Qt desktop wallet and command-line tools cross-compiled from
Ubuntu
Recommended Commands
--------------------
Native Ubuntu daemon:
JOBS=1 ./contrib/build-linux.sh
Native Ubuntu desktop wallet:
JOBS=1 ./contrib/build-linux-wallet.sh
Windows x86_64 desktop wallet:
JOBS=1 ./contrib/build-win64-wallet.sh
Use higher `JOBS` values only on hosts with enough memory. On an 8-core, 16 GB
host, `JOBS=8` is reasonable.
Verification
------------
After a native Ubuntu build, run:
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
After a Windows cross build, confirm the expected PE binaries:
file src/qt/agrarian-qt.exe src/agrariand.exe src/agrarian-cli.exe src/agrarian-tx.exe
Documentation Status
--------------------
The preferred docs are:
- `doc/build-ubuntu-24.md`
- `doc/build-wallets.md`
- `doc/build-windows.md`
- `doc/dependencies.md`
Older macOS, RPM, Gitian, and Travis documents remain in the tree as historical
reference. They are not part of the verified 2.0 modernization path unless a
document explicitly says otherwise.
+7 -3
View File
@@ -1,3 +1,7 @@
Status: historical release notes. This file documents the older Agrarian Core
3.3.0 release and is not the current Agrarian 2.0 modernization release plan.
For the current build and dependency baseline, see `doc/modernization.md`.
Agrarian Core version *3.3.0* is now available from: <https://github.com/agrarian-project/agrarian/releases> Agrarian Core version *3.3.0* is now available from: <https://github.com/agrarian-project/agrarian/releases>
This is a new major version release, including various bug fixes and performance improvements, as well as updated translations. This is a new major version release, including various bug fixes and performance improvements, as well as updated translations.
@@ -21,9 +25,9 @@ If you are running an older version, shut it down. Wait until it has completely
Compatibility Compatibility
============== ==============
Agrarian Core is extensively tested on multiple operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and later. For the current 2.0 modernization branch, the verified build targets are Ubuntu
24.04 and Windows x86_64 cross-compiled from Ubuntu. Older platform statements
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), No attempt is made to prevent installing or running the software on Windows XP, you can still do so at your own risk but be aware that there are known instabilities and issues. Please do not report issues about Windows XP to the issue tracker. below belong to the historical 3.3.0 release context.
Apple released it's last Mountain Lion update August 13, 2015, and officially ended support on [December 14, 2015](http://news.fnal.gov/2015/10/mac-os-x-mountain-lion-10-8-end-of-life-december-14/). Agrarian Core software starting with v3.2.0 will no longer run on MacOS versions prior to Yosemite (10.10). Please do not report issues about MacOS versions prior to Yosemite to the issue tracker. Apple released it's last Mountain Lion update August 13, 2015, and officially ended support on [December 14, 2015](http://news.fnal.gov/2015/10/mac-os-x-mountain-lion-10-8-end-of-life-december-14/). Agrarian Core software starting with v3.2.0 will no longer run on MacOS versions prior to Yosemite (10.10). Please do not report issues about MacOS versions prior to Yosemite to the issue tracker.
+4
View File
@@ -1,6 +1,10 @@
Travis CI Travis CI
========= =========
Status: legacy documentation. Travis CI is not part of the verified Agrarian
2.0 modernization path. Keep this file only as historical context until a
current CI workflow is added.
Support for using travis-ci has been added in order to automate pull-testing. Support for using travis-ci has been added in order to automate pull-testing.
See [travis-ci.org](https://travis-ci.org/) for more info See [travis-ci.org](https://travis-ci.org/) for more info
+14 -1
View File
@@ -1,6 +1,13 @@
# Ubuntu Installer # Ubuntu Installer
`installer/agrarian-installer.sh` provides a Ubuntu-only CLI for common build actions. `installer/agrarian-installer.sh` provides a Ubuntu-only CLI for common build
actions. The current modernization baseline is Ubuntu 24.04 with deterministic
`depends/`; see `doc/modernization.md` for the verified dependency set.
For fresh Ubuntu hosts, prefer `contrib/agrarian-build-menu.sh` first. The menu
script installs target-specific packages, updates the selected branch, builds
the deterministic depends tree, and can install/start the daemon for the current
user. This installer CLI is retained as a lower-level build tool.
## Usage ## Usage
@@ -32,6 +39,12 @@ If wallet is enabled (default), installer preflight checks require:
- `depends/<host>/lib/libboost_thread*.a` - `depends/<host>/lib/libboost_thread*.a`
- `depends/<host>/lib/libboost_system*.a` - `depends/<host>/lib/libboost_system*.a`
For the current native Ubuntu Qt wallet path, depends should also provide Qt6
pkg-config files such as `Qt6Core.pc`, `Qt6Gui.pc`, `Qt6Network.pc`, and
`Qt6Widgets.pc`. The Linux Qt/font path also builds Expat 2.8.0 and FreeType
2.14.3 through depends. The Windows cross-build path also uses the Qt6 depends
target.
When missing, the installer exits early and prints the exact missing path(s) plus the `make -C depends ...` command to fix them. When missing, the installer exits early and prints the exact missing path(s) plus the `make -C depends ...` command to fix them.
## Tests ## Tests
+4 -18
View File
@@ -27,7 +27,7 @@ Options:
--host <triplet> Build host triplet (default: x86_64-pc-linux-gnu) --host <triplet> Build host triplet (default: x86_64-pc-linux-gnu)
--action <depends|daemon|qt|all> --action <depends|daemon|qt|all>
Action to run (default: all) Action to run (default: all)
--qt-target <native|win64|win32|armhf|aarch64|all> --qt-target <native|win64|win32|all>
Qt wallet target (default: native) Qt wallet target (default: native)
--wallet <0|1> Enable wallet-related dependencies/build flags (default: 1) --wallet <0|1> Enable wallet-related dependencies/build flags (default: 1)
--jobs <n> Parallel build jobs (default: nproc) --jobs <n> Parallel build jobs (default: nproc)
@@ -144,14 +144,6 @@ check_toolchains_for_host() {
i686-w64-mingw32) i686-w64-mingw32)
add_missing_toolchain "i686-w64-mingw32-g++" "g++-mingw-w64-i686" add_missing_toolchain "i686-w64-mingw32-g++" "g++-mingw-w64-i686"
;; ;;
arm-linux-gnueabihf)
add_missing_toolchain "arm-linux-gnueabihf-g++" "g++-arm-linux-gnueabihf"
add_missing_toolchain "arm-linux-gnueabihf-ar" "binutils-arm-linux-gnueabihf"
;;
aarch64-unknown-linux-gnu)
add_missing_toolchain "aarch64-linux-gnu-g++" "g++-aarch64-linux-gnu"
add_missing_toolchain "aarch64-linux-gnu-ar" "binutils-aarch64-linux-gnu"
;;
*) *)
;; ;;
esac esac
@@ -263,7 +255,7 @@ ensure_qt_pkgconfig_prereqs() {
return 0 return 0
fi fi
for module in Qt5Core Qt5Gui Qt5Network Qt5Widgets; do for module in Qt6Core Qt6Gui Qt6Network Qt6Widgets; do
found_path="" found_path=""
if [[ -f "${prefix}/lib/pkgconfig/${module}.pc" ]]; then if [[ -f "${prefix}/lib/pkgconfig/${module}.pc" ]]; then
found_path="${prefix}/lib/pkgconfig/${module}.pc" found_path="${prefix}/lib/pkgconfig/${module}.pc"
@@ -317,12 +309,6 @@ qt_target_host() {
win32) win32)
echo "i686-w64-mingw32" echo "i686-w64-mingw32"
;; ;;
armhf)
echo "arm-linux-gnueabihf"
;;
aarch64)
echo "aarch64-unknown-linux-gnu"
;;
*) *)
return 1 return 1
;; ;;
@@ -342,7 +328,7 @@ qt_target_list() {
local target="$1" local target="$1"
case "${target}" in case "${target}" in
all) all)
echo "native win64 win32 armhf aarch64" echo "native win64 win32"
;; ;;
*) *)
echo "${target}" echo "${target}"
@@ -479,7 +465,7 @@ case "$ACTION" in
esac esac
case "$QT_TARGET" in case "$QT_TARGET" in
native|win64|win32|armhf|aarch64|all) ;; native|win64|win32|all) ;;
*) fail "Invalid --qt-target: ${QT_TARGET}" ;; *) fail "Invalid --qt-target: ${QT_TARGET}" ;;
esac esac
+6 -8
View File
@@ -36,9 +36,7 @@ for tool in \
x86_64-w64-mingw32-g++ \ x86_64-w64-mingw32-g++ \
i686-w64-mingw32-g++ \ i686-w64-mingw32-g++ \
aarch64-linux-gnu-gcc \ aarch64-linux-gnu-gcc \
aarch64-linux-gnu-g++ \ aarch64-linux-gnu-g++; do
arm-linux-gnueabihf-gcc \
arm-linux-gnueabihf-g++; do
cat > "${FAKE_BIN}/${tool}" <<'SH' cat > "${FAKE_BIN}/${tool}" <<'SH'
#!/usr/bin/env bash #!/usr/bin/env bash
exit 0 exit 0
@@ -68,16 +66,16 @@ seed_fake_depends_prefix() {
: > "${prefix}/include/db_cxx.h" : > "${prefix}/include/db_cxx.h"
: > "${prefix}/lib/libboost_thread.a" : > "${prefix}/lib/libboost_thread.a"
: > "${prefix}/lib/libboost_system.a" : > "${prefix}/lib/libboost_system.a"
: > "${prefix}/lib/pkgconfig/Qt5Core.pc" : > "${prefix}/lib/pkgconfig/Qt6Core.pc"
: > "${prefix}/lib/pkgconfig/Qt5Gui.pc" : > "${prefix}/lib/pkgconfig/Qt6Gui.pc"
: > "${prefix}/lib/pkgconfig/Qt5Network.pc" : > "${prefix}/lib/pkgconfig/Qt6Network.pc"
: > "${prefix}/lib/pkgconfig/Qt5Widgets.pc" : > "${prefix}/lib/pkgconfig/Qt6Widgets.pc"
} }
echo "[test 1] help output works" echo "[test 1] help output works"
bash "${WORK_REPO}/installer/agrarian-installer.sh" --help > "${LOG_DIR}/help.out" bash "${WORK_REPO}/installer/agrarian-installer.sh" --help > "${LOG_DIR}/help.out"
rg -q -- "--action <depends|daemon|qt|all>" "${LOG_DIR}/help.out" rg -q -- "--action <depends|daemon|qt|all>" "${LOG_DIR}/help.out"
rg -q -- "--qt-target <native|win64|win32|armhf|aarch64|all>" "${LOG_DIR}/help.out" rg -q -- "--qt-target <native|win64|win32|all>" "${LOG_DIR}/help.out"
rg -q -- "--host <triplet>" "${LOG_DIR}/help.out" rg -q -- "--host <triplet>" "${LOG_DIR}/help.out"
rg -q -- "--wallet <0|1>" "${LOG_DIR}/help.out" rg -q -- "--wallet <0|1>" "${LOG_DIR}/help.out"
rg -q -- "--jobs <n>" "${LOG_DIR}/help.out" rg -q -- "--jobs <n>" "${LOG_DIR}/help.out"
-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
+50 -92
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 \
@@ -1932,6 +1927,7 @@ EVENT_PTHREADS_LIBS = @EVENT_PTHREADS_LIBS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@ EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@
FGREP = @FGREP@ FGREP = @FGREP@
FILECMD = @FILECMD@
GCOV = @GCOV@ GCOV = @GCOV@
GENHTML = @GENHTML@ GENHTML = @GENHTML@
GENISOIMAGE = @GENISOIMAGE@ GENISOIMAGE = @GENISOIMAGE@
@@ -1942,7 +1938,7 @@ GREP = @GREP@
HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@ HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@
HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@ HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@
HARDENED_LDFLAGS = @HARDENED_LDFLAGS@ HARDENED_LDFLAGS = @HARDENED_LDFLAGS@
HAVE_CXX11 = @HAVE_CXX11@ HAVE_CXX17 = @HAVE_CXX17@
HEXDUMP = @HEXDUMP@ HEXDUMP = @HEXDUMP@
IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@ IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@
INSTALL = @INSTALL@ INSTALL = @INSTALL@
@@ -2003,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@
@@ -2013,8 +2006,6 @@ PYTHON = @PYTHON@
PYTHONPATH = @PYTHONPATH@ PYTHONPATH = @PYTHONPATH@
QR_CFLAGS = @QR_CFLAGS@ QR_CFLAGS = @QR_CFLAGS@
QR_LIBS = @QR_LIBS@ QR_LIBS = @QR_LIBS@
QT5_CFLAGS = @QT5_CFLAGS@
QT5_LIBS = @QT5_LIBS@
QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@ QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@
QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@ QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@
QTCGL_CFLAGS = @QTCGL_CFLAGS@ QTCGL_CFLAGS = @QTCGL_CFLAGS@
@@ -2037,6 +2028,7 @@ QTTHEME_CFLAGS = @QTTHEME_CFLAGS@
QTTHEME_LIBS = @QTTHEME_LIBS@ QTTHEME_LIBS = @QTTHEME_LIBS@
QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@ QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@
QTXCBQPA_LIBS = @QTXCBQPA_LIBS@ QTXCBQPA_LIBS = @QTXCBQPA_LIBS@
QT_CFLAGS = @QT_CFLAGS@
QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@ QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@
QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@ QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@
QT_DBUS_LIBS = @QT_DBUS_LIBS@ QT_DBUS_LIBS = @QT_DBUS_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)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
#include <windows.h> // needed for VERSIONINFO #include <windows.h> // needed for VERSIONINFO
#include "clientversion.h" // holds the needed client version information #include "clientversion.h" // holds the needed client version information
+1 -1
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2015 The Bitcoin developers // Copyright (c) 2009-2015 The Bitcoin developers
// Copyright (c) 2009-2015 The Dash developers // Copyright (c) 2009-2015 The Dash developers
// Copyright (c) 2015-2018 The PIVX developers // Copyright (c) 2015-2018 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
#include <windows.h> // needed for VERSIONINFO #include <windows.h> // needed for VERSIONINFO
#include "clientversion.h" // holds the needed client version information #include "clientversion.h" // holds the needed client version information
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
#include <windows.h> // needed for VERSIONINFO #include <windows.h> // needed for VERSIONINFO
#include "clientversion.h" // holds the needed client version information #include "clientversion.h" // holds the needed client version information
+1 -1
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+9 -6
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX 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.
@@ -56,7 +56,7 @@ static void convertSeed6(std::vector<CAddress>& vSeedsOut, const SeedSpec6* data
static Checkpoints::MapCheckpoints mapCheckpoints = static Checkpoints::MapCheckpoints mapCheckpoints =
boost::assign::map_list_of boost::assign::map_list_of
(0, uint256("000003452250d81f8b07d42e127c92729802e3c48f3c7b9834256fd0fb9a0c2e")); (0, uint256("000003452250d81f8b07d42e127c92729802e3c48f3c7b9834256fd0fb9a0c2e"));
static const Checkpoints::CCheckpointData data = { static const Checkpoints::CCheckpointData mainCheckpointData = {
&mapCheckpoints, &mapCheckpoints,
1643790201, // * UNIX timestamp of last checkpoint block 1643790201, // * UNIX timestamp of last checkpoint block
0, // * total number of transactions between genesis and last checkpoint 0, // * total number of transactions between genesis and last checkpoint
@@ -201,8 +201,11 @@ public:
assert(hashGenesisBlock == uint256("0x000003452250d81f8b07d42e127c92729802e3c48f3c7b9834256fd0fb9a0c2e")); assert(hashGenesisBlock == uint256("0x000003452250d81f8b07d42e127c92729802e3c48f3c7b9834256fd0fb9a0c2e"));
assert(genesis.hashMerkleRoot == uint256("0x3bb054bb772e1bee1547d4b0e06c0ce34d636ee1daf56b37f1a017ce8136da00")); assert(genesis.hashMerkleRoot == uint256("0x3bb054bb772e1bee1547d4b0e06c0ce34d636ee1daf56b37f1a017ce8136da00"));
vSeeds.push_back(CDNSSeedData("pacificao.com", "agr1.pacificao.com")); vSeeds.push_back(CDNSSeedData("node1.agrariancoin.com", "node1.agrariancoin.com"));
vSeeds.push_back(CDNSSeedData("n2.pacificao.com", "agr2.pacificao.com")); vSeeds.push_back(CDNSSeedData("node2.agrariancoin.com", "node2.agrariancoin.com"));
vSeeds.push_back(CDNSSeedData("node3.agrariancoin.com", "node3.agrariancoin.com"));
vSeeds.push_back(CDNSSeedData("node4.agrariancoin.com", "node4.agrariancoin.com"));
vSeeds.push_back(CDNSSeedData("node5.agrariancoin.com", "node5.agrariancoin.com"));
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1, 23); base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1, 23);
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1, 24); base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1, 24);
@@ -252,7 +255,7 @@ public:
const Checkpoints::CCheckpointData& Checkpoints() const const Checkpoints::CCheckpointData& Checkpoints() const
{ {
return data; return mainCheckpointData;
} }
}; };
static CMainParams mainParams; static CMainParams mainParams;
@@ -459,7 +462,7 @@ public:
const Checkpoints::CCheckpointData& Checkpoints() const const Checkpoints::CCheckpointData& Checkpoints() const
{ {
// UnitTest share the same checkpoints as MAIN // UnitTest share the same checkpoints as MAIN
return data; return mainCheckpointData;
} }
//! Published setters to allow changing values in unit test cases //! Published setters to allow changing values in unit test cases
+1 -1
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX 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.
+1 -1
View File
@@ -23,7 +23,7 @@
#define DO_STRINGIZE(X) #X #define DO_STRINGIZE(X) #X
//! Copyright string used in Windows .rc files //! Copyright string used in Windows .rc files
#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core Developers, 2014-" STRINGIZE(COPYRIGHT_YEAR) " The Dash Core Developers, 2015-" STRINGIZE(COPYRIGHT_YEAR) " The Agrarian Core Developers" #define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core Developers, 2014-" STRINGIZE(COPYRIGHT_YEAR) " The Dash Core Developers, 2015-" STRINGIZE(COPYRIGHT_YEAR) " The PIVX Core Developers, 2022-" STRINGIZE(COPYRIGHT_YEAR) " The Agrarian Core Developers"
/** /**
* agrariand-res.rc includes this file, but it cannot cope with real c++ code. * agrariand-res.rc includes this file, but it cannot cope with real c++ code.
+5 -2
View File
@@ -70,8 +70,8 @@
/* Define this symbol if the consensus lib has been built */ /* Define this symbol if the consensus lib has been built */
#undef HAVE_CONSENSUS_LIB #undef HAVE_CONSENSUS_LIB
/* define if the compiler supports basic C++11 syntax */ /* define if the compiler supports basic C++17 syntax */
#undef HAVE_CXX11 #undef HAVE_CXX17
/* Define to 1 if you have the declaration of `be16toh', and to 0 if you /* Define to 1 if you have the declaration of `be16toh', and to 0 if you
don't. */ don't. */
@@ -366,6 +366,9 @@
/* Define this symbol if qt plugins are static */ /* Define this symbol if qt plugins are static */
#undef QT_STATICPLUGIN #undef QT_STATICPLUGIN
/* Define this symbol if the Qt OpenSSL TLS backend exists */
#undef QT_TLS_OPENSSL
/* Define to 1 if all of the C90 standard headers exist (not just the ones /* Define to 1 if all of the C90 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */ backward compatibility; new code need not use it. */
+31 -25
View File
@@ -53,6 +53,8 @@
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <openssl/crypto.h>
#ifndef WIN32 #ifndef WIN32
#include <signal.h> #include <signal.h>
#endif #endif
@@ -614,7 +616,7 @@ std::string LicenseInfo()
"\n" + "\n" +
FormatParagraph(strprintf(_("Copyright (C) 2015-%i The PIVX Core Developers"), COPYRIGHT_YEAR)) + "\n" + FormatParagraph(strprintf(_("Copyright (C) 2015-%i The PIVX Core Developers"), COPYRIGHT_YEAR)) + "\n" +
"\n" + "\n" +
FormatParagraph(strprintf(_("Copyright (C) %i The Agrarian Core Developers"), COPYRIGHT_YEAR)) + "\n" + FormatParagraph(strprintf(_("Copyright (C) 2022-%i The Agrarian Core Developers"), COPYRIGHT_YEAR)) + "\n" +
"\n" + "\n" +
FormatParagraph(_("This is experimental software.")) + "\n" + FormatParagraph(_("This is experimental software.")) + "\n" +
"\n" + "\n" +
@@ -682,12 +684,12 @@ void ThreadImport(std::vector<boost::filesystem::path> vImportFiles)
} }
// hardcoded $DATADIR/bootstrap.dat // hardcoded $DATADIR/bootstrap.dat
filesystem::path pathBootstrap = GetDataDir() / "bootstrap.dat"; boost::filesystem::path pathBootstrap = GetDataDir() / "bootstrap.dat";
if (filesystem::exists(pathBootstrap)) { if (boost::filesystem::exists(pathBootstrap)) {
FILE* file = fopen(pathBootstrap.string().c_str(), "rb"); FILE* file = fopen(pathBootstrap.string().c_str(), "rb");
if (file) { if (file) {
CImportingNow imp; CImportingNow imp;
filesystem::path pathBootstrapOld = GetDataDir() / "bootstrap.dat.old"; boost::filesystem::path pathBootstrapOld = GetDataDir() / "bootstrap.dat.old";
LogPrintf("Importing bootstrap.dat...\n"); LogPrintf("Importing bootstrap.dat...\n");
LoadExternalBlockFile(file); LoadExternalBlockFile(file);
RenameOver(pathBootstrap, pathBootstrapOld); RenameOver(pathBootstrap, pathBootstrapOld);
@@ -1055,7 +1057,11 @@ bool AppInit2()
ShrinkDebugFile(); ShrinkDebugFile();
LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
LogPrintf("Agrarian version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); LogPrintf("Agrarian version %s (%s)\n", FormatFullVersion(), CLIENT_DATE);
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
LogPrintf("Using OpenSSL version %s\n", OpenSSL_version(OPENSSL_VERSION));
#else
LogPrintf("Using OpenSSL version %s\n", SSLeay_version(SSLEAY_VERSION)); LogPrintf("Using OpenSSL version %s\n", SSLeay_version(SSLEAY_VERSION));
#endif
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
LogPrintf("Using BerkeleyDB version %s\n", DbEnv::version(0, 0, 0)); LogPrintf("Using BerkeleyDB version %s\n", DbEnv::version(0, 0, 0));
#endif #endif
@@ -1099,15 +1105,15 @@ bool AppInit2()
// ********************************************************* Step 5: Backup wallet and verify wallet database integrity // ********************************************************* Step 5: Backup wallet and verify wallet database integrity
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
if (!fDisableWallet) { if (!fDisableWallet) {
filesystem::path backupDir = GetDataDir() / "backups"; boost::filesystem::path backupDir = GetDataDir() / "backups";
if (!filesystem::exists(backupDir)) { if (!boost::filesystem::exists(backupDir)) {
// Always create backup folder to not confuse the operating system's file browser // Always create backup folder to not confuse the operating system's file browser
filesystem::create_directories(backupDir); boost::filesystem::create_directories(backupDir);
} }
nWalletBackups = GetArg("-createwalletbackups", 10); nWalletBackups = GetArg("-createwalletbackups", 10);
nWalletBackups = std::max(0, std::min(10, nWalletBackups)); nWalletBackups = std::max(0, std::min(10, nWalletBackups));
if (nWalletBackups > 0) { if (nWalletBackups > 0) {
if (filesystem::exists(backupDir)) { if (boost::filesystem::exists(backupDir)) {
// Create backup of the wallet // Create backup of the wallet
std::string dateTimeStr = DateTimeStrFormat(".%Y-%m-%d-%H-%M", GetTime()); std::string dateTimeStr = DateTimeStrFormat(".%Y-%m-%d-%H-%M", GetTime());
std::string backupPathStr = backupDir.string(); std::string backupPathStr = backupDir.string();
@@ -1170,30 +1176,30 @@ bool AppInit2()
if (GetBoolArg("-resync", false)) { if (GetBoolArg("-resync", false)) {
uiInterface.InitMessage(_("Preparing for resync...")); uiInterface.InitMessage(_("Preparing for resync..."));
// Delete the local blockchain folders to force a resync from scratch to get a consitent blockchain-state // Delete the local blockchain folders to force a resync from scratch to get a consitent blockchain-state
filesystem::path blocksDir = GetDataDir() / "blocks"; boost::filesystem::path blocksDir = GetDataDir() / "blocks";
filesystem::path chainstateDir = GetDataDir() / "chainstate"; boost::filesystem::path chainstateDir = GetDataDir() / "chainstate";
filesystem::path sporksDir = GetDataDir() / "sporks"; boost::filesystem::path sporksDir = GetDataDir() / "sporks";
filesystem::path zerocoinDir = GetDataDir() / "zerocoin"; boost::filesystem::path zerocoinDir = GetDataDir() / "zerocoin";
LogPrintf("Deleting blockchain folders blocks, chainstate, sporks and zerocoin\n"); LogPrintf("Deleting blockchain folders blocks, chainstate, sporks and zerocoin\n");
// We delete in 4 individual steps in case one of the folder is missing already // We delete in 4 individual steps in case one of the folder is missing already
try { try {
if (filesystem::exists(blocksDir)){ if (boost::filesystem::exists(blocksDir)){
boost::filesystem::remove_all(blocksDir); boost::filesystem::remove_all(blocksDir);
LogPrintf("-resync: folder deleted: %s\n", blocksDir.string().c_str()); LogPrintf("-resync: folder deleted: %s\n", blocksDir.string().c_str());
} }
if (filesystem::exists(chainstateDir)){ if (boost::filesystem::exists(chainstateDir)){
boost::filesystem::remove_all(chainstateDir); boost::filesystem::remove_all(chainstateDir);
LogPrintf("-resync: folder deleted: %s\n", chainstateDir.string().c_str()); LogPrintf("-resync: folder deleted: %s\n", chainstateDir.string().c_str());
} }
if (filesystem::exists(sporksDir)){ if (boost::filesystem::exists(sporksDir)){
boost::filesystem::remove_all(sporksDir); boost::filesystem::remove_all(sporksDir);
LogPrintf("-resync: folder deleted: %s\n", sporksDir.string().c_str()); LogPrintf("-resync: folder deleted: %s\n", sporksDir.string().c_str());
} }
if (filesystem::exists(zerocoinDir)){ if (boost::filesystem::exists(zerocoinDir)){
boost::filesystem::remove_all(zerocoinDir); boost::filesystem::remove_all(zerocoinDir);
LogPrintf("-resync: folder deleted: %s\n", zerocoinDir.string().c_str()); LogPrintf("-resync: folder deleted: %s\n", zerocoinDir.string().c_str());
} }
@@ -1230,7 +1236,7 @@ bool AppInit2()
return false; return false;
} }
if (filesystem::exists(GetDataDir() / strWalletFile)) { if (boost::filesystem::exists(GetDataDir() / strWalletFile)) {
CDBEnv::VerifyResult r = bitdb.Verify(strWalletFile, CWalletDB::Recover); CDBEnv::VerifyResult r = bitdb.Verify(strWalletFile, CWalletDB::Recover);
if (r == CDBEnv::RECOVER_OK) { if (r == CDBEnv::RECOVER_OK) {
string msg = strprintf(_("Warning: wallet.dat corrupt, data salvaged!" string msg = strprintf(_("Warning: wallet.dat corrupt, data salvaged!"
@@ -1394,19 +1400,19 @@ bool AppInit2()
fReindex = GetBoolArg("-reindex", false); fReindex = GetBoolArg("-reindex", false);
// Upgrading to 0.8; hard-link the old blknnnn.dat files into /blocks/ // Upgrading to 0.8; hard-link the old blknnnn.dat files into /blocks/
filesystem::path blocksDir = GetDataDir() / "blocks"; boost::filesystem::path blocksDir = GetDataDir() / "blocks";
if (!filesystem::exists(blocksDir)) { if (!boost::filesystem::exists(blocksDir)) {
filesystem::create_directories(blocksDir); boost::filesystem::create_directories(blocksDir);
bool linked = false; bool linked = false;
for (unsigned int i = 1; i < 10000; i++) { for (unsigned int i = 1; i < 10000; i++) {
filesystem::path source = GetDataDir() / strprintf("blk%04u.dat", i); boost::filesystem::path source = GetDataDir() / strprintf("blk%04u.dat", i);
if (!filesystem::exists(source)) break; if (!boost::filesystem::exists(source)) break;
filesystem::path dest = blocksDir / strprintf("blk%05u.dat", i - 1); boost::filesystem::path dest = blocksDir / strprintf("blk%05u.dat", i - 1);
try { try {
filesystem::create_hard_link(source, dest); boost::filesystem::create_hard_link(source, dest);
LogPrintf("Hardlinked %s -> %s\n", source.string(), dest.string()); LogPrintf("Hardlinked %s -> %s\n", source.string(), dest.string());
linked = true; linked = true;
} catch (filesystem::filesystem_error& e) { } catch (boost::filesystem::filesystem_error& e) {
// Note: hardlink creation failing is not a disaster, it just means // Note: hardlink creation failing is not a disaster, it just means
// blocks will get re-downloaded from peers. // blocks will get re-downloaded from peers.
LogPrintf("Error hardlinking blk%04u.dat : %s\n", i, e.what()); LogPrintf("Error hardlinking blk%04u.dat : %s\n", i, e.what());
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (c) 2012-2013 The PPCoin developers // Copyright (c) 2012-2013 The PPCoin developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (c) 2012-2013 The PPCoin developers // Copyright (c) 2012-2013 The PPCoin developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
#ifndef AGRARIAN_BITCOIN_KERNEL_H #ifndef AGRARIAN_BITCOIN_KERNEL_H
+2 -2
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 The Agrarian developers // Copyright (c) 2022-2036 The 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.
@@ -4966,7 +4966,7 @@ bool AbortNode(const std::string& strMessage, const std::string& userMessage)
bool CheckDiskSpace(uint64_t nAdditionalBytes) bool CheckDiskSpace(uint64_t nAdditionalBytes)
{ {
uint64_t nFreeBytesAvailable = filesystem::space(GetDataDir()).available; uint64_t nFreeBytesAvailable = boost::filesystem::space(GetDataDir()).available;
// Check for nMinDiskSpace bytes (currently 50MB) // Check for nMinDiskSpace bytes (currently 50MB)
if (nFreeBytesAvailable < nMinDiskSpace + nAdditionalBytes) if (nFreeBytesAvailable < nMinDiskSpace + nAdditionalBytes)
+1 -1
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX 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.
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+1 -1
View File
@@ -1,6 +1,6 @@
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+49 -2
View File
@@ -240,7 +240,7 @@ void CMasternodeSync::Process()
/* /*
Resync if we lose all masternodes from sleep/wake or failure to sync originally Resync if we lose all masternodes from sleep/wake or failure to sync originally
*/ */
if (mnodeman.CountEnabled() == 0) { if (mnodeman.CountEnabled() == 0 && IsSporkActive(SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) {
Reset(); Reset();
} else } else
return; return;
@@ -261,6 +261,49 @@ void CMasternodeSync::Process()
if (Params().NetworkID() != CBaseChainParams::REGTEST && if (Params().NetworkID() != CBaseChainParams::REGTEST &&
!IsBlockchainSynced() && RequestedMasternodeAssets > MASTERNODE_SYNC_SPORKS) return; !IsBlockchainSynced() && RequestedMasternodeAssets > MASTERNODE_SYNC_SPORKS) return;
// Small networks can have every connected peer marked fulfilled before an
// empty masternode stage reaches its per-peer timeout check. Advance empty
// stages here so staking is not blocked forever on networks with no
// masternodes, winners, or budgets.
if (GetTime() - nAssetSyncStarted > MASTERNODE_SYNC_TIMEOUT * 5) {
if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) {
GetNextAsset();
return;
}
if (RequestedMasternodeAssets == MASTERNODE_SYNC_LIST && lastMasternodeList == 0) {
if (IsSporkActive(SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) {
LogPrintf("CMasternodeSync::Process - ERROR - Sync has failed, will retry later\n");
RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED;
RequestedMasternodeAttempt = 0;
lastFailure = GetTime();
nCountFailures++;
} else {
GetNextAsset();
}
return;
}
if (RequestedMasternodeAssets == MASTERNODE_SYNC_MNW && lastMasternodeWinner == 0) {
if (IsSporkActive(SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT)) {
LogPrintf("CMasternodeSync::Process - ERROR - Sync has failed, will retry later\n");
RequestedMasternodeAssets = MASTERNODE_SYNC_FAILED;
RequestedMasternodeAttempt = 0;
lastFailure = GetTime();
nCountFailures++;
} else {
GetNextAsset();
}
return;
}
if (RequestedMasternodeAssets == MASTERNODE_SYNC_BUDGET && lastBudgetItem == 0) {
GetNextAsset();
activeMasternode.ManageStatus();
return;
}
}
TRY_LOCK(cs_vNodes, lockRecv); TRY_LOCK(cs_vNodes, lockRecv);
if (!lockRecv) return; if (!lockRecv) return;
@@ -284,11 +327,15 @@ void CMasternodeSync::Process()
//set to synced //set to synced
if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) { if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) {
if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD) {
GetNextAsset();
return;
}
if (pnode->HasFulfilledRequest("getspork")) continue; if (pnode->HasFulfilledRequest("getspork")) continue;
pnode->FulfilledRequest("getspork"); pnode->FulfilledRequest("getspork");
pnode->PushMessage("getsporks"); //get current network sporks pnode->PushMessage("getsporks"); //get current network sporks
if (RequestedMasternodeAttempt >= 2) GetNextAsset();
RequestedMasternodeAttempt++; RequestedMasternodeAttempt++;
return; return;
+7 -3
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2019 The PIVX developers // Copyright (c) 2015-2019 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
@@ -10,6 +10,7 @@
#include "amount.h" #include "amount.h"
#include "hash.h" #include "hash.h"
#include "init.h"
#include "main.h" #include "main.h"
#include "masternode-sync.h" #include "masternode-sync.h"
#include "net.h" #include "net.h"
@@ -634,7 +635,7 @@ void BitcoinMiner(CWallet* pwallet, bool fProofOfStake)
CReserveKey reservekey(pwallet); CReserveKey reservekey(pwallet);
unsigned int nExtraNonce = 0; unsigned int nExtraNonce = 0;
bool fLastLoopOrphan = false; bool fLastLoopOrphan = false;
while (fGenerateBitcoins || fProofOfStake) { while ((fGenerateBitcoins || fProofOfStake) && !ShutdownRequested()) {
if (fProofOfStake) { if (fProofOfStake) {
//control the amount of times the client will check for mintable coins //control the amount of times the client will check for mintable coins
if ((GetTime() - nMintableLastCheck > 5 * 60)) // 5 minute check time if ((GetTime() - nMintableLastCheck > 5 * 60)) // 5 minute check time
@@ -648,7 +649,7 @@ void BitcoinMiner(CWallet* pwallet, bool fProofOfStake)
continue; continue;
} }
while (vNodes.empty() || pwallet->IsLocked() || !fMintableCoins || (pwallet->GetBalance() > 0 && nReserveBalance >= pwallet->GetBalance()) || !masternodeSync.IsSynced()) { while (!ShutdownRequested() && (vNodes.empty() || pwallet->IsLocked() || !fMintableCoins || (pwallet->GetBalance() > 0 && nReserveBalance >= pwallet->GetBalance()) || !masternodeSync.IsSynced())) {
nLastCoinStakeSearchInterval = 0; nLastCoinStakeSearchInterval = 0;
// Do a separate 1 minute check here to ensure fMintableCoins is updated // Do a separate 1 minute check here to ensure fMintableCoins is updated
if (!fMintableCoins) { if (!fMintableCoins) {
@@ -662,6 +663,8 @@ void BitcoinMiner(CWallet* pwallet, bool fProofOfStake)
if (!fGenerateBitcoins && !fProofOfStake) if (!fGenerateBitcoins && !fProofOfStake)
continue; continue;
} }
if (ShutdownRequested())
break;
if (mapHashedBlocks.count(chainActive.Tip()->nHeight) && !fLastLoopOrphan) //search our map of hashed blocks, see if bestblock has been hashed yet if (mapHashedBlocks.count(chainActive.Tip()->nHeight) && !fLastLoopOrphan) //search our map of hashed blocks, see if bestblock has been hashed yet
{ {
@@ -834,6 +837,7 @@ void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads)
if (minerThreads != nullptr) { if (minerThreads != nullptr) {
minerThreads->interrupt_all(); minerThreads->interrupt_all();
minerThreads->join_all();
delete minerThreads; delete minerThreads;
minerThreads = nullptr; minerThreads = nullptr;
} }
+1 -1
View File
@@ -1,7 +1,7 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2016-2018 The PIVX developers // Copyright (c) 2016-2018 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
#ifndef AGRARIAN_BITCOIN_MINER_H #ifndef AGRARIAN_BITCOIN_MINER_H
+5
View File
@@ -1144,7 +1144,12 @@ void ThreadMapPort()
struct IGDdatas data; struct IGDdatas data;
int r; int r;
#if defined(MINIUPNPC_API_VERSION) && MINIUPNPC_API_VERSION >= 18
char wanaddr[64];
r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr), wanaddr, sizeof(wanaddr));
#else
r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)); r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
#endif
if (r == 1) { if (r == 1) {
if (fDiscover) { if (fDiscover) {
char externalIPAddress[40]; char externalIPAddress[40];
+1 -1
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2015-2018 The PIVX developers // Copyright (c) 2015-2018 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
+1 -1
View File
@@ -2,7 +2,7 @@
// Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2009-2014 The Bitcoin developers
// Copyright (c) 2014-2015 The Dash developers // Copyright (c) 2014-2015 The Dash developers
// Copyright (c) 2017-2018 The PIVX developers // Copyright (c) 2017-2018 The PIVX developers
// Copyright (c) 2026 Agrarian Developers // Copyright (c) 2022-2036 Agrarian Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 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.
#ifndef AGRARIAN_BITCOIN_POW_H #ifndef AGRARIAN_BITCOIN_POW_H

Some files were not shown because too many files have changed in this diff Show More