Compare commits
257 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c87e8d8c1 | |||
| b9976d51fa | |||
| 1ef86d8f21 | |||
| 55bf40cf5a | |||
| 338d0a13c4 | |||
| 7c70e8f797 | |||
| 9fa62f90a0 | |||
| b0b25693d2 | |||
| e84fedbac4 | |||
| 51508378a3 | |||
| 30c9410493 | |||
| 35203fb552 | |||
| bff1d8c60f | |||
| 0dcb6ed797 | |||
| 858e57ac8b | |||
| 6af196d209 | |||
| 916bb8b9d4 | |||
| b2e53454a0 | |||
| 1e1f955b0f | |||
| f591ddbdb3 | |||
| 90a4625b5a | |||
| 48e03e1aae | |||
| 3ef205dfdb | |||
| 6ea844a6d5 | |||
| 012034bdd3 | |||
| f5a4d61f83 | |||
| b193420eb5 | |||
| 49a9673a1d | |||
| ddd1aeb0ed | |||
| 1216ca1a9f | |||
| 53fda4616b | |||
| a3b9dcf6d7 | |||
| bc3bf72332 | |||
| 5a1477ea6f | |||
| 57d8b7efc6 | |||
| 396664ba14 | |||
| 97f87d2741 | |||
| 02746d4d85 | |||
| fdff3c46c2 | |||
| cc1be9689d | |||
| e66b75ce3b | |||
| 82e3799364 | |||
| 2e080bdbce | |||
| f7e87d8ee8 | |||
| 4d3dc3e8b4 | |||
| 98d87fbfbe | |||
| 77daceed22 | |||
| 44bf9f59e1 | |||
| c6466edd73 | |||
| d33b24cb4d | |||
| f5da817541 | |||
| 0be7546eca | |||
| 49606584a5 | |||
| 310889630e | |||
| 0884792a04 | |||
| fa60bb64dc | |||
| 9833666a23 | |||
| 003a4277f6 | |||
| 79383cc6ef | |||
| fb3e2f9565 | |||
| 2504a87f61 | |||
| 84c60e89d0 | |||
| e3706beada | |||
| 240b9a2c0e | |||
| 85d1c5149a | |||
| d2694f7387 | |||
| d91ac14734 | |||
| c11766e2eb | |||
| a3c4e67524 | |||
| db8676c8d0 | |||
| 7e5a74a83b | |||
| 82c8c0bb65 | |||
| 90537bf907 | |||
| c712d58579 | |||
| 95f86236d7 | |||
| bd41d2cae9 | |||
| 71fde3d8dc | |||
| 73989f6df8 | |||
| 2c3a4e3dcb | |||
| 44e7de7b51 | |||
| 2cf1900095 | |||
| 4687946339 | |||
| 5a42058c16 | |||
| a72481b702 | |||
| 97542c55be | |||
| 5ff22a3fce | |||
| 3514890cfa | |||
| 68c8d5787c | |||
| c148c18a4d | |||
| a60e61eecb | |||
| a46ee6484a | |||
| e589e128c7 | |||
| 66acb6c43f | |||
| 62e7c50711 | |||
| 01a43bd077 | |||
| aecbceeb37 | |||
| 040b028118 | |||
| aefc1a5bf9 | |||
| df25ff5645 | |||
| 59ee5d54ca | |||
| 4b8eaec50b | |||
| a69496a400 | |||
| 849fd49dfa | |||
| f744d832f3 | |||
| ed99f2df82 | |||
| 4bc3dc6e9f | |||
| 23c2bb19ad | |||
| 54d5305a03 | |||
| bf41651b5e | |||
| 33c0ee872c | |||
| 50fec755e6 | |||
| 001b1679ea | |||
| a6866fd45e | |||
| a82703653a | |||
| ee4be4658f | |||
| 2d8e5615b4 | |||
| e6d6d2d5f6 | |||
| 5e6a9b86db | |||
| 28e6ffc6a9 | |||
| 7e00a3e850 | |||
| 16091f5a27 | |||
| 7f9fa6c28d | |||
| e4ef1cca4d | |||
| 4dff1ca7c7 | |||
| 9eb72f52b0 | |||
| edae39584d | |||
| dc3c036c50 | |||
| 95d92df921 | |||
| 1f690a9aca | |||
| 2bd7811e47 | |||
| cb75fc358c | |||
| 084afa29d0 | |||
| 4ecd4dcc7d | |||
| e409febb7f | |||
| 2c164ca916 | |||
| 2e5a686cd1 | |||
| 9b3ce29227 | |||
| 1e10a3bd14 | |||
| fab40f026f | |||
| 1edb42e76f | |||
| 3cae8db8ee | |||
| ddf048f7db | |||
| 784b438464 | |||
| 2eb55e21d0 | |||
| 6dc39ddb2b | |||
| 37157782e3 | |||
| a335974218 | |||
| cc75588cb0 | |||
| d1639fe46d | |||
| 0c0c3568be | |||
| 903bad2d49 | |||
| 23a1058588 | |||
| 160beec0f4 | |||
| b7dc179af3 | |||
| b4ebf6bb88 | |||
| 4a636ebf2f | |||
| 4e7adb1150 | |||
| 85e0721566 | |||
| d4261a669b | |||
| 0f4ad90331 | |||
| ec427be05a | |||
| c1d42448f8 | |||
| 036e4d890d | |||
| 2261fbcc40 | |||
| 09dcc40281 | |||
| 2a750d25f3 | |||
| c306cbcf23 | |||
| 71d8d0de91 | |||
| 5b332b35fa | |||
| 0ff547ee43 | |||
| 3fa52a9cf6 | |||
| eb67e00cd7 | |||
| 0279205e72 | |||
| d3d2bec1ed | |||
| c09d143e5d | |||
| 25b1b2637d | |||
| f462f91acf | |||
| 93f2ee7cfe | |||
| cbd5c9a57c | |||
| f94f45d8f8 | |||
| 9d7cccbc63 | |||
| cea142ff6a | |||
| cbf03f89b7 | |||
| 5b23170158 | |||
| 04862cf7a7 | |||
| eb87369a49 | |||
| bb5350aca5 | |||
| 9318562278 | |||
| 0adc90a9f1 | |||
| b8e8717fe6 | |||
| f975a12c31 | |||
| 633b95db4f | |||
| 4098527982 | |||
| 3317191540 | |||
| c2354607cf | |||
| 1d382a7560 | |||
| 18f14e0c80 | |||
| a857bed5a3 | |||
| b616e06813 | |||
| 2dcdd26c12 | |||
| 9852dad996 | |||
| acf8b3ccb6 | |||
| ff9d35dd35 | |||
| 8bc6b03ebb | |||
| b7c43274d6 | |||
| 625d01ed85 | |||
| 69034155bc | |||
| 7855326c14 | |||
| ff3cedd772 | |||
| 7173f6fe48 | |||
| 6821fadc3d | |||
| 9b110d5523 | |||
| b7a32e71d0 | |||
| 37e006a65f | |||
| 83e0085a60 | |||
| 4b5743df75 | |||
| 7371eb703e | |||
| 746e787bf6 | |||
| fae5c5cf8a | |||
| 223cf305e9 | |||
| 906a6affea | |||
| 5e4789e28c | |||
| 1d70ec7cde | |||
| dac5bbedc6 | |||
| fa0162eff2 | |||
| 8a52d9d220 | |||
| 1d98d86549 | |||
| e2a4fac0af | |||
| cff863ed61 | |||
| 918f4258c2 | |||
| 97544982c8 | |||
| c77e9e431e | |||
| feddf93f4c | |||
| 683984aab1 | |||
| f30ecfcba9 | |||
| 31afab9651 | |||
| 537af9013d | |||
| 3dad5765ca | |||
| f59b53a467 | |||
| 99ff9fefbb | |||
| e5677eab7e | |||
| ab515d7773 | |||
| bb3181775b | |||
| 80896f3248 | |||
| cf17c878f4 | |||
| b1cfd32e8e | |||
| 68f5e69a2e | |||
| 1d659458ae | |||
| a95d23c7f1 | |||
| f7fd473a4c | |||
| 1fc1048a51 | |||
| c90370640c | |||
| 099316b662 | |||
| 49ac41045b | |||
| c655e4d576 | |||
| 20d8028ead | |||
| 6d2161f41f |
@@ -23,6 +23,12 @@ Thumbs.db
|
||||
core
|
||||
core.*
|
||||
|
||||
# Runtime node/wallet config. Examples under contrib/ stay tracked.
|
||||
/agrarian.conf
|
||||
/bitcoin.conf
|
||||
/.agrarian/
|
||||
/.bitcoin/
|
||||
|
||||
# -----------------------------
|
||||
# Autotools / configure outputs
|
||||
# -----------------------------
|
||||
@@ -100,6 +106,8 @@ ninja-build/
|
||||
# Qt build artifacts (if applicable)
|
||||
*.qrc.depends
|
||||
moc_*.cpp
|
||||
*.moc
|
||||
*.qm
|
||||
ui_*.h
|
||||
qrc_*.cpp
|
||||
|
||||
@@ -115,6 +123,7 @@ qrc_*.cpp
|
||||
/depends/i686-w64-mingw32/
|
||||
/depends/x86_64-w64-mingw32/
|
||||
/depends/*-apple-darwin*/
|
||||
/depends/*-linux-gnu/
|
||||
/depends/*-unknown-linux-gnu*/
|
||||
/depends/*-pc-linux-gnu*/
|
||||
/depends/*-w64-mingw32*/
|
||||
|
||||
+3
-1
@@ -1,8 +1,10 @@
|
||||
## 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.
|
||||
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).
|
||||
Every script in here is named and numbered according to which stage and lifecycle
|
||||
step it belongs to.
|
||||
|
||||
|
||||
@@ -1,13 +1,28 @@
|
||||
Building Agrarian
|
||||
|
||||
Use the autogen script to prepare the build environment.
|
||||
The preferred current build path uses the deterministic depends system.
|
||||
|
||||
./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
|
||||
|
||||
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,
|
||||
the intended-for-services, no-graphical-interface, reference
|
||||
implementation of Agrarian.
|
||||
the intended-for-services, no-graphical-interface implementation of Agrarian,
|
||||
and agrarian-qt, the desktop wallet.
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# Copyright (c) 2013-2016 The Bitcoin Core developers
|
||||
# Copyright (c) 2026 Agrarian Developers
|
||||
# Copyright (c) 2022-2036 Agrarian Developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
+7
-9
@@ -15,7 +15,7 @@
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (c) 2013-2016 The Bitcoin Core developers
|
||||
# Copyright (c) 2026 Agrarian Developers
|
||||
# Copyright (c) 2022-2036 Agrarian Developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -237,8 +237,9 @@ am__DIST_COMMON = $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/test/functional/test_runner.py \
|
||||
$(top_srcdir)/test/util/bitcoin-util-test.py \
|
||||
$(top_srcdir)/test/util/rpcauth-test.py COPYING INSTALL \
|
||||
build-aux/compile build-aux/config.guess build-aux/config.sub \
|
||||
build-aux/install-sh build-aux/ltmain.sh build-aux/missing
|
||||
README.md build-aux/compile build-aux/config.guess \
|
||||
build-aux/config.sub build-aux/install-sh build-aux/ltmain.sh \
|
||||
build-aux/missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
@@ -354,6 +355,7 @@ EVENT_PTHREADS_LIBS = @EVENT_PTHREADS_LIBS@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GCOV = @GCOV@
|
||||
GENHTML = @GENHTML@
|
||||
GENISOIMAGE = @GENISOIMAGE@
|
||||
@@ -364,7 +366,7 @@ GREP = @GREP@
|
||||
HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@
|
||||
HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@
|
||||
HARDENED_LDFLAGS = @HARDENED_LDFLAGS@
|
||||
HAVE_CXX11 = @HAVE_CXX11@
|
||||
HAVE_CXX17 = @HAVE_CXX17@
|
||||
HEXDUMP = @HEXDUMP@
|
||||
IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -425,9 +427,6 @@ PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PORT = @PORT@
|
||||
PROTOBUF_CFLAGS = @PROTOBUF_CFLAGS@
|
||||
PROTOBUF_LIBS = @PROTOBUF_LIBS@
|
||||
PROTOC = @PROTOC@
|
||||
PTHREAD_CC = @PTHREAD_CC@
|
||||
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
|
||||
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||
@@ -435,8 +434,6 @@ PYTHON = @PYTHON@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
QR_CFLAGS = @QR_CFLAGS@
|
||||
QR_LIBS = @QR_LIBS@
|
||||
QT5_CFLAGS = @QT5_CFLAGS@
|
||||
QT5_LIBS = @QT5_LIBS@
|
||||
QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@
|
||||
QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@
|
||||
QTCGL_CFLAGS = @QTCGL_CFLAGS@
|
||||
@@ -459,6 +456,7 @@ QTTHEME_CFLAGS = @QTTHEME_CFLAGS@
|
||||
QTTHEME_LIBS = @QTTHEME_LIBS@
|
||||
QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@
|
||||
QTXCBQPA_LIBS = @QTXCBQPA_LIBS@
|
||||
QT_CFLAGS = @QT_CFLAGS@
|
||||
QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@
|
||||
QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@
|
||||
QT_DBUS_LIBS = @QT_DBUS_LIBS@
|
||||
|
||||
@@ -15,13 +15,13 @@ Agrarian is a C++ cryptocurrency-style codebase with a deterministic `depends/`
|
||||
|
||||
## System Requirements (Ubuntu)
|
||||
|
||||
Install required build tools:
|
||||
Install the baseline build tools:
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y \
|
||||
build-essential pkg-config autoconf automake libtool \
|
||||
bsdmainutils python3 curl git
|
||||
bsdmainutils cmake ninja-build python3 curl git
|
||||
```
|
||||
|
||||
For Windows cross-compilation support:
|
||||
@@ -34,20 +34,25 @@ sudo apt install -y mingw-w64
|
||||
|
||||
## 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
|
||||
|
||||
```bash
|
||||
cd depends
|
||||
make -j"$(nproc)"
|
||||
make HOST=x86_64-pc-linux-gnu NO_QT=0 -j"$(nproc)"
|
||||
```
|
||||
|
||||
### Windows Cross-Compile (64-bit)
|
||||
|
||||
```bash
|
||||
cd depends
|
||||
make HOST=x86_64-w64-mingw32 -j"$(nproc)"
|
||||
JOBS=1 ./contrib/build-win64-wallet.sh
|
||||
```
|
||||
|
||||
### Windows Cross-Compile (32-bit)
|
||||
@@ -76,11 +81,27 @@ These directories should not be committed to version control.
|
||||
|
||||
## Building Agrarian
|
||||
|
||||
Standard autotools workflow:
|
||||
Recommended native Ubuntu daemon build:
|
||||
|
||||
```bash
|
||||
./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)"
|
||||
```
|
||||
|
||||
@@ -92,6 +113,8 @@ To see configuration options:
|
||||
|
||||
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-windows.md` for Windows cross-compilation.
|
||||
- `doc/build-wallets.md` for the repeatable desktop wallet quick start.
|
||||
@@ -106,7 +129,13 @@ If enabled:
|
||||
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
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# Copyright (c) 2013-2016 The Bitcoin Core developers
|
||||
# Copyright (c) 2026 Agrarian Developers
|
||||
# Copyright (c) 2022-2036 Agrarian Developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -26,4 +26,8 @@ if ! command -v autoreconf >/dev/null 2>&1; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -x "$srcdir/src/secp256k1/autogen.sh" ]; then
|
||||
(cd "$srcdir/src/secp256k1" && ./autogen.sh)
|
||||
fi
|
||||
|
||||
autoreconf --install --force --warnings=all
|
||||
|
||||
@@ -64,7 +64,7 @@ AC_DEFUN([AX_BOOST_SYSTEM],
|
||||
LDFLAGS="$LDFLAGS $BOOST_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,
|
||||
[AC_LANG_PUSH([C++])
|
||||
CXXFLAGS_SAVE=$CXXFLAGS
|
||||
@@ -80,40 +80,8 @@ AC_DEFUN([AX_BOOST_SYSTEM],
|
||||
AC_SUBST(BOOST_CPPFLAGS)
|
||||
|
||||
AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available])
|
||||
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
||||
|
||||
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
|
||||
BOOST_SYSTEM_LIB=""
|
||||
AC_SUBST(BOOST_SYSTEM_LIB)
|
||||
fi
|
||||
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
#
|
||||
# Check for baseline language coverage in the compiler for the specified
|
||||
# version of the C++ standard. If necessary, add switches to CXX and
|
||||
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
|
||||
# or '14' (for the C++14 standard).
|
||||
# CXXCPP to enable support. VERSION may be '11' (for the C++11 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
|
||||
# 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
|
||||
m4_if([$1], [11], [],
|
||||
[$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_if([$2], [], [],
|
||||
[$2], [ext], [],
|
||||
@@ -154,6 +154,12 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_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
|
||||
|
||||
@@ -566,3 +572,57 @@ namespace cxx14
|
||||
#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
|
||||
|
||||
]])
|
||||
|
||||
+116
-19
@@ -53,7 +53,7 @@ dnl CAUTION: Do not use this inside of a conditional.
|
||||
AC_DEFUN([BITCOIN_QT_INIT],[
|
||||
dnl enable qt support
|
||||
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)])],
|
||||
[
|
||||
bitcoin_qt_want_version=$withval
|
||||
@@ -134,13 +134,23 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
||||
if test "x$bitcoin_cv_need_acc_widget" = xyes; then
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
|
||||
fi
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QMinimalIntegrationPlugin)],[-lqminimal])
|
||||
AC_DEFINE(QT_QPA_PLATFORM_MINIMAL, 1, [Define this symbol if the minimal qt platform exists])
|
||||
_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])
|
||||
])
|
||||
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
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows])
|
||||
AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows])
|
||||
elif test "x$TARGET_OS" = xlinux; then
|
||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static])
|
||||
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])
|
||||
fi
|
||||
AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb])
|
||||
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)])
|
||||
@@ -153,7 +163,13 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
||||
])
|
||||
|
||||
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
|
||||
|
||||
if test "x$use_hardening" != xno; then
|
||||
@@ -203,11 +219,11 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
||||
])
|
||||
fi
|
||||
|
||||
BITCOIN_QT_PATH_PROGS([MOC], [moc-qt5 moc5 moc], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([UIC], [uic-qt5 uic5 uic], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt5 rcc5 rcc], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt5 lrelease5 lrelease], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt5 lupdate5 lupdate],$qt_bin_path, yes)
|
||||
BITCOIN_QT_PATH_PROGS([MOC], [moc-qt6 moc6 moc-qt5 moc5 moc], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([UIC], [uic-qt6 uic6 uic-qt5 uic5 uic], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt6 rcc6 rcc-qt5 rcc5 rcc], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt6 lrelease6 lrelease-qt5 lrelease5 lrelease], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt6 lupdate6 lupdate-qt5 lupdate5 lupdate],$qt_bin_path, yes)
|
||||
|
||||
MOC_DEFS='-DHAVE_CONFIG_H -I$(srcdir)'
|
||||
case $host in
|
||||
@@ -246,7 +262,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
||||
],[
|
||||
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_INCLUDES)
|
||||
@@ -256,7 +272,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
||||
AC_SUBST(QT_DBUS_LIBS)
|
||||
AC_SUBST(QT_TEST_INCLUDES)
|
||||
AC_SUBST(QT_TEST_LIBS)
|
||||
AC_SUBST(QT_SELECT, qt5)
|
||||
AC_SUBST(QT_SELECT)
|
||||
AC_SUBST(MOC_DEFS)
|
||||
])
|
||||
|
||||
@@ -284,6 +300,26 @@ AC_DEFUN([_BITCOIN_QT_CHECK_QT5],[
|
||||
[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 Requires: INCLUDES must be populated as necessary.
|
||||
dnl Output: bitcoin_cv_qt5=yes|no
|
||||
@@ -350,6 +386,24 @@ AC_DEFUN([_BITCOIN_QT_CHECK_STATIC_PLUGINS],[
|
||||
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 Inputs: qt_plugin_path. optional.
|
||||
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
|
||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
|
||||
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
|
||||
: dnl
|
||||
m4_ifdef([PKG_CHECK_MODULES],[
|
||||
@@ -415,6 +502,7 @@ AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -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.
|
||||
AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG],[
|
||||
m4_ifdef([PKG_CHECK_MODULES],[
|
||||
QT_LIB_PREFIX=Qt5
|
||||
qt5_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets"
|
||||
QT_LIB_PREFIX=Qt6
|
||||
qt_modules="Qt6Core Qt6Gui Qt6Network Qt6Widgets"
|
||||
if test "x$bitcoin_qt_want_version" = xqt5; then
|
||||
QT_LIB_PREFIX=Qt5
|
||||
qt_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets"
|
||||
fi
|
||||
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
|
||||
have_qt=no
|
||||
BITCOIN_QT_FAIL([Qt dependencies not found])
|
||||
_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG
|
||||
fi
|
||||
])
|
||||
BITCOIN_QT_CHECK([
|
||||
@@ -471,10 +562,17 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
|
||||
|
||||
BITCOIN_QT_CHECK([
|
||||
if test "x$bitcoin_qt_want_version" = xauto; then
|
||||
_BITCOIN_QT_CHECK_QT6
|
||||
_BITCOIN_QT_CHECK_QT5
|
||||
_BITCOIN_QT_CHECK_QT58
|
||||
fi
|
||||
QT_LIB_PREFIX=Qt5
|
||||
QT_LIB_PREFIX=Qt6
|
||||
if test "x$bitcoin_qt_want_version" = xqt5; then
|
||||
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([
|
||||
@@ -527,4 +625,3 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
|
||||
CXXFLAGS="$TEMP_CXXFLAGS"
|
||||
LIBS="$TEMP_LIBS"
|
||||
])
|
||||
|
||||
|
||||
+5
-12
@@ -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 file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
|
||||
AC_PREREQ([2.60])
|
||||
define(_CLIENT_VERSION_MAJOR, 1)
|
||||
define(_CLIENT_VERSION_MAJOR, 2)
|
||||
define(_CLIENT_VERSION_MINOR, 0)
|
||||
define(_CLIENT_VERSION_REVISION, 0)
|
||||
define(_CLIENT_VERSION_BUILD, 0)
|
||||
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_CONFIG_SRCDIR([src/main.cpp])
|
||||
AC_CONFIG_HEADERS([src/config/agrarian-config.h])
|
||||
@@ -62,8 +62,8 @@ case $host in
|
||||
lt_cv_deplibs_check_method="pass_all"
|
||||
;;
|
||||
esac
|
||||
dnl Require C++11 compiler (no GNU extensions)
|
||||
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
|
||||
dnl Require C++17 compiler (no GNU extensions). Qt 6.8 requires C++17.
|
||||
AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory], [nodefault])
|
||||
dnl Check if -latomic is required for <std::atomic>
|
||||
CHECK_ATOMIC
|
||||
|
||||
@@ -212,8 +212,6 @@ AC_ARG_WITH([zerocoin-bignum],
|
||||
[req_bignum=$withval],
|
||||
[req_bignum=auto])
|
||||
|
||||
AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
|
||||
|
||||
AC_ARG_ENABLE(man,
|
||||
[AS_HELP_STRING([--disable-man],
|
||||
[do not install man pages (default is to install)])],,
|
||||
@@ -1027,7 +1025,6 @@ if test x$use_pkgconfig = xyes; then
|
||||
[
|
||||
PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
|
||||
PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
|
||||
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
|
||||
if test x$use_qr != xno; then
|
||||
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
|
||||
fi
|
||||
@@ -1087,7 +1084,6 @@ else
|
||||
esac
|
||||
fi
|
||||
|
||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
|
||||
if test x$use_qr != xno; then
|
||||
BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
|
||||
BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
|
||||
@@ -1153,8 +1149,6 @@ AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$need_bundled_univalue = xyes])
|
||||
AC_SUBST(UNIVALUE_CFLAGS)
|
||||
AC_SUBST(UNIVALUE_LIBS)
|
||||
|
||||
BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
|
||||
|
||||
AC_MSG_CHECKING([whether to build agrariand])
|
||||
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
||||
AC_MSG_RESULT($build_bitcoind)
|
||||
@@ -1401,7 +1395,6 @@ AC_SUBST(SSL_LIBS)
|
||||
AC_SUBST(EVENT_LIBS)
|
||||
AC_SUBST(EVENT_PTHREADS_LIBS)
|
||||
AC_SUBST(ZMQ_LIBS)
|
||||
AC_SUBST(PROTOBUF_LIBS)
|
||||
AC_SUBST(QR_LIBS)
|
||||
AC_SUBST(USE_NUM_GMP)
|
||||
AC_SUBST(USE_NUM_OPENSSL)
|
||||
|
||||
+14
-5
@@ -2,7 +2,7 @@ Wallet Tools
|
||||
---------------------
|
||||
|
||||
### [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) ###
|
||||
|
||||
@@ -21,7 +21,7 @@ Construct a linear, no-fork, best version of the blockchain.
|
||||
|
||||
### [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) ###
|
||||
Utility to generate the pnSeed[] array that is compiled into the client.
|
||||
@@ -30,8 +30,8 @@ Build Tools and Keys
|
||||
---------------------
|
||||
|
||||
### [Debian](/contrib/debian) ###
|
||||
Contains files used to package bitcoind/bitcoin-qt
|
||||
for Debian-based Linux systems. If you compile bitcoind/bitcoin-qt yourself, there are some useful files here.
|
||||
Contains files used to package agrariand/agrarian-qt
|
||||
for Debian-based Linux systems. If you compile agrariand/agrarian-qt yourself, there are some useful files here.
|
||||
|
||||
### [Gitian-descriptors](/contrib/gitian-descriptors) ###
|
||||
Gavin's notes on getting gitian builds up and running using KVM.
|
||||
@@ -46,7 +46,16 @@ Test and Verify Tools
|
||||
---------------------
|
||||
|
||||
### [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) ###
|
||||
These patches are applied when the automated pull-tester
|
||||
|
||||
Executable
+836
@@ -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 "$@"
|
||||
@@ -188,7 +188,6 @@ HEADERS += src/activemasternode.h \
|
||||
src/qt/optionsdialog.h \
|
||||
src/qt/optionsmodel.h \
|
||||
src/qt/overviewpage.h \
|
||||
src/qt/paymentrequest.pb.h \
|
||||
src/qt/paymentrequestplus.h \
|
||||
src/qt/paymentserver.h \
|
||||
src/qt/peertablemodel.h \
|
||||
@@ -481,7 +480,6 @@ SOURCES += src/activemasternode.cpp \
|
||||
src/qt/optionsdialog.cpp \
|
||||
src/qt/optionsmodel.cpp \
|
||||
src/qt/overviewpage.cpp \
|
||||
src/qt/paymentrequest.pb.cc \
|
||||
src/qt/paymentrequestplus.cpp \
|
||||
src/qt/paymentserver.cpp \
|
||||
src/qt/peertablemodel.cpp \
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
### 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?
|
||||
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 walletpassphrasechange
|
||||
bitrpc.py walletpassphrase
|
||||
bitrpc.py walletpassphrase
|
||||
|
||||
+111
-29
@@ -3,13 +3,10 @@ set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
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"
|
||||
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() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
@@ -25,42 +22,127 @@ require_path() {
|
||||
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"
|
||||
|
||||
require_cmd make
|
||||
require_cmd pkg-config
|
||||
require_cmd gcc
|
||||
require_cmd g++
|
||||
require_cmd sed
|
||||
require_cmd cp
|
||||
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"
|
||||
require_cmd cmake
|
||||
require_cmd ninja
|
||||
|
||||
echo "Building native depends for $HOST..."
|
||||
make -C depends -j"$JOBS"
|
||||
require_path "$BASE_CONFIG"
|
||||
|
||||
cp "$BASE_CONFIG" "$CONFIG_SITE_FILE"
|
||||
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
|
||||
if [[ "$HOST" == "$BUILD_HOST" ]]; then
|
||||
preflight_linux_qt_deps
|
||||
else
|
||||
echo "Linux Qt wallet build expects a native HOST. Got HOST=$HOST BUILD_HOST=$BUILD_HOST" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Configuring Ubuntu Qt wallet build..."
|
||||
CONFIG_SITE="$CONFIG_SITE_FILE" ./configure \
|
||||
reset_qt_configure_state
|
||||
|
||||
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-tests \
|
||||
--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..."
|
||||
make -j"$JOBS"
|
||||
|
||||
+46
-8
@@ -4,23 +4,57 @@ set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
JOBS="${JOBS:-1}"
|
||||
MODE="${MODE:-daemon}"
|
||||
DAEMON_TARGETS="${DAEMON_TARGETS:-agrariand agrarian-cli agrarian-tx}"
|
||||
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"
|
||||
|
||||
if [[ ! -f configure ]]; then
|
||||
./autogen.sh
|
||||
fi
|
||||
|
||||
case "$MODE" in
|
||||
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 \
|
||||
--disable-tests \
|
||||
--disable-bench \
|
||||
--disable-zmq \
|
||||
--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=20 --param ggc-min-heapsize=131072}"
|
||||
|
||||
echo "Cleaning stale target objects before compiling..."
|
||||
make clean
|
||||
;;
|
||||
wallet)
|
||||
exec "$ROOT/contrib/build-linux-wallet.sh"
|
||||
@@ -32,5 +66,9 @@ case "$MODE" in
|
||||
;;
|
||||
esac
|
||||
|
||||
make -j"$JOBS"
|
||||
if [[ "$MODE" == "daemon" ]]; then
|
||||
make -C src -j"$JOBS" $DAEMON_TARGETS
|
||||
else
|
||||
make -j"$JOBS"
|
||||
fi
|
||||
echo "Linux $MODE build complete."
|
||||
|
||||
@@ -4,11 +4,9 @@ set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
JOBS="${JOBS:-1}"
|
||||
HOST="${HOST:-x86_64-w64-mingw32}"
|
||||
BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
|
||||
PREFIX="$ROOT/depends/$HOST"
|
||||
NATIVE_BIN="$PREFIX/native/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}"
|
||||
NATIVE_BIN="$ROOT/depends/build/$BUILD_HOST/bin"
|
||||
|
||||
require_cmd() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
@@ -27,7 +25,7 @@ require_path() {
|
||||
copy_first_match() {
|
||||
local name="$1"
|
||||
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
|
||||
echo "Could not find Qt host tool after depends build: $name" >&2
|
||||
exit 1
|
||||
@@ -50,38 +48,17 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
build_native_protoc() {
|
||||
require_path "$PROTOBUF_SOURCE"
|
||||
rm -rf "$PROTOBUF_BUILD"
|
||||
mkdir -p "$PROTOBUF_BUILD"
|
||||
tar -xjf "$PROTOBUF_SOURCE" -C "$PROTOBUF_BUILD" --strip-components=1
|
||||
chmod -R u+rwX "$PROTOBUF_BUILD"
|
||||
(
|
||||
cd "$PROTOBUF_BUILD"
|
||||
bash configure --disable-shared --without-zlib
|
||||
make -C src protoc -j"$JOBS" SHELL=/bin/bash
|
||||
)
|
||||
cp "$PROTOBUF_BUILD/src/protoc" "$NATIVE_BIN/protoc"
|
||||
}
|
||||
|
||||
ensure_native_tools() {
|
||||
mkdir -p "$NATIVE_BIN"
|
||||
|
||||
for tool in moc uic rcc; do
|
||||
for tool in moc uic rcc lrelease; do
|
||||
if [[ ! -x "$NATIVE_BIN/$tool" ]]; then
|
||||
copy_first_match "$tool"
|
||||
fi
|
||||
done
|
||||
|
||||
for tool in lrelease lupdate; do
|
||||
if [[ ! -x "$NATIVE_BIN/$tool" ]]; then
|
||||
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
|
||||
if [[ ! -x "$NATIVE_BIN/lupdate" ]] && command -v lupdate >/dev/null 2>&1; then
|
||||
cp "$(command -v lupdate)" "$NATIVE_BIN/lupdate"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -97,25 +74,47 @@ require_cmd cp
|
||||
ensure_posix_mingw
|
||||
|
||||
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"
|
||||
ensure_native_tools
|
||||
|
||||
if [[ ! -f configure ]]; then
|
||||
if [[ ! -f configure || ! -f src/secp256k1/configure || ! -f src/secp256k1/Makefile.in ]]; then
|
||||
./autogen.sh
|
||||
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 \
|
||||
--prefix=/ \
|
||||
--disable-maintainer-mode \
|
||||
--disable-tests \
|
||||
--disable-bench \
|
||||
--with-gui=qt5 \
|
||||
--with-gui=qt6 \
|
||||
--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"
|
||||
|
||||
echo "Windows wallet build complete:"
|
||||
|
||||
@@ -23,7 +23,6 @@ Build-Depends: debhelper,
|
||||
xvfb,
|
||||
qtbase5-dev, qttools5-dev-tools, qttools5-dev,
|
||||
libqrencode-dev,
|
||||
libprotobuf-dev, protobuf-compiler,
|
||||
python,
|
||||
libzmq3-dev,
|
||||
dh-systemd
|
||||
|
||||
@@ -25,7 +25,7 @@ git diff -U0 HEAD~1.. | ./contrib/devtools/clang-format-diff.py -p1 -i -v
|
||||
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:
|
||||
|
||||
```
|
||||
@@ -44,31 +44,31 @@ Specifying `verbose` will list the full filenames of files of each category.
|
||||
|
||||
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:
|
||||
```
|
||||
// Copyright (c) <firstYear>-<lastYear> The PIVX developers
|
||||
// Copyright (c) <firstYear>-<lastYear> The Agrarian developers
|
||||
```
|
||||
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.
|
||||
|
||||
This subcommand also handles copyright headers that have only a single year. In
|
||||
those cases:
|
||||
```
|
||||
// Copyright (c) <year> The PIVX developers
|
||||
// Copyright (c) <year> The Agrarian developers
|
||||
```
|
||||
will be updated to:
|
||||
```
|
||||
// Copyright (c) <year>-<lastModifiedYear> The PIVX developers
|
||||
// Copyright (c) <year>-<lastModifiedYear> The Agrarian developers
|
||||
```
|
||||
where the update is appropriate.
|
||||
|
||||
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 is a Python file and it has `#!` starting the first line, the header is
|
||||
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 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.
|
||||
|
||||
gen-manpages.sh
|
||||
|
||||
Executable
+100
@@ -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,5 +1,5 @@
|
||||
### 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.
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
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
|
||||
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
|
||||
@@ -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
|
||||
|
||||
The RPM spec file will by default build the GUI client linked against the Qt5
|
||||
libraries. If you wish instead to link against the Qt4 libraries you need to
|
||||
pass the switch `-D '_use_qt4 1'` at build time to the `rpmbuild` or `mock`
|
||||
command used to build the packages.
|
||||
The historical RPM spec targeted older Qt libraries. For Agrarian 2.0, new RPM
|
||||
work should target Qt 6.8 LTS and the dependency baseline in
|
||||
`doc/modernization.md`.
|
||||
|
||||
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.
|
||||
|
||||
@@ -71,7 +71,6 @@ BuildRequires: qt5-qtbase-devel
|
||||
# for /usr/bin/lrelease-qt5
|
||||
BuildRequires: qt5-linguist
|
||||
%endif
|
||||
BuildRequires: protobuf-devel
|
||||
BuildRequires: qrencode-devel
|
||||
BuildRequires: %{_bindir}/desktop-file-validate
|
||||
# for icon generation from SVG
|
||||
|
||||
@@ -54,17 +54,18 @@ EOF
|
||||
-rpcbind=127.0.0.1 -rpcport="$RPCPORT" -port="$PORT" -keypool=1 -daemon
|
||||
|
||||
for _ in $(seq 1 "$WAIT_SECONDS"); do
|
||||
if rpc getinfo >/dev/null 2>&1; then
|
||||
if rpc getwalletinfo >/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
|
||||
if ! rpc getwalletinfo >/dev/null; then
|
||||
echo "Timed out waiting for wallet RPC on 127.0.0.1:$RPCPORT" >&2
|
||||
tail -n 80 "$DATADIR/regtest/debug.log" >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
rpc getinfo >/dev/null
|
||||
rpc getwalletinfo >/dev/null
|
||||
rpc getmininginfo >/dev/null
|
||||
rpc getstakingstatus >/dev/null
|
||||
|
||||
Executable
+48
@@ -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"
|
||||
Executable
+102
@@ -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,8 +1,8 @@
|
||||
### TestGen ###
|
||||
|
||||
Utilities to generate test vectors for the data-driven Bitcoin tests.
|
||||
Utilities to generate test vectors for the data-driven Agrarian tests.
|
||||
|
||||
Usage:
|
||||
|
||||
gen_base58_test_vectors.py valid 50 > ../../src/test/data/base58_keys_valid.json
|
||||
gen_base58_test_vectors.py invalid 50 > ../../src/test/data/base58_keys_invalid.json
|
||||
gen_base58_test_vectors.py invalid 50 > ../../src/test/data/base58_keys_invalid.json
|
||||
|
||||
+42
-15
@@ -67,12 +67,12 @@ include funcs.mk
|
||||
all: install
|
||||
|
||||
# Optional convenience targets (only build what you need)
|
||||
.PHONY: base wallet zmq upnp qt
|
||||
.PHONY: base wallet zmq upnp qt-deps
|
||||
base: $(packages)
|
||||
wallet: $(wallet_packages)
|
||||
zmq: $(zmq_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
|
||||
.PHONY: download
|
||||
@@ -83,23 +83,42 @@ download: $(foreach p,$(all_packages),$($(p)_fetched))
|
||||
# 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
|
||||
|
||||
clean-sources:
|
||||
@echo "== Removing downloaded source archives and fetch stamps"
|
||||
@rm -rf "$(SOURCES_PATH)"
|
||||
|
||||
install-prefix: $(packages)
|
||||
@echo "== Installing depends into: $(host_prefix)"
|
||||
@rm -rf "$(host_prefix)"
|
||||
@mkdir -p "$(host_prefix)"
|
||||
@set -euo pipefail; \
|
||||
for p in $(packages); do \
|
||||
f="$(BASE_CACHE)/$(HOST)/$$p/"*.tar.gz; \
|
||||
if ! ls $$f >/dev/null 2>&1; then \
|
||||
echo "ERROR: missing built artifact for $$p (expected: $$f)"; \
|
||||
for f in $(foreach p,$(packages),$($(p)_cached)); do \
|
||||
p="$$(basename "$$(dirname "$$f")")"; \
|
||||
if [[ ! -f "$$f" ]]; then \
|
||||
echo "ERROR: expected current built artifact for $$p: $$f"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo " - $$p: $$f"; \
|
||||
tar -xzf $$f -C "$(host_prefix)"; \
|
||||
tar --no-same-owner -xzf "$$f" -C "$(host_prefix)"; \
|
||||
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"
|
||||
@mkdir -p "$(host_prefix)/share"
|
||||
@{ \
|
||||
@@ -109,18 +128,19 @@ install-prefix: $(packages)
|
||||
echo "host_alias='$(HOST)'"; \
|
||||
echo "ac_tool_prefix='$(HOST)-'"; \
|
||||
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_translationdir='$(host_prefix)/translations'"; \
|
||||
echo "with_qt_bindir='$(host_prefix)/native/bin'"; \
|
||||
echo "with_protoc_bindir='$(host_prefix)/native/bin'"; \
|
||||
echo "with_qt_bindir='$(host_prefix)/bin'"; \
|
||||
echo "CPPFLAGS='-I$(host_prefix)/include'"; \
|
||||
echo "LDFLAGS='-L$(host_prefix)/lib'"; \
|
||||
echo "BOOST_CPPFLAGS='-I$(host_prefix)/include'"; \
|
||||
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_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_PATH"; \
|
||||
echo "export PKG_CONFIG"; \
|
||||
@@ -158,9 +178,16 @@ install-prefix: $(packages)
|
||||
fi; \
|
||||
done
|
||||
@if [[ "$(NO_QT)" = "0" ]] && [[ "$(host_os)" = "linux" ]]; then \
|
||||
for pc in Qt5Core Qt5Gui Qt5Network Qt5Widgets; do \
|
||||
if [[ ! -f "$(host_prefix)/lib/pkgconfig/$${pc}.pc" ]] && [[ ! -f "$(host_prefix)/share/pkgconfig/$${pc}.pc" ]]; then \
|
||||
echo "ERROR: missing Qt pkg-config file for $${pc} under $(host_prefix)/(lib|share)/pkgconfig"; \
|
||||
for lib in Qt6Core Qt6Gui Qt6Network Qt6Widgets; do \
|
||||
if [[ ! -f "$(host_prefix)/lib/lib$${lib}.a" ]]; then \
|
||||
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)"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
|
||||
+32
-9
@@ -2,7 +2,7 @@
|
||||
|
||||
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:
|
||||
|
||||
@@ -10,13 +10,13 @@ To build for another arch/OS:
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
@@ -30,6 +30,16 @@ Common `host-platform-triplets` for cross compilation are:
|
||||
|
||||
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
|
||||
|
||||
#### For macOS cross compilation
|
||||
@@ -44,7 +54,21 @@ No other options are needed, the paths are automatically configured.
|
||||
|
||||
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:
|
||||
|
||||
@@ -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)
|
||||
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_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_UPNP: Don't download/build/cache packages needed for enabling upnp
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
@@ -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
|
||||
- [packages.md](packages.md): Steps for adding packages
|
||||
|
||||
|
||||
@@ -16,11 +16,6 @@ fi
|
||||
if test -z $with_qt_bindir && test -z "@no_qt@"; then
|
||||
with_qt_bindir=$depends_prefix/native/bin
|
||||
fi
|
||||
if test -z $with_protoc_bindir && test -z "@no_qt@"; then
|
||||
with_protoc_bindir=$depends_prefix/native/bin
|
||||
fi
|
||||
|
||||
|
||||
if test -z $enable_wallet && test -n "@no_wallet@"; then
|
||||
enable_wallet=no
|
||||
fi
|
||||
|
||||
@@ -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:
|
||||
|
||||
### It is designed to be builder and host agnostic
|
||||
|
||||
+14
-7
@@ -29,9 +29,12 @@ define fetch_file_inner
|
||||
endef
|
||||
|
||||
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),$(FALLBACK_DOWNLOAD_PATH),$(3),$(4),$(5))))
|
||||
$(call fetch_file_inner,$(1),$(FALLBACK_DOWNLOAD_PATH),$(3),$(4),$(5)))))
|
||||
endef
|
||||
|
||||
define int_get_build_recipe_hash
|
||||
@@ -79,7 +82,12 @@ $(1)_download_path_fixed=$(subst :,\:,$$($(1)_download_path))
|
||||
#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
|
||||
$(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)_build_cmds ?=
|
||||
$(1)_config_cmds ?=
|
||||
@@ -163,7 +171,6 @@ define int_add_cmds
|
||||
$($(1)_fetched):
|
||||
$(AT)mkdir -p $$(@D) $(SOURCES_PATH)
|
||||
$(AT)rm -f $$@
|
||||
$(AT)touch $$@
|
||||
$(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1))
|
||||
$(AT)cd $($(1)_source_dir); $(foreach source,$($(1)_all_sources),$(build_SHA256SUM) $(source) >> $$(@);)
|
||||
$(AT)touch $$@
|
||||
@@ -191,7 +198,7 @@ $($(1)_built): | $($(1)_configured)
|
||||
$(AT)touch $$@
|
||||
$($(1)_staged): | $($(1)_built)
|
||||
$(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)rm -rf $($(1)_extract_dir)
|
||||
$(AT)touch $$@
|
||||
@@ -201,7 +208,7 @@ $($(1)_postprocessed): | $($(1)_staged)
|
||||
$(AT)touch $$@
|
||||
$($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed)
|
||||
$(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)rm -rf $$(@D) && mkdir -p $$(@D)
|
||||
$(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@)
|
||||
@@ -252,4 +259,4 @@ $(foreach package,$(all_packages),$(eval $(call int_config_attach_build_config,$
|
||||
$(foreach package,$(all_packages),$(eval $(call int_add_cmds,$(package))))
|
||||
|
||||
#special exception: if a toolchain package exists, all non-native packages depend on it
|
||||
$(foreach package,$(packages),$(eval $($(package)_unpacked): |$($($(host_arch)_$(host_os)_native_toolchain)_cached) ))
|
||||
$(foreach package,$(packages),$(eval $($(package)_unpacked): |$($($(host_arch)_$(host_os)_native_toolchain)_cached) ))
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
# Copyright (c) 2026 Agrarian Developers
|
||||
# Copyright (c) 2022-2036 Agrarian Developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2026 Agrarian Developers
|
||||
# Copyright (c) 2022-2036 Agrarian Developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package=boost
|
||||
$(package)_version=1_64_0
|
||||
$(package)_version=1_91_0
|
||||
# Bintray was shut down; use the official Boost archives mirror.
|
||||
# NOTE: download_path should NOT end with a trailing slash because the fetch
|
||||
# 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)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332
|
||||
$(package)_sha256_hash=de5e6b0e4913395c6bdfa90537febd9028ea4c0735d2cdb0cd9b45d5f51264f5
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts_release=variant=release
|
||||
@@ -26,7 +26,7 @@ $(package)_toolset_$(host_os)=gcc
|
||||
$(package)_archiver_$(host_os)=$($(package)_ar)
|
||||
$(package)_toolset_darwin=darwin
|
||||
$(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_linux=-fPIC
|
||||
endef
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=expat
|
||||
$(package)_version=2.2.6
|
||||
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_2_6/
|
||||
$(package)_version=2.8.0
|
||||
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_8_0/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2
|
||||
$(package)_sha256_hash=586494499ac3ad46d87f3beda7b1f770c1c8026a9b60e151593f8b29089a52ca
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-static --without-docbook
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=freetype
|
||||
$(package)_version=2.7.1
|
||||
$(package)_version=2.14.3
|
||||
$(package)_download_path=https://download.savannah.gnu.org/releases/$(package)
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=3a3bb2c4e15ffb433f2032f50a5b5a92558206822e22bfe8cbe339af4aa82f88
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.xz
|
||||
$(package)_sha256_hash=36bc4f1cc413335368ee656c42afca65c5a3987e8768cc28cf11ba775e785a5f
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--without-zlib --without-png --without-harfbuzz --without-bzip2 --disable-static
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=gmp
|
||||
$(package)_version=6.1.2
|
||||
$(package)_download_path=https://gmplib.org/download/gmp
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d73d8fb2
|
||||
$(package)_version=6.3.0
|
||||
$(package)_download_path=https://ftp.gnu.org/gnu/gmp
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.xz
|
||||
$(package)_sha256_hash=a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-shared
|
||||
@@ -21,4 +21,3 @@ endef
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||
endef
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=libevent
|
||||
$(package)_version=2.1.8-stable
|
||||
$(package)_version=2.1.12-stable
|
||||
$(package)_download_path=https://github.com/libevent/libevent/archive/
|
||||
$(package)_file_name=release-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=316ddb401745ac5d222d7c529ef1eada12f58f6376a66c1118eee803cb70f83d
|
||||
$(package)_sha256_hash=7180a979aaa7000e1264da484f712d403fcf7679b1e9212c4e3d09f5c93efc24
|
||||
$(package)_patches=glibc-arc4random-addrandom.patch
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=miniupnpc
|
||||
$(package)_version=2.0.20180203
|
||||
$(package)_version=2.3.3
|
||||
$(package)_download_path=https://miniupnp.tuxfamily.org/files/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=90dda8c7563ca6cd4a83e23b3c66dbbea89603a1675bfdb852897c2c9cc220b7
|
||||
$(package)_sha256_hash=d52a0afa614ad6c088cc9ddff1ae7d29c8c595ac5fdd321170a05f41e634bd1a
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_build_opts=CC="$($(package)_cc)"
|
||||
@@ -12,17 +12,19 @@ $(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
mkdir dll && \
|
||||
sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \
|
||||
sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw
|
||||
mkdir -p dll
|
||||
endef
|
||||
|
||||
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
|
||||
|
||||
define $(package)_stage_cmds
|
||||
mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\
|
||||
install *.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\
|
||||
install libminiupnpc.a $($(package)_staging_prefix_dir)/lib
|
||||
install include/*.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\
|
||||
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
|
||||
|
||||
@@ -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
|
||||
+12
-41
@@ -1,45 +1,19 @@
|
||||
package=openssl
|
||||
$(package)_version=1.0.1k
|
||||
$(package)_download_path=https://openssl-library.org/source/old/1.0.1
|
||||
$(package)_version=3.5.6
|
||||
$(package)_download_path=https://github.com/openssl/openssl/releases/download/openssl-$($(package)_version)
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=8f9faeaebad088e772f4ef5e38252d472be4d878c6b3a2718c10a4fcebe7a41c
|
||||
$(package)_sha256_hash=deae7c80cba99c4b4f940ecadb3c3338b13cb77418409238e57d7f31f2a3b736
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl
|
||||
$(package)_config_opts+=no-camellia
|
||||
$(package)_config_opts+=no-capieng
|
||||
$(package)_config_opts+=no-cast
|
||||
$(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 --libdir=lib
|
||||
$(package)_config_opts+=no-comp
|
||||
$(package)_config_opts+=no-docs
|
||||
$(package)_config_opts+=no-dso
|
||||
$(package)_config_opts+=no-dtls1
|
||||
$(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-tests
|
||||
$(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-static_engine
|
||||
$(package)_config_opts+=no-store
|
||||
$(package)_config_opts+=no-unit-test
|
||||
$(package)_config_opts+=no-weak-ssl-ciphers
|
||||
$(package)_config_opts+=no-whirlpool
|
||||
$(package)_config_opts+=no-zlib
|
||||
$(package)_config_opts+=no-zlib-dynamic
|
||||
$(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_mingw32=mingw64
|
||||
$(package)_config_opts_i686_mingw32=mingw
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
sed -i.old "/define DATE/d" util/mkbuildinf.pl && \
|
||||
sed -i.old "s|engines apps test|engines|" Makefile.org
|
||||
$(package)_config_env_x86_64_mingw32=WINDRES=x86_64-w64-mingw32-windres
|
||||
$(package)_config_env_i686_mingw32=WINDRES=i686-w64-mingw32-windres
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
@@ -74,13 +45,13 @@ define $(package)_config_cmds
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -j1 build_libs libcrypto.pc libssl.pc openssl.pc
|
||||
$(MAKE) build_libs libcrypto.pc libssl.pc openssl.pc
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) INSTALL_PREFIX=$($(package)_staging_dir) -j1 install_sw
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) -j1 install_sw
|
||||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
rm -rf share bin etc
|
||||
endef
|
||||
endef
|
||||
|
||||
@@ -22,10 +22,10 @@ USE_ZMQ ?= 0
|
||||
USE_UPNP ?= 1
|
||||
|
||||
# ---- Group definitions (as you had them) ----
|
||||
qt_native_packages := native_protobuf
|
||||
qt_packages := qrencode protobuf zlib
|
||||
qt_native_packages :=
|
||||
qt_packages := qrencode zlib
|
||||
|
||||
qt_linux_packages := 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_mingw32_packages := qt
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package=protobuf
|
||||
$(package)_version=$(native_$(package)_version)
|
||||
$(package)_download_path=$(native_$(package)_download_path)
|
||||
$(package)_file_name=$(native_$(package)_file_name)
|
||||
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
||||
$(package)_dependencies=native_$(package)
|
||||
$(package)_cxxflags=-std=c++11
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
||||
$(package)_config_opts_linux=--with-pic
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub . &&\
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub gtest/build-aux
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_autoconf)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -C src libprotobuf.la
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) -C src install-libLTLIBRARIES install-nobase_includeHEADERS &&\
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA
|
||||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
rm lib/libprotoc.a
|
||||
endef
|
||||
@@ -1,16 +1,16 @@
|
||||
package=qrencode
|
||||
$(package)_version=3.4.4
|
||||
$(package)_download_path=https://fukuchi.org/works/qrencode/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=efe5188b1ddbcbf98763b819b146be6a90481aac30cfc8d858ab78a19cde1fa5
|
||||
$(package)_version=4.1.1
|
||||
$(package)_download_path=https://github.com/fukuchi/libqrencode/archive/v$($(package)_version)/
|
||||
$(package)_file_name=lib$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=5385bc1b8c2f20f3b91d258bf8ccc8cf62023935df2d2676b5b67049f31a049c
|
||||
|
||||
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
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub use
|
||||
./autogen.sh && cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub .
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
||||
+76
-147
@@ -1,20 +1,18 @@
|
||||
PACKAGE=qt
|
||||
$(package)_version=5.9.7
|
||||
$(package)_download_path=https://download.qt.io/new_archive/qt/5.9/$($(package)_version)/submodules
|
||||
$(package)_suffix=opensource-src-$($(package)_version).tar.xz
|
||||
$(package)_version=6.8.3
|
||||
$(package)_download_path=https://download.qt.io/official_releases/qt/6.8/$($(package)_version)/submodules
|
||||
$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
|
||||
$(package)_file_name=qtbase-$($(package)_suffix)
|
||||
$(package)_sha256_hash=36dd9574f006eaa1e5af780e4b33d11fe39d09fd7c12f3b9d83294174bd28f00
|
||||
$(package)_sha256_hash=56001b905601bb9023d399f3ba780d7fa940f3e4861e496a7c490331f49e0b80
|
||||
$(package)_dependencies=openssl zlib
|
||||
$(package)_linux_dependencies=freetype fontconfig libxcb libX11 xproto libXext
|
||||
$(package)_build_subdir=qtbase
|
||||
$(package)_qt_libs=corelib network widgets gui plugins testlib
|
||||
$(package)_patches=mac-qmake.conf
|
||||
$(package)_linux_dependencies=
|
||||
$(package)_build_subdir=qtbase-build
|
||||
|
||||
$(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_sha256_hash=d62e0f70d99645d6704dbb8976fb2222443061743689943d40970c52c49367a1
|
||||
$(package)_qttools_sha256_hash=02a4e219248b94f1333df843d25763f35251c1074cdc4fb5bda67d340f8c8b3a
|
||||
|
||||
$(package)_extra_sources = $($(package)_qttranslations_file_name)
|
||||
$(package)_extra_sources += $($(package)_qttools_file_name)
|
||||
@@ -22,100 +20,51 @@ $(package)_extra_sources += $($(package)_qttools_file_name)
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts_release = -release
|
||||
$(package)_config_opts_debug = -debug
|
||||
$(package)_config_opts += -bindir $(build_prefix)/bin
|
||||
$(package)_config_opts += -c++std c++11
|
||||
$(package)_config_opts += -bindir bin
|
||||
$(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-egl
|
||||
$(package)_config_opts += -no-eglfs
|
||||
$(package)_config_opts += -no-freetype
|
||||
$(package)_config_opts += -no-gif
|
||||
$(package)_config_opts += -no-dbus
|
||||
$(package)_config_opts += -no-glib
|
||||
$(package)_config_opts += -no-icu
|
||||
$(package)_config_opts += -no-iconv
|
||||
$(package)_config_opts += -no-kms
|
||||
$(package)_config_opts += -no-linuxfb
|
||||
$(package)_config_opts += -no-libudev
|
||||
$(package)_config_opts += -no-mtdev
|
||||
$(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 += -no-opengl
|
||||
$(package)_config_opts += -no-pch
|
||||
$(package)_config_opts += -no-feature-brotli
|
||||
$(package)_config_opts += -no-feature-sql
|
||||
$(package)_config_opts += -no-feature-vulkan
|
||||
$(package)_config_opts += -nomake examples
|
||||
$(package)_config_opts += -nomake tests
|
||||
$(package)_config_opts += -opensource
|
||||
$(package)_config_opts += -openssl-linked
|
||||
$(package)_config_opts += -optimized-qmake
|
||||
$(package)_config_opts += -no-pch
|
||||
$(package)_config_opts += -pkg-config
|
||||
$(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 += -system-zlib
|
||||
$(package)_config_opts += -qt-libjpeg
|
||||
$(package)_config_opts += -qt-libpng
|
||||
$(package)_config_opts += -qt-pcre
|
||||
$(package)_config_opts += -static
|
||||
$(package)_config_opts += -silent
|
||||
$(package)_config_opts += -v
|
||||
$(package)_config_opts += -no-feature-dial
|
||||
$(package)_config_opts += -no-feature-ftp
|
||||
$(package)_config_opts += -no-feature-lcdnumber
|
||||
$(package)_config_opts += -no-feature-pdf
|
||||
$(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 += -system-zlib
|
||||
$(package)_config_opts_linux = -fontconfig
|
||||
$(package)_config_opts_linux += -qpa xcb
|
||||
$(package)_config_opts_linux += -xcb
|
||||
$(package)_config_opts_linux += -xkbcommon
|
||||
$(package)_config_opts_linux += -feature-xkbcommon-x11
|
||||
$(package)_config_opts_linux += -system-freetype
|
||||
$(package)_config_opts_linux += -no-feature-sessionmanager
|
||||
$(package)_config_opts_linux += -fontconfig
|
||||
$(package)_config_opts_linux += -no-opengl
|
||||
$(package)_config_opts_arm_linux += -platform linux-g++ -xplatform agrarian-linux-g++
|
||||
$(package)_config_opts_i686_linux = -xplatform linux-g++-32
|
||||
$(package)_config_opts_x86_64_linux = -xplatform linux-g++-64
|
||||
$(package)_config_opts_aarch64_linux = -xplatform linux-aarch64-gnu-g++
|
||||
$(package)_config_opts_riscv64_linux = -platform linux-g++ -xplatform agrarian-linux-g++
|
||||
$(package)_config_opts_s390x_linux += -platform linux-g++ -xplatform linux-g++-64
|
||||
$(package)_config_opts_powerpc_linux += -platform linux-g++ -xplatform linux-g++-32
|
||||
$(package)_config_opts_powerpc64le_linux += -platform linux-g++ -xplatform linux-g++-64
|
||||
$(package)_config_opts_sparc64_linux += -platform linux-g++ -xplatform linux-g++-64
|
||||
$(package)_config_opts_alpha_linux += -platform linux-g++ -xplatform linux-g++-64
|
||||
$(package)_config_opts_m68k_linux += -platform linux-g++ -xplatform linux-g++-32
|
||||
$(package)_config_opts_mingw32 = -no-opengl -xplatform win32-g++ -device-option CROSS_COMPILE="$(host)-"
|
||||
$(package)_build_env = QT_RCC_TEST=1
|
||||
$(package)_build_env += QT_RCC_SOURCE_DATE_OVERRIDE=1
|
||||
$(package)_config_opts_mingw32 = -qpa windows
|
||||
$(package)_config_opts_darwin = -qpa cocoa
|
||||
$(package)_cmake_opts_mingw32 = -DCMAKE_SYSTEM_NAME=Windows
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_C_COMPILER=$($(package)_cc)
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_CXX_COMPILER=$($(package)_cxx)
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_RC_COMPILER=$(host_toolchain)windres
|
||||
$(package)_cmake_opts_mingw32 += -DOPENSSL_ROOT_DIR=$(host_prefix)
|
||||
$(package)_cmake_opts_mingw32 += -DOPENSSL_USE_STATIC_LIBS=TRUE
|
||||
$(package)_cmake_opts_mingw32 += -DZLIB_ROOT=$(host_prefix)
|
||||
$(package)_cmake_opts_mingw32 += -DQT_HOST_PATH=$(BASEDIR)/$(BUILD)
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH=$(host_prefix)
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
|
||||
$(package)_cmake_opts_mingw32 += -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
|
||||
endef
|
||||
|
||||
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)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
||||
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
||||
mkdir qtbase && \
|
||||
mkdir qtbase qtbase-build qttools qttools-build qttranslations qttranslations-build && \
|
||||
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)_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
|
||||
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
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
export PKG_CONFIG_SYSROOT_DIR=/ && \
|
||||
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \
|
||||
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \
|
||||
./configure $($(package)_config_opts) && \
|
||||
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 ../../../..
|
||||
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_LIBDIR=$(host_prefix)/lib/pkgconfig$(if $(filter linux,$(host_os)),:$$$${qt_system_pc}) && \
|
||||
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \
|
||||
../qtbase/configure $($(package)_config_opts) -- -G Ninja $($(package)_cmake_opts) $($(package)_cmake_opts_$(host_os)) $($(package)_cmake_opts_$(host_arch)_$(host_os))
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -C src $(addprefix sub-,$($(package)_qt_libs)) && \
|
||||
$(MAKE) -C ../qttools/src/linguist/lrelease && \
|
||||
$(MAKE) -C ../qttools/src/linguist/lupdate && \
|
||||
$(MAKE) -C ../qttranslations
|
||||
cmake --build . --parallel
|
||||
endef
|
||||
|
||||
ifeq ($(host_os),mingw32)
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) -C src INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_qt_libs))) && cd .. && \
|
||||
$(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
|
||||
DESTDIR=$($(package)_staging_dir) cmake --install .
|
||||
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
|
||||
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
|
||||
endef
|
||||
|
||||
@@ -9,6 +9,15 @@ define $(package)_set_vars
|
||||
$(package)_config_opts_linux=--with-pic
|
||||
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
|
||||
$($(package)_autoconf)
|
||||
endef
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
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)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=bcbabe1e2c7d0eec4ed612e10b94b112dd5f06fcefa994a0c79a45d835cd21eb
|
||||
$(package)_patches=0001-fix-build-with-older-mingw64.patch 0002-disable-pthread_set_name_np.patch
|
||||
$(package)_sha256_hash=6653ef5910f17954861fe72332e68b03ca6e4d9c7160eb3a8de5a5a913bfab43
|
||||
|
||||
define $(package)_set_vars
|
||||
$(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
|
||||
|
||||
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
|
||||
endef
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=zlib
|
||||
$(package)_version=1.2.11
|
||||
$(package)_version=1.3.2
|
||||
$(package)_download_path=https://www.zlib.net
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
|
||||
$(package)_sha256_hash=bb329a0a2cd0274d05519d61c667c062e06990d72e125ee2dfa8de64f0119d16
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_build_opts= CC="$($(package)_cc)"
|
||||
|
||||
+9841
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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.
|
||||
|
||||
- [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)
|
||||
- [Unix Build Notes](build-unix.md)
|
||||
- [Windows Build Notes](build-windows.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
|
||||
---------------------
|
||||
The Agrarian repo's [root README](/README.md) contains relevant information on the development process and automated testing.
|
||||
|
||||
- [Developer Notes](developer-notes.md)
|
||||
- [Multiwallet Qt Development](multiwallet-qt.md)
|
||||
- [Release Notes](release-notes.md)
|
||||
- [Release Process](release-process.md)
|
||||
- [Source Code Documentation (External Link)](https://www.fuzzbawls.pw/agrarian/doxygen/)
|
||||
|
||||
@@ -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
@@ -13,10 +13,18 @@ When the popup appears, click `Install`.
|
||||
|
||||
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
|
||||
----------------------
|
||||
|
||||
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.
|
||||
|
||||
@@ -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).
|
||||
- Builders feed the unsigned app + detached signature back into Gitian. It
|
||||
uses the pre-built tools to recombine the pieces into a deterministic dmg.
|
||||
|
||||
|
||||
+45
-39
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2026 Agrarian Developers
|
||||
Copyright (c) 2022-2036 Agrarian Developers
|
||||
|
||||
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
|
||||
building large translation units.
|
||||
|
||||
Use `JOBS=1` on small hosts. On an 8-core, 16 GB host, `JOBS=8` is reasonable.
|
||||
|
||||
Packages
|
||||
--------
|
||||
|
||||
@@ -21,35 +23,33 @@ Install the native daemon build dependencies:
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
build-essential pkg-config autoconf automake libtool bsdmainutils \
|
||||
libboost-all-dev libevent-dev libgmp-dev libssl-dev \
|
||||
libdb5.3-dev libdb5.3++-dev
|
||||
cmake ninja-build python3 curl git make tar patch bzip2 xz-utils
|
||||
|
||||
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 \
|
||||
qtbase5-dev qttools5-dev-tools qtchooser \
|
||||
libqrencode-dev libprotobuf-dev protobuf-compiler
|
||||
xvfb 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
|
||||
|
||||
Daemon-only build
|
||||
-----------------
|
||||
Daemon build
|
||||
------------
|
||||
|
||||
For the pool daemon, the GUI, tests, bench, ZMQ, and UPnP can be disabled:
|
||||
|
||||
./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:
|
||||
For the daemon and CLI tools, use:
|
||||
|
||||
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
|
||||
---------------
|
||||
|
||||
@@ -57,42 +57,48 @@ For the desktop wallet, use:
|
||||
|
||||
JOBS=1 ./contrib/build-linux-wallet.sh
|
||||
|
||||
The wallet helper builds/restores the native depends prefix first, then creates
|
||||
a temporary config.site that keeps the depends libraries while allowing system
|
||||
Qt 5 tools and pkg-config files to be used.
|
||||
The wallet helper builds/restores the native depends prefix first, including
|
||||
Qt 6.8.3, OpenSSL 3.5.6, Boost 1.91.0, Expat 2.8.0, FreeType 2.14.3, and the
|
||||
Linux Qt font/xcb support libraries. It then configures the project with the
|
||||
generated depends `config.site` and builds the Ubuntu Qt wallet.
|
||||
|
||||
Defaults:
|
||||
|
||||
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
|
||||
--------
|
||||
|
||||
Qt 5.15 and protobuf 3.x emit compatibility/deprecation warnings in a few Qt
|
||||
translation units. Those warnings are expected while the Windows build remains
|
||||
pinned to Qt 5.9.7 and protobuf 2.6.1.
|
||||
The Qt6/OpenSSL3 path should build without Qt compatibility warnings. First-run
|
||||
runtime logs may report missing cache files such as `peers.dat`, `banlist.dat`,
|
||||
or masternode cache files; those are created during startup.
|
||||
|
||||
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-wallet.sh
|
||||
./contrib/smoke-test-qt.sh
|
||||
|
||||
The script starts `agrariand` with a temporary regtest datadir, confirms RPC and
|
||||
wallet calls work, mines one block with `generate`, checks the block count, and
|
||||
stops the daemon.
|
||||
The daemon script confirms RPC and wallet calls work, mines one block, checks
|
||||
the block count, and stops the daemon. The wallet script checks address
|
||||
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
|
||||
---------
|
||||
|
||||
Ubuntu 24.04 ships OpenSSL 3. Agrarian no longer rejects this only because
|
||||
`RAND_egd` is unavailable. Some deprecated OpenSSL SHA calls still warn during
|
||||
compilation; those warnings are expected until the hashing helper code is
|
||||
modernized.
|
||||
The deterministic depends build currently uses OpenSSL 3.5.6.
|
||||
|
||||
Expat and FreeType
|
||||
------------------
|
||||
|
||||
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
|
||||
-----------
|
||||
|
||||
+38
-15
@@ -1,8 +1,10 @@
|
||||
Copyright (c) 2026 Agrarian Developers
|
||||
Copyright (c) 2022-2036 Agrarian Developers
|
||||
|
||||
UNIX Build Notes
|
||||
|
||||
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
|
||||
|
||||
@@ -16,14 +18,25 @@ Example:
|
||||
$BDB_PREFIX must be an absolute path. Using $(pwd) ensures an absolute
|
||||
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
|
||||
./configure
|
||||
make
|
||||
CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
|
||||
make -j$(nproc)
|
||||
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
|
||||
|
||||
@@ -32,8 +45,7 @@ data structures) - libevent : Networking (async networking) - libgmp :
|
||||
Bignum arithmetic
|
||||
|
||||
Optional: - miniupnpc : UPnP support - libdb4.8 : Berkeley DB (wallet
|
||||
builds only) - qt : GUI support - protobuf : GUI payment protocol -
|
||||
libqrencode: QR code support - univalue : JSON parsing (bundled by
|
||||
builds only) - qt : GUI support - libqrencode: QR code support - univalue : JSON parsing (bundled by
|
||||
default) - libzmq3 : ZMQ notifications (>= 4.0.0)
|
||||
|
||||
See dependencies.md for version details.
|
||||
@@ -50,15 +62,15 @@ UBUNTU / DEBIAN
|
||||
|
||||
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
|
||||
|
||||
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):
|
||||
|
||||
sudo apt-get install software-properties-common
|
||||
@@ -73,7 +85,9 @@ Optional:
|
||||
|
||||
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:
|
||||
|
||||
@@ -83,7 +97,7 @@ FEDORA
|
||||
|
||||
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:
|
||||
|
||||
@@ -91,7 +105,8 @@ Optional:
|
||||
|
||||
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
|
||||
|
||||
@@ -121,3 +136,11 @@ ARM CROSS COMPILATION
|
||||
./autogen.sh
|
||||
./configure --prefix=$PWD/depends/arm-linux-gnueabihf --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++
|
||||
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
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2026 Agrarian Developers
|
||||
Copyright (c) 2022-2036 Agrarian Developers
|
||||
|
||||
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-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
|
||||
-----------------------
|
||||
@@ -32,14 +33,21 @@ Ubuntu package baseline
|
||||
For the native Ubuntu wallet:
|
||||
|
||||
sudo apt-get install -y \
|
||||
qtbase5-dev qttools5-dev-tools qtchooser \
|
||||
libqrencode-dev libprotobuf-dev protobuf-compiler
|
||||
cmake ninja-build xvfb 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 the Windows wallet:
|
||||
|
||||
sudo apt-get install -y \
|
||||
mingw-w64 g++-mingw-w64-x86-64 g++-mingw-w64-x86-64-posix \
|
||||
qttools5-dev-tools
|
||||
mingw-w64 g++-mingw-w64-x86-64 g++-mingw-w64-x86-64-posix
|
||||
|
||||
Then select POSIX Mingw-w64 threading:
|
||||
|
||||
@@ -51,11 +59,10 @@ Why the helpers exist
|
||||
|
||||
The wallet build is sensitive to tool version mismatches:
|
||||
|
||||
* Native Ubuntu uses current system Qt tools and protobuf while keeping the
|
||||
deterministic depends libraries.
|
||||
* Windows uses the Qt 5.9.7 and protobuf 2.6.1 libraries from depends. Its host
|
||||
tools must match those libraries closely enough for generated C++ output to
|
||||
compile.
|
||||
* Native Ubuntu uses the deterministic depends Qt6, OpenSSL, Boost, Expat,
|
||||
FreeType, and supporting libraries.
|
||||
* Windows cross-target wallets use the deterministic depends Qt6 path and
|
||||
matching Qt host tools staged by depends.
|
||||
|
||||
The helper scripts keep those rules in one place so the build is repeatable on a
|
||||
fresh server.
|
||||
@@ -80,10 +87,11 @@ After the Windows wallet build:
|
||||
Version checks
|
||||
--------------
|
||||
|
||||
On Ubuntu:
|
||||
On Ubuntu, use the smoke tests:
|
||||
|
||||
QT_QPA_PLATFORM=offscreen src/qt/agrarian-qt --version
|
||||
src/agrariand --version
|
||||
./contrib/smoke-test-daemon.sh
|
||||
./contrib/smoke-test-wallet.sh
|
||||
./contrib/smoke-test-qt.sh
|
||||
|
||||
For Windows binaries from the Linux build host:
|
||||
|
||||
|
||||
+37
-13
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2026 Agrarian Developers
|
||||
Copyright (c) 2022-2036 Agrarian Developers
|
||||
|
||||
============================================================
|
||||
Agrarian Core – Windows Build Notes
|
||||
@@ -56,7 +56,7 @@ INSTALLING WSL
|
||||
|
||||
3. Complete Setup
|
||||
- Open command prompt
|
||||
- Run: Ubuntu1804
|
||||
- Launch the installed Ubuntu distribution
|
||||
- Create a UNIX user account
|
||||
|
||||
Once WSL is active, continue with cross-compilation instructions below.
|
||||
@@ -77,10 +77,10 @@ GENERAL DEPENDENCIES
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential libtool autotools-dev \
|
||||
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
|
||||
(e.g., protobuf) build host utilities during the process.
|
||||
A host toolchain (build-essential) is required because some dependencies build
|
||||
host utilities during the process.
|
||||
|
||||
If building the Windows installer (`make deploy`):
|
||||
|
||||
@@ -133,7 +133,6 @@ The helper:
|
||||
• Verifies the POSIX Mingw-w64 thread model.
|
||||
• Builds the Win64 depends tree with Qt enabled.
|
||||
• Stages matching Qt host tools (`moc`, `uic`, `rcc`) into the depends prefix.
|
||||
• Builds/stages protobuf 2.6.1 `protoc` when system `protoc` is newer.
|
||||
• Configures the wallet against the generated depends prefix.
|
||||
|
||||
Manual equivalent:
|
||||
@@ -148,20 +147,27 @@ Manual equivalent:
|
||||
--disable-maintainer-mode \
|
||||
--disable-tests \
|
||||
--disable-bench \
|
||||
--with-gui=qt5 \
|
||||
--with-gui=qt6 \
|
||||
--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
|
||||
|
||||
============================================================
|
||||
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:
|
||||
|
||||
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++
|
||||
|
||||
@@ -216,12 +222,30 @@ You MUST select the POSIX thread model when prompted by
|
||||
update-alternatives.
|
||||
|
||||
============================================================
|
||||
PROTOBUF NOTE
|
||||
PAYMENT REQUEST NOTE
|
||||
============================================================
|
||||
|
||||
The Windows depends build uses protobuf 2.6.1 headers and libraries. Do not use
|
||||
a newer system `protoc` to regenerate wallet sources for this target. The helper
|
||||
builds and stages a matching native `protoc` when needed.
|
||||
Obsolete BIP70 payment request support was removed from Agrarian 2.0. The
|
||||
Windows wallet build does not require protobuf or `protoc`. Standard
|
||||
`agrarian:` URI payment links remain supported.
|
||||
|
||||
============================================================
|
||||
QT NOTE
|
||||
============================================================
|
||||
|
||||
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
|
||||
|
||||
+31
-16
@@ -1,35 +1,50 @@
|
||||
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 | | |
|
||||
| Boost | [1.64.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) | | | |
|
||||
| Boost | [1.91.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | |
|
||||
| Clang | | C++17 support | | | |
|
||||
| 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 | |
|
||||
| FreeType | [2.7.1](https://download.savannah.gnu.org/releases/freetype) | | No | | |
|
||||
| GCC | | [4.8+](https://gcc.gnu.org/) (C++11 support) | | | |
|
||||
| FreeType | [2.14.3](https://download.savannah.gnu.org/releases/freetype) | | Qt 6 static font support | | |
|
||||
| GCC | | C++17 support | | | |
|
||||
| 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) |
|
||||
| libpng | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L64) |
|
||||
| librsvg | | | | | |
|
||||
| MiniUPnPc | [2.0.20180203](http://miniupnp.free.fr/files) | | No | | |
|
||||
| OpenSSL | [1.0.1k](https://www.openssl.org/source) | | Yes | | |
|
||||
| GMP | [6.1.2](https://gmplib.org/) | | No | | |
|
||||
| MiniUPnPc | [2.3.3](https://miniupnp.tuxfamily.org/files/) | | No | | |
|
||||
| OpenSSL | [3.5.6](https://www.openssl.org/source) | | No | | |
|
||||
| GMP | [6.3.0](https://gmplib.org/) | | No | | |
|
||||
| PCRE | | | | | [Yes](https://github.com/agrarian-project/agrarian/blob/master/depends/packages/qt.mk#L66) |
|
||||
| protobuf | [2.6.1](https://github.com/google/protobuf/releases) | | No | | |
|
||||
| Python (tests) | | [3.5](https://www.python.org/downloads) | | | |
|
||||
| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | |
|
||||
| Qt | [5.9.7](https://download.qt.io/official_releases/qt/) | [5.5.1](https://github.com/bitcoin/bitcoin/issues/13478) | No | | |
|
||||
| qrencode | [4.1.1](https://github.com/fukuchi/libqrencode/releases/tag/v4.1.1) | | No | | |
|
||||
| Qt | [6.8.3](https://download.qt.io/official_releases/qt/) | 6.8 LTS | No | | |
|
||||
| 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) |
|
||||
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
|
||||
| zlib | [1.2.11](https://zlib.net/) | | | | No |
|
||||
| ZeroMQ | [4.3.5](https://github.com/zeromq/libzmq/releases) | 4.0.0 | 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
|
||||
------------------------
|
||||
|
||||
+28
-17
@@ -1,6 +1,17 @@
|
||||
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
|
||||
---------------------
|
||||
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.
|
||||
- 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).
|
||||
- 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:
|
||||
|
||||
- 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`.
|
||||
- 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.
|
||||
|
||||
Quick Start (Ubuntu/Debian)
|
||||
@@ -45,11 +56,13 @@ Build Qt wallets for cross targets (examples):
|
||||
```bash
|
||||
./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 armhf
|
||||
./installer/agrarian-installer.sh --action qt --qt-target aarch64
|
||||
./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:
|
||||
|
||||
- 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.
|
||||
- `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).
|
||||
- `win64` maps to `x86_64-w64-mingw32`.
|
||||
- `win32` maps to `i686-w64-mingw32`.
|
||||
- `armhf` maps to `arm-linux-gnueabihf`.
|
||||
- `aarch64` maps to `aarch64-unknown-linux-gnu`.
|
||||
- `all` builds native + all cross targets listed above.
|
||||
- `all` builds native + the Windows cross targets listed above.
|
||||
|
||||
`--host <triplet>`
|
||||
|
||||
@@ -110,14 +121,14 @@ Troubleshooting
|
||||
---------------------
|
||||
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.
|
||||
- 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
|
||||
|
||||
- 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:
|
||||
|
||||
```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`:
|
||||
|
||||
- `Qt5Core.pc`
|
||||
- `Qt5Gui.pc`
|
||||
- `Qt5Network.pc`
|
||||
- `Qt5Widgets.pc`
|
||||
- Native Ubuntu Qt6 path: `Qt6Core.pc`, `Qt6Gui.pc`, `Qt6Network.pc`,
|
||||
`Qt6Widgets.pc`
|
||||
- Windows cross-build Qt6 path: `Qt6Core.pc`, `Qt6Gui.pc`, `Qt6Network.pc`,
|
||||
`Qt6Widgets.pc`
|
||||
|
||||
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`):
|
||||
|
||||
```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:
|
||||
|
||||
- win64: `g++-mingw-w64-x86-64` (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: `g++-aarch64-linux-gnu` and `binutils-aarch64-linux-gnu`
|
||||
- aarch64 daemon builds through `contrib/agrarian-build-menu.sh` use
|
||||
`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.
|
||||
|
||||
+3
-3
@@ -247,6 +247,7 @@ EVENT_PTHREADS_LIBS = @EVENT_PTHREADS_LIBS@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GCOV = @GCOV@
|
||||
GENHTML = @GENHTML@
|
||||
GENISOIMAGE = @GENISOIMAGE@
|
||||
@@ -257,7 +258,7 @@ GREP = @GREP@
|
||||
HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@
|
||||
HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@
|
||||
HARDENED_LDFLAGS = @HARDENED_LDFLAGS@
|
||||
HAVE_CXX11 = @HAVE_CXX11@
|
||||
HAVE_CXX17 = @HAVE_CXX17@
|
||||
HEXDUMP = @HEXDUMP@
|
||||
IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -328,8 +329,6 @@ PYTHON = @PYTHON@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
QR_CFLAGS = @QR_CFLAGS@
|
||||
QR_LIBS = @QR_LIBS@
|
||||
QT5_CFLAGS = @QT5_CFLAGS@
|
||||
QT5_LIBS = @QT5_LIBS@
|
||||
QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@
|
||||
QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@
|
||||
QTCGL_CFLAGS = @QTCGL_CFLAGS@
|
||||
@@ -352,6 +351,7 @@ QTTHEME_CFLAGS = @QTTHEME_CFLAGS@
|
||||
QTTHEME_LIBS = @QTTHEME_LIBS@
|
||||
QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@
|
||||
QTXCBQPA_LIBS = @QTXCBQPA_LIBS@
|
||||
QT_CFLAGS = @QT_CFLAGS@
|
||||
QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@
|
||||
QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@
|
||||
QT_DBUS_LIBS = @QT_DBUS_LIBS@
|
||||
|
||||
@@ -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.
|
||||
@@ -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>
|
||||
|
||||
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
|
||||
==============
|
||||
|
||||
Agrarian Core is extensively tested on multiple operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and later.
|
||||
|
||||
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.
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
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.
|
||||
See [travis-ci.org](https://travis-ci.org/) for more info
|
||||
|
||||
|
||||
+14
-1
@@ -1,6 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -32,6 +39,12 @@ If wallet is enabled (default), installer preflight checks require:
|
||||
- `depends/<host>/lib/libboost_thread*.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.
|
||||
|
||||
## Tests
|
||||
|
||||
@@ -27,7 +27,7 @@ Options:
|
||||
--host <triplet> Build host triplet (default: x86_64-pc-linux-gnu)
|
||||
--action <depends|daemon|qt|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)
|
||||
--wallet <0|1> Enable wallet-related dependencies/build flags (default: 1)
|
||||
--jobs <n> Parallel build jobs (default: nproc)
|
||||
@@ -144,14 +144,6 @@ check_toolchains_for_host() {
|
||||
i686-w64-mingw32)
|
||||
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
|
||||
@@ -263,7 +255,7 @@ ensure_qt_pkgconfig_prereqs() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
for module in Qt5Core Qt5Gui Qt5Network Qt5Widgets; do
|
||||
for module in Qt6Core Qt6Gui Qt6Network Qt6Widgets; do
|
||||
found_path=""
|
||||
if [[ -f "${prefix}/lib/pkgconfig/${module}.pc" ]]; then
|
||||
found_path="${prefix}/lib/pkgconfig/${module}.pc"
|
||||
@@ -317,12 +309,6 @@ qt_target_host() {
|
||||
win32)
|
||||
echo "i686-w64-mingw32"
|
||||
;;
|
||||
armhf)
|
||||
echo "arm-linux-gnueabihf"
|
||||
;;
|
||||
aarch64)
|
||||
echo "aarch64-unknown-linux-gnu"
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
@@ -342,7 +328,7 @@ qt_target_list() {
|
||||
local target="$1"
|
||||
case "${target}" in
|
||||
all)
|
||||
echo "native win64 win32 armhf aarch64"
|
||||
echo "native win64 win32"
|
||||
;;
|
||||
*)
|
||||
echo "${target}"
|
||||
@@ -479,7 +465,7 @@ case "$ACTION" in
|
||||
esac
|
||||
|
||||
case "$QT_TARGET" in
|
||||
native|win64|win32|armhf|aarch64|all) ;;
|
||||
native|win64|win32|all) ;;
|
||||
*) fail "Invalid --qt-target: ${QT_TARGET}" ;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -36,9 +36,7 @@ for tool in \
|
||||
x86_64-w64-mingw32-g++ \
|
||||
i686-w64-mingw32-g++ \
|
||||
aarch64-linux-gnu-gcc \
|
||||
aarch64-linux-gnu-g++ \
|
||||
arm-linux-gnueabihf-gcc \
|
||||
arm-linux-gnueabihf-g++; do
|
||||
aarch64-linux-gnu-g++; do
|
||||
cat > "${FAKE_BIN}/${tool}" <<'SH'
|
||||
#!/usr/bin/env bash
|
||||
exit 0
|
||||
@@ -68,16 +66,16 @@ seed_fake_depends_prefix() {
|
||||
: > "${prefix}/include/db_cxx.h"
|
||||
: > "${prefix}/lib/libboost_thread.a"
|
||||
: > "${prefix}/lib/libboost_system.a"
|
||||
: > "${prefix}/lib/pkgconfig/Qt5Core.pc"
|
||||
: > "${prefix}/lib/pkgconfig/Qt5Gui.pc"
|
||||
: > "${prefix}/lib/pkgconfig/Qt5Network.pc"
|
||||
: > "${prefix}/lib/pkgconfig/Qt5Widgets.pc"
|
||||
: > "${prefix}/lib/pkgconfig/Qt6Core.pc"
|
||||
: > "${prefix}/lib/pkgconfig/Qt6Gui.pc"
|
||||
: > "${prefix}/lib/pkgconfig/Qt6Network.pc"
|
||||
: > "${prefix}/lib/pkgconfig/Qt6Widgets.pc"
|
||||
}
|
||||
|
||||
echo "[test 1] help output works"
|
||||
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 -- "--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 -- "--wallet <0|1>" "${LOG_DIR}/help.out"
|
||||
rg -q -- "--jobs <n>" "${LOG_DIR}/help.out"
|
||||
|
||||
@@ -578,10 +578,6 @@ if HARDEN
|
||||
$(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS)
|
||||
endif
|
||||
|
||||
%.pb.cc %.pb.h: %.proto
|
||||
@test -f $(PROTOC)
|
||||
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(<D) $<
|
||||
|
||||
if EMBEDDED_LEVELDB
|
||||
include Makefile.leveldb.include
|
||||
endif
|
||||
|
||||
+50
-92
@@ -671,8 +671,8 @@ am__qt_libbitcoinqt_a_SOURCES_DIST = qt/bantablemodel.cpp \
|
||||
qt/locale/agrarian_sv.ts qt/locale/agrarian_tr.ts \
|
||||
qt/locale/agrarian_uk.ts qt/locale/agrarian_vi.ts \
|
||||
qt/locale/agrarian_zh_CN.ts qt/locale/agrarian_zh_TW.ts \
|
||||
qt/paymentrequest.proto qt/res/icons/add.png \
|
||||
qt/res/icons/address-book.png qt/res/icons/automint_active.png \
|
||||
qt/res/icons/add.png qt/res/icons/address-book.png \
|
||||
qt/res/icons/automint_active.png \
|
||||
qt/res/icons/automint_inactive.png qt/res/icons/bitcoin.ico \
|
||||
qt/res/icons/bitcoin.png qt/res/icons/bitcoin_testnet.ico \
|
||||
qt/res/icons/bitcoin_testnet.png \
|
||||
@@ -793,7 +793,7 @@ am__qt_libbitcoinqt_a_SOURCES_DIST = qt/bantablemodel.cpp \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_3)
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3)
|
||||
@ENABLE_QT_TRUE@am__objects_13 = qt/libbitcoinqt_a-moc_addressbookpage.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_addresstablemodel.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_askpassphrasedialog.$(OBJEXT) \
|
||||
@@ -848,14 +848,11 @@ am__qt_libbitcoinqt_a_SOURCES_DIST = qt/bantablemodel.cpp \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_walletview.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_14 = \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-paymentrequest.pb.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_15 = \
|
||||
@ENABLE_QT_TRUE@ qt/libbitcoinqt_a-qrc_agrarian.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_16 = qt/libbitcoinqt_a-qrc_agrarian_locale.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@am__objects_15 = qt/libbitcoinqt_a-qrc_agrarian_locale.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@nodist_qt_libbitcoinqt_a_OBJECTS = $(am__objects_13) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_14) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_3) $(am__objects_15) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_16)
|
||||
@ENABLE_QT_TRUE@ $(am__objects_15)
|
||||
qt_libbitcoinqt_a_OBJECTS = $(am_qt_libbitcoinqt_a_OBJECTS) \
|
||||
$(nodist_qt_libbitcoinqt_a_OBJECTS)
|
||||
@BUILD_BITCOIN_LIBS_TRUE@libbitcoinconsensus_la_DEPENDENCIES = \
|
||||
@@ -867,7 +864,7 @@ am__libbitcoinconsensus_la_SOURCES_DIST = allocators.cpp \
|
||||
script/script.cpp script/interpreter.cpp \
|
||||
script/bitcoinconsensus.cpp uint256.cpp utilstrencodings.cpp \
|
||||
compat/glibc_compat.cpp
|
||||
@BUILD_BITCOIN_LIBS_TRUE@@GLIBC_BACK_COMPAT_TRUE@am__objects_17 = compat/libbitcoinconsensus_la-glibc_compat.lo
|
||||
@BUILD_BITCOIN_LIBS_TRUE@@GLIBC_BACK_COMPAT_TRUE@am__objects_16 = compat/libbitcoinconsensus_la-glibc_compat.lo
|
||||
@BUILD_BITCOIN_LIBS_TRUE@am_libbitcoinconsensus_la_OBJECTS = \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-allocators.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ primitives/libbitcoinconsensus_la-transaction.lo \
|
||||
@@ -884,7 +881,7 @@ am__libbitcoinconsensus_la_SOURCES_DIST = allocators.cpp \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ script/libbitcoinconsensus_la-bitcoinconsensus.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-uint256.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ libbitcoinconsensus_la-utilstrencodings.lo \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ $(am__objects_17)
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ $(am__objects_16)
|
||||
libbitcoinconsensus_la_OBJECTS = $(am_libbitcoinconsensus_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
@@ -897,9 +894,9 @@ libbitcoinconsensus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@am_libbitcoinconsensus_la_rpath = -rpath \
|
||||
@BUILD_BITCOIN_LIBS_TRUE@ $(libdir)
|
||||
am__agrarian_cli_SOURCES_DIST = agrarian-cli.cpp agrarian-cli-res.rc
|
||||
@TARGET_WINDOWS_TRUE@am__objects_18 = agrarian-cli-res.$(OBJEXT)
|
||||
@TARGET_WINDOWS_TRUE@am__objects_17 = agrarian-cli-res.$(OBJEXT)
|
||||
am_agrarian_cli_OBJECTS = agrarian_cli-agrarian-cli.$(OBJEXT) \
|
||||
$(am__objects_18)
|
||||
$(am__objects_17)
|
||||
agrarian_cli_OBJECTS = $(am_agrarian_cli_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
@EMBEDDED_UNIVALUE_FALSE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
|
||||
@@ -912,9 +909,9 @@ agrarian_cli_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(agrarian_cli_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(agrarian_cli_LDFLAGS) $(LDFLAGS) -o $@
|
||||
am__agrarian_tx_SOURCES_DIST = agrarian-tx.cpp agrarian-tx-res.rc
|
||||
@TARGET_WINDOWS_TRUE@am__objects_19 = agrarian-tx-res.$(OBJEXT)
|
||||
@TARGET_WINDOWS_TRUE@am__objects_18 = agrarian-tx-res.$(OBJEXT)
|
||||
am_agrarian_tx_OBJECTS = agrarian_tx-agrarian-tx.$(OBJEXT) \
|
||||
$(am__objects_19)
|
||||
$(am__objects_18)
|
||||
agrarian_tx_OBJECTS = $(am_agrarian_tx_OBJECTS)
|
||||
agrarian_tx_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBBITCOIN_COMMON) \
|
||||
$(LIBBITCOIN_ZEROCOIN) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) \
|
||||
@@ -923,8 +920,8 @@ agrarian_tx_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(agrarian_tx_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(agrarian_tx_LDFLAGS) $(LDFLAGS) -o $@
|
||||
am__agrariand_SOURCES_DIST = agrariand.cpp agrariand-res.rc
|
||||
@TARGET_WINDOWS_TRUE@am__objects_20 = agrariand-res.$(OBJEXT)
|
||||
am_agrariand_OBJECTS = agrariand-agrariand.$(OBJEXT) $(am__objects_20)
|
||||
@TARGET_WINDOWS_TRUE@am__objects_19 = agrariand-res.$(OBJEXT)
|
||||
am_agrariand_OBJECTS = agrariand-agrariand.$(OBJEXT) $(am__objects_19)
|
||||
agrariand_OBJECTS = $(am_agrariand_OBJECTS)
|
||||
am__DEPENDENCIES_3 = $(am__append_12)
|
||||
am__DEPENDENCIES_4 = $(am__append_13)
|
||||
@@ -943,17 +940,17 @@ agrariand_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
am__qt_agrarian_qt_SOURCES_DIST = qt/agrarian.cpp \
|
||||
qt/macdockiconhandler.mm qt/macnotificationhandler.mm \
|
||||
qt/res/agrarian-qt-res.rc
|
||||
@ENABLE_QT_TRUE@am__objects_21 = \
|
||||
@ENABLE_QT_TRUE@am__objects_20 = \
|
||||
@ENABLE_QT_TRUE@ qt/agrarian_qt-macdockiconhandler.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ qt/agrarian_qt-macnotificationhandler.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@am__objects_22 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@ $(am__objects_21)
|
||||
@ENABLE_QT_TRUE@am__objects_23 = qt/res/agrarian-qt-res.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@am__objects_24 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@ $(am__objects_23)
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@am__objects_21 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_DARWIN_TRUE@ $(am__objects_20)
|
||||
@ENABLE_QT_TRUE@am__objects_22 = qt/res/agrarian-qt-res.$(OBJEXT)
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@am__objects_23 = \
|
||||
@ENABLE_QT_TRUE@@TARGET_WINDOWS_TRUE@ $(am__objects_22)
|
||||
@ENABLE_QT_TRUE@am_qt_agrarian_qt_OBJECTS = \
|
||||
@ENABLE_QT_TRUE@ qt/agrarian_qt-agrarian.$(OBJEXT) \
|
||||
@ENABLE_QT_TRUE@ $(am__objects_22) $(am__objects_24)
|
||||
@ENABLE_QT_TRUE@ $(am__objects_21) $(am__objects_23)
|
||||
qt_agrarian_qt_OBJECTS = $(am_qt_agrarian_qt_OBJECTS)
|
||||
@ENABLE_QT_TRUE@@ENABLE_ZMQ_TRUE@am__DEPENDENCIES_5 = \
|
||||
@ENABLE_QT_TRUE@@ENABLE_ZMQ_TRUE@ $(LIBBITCOIN_ZMQ) \
|
||||
@@ -969,8 +966,8 @@ qt_agrarian_qt_OBJECTS = $(am_qt_agrarian_qt_OBJECTS)
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
@ENABLE_QT_TRUE@ $(LIBSECP256K1) $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TRUE@ $(am__DEPENDENCIES_1)
|
||||
qt_agrarian_qt_LINK = $(LIBTOOL) $(AM_V_lt) \
|
||||
$(qt_agrarian_qt_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
|
||||
$(OBJCXXLD) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS) \
|
||||
@@ -979,15 +976,15 @@ am__qt_test_test_agrarian_qt_SOURCES_DIST = qt/test/test_main.cpp \
|
||||
qt/test/uritests.cpp qt/test/uritests.h \
|
||||
qt/test/paymentrequestdata.h qt/test/paymentservertests.h \
|
||||
qt/test/paymentservertests.cpp
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_25 = qt/test/test_agrarian_qt-paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_24 = qt/test/test_agrarian_qt-paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@am_qt_test_test_agrarian_qt_OBJECTS = qt/test/test_agrarian_qt-test_main.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ qt/test/test_agrarian_qt-uritests.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_3) $(am__objects_25)
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_26 = qt/test/test_agrarian_qt-moc_paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@am__objects_27 = qt/test/test_agrarian_qt-moc_uritests.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_26)
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_3) $(am__objects_24)
|
||||
@ENABLE_QT_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_25 = qt/test/test_agrarian_qt-moc_paymentservertests.$(OBJEXT)
|
||||
@ENABLE_QT_TESTS_TRUE@am__objects_26 = qt/test/test_agrarian_qt-moc_uritests.$(OBJEXT) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_25)
|
||||
@ENABLE_QT_TESTS_TRUE@nodist_qt_test_test_agrarian_qt_OBJECTS = \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_27)
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__objects_26)
|
||||
qt_test_test_agrarian_qt_OBJECTS = \
|
||||
$(am_qt_test_test_agrarian_qt_OBJECTS) \
|
||||
$(nodist_qt_test_test_agrarian_qt_OBJECTS)
|
||||
@@ -1012,7 +1009,6 @@ qt_test_test_agrarian_qt_OBJECTS = \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(am__DEPENDENCIES_1)
|
||||
@@ -1054,12 +1050,12 @@ am__test_test_agrarian_SOURCES_DIST = test/test_agrarian.h \
|
||||
test/data/script_invalid.json test/data/tx_invalid.json \
|
||||
test/data/tx_valid.json test/data/sighash.json \
|
||||
test/data/alertTests.raw
|
||||
@ENABLE_TESTS_TRUE@am__objects_28 = \
|
||||
@ENABLE_TESTS_TRUE@am__objects_27 = \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-test_agrarian.$(OBJEXT)
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_29 = test/test_agrarian-accounting_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@am__objects_28 = test/test_agrarian-accounting_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@ wallet/test/test_test_agrarian-wallet_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_WALLET_TRUE@ test/test_agrarian-rpc_wallet_tests.$(OBJEXT)
|
||||
@ENABLE_TESTS_TRUE@am__objects_30 = test/test_agrarian-zerocoin_implementation_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@am__objects_29 = test/test_agrarian-zerocoin_implementation_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_denomination_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_transactions_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-zerocoin_coinspend_tests.$(OBJEXT) \
|
||||
@@ -1105,13 +1101,13 @@ am__test_test_agrarian_SOURCES_DIST = test/test_agrarian.h \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-uint256_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-univalue_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ test/test_agrarian-util_tests.$(OBJEXT) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_29)
|
||||
@ENABLE_TESTS_TRUE@am_test_test_agrarian_OBJECTS = $(am__objects_28) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_30) $(am__objects_3) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_28)
|
||||
@ENABLE_TESTS_TRUE@am_test_test_agrarian_OBJECTS = $(am__objects_27) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_29) $(am__objects_3) \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_3)
|
||||
@ENABLE_TESTS_TRUE@am__objects_31 = $(am__objects_3) $(am__objects_3)
|
||||
@ENABLE_TESTS_TRUE@am__objects_30 = $(am__objects_3) $(am__objects_3)
|
||||
@ENABLE_TESTS_TRUE@nodist_test_test_agrarian_OBJECTS = \
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_31)
|
||||
@ENABLE_TESTS_TRUE@ $(am__objects_30)
|
||||
test_test_agrarian_OBJECTS = $(am_test_test_agrarian_OBJECTS) \
|
||||
$(nodist_test_test_agrarian_OBJECTS)
|
||||
@ENABLE_TESTS_TRUE@@ENABLE_ZMQ_TRUE@am__DEPENDENCIES_7 = \
|
||||
@@ -1392,7 +1388,6 @@ am__depfiles_remade = ./$(DEPDIR)/agrarian_cli-agrarian-cli.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po \
|
||||
qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po \
|
||||
@@ -1932,6 +1927,7 @@ EVENT_PTHREADS_LIBS = @EVENT_PTHREADS_LIBS@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTENDED_FUNCTIONAL_TESTS = @EXTENDED_FUNCTIONAL_TESTS@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GCOV = @GCOV@
|
||||
GENHTML = @GENHTML@
|
||||
GENISOIMAGE = @GENISOIMAGE@
|
||||
@@ -1942,7 +1938,7 @@ GREP = @GREP@
|
||||
HARDENED_CPPFLAGS = @HARDENED_CPPFLAGS@
|
||||
HARDENED_CXXFLAGS = @HARDENED_CXXFLAGS@
|
||||
HARDENED_LDFLAGS = @HARDENED_LDFLAGS@
|
||||
HAVE_CXX11 = @HAVE_CXX11@
|
||||
HAVE_CXX17 = @HAVE_CXX17@
|
||||
HEXDUMP = @HEXDUMP@
|
||||
IMAGEMAGICK_CONVERT = @IMAGEMAGICK_CONVERT@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -2003,9 +1999,6 @@ PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
PORT = @PORT@
|
||||
PROTOBUF_CFLAGS = @PROTOBUF_CFLAGS@
|
||||
PROTOBUF_LIBS = @PROTOBUF_LIBS@
|
||||
PROTOC = @PROTOC@
|
||||
PTHREAD_CC = @PTHREAD_CC@
|
||||
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
|
||||
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||
@@ -2013,8 +2006,6 @@ PYTHON = @PYTHON@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
QR_CFLAGS = @QR_CFLAGS@
|
||||
QR_LIBS = @QR_LIBS@
|
||||
QT5_CFLAGS = @QT5_CFLAGS@
|
||||
QT5_LIBS = @QT5_LIBS@
|
||||
QTACCESSIBILITY_CFLAGS = @QTACCESSIBILITY_CFLAGS@
|
||||
QTACCESSIBILITY_LIBS = @QTACCESSIBILITY_LIBS@
|
||||
QTCGL_CFLAGS = @QTCGL_CFLAGS@
|
||||
@@ -2037,6 +2028,7 @@ QTTHEME_CFLAGS = @QTTHEME_CFLAGS@
|
||||
QTTHEME_LIBS = @QTTHEME_LIBS@
|
||||
QTXCBQPA_CFLAGS = @QTXCBQPA_CFLAGS@
|
||||
QTXCBQPA_LIBS = @QTXCBQPA_LIBS@
|
||||
QT_CFLAGS = @QT_CFLAGS@
|
||||
QT_DBUS_CFLAGS = @QT_DBUS_CFLAGS@
|
||||
QT_DBUS_INCLUDES = @QT_DBUS_INCLUDES@
|
||||
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_LOCALE_CPP = qt/qrc_agrarian_locale.cpp
|
||||
@ENABLE_QT_TRUE@QT_QRC_LOCALE = qt/agrarian_locale.qrc
|
||||
@ENABLE_QT_TRUE@PROTOBUF_CC = qt/paymentrequest.pb.cc
|
||||
@ENABLE_QT_TRUE@PROTOBUF_H = qt/paymentrequest.pb.h
|
||||
@ENABLE_QT_TRUE@PROTOBUF_PROTO = qt/paymentrequest.proto
|
||||
@ENABLE_QT_TRUE@BITCOIN_QT_H = \
|
||||
@ENABLE_QT_TRUE@ qt/addressbookpage.h \
|
||||
@ENABLE_QT_TRUE@ qt/addresstablemodel.h \
|
||||
@@ -3110,23 +3099,21 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TRUE@ -I$(builddir)/qt/forms
|
||||
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(QR_CFLAGS)
|
||||
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(QT_PIE_FLAGS)
|
||||
@ENABLE_QT_TRUE@qt_libbitcoinqt_a_SOURCES = $(BITCOIN_QT_CPP) $(BITCOIN_QT_H) $(QT_FORMS_UI) \
|
||||
@ENABLE_QT_TRUE@ $(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(PROTOBUF_PROTO) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
|
||||
@ENABLE_QT_TRUE@nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(PROTOBUF_CC) \
|
||||
@ENABLE_QT_TRUE@ $(PROTOBUF_H) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
@ENABLE_QT_TRUE@ $(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
|
||||
@ENABLE_QT_TRUE@nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
|
||||
# forms/foo.h -> forms/ui_foo.h
|
||||
@ENABLE_QT_TRUE@QT_FORMS_H = $(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:.ui=.h))))
|
||||
|
||||
# agrarian-qt binary #
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
@ENABLE_QT_TRUE@ $(QT_INCLUDES) $(QR_CFLAGS)
|
||||
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_SOURCES = qt/agrarian.cpp \
|
||||
@@ -3139,10 +3126,9 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TRUE@ $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) \
|
||||
@ENABLE_QT_TRUE@ $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(LIBSECP256K1) $(EVENT_PTHREADS_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(EVENT_LIBS)
|
||||
@ENABLE_QT_TRUE@ $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) \
|
||||
@ENABLE_QT_TRUE@ $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TRUE@ $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
@ENABLE_QT_TRUE@qt_agrarian_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX
|
||||
|
||||
@@ -3157,7 +3143,7 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TESTS_TRUE@ qt/test/paymentservertests.h
|
||||
|
||||
@ENABLE_QT_TESTS_TRUE@qt_test_test_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_INCLUDES) $(QT_TEST_INCLUDES) $(PROTOBUF_CFLAGS)
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_INCLUDES) $(QT_TEST_INCLUDES)
|
||||
|
||||
@ENABLE_QT_TESTS_TRUE@qt_test_test_agrarian_qt_SOURCES = \
|
||||
@ENABLE_QT_TESTS_TRUE@ qt/test/test_main.cpp \
|
||||
@@ -3173,8 +3159,8 @@ EXTRA_DIST =
|
||||
@ENABLE_QT_TESTS_TRUE@ $(LIBLEVELDB) $(LIBLEVELDB_SSE42) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(LIBMEMENV) $(BOOST_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_DBUS_LIBS) $(QT_TEST_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(QT_LIBS) $(QR_LIBS) $(BDB_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(SSL_LIBS) $(CRYPTO_LIBS) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
@ENABLE_QT_TESTS_TRUE@ $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
@ENABLE_QT_TESTS_TRUE@qt_test_test_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
@@ -3962,8 +3948,6 @@ qt/libbitcoinqt_a-moc_walletview.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-moc_zagrcontroldialog.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-paymentrequest.pb.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-qrc_agrarian.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
qt/$(DEPDIR)/$(am__dirstamp)
|
||||
qt/libbitcoinqt_a-qrc_agrarian_locale.$(OBJEXT): qt/$(am__dirstamp) \
|
||||
@@ -4442,7 +4426,6 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po@am__quote@ # am--include-marker
|
||||
@@ -8757,20 +8740,6 @@ qt/libbitcoinqt_a-moc_zagrcontroldialog.obj: qt/moc_zagrcontroldialog.cpp
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -c -o qt/libbitcoinqt_a-moc_zagrcontroldialog.obj `if test -f 'qt/moc_zagrcontroldialog.cpp'; then $(CYGPATH_W) 'qt/moc_zagrcontroldialog.cpp'; else $(CYGPATH_W) '$(srcdir)/qt/moc_zagrcontroldialog.cpp'; fi`
|
||||
|
||||
qt/libbitcoinqt_a-paymentrequest.pb.o: qt/paymentrequest.pb.cc
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -MT qt/libbitcoinqt_a-paymentrequest.pb.o -MD -MP -MF qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo -c -o qt/libbitcoinqt_a-paymentrequest.pb.o `test -f 'qt/paymentrequest.pb.cc' || echo '$(srcdir)/'`qt/paymentrequest.pb.cc
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='qt/paymentrequest.pb.cc' object='qt/libbitcoinqt_a-paymentrequest.pb.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -c -o qt/libbitcoinqt_a-paymentrequest.pb.o `test -f 'qt/paymentrequest.pb.cc' || echo '$(srcdir)/'`qt/paymentrequest.pb.cc
|
||||
|
||||
qt/libbitcoinqt_a-paymentrequest.pb.obj: qt/paymentrequest.pb.cc
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -MT qt/libbitcoinqt_a-paymentrequest.pb.obj -MD -MP -MF qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo -c -o qt/libbitcoinqt_a-paymentrequest.pb.obj `if test -f 'qt/paymentrequest.pb.cc'; then $(CYGPATH_W) 'qt/paymentrequest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/qt/paymentrequest.pb.cc'; fi`
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Tpo qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='qt/paymentrequest.pb.cc' object='qt/libbitcoinqt_a-paymentrequest.pb.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -c -o qt/libbitcoinqt_a-paymentrequest.pb.obj `if test -f 'qt/paymentrequest.pb.cc'; then $(CYGPATH_W) 'qt/paymentrequest.pb.cc'; else $(CYGPATH_W) '$(srcdir)/qt/paymentrequest.pb.cc'; fi`
|
||||
|
||||
qt/libbitcoinqt_a-qrc_agrarian.o: qt/qrc_agrarian.cpp
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(qt_libbitcoinqt_a_CPPFLAGS) $(CPPFLAGS) $(qt_libbitcoinqt_a_CXXFLAGS) $(CXXFLAGS) -MT qt/libbitcoinqt_a-qrc_agrarian.o -MD -MP -MF qt/$(DEPDIR)/libbitcoinqt_a-qrc_agrarian.Tpo -c -o qt/libbitcoinqt_a-qrc_agrarian.o `test -f 'qt/qrc_agrarian.cpp' || echo '$(srcdir)/'`qt/qrc_agrarian.cpp
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) qt/$(DEPDIR)/libbitcoinqt_a-qrc_agrarian.Tpo qt/$(DEPDIR)/libbitcoinqt_a-qrc_agrarian.Po
|
||||
@@ -10504,7 +10473,6 @@ distclean: distclean-recursive
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po
|
||||
@@ -10924,7 +10892,6 @@ maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsdialog.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-optionsmodel.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-overviewpage.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequest.pb.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentrequestplus.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-paymentserver.Po
|
||||
-rm -f qt/$(DEPDIR)/libbitcoinqt_a-peertablemodel.Po
|
||||
@@ -11137,10 +11104,6 @@ check-security: $(bin_PROGRAMS)
|
||||
@HARDEN_TRUE@ @echo "Checking binary security..."
|
||||
@HARDEN_TRUE@ $(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS)
|
||||
|
||||
%.pb.cc %.pb.h: %.proto
|
||||
@test -f $(PROTOC)
|
||||
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(<D) $<
|
||||
|
||||
@ENABLE_TESTS_TRUE@$(BITCOIN_TESTS): $(GENERATED_TEST_FILES)
|
||||
|
||||
@ENABLE_TESTS_TRUE@agrarian_test: $(TEST_BINARY)
|
||||
@@ -11186,11 +11149,6 @@ check-security: $(bin_PROGRAMS)
|
||||
@ENABLE_QT_TRUE@$(QT_MOC): $(QT_FORMS_H)
|
||||
@ENABLE_QT_TRUE@$(qt_libbitcoinqt_a_OBJECTS) $(qt_agrarian_qt_OBJECTS) : | $(QT_MOC)
|
||||
|
||||
#Generating these with a half-written protobuf header leads to wacky results.
|
||||
#This makes sure it's done.
|
||||
@ENABLE_QT_TRUE@$(QT_MOC): $(PROTOBUF_H)
|
||||
@ENABLE_QT_TRUE@$(QT_MOC_CPP): $(PROTOBUF_H)
|
||||
|
||||
@ENABLE_QT_TRUE@SECONDARY: $(QT_QM)
|
||||
|
||||
@ENABLE_QT_TRUE@$(srcdir)/qt/agrarianstrings.cpp: $(libbitcoin_server_a_SOURCES) $(libbitcoin_wallet_a_SOURCES) $(libbitcoin_common_a_SOURCES) $(libbitcoin_zmq_a_SOURCES) $(libbitcoin_util_a_SOURCES)
|
||||
@@ -11208,7 +11166,7 @@ check-security: $(bin_PROGRAMS)
|
||||
@ENABLE_QT_TRUE@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
@ENABLE_QT_TRUE@ @rm $(@D)/temp_$(<F)
|
||||
|
||||
@ENABLE_QT_TRUE@$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES) $(PROTOBUF_H)
|
||||
@ENABLE_QT_TRUE@$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
@ENABLE_QT_TRUE@ @test -f $(RCC)
|
||||
@ENABLE_QT_TRUE@ $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \
|
||||
@ENABLE_QT_TRUE@ $(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
|
||||
+6
-16
@@ -138,10 +138,6 @@ QT_QRC = qt/agrarian.qrc
|
||||
QT_QRC_LOCALE_CPP = qt/qrc_agrarian_locale.cpp
|
||||
QT_QRC_LOCALE = qt/agrarian_locale.qrc
|
||||
|
||||
PROTOBUF_CC = qt/paymentrequest.pb.cc
|
||||
PROTOBUF_H = qt/paymentrequest.pb.h
|
||||
PROTOBUF_PROTO = qt/paymentrequest.proto
|
||||
|
||||
BITCOIN_QT_H = \
|
||||
qt/addressbookpage.h \
|
||||
qt/addresstablemodel.h \
|
||||
@@ -372,15 +368,14 @@ BITCOIN_QT_INCLUDES = -I$(builddir)/qt -I$(srcdir)/qt -I$(srcdir)/qt/forms \
|
||||
-I$(builddir)/qt/forms
|
||||
|
||||
qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
$(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
$(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(QR_CFLAGS)
|
||||
qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(QT_PIE_FLAGS)
|
||||
|
||||
qt_libbitcoinqt_a_SOURCES = $(BITCOIN_QT_CPP) $(BITCOIN_QT_H) $(QT_FORMS_UI) \
|
||||
$(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(PROTOBUF_PROTO) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
$(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
|
||||
nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(PROTOBUF_CC) \
|
||||
$(PROTOBUF_H) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
nodist_qt_libbitcoinqt_a_SOURCES = $(QT_MOC_CPP) $(QT_MOC) $(QT_QRC_CPP) $(QT_QRC_LOCALE_CPP)
|
||||
|
||||
# forms/foo.h -> forms/ui_foo.h
|
||||
QT_FORMS_H=$(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:.ui=.h))))
|
||||
@@ -390,14 +385,9 @@ QT_FORMS_H=$(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:
|
||||
$(QT_MOC): $(QT_FORMS_H)
|
||||
$(qt_libbitcoinqt_a_OBJECTS) $(qt_agrarian_qt_OBJECTS) : | $(QT_MOC)
|
||||
|
||||
#Generating these with a half-written protobuf header leads to wacky results.
|
||||
#This makes sure it's done.
|
||||
$(QT_MOC): $(PROTOBUF_H)
|
||||
$(QT_MOC_CPP): $(PROTOBUF_H)
|
||||
|
||||
# agrarian-qt binary #
|
||||
qt_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
$(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||
$(QT_INCLUDES) $(QR_CFLAGS)
|
||||
qt_agrarian_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
|
||||
qt_agrarian_qt_SOURCES = qt/agrarian.cpp
|
||||
@@ -415,7 +405,7 @@ if ENABLE_ZMQ
|
||||
qt_agrarian_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
||||
endif
|
||||
qt_agrarian_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
|
||||
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
qt_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
qt_agrarian_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX
|
||||
@@ -440,7 +430,7 @@ $(QT_QRC_LOCALE_CPP): $(QT_QRC_LOCALE) $(QT_QM)
|
||||
$(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
@rm $(@D)/temp_$(<F)
|
||||
|
||||
$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES) $(PROTOBUF_H)
|
||||
$(QT_QRC_CPP): $(QT_QRC) $(QT_FORMS_H) $(RES_ICONS) $(RES_IMAGES) $(RES_CSS) $(RES_MOVIES)
|
||||
@test -f $(RCC)
|
||||
$(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name agrarian $< | \
|
||||
$(SED) -e '/^\*\*.*Created:/d' -e '/^\*\*.*by:/d' > $@
|
||||
|
||||
@@ -16,7 +16,7 @@ TEST_QT_H = \
|
||||
qt/test/paymentservertests.h
|
||||
|
||||
qt_test_test_agrarian_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||
$(QT_INCLUDES) $(QT_TEST_INCLUDES) $(PROTOBUF_CFLAGS)
|
||||
$(QT_INCLUDES) $(QT_TEST_INCLUDES)
|
||||
|
||||
qt_test_test_agrarian_qt_SOURCES = \
|
||||
qt/test/test_main.cpp \
|
||||
@@ -38,7 +38,7 @@ qt_test_test_agrarian_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
||||
endif
|
||||
qt_test_test_agrarian_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBBITCOIN_ZEROCOIN) $(LIBLEVELDB) \
|
||||
$(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
|
||||
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(QR_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||
qt_test_test_agrarian_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
qt_test_test_agrarian_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2026 Agrarian Developers
|
||||
// Copyright (c) 2022-2036 Agrarian Developers
|
||||
#include <windows.h> // needed for VERSIONINFO
|
||||
#include "clientversion.h" // holds the needed client version information
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2015 The Bitcoin developers
|
||||
// Copyright (c) 2009-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2026 Agrarian Developers
|
||||
// Copyright (c) 2022-2036 Agrarian Developers
|
||||
|
||||
#include <windows.h> // needed for VERSIONINFO
|
||||
#include "clientversion.h" // holds the needed client version information
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2026 Agrarian Developers
|
||||
// Copyright (c) 2022-2036 Agrarian Developers
|
||||
|
||||
#include <windows.h> // needed for VERSIONINFO
|
||||
#include "clientversion.h" // holds the needed client version information
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
+10
-7
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// 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 =
|
||||
boost::assign::map_list_of
|
||||
(0, uint256("000003452250d81f8b07d42e127c92729802e3c48f3c7b9834256fd0fb9a0c2e"));
|
||||
static const Checkpoints::CCheckpointData data = {
|
||||
static const Checkpoints::CCheckpointData mainCheckpointData = {
|
||||
&mapCheckpoints,
|
||||
1643790201, // * UNIX timestamp of last checkpoint block
|
||||
0, // * total number of transactions between genesis and last checkpoint
|
||||
@@ -201,8 +201,11 @@ public:
|
||||
assert(hashGenesisBlock == uint256("0x000003452250d81f8b07d42e127c92729802e3c48f3c7b9834256fd0fb9a0c2e"));
|
||||
assert(genesis.hashMerkleRoot == uint256("0x3bb054bb772e1bee1547d4b0e06c0ce34d636ee1daf56b37f1a017ce8136da00"));
|
||||
|
||||
vSeeds.push_back(CDNSSeedData("pacificao.com", "agr1.pacificao.com"));
|
||||
vSeeds.push_back(CDNSSeedData("n2.pacificao.com", "agr2.pacificao.com"));
|
||||
vSeeds.push_back(CDNSSeedData("node1.agrariancoin.com", "node1.agrariancoin.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[SCRIPT_ADDRESS] = std::vector<unsigned char>(1, 24);
|
||||
@@ -214,7 +217,7 @@ public:
|
||||
|
||||
convertSeed6(vFixedSeeds, pnSeed6_main, ARRAYLEN(pnSeed6_main));
|
||||
|
||||
fMiningRequiresPeers = true;
|
||||
fMiningRequiresPeers = false;
|
||||
fAllowMinDifficultyBlocks = false;
|
||||
fDefaultConsistencyChecks = false;
|
||||
fRequireStandard = true;
|
||||
@@ -252,7 +255,7 @@ public:
|
||||
|
||||
const Checkpoints::CCheckpointData& Checkpoints() const
|
||||
{
|
||||
return data;
|
||||
return mainCheckpointData;
|
||||
}
|
||||
};
|
||||
static CMainParams mainParams;
|
||||
@@ -459,7 +462,7 @@ public:
|
||||
const Checkpoints::CCheckpointData& Checkpoints() const
|
||||
{
|
||||
// UnitTest share the same checkpoints as MAIN
|
||||
return data;
|
||||
return mainCheckpointData;
|
||||
}
|
||||
|
||||
//! Published setters to allow changing values in unit test cases
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
#define DO_STRINGIZE(X) #X
|
||||
|
||||
//! 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.
|
||||
|
||||
@@ -70,8 +70,8 @@
|
||||
/* Define this symbol if the consensus lib has been built */
|
||||
#undef HAVE_CONSENSUS_LIB
|
||||
|
||||
/* define if the compiler supports basic C++11 syntax */
|
||||
#undef HAVE_CXX11
|
||||
/* define if the compiler supports basic C++17 syntax */
|
||||
#undef HAVE_CXX17
|
||||
|
||||
/* Define to 1 if you have the declaration of `be16toh', and to 0 if you
|
||||
don't. */
|
||||
@@ -366,6 +366,9 @@
|
||||
/* Define this symbol if qt plugins are static */
|
||||
#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
|
||||
required in a freestanding environment). This macro is provided for
|
||||
backward compatibility; new code need not use it. */
|
||||
|
||||
+31
-25
@@ -53,6 +53,8 @@
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
#ifndef WIN32
|
||||
#include <signal.h>
|
||||
#endif
|
||||
@@ -614,7 +616,7 @@ std::string LicenseInfo()
|
||||
"\n" +
|
||||
FormatParagraph(strprintf(_("Copyright (C) 2015-%i The PIVX Core Developers"), COPYRIGHT_YEAR)) + "\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" +
|
||||
FormatParagraph(_("This is experimental software.")) + "\n" +
|
||||
"\n" +
|
||||
@@ -682,12 +684,12 @@ void ThreadImport(std::vector<boost::filesystem::path> vImportFiles)
|
||||
}
|
||||
|
||||
// hardcoded $DATADIR/bootstrap.dat
|
||||
filesystem::path pathBootstrap = GetDataDir() / "bootstrap.dat";
|
||||
if (filesystem::exists(pathBootstrap)) {
|
||||
boost::filesystem::path pathBootstrap = GetDataDir() / "bootstrap.dat";
|
||||
if (boost::filesystem::exists(pathBootstrap)) {
|
||||
FILE* file = fopen(pathBootstrap.string().c_str(), "rb");
|
||||
if (file) {
|
||||
CImportingNow imp;
|
||||
filesystem::path pathBootstrapOld = GetDataDir() / "bootstrap.dat.old";
|
||||
boost::filesystem::path pathBootstrapOld = GetDataDir() / "bootstrap.dat.old";
|
||||
LogPrintf("Importing bootstrap.dat...\n");
|
||||
LoadExternalBlockFile(file);
|
||||
RenameOver(pathBootstrap, pathBootstrapOld);
|
||||
@@ -1055,7 +1057,11 @@ bool AppInit2()
|
||||
ShrinkDebugFile();
|
||||
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);
|
||||
#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));
|
||||
#endif
|
||||
#ifdef ENABLE_WALLET
|
||||
LogPrintf("Using BerkeleyDB version %s\n", DbEnv::version(0, 0, 0));
|
||||
#endif
|
||||
@@ -1099,15 +1105,15 @@ bool AppInit2()
|
||||
// ********************************************************* Step 5: Backup wallet and verify wallet database integrity
|
||||
#ifdef ENABLE_WALLET
|
||||
if (!fDisableWallet) {
|
||||
filesystem::path backupDir = GetDataDir() / "backups";
|
||||
if (!filesystem::exists(backupDir)) {
|
||||
boost::filesystem::path backupDir = GetDataDir() / "backups";
|
||||
if (!boost::filesystem::exists(backupDir)) {
|
||||
// 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 = std::max(0, std::min(10, nWalletBackups));
|
||||
if (nWalletBackups > 0) {
|
||||
if (filesystem::exists(backupDir)) {
|
||||
if (boost::filesystem::exists(backupDir)) {
|
||||
// Create backup of the wallet
|
||||
std::string dateTimeStr = DateTimeStrFormat(".%Y-%m-%d-%H-%M", GetTime());
|
||||
std::string backupPathStr = backupDir.string();
|
||||
@@ -1170,30 +1176,30 @@ bool AppInit2()
|
||||
if (GetBoolArg("-resync", false)) {
|
||||
uiInterface.InitMessage(_("Preparing for resync..."));
|
||||
// Delete the local blockchain folders to force a resync from scratch to get a consitent blockchain-state
|
||||
filesystem::path blocksDir = GetDataDir() / "blocks";
|
||||
filesystem::path chainstateDir = GetDataDir() / "chainstate";
|
||||
filesystem::path sporksDir = GetDataDir() / "sporks";
|
||||
filesystem::path zerocoinDir = GetDataDir() / "zerocoin";
|
||||
boost::filesystem::path blocksDir = GetDataDir() / "blocks";
|
||||
boost::filesystem::path chainstateDir = GetDataDir() / "chainstate";
|
||||
boost::filesystem::path sporksDir = GetDataDir() / "sporks";
|
||||
boost::filesystem::path zerocoinDir = GetDataDir() / "zerocoin";
|
||||
|
||||
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
|
||||
try {
|
||||
if (filesystem::exists(blocksDir)){
|
||||
if (boost::filesystem::exists(blocksDir)){
|
||||
boost::filesystem::remove_all(blocksDir);
|
||||
LogPrintf("-resync: folder deleted: %s\n", blocksDir.string().c_str());
|
||||
}
|
||||
|
||||
if (filesystem::exists(chainstateDir)){
|
||||
if (boost::filesystem::exists(chainstateDir)){
|
||||
boost::filesystem::remove_all(chainstateDir);
|
||||
LogPrintf("-resync: folder deleted: %s\n", chainstateDir.string().c_str());
|
||||
}
|
||||
|
||||
if (filesystem::exists(sporksDir)){
|
||||
if (boost::filesystem::exists(sporksDir)){
|
||||
boost::filesystem::remove_all(sporksDir);
|
||||
LogPrintf("-resync: folder deleted: %s\n", sporksDir.string().c_str());
|
||||
}
|
||||
|
||||
if (filesystem::exists(zerocoinDir)){
|
||||
if (boost::filesystem::exists(zerocoinDir)){
|
||||
boost::filesystem::remove_all(zerocoinDir);
|
||||
LogPrintf("-resync: folder deleted: %s\n", zerocoinDir.string().c_str());
|
||||
}
|
||||
@@ -1230,7 +1236,7 @@ bool AppInit2()
|
||||
return false;
|
||||
}
|
||||
|
||||
if (filesystem::exists(GetDataDir() / strWalletFile)) {
|
||||
if (boost::filesystem::exists(GetDataDir() / strWalletFile)) {
|
||||
CDBEnv::VerifyResult r = bitdb.Verify(strWalletFile, CWalletDB::Recover);
|
||||
if (r == CDBEnv::RECOVER_OK) {
|
||||
string msg = strprintf(_("Warning: wallet.dat corrupt, data salvaged!"
|
||||
@@ -1394,19 +1400,19 @@ bool AppInit2()
|
||||
fReindex = GetBoolArg("-reindex", false);
|
||||
|
||||
// Upgrading to 0.8; hard-link the old blknnnn.dat files into /blocks/
|
||||
filesystem::path blocksDir = GetDataDir() / "blocks";
|
||||
if (!filesystem::exists(blocksDir)) {
|
||||
filesystem::create_directories(blocksDir);
|
||||
boost::filesystem::path blocksDir = GetDataDir() / "blocks";
|
||||
if (!boost::filesystem::exists(blocksDir)) {
|
||||
boost::filesystem::create_directories(blocksDir);
|
||||
bool linked = false;
|
||||
for (unsigned int i = 1; i < 10000; i++) {
|
||||
filesystem::path source = GetDataDir() / strprintf("blk%04u.dat", i);
|
||||
if (!filesystem::exists(source)) break;
|
||||
filesystem::path dest = blocksDir / strprintf("blk%05u.dat", i - 1);
|
||||
boost::filesystem::path source = GetDataDir() / strprintf("blk%04u.dat", i);
|
||||
if (!boost::filesystem::exists(source)) break;
|
||||
boost::filesystem::path dest = blocksDir / strprintf("blk%05u.dat", i - 1);
|
||||
try {
|
||||
filesystem::create_hard_link(source, dest);
|
||||
boost::filesystem::create_hard_link(source, dest);
|
||||
LogPrintf("Hardlinked %s -> %s\n", source.string(), dest.string());
|
||||
linked = true;
|
||||
} catch (filesystem::filesystem_error& e) {
|
||||
} catch (boost::filesystem::filesystem_error& e) {
|
||||
// Note: hardlink creation failing is not a disaster, it just means
|
||||
// blocks will get re-downloaded from peers.
|
||||
LogPrintf("Error hardlinking blk%04u.dat : %s\n", i, e.what());
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// Copyright (c) 2012-2013 The PPCoin 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// Copyright (c) 2012-2013 The PPCoin 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
#ifndef AGRARIAN_BITCOIN_KERNEL_H
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// 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)
|
||||
{
|
||||
uint64_t nFreeBytesAvailable = filesystem::space(GetDataDir()).available;
|
||||
uint64_t nFreeBytesAvailable = boost::filesystem::space(GetDataDir()).available;
|
||||
|
||||
// Check for nMinDiskSpace bytes (currently 50MB)
|
||||
if (nFreeBytesAvailable < nMinDiskSpace + nAdditionalBytes)
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
+49
-2
@@ -240,7 +240,7 @@ void CMasternodeSync::Process()
|
||||
/*
|
||||
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();
|
||||
} else
|
||||
return;
|
||||
@@ -261,6 +261,49 @@ void CMasternodeSync::Process()
|
||||
if (Params().NetworkID() != CBaseChainParams::REGTEST &&
|
||||
!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);
|
||||
if (!lockRecv) return;
|
||||
|
||||
@@ -284,11 +327,15 @@ void CMasternodeSync::Process()
|
||||
|
||||
//set to synced
|
||||
if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) {
|
||||
if (RequestedMasternodeAttempt >= MASTERNODE_SYNC_THRESHOLD) {
|
||||
GetNextAsset();
|
||||
return;
|
||||
}
|
||||
|
||||
if (pnode->HasFulfilledRequest("getspork")) continue;
|
||||
pnode->FulfilledRequest("getspork");
|
||||
|
||||
pnode->PushMessage("getsporks"); //get current network sporks
|
||||
if (RequestedMasternodeAttempt >= 2) GetNextAsset();
|
||||
RequestedMasternodeAttempt++;
|
||||
|
||||
return;
|
||||
|
||||
+7
-3
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "amount.h"
|
||||
#include "hash.h"
|
||||
#include "init.h"
|
||||
#include "main.h"
|
||||
#include "masternode-sync.h"
|
||||
#include "net.h"
|
||||
@@ -634,7 +635,7 @@ void BitcoinMiner(CWallet* pwallet, bool fProofOfStake)
|
||||
CReserveKey reservekey(pwallet);
|
||||
unsigned int nExtraNonce = 0;
|
||||
bool fLastLoopOrphan = false;
|
||||
while (fGenerateBitcoins || fProofOfStake) {
|
||||
while ((fGenerateBitcoins || fProofOfStake) && !ShutdownRequested()) {
|
||||
if (fProofOfStake) {
|
||||
//control the amount of times the client will check for mintable coins
|
||||
if ((GetTime() - nMintableLastCheck > 5 * 60)) // 5 minute check time
|
||||
@@ -648,7 +649,7 @@ void BitcoinMiner(CWallet* pwallet, bool fProofOfStake)
|
||||
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;
|
||||
// Do a separate 1 minute check here to ensure fMintableCoins is updated
|
||||
if (!fMintableCoins) {
|
||||
@@ -662,6 +663,8 @@ void BitcoinMiner(CWallet* pwallet, bool fProofOfStake)
|
||||
if (!fGenerateBitcoins && !fProofOfStake)
|
||||
continue;
|
||||
}
|
||||
if (ShutdownRequested())
|
||||
break;
|
||||
|
||||
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) {
|
||||
minerThreads->interrupt_all();
|
||||
minerThreads->join_all();
|
||||
delete minerThreads;
|
||||
minerThreads = nullptr;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||
// Copyright (c) 2009-2014 The Bitcoin 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
#ifndef AGRARIAN_BITCOIN_MINER_H
|
||||
|
||||
@@ -1144,7 +1144,12 @@ void ThreadMapPort()
|
||||
struct IGDdatas data;
|
||||
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));
|
||||
#endif
|
||||
if (r == 1) {
|
||||
if (fDiscover) {
|
||||
char externalIPAddress[40];
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
||||
// Copyright (c) 2014-2015 The Dash 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
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
#ifndef AGRARIAN_BITCOIN_POW_H
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user