Continue rebasing LBRY on to bitcoin upstream.
Upgrade Windows build to 64 bit for proper C++11 support. Set required mingw profile in Windows build env. Remove dead OpenSSL usage. Update reproducible build. Rename lbrycrd binaries. Add man pages. Update all build dependencies in reproducible_build and eliminate usage of lbrycrd_dependencies repo. Update ICU dependency version in Windows build. Additional branding/renaming updates. Temporarily remove code formatting, since it can't work sanely for this kind of merge. Temporarily add clean for linux/osx.
This commit is contained in:
parent
018458edbe
commit
49c82c9dd0
118 changed files with 3537 additions and 3198 deletions
18
.gitignore
vendored
18
.gitignore
vendored
|
@ -1,13 +1,14 @@
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
|
|
||||||
*.exe
|
*.exe
|
||||||
src/bitcoin
|
src/lbrycrd
|
||||||
src/bitcoind
|
src/lbrycrdd
|
||||||
src/bitcoin-cli
|
src/lbrycrd-cli
|
||||||
src/bitcoin-tx
|
src/lbrycrd-tx
|
||||||
src/test/test_bitcoin
|
src/test/test_lbrycrd
|
||||||
src/test/test_bitcoin_fuzzy
|
src/test/test_lbrycrd_fuzzy
|
||||||
src/qt/test/test_bitcoin-qt
|
src/qt/lbrycrd-qt
|
||||||
|
src/qt/test/test_lbrycrd-qt
|
||||||
|
|
||||||
# autoreconf
|
# autoreconf
|
||||||
Makefile.in
|
Makefile.in
|
||||||
|
@ -61,7 +62,6 @@ src/qt/bitcoin-qt.includes
|
||||||
*.pyc
|
*.pyc
|
||||||
*.o
|
*.o
|
||||||
*.o-*
|
*.o-*
|
||||||
*.patch
|
|
||||||
*.a
|
*.a
|
||||||
*.pb.cc
|
*.pb.cc
|
||||||
*.pb.h
|
*.pb.h
|
||||||
|
@ -118,4 +118,4 @@ libbitcoinconsensus.pc
|
||||||
contrib/devtools/split-debug.sh
|
contrib/devtools/split-debug.sh
|
||||||
|
|
||||||
.idea
|
.idea
|
||||||
cmake-build-*/
|
cmake-build-*/
|
||||||
|
|
222
.travis.yml
222
.travis.yml
|
@ -1,164 +1,70 @@
|
||||||
dist: trusty
|
matrix:
|
||||||
os: linux
|
include:
|
||||||
language: minimal
|
- os: linux
|
||||||
|
sudo: required
|
||||||
|
dist: xenial
|
||||||
|
language: c
|
||||||
|
env: TARGET=linux
|
||||||
|
- os: linux
|
||||||
|
sudo: required
|
||||||
|
dist: xenial
|
||||||
|
language: c
|
||||||
|
env: TARGET=windows
|
||||||
|
- os: osx
|
||||||
|
language: c
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: TARGET=osx
|
||||||
cache:
|
cache:
|
||||||
|
apt: true
|
||||||
ccache: true
|
ccache: true
|
||||||
directories:
|
directories:
|
||||||
|
- build
|
||||||
- depends/built
|
- depends/built
|
||||||
- depends/sdk-sources
|
git:
|
||||||
- $HOME/.ccache
|
depth: false
|
||||||
stages:
|
|
||||||
- lint
|
|
||||||
- test
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- MAKEJOBS=-j3
|
|
||||||
- RUN_TESTS=false
|
|
||||||
- RUN_BENCH=false # Set to true for any one job that has debug enabled, to quickly check bench is not crashing or hitting assertions
|
|
||||||
- DOCKER_NAME_TAG=ubuntu:18.04
|
|
||||||
- LC_ALL=C.UTF-8
|
|
||||||
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
|
|
||||||
- CCACHE_SIZE=100M
|
|
||||||
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
|
||||||
- CCACHE_COMPRESS=1
|
|
||||||
- CCACHE_DIR=$HOME/.ccache
|
|
||||||
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
|
|
||||||
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
|
|
||||||
- WINEDEBUG=fixme-all
|
|
||||||
- DOCKER_PACKAGES="build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
|
|
||||||
before_install:
|
before_install:
|
||||||
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
|
- date +%s > "${TRAVIS_BUILD_DIR}/start_time"
|
||||||
- BEGIN_FOLD () { echo ""; CURRENT_FOLD_NAME=$1; echo "travis_fold:start:${CURRENT_FOLD_NAME}"; }
|
- ls -lh build
|
||||||
- END_FOLD () { RET=$?; echo "travis_fold:end:${CURRENT_FOLD_NAME}"; return $RET; }
|
- du -h -d 2 build
|
||||||
install:
|
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install ccache; fi
|
||||||
- travis_retry docker pull $DOCKER_NAME_TAG
|
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then export PATH="/usr/local/opt/ccache/libexec:$PATH"; fi
|
||||||
- env | grep -E '^(CCACHE_|WINEDEBUG|LC_ALL|BOOST_TEST_RANDOM|CONFIG_SHELL)' | tee /tmp/env
|
install: true
|
||||||
- if [[ $HOST = *-mingw32 ]]; then DOCKER_ADMIN="--cap-add SYS_ADMIN"; fi
|
|
||||||
- DOCKER_ID=$(docker run $DOCKER_ADMIN -idt --mount type=bind,src=$TRAVIS_BUILD_DIR,dst=$TRAVIS_BUILD_DIR --mount type=bind,src=$CCACHE_DIR,dst=$CCACHE_DIR -w $TRAVIS_BUILD_DIR --env-file /tmp/env $DOCKER_NAME_TAG)
|
|
||||||
- DOCKER_EXEC () { docker exec $DOCKER_ID bash -c "cd $PWD && $*"; }
|
|
||||||
- if [ -n "$DPKG_ADD_ARCH" ]; then DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
|
|
||||||
- travis_retry DOCKER_EXEC apt-get update
|
|
||||||
- travis_retry DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES $DOCKER_PACKAGES
|
|
||||||
before_script:
|
|
||||||
- DOCKER_EXEC echo \> \$HOME/.bitcoin # Make sure default datadir does not exist and is never read by creating a dummy file
|
|
||||||
- mkdir -p depends/SDKs depends/sdk-sources
|
|
||||||
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
|
||||||
- if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
|
||||||
- if [[ $HOST = *-mingw32 ]]; then DOCKER_EXEC update-alternatives --set $HOST-g++ \$\(which $HOST-g++-posix\); fi
|
|
||||||
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC CONFIG_SHELL= make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS; fi
|
|
||||||
script:
|
script:
|
||||||
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
|
- mkdir -p "dist/${TRAVIS_BRANCH}"
|
||||||
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
|
- if [[ "${TARGET}" == "osx" ]]; then ./reproducible_build.sh -t -o -c -r; fi
|
||||||
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
|
- if [[ "${TARGET}" == "linux" ]]; then ./reproducible_build.sh -t -o -c -r; fi
|
||||||
- if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC ccache --max-size=$CCACHE_SIZE; fi
|
- if [[ "${TARGET}" == "windows" ]]; then ./packaging/build_windows.sh; fi
|
||||||
- BEGIN_FOLD autogen; test -n "$CONFIG_SHELL" && DOCKER_EXEC "$CONFIG_SHELL" -c "./autogen.sh" || DOCKER_EXEC ./autogen.sh; END_FOLD
|
- if [[ "${TARGET}" == "osx" ]]; then zip -j "dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}.zip" src/lbrycrdd src/lbrycrd-cli src/lbrycrd-tx; fi
|
||||||
- mkdir build && cd build
|
- if [[ "${TARGET}" == "linux" ]]; then zip -j "dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}.zip" src/lbrycrdd src/lbrycrd-cli src/lbrycrd-tx; fi
|
||||||
- BEGIN_FOLD configure; DOCKER_EXEC ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false); END_FOLD
|
- if [[ "${TARGET}" == "windows" ]]; then zip -j "dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}.zip" src/lbrycrdd.exe src/lbrycrd-cli.exe src/lbrycrd-tx.exe; fi
|
||||||
- BEGIN_FOLD distdir; DOCKER_EXEC make distdir VERSION=$HOST; END_FOLD
|
- if [[ "${TARGET}" == "osx" ]]; then shasum -a 256 dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}.zip > dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}-sha256.txt; fi
|
||||||
- cd bitcoin-$HOST
|
- if [[ "${TARGET}" == "linux" ]]; then sha256sum -b dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}.zip > dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}-sha256.txt; fi
|
||||||
- BEGIN_FOLD configure; DOCKER_EXEC ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false); END_FOLD
|
- if [[ "${TARGET}" == "windows" ]]; then sha256sum -b dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}.zip > dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}-sha256.txt; fi
|
||||||
- BEGIN_FOLD build; DOCKER_EXEC make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && DOCKER_EXEC make $GOAL V=1 ; false ); END_FOLD
|
- cat dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}-sha256.txt
|
||||||
- if [ "$RUN_TESTS" = "true" ]; then BEGIN_FOLD unit-tests; DOCKER_EXEC LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib make $MAKEJOBS check VERBOSE=1; END_FOLD; fi
|
before_cache:
|
||||||
- if [ "$RUN_BENCH" = "true" ]; then BEGIN_FOLD bench; DOCKER_EXEC LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib $OUTDIR/bin/bench_bitcoin -scaling=0.001 ; END_FOLD; fi
|
- ls -lh build
|
||||||
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude feature_pruning,feature_dbcrash"; fi
|
- du -h -d 2 build
|
||||||
- if [ "$RUN_TESTS" = "true" ]; then BEGIN_FOLD functional-tests; DOCKER_EXEC test/functional/test_runner.py --combinedlogslen=4000 --coverage --quiet --failfast ${extended}; END_FOLD; fi
|
deploy:
|
||||||
after_script:
|
- provider: releases
|
||||||
- echo $TRAVIS_COMMIT_RANGE
|
draft: true
|
||||||
- echo $TRAVIS_COMMIT_LOG
|
file: "dist/${TRAVIS_BRANCH}/lbrycrd-${TARGET}.zip"
|
||||||
jobs:
|
name: "${TRAVIS_BRANCH}"
|
||||||
include:
|
skip_cleanup: true
|
||||||
# ARM
|
target_commitish: $TRAVIS_COMMIT
|
||||||
- stage: test
|
tag_name: $TRAVIS_TAG
|
||||||
env: >-
|
on:
|
||||||
HOST=arm-linux-gnueabihf
|
tags: true
|
||||||
PACKAGES="g++-arm-linux-gnueabihf"
|
api_key:
|
||||||
DEP_OPTS="NO_QT=1"
|
secure: "Ni5WZNR5CefWXpyDUQLMQbQ2LH4Iot+0SqIoM9c4maW06al1M8vu57vWuj2cESsW7JsaBehCE45Cwmo5kWyEjAiZY8sIMmvixkMP/8uPWuLgNmnIbm7U+d0j652DmZshDYtt8EomqV2RhAx/rmBnzGkruLOw9WTp9ZdBN3WbTt/IpZ2gMgVbGWYGOx+uRw7/yGw8m4gShQheto/dycbyyR3XV2WP9wuLmNYkcQ6JumSoQdDWXcvVfbCwylGq2sLDKwhvfTr4iwYyYsWdmhfdEQl0WcIv5C8xgdiY2vzhi2LmLqFbS/fvKNC26Tfo4bOHFG/eOnvqc+yyEB8B/xqW9Gs+A0TUh/3N30vHYZGcpiDU35DwAN5bZ1+s+mr/ZrNzBJ5BgT8io3g0Ko8gykbDvFQVpg7kxFsqA1YCikEpG86lVGk6clTa5guJvAHse+DfnbWO1nfDxYQXW0md861m0txk8RpTC/TVNyH/lL/vsS7LB67EHhRdZY+O1+5sUGMdtvvhMoxJYCwQGpLkh43KRsKynkMUR94w2O9hc8cknXdV3wrndVz00XNdcur6y4D7HTll1tBrF68CA2yKUSY5hsjtPmdlN+DW8ou/rJiKOpQZ/Xzp69AQEheOFfDPItxQRYxWj0dMOk8eszf0wFvi1N7J/hT/IHnuX5ITfa/T4NE="
|
||||||
GOAL="install"
|
- provider: s3
|
||||||
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
access_key_id: AKIAICKFHNTR5RITASAQ
|
||||||
# Win32
|
secret_access_key:
|
||||||
- stage: test
|
secure: Qfgs8vGnEUvgiZNP2S9zY8qHEzaDOceF/XTv32jRBOISWfTqOTE56DZbOp8WKHPAqn0dx04jKA1NfV9f06sXU1NVbiJ2VYISo6XAk0n3RBJL3/mhNxvut/zM2DHkFPljWTkWEColS0ZyA3m4eUyJvAw/i+mOBT/zDD/oIlS5Uo5l/x3LmF9fYBuei0ucwSQeNOr2wCMIl+pXrIU7B3lEzXh1asayW6A9y7DOqMLnrSQ7TLlSssbnhuhDVpFx0xxX/U2NPraotbGKdo3wwMbms/lluBe60I/LsDNp9/SZXMDXh2YLGUImr97octwpdzIMjF+kU7QAZJzM7grz8PU9+MQh2V5sn6Xsww2x4PdkmHGz/2FMzhrCrlPf5JCaPBH49G+w4/29HYmMrlimOOVx4qXCpQ/XtWWne/d6MF0qqT6JhdPuD9ohmTpxcHRkCe2fxUw6Yn3dj+/+YoCywAcwcBm5jLpAotmWoCmmcnm9rvB7bIuPPZAjJUZViCnyvwY4Tj3Fb+sOuK4b/O5D2+cuS+WgQRkN/RspYlXrXTIh8Efv/yhW5L9WdzG1OExJDw2hX5VTccRRgIKZxZp80U2eYqn2M07+1nU+ShX4kgiSon46k5cfacLgzLKWEyCxWSSTbsYcwRxvDEjtYy4wxAYx8+J3dgQPs/opDXoQTJMjud0=
|
||||||
env: >-
|
bucket: build.lbry.io
|
||||||
HOST=i686-w64-mingw32
|
upload-dir: lbrycrd
|
||||||
DPKG_ADD_ARCH="i386"
|
acl: public_read
|
||||||
DEP_OPTS="NO_QT=1"
|
local_dir: dist
|
||||||
PACKAGES="python3 nsis g++-mingw-w64-i686 wine-binfmt wine32"
|
skip_cleanup: true
|
||||||
RUN_TESTS=true
|
on:
|
||||||
GOAL="install"
|
repo: lbryio/lbrycrd
|
||||||
BITCOIN_CONFIG="--enable-reduce-exports"
|
all_branches: true
|
||||||
# Win64
|
|
||||||
- stage: test
|
|
||||||
env: >-
|
|
||||||
HOST=x86_64-w64-mingw32
|
|
||||||
DEP_OPTS="NO_QT=1"
|
|
||||||
PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64"
|
|
||||||
RUN_TESTS=true
|
|
||||||
GOAL="install"
|
|
||||||
BITCOIN_CONFIG="--enable-reduce-exports"
|
|
||||||
# 32-bit + dash
|
|
||||||
- stage: test
|
|
||||||
env: >-
|
|
||||||
HOST=i686-pc-linux-gnu
|
|
||||||
PACKAGES="g++-multilib python3-zmq"
|
|
||||||
DEP_OPTS="NO_QT=1"
|
|
||||||
RUN_TESTS=true
|
|
||||||
GOAL="install"
|
|
||||||
BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
|
|
||||||
CONFIG_SHELL="/bin/dash"
|
|
||||||
# x86_64 Linux (uses qt5 dev package instead of depends Qt to speed up build and avoid timeout)
|
|
||||||
- stage: test
|
|
||||||
env: >-
|
|
||||||
HOST=x86_64-unknown-linux-gnu
|
|
||||||
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev"
|
|
||||||
DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
|
|
||||||
RUN_TESTS=true
|
|
||||||
RUN_BENCH=true
|
|
||||||
GOAL="install"
|
|
||||||
BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\""
|
|
||||||
# x86_64 Linux (Qt5 & system libs)
|
|
||||||
- stage: test
|
|
||||||
env: >-
|
|
||||||
HOST=x86_64-unknown-linux-gnu
|
|
||||||
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev"
|
|
||||||
NO_DEPENDS=1
|
|
||||||
RUN_TESTS=true
|
|
||||||
GOAL="install"
|
|
||||||
BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER"
|
|
||||||
# x86_64 Linux, No wallet
|
|
||||||
- stage: test
|
|
||||||
env: >-
|
|
||||||
HOST=x86_64-unknown-linux-gnu
|
|
||||||
PACKAGES="python3"
|
|
||||||
DEP_OPTS="NO_WALLET=1"
|
|
||||||
RUN_TESTS=true
|
|
||||||
GOAL="install"
|
|
||||||
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
|
||||||
# Cross-Mac
|
|
||||||
- stage: test
|
|
||||||
env: >-
|
|
||||||
HOST=x86_64-apple-darwin14
|
|
||||||
PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git"
|
|
||||||
OSX_SDK=10.11
|
|
||||||
GOAL="all deploy"
|
|
||||||
BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --enable-werror"
|
|
||||||
- stage: lint
|
|
||||||
env:
|
|
||||||
cache: false
|
|
||||||
language: python
|
|
||||||
python: '3.6'
|
|
||||||
install:
|
|
||||||
- travis_retry pip install flake8==3.5.0
|
|
||||||
before_script:
|
|
||||||
- git fetch --unshallow
|
|
||||||
script:
|
|
||||||
- if [ "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then test/lint/commit-script-check.sh $TRAVIS_COMMIT_RANGE; fi
|
|
||||||
- test/lint/git-subtree-check.sh src/crypto/ctaes
|
|
||||||
- test/lint/git-subtree-check.sh src/secp256k1
|
|
||||||
- test/lint/git-subtree-check.sh src/univalue
|
|
||||||
- test/lint/git-subtree-check.sh src/leveldb
|
|
||||||
- test/lint/check-doc.py
|
|
||||||
- test/lint/check-rpc-mappings.py .
|
|
||||||
- test/lint/lint-all.sh
|
|
||||||
- if [ "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_EVENT_TYPE" = "cron" ]; then
|
|
||||||
while read LINE; do travis_retry gpg --keyserver hkp://subset.pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys &&
|
|
||||||
travis_wait 50 contrib/verify-commits/verify-commits.py;
|
|
||||||
fi
|
|
||||||
|
|
15
LICENSE
Normal file
15
LICENSE
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015-2019 LBRY Inc
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
||||||
|
following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -25,7 +25,7 @@ BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EX
|
||||||
empty :=
|
empty :=
|
||||||
space := $(empty) $(empty)
|
space := $(empty) $(empty)
|
||||||
|
|
||||||
OSX_APP=Bitcoin-Qt.app
|
OSX_APP=LBRYcrd-Qt.app
|
||||||
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
|
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
|
||||||
OSX_DMG = $(OSX_VOLNAME).dmg
|
OSX_DMG = $(OSX_VOLNAME).dmg
|
||||||
OSX_BACKGROUND_SVG=background.svg
|
OSX_BACKGROUND_SVG=background.svg
|
||||||
|
|
122
README.md
122
README.md
|
@ -1,76 +1,94 @@
|
||||||
Bitcoin Core integration/staging tree
|
# LBRYcrd - The LBRY blockchain
|
||||||
=====================================
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/bitcoin/bitcoin.svg?branch=master)](https://travis-ci.org/bitcoin/bitcoin)
|
![alt text](lbrycrdd_daemon_screenshot.png "lbrycrdd daemon screenshot")
|
||||||
|
|
||||||
https://bitcoincore.org
|
LBRYcrd uses a blockchain similar to bitcoin's to implement an index and payment system for content on the LBRY network. It is a fork of bitcoin core.
|
||||||
|
|
||||||
What is Bitcoin?
|
## Installation
|
||||||
----------------
|
|
||||||
|
|
||||||
Bitcoin is an experimental digital currency that enables instant payments to
|
Latest binaries are available from https://github.com/lbryio/lbrycrd/releases. There is no installation procedure, the binaries will be run as-is.
|
||||||
anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate
|
|
||||||
with no central authority: managing transactions and issuing money are carried
|
|
||||||
out collectively by the network. Bitcoin Core is the name of open source
|
|
||||||
software which enables the use of this currency.
|
|
||||||
|
|
||||||
For more information, as well as an immediately useable, binary version of
|
## Usage
|
||||||
the Bitcoin Core software, see https://bitcoincore.org/en/download/, or read the
|
|
||||||
[original whitepaper](https://bitcoincore.org/bitcoin.pdf).
|
|
||||||
|
|
||||||
License
|
The `lbrycrdd` executable will start a LBRYcrd node and connect you to the LBRYcrd network. Use the `lbrycrd-cli` executable
|
||||||
-------
|
to interact with lbrycrdd through the command line. Help pages for both executable are available through
|
||||||
|
the "--help" flag (e.g. `lbrycrd-cli --help`).
|
||||||
|
|
||||||
Bitcoin Core is released under the terms of the MIT license. See [COPYING](COPYING) for more
|
### Example Usage
|
||||||
information or see https://opensource.org/licenses/MIT.
|
|
||||||
|
|
||||||
Development Process
|
Run `./lbrycrdd -server -daemon` to start lbrycrdd in the background.
|
||||||
-------------------
|
|
||||||
|
Run `./lbrycrd-cli getinfo` to check for some basic information about your LBRYcrd node.
|
||||||
|
|
||||||
|
Run `./lbrycrd-cli help` to get a list of all commands that you can run. To get help on specific commands run `./lbrycrd-cli [command_name] help`
|
||||||
|
|
||||||
|
### Data directory
|
||||||
|
|
||||||
|
Lbrycrdd will use the below default data directories:
|
||||||
|
|
||||||
|
Windows < Vista: C:\Documents and Settings\Username\Application Data\lbrycrd
|
||||||
|
|
||||||
|
Windows >= Vista: C:\Users\Username\AppData\Roaming\lbrycrd
|
||||||
|
|
||||||
|
Mac: ~/Library/Application Support/lbrycrd
|
||||||
|
|
||||||
|
Unix: ~/.lbrycrd
|
||||||
|
|
||||||
|
The data directory contains various things such as your default wallet (wallet.dat), debug logs (debug.log), and blockchain data. You can optionally create a configuration file lbrycrd.conf in the default data directory which will be used by default when running lbrycrdd.
|
||||||
|
|
||||||
|
For a list of configuration parameters, run `./lbrycrdd --help`. Below is a sample lbrycrd.conf to enable JSON RPC server on lbrycrdd.
|
||||||
|
|
||||||
|
```
|
||||||
|
rpcuser=lbry
|
||||||
|
rpcpassword=xyz123456790
|
||||||
|
daemon=1
|
||||||
|
server=1
|
||||||
|
txindex=1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running from Source
|
||||||
|
|
||||||
|
Run `./reproducible_build.sh -c -t`. This will build the binaries and put them into the `./src` directory.
|
||||||
|
|
||||||
|
If you encounter any errors, please check `doc/build-*.md` for further instructions. If you're still stuck, [create an issue](https://github.com/lbryio/lbrycrd/issues/new) with the output of that command, your system info, and any other information you think might be helpful.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions to this project are welcome, encouraged, and compensated. For more details, see [lbry.io/faq/contributing](https://lbry.io/faq/contributing)
|
||||||
|
|
||||||
|
The codebase is in C++03. C++11 is currently not supported but we will be migrating to it in the near future. Recommended GCC version is 4.8 or greater.
|
||||||
|
We follow the same coding guidelines as documented by Bitcoin Core, see [here](/doc/developer-notes.md). To run an automated code formatting check, try:
|
||||||
|
`git diff -U0 master -- '*.h' '*.cpp' | ./contrib/devtools/clang-format-diff.py -p1`. This will check any commits not on master for proper code formatting.
|
||||||
|
We try to avoid altering parts of the code that is inherited from Bitcoin Core unless absolutely necessary. This will make it easier to merge changes from Bitcoin Core. If commits are expected not to be merged upstream (i.e. we broke up a commit from Bitcoin Core in order to use a single feature in it), the commit message must contain the string "NOT FOR UPSTREAM MERGE".
|
||||||
|
|
||||||
The `master` branch is regularly built and tested, but is not guaranteed to be
|
The `master` branch is regularly built and tested, but is not guaranteed to be
|
||||||
completely stable. [Tags](https://github.com/bitcoin/bitcoin/tags) are created
|
completely stable. [Releases](https://github.com/lbryio/lbrycrd/releases) are created
|
||||||
regularly to indicate new official, stable release versions of Bitcoin Core.
|
regularly to indicate new official, stable release versions.
|
||||||
|
|
||||||
The contribution workflow is described in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
||||||
|
|
||||||
Testing
|
|
||||||
-------
|
|
||||||
|
|
||||||
Testing and code review is the bottleneck for development; we get more pull
|
Testing and code review is the bottleneck for development; we get more pull
|
||||||
requests than we can review and test on short notice. Please be patient and help out by testing
|
requests than we can review and test on short notice. Please be patient and help out by testing
|
||||||
other people's pull requests, and remember this is a security-critical project where any mistake might cost people
|
other people's pull requests, and remember this is a security-critical project where any mistake might cost people
|
||||||
lots of money.
|
lots of money. Developers are strongly encouraged to write [unit tests](/doc/unit-tests.md) for new code, and to
|
||||||
|
|
||||||
### Automated Testing
|
|
||||||
|
|
||||||
Developers are strongly encouraged to write [unit tests](src/test/README.md) for new code, and to
|
|
||||||
submit new unit tests for old code. Unit tests can be compiled and run
|
submit new unit tests for old code. Unit tests can be compiled and run
|
||||||
(assuming they weren't disabled in configure) with: `make check`. Further details on running
|
(assuming they weren't disabled in configure) with: `make check`
|
||||||
and extending unit tests can be found in [/src/test/README.md](/src/test/README.md).
|
|
||||||
|
|
||||||
There are also [regression and integration tests](/test), written
|
The Travis CI system makes sure that every pull request is built, and that unit and sanity tests are automatically run.
|
||||||
in Python, that are run automatically on the build server.
|
|
||||||
These tests can be run (if the [test dependencies](/test) are installed) with: `test/functional/test_runner.py`
|
|
||||||
|
|
||||||
The Travis CI system makes sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
|
### Testnet
|
||||||
|
|
||||||
### Manual Quality Assurance (QA) Testing
|
Testnet is maintained for testing purposes and can be accessed using the command `./lbrycrdd -testnet`. If you would like to obtain testnet credits, please contact brannon@lbry.io or grin@lbry.io.
|
||||||
|
|
||||||
Changes should be tested by somebody other than the developer who wrote the
|
## License
|
||||||
code. This is especially important for large or high-risk changes. It is useful
|
|
||||||
to add a test plan to the pull request description if testing the changes is
|
|
||||||
not straightforward.
|
|
||||||
|
|
||||||
Translations
|
This project is MIT licensed. For the full license, see [LICENSE](LICENSE).
|
||||||
------------
|
|
||||||
|
|
||||||
Changes to translations as well as new translations can be submitted to
|
## Security
|
||||||
[Bitcoin Core's Transifex page](https://www.transifex.com/projects/p/bitcoin/).
|
|
||||||
|
|
||||||
Translations are periodically pulled from Transifex and merged into the git repository. See the
|
We take security seriously. Please contact security@lbry.io regarding any security issues.
|
||||||
[translation process](doc/translation_process.md) for details on how this works.
|
Our PGP key is [here](https://keybase.io/lbry/key.asc) if you need it.
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
The primary contact for this project is [@BrannonKing](https://github.com/BrannonKing) (brannon@lbry.io)
|
||||||
|
|
||||||
**Important**: We do not accept translation changes as GitHub pull requests because the next
|
|
||||||
pull from Transifex would automatically overwrite them again.
|
|
||||||
|
|
||||||
Translators should also subscribe to the [mailing list](https://groups.google.com/forum/#!forum/bitcoin-translators).
|
|
||||||
|
|
120
build-aux/m4/ax_boost_locale.m4
Normal file
120
build-aux/m4/ax_boost_locale.m4
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
# ===========================================================================
|
||||||
|
# https://www.gnu.org/software/autoconf-archive/ax_boost_locale.html
|
||||||
|
# ===========================================================================
|
||||||
|
#
|
||||||
|
# SYNOPSIS
|
||||||
|
#
|
||||||
|
# AX_BOOST_LOCALE
|
||||||
|
#
|
||||||
|
# DESCRIPTION
|
||||||
|
#
|
||||||
|
# Test for System library from the Boost C++ libraries. The macro requires
|
||||||
|
# a preceding call to AX_BOOST_BASE. Further documentation is available at
|
||||||
|
# <http://randspringer.de/boost/index.html>.
|
||||||
|
#
|
||||||
|
# This macro calls:
|
||||||
|
#
|
||||||
|
# AC_SUBST(BOOST_LOCALE_LIB)
|
||||||
|
#
|
||||||
|
# And sets:
|
||||||
|
#
|
||||||
|
# HAVE_BOOST_LOCALE
|
||||||
|
#
|
||||||
|
# LICENSE
|
||||||
|
#
|
||||||
|
# Copyright (c) 2012 Xiyue Deng <manphiz@gmail.com>
|
||||||
|
#
|
||||||
|
# Copying and distribution of this file, with or without modification, are
|
||||||
|
# permitted in any medium without royalty provided the copyright notice
|
||||||
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
|
# warranty.
|
||||||
|
|
||||||
|
#serial 2
|
||||||
|
|
||||||
|
AC_DEFUN([AX_BOOST_LOCALE],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH([boost-locale],
|
||||||
|
AS_HELP_STRING([--with-boost-locale@<:@=special-lib@:>@],
|
||||||
|
[use the Locale library from boost - it is possible to specify a certain library for the linker
|
||||||
|
e.g. --with-boost-locale=boost_locale-gcc-mt ]),
|
||||||
|
[
|
||||||
|
if test "$withval" = "no"; then
|
||||||
|
want_boost="no"
|
||||||
|
elif test "$withval" = "yes"; then
|
||||||
|
want_boost="yes"
|
||||||
|
ax_boost_user_locale_lib=""
|
||||||
|
else
|
||||||
|
want_boost="yes"
|
||||||
|
ax_boost_user_locale_lib="$withval"
|
||||||
|
fi
|
||||||
|
],
|
||||||
|
[want_boost="yes"]
|
||||||
|
)
|
||||||
|
|
||||||
|
if test "x$want_boost" = "xyes"; then
|
||||||
|
AC_REQUIRE([AC_PROG_CC])
|
||||||
|
AC_REQUIRE([AC_CANONICAL_BUILD])
|
||||||
|
CPPFLAGS_SAVED="$CPPFLAGS"
|
||||||
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||||
|
export CPPFLAGS
|
||||||
|
|
||||||
|
LDFLAGS_SAVED="$LDFLAGS"
|
||||||
|
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
||||||
|
export LDFLAGS
|
||||||
|
|
||||||
|
AC_CACHE_CHECK(whether the Boost::Locale library is available,
|
||||||
|
ax_cv_boost_locale,
|
||||||
|
[AC_LANG_PUSH([C++])
|
||||||
|
CXXFLAGS_SAVE=$CXXFLAGS
|
||||||
|
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/locale.hpp>]],
|
||||||
|
[[boost::locale::generator gen;
|
||||||
|
std::locale::global(gen(""));]])],
|
||||||
|
ax_cv_boost_locale=yes, ax_cv_boost_locale=no)
|
||||||
|
CXXFLAGS=$CXXFLAGS_SAVE
|
||||||
|
AC_LANG_POP([C++])
|
||||||
|
])
|
||||||
|
if test "x$ax_cv_boost_locale" = "xyes"; then
|
||||||
|
AC_SUBST(BOOST_CPPFLAGS)
|
||||||
|
|
||||||
|
AC_DEFINE(HAVE_BOOST_LOCALE,,[define if the Boost::Locale library is available])
|
||||||
|
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
||||||
|
|
||||||
|
LDFLAGS_SAVE=$LDFLAGS
|
||||||
|
if test "x$ax_boost_user_locale_lib" = "x"; then
|
||||||
|
for libextension in `ls $BOOSTLIBDIR/libboost_locale*.so* $BOOSTLIBDIR/libboost_locale*.dylib* $BOOSTLIBDIR/libboost_locale*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_locale.*\)\.so.*$;\1;' -e 's;^lib\(boost_locale.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_locale.*\)\.a.*$;\1;'` ; do
|
||||||
|
ax_lib=${libextension}
|
||||||
|
AC_CHECK_LIB($ax_lib, exit,
|
||||||
|
[BOOST_LOCALE_LIB="-l$ax_lib"; AC_SUBST(BOOST_LOCALE_LIB) link_locale="yes"; break],
|
||||||
|
[link_locale="no"])
|
||||||
|
done
|
||||||
|
if test "x$link_locale" != "xyes"; then
|
||||||
|
for libextension in `ls $BOOSTLIBDIR/boost_locale*.dll* $BOOSTLIBDIR/boost_locale*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_locale.*\)\.dll.*$;\1;' -e 's;^\(boost_locale.*\)\.a.*$;\1;'` ; do
|
||||||
|
ax_lib=${libextension}
|
||||||
|
AC_CHECK_LIB($ax_lib, exit,
|
||||||
|
[BOOST_LOCALE_LIB="-l$ax_lib"; AC_SUBST(BOOST_LOCALE_LIB) link_locale="yes"; break],
|
||||||
|
[link_locale="no"])
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
for ax_lib in $ax_boost_user_locale_lib boost_locale-$ax_boost_user_locale_lib; do
|
||||||
|
AC_CHECK_LIB($ax_lib, exit,
|
||||||
|
[BOOST_LOCALE_LIB="-l$ax_lib"; AC_SUBST(BOOST_LOCALE_LIB) link_locale="yes"; break],
|
||||||
|
[link_locale="no"])
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test "x$ax_lib" = "x"; then
|
||||||
|
AC_MSG_ERROR(Could not find a version of the library!)
|
||||||
|
fi
|
||||||
|
if test "x$link_locale" = "xno"; then
|
||||||
|
AC_MSG_ERROR(Could not link against $ax_lib !)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||||
|
LDFLAGS="$LDFLAGS_SAVED"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
60
configure.ac
60
configure.ac
|
@ -7,17 +7,17 @@ define(_CLIENT_VERSION_BUILD, 0)
|
||||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||||
define(_COPYRIGHT_YEAR, 2018)
|
define(_COPYRIGHT_YEAR, 2018)
|
||||||
define(_COPYRIGHT_HOLDERS,[The %s developers])
|
define(_COPYRIGHT_HOLDERS,[The %s developers])
|
||||||
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
|
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[LBRYcrd Core]])
|
||||||
AC_INIT([Bitcoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/bitcoin/bitcoin/issues],[bitcoin],[https://bitcoincore.org/])
|
AC_INIT([LBRYcrd Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/bitcoin/bitcoin/issues],[bitcoin],[https://bitcoincore.org/])
|
||||||
AC_CONFIG_SRCDIR([src/validation.cpp])
|
AC_CONFIG_SRCDIR([src/validation.cpp])
|
||||||
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
|
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
AC_CONFIG_MACRO_DIR([build-aux/m4])
|
AC_CONFIG_MACRO_DIR([build-aux/m4])
|
||||||
|
|
||||||
BITCOIN_DAEMON_NAME=bitcoind
|
BITCOIN_DAEMON_NAME=lbrycrd
|
||||||
BITCOIN_GUI_NAME=bitcoin-qt
|
BITCOIN_GUI_NAME=lbrycrd-qt
|
||||||
BITCOIN_CLI_NAME=bitcoin-cli
|
BITCOIN_CLI_NAME=lbrycrd-cli
|
||||||
BITCOIN_TX_NAME=bitcoin-tx
|
BITCOIN_TX_NAME=lbrycrd-tx
|
||||||
|
|
||||||
dnl Unless the user specified ARFLAGS, force it to be cr
|
dnl Unless the user specified ARFLAGS, force it to be cr
|
||||||
AC_ARG_VAR(ARFLAGS, [Flags for the archiver, defaults to <cr> if not set])
|
AC_ARG_VAR(ARFLAGS, [Flags for the archiver, defaults to <cr> if not set])
|
||||||
|
@ -146,6 +146,12 @@ AC_ARG_WITH([qrencode],
|
||||||
[use_qr=$withval],
|
[use_qr=$withval],
|
||||||
[use_qr=auto])
|
[use_qr=auto])
|
||||||
|
|
||||||
|
AC_ARG_WITH([icu],
|
||||||
|
[AS_HELP_STRING([--with-icu],
|
||||||
|
[Required ICU root path])],
|
||||||
|
[ICU_PREFIX=$withval],
|
||||||
|
[ICU_PREFIX=auto])
|
||||||
|
|
||||||
AC_ARG_ENABLE([hardening],
|
AC_ARG_ENABLE([hardening],
|
||||||
[AS_HELP_STRING([--disable-hardening],
|
[AS_HELP_STRING([--disable-hardening],
|
||||||
[do not attempt to harden the resulting executables (default is to harden when possible)])],
|
[do not attempt to harden the resulting executables (default is to harden when possible)])],
|
||||||
|
@ -395,7 +401,7 @@ CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
|
||||||
|
|
||||||
AC_ARG_WITH([utils],
|
AC_ARG_WITH([utils],
|
||||||
[AS_HELP_STRING([--with-utils],
|
[AS_HELP_STRING([--with-utils],
|
||||||
[build bitcoin-cli bitcoin-tx (default=yes)])],
|
[build lbrycrd-cli lbrycrd-tx (default=yes)])],
|
||||||
[build_bitcoin_utils=$withval],
|
[build_bitcoin_utils=$withval],
|
||||||
[build_bitcoin_utils=yes])
|
[build_bitcoin_utils=yes])
|
||||||
|
|
||||||
|
@ -780,7 +786,7 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||||
)
|
)
|
||||||
|
|
||||||
TEMP_LDFLAGS="$LDFLAGS"
|
TEMP_LDFLAGS="$LDFLAGS"
|
||||||
LDFLAGS="$TEMP_LDFLAGS $PTHREAD_CFLAGS"
|
LDFLAGS="$TEMP_LDFLAGS $PTHREAD_LIBS"
|
||||||
AC_MSG_CHECKING([for thread_local support])
|
AC_MSG_CHECKING([for thread_local support])
|
||||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
@ -896,6 +902,7 @@ AX_BOOST_SYSTEM
|
||||||
AX_BOOST_FILESYSTEM
|
AX_BOOST_FILESYSTEM
|
||||||
AX_BOOST_THREAD
|
AX_BOOST_THREAD
|
||||||
AX_BOOST_CHRONO
|
AX_BOOST_CHRONO
|
||||||
|
AX_BOOST_LOCALE
|
||||||
|
|
||||||
dnl Boost 1.56 through 1.62 allow using std::atomic instead of its own atomic
|
dnl Boost 1.56 through 1.62 allow using std::atomic instead of its own atomic
|
||||||
dnl counter implementations. In 1.63 and later the std::atomic approach is default.
|
dnl counter implementations. In 1.63 and later the std::atomic approach is default.
|
||||||
|
@ -962,7 +969,7 @@ fi
|
||||||
|
|
||||||
if test x$use_boost = xyes; then
|
if test x$use_boost = xyes; then
|
||||||
|
|
||||||
BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
|
BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB $BOOST_LOCALE_LIB"
|
||||||
|
|
||||||
|
|
||||||
dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
|
dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
|
||||||
|
@ -1053,6 +1060,20 @@ fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AS_IF([test "x$ICU_PREFIX" != xauto], [
|
||||||
|
ICU_CPPFLAGS="-I$ICU_PREFIX/include"
|
||||||
|
ICU_LIBS="-L$ICU_PREFIX/lib -licui18n -licuuc -licudata -ldl"
|
||||||
|
# PKG_CONFIG_PATH="${ICU_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||||
|
# export PKG_CONFIG_PATH
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_MSG_NOTICE([Using ICU_CPPFLAGS $ICU_CPPFLAGS])
|
||||||
|
AC_MSG_NOTICE([Using ICU_LIBS $ICU_LIBS])
|
||||||
|
|
||||||
|
CPPFLAGS="$CPPFLAGS $ICU_CPPFLAGS"
|
||||||
|
ORIG_LDFLAGS=$LDFLAGS
|
||||||
|
LDFLAGS="$LDFLAGS $ICU_LIBS"
|
||||||
|
|
||||||
if test x$use_pkgconfig = xyes; then
|
if test x$use_pkgconfig = xyes; then
|
||||||
: dnl
|
: dnl
|
||||||
m4_ifdef(
|
m4_ifdef(
|
||||||
|
@ -1082,7 +1103,19 @@ if test x$use_pkgconfig = xyes; then
|
||||||
fi
|
fi
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
else
|
else # compiling on Window:
|
||||||
|
AC_MSG_NOTICE([Configuring for Windows])
|
||||||
|
|
||||||
|
CPPFLAGS="$CPPFLAGS -Ix86_64-w64-mingw32/include"
|
||||||
|
LDFLAGS="$LDFLAGS -Lx86_64-w64-mingw32/lib"
|
||||||
|
|
||||||
|
AC_CHECK_HEADER([unicode/errorcode.h],,AC_MSG_ERROR(libicu headers missing))
|
||||||
|
AC_CHECK_LIB([icudata], [main], ICU_LIBS=$ICU_LIBS,
|
||||||
|
AC_CHECK_LIB([icu18n], [main],ICU_LIBS=$ICU_LIBS, ICU_LIBS="-L$ICU_PREFIX/lib -lsicuio -lsicuin -lsiculx -lsicule -lsicuuc -lsicudt"))
|
||||||
|
AC_MSG_NOTICE([Using ICU_LIBS=$ICU_LIBS])
|
||||||
|
LDFLAGS="$ORIG_LDFLAGS $ICU_LIBS"
|
||||||
|
AC_CHECK_LIB([sicudt], [main], ICU_LIBS=$ICU_LIBS, AC_MSG_ERROR(icu libraries missing))
|
||||||
|
|
||||||
AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
|
AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
|
||||||
AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
|
AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
|
||||||
|
|
||||||
|
@ -1188,7 +1221,7 @@ AC_MSG_CHECKING([whether to build bitcoind])
|
||||||
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
||||||
AC_MSG_RESULT($build_bitcoind)
|
AC_MSG_RESULT($build_bitcoind)
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
|
AC_MSG_CHECKING([whether to build utils (lbrycrd-cli lbrycrd-tx)])
|
||||||
AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
|
AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
|
||||||
AC_MSG_RESULT($build_bitcoin_utils)
|
AC_MSG_RESULT($build_bitcoin_utils)
|
||||||
|
|
||||||
|
@ -1289,7 +1322,7 @@ if test x$bitcoin_enable_qt != xno; then
|
||||||
AC_MSG_WARN("xgettext is required to update qt translations")
|
AC_MSG_WARN("xgettext is required to update qt translations")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build test_bitcoin-qt])
|
AC_MSG_CHECKING([whether to build test_lbrycrd-qt])
|
||||||
if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
|
if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
BUILD_TEST_QT="yes"
|
BUILD_TEST_QT="yes"
|
||||||
|
@ -1386,11 +1419,14 @@ AC_SUBST(LIBTOOL_APP_LDFLAGS)
|
||||||
AC_SUBST(USE_UPNP)
|
AC_SUBST(USE_UPNP)
|
||||||
AC_SUBST(USE_QRCODE)
|
AC_SUBST(USE_QRCODE)
|
||||||
AC_SUBST(BOOST_LIBS)
|
AC_SUBST(BOOST_LIBS)
|
||||||
|
AC_SUBST(ICU_CPPFLAGS)
|
||||||
|
AC_SUBST(ICU_LIBS)
|
||||||
AC_SUBST(TESTDEFS)
|
AC_SUBST(TESTDEFS)
|
||||||
AC_SUBST(LEVELDB_TARGET_FLAGS)
|
AC_SUBST(LEVELDB_TARGET_FLAGS)
|
||||||
AC_SUBST(MINIUPNPC_CPPFLAGS)
|
AC_SUBST(MINIUPNPC_CPPFLAGS)
|
||||||
AC_SUBST(MINIUPNPC_LIBS)
|
AC_SUBST(MINIUPNPC_LIBS)
|
||||||
AC_SUBST(CRYPTO_LIBS)
|
AC_SUBST(CRYPTO_LIBS)
|
||||||
|
AC_SUBST(SSL_CFLAGS)
|
||||||
AC_SUBST(SSL_LIBS)
|
AC_SUBST(SSL_LIBS)
|
||||||
AC_SUBST(EVENT_LIBS)
|
AC_SUBST(EVENT_LIBS)
|
||||||
AC_SUBST(EVENT_PTHREADS_LIBS)
|
AC_SUBST(EVENT_PTHREADS_LIBS)
|
||||||
|
|
20
contrib/patches/atomic.patch
Normal file
20
contrib/patches/atomic.patch
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
--- src/dbinc/atomic.h 2013-03-12 14:07:22.000000000 -0400
|
||||||
|
+++ src/dbinc/atomic.h.change 2013-03-12 14:06:35.000000000 -0400
|
||||||
|
@@ -144,7 +144,7 @@
|
||||||
|
#define atomic_inc(env, p) __atomic_inc(p)
|
||||||
|
#define atomic_dec(env, p) __atomic_dec(p)
|
||||||
|
#define atomic_compare_exchange(env, p, o, n) \
|
||||||
|
- __atomic_compare_exchange((p), (o), (n))
|
||||||
|
+ __atomic_compare_exchange_db((p), (o), (n))
|
||||||
|
static inline int __atomic_inc(db_atomic_t *p)
|
||||||
|
{
|
||||||
|
int temp;
|
||||||
|
@@ -176,7 +176,7 @@
|
||||||
|
* http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
|
||||||
|
* which configure could be changed to use.
|
||||||
|
*/
|
||||||
|
-static inline int __atomic_compare_exchange(
|
||||||
|
+static inline int __atomic_compare_exchange_db(
|
||||||
|
db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
|
||||||
|
{
|
||||||
|
atomic_value_t was;
|
3
depends/.gitignore
vendored
3
depends/.gitignore
vendored
|
@ -7,6 +7,3 @@ x86_64*
|
||||||
i686*
|
i686*
|
||||||
mips*
|
mips*
|
||||||
arm*
|
arm*
|
||||||
aarch64*
|
|
||||||
riscv32*
|
|
||||||
riscv64*
|
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
.NOTPARALLEL :
|
.NOTPARALLEL :
|
||||||
|
|
||||||
SOURCES_PATH ?= $(BASEDIR)/sources
|
SOURCES_PATH ?= $(BASEDIR)/sources
|
||||||
WORK_PATH = $(BASEDIR)/work
|
|
||||||
BASE_CACHE ?= $(BASEDIR)/built
|
BASE_CACHE ?= $(BASEDIR)/built
|
||||||
SDK_PATH ?= $(BASEDIR)/SDKs
|
SDK_PATH ?= $(BASEDIR)/SDKs
|
||||||
NO_QT ?=
|
NO_QT ?=
|
||||||
NO_WALLET ?=
|
NO_WALLET ?=
|
||||||
NO_UPNP ?=
|
NO_UPNP ?=
|
||||||
|
ICU_DIR ?=
|
||||||
|
ICU_ONLY ?=
|
||||||
FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources
|
FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources
|
||||||
|
|
||||||
BUILD = $(shell ./config.guess)
|
BUILD = $(shell ./config.guess)
|
||||||
|
@ -22,6 +23,7 @@ BUILD_ID_SALT ?= salt
|
||||||
host:=$(BUILD)
|
host:=$(BUILD)
|
||||||
ifneq ($(HOST),)
|
ifneq ($(HOST),)
|
||||||
host:=$(HOST)
|
host:=$(HOST)
|
||||||
|
host_toolchain:=$(HOST)-
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(DEBUG),)
|
ifneq ($(DEBUG),)
|
||||||
|
@ -30,9 +32,9 @@ else
|
||||||
release_type=release
|
release_type=release
|
||||||
endif
|
endif
|
||||||
|
|
||||||
base_build_dir=$(WORK_PATH)/build
|
base_build_dir=$(BASEDIR)/work/build
|
||||||
base_staging_dir=$(WORK_PATH)/staging
|
base_staging_dir=$(BASEDIR)/work/staging
|
||||||
base_download_dir=$(WORK_PATH)/download
|
base_download_dir=$(BASEDIR)/work/download
|
||||||
canonical_host:=$(shell ./config.sub $(HOST))
|
canonical_host:=$(shell ./config.sub $(HOST))
|
||||||
build:=$(shell ./config.sub $(BUILD))
|
build:=$(shell ./config.sub $(BUILD))
|
||||||
|
|
||||||
|
@ -73,7 +75,11 @@ include hosts/$(host_os).mk
|
||||||
include hosts/default.mk
|
include hosts/default.mk
|
||||||
include builders/$(build_os).mk
|
include builders/$(build_os).mk
|
||||||
include builders/default.mk
|
include builders/default.mk
|
||||||
|
ifeq ($(ICU_ONLY),)
|
||||||
include packages/packages.mk
|
include packages/packages.mk
|
||||||
|
else
|
||||||
|
include packages/packages.icu.mk
|
||||||
|
endif
|
||||||
|
|
||||||
build_id_string:=$(BUILD_ID_SALT)
|
build_id_string:=$(BUILD_ID_SALT)
|
||||||
build_id_string+=$(shell $(build_CC) --version 2>/dev/null)
|
build_id_string+=$(shell $(build_CC) --version 2>/dev/null)
|
||||||
|
@ -89,17 +95,14 @@ $(host_arch)_$(host_os)_id_string+=$(shell $(host_CXX) --version 2>/dev/null)
|
||||||
$(host_arch)_$(host_os)_id_string+=$(shell $(host_RANLIB) --version 2>/dev/null)
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_RANLIB) --version 2>/dev/null)
|
||||||
$(host_arch)_$(host_os)_id_string+=$(shell $(host_STRIP) --version 2>/dev/null)
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_STRIP) --version 2>/dev/null)
|
||||||
|
|
||||||
qt_packages_$(NO_QT) = $(qt_packages) $(qt_$(host_os)_packages) $(qt_$(host_arch)_$(host_os)_packages)
|
qt_packages_$(NO_QT) = $(qt_packages) $(qt_$(host_os)_packages)
|
||||||
|
qt_native_packages_$(NO_QT) = $(qt_native_packages)
|
||||||
wallet_packages_$(NO_WALLET) = $(wallet_packages)
|
wallet_packages_$(NO_WALLET) = $(wallet_packages)
|
||||||
upnp_packages_$(NO_UPNP) = $(upnp_packages)
|
upnp_packages_$(NO_UPNP) = $(upnp_packages)
|
||||||
|
|
||||||
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(qt_packages_) $(wallet_packages_) $(upnp_packages_)
|
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(qt_packages_) $(wallet_packages_) $(upnp_packages_)
|
||||||
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages)
|
$(info $$packages is [${packages}])
|
||||||
|
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages) $(qt_native_packages_)
|
||||||
ifneq ($(qt_packages_),)
|
|
||||||
native_packages += $(qt_native_packages)
|
|
||||||
endif
|
|
||||||
|
|
||||||
all_packages = $(packages) $(native_packages)
|
all_packages = $(packages) $(native_packages)
|
||||||
|
|
||||||
meta_depends = Makefile funcs.mk builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk
|
meta_depends = Makefile funcs.mk builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk
|
||||||
|
@ -134,8 +137,8 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
|
||||||
-e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
|
-e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
|
||||||
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
|
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
|
||||||
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
|
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
|
||||||
-e 's|@allow_host_packages@|$(ALLOW_HOST_PACKAGES)|' \
|
|
||||||
-e 's|@no_qt@|$(NO_QT)|' \
|
-e 's|@no_qt@|$(NO_QT)|' \
|
||||||
|
-e 's|@ICU_DIR@|$(ICU_DIR)|' \
|
||||||
-e 's|@no_wallet@|$(NO_WALLET)|' \
|
-e 's|@no_wallet@|$(NO_WALLET)|' \
|
||||||
-e 's|@no_upnp@|$(NO_UPNP)|' \
|
-e 's|@no_upnp@|$(NO_UPNP)|' \
|
||||||
-e 's|@debug@|$(DEBUG)|' \
|
-e 's|@debug@|$(DEBUG)|' \
|
||||||
|
@ -166,23 +169,17 @@ $(host_prefix)/share/config.site: check-packages
|
||||||
|
|
||||||
check-packages: check-sources
|
check-packages: check-sources
|
||||||
|
|
||||||
clean-all: clean
|
|
||||||
@rm -rf $(SOURCES_PATH) x86_64* i686* mips* arm* aarch64* riscv32* riscv64*
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@rm -rf $(WORK_PATH) $(BASE_CACHE) $(BUILD)
|
|
||||||
|
|
||||||
install: check-packages $(host_prefix)/share/config.site
|
install: check-packages $(host_prefix)/share/config.site
|
||||||
|
|
||||||
|
|
||||||
download-one: check-sources $(all_sources)
|
download-one: check-sources $(all_sources)
|
||||||
|
|
||||||
download-osx:
|
download-osx:
|
||||||
@$(MAKE) -s HOST=x86_64-apple-darwin14 download-one
|
@$(MAKE) -s HOST=x86_64-apple-darwin11 download-one
|
||||||
download-linux:
|
download-linux:
|
||||||
@$(MAKE) -s HOST=x86_64-unknown-linux-gnu download-one
|
@$(MAKE) -s HOST=x86_64-unknown-linux-gnu download-one
|
||||||
download-win:
|
download-win:
|
||||||
@$(MAKE) -s HOST=x86_64-w64-mingw32 download-one
|
@$(MAKE) -s HOST=x86_64-w64-mingw32 download-one
|
||||||
download: download-osx download-linux download-win
|
download: download-osx download-linux download-win
|
||||||
|
|
||||||
.PHONY: install cached clean clean-all download-one download-osx download-linux download-win download check-packages check-sources
|
.PHONY: install cached download-one download-osx download-linux download-win download check-packages check-sources
|
||||||
|
|
|
@ -22,42 +22,17 @@ Common `host-platform-triplets` for cross compilation are:
|
||||||
|
|
||||||
- `i686-w64-mingw32` for Win32
|
- `i686-w64-mingw32` for Win32
|
||||||
- `x86_64-w64-mingw32` for Win64
|
- `x86_64-w64-mingw32` for Win64
|
||||||
- `x86_64-apple-darwin14` for macOS
|
- `x86_64-apple-darwin11` for MacOSX
|
||||||
- `arm-linux-gnueabihf` for Linux ARM 32 bit
|
- `arm-linux-gnueabihf` for Linux ARM
|
||||||
- `aarch64-linux-gnu` for Linux ARM 64 bit
|
|
||||||
- `riscv32-linux-gnu` for Linux RISC-V 32 bit
|
|
||||||
- `riscv64-linux-gnu` for Linux RISC-V 64 bit
|
|
||||||
|
|
||||||
No other options are needed, the paths are automatically configured.
|
No other options are needed, the paths are automatically configured.
|
||||||
|
|
||||||
Install the required dependencies: Ubuntu & Debian
|
|
||||||
--------------------------------------------------
|
|
||||||
|
|
||||||
For macOS cross compilation:
|
|
||||||
|
|
||||||
sudo apt-get install curl librsvg2-bin libtiff-tools bsdmainutils cmake imagemagick libcap-dev libz-dev libbz2-dev python-setuptools
|
|
||||||
|
|
||||||
For Win32/Win64 cross compilation:
|
|
||||||
|
|
||||||
- see [build-windows.md](../doc/build-windows.md#cross-compilation-for-ubuntu-and-windows-subsystem-for-linux)
|
|
||||||
|
|
||||||
For linux (including i386, ARM) cross compilation:
|
|
||||||
|
|
||||||
sudo apt-get install curl g++-aarch64-linux-gnu g++-4.8-aarch64-linux-gnu gcc-4.8-aarch64-linux-gnu binutils-aarch64-linux-gnu g++-arm-linux-gnueabihf g++-4.8-arm-linux-gnueabihf gcc-4.8-arm-linux-gnueabihf binutils-arm-linux-gnueabihf g++-4.8-multilib gcc-4.8-multilib binutils-gold bsdmainutils
|
|
||||||
|
|
||||||
For linux RISC-V 64-bit cross compilation (there are no packages for 32-bit):
|
|
||||||
|
|
||||||
sudo apt-get install curl g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
|
|
||||||
|
|
||||||
RISC-V known issue: gcc-7.3.0 and gcc-7.3.1 result in a broken `test_bitcoin` executable (see https://github.com/bitcoin/bitcoin/pull/13543),
|
|
||||||
this is apparently fixed in gcc-8.1.0.
|
|
||||||
|
|
||||||
Dependency Options:
|
Dependency Options:
|
||||||
The following can be set when running make: make FOO=bar
|
The following can be set when running make: make FOO=bar
|
||||||
|
|
||||||
SOURCES_PATH: downloaded sources will be placed here
|
SOURCES_PATH: downloaded sources will be placed here
|
||||||
BASE_CACHE: built packages will be placed here
|
BASE_CACHE: built packages will be placed here
|
||||||
SDK_PATH: Path where sdk's can be found (used by macOS)
|
SDK_PATH: Path where sdk's can be found (used by OSX)
|
||||||
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
|
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
|
||||||
NO_QT: Don't download/build/cache qt and its dependencies
|
NO_QT: Don't download/build/cache qt and its dependencies
|
||||||
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
|
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
|
||||||
|
@ -72,7 +47,7 @@ options will be passed to bitcoin's configure. In this case, `--disable-wallet`.
|
||||||
Additional targets:
|
Additional targets:
|
||||||
|
|
||||||
download: run 'make download' to fetch all sources without building them
|
download: run 'make download' to fetch all sources without building them
|
||||||
download-osx: run 'make download-osx' to fetch all sources needed for macOS builds
|
download-osx: run 'make download-osx' to fetch all sources needed for osx builds
|
||||||
download-win: run 'make download-win' to fetch all sources needed for win builds
|
download-win: run 'make download-win' to fetch all sources needed for win builds
|
||||||
download-linux: run 'make download-linux' to fetch all sources needed for linux builds
|
download-linux: run 'make download-linux' to fetch all sources needed for linux builds
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
build_darwin_CC:=$(shell xcrun -f clang)
|
build_darwin_CC: = $(shell xcrun -f clang)
|
||||||
build_darwin_CXX:=$(shell xcrun -f clang++)
|
build_darwin_CXX: = $(shell xcrun -f clang++)
|
||||||
build_darwin_AR:=$(shell xcrun -f ar)
|
build_darwin_AR: = $(shell xcrun -f ar)
|
||||||
build_darwin_RANLIB:=$(shell xcrun -f ranlib)
|
build_darwin_RANLIB: = $(shell xcrun -f ranlib)
|
||||||
build_darwin_STRIP:=$(shell xcrun -f strip)
|
build_darwin_STRIP: = $(shell xcrun -f strip)
|
||||||
build_darwin_OTOOL:=$(shell xcrun -f otool)
|
build_darwin_OTOOL: = $(shell xcrun -f otool)
|
||||||
build_darwin_NM:=$(shell xcrun -f nm)
|
build_darwin_NM: = $(shell xcrun -f nm)
|
||||||
build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
|
build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
|
||||||
build_darwin_SHA256SUM=shasum -a 256
|
build_darwin_SHA256SUM = shasum -a 256
|
||||||
build_darwin_DOWNLOAD=curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
|
build_darwin_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
|
||||||
|
|
||||||
#darwin host on darwin builder. overrides darwin host preferences.
|
#darwin host on darwin builder. overrides darwin host preferences.
|
||||||
darwin_CC=$(shell xcrun -f clang) -mmacosx-version-min=$(OSX_MIN_VERSION)
|
darwin_CC=$(shell xcrun -f clang) -mmacosx-version-min=$(OSX_MIN_VERSION)
|
||||||
darwin_CXX:=$(shell xcrun -f clang++) -mmacosx-version-min=$(OSX_MIN_VERSION) -stdlib=libc++
|
darwin_CXX:=$(shell xcrun -f clang++) -mmacosx-version-min=$(OSX_MIN_VERSION)
|
||||||
darwin_AR:=$(shell xcrun -f ar)
|
darwin_AR:=$(shell xcrun -f ar)
|
||||||
darwin_RANLIB:=$(shell xcrun -f ranlib)
|
darwin_RANLIB:=$(shell xcrun -f ranlib)
|
||||||
darwin_STRIP:=$(shell xcrun -f strip)
|
darwin_STRIP:=$(shell xcrun -f strip)
|
||||||
|
|
611
depends/config.guess
vendored
611
depends/config.guess
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,25 +1,27 @@
|
||||||
depends_prefix="`dirname ${ac_site_file}`/.."
|
|
||||||
|
|
||||||
cross_compiling=maybe
|
cross_compiling=maybe
|
||||||
host_alias=@HOST@
|
host_alias=@HOST@
|
||||||
ac_tool_prefix=${host_alias}-
|
ac_tool_prefix=${host_alias}-
|
||||||
|
|
||||||
if test -z $with_boost; then
|
if test -z $with_boost; then
|
||||||
with_boost=$depends_prefix
|
with_boost=$prefix
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_plugindir; then
|
if test -z $with_qt_plugindir; then
|
||||||
with_qt_plugindir=$depends_prefix/plugins
|
with_qt_plugindir=$prefix/plugins
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_translationdir; then
|
if test -z $with_qt_translationdir; then
|
||||||
with_qt_translationdir=$depends_prefix/translations
|
with_qt_translationdir=$prefix/translations
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_bindir && test -z "@no_qt@"; then
|
if test -z $with_qt_bindir; then
|
||||||
with_qt_bindir=$depends_prefix/native/bin
|
with_qt_bindir=$prefix/native/bin
|
||||||
fi
|
fi
|
||||||
if test -z $with_protoc_bindir && test -z "@no_qt@"; then
|
if test -z $with_protoc_bindir; then
|
||||||
with_protoc_bindir=$depends_prefix/native/bin
|
with_protoc_bindir=$prefix/native/bin
|
||||||
|
fi
|
||||||
|
if test -z $with_comparison_tool; then
|
||||||
|
with_comparison_tool=$prefix/native/share/BitcoindComparisonTool_jar/BitcoindComparisonTool.jar
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
with_icu_dir=@icu_dir@
|
||||||
|
|
||||||
if test -z $enable_wallet && test -n "@no_wallet@"; then
|
if test -z $enable_wallet && test -n "@no_wallet@"; then
|
||||||
enable_wallet=no
|
enable_wallet=no
|
||||||
|
@ -40,31 +42,32 @@ fi
|
||||||
|
|
||||||
if test x@host_os@ = xmingw32; then
|
if test x@host_os@ = xmingw32; then
|
||||||
if test -z $with_qt_incdir; then
|
if test -z $with_qt_incdir; then
|
||||||
with_qt_incdir=$depends_prefix/include
|
with_qt_incdir=$prefix/include
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_libdir; then
|
if test -z $with_qt_libdir; then
|
||||||
with_qt_libdir=$depends_prefix/lib
|
with_qt_libdir=$prefix/lib
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PATH=$depends_prefix/native/bin:$PATH
|
PATH=$prefix/native/bin:$PATH
|
||||||
PKG_CONFIG="`which pkg-config` --static"
|
PKG_CONFIG="`which pkg-config` --static"
|
||||||
|
|
||||||
# These two need to remain exported because pkg-config does not see them
|
# These two need to remain exported because pkg-config does not see them
|
||||||
# otherwise. That means they must be unexported at the end of configure.ac to
|
# otherwise. That means they must be unexported at the end of configure.ac to
|
||||||
# avoid ruining the cache. Sigh.
|
# avoid ruining the cache. Sigh.
|
||||||
export PKG_CONFIG_PATH=$depends_prefix/share/pkgconfig:$depends_prefix/lib/pkgconfig
|
|
||||||
if test -z "@allow_host_packages@"; then
|
|
||||||
export PKGCONFIG_LIBDIR=
|
|
||||||
fi
|
|
||||||
|
|
||||||
CPPFLAGS="-I$depends_prefix/include/ $CPPFLAGS"
|
export PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig
|
||||||
LDFLAGS="-L$depends_prefix/lib $LDFLAGS"
|
export PKG_CONFIG_PATH=$prefix/share/pkgconfig
|
||||||
|
|
||||||
|
CPPFLAGS="-I$prefix/include/ $CPPFLAGS"
|
||||||
|
LDFLAGS="-L$prefix/lib $LDFLAGS"
|
||||||
|
|
||||||
CC="@CC@"
|
CC="@CC@"
|
||||||
CXX="@CXX@"
|
CXX="@CXX@"
|
||||||
OBJC="${CC}"
|
OBJC="${CC}"
|
||||||
PYTHONPATH=$depends_prefix/native/lib/python/dist-packages:$PYTHONPATH
|
OBJCXX="${CXX}"
|
||||||
|
CCACHE=$prefix/native/bin/ccache
|
||||||
|
PYTHONPATH=$prefix/native/lib/python/dist-packages:$PYTHONPATH
|
||||||
|
|
||||||
if test -n "@AR@"; then
|
if test -n "@AR@"; then
|
||||||
AR=@AR@
|
AR=@AR@
|
||||||
|
@ -97,3 +100,6 @@ fi
|
||||||
if test -n "@LDFLAGS@"; then
|
if test -n "@LDFLAGS@"; then
|
||||||
LDFLAGS="@LDFLAGS@ $LDFLAGS"
|
LDFLAGS="@LDFLAGS@ $LDFLAGS"
|
||||||
fi
|
fi
|
||||||
|
if test -n "@ICU_DIR@"; then
|
||||||
|
ICU_DIR="@ICU_DIR@"
|
||||||
|
fi
|
||||||
|
|
1669
depends/config.sub
vendored
1669
depends/config.sub
vendored
File diff suppressed because it is too large
Load diff
|
@ -7,7 +7,7 @@ In theory, binaries for any target OS/architecture can be created, from a
|
||||||
builder running any OS/architecture. In practice, build-side tools must be
|
builder running any OS/architecture. In practice, build-side tools must be
|
||||||
specified when the defaults don't fit, and packages must be amended to work
|
specified when the defaults don't fit, and packages must be amended to work
|
||||||
on new hosts. For now, a build architecture of x86_64 is assumed, either on
|
on new hosts. For now, a build architecture of x86_64 is assumed, either on
|
||||||
Linux or macOS.
|
Linux or OSX.
|
||||||
|
|
||||||
### No reliance on timestamps
|
### No reliance on timestamps
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
OSX_MIN_VERSION=10.10
|
OSX_MIN_VERSION=10.7
|
||||||
OSX_SDK_VERSION=10.11
|
OSX_SDK_VERSION=10.9
|
||||||
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
||||||
LD64_VERSION=253.9
|
LD64_VERSION=241.9
|
||||||
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||||
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++
|
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||||
|
|
||||||
darwin_CFLAGS=-pipe
|
darwin_CFLAGS=-pipe
|
||||||
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
ifneq ($(host),$(build))
|
|
||||||
host_toolchain:=$(host)-
|
|
||||||
endif
|
|
||||||
|
|
||||||
default_host_CC = $(host_toolchain)gcc
|
default_host_CC = $(host_toolchain)gcc
|
||||||
default_host_CXX = $(host_toolchain)g++
|
default_host_CXX = $(host_toolchain)g++
|
||||||
default_host_AR = $(host_toolchain)ar
|
default_host_AR = $(host_toolchain)ar
|
||||||
|
|
|
@ -9,13 +9,11 @@ define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication
|
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication
|
||||||
$(package)_config_opts_mingw32=--enable-mingw
|
$(package)_config_opts_mingw32=--enable-mingw
|
||||||
$(package)_config_opts_linux=--with-pic
|
$(package)_config_opts_linux=--with-pic
|
||||||
$(package)_cxxflags=-std=c++11
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
sed -i.old 's/__atomic_compare_exchange/__atomic_compare_exchange_db/' dbinc/atomic.h && \
|
sed -i.old 's/__atomic_compare_exchange/__atomic_compare_exchange_db/' dbinc/atomic.h && \
|
||||||
sed -i.old 's/atomic_init/atomic_init_db/' dbinc/atomic.h mp/mp_region.c mp/mp_mvcc.c mp/mp_fget.c mutex/mut_method.c mutex/mut_tas.c && \
|
sed -i.old 's/atomic_init/atomic_init_db/' dbinc/atomic.h mp/mp_region.c mp/mp_mvcc.c mp/mp_fget.c mutex/mut_method.c mutex/mut_tas.c
|
||||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub dist
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package=boost
|
package=boost
|
||||||
$(package)_version=1_64_0
|
$(package)_version=1_59_0
|
||||||
$(package)_download_path=https://dl.bintray.com/boostorg/release/1.64.0/source/
|
$(package)_download_path=http://sourceforge.net/projects/boost/files/boost/1.59.0
|
||||||
$(package)_file_name=$(package)_$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)_$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332
|
$(package)_sha256_hash=727a932322d94287b62abb1bd2d41723eec4356a7728909e38adb65ca25241ca
|
||||||
|
$(package)_dependencies:icu
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts_release=variant=release
|
$(package)_config_opts_release=variant=release
|
||||||
$(package)_config_opts_debug=variant=debug
|
$(package)_config_opts_debug=variant=debug
|
||||||
$(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-config.jam
|
$(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-config.jam boost.locale.iconv=off boost.locale.posix=off
|
||||||
$(package)_config_opts+=threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1
|
$(package)_config_opts+=threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1 -sICU_PATH=$(ICU_DIR)
|
||||||
|
$(package)_config_opts+=-sICU_LINK=-L$(ICU_DIR) -lsicudt -lsicuin -lsicuio -lsicule -lsiculx -lsicutest -lsicutu -lsicuuc
|
||||||
$(package)_config_opts_linux=threadapi=pthread runtime-link=shared
|
$(package)_config_opts_linux=threadapi=pthread runtime-link=shared
|
||||||
$(package)_config_opts_darwin=--toolset=darwin-4.2.1 runtime-link=shared
|
$(package)_config_opts_darwin=--toolset=darwin-4.2.1 runtime-link=shared
|
||||||
$(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static
|
$(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static
|
||||||
|
@ -19,9 +21,17 @@ $(package)_toolset_$(host_os)=gcc
|
||||||
$(package)_archiver_$(host_os)=$($(package)_ar)
|
$(package)_archiver_$(host_os)=$($(package)_ar)
|
||||||
$(package)_toolset_darwin=darwin
|
$(package)_toolset_darwin=darwin
|
||||||
$(package)_archiver_darwin=$($(package)_libtool)
|
$(package)_archiver_darwin=$($(package)_libtool)
|
||||||
$(package)_config_libraries=chrono,filesystem,system,thread,test
|
$(package)_config_libraries=chrono,filesystem,program_options,system,locale,regex,thread,test
|
||||||
$(package)_cxxflags=-std=c++11 -fvisibility=hidden
|
$(package)_cxxflags=-fvisibility=hidden
|
||||||
$(package)_cxxflags_linux=-fPIC
|
$(package)_cxxflags_linux=-fPIC
|
||||||
|
$(package)_config_env+=BOOST_ICU_ICONV="off"
|
||||||
|
$(package)_config_env+=BOOST_ICU_POSIX="off"
|
||||||
|
$(package)_config_env+=ICU_PREFIX=$(ICU_DIR)
|
||||||
|
$(package)_config_env+=BOOST_ICU_LIBS="-L$(ICU_DIR) -lsicudt -lsicuin -lsicuio -lsicule -lsiculx -lsicutest -lsicutu -lsicuuc"
|
||||||
|
$(package)_build_env+=BOOST_ICU_ICONV="off"
|
||||||
|
$(package)_build_env+=BOOST_ICU_POSIX="off"
|
||||||
|
$(package)_build_env+=ICU_PREFIX=$(ICU_DIR)
|
||||||
|
$(package)_build_env+=BOOST_ICU_LIBS="-L$(ICU_DIR) -lsicudt -lsicuin -lsicuio -lsicule -lsiculx -lsicutest -lsicutu -lsicuuc"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
|
@ -29,13 +39,12 @@ define $(package)_preprocess_cmds
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
./bootstrap.sh --without-icu --with-libraries=$(boost_config_libraries)
|
echo "int main() { return 0; }" > ./libs/locale/build/has_icu_test.cpp && echo "int main() { return 0; }" > ./libs/regex/build/has_icu_test.cpp && echo "ICU INSTALL: $(ICU_DIR)" && echo "BOOST CONFIG LIBRARIES: $(boost_config_libraries)" && ./bootstrap.sh --with-icu=$(ICU_DIR) --with-libraries=$(boost_config_libraries)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
./b2 -d2 -j2 -d1 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) stage
|
ICU_PATH=$(ICU_DIR) ./b2 link=static cxxflags=-fPIC -d0 -q -j12 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) install
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
./b2 -d0 -j4 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) install
|
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package=dbus
|
package=dbus
|
||||||
$(package)_version=1.10.18
|
$(package)_version=1.8.6
|
||||||
$(package)_download_path=https://dbus.freedesktop.org/releases/dbus
|
$(package)_download_path=http://dbus.freedesktop.org/releases/dbus
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=6049ddd5f3f3e2618f615f1faeda0a115104423a7996b7aa73e2f36e38cc514a
|
$(package)_sha256_hash=eded83ca007b719f32761e60fd8b9ffd0f5796a4caf455b01b5a5ef740ebd23f
|
||||||
$(package)_dependencies=expat
|
$(package)_dependencies=expat
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package=expat
|
package=expat
|
||||||
$(package)_version=2.2.5
|
$(package)_version=2.1.0
|
||||||
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_2_5/
|
$(package)_download_path=http://sourceforge.net/projects/expat/files/expat/$($(package)_version)
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=d9dc32efba7e74f788fcc4f212a43216fc37cf5f23f4c2339664d473353aedf6
|
$(package)_sha256_hash=823705472f816df21c8f6aa026dd162b280806838bb55b3432b0fb1fcca7eb86
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-static
|
$(package)_config_opts=--disable-static
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package=fontconfig
|
package=fontconfig
|
||||||
$(package)_version=2.12.1
|
$(package)_version=2.11.1
|
||||||
$(package)_download_path=http://www.freedesktop.org/software/fontconfig/release/
|
$(package)_download_path=http://www.freedesktop.org/software/fontconfig/release/
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=b449a3e10c47e1d1c7a6ec6e2016cca73d3bd68fbbd4f0ae5cc6b573f7d6c7f3
|
$(package)_sha256_hash=dc62447533bca844463a3c3fd4083b57c90f18a70506e7a9f4936b5a1e516a99
|
||||||
$(package)_dependencies=freetype expat
|
$(package)_dependencies=freetype expat
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
|
@ -13,13 +13,7 @@ define $(package)_config_cmds
|
||||||
$($(package)_autoconf)
|
$($(package)_autoconf)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# 2.12.1 uses CHAR_WIDTH which is reserved and clashes with some glibc versions, but newer versions of fontconfig
|
|
||||||
# have broken makefiles which needlessly attempt to re-generate headers with gperf.
|
|
||||||
# Instead, change all uses of CHAR_WIDTH, and disable the rule that forces header re-generation.
|
|
||||||
# This can be removed once the upstream build is fixed.
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
sed -i 's/CHAR_WIDTH/CHARWIDTH/g' fontconfig/fontconfig.h src/fcobjshash.gperf src/fcobjs.h src/fcobjshash.h && \
|
|
||||||
sed -i 's/fcobjshash.h: fcobjshash.gperf/fcobjshash.h:/' src/Makefile && \
|
|
||||||
$(MAKE)
|
$(MAKE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package=freetype
|
package=freetype
|
||||||
$(package)_version=2.7.1
|
$(package)_version=2.5.3
|
||||||
$(package)_download_path=http://download.savannah.gnu.org/releases/$(package)
|
$(package)_download_path=http://downloads.sourceforge.net/$(package)
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=3a3bb2c4e15ffb433f2032f50a5b5a92558206822e22bfe8cbe339af4aa82f88
|
$(package)_sha256_hash=c0848b29d52ef3ca27ad92e08351f023c5e24ce8cea7d8fe69fc96358e65f75e
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--without-zlib --without-png --disable-static
|
$(package)_config_opts=--without-zlib --without-png --disable-static
|
||||||
|
|
25
depends/packages/icu.mk
Normal file
25
depends/packages/icu.mk
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
package=icu
|
||||||
|
$(package)_version=57_1
|
||||||
|
$(package)_download_path=http://download.icu-project.org/files/icu4c/57.1
|
||||||
|
$(package)_file_name=$(package)4c-$($(package)_version)-src.tgz
|
||||||
|
$(package)_sha256_hash=ff8c67cb65949b1e7808f2359f2b80f722697048e90e7cfc382ec1fe229e9581
|
||||||
|
$(package)_build_subdir=source
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--enable-debug --disable-release --host=x86_64-w64-mingw32 --with-cross-build=/tmp/icu_staging/icu/source --enable-extras=no --enable-strict=no --enable-static --enable-shared=no --enable-tests=no --enable-samples=no --enable-dyload=no
|
||||||
|
$(package)_config_opts_release=--disable-debug --enable-release
|
||||||
|
$(package)_config_opts_mingw32=--host=x86_64-w64-mingw32
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=/tmp/icu_install install
|
||||||
|
endef
|
|
@ -1,15 +1,16 @@
|
||||||
package=libevent
|
package=libevent
|
||||||
$(package)_version=2.1.8-stable
|
$(package)_version=2.0.22
|
||||||
$(package)_download_path=https://github.com/libevent/libevent/archive/
|
$(package)_download_path=https://github.com/libevent/libevent/releases/download/release-2.0.22-stable
|
||||||
$(package)_file_name=release-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version)-stable.tar.gz
|
||||||
$(package)_sha256_hash=316ddb401745ac5d222d7c529ef1eada12f58f6376a66c1118eee803cb70f83d
|
$(package)_sha256_hash=71c2c49f0adadacfdbe6332a372c38cf9c8b7895bb73dabeaa53cdcc1d4e1fa3
|
||||||
|
$(package)_patches=reuseaddr.patch
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
./autogen.sh
|
patch -p1 < $($(package)_patch_dir)/reuseaddr.patch
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-shared --disable-openssl --disable-libevent-regress --disable-samples
|
$(package)_config_opts=--disable-shared --disable-openssl --disable-libevent-regress
|
||||||
$(package)_config_opts_release=--disable-debug-mode
|
$(package)_config_opts_release=--disable-debug-mode
|
||||||
$(package)_config_opts_linux=--with-pic
|
$(package)_config_opts_linux=--with-pic
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
package=miniupnpc
|
package=miniupnpc
|
||||||
$(package)_version=2.0.20180203
|
$(package)_version=1.9.20160209
|
||||||
$(package)_download_path=http://miniupnp.free.fr/files
|
$(package)_download_path=http://miniupnp.free.fr/files
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=90dda8c7563ca6cd4a83e23b3c66dbbea89603a1675bfdb852897c2c9cc220b7
|
$(package)_sha256_hash=572171eacc1d72537ce47b6f4571260757ab7bcfdaf54c3a55c7f88594d94b6f
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_build_opts=CC="$($(package)_cc)"
|
$(package)_build_opts=CC="$($(package)_cc)"
|
||||||
$(package)_build_opts_darwin=LIBTOOL="$($(package)_libtool)"
|
$(package)_build_opts_darwin=OS=Darwin LIBTOOL="$($(package)_libtool)"
|
||||||
$(package)_build_opts_mingw32=-f Makefile.mingw
|
$(package)_build_opts_mingw32=-f Makefile.mingw
|
||||||
$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)"
|
$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)"
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package=native_biplist
|
package=native_biplist
|
||||||
$(package)_version=1.0.3
|
$(package)_version=0.9
|
||||||
$(package)_download_path=https://bitbucket.org/wooster/biplist/downloads
|
$(package)_download_path=https://pypi.python.org/packages/source/b/biplist
|
||||||
$(package)_file_name=biplist-$($(package)_version).tar.gz
|
$(package)_file_name=biplist-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=4c0549764c5fe50b28042ec21aa2e14fe1a2224e239a1dae77d9e7f3932aa4c6
|
$(package)_sha256_hash=b57cadfd26e4754efdf89e9e37de87885f9b5c847b2615688ca04adfaf6ca604
|
||||||
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|
25
depends/packages/native_ccache.mk
Normal file
25
depends/packages/native_ccache.mk
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
package=native_ccache
|
||||||
|
$(package)_version=3.2.4
|
||||||
|
$(package)_download_path=http://samba.org/ftp/ccache
|
||||||
|
$(package)_file_name=ccache-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=ffeb967edb549e67da0bd5f44f729a2022de9fdde65dfd80d2a7204d7f75332e
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm -rf lib include
|
||||||
|
endef
|
|
@ -1,14 +1,14 @@
|
||||||
package=native_cctools
|
package=native_cctools
|
||||||
$(package)_version=807d6fd1be5d2224872e381870c0a75387fe05e6
|
$(package)_version=ee31ae567931c426136c94aad457c7b51d844beb
|
||||||
$(package)_download_path=https://github.com/theuni/cctools-port/archive
|
$(package)_download_path=https://github.com/theuni/cctools-port/archive
|
||||||
$(package)_file_name=$($(package)_version).tar.gz
|
$(package)_file_name=$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=a09c9ba4684670a0375e42d9d67e7f12c1f62581a27f28f7c825d6d7032ccc6a
|
$(package)_sha256_hash=ef107e6ab1b3994cb22e14f4f5c59ea0c0b5a988e6b21d42ed9616b018bbcbf9
|
||||||
$(package)_build_subdir=cctools
|
$(package)_build_subdir=cctools
|
||||||
$(package)_clang_version=3.7.1
|
$(package)_clang_version=3.3
|
||||||
$(package)_clang_download_path=http://llvm.org/releases/$($(package)_clang_version)
|
$(package)_clang_download_path=http://llvm.org/releases/$($(package)_clang_version)
|
||||||
$(package)_clang_download_file=clang+llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz
|
$(package)_clang_download_file=clang+llvm-$($(package)_clang_version)-amd64-Ubuntu-12.04.2.tar.gz
|
||||||
$(package)_clang_file_name=clang-llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz
|
$(package)_clang_file_name=clang-llvm-$($(package)_clang_version)-amd64-Ubuntu-12.04.2.tar.gz
|
||||||
$(package)_clang_sha256_hash=99b28a6b48e793705228a390471991386daa33a9717cd9ca007fcdde69608fd9
|
$(package)_clang_sha256_hash=60d8f69f032d62ef61bf527857ebb933741ec3352d4d328c5516aa520662dab7
|
||||||
$(package)_extra_sources=$($(package)_clang_file_name)
|
$(package)_extra_sources=$($(package)_clang_file_name)
|
||||||
|
|
||||||
define $(package)_fetch_cmds
|
define $(package)_fetch_cmds
|
||||||
|
@ -23,7 +23,6 @@ define $(package)_extract_cmds
|
||||||
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
||||||
mkdir -p toolchain/bin toolchain/lib/clang/3.5/include && \
|
mkdir -p toolchain/bin toolchain/lib/clang/3.5/include && \
|
||||||
tar --strip-components=1 -C toolchain -xf $($(package)_source_dir)/$($(package)_clang_file_name) && \
|
tar --strip-components=1 -C toolchain -xf $($(package)_source_dir)/$($(package)_clang_file_name) && \
|
||||||
rm -f toolchain/lib/libc++abi.so* && \
|
|
||||||
echo "#!/bin/sh" > toolchain/bin/$(host)-dsymutil && \
|
echo "#!/bin/sh" > toolchain/bin/$(host)-dsymutil && \
|
||||||
echo "exit 0" >> toolchain/bin/$(host)-dsymutil && \
|
echo "exit 0" >> toolchain/bin/$(host)-dsymutil && \
|
||||||
chmod +x toolchain/bin/$(host)-dsymutil && \
|
chmod +x toolchain/bin/$(host)-dsymutil && \
|
||||||
|
@ -31,15 +30,14 @@ define $(package)_extract_cmds
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--target=$(host) --disable-lto-support
|
$(package)_config_opts=--target=$(host) --disable-libuuid
|
||||||
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
|
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
|
||||||
$(package)_cc=$($(package)_extract_dir)/toolchain/bin/clang
|
$(package)_cc=$($(package)_extract_dir)/toolchain/bin/clang
|
||||||
$(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++
|
$(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
cd $($(package)_build_subdir); ./autogen.sh && \
|
cd $($(package)_build_subdir); ./autogen.sh
|
||||||
sed -i.old "/define HAVE_PTHREADS/d" ld64/src/ld/InputFiles.h
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
|
@ -55,11 +53,10 @@ define $(package)_stage_cmds
|
||||||
cd $($(package)_extract_dir)/toolchain && \
|
cd $($(package)_extract_dir)/toolchain && \
|
||||||
mkdir -p $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include && \
|
mkdir -p $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include && \
|
||||||
mkdir -p $($(package)_staging_prefix_dir)/bin $($(package)_staging_prefix_dir)/include && \
|
mkdir -p $($(package)_staging_prefix_dir)/bin $($(package)_staging_prefix_dir)/include && \
|
||||||
cp bin/clang $($(package)_staging_prefix_dir)/bin/ &&\
|
cp -P bin/clang bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\
|
||||||
cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\
|
|
||||||
cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \
|
cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \
|
||||||
cp -rf lib/clang/$($(package)_clang_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include/ && \
|
cp -rf lib/clang/$($(package)_clang_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include/ && \
|
||||||
cp bin/llvm-dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \
|
cp bin/$(host)-dsymutil $($(package)_staging_prefix_dir)/bin && \
|
||||||
if `test -d include/c++/`; then cp -rf include/c++/ $($(package)_staging_prefix_dir)/include/; fi && \
|
if `test -d include/c++/`; then cp -rf include/c++/ $($(package)_staging_prefix_dir)/include/; fi && \
|
||||||
if `test -d lib/c++/`; then cp -rf lib/c++/ $($(package)_staging_prefix_dir)/lib/; fi
|
if `test -d lib/c++/`; then cp -rf lib/c++/ $($(package)_staging_prefix_dir)/lib/; fi
|
||||||
endef
|
endef
|
||||||
|
|
21
depends/packages/native_comparisontool.mk
Normal file
21
depends/packages/native_comparisontool.mk
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
package=native_comparisontool
|
||||||
|
$(package)_version=8c6666f
|
||||||
|
$(package)_download_path=https://github.com/theuni/bitcoind-comparisontool/raw/master
|
||||||
|
$(package)_file_name=pull-tests-$($(package)_version).jar
|
||||||
|
$(package)_sha256_hash=a865332b3827abcde684ab79f5f43c083b0b6a4c97ff5508c79f29fee24f11cd
|
||||||
|
$(package)_install_dirname=BitcoindComparisonTool_jar
|
||||||
|
$(package)_install_filename=BitcoindComparisonTool.jar
|
||||||
|
|
||||||
|
define $(package)_extract_cmds
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_configure_cmds
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
mkdir -p $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname) && \
|
||||||
|
cp $($(package)_source) $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname)/$($(package)_install_filename)
|
||||||
|
endef
|
|
@ -1,8 +1,9 @@
|
||||||
package=native_ds_store
|
package=native_ds_store
|
||||||
$(package)_version=1.1.2
|
$(package)_version=c80c23706eae
|
||||||
$(package)_download_path=https://github.com/al45tair/ds_store/archive/
|
$(package)_download_path=https://bitbucket.org/al45tair/ds_store/get
|
||||||
$(package)_file_name=v$($(package)_version).tar.gz
|
$(package)_download_file=$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=3b3ecb7bf0a5157f5b6010bc3af7c141fb0ad3527084e63336220d22744bc20c
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=ce1aa412211610c63d567bbe3e06213006a2d5ba5d76d89399c151b5472cb0da
|
||||||
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||||
$(package)_dependencies=native_biplist
|
$(package)_dependencies=native_biplist
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
package=native_mac_alias
|
package=native_mac_alias
|
||||||
$(package)_version=2.0.7
|
$(package)_version=1.1.0
|
||||||
$(package)_download_path=https://github.com/al45tair/mac_alias/archive/
|
$(package)_download_path=https://bitbucket.org/al45tair/mac_alias/get
|
||||||
$(package)_file_name=v$($(package)_version).tar.gz
|
$(package)_download_file=v$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=6f606d3b6bccd2112aeabf1a063f5b5ece87005a5d7e97c8faca23b916e88838
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=87ad827e66790028361e43fc754f68ed041a9bdb214cca03c853f079b04fb120
|
||||||
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|
|
@ -6,54 +6,18 @@ $(package)_sha256_hash=8f9faeaebad088e772f4ef5e38252d472be4d878c6b3a2718c10a4fce
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||||
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl
|
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl no-zlib no-shared no-dso
|
||||||
$(package)_config_opts+=no-camellia
|
$(package)_config_opts+=no-krb5 no-camellia no-capieng no-cast no-cms no-dtls1 no-gost no-gmp no-heartbeats no-idea no-jpake no-md2
|
||||||
$(package)_config_opts+=no-capieng
|
$(package)_config_opts+=no-mdc2 no-rc5 no-rdrand no-rfc3779 no-rsax no-sctp no-seed no-sha0 no-static_engine no-whirlpool no-rc2 no-rc4 no-ssl2 no-ssl3
|
||||||
$(package)_config_opts+=no-cast
|
|
||||||
$(package)_config_opts+=no-comp
|
|
||||||
$(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-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)
|
$(package)_config_opts+=$($(package)_cflags) $($(package)_cppflags)
|
||||||
$(package)_config_opts_linux=-fPIC -Wa,--noexecstack
|
$(package)_config_opts_linux=-fPIC -Wa,--noexecstack
|
||||||
$(package)_config_opts_x86_64_linux=linux-x86_64
|
$(package)_config_opts_x86_64_linux=linux-x86_64
|
||||||
$(package)_config_opts_i686_linux=linux-generic32
|
$(package)_config_opts_i686_linux=linux-generic32
|
||||||
$(package)_config_opts_arm_linux=linux-generic32
|
$(package)_config_opts_arm_linux=linux-generic32
|
||||||
$(package)_config_opts_armv7l_linux=linux-generic32
|
|
||||||
$(package)_config_opts_aarch64_linux=linux-generic64
|
$(package)_config_opts_aarch64_linux=linux-generic64
|
||||||
$(package)_config_opts_mipsel_linux=linux-generic32
|
$(package)_config_opts_mipsel_linux=linux-generic32
|
||||||
$(package)_config_opts_mips_linux=linux-generic32
|
$(package)_config_opts_mips_linux=linux-generic32
|
||||||
$(package)_config_opts_powerpc_linux=linux-generic32
|
$(package)_config_opts_powerpc_linux=linux-generic32
|
||||||
$(package)_config_opts_riscv32_linux=linux-generic32
|
|
||||||
$(package)_config_opts_riscv64_linux=linux-generic64
|
|
||||||
$(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc
|
$(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc
|
||||||
$(package)_config_opts_x86_64_mingw32=mingw64
|
$(package)_config_opts_x86_64_mingw32=mingw64
|
||||||
$(package)_config_opts_i686_mingw32=mingw
|
$(package)_config_opts_i686_mingw32=mingw
|
||||||
|
|
1
depends/packages/packages.icu.mk
Normal file
1
depends/packages/packages.icu.mk
Normal file
|
@ -0,0 +1 @@
|
||||||
|
packages:=icu
|
|
@ -1,10 +1,12 @@
|
||||||
packages:=boost openssl libevent zeromq
|
packages:=boost openssl libevent
|
||||||
|
darwin_packages:=zeromq
|
||||||
|
linux_packages:=zeromq
|
||||||
|
native_packages := native_ccache native_comparisontool
|
||||||
|
|
||||||
qt_native_packages = native_protobuf
|
qt_native_packages = native_protobuf
|
||||||
qt_packages = qrencode protobuf zlib
|
qt_packages = qrencode protobuf
|
||||||
|
|
||||||
qt_linux_packages:=qt expat dbus libxcb xcb_proto libXau xproto freetype fontconfig libX11 xextproto libXext xtrans
|
|
||||||
|
|
||||||
|
qt_linux_packages= qt expat dbus libxcb xcb_proto libXau xproto freetype fontconfig libX11 xextproto libXext xtrans
|
||||||
qt_darwin_packages=qt
|
qt_darwin_packages=qt
|
||||||
qt_mingw32_packages=qt
|
qt_mingw32_packages=qt
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ $(package)_download_path=$(native_$(package)_download_path)
|
||||||
$(package)_file_name=$(native_$(package)_file_name)
|
$(package)_file_name=$(native_$(package)_file_name)
|
||||||
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
||||||
$(package)_dependencies=native_$(package)
|
$(package)_dependencies=native_$(package)
|
||||||
$(package)_cxxflags=-std=c++11
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package=qrencode
|
package=qrencode
|
||||||
$(package)_version=3.4.4
|
$(package)_version=3.4.4
|
||||||
$(package)_download_path=https://fukuchi.org/works/qrencode/
|
$(package)_download_path=https://fukuchi.org/works/qrencode/
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
$(package)_file_name=qrencode-$(qrencode_version).tar.bz2
|
||||||
$(package)_sha256_hash=efe5188b1ddbcbf98763b819b146be6a90481aac30cfc8d858ab78a19cde1fa5
|
$(package)_sha256_hash=efe5188b1ddbcbf98763b819b146be6a90481aac30cfc8d858ab78a19cde1fa5
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
|
|
|
@ -1,47 +1,42 @@
|
||||||
PACKAGE=qt
|
PACKAGE=qt
|
||||||
$(package)_version=5.9.6
|
$(package)_version=5.5.0
|
||||||
$(package)_download_path=https://download.qt.io/official_releases/qt/5.9/$($(package)_version)/submodules
|
$(package)_download_path=http://download.qt.io/official_releases/qt/5.5/$($(package)_version)/submodules
|
||||||
$(package)_suffix=opensource-src-$($(package)_version).tar.xz
|
$(package)_suffix=opensource-src-$($(package)_version).tar.gz
|
||||||
$(package)_file_name=qtbase-$($(package)_suffix)
|
$(package)_file_name=qtbase-$($(package)_suffix)
|
||||||
$(package)_sha256_hash=eed620cb268b199bd83b3fc6a471c51d51e1dc2dbb5374fc97a0cc75facbe36f
|
$(package)_sha256_hash=7e82b1318f88e56a2a9376e069aa608d4fd96b48cb0e1b880ae658b0a1af0561
|
||||||
$(package)_dependencies=openssl zlib
|
$(package)_dependencies=openssl
|
||||||
$(package)_linux_dependencies=freetype fontconfig libxcb libX11 xproto libXext
|
$(package)_linux_dependencies=freetype fontconfig dbus libxcb libX11 xproto libXext
|
||||||
$(package)_build_subdir=qtbase
|
$(package)_build_subdir=qtbase
|
||||||
$(package)_qt_libs=corelib network widgets gui plugins testlib
|
$(package)_qt_libs=corelib network widgets gui plugins testlib
|
||||||
$(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch fix_no_printer.patch fix_rcc_determinism.patch xkb-default.patch
|
$(package)_patches=mac-qmake.conf fix-xcb-include-order.patch mingw-uuidof.patch pidlist_absolute.patch
|
||||||
|
|
||||||
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
|
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
|
||||||
$(package)_qttranslations_sha256_hash=9822084f8e2d2939ba39f4af4c0c2320e45d5996762a9423f833055607604ed8
|
$(package)_qttranslations_sha256_hash=c4bd6db6e426965c6f8824c54e81f68bbd61e2bae1bcadc328c6e81c45902a0d
|
||||||
|
|
||||||
$(package)_qttools_file_name=qttools-$($(package)_suffix)
|
$(package)_qttools_file_name=qttools-$($(package)_suffix)
|
||||||
$(package)_qttools_sha256_hash=50e75417ec0c74bb8b1989d1d8e981ee83690dce7dfc0c2169f7c00f397e5117
|
$(package)_qttools_sha256_hash=d9e06bd19ecc86afba5e95d45a906d1bc1ad579aa70001e36143c1aaf695bdd6
|
||||||
|
|
||||||
$(package)_extra_sources = $($(package)_qttranslations_file_name)
|
$(package)_extra_sources = $($(package)_qttranslations_file_name)
|
||||||
$(package)_extra_sources += $($(package)_qttools_file_name)
|
$(package)_extra_sources += $($(package)_qttools_file_name)
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts_release = -release
|
$(package)_config_opts_release = -release
|
||||||
$(package)_config_opts_debug = -debug
|
$(package)_config_opts_debug = -debug
|
||||||
$(package)_config_opts += -bindir $(build_prefix)/bin
|
$(package)_config_opts += -opensource -confirm-license
|
||||||
$(package)_config_opts += -c++std c++11
|
$(package)_config_opts += -no-audio-backend
|
||||||
$(package)_config_opts += -confirm-license
|
|
||||||
$(package)_config_opts += -dbus-runtime
|
|
||||||
$(package)_config_opts += -hostprefix $(build_prefix)
|
|
||||||
$(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-glib
|
$(package)_config_opts += -no-glib
|
||||||
$(package)_config_opts += -no-icu
|
$(package)_config_opts += -no-icu
|
||||||
|
$(package)_config_opts += -no-cups
|
||||||
$(package)_config_opts += -no-iconv
|
$(package)_config_opts += -no-iconv
|
||||||
$(package)_config_opts += -no-kms
|
$(package)_config_opts += -no-gif
|
||||||
$(package)_config_opts += -no-linuxfb
|
$(package)_config_opts += -no-freetype
|
||||||
$(package)_config_opts += -no-libudev
|
$(package)_config_opts += -no-nis
|
||||||
$(package)_config_opts += -no-mtdev
|
$(package)_config_opts += -no-pch
|
||||||
$(package)_config_opts += -no-openvg
|
|
||||||
$(package)_config_opts += -no-reduce-relocations
|
|
||||||
$(package)_config_opts += -no-qml-debug
|
$(package)_config_opts += -no-qml-debug
|
||||||
|
$(package)_config_opts += -nomake examples
|
||||||
|
$(package)_config_opts += -nomake tests
|
||||||
|
$(package)_config_opts += -no-feature-style-windowsmobile
|
||||||
|
$(package)_config_opts += -no-feature-style-windowsce
|
||||||
$(package)_config_opts += -no-sql-db2
|
$(package)_config_opts += -no-sql-db2
|
||||||
$(package)_config_opts += -no-sql-ibase
|
$(package)_config_opts += -no-sql-ibase
|
||||||
$(package)_config_opts += -no-sql-oci
|
$(package)_config_opts += -no-sql-oci
|
||||||
|
@ -51,27 +46,36 @@ $(package)_config_opts += -no-sql-odbc
|
||||||
$(package)_config_opts += -no-sql-psql
|
$(package)_config_opts += -no-sql-psql
|
||||||
$(package)_config_opts += -no-sql-sqlite
|
$(package)_config_opts += -no-sql-sqlite
|
||||||
$(package)_config_opts += -no-sql-sqlite2
|
$(package)_config_opts += -no-sql-sqlite2
|
||||||
$(package)_config_opts += -no-use-gold-linker
|
|
||||||
$(package)_config_opts += -no-xinput2
|
|
||||||
$(package)_config_opts += -nomake examples
|
|
||||||
$(package)_config_opts += -nomake tests
|
|
||||||
$(package)_config_opts += -opensource
|
|
||||||
$(package)_config_opts += -openssl-linked
|
|
||||||
$(package)_config_opts += -optimized-qmake
|
|
||||||
$(package)_config_opts += -pch
|
|
||||||
$(package)_config_opts += -pkg-config
|
|
||||||
$(package)_config_opts += -prefix $(host_prefix)
|
$(package)_config_opts += -prefix $(host_prefix)
|
||||||
$(package)_config_opts += -qt-libpng
|
$(package)_config_opts += -hostprefix $(build_prefix)
|
||||||
$(package)_config_opts += -qt-libjpeg
|
$(package)_config_opts += -bindir $(build_prefix)/bin
|
||||||
$(package)_config_opts += -qt-pcre
|
$(package)_config_opts += -no-c++11
|
||||||
$(package)_config_opts += -system-zlib
|
$(package)_config_opts += -openssl-linked
|
||||||
|
$(package)_config_opts += -v
|
||||||
$(package)_config_opts += -static
|
$(package)_config_opts += -static
|
||||||
$(package)_config_opts += -silent
|
$(package)_config_opts += -silent
|
||||||
$(package)_config_opts += -v
|
$(package)_config_opts += -pkg-config
|
||||||
$(package)_config_opts += -no-feature-printer
|
$(package)_config_opts += -qt-libpng
|
||||||
$(package)_config_opts += -no-feature-printdialog
|
$(package)_config_opts += -qt-libjpeg
|
||||||
$(package)_config_opts += -no-feature-concurrent
|
$(package)_config_opts += -qt-zlib
|
||||||
$(package)_config_opts += -no-feature-xml
|
$(package)_config_opts += -qt-pcre
|
||||||
|
$(package)_config_opts += -no-pulseaudio
|
||||||
|
$(package)_config_opts += -no-openvg
|
||||||
|
$(package)_config_opts += -no-xrender
|
||||||
|
$(package)_config_opts += -no-alsa
|
||||||
|
$(package)_config_opts += -no-mtdev
|
||||||
|
$(package)_config_opts += -no-gstreamer
|
||||||
|
$(package)_config_opts += -no-mitshm
|
||||||
|
$(package)_config_opts += -no-kms
|
||||||
|
$(package)_config_opts += -no-reduce-relocations
|
||||||
|
$(package)_config_opts += -no-egl
|
||||||
|
$(package)_config_opts += -no-eglfs
|
||||||
|
$(package)_config_opts += -no-linuxfb
|
||||||
|
$(package)_config_opts += -no-xinput2
|
||||||
|
$(package)_config_opts += -no-libudev
|
||||||
|
$(package)_config_opts += -no-use-gold-linker
|
||||||
|
$(package)_config_opts += -reduce-exports
|
||||||
|
$(package)_config_opts += -optimized-qmake
|
||||||
|
|
||||||
ifneq ($(build_os),darwin)
|
ifneq ($(build_os),darwin)
|
||||||
$(package)_config_opts_darwin = -xplatform macx-clang-linux
|
$(package)_config_opts_darwin = -xplatform macx-clang-linux
|
||||||
|
@ -83,19 +87,16 @@ $(package)_config_opts_darwin += -device-option MAC_TARGET=$(host)
|
||||||
$(package)_config_opts_darwin += -device-option MAC_LD64_VERSION=$(LD64_VERSION)
|
$(package)_config_opts_darwin += -device-option MAC_LD64_VERSION=$(LD64_VERSION)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(package)_config_opts_linux = -qt-xkbcommon-x11
|
$(package)_config_opts_linux = -qt-xkbcommon
|
||||||
$(package)_config_opts_linux += -qt-xcb
|
$(package)_config_opts_linux += -qt-xcb
|
||||||
$(package)_config_opts_linux += -system-freetype
|
$(package)_config_opts_linux += -system-freetype
|
||||||
$(package)_config_opts_linux += -no-feature-sessionmanager
|
$(package)_config_opts_linux += -no-sm
|
||||||
$(package)_config_opts_linux += -fontconfig
|
$(package)_config_opts_linux += -fontconfig
|
||||||
$(package)_config_opts_linux += -no-opengl
|
$(package)_config_opts_linux += -no-opengl
|
||||||
$(package)_config_opts_arm_linux += -platform linux-g++ -xplatform bitcoin-linux-g++
|
$(package)_config_opts_arm_linux = -platform linux-g++ -xplatform $(host)
|
||||||
$(package)_config_opts_i686_linux = -xplatform linux-g++-32
|
$(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_mingw32 = -no-opengl -xplatform win32-g++ -device-option CROSS_COMPILE="$(host)-"
|
$(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_TEST=1
|
||||||
$(package)_build_env += QT_RCC_SOURCE_DATE_OVERRIDE=1
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_fetch_cmds
|
define $(package)_fetch_cmds
|
||||||
|
@ -119,33 +120,24 @@ define $(package)_extract_cmds
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
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 "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
|
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_xml src_network/src_plugins.depends = src_xml src_network/" qtbase/src/src.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 "s|X11/extensions/XIproto.h|X11/X.h|" qtbase/src/plugins/platforms/xcb/qxcbxsettings.cpp && \
|
||||||
sed -i.old 's/if \[ "$$$$XPLATFORM_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/if \[ "$$$$BUILD_ON_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/' qtbase/configure && \
|
sed -i.old 's/if \[ "$$$$XPLATFORM_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/if \[ "$$$$BUILD_ON_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/' 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 &&\
|
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.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/Info.plist.app qtbase/mkspecs/macx-clang-linux/ &&\
|
||||||
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h 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 -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \
|
||||||
cp -r qtbase/mkspecs/linux-arm-gnueabi-g++ qtbase/mkspecs/bitcoin-linux-g++ && \
|
patch -p1 < $($(package)_patch_dir)/fix-xcb-include-order.patch && \
|
||||||
sed -i.old "s/arm-linux-gnueabi-/$(host)-/g" qtbase/mkspecs/bitcoin-linux-g++/qmake.conf && \
|
patch -p1 < $($(package)_patch_dir)/mingw-uuidof.patch && \
|
||||||
patch -p1 -i $($(package)_patch_dir)/fix_qt_pkgconfig.patch &&\
|
patch -p1 < $($(package)_patch_dir)/pidlist_absolute.patch && \
|
||||||
patch -p1 -i $($(package)_patch_dir)/fix_configure_mac.patch &&\
|
echo "QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||||
patch -p1 -i $($(package)_patch_dir)/fix_no_printer.patch &&\
|
echo "QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||||
patch -p1 -i $($(package)_patch_dir)/fix_rcc_determinism.patch &&\
|
echo "QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||||
patch -p1 -i $($(package)_patch_dir)/xkb-default.patch &&\
|
sed -i.old "s|QMAKE_CFLAGS = |QMAKE_CFLAGS = $($(package)_cflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
|
||||||
echo "!host_build: QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
sed -i.old "s|QMAKE_LFLAGS = |QMAKE_LFLAGS = $($(package)_ldflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
|
||||||
echo "!host_build: QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
sed -i.old "s|QMAKE_CXXFLAGS = |QMAKE_CXXFLAGS = $($(package)_cxxflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf
|
||||||
echo "!host_build: QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
|
||||||
echo "QMAKE_LINK_OBJECT_MAX = 10" >> qtbase/mkspecs/win32-g++/qmake.conf &&\
|
|
||||||
echo "QMAKE_LINK_OBJECT_SCRIPT = object_script" >> qtbase/mkspecs/win32-g++/qmake.conf &&\
|
|
||||||
sed -i.old "s|QMAKE_CFLAGS = |!host_build: QMAKE_CFLAGS = $($(package)_cflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
|
|
||||||
sed -i.old "s|QMAKE_LFLAGS = |!host_build: QMAKE_LFLAGS = $($(package)_ldflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
|
|
||||||
sed -i.old "s|QMAKE_CXXFLAGS = |!host_build: QMAKE_CXXFLAGS = $($(package)_cxxflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
|
@ -153,26 +145,21 @@ define $(package)_config_cmds
|
||||||
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \
|
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \
|
||||||
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \
|
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \
|
||||||
./configure $($(package)_config_opts) && \
|
./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 && \
|
$(MAKE) sub-src-clean && \
|
||||||
cd ../qttranslations && ../qtbase/bin/qmake qttranslations.pro -o Makefile && \
|
cd ../qttranslations && ../qtbase/bin/qmake qttranslations.pro -o Makefile && \
|
||||||
cd translations && ../../qtbase/bin/qmake translations.pro -o Makefile && cd ../.. && \
|
cd translations && ../../qtbase/bin/qmake translations.pro -o Makefile && cd ../.. &&\
|
||||||
cd qttools/src/linguist/lrelease/ && ../../../../qtbase/bin/qmake lrelease.pro -o Makefile && \
|
cd qttools/src/linguist/lrelease/ && ../../../../qtbase/bin/qmake lrelease.pro -o Makefile
|
||||||
cd ../lupdate/ && ../../../../qtbase/bin/qmake lupdate.pro -o Makefile && cd ../../../..
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
$(MAKE) -C src $(addprefix sub-,$($(package)_qt_libs)) && \
|
$(MAKE) -C src $(addprefix sub-,$($(package)_qt_libs)) && \
|
||||||
$(MAKE) -C ../qttools/src/linguist/lrelease && \
|
$(MAKE) -C ../qttools/src/linguist/lrelease && \
|
||||||
$(MAKE) -C ../qttools/src/linguist/lupdate && \
|
|
||||||
$(MAKE) -C ../qttranslations
|
$(MAKE) -C ../qttranslations
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
$(MAKE) -C src INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_qt_libs))) && cd .. && \
|
$(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/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 && \
|
$(MAKE) -C qttranslations INSTALL_ROOT=$($(package)_staging_dir) install_subtargets && \
|
||||||
if `test -f qtbase/src/plugins/platforms/xcb/xcb-static/libxcb-static.a`; then \
|
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; \
|
cp qtbase/src/plugins/platforms/xcb/xcb-static/libxcb-static.a $($(package)_staging_prefix_dir)/lib; \
|
||||||
|
|
66
depends/packages/qt46.mk
Normal file
66
depends/packages/qt46.mk
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
PACKAGE=qt46
|
||||||
|
$(package)_version=4.6.4
|
||||||
|
$(package)_download_path=http://download.qt-project.org/archive/qt/4.6/
|
||||||
|
$(package)_file_name=qt-everywhere-opensource-src-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=9ad4d46c721b53a429ed5a2eecfd3c239a9ab566562f183f99d3125f1a234250
|
||||||
|
$(package)_dependencies=openssl freetype dbus libX11 xproto libXext libICE libSM
|
||||||
|
$(package)_patches=stlfix.patch
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts = -prefix $(host_prefix) -headerdir $(host_prefix)/include/qt4 -bindir $(build_prefix)/bin
|
||||||
|
$(package)_config_opts += -release -no-separate-debug-info -opensource -confirm-license
|
||||||
|
$(package)_config_opts += -stl -qt-zlib
|
||||||
|
|
||||||
|
$(package)_config_opts += -nomake examples -nomake tests -nomake tools -nomake translations -nomake demos -nomake docs
|
||||||
|
$(package)_config_opts += -no-audio-backend -no-glib -no-nis -no-cups -no-iconv -no-gif -no-pch
|
||||||
|
$(package)_config_opts += -no-xkb -no-xrender -no-xrandr -no-xfixes -no-xcursor -no-xinerama -no-xsync -no-xinput -no-mitshm -no-xshape
|
||||||
|
$(package)_config_opts += -no-libtiff -no-fontconfig -openssl-linked
|
||||||
|
$(package)_config_opts += -no-sql-db2 -no-sql-ibase -no-sql-oci -no-sql-tds -no-sql-mysql
|
||||||
|
$(package)_config_opts += -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2
|
||||||
|
$(package)_config_opts += -no-xmlpatterns -no-multimedia -no-phonon -no-scripttools -no-declarative
|
||||||
|
$(package)_config_opts += -no-phonon-backend -no-webkit -no-javascript-jit -no-script
|
||||||
|
$(package)_config_opts += -no-svg -no-libjpeg -no-libtiff -no-libpng -no-libmng -no-qt3support -no-opengl
|
||||||
|
|
||||||
|
$(package)_config_opts_x86_64_linux += -platform linux-g++-64
|
||||||
|
$(package)_config_opts_i686_linux = -platform linux-g++-32
|
||||||
|
$(package)_build_env = QT_RCC_TEST=1
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
sed -i.old "s|/include /usr/include||" config.tests/unix/freetype/freetype.pri && \
|
||||||
|
sed -i.old "s|src_plugins.depends = src_gui src_sql src_svg|src_plugins.depends = src_gui src_sql|" src/src.pro && \
|
||||||
|
sed -i.old "s|\.lower(|\.toLower(|g" src/network/ssl/qsslsocket_openssl.cpp && \
|
||||||
|
sed -i.old "s|Key_BackSpace|Key_Backspace|" src/gui/itemviews/qabstractitemview.cpp && \
|
||||||
|
sed -i.old "s|/usr/X11R6/lib64|$(host_prefix)/lib|" mkspecs/*/*.conf && \
|
||||||
|
sed -i.old "s|/usr/X11R6/lib|$(host_prefix)/lib|" mkspecs/*/*.conf && \
|
||||||
|
sed -i.old "s|/usr/X11R6/include|$(host_prefix)/include|" mkspecs/*/*.conf && \
|
||||||
|
sed -i.old "s|QMAKE_LFLAGS_SHLIB\t+= -shared|QMAKE_LFLAGS_SHLIB\t+= -shared -Wl,--exclude-libs,ALL|" mkspecs/common/g++.conf && \
|
||||||
|
sed -i.old "/SSLv2_client_method/d" src/network/ssl/qsslsocket_openssl.cpp src/network/ssl/qsslsocket_openssl_symbols.cpp && \
|
||||||
|
sed -i.old "/SSLv2_server_method/d" src/network/ssl/qsslsocket_openssl.cpp src/network/ssl/qsslsocket_openssl_symbols.cpp && \
|
||||||
|
patch -p1 < $($(package)_patch_dir)/stlfix.patch
|
||||||
|
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 && \
|
||||||
|
export CPATH=$(host_prefix)/include && \
|
||||||
|
OPENSSL_LIBS='-L$(host_prefix)/lib -lssl -lcrypto' ./configure $($(package)_config_opts) && \
|
||||||
|
cd tools/linguist/lrelease; ../../../bin/qmake -o Makefile lrelease.pro
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
export CPATH=$(host_prefix)/include && \
|
||||||
|
$(MAKE) -C src && \
|
||||||
|
$(MAKE) -C tools/linguist/lrelease
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) -C src INSTALL_ROOT=$($(package)_staging_dir) install && \
|
||||||
|
$(MAKE) -C tools/linguist/lrelease INSTALL_ROOT=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm -rf mkspecs/ lib/cmake/ lib/*.prl lib/*.la && \
|
||||||
|
find native/bin -type f -exec mv {} {}-qt4 \;
|
||||||
|
endef
|
|
@ -4,10 +4,6 @@ $(package)_download_path=http://xorg.freedesktop.org/releases/individual/proto
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=f3f4b23ac8db9c3a9e0d8edb591713f3d70ef9c3b175970dd8823dfc92aa5bb0
|
$(package)_sha256_hash=f3f4b23ac8db9c3a9e0d8edb591713f3d70ef9c3b175970dd8823dfc92aa5bb0
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
|
||||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub .
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-shared
|
$(package)_config_opts=--disable-shared
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -1,20 +1,12 @@
|
||||||
package=zeromq
|
package=zeromq
|
||||||
$(package)_version=4.3.1
|
$(package)_version=4.0.7
|
||||||
$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/
|
$(package)_download_path=http://download.zeromq.org
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=bcbabe1e2c7d0eec4ed612e10b94b112dd5f06fcefa994a0c79a45d835cd21eb
|
$(package)_sha256_hash=e00b2967e074990d0538361cc79084a0a92892df2c6e7585da34e4c61ee47b03
|
||||||
$(package)_patches=0001-fix-build-with-older-mingw64.patch 0002-disable-pthread_set_name_np.patch
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--without-docs --disable-shared --without-libsodium --disable-curve --disable-curve-keygen --disable-perf --disable-Werror
|
$(package)_config_opts=--without-documentation --disable-shared
|
||||||
$(package)_config_opts_linux=--with-pic
|
$(package)_config_opts_linux=--with-pic
|
||||||
$(package)_cxxflags=-std=c++11
|
|
||||||
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
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
|
@ -22,14 +14,13 @@ define $(package)_config_cmds
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
$(MAKE) src/libzmq.la
|
$(MAKE) -C src
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install-libLTLIBRARIES install-includeHEADERS install-pkgconfigDATA
|
$(MAKE) -C src DESTDIR=$($(package)_staging_dir) install
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_postprocess_cmds
|
define $(package)_postprocess_cmds
|
||||||
sed -i.old "s/ -lstdc++//" lib/pkgconfig/libzmq.pc && \
|
|
||||||
rm -rf bin share
|
rm -rf bin share
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
package=zlib
|
|
||||||
$(package)_version=1.2.11
|
|
||||||
$(package)_download_path=http://www.zlib.net
|
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
|
||||||
$(package)_sha256_hash=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
|
||||||
$(package)_build_opts= CC="$($(package)_cc)"
|
|
||||||
$(package)_build_opts+=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC"
|
|
||||||
$(package)_build_opts+=RANLIB="$($(package)_ranlib)"
|
|
||||||
$(package)_build_opts+=AR="$($(package)_ar)"
|
|
||||||
$(package)_build_opts_darwin+=AR="$($(package)_libtool)"
|
|
||||||
$(package)_build_opts_darwin+=ARFLAGS="-o"
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_config_cmds
|
|
||||||
./configure --static --prefix=$(host_prefix)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_build_cmds
|
|
||||||
$(MAKE) $($(package)_build_opts) libz.a
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install $($(package)_build_opts)
|
|
||||||
endef
|
|
||||||
|
|
21
depends/patches/libevent/reuseaddr.patch
Normal file
21
depends/patches/libevent/reuseaddr.patch
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
--- old/evutil.c 2015-08-28 19:26:23.488765923 -0400
|
||||||
|
+++ new/evutil.c 2015-08-28 19:27:41.392767019 -0400
|
||||||
|
@@ -321,15 +321,16 @@
|
||||||
|
int
|
||||||
|
evutil_make_listen_socket_reuseable(evutil_socket_t sock)
|
||||||
|
{
|
||||||
|
-#ifndef WIN32
|
||||||
|
int one = 1;
|
||||||
|
+#ifndef WIN32
|
||||||
|
/* REUSEADDR on Unix means, "don't hang on to this address after the
|
||||||
|
* listener is closed." On Windows, though, it means "don't keep other
|
||||||
|
* processes from binding to this address while we're using it. */
|
||||||
|
return setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*) &one,
|
||||||
|
(ev_socklen_t)sizeof(one));
|
||||||
|
#else
|
||||||
|
- return 0;
|
||||||
|
+ return setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*) &one,
|
||||||
|
+ (ev_socklen_t)sizeof(one));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
45
depends/patches/qt/fix-xcb-include-order.patch
Normal file
45
depends/patches/qt/fix-xcb-include-order.patch
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
--- old/qtbase/src/plugins/platforms/xcb/xcb_qpa_lib.pro 2015-03-17 02:06:42.705930685 +0000
|
||||||
|
+++ new/qtbase/src/plugins/platforms/xcb/xcb_qpa_lib.pro 2015-03-17 02:08:41.281926351 +0000
|
||||||
|
@@ -94,8 +94,6 @@
|
||||||
|
|
||||||
|
DEFINES += $$QMAKE_DEFINES_XCB
|
||||||
|
LIBS += $$QMAKE_LIBS_XCB
|
||||||
|
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB
|
||||||
|
-QMAKE_CFLAGS += $$QMAKE_CFLAGS_XCB
|
||||||
|
|
||||||
|
CONFIG += qpa/genericunixfontdatabase
|
||||||
|
|
||||||
|
@@ -104,7 +102,8 @@
|
||||||
|
contains(QT_CONFIG, xcb-qt) {
|
||||||
|
DEFINES += XCB_USE_RENDER
|
||||||
|
XCB_DIR = ../../../3rdparty/xcb
|
||||||
|
- INCLUDEPATH += $$XCB_DIR/include $$XCB_DIR/sysinclude
|
||||||
|
+ QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||||
|
+ QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||||
|
LIBS += -lxcb -L$$OUT_PWD/xcb-static -lxcb-static
|
||||||
|
} else {
|
||||||
|
LIBS += -lxcb -lxcb-image -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shm -lxcb-randr -lxcb-shape -lxcb-keysyms
|
||||||
|
--- old/qtbase/src/plugins/platforms/xcb/xcb-static/xcb-static.pro 2015-03-17 02:07:04.641929383 +0000
|
||||||
|
+++ new/qtbase/src/plugins/platforms/xcb/xcb-static/xcb-static.pro 2015-03-17 02:10:15.485922059 +0000
|
||||||
|
@@ -8,7 +8,8 @@
|
||||||
|
|
||||||
|
XCB_DIR = ../../../../3rdparty/xcb
|
||||||
|
|
||||||
|
-INCLUDEPATH += $$XCB_DIR/include $$XCB_DIR/include/xcb $$XCB_DIR/sysinclude
|
||||||
|
+QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/include/xcb -I$$XCB_DIR/sysinclude
|
||||||
|
+QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/include/xcb -I$$XCB_DIR/sysinclude
|
||||||
|
|
||||||
|
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB
|
||||||
|
QMAKE_CFLAGS += $$QMAKE_CFLAGS_XCB
|
||||||
|
--- old/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-07-24 16:02:59.530038830 -0400
|
||||||
|
+++ new/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-07-24 16:01:22.106037459 -0400
|
||||||
|
@@ -11,3 +11,9 @@
|
||||||
|
qxcbmain.cpp
|
||||||
|
OTHER_FILES += xcb.json README
|
||||||
|
|
||||||
|
+contains(QT_CONFIG, xcb-qt) {
|
||||||
|
+ DEFINES += XCB_USE_RENDER
|
||||||
|
+ XCB_DIR = ../../../3rdparty/xcb
|
||||||
|
+ QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||||
|
+ QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB
|
||||||
|
+}
|
|
@ -1,50 +0,0 @@
|
||||||
--- old/qtbase/mkspecs/features/mac/sdk.prf 2018-02-08 10:24:48.000000000 -0800
|
|
||||||
+++ new/qtbase/mkspecs/features/mac/sdk.prf 2018-03-23 10:38:56.000000000 -0700
|
|
||||||
@@ -8,21 +8,21 @@
|
|
||||||
defineReplace(xcodeSDKInfo) {
|
|
||||||
info = $$1
|
|
||||||
equals(info, "Path"): \
|
|
||||||
- info = --show-sdk-path
|
|
||||||
+ infoarg = --show-sdk-path
|
|
||||||
equals(info, "PlatformPath"): \
|
|
||||||
- info = --show-sdk-platform-path
|
|
||||||
+ infoarg = --show-sdk-platform-path
|
|
||||||
equals(info, "SDKVersion"): \
|
|
||||||
- info = --show-sdk-version
|
|
||||||
+ infoarg = --show-sdk-version
|
|
||||||
sdk = $$2
|
|
||||||
isEmpty(sdk): \
|
|
||||||
sdk = $$QMAKE_MAC_SDK
|
|
||||||
|
|
||||||
isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) {
|
|
||||||
- QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcrun --sdk $$sdk $$info 2>/dev/null")
|
|
||||||
+ QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcrun --sdk $$sdk $$infoarg 2>/dev/null")
|
|
||||||
# --show-sdk-platform-path won't work for Command Line Tools; this is fine
|
|
||||||
# only used by the XCTest backend to testlib
|
|
||||||
- isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}):if(!isEmpty(QMAKE_XCODEBUILD_PATH)|!equals(info, "--show-sdk-platform-path")): \
|
|
||||||
- error("Could not resolve SDK $$info for \'$$sdk\'")
|
|
||||||
+ isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}):if(!isEmpty(QMAKE_XCODEBUILD_PATH)|!equals(infoarg, "--show-sdk-platform-path")): \
|
|
||||||
+ error("Could not resolve SDK $$info for \'$$sdk\' using $$infoarg")
|
|
||||||
cache(QMAKE_MAC_SDK.$${sdk}.$${info}, set stash, QMAKE_MAC_SDK.$${sdk}.$${info})
|
|
||||||
}
|
|
||||||
|
|
||||||
--- old/qtbase/configure 2018-02-08 10:24:48.000000000 -0800
|
|
||||||
+++ new/qtbase/configure 2018-03-23 05:42:29.000000000 -0700
|
|
||||||
@@ -232,8 +232,13 @@
|
|
||||||
|
|
||||||
sdk=$(getSingleQMakeVariable "QMAKE_MAC_SDK" "$1")
|
|
||||||
if [ -z "$sdk" ]; then echo "QMAKE_MAC_SDK must be set when building on Mac" >&2; exit 1; fi
|
|
||||||
- sysroot=$(/usr/bin/xcrun --sdk $sdk --show-sdk-path 2>/dev/null)
|
|
||||||
- if [ -z "$sysroot" ]; then echo "Failed to resolve SDK path for '$sdk'" >&2; exit 1; fi
|
|
||||||
+ sysroot=$(getSingleQMakeVariable "QMAKE_MAC_SDK_PATH" "$1")
|
|
||||||
+
|
|
||||||
+ echo "sysroot pre-configured as $sysroot";
|
|
||||||
+ if [ -z "$sysroot" ]; then
|
|
||||||
+ sysroot=$(/usr/bin/xcrun --sdk $sdk --show-sdk-path 2>/dev/null)
|
|
||||||
+ if [ -z "$sysroot" ]; then echo "Failed to resolve SDK path for '$sdk'" >&2; exit 1; fi
|
|
||||||
+ fi
|
|
||||||
|
|
||||||
case "$sdk" in
|
|
||||||
macosx*)
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
--- x/qtbase/src/plugins/platforms/cocoa/qprintengine_mac_p.h
|
|
||||||
+++ y/qtbase/src/plugins/platforms/cocoa/qprintengine_mac_p.h
|
|
||||||
@@ -52,6 +52,7 @@
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <QtCore/qglobal.h>
|
|
||||||
+#include <qpa/qplatformprintdevice.h>
|
|
||||||
|
|
||||||
#ifndef QT_NO_PRINTER
|
|
||||||
|
|
||||||
--- x/qtbase/src/plugins/plugins.pro
|
|
||||||
+++ y/qtbase/src/plugins/plugins.pro
|
|
||||||
@@ -8,6 +8,3 @@ qtHaveModule(gui) {
|
|
||||||
qtConfig(imageformatplugin): SUBDIRS *= imageformats
|
|
||||||
!android:qtConfig(library): SUBDIRS *= generic
|
|
||||||
}
|
|
||||||
-
|
|
||||||
-!winrt:qtHaveModule(printsupport): \
|
|
||||||
- SUBDIRS += printsupport
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- old/qtbase/mkspecs/features/qt_module.prf
|
|
||||||
+++ new/qtbase/mkspecs/features/qt_module.prf
|
|
||||||
@@ -245,7 +245,7 @@
|
|
||||||
load(qt_targets)
|
|
||||||
|
|
||||||
# this builds on top of qt_common
|
|
||||||
-!internal_module:!lib_bundle:if(unix|mingw) {
|
|
||||||
+unix|mingw {
|
|
||||||
CONFIG += create_pc
|
|
||||||
QMAKE_PKGCONFIG_DESTDIR = pkgconfig
|
|
||||||
host_build: \
|
|
|
@ -1,15 +0,0 @@
|
||||||
--- old/qtbase/src/tools/rcc/rcc.cpp
|
|
||||||
+++ new/qtbase/src/tools/rcc/rcc.cpp
|
|
||||||
@@ -207,7 +207,11 @@ void RCCFileInfo::writeDataInfo(RCCResourceLibrary &lib)
|
|
||||||
if (lib.formatVersion() >= 2) {
|
|
||||||
// last modified time stamp
|
|
||||||
const QDateTime lastModified = m_fileInfo.lastModified();
|
|
||||||
- lib.writeNumber8(quint64(lastModified.isValid() ? lastModified.toMSecsSinceEpoch() : 0));
|
|
||||||
+ quint64 lastmod = quint64(lastModified.isValid() ? lastModified.toMSecsSinceEpoch() : 0);
|
|
||||||
+ static const quint64 sourceDate = 1000 * qgetenv("QT_RCC_SOURCE_DATE_OVERRIDE").toULongLong();
|
|
||||||
+ if (sourceDate != 0)
|
|
||||||
+ lastmod = sourceDate;
|
|
||||||
+ lib.writeNumber8(lastmod);
|
|
||||||
if (text || pass1)
|
|
||||||
lib.writeChar('\n');
|
|
||||||
}
|
|
|
@ -1,5 +1,6 @@
|
||||||
MAKEFILE_GENERATOR = UNIX
|
MAKEFILE_GENERATOR = UNIX
|
||||||
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname
|
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname
|
||||||
|
DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG
|
||||||
QMAKE_INCREMENTAL_STYLE = sublib
|
QMAKE_INCREMENTAL_STYLE = sublib
|
||||||
include(../common/macx.conf)
|
include(../common/macx.conf)
|
||||||
include(../common/gcc-base-mac.conf)
|
include(../common/gcc-base-mac.conf)
|
||||||
|
@ -10,15 +11,14 @@ QMAKE_XCODE_VERSION=4.3
|
||||||
QMAKE_XCODE_DEVELOPER_PATH=/Developer
|
QMAKE_XCODE_DEVELOPER_PATH=/Developer
|
||||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = $${MAC_MIN_VERSION}
|
QMAKE_MACOSX_DEPLOYMENT_TARGET = $${MAC_MIN_VERSION}
|
||||||
QMAKE_MAC_SDK=macosx
|
QMAKE_MAC_SDK=macosx
|
||||||
QMAKE_MAC_SDK.macosx.Path = $${MAC_SDK_PATH}
|
QMAKE_MAC_SDK.macosx.path = $${MAC_SDK_PATH}
|
||||||
QMAKE_MAC_SDK.macosx.platform_name = macosx
|
QMAKE_MAC_SDK.macosx.platform_name = macosx
|
||||||
QMAKE_MAC_SDK.macosx.SDKVersion = $${MAC_SDK_VERSION}
|
QMAKE_MAC_SDK.macosx.version = $${MAC_SDK_VERSION}
|
||||||
QMAKE_MAC_SDK.macosx.PlatformPath = /phony
|
QMAKE_MAC_SDK.macosx.platform_path = /phony
|
||||||
QMAKE_APPLE_DEVICE_ARCHS=x86_64
|
QMAKE_CFLAGS += -target $${MAC_TARGET}
|
||||||
!host_build: QMAKE_CFLAGS += -target $${MAC_TARGET}
|
QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CFLAGS
|
||||||
!host_build: QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CFLAGS
|
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
|
||||||
!host_build: QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
|
QMAKE_LFLAGS += -target $${MAC_TARGET} -mlinker-version=$${MAC_LD64_VERSION}
|
||||||
!host_build: QMAKE_LFLAGS += -target $${MAC_TARGET} -mlinker-version=$${MAC_LD64_VERSION}
|
|
||||||
QMAKE_AR = $${CROSS_COMPILE}ar cq
|
QMAKE_AR = $${CROSS_COMPILE}ar cq
|
||||||
QMAKE_RANLIB=$${CROSS_COMPILE}ranlib
|
QMAKE_RANLIB=$${CROSS_COMPILE}ranlib
|
||||||
QMAKE_LIBTOOL=$${CROSS_COMPILE}libtool
|
QMAKE_LIBTOOL=$${CROSS_COMPILE}libtool
|
||||||
|
|
44
depends/patches/qt/mingw-uuidof.patch
Normal file
44
depends/patches/qt/mingw-uuidof.patch
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
--- old/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp 2015-06-20 17:40:20.956781548 -0400
|
||||||
|
+++ new/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp 2015-06-20 17:29:32.052772416 -0400
|
||||||
|
@@ -69,7 +69,7 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <windowsx.h>
|
||||||
|
-#ifndef Q_OS_WINCE
|
||||||
|
+#if !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1))
|
||||||
|
# include <comdef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -762,7 +762,7 @@
|
||||||
|
HWND_MESSAGE, NULL, (HINSTANCE)GetModuleHandle(0), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifndef Q_OS_WINCE
|
||||||
|
+#if !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1))
|
||||||
|
// Re-engineered from the inline function _com_error::ErrorMessage().
|
||||||
|
// We cannot use it directly since it uses swprintf_s(), which is not
|
||||||
|
// present in the MSVCRT.DLL found on Windows XP (QTBUG-35617).
|
||||||
|
@@ -781,7 +781,7 @@
|
||||||
|
return QStringLiteral("IDispatch error #") + QString::number(wCode);
|
||||||
|
return QStringLiteral("Unknown error 0x0") + QString::number(comError.Error(), 16);
|
||||||
|
}
|
||||||
|
-#endif // !Q_OS_WINCE
|
||||||
|
+#endif // !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1))
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Common COM error strings.
|
||||||
|
@@ -846,12 +846,12 @@
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
-#ifndef Q_OS_WINCE
|
||||||
|
+#if !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1))
|
||||||
|
_com_error error(hr);
|
||||||
|
result += QByteArrayLiteral(" (");
|
||||||
|
result += errorMessageFromComError(error);
|
||||||
|
result += ')';
|
||||||
|
-#endif // !Q_OS_WINCE
|
||||||
|
+#endif // !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1))
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
37
depends/patches/qt/pidlist_absolute.patch
Normal file
37
depends/patches/qt/pidlist_absolute.patch
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
diff -dur old/qtbase/src/plugins/platforms/windows/qwindowscontext.h new/qtbase/src/plugins/platforms/windows/qwindowscontext.h
|
||||||
|
--- old/qtbase/src/plugins/platforms/windows/qwindowscontext.h 2015-06-29 22:04:40.000000000 +0200
|
||||||
|
+++ new/qtbase/src/plugins/platforms/windows/qwindowscontext.h 2015-11-01 12:55:59.751234846 +0100
|
||||||
|
@@ -124,10 +124,18 @@
|
||||||
|
inline void init();
|
||||||
|
|
||||||
|
typedef HRESULT (WINAPI *SHCreateItemFromParsingName)(PCWSTR, IBindCtx *, const GUID&, void **);
|
||||||
|
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 3)
|
||||||
|
+ typedef HRESULT (WINAPI *SHGetKnownFolderIDList)(const GUID &, DWORD, HANDLE, ITEMIDLIST **);
|
||||||
|
+#else
|
||||||
|
typedef HRESULT (WINAPI *SHGetKnownFolderIDList)(const GUID &, DWORD, HANDLE, PIDLIST_ABSOLUTE *);
|
||||||
|
+#endif
|
||||||
|
typedef HRESULT (WINAPI *SHGetStockIconInfo)(int , int , _SHSTOCKICONINFO *);
|
||||||
|
typedef HRESULT (WINAPI *SHGetImageList)(int, REFIID , void **);
|
||||||
|
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 3)
|
||||||
|
+ typedef HRESULT (WINAPI *SHCreateItemFromIDList)(const ITEMIDLIST *, REFIID, void **);
|
||||||
|
+#else
|
||||||
|
typedef HRESULT (WINAPI *SHCreateItemFromIDList)(PCIDLIST_ABSOLUTE, REFIID, void **);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
SHCreateItemFromParsingName sHCreateItemFromParsingName;
|
||||||
|
SHGetKnownFolderIDList sHGetKnownFolderIDList;
|
||||||
|
diff -dur old/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp new/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
|
||||||
|
--- old/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp 2015-06-29 22:04:40.000000000 +0200
|
||||||
|
+++ new/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp 2015-11-01 13:41:09.503149772 +0100
|
||||||
|
@@ -1008,7 +1008,11 @@
|
||||||
|
qWarning() << __FUNCTION__ << ": Invalid CLSID: " << url.path();
|
||||||
|
return Q_NULLPTR;
|
||||||
|
}
|
||||||
|
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 3)
|
||||||
|
+ ITEMIDLIST *idList;
|
||||||
|
+#else
|
||||||
|
PIDLIST_ABSOLUTE idList;
|
||||||
|
+#endif
|
||||||
|
HRESULT hr = QWindowsContext::shell32dll.sHGetKnownFolderIDList(uuid, 0, 0, &idList);
|
||||||
|
if (FAILED(hr)) {
|
||||||
|
qErrnoWarning("%s: SHGetKnownFolderIDList(%s)) failed", __FUNCTION__, qPrintable(url.toString()));
|
|
@ -1,26 +0,0 @@
|
||||||
--- old/qtbase/src/gui/configure.pri 2018-06-06 17:28:10.000000000 -0400
|
|
||||||
+++ new/qtbase/src/gui/configure.pri 2018-08-17 18:43:01.589384567 -0400
|
|
||||||
@@ -43,18 +43,11 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
defineTest(qtConfTest_xkbConfigRoot) {
|
|
||||||
- qtConfTest_getPkgConfigVariable($${1}): return(true)
|
|
||||||
-
|
|
||||||
- for (dir, $$list("/usr/share/X11/xkb", "/usr/local/share/X11/xkb")) {
|
|
||||||
- exists($$dir) {
|
|
||||||
- $${1}.value = $$dir
|
|
||||||
- export($${1}.value)
|
|
||||||
- $${1}.cache += value
|
|
||||||
- export($${1}.cache)
|
|
||||||
- return(true)
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- return(false)
|
|
||||||
+ $${1}.value = "/usr/share/X11/xkb"
|
|
||||||
+ export($${1}.value)
|
|
||||||
+ $${1}.cache += value
|
|
||||||
+ export($${1}.cache)
|
|
||||||
+ return(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
defineTest(qtConfTest_qpaDefaultPlatform) {
|
|
10
depends/patches/qt46/stlfix.patch
Normal file
10
depends/patches/qt46/stlfix.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- old/config.tests/unix/stl/stltest.cpp 2011-06-23 03:45:23.000000000 -0400
|
||||||
|
+++ new/config.tests/unix/stl/stltest.cpp 2014-08-28 00:54:04.154837604 -0400
|
||||||
|
@@ -49,6 +49,7 @@
|
||||||
|
#include <vector>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <iostream>
|
||||||
|
+#include <cstddef>
|
||||||
|
|
||||||
|
// something mean to see if the compiler and C++ standard lib are good enough
|
||||||
|
template<class K, class T>
|
|
@ -1,30 +0,0 @@
|
||||||
From 1a159c128c69a42d90819375c06a39994f3fbfc1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Cory Fields <cory-nospam-@coryfields.com>
|
|
||||||
Date: Tue, 28 Nov 2017 20:33:25 -0500
|
|
||||||
Subject: [PATCH] fix build with older mingw64
|
|
||||||
|
|
||||||
---
|
|
||||||
src/windows.hpp | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/windows.hpp b/src/windows.hpp
|
|
||||||
index 99e889d..e69038e 100644
|
|
||||||
--- a/src/windows.hpp
|
|
||||||
+++ b/src/windows.hpp
|
|
||||||
@@ -55,6 +55,13 @@
|
|
||||||
#include <winsock2.h>
|
|
||||||
#include <windows.h>
|
|
||||||
#include <mswsock.h>
|
|
||||||
+
|
|
||||||
+#if defined __MINGW64_VERSION_MAJOR && __MINGW64_VERSION_MAJOR < 4
|
|
||||||
+// Workaround for mingw-w64 < v4.0 which did not include ws2ipdef.h in iphlpapi.h.
|
|
||||||
+// Fixed in mingw-w64 by 9bd8fe9148924840d315b4c915dd099955ea89d1.
|
|
||||||
+#include <ws2def.h>
|
|
||||||
+#include <ws2ipdef.h>
|
|
||||||
+#endif
|
|
||||||
#include <iphlpapi.h>
|
|
||||||
|
|
||||||
#if !defined __MINGW32__
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
From 6e6b47d5ab381c3df3b30bb0b0a6cf210dfb1eba Mon Sep 17 00:00:00 2001
|
|
||||||
From: Cory Fields <cory-nospam-@coryfields.com>
|
|
||||||
Date: Mon, 5 Mar 2018 14:22:05 -0500
|
|
||||||
Subject: [PATCH] disable pthread_set_name_np
|
|
||||||
|
|
||||||
pthread_set_name_np adds a Glibc requirement on >= 2.12.
|
|
||||||
---
|
|
||||||
src/thread.cpp | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/thread.cpp b/src/thread.cpp
|
|
||||||
index 4fc59c3e..c3fdfd46 100644
|
|
||||||
--- a/src/thread.cpp
|
|
||||||
+++ b/src/thread.cpp
|
|
||||||
@@ -220,7 +220,7 @@ void zmq::thread_t::setThreadName(const char *name_)
|
|
||||||
*/
|
|
||||||
if (!name_)
|
|
||||||
return;
|
|
||||||
-
|
|
||||||
+#if 0
|
|
||||||
#if defined(ZMQ_HAVE_PTHREAD_SETNAME_1)
|
|
||||||
int rc = pthread_setname_np(name_);
|
|
||||||
if(rc) return;
|
|
||||||
@@ -233,6 +233,8 @@ void zmq::thread_t::setThreadName(const char *name_)
|
|
||||||
#elif defined(ZMQ_HAVE_PTHREAD_SET_NAME)
|
|
||||||
pthread_set_name_np(descriptor, name_);
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
+ return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
2.11.1
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
dist_man1_MANS=
|
dist_man1_MANS=
|
||||||
|
|
||||||
if BUILD_BITCOIND
|
if BUILD_BITCOIND
|
||||||
dist_man1_MANS+=bitcoind.1
|
dist_man1_MANS+=lbrycrdd.1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if ENABLE_QT
|
if ENABLE_QT
|
||||||
dist_man1_MANS+=bitcoin-qt.1
|
dist_man1_MANS+=lbrycrd-qt.1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if BUILD_BITCOIN_UTILS
|
if BUILD_BITCOIN_UTILS
|
||||||
dist_man1_MANS+=bitcoin-cli.1 bitcoin-tx.1
|
dist_man1_MANS+=lbrycrd-cli.1 lbrycrd-tx.1
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||||
.TH BITCOIN-CLI "1" "December 2018" "bitcoin-cli v0.17.1.0" "User Commands"
|
.TH BITCOIN-CLI "1" "December 2018" "lbrycrd-cli v0.17.1.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bitcoin-cli \- manual page for bitcoin-cli v0.17.1.0
|
lbrycrd-cli \- manual page for lbrycrd-cli v0.17.1.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B bitcoin-cli
|
.B lbrycrd-cli
|
||||||
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Bitcoin Core\/\fR
|
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to LBRYcrd Core\/\fR
|
||||||
.br
|
.br
|
||||||
.B bitcoin-cli
|
.B lbrycrd-cli
|
||||||
[\fI\,options\/\fR] \fI\,-named <command> \/\fR[\fI\,name=value\/\fR]... \fI\,Send command to Bitcoin Core (with named arguments)\/\fR
|
[\fI\,options\/\fR] \fI\,-named <command> \/\fR[\fI\,name=value\/\fR]... \fI\,Send command to LBRYcrd Core (with named arguments)\/\fR
|
||||||
.br
|
.br
|
||||||
.B bitcoin-cli
|
.B lbrycrd-cli
|
||||||
[\fI\,options\/\fR] \fI\,help List commands\/\fR
|
[\fI\,options\/\fR] \fI\,help List commands\/\fR
|
||||||
.br
|
.br
|
||||||
.B bitcoin-cli
|
.B lbrycrd-cli
|
||||||
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
|
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Bitcoin Core RPC client version v0.17.1.0
|
LBRYcrd Core RPC client version v0.17.1.0
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
@ -25,7 +25,7 @@ This help message
|
||||||
\fB\-conf=\fR<file>
|
\fB\-conf=\fR<file>
|
||||||
.IP
|
.IP
|
||||||
Specify configuration file. Relative paths will be prefixed by datadir
|
Specify configuration file. Relative paths will be prefixed by datadir
|
||||||
location. (default: bitcoin.conf)
|
location. (default: lbrycrd.conf)
|
||||||
.HP
|
.HP
|
||||||
\fB\-datadir=\fR<dir>
|
\fB\-datadir=\fR<dir>
|
||||||
.IP
|
.IP
|
||||||
|
@ -76,7 +76,7 @@ Wait for RPC server to start
|
||||||
\fB\-rpcwallet=\fR<walletname>
|
\fB\-rpcwallet=\fR<walletname>
|
||||||
.IP
|
.IP
|
||||||
Send RPC for non\-default wallet on RPC server (needs to exactly match
|
Send RPC for non\-default wallet on RPC server (needs to exactly match
|
||||||
corresponding \fB\-wallet\fR option passed to bitcoind)
|
corresponding \fB\-wallet\fR option passed to lbrycrdd)
|
||||||
.HP
|
.HP
|
||||||
\fB\-stdin\fR
|
\fB\-stdin\fR
|
||||||
.IP
|
.IP
|
||||||
|
@ -101,11 +101,11 @@ Chain selection options:
|
||||||
.IP
|
.IP
|
||||||
Use the test chain
|
Use the test chain
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
Copyright (C) 2009-2018 The Bitcoin Core developers
|
Copyright (C) 2009-2018 The LBRYcrd Core developers
|
||||||
|
|
||||||
Please contribute if you find Bitcoin Core useful. Visit
|
Please contribute if you find LBRYcrd Core useful. Visit
|
||||||
<https://bitcoincore.org> for further information about the software.
|
<https://lbrycrdcore.org> for further information about the software.
|
||||||
The source code is available from <https://github.com/bitcoin/bitcoin>.
|
The source code is available from <https://github.com/lbrycrd/lbrycrd>.
|
||||||
|
|
||||||
This is experimental software.
|
This is experimental software.
|
||||||
Distributed under the MIT software license, see the accompanying file COPYING
|
Distributed under the MIT software license, see the accompanying file COPYING
|
|
@ -1,12 +1,12 @@
|
||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||||
.TH BITCOIN-QT "1" "December 2018" "bitcoin-qt v0.17.1.0" "User Commands"
|
.TH BITCOIN-QT "1" "December 2018" "lbrycrd-qt v0.17.1.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bitcoin-qt \- manual page for bitcoin-qt v0.17.1.0
|
lbrycrd-qt \- manual page for lbrycrd-qt v0.17.1.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B bitcoin-qt
|
.B lbrycrd-qt
|
||||||
[\fI\,command-line options\/\fR]
|
[\fI\,command-line options\/\fR]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Bitcoin Core version v0.17.1.0 (64\-bit)
|
LBRYcrd Core version v0.17.1.0 (64\-bit)
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
@ -44,7 +44,7 @@ Specify blocks directory (default: <datadir>/blocks)
|
||||||
\fB\-conf=\fR<file>
|
\fB\-conf=\fR<file>
|
||||||
.IP
|
.IP
|
||||||
Specify configuration file. Relative paths will be prefixed by datadir
|
Specify configuration file. Relative paths will be prefixed by datadir
|
||||||
location. (default: bitcoin.conf)
|
location. (default: lbrycrd.conf)
|
||||||
.HP
|
.HP
|
||||||
\fB\-daemon\fR
|
\fB\-daemon\fR
|
||||||
.IP
|
.IP
|
||||||
|
@ -98,7 +98,7 @@ Whether to save the mempool on shutdown and load on restart (default: 1)
|
||||||
\fB\-pid=\fR<file>
|
\fB\-pid=\fR<file>
|
||||||
.IP
|
.IP
|
||||||
Specify pid file. Relative paths will be prefixed by a net\-specific
|
Specify pid file. Relative paths will be prefixed by a net\-specific
|
||||||
datadir location. (default: bitcoind.pid)
|
datadir location. (default: lbrycrdd.pid)
|
||||||
.HP
|
.HP
|
||||||
\fB\-prune=\fR<n>
|
\fB\-prune=\fR<n>
|
||||||
.IP
|
.IP
|
||||||
|
@ -604,11 +604,11 @@ Set SSL root certificates for payment request (default: \fB\-system\-\fR)
|
||||||
.IP
|
.IP
|
||||||
Show splash screen on startup (default: 1)
|
Show splash screen on startup (default: 1)
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
Copyright (C) 2009-2018 The Bitcoin Core developers
|
Copyright (C) 2009-2018 The LBRYcrd Core developers
|
||||||
|
|
||||||
Please contribute if you find Bitcoin Core useful. Visit
|
Please contribute if you find LBRYcrd Core useful. Visit
|
||||||
<https://bitcoincore.org> for further information about the software.
|
<https://lbrycrdcore.org> for further information about the software.
|
||||||
The source code is available from <https://github.com/bitcoin/bitcoin>.
|
The source code is available from <https://github.com/lbrycrd/lbrycrd>.
|
||||||
|
|
||||||
This is experimental software.
|
This is experimental software.
|
||||||
Distributed under the MIT software license, see the accompanying file COPYING
|
Distributed under the MIT software license, see the accompanying file COPYING
|
|
@ -1,15 +1,15 @@
|
||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||||
.TH BITCOIN-TX "1" "December 2018" "bitcoin-tx v0.17.1.0" "User Commands"
|
.TH BITCOIN-TX "1" "December 2018" "lbrycrd-tx v0.17.1.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bitcoin-tx \- manual page for bitcoin-tx v0.17.1.0
|
lbrycrd-tx \- manual page for lbrycrd-tx v0.17.1.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B bitcoin-tx
|
.B lbrycrd-tx
|
||||||
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded bitcoin transaction\/\fR
|
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded lbrycrd transaction\/\fR
|
||||||
.br
|
.br
|
||||||
.B bitcoin-tx
|
.B lbrycrd-tx
|
||||||
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded bitcoin transaction\/\fR
|
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded lbrycrd transaction\/\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Bitcoin Core bitcoin\-tx utility version v0.17.1.0
|
LBRYcrd Core lbrycrd\-tx utility version v0.17.1.0
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
@ -105,11 +105,11 @@ set=NAME:JSON\-STRING
|
||||||
.IP
|
.IP
|
||||||
Set register NAME to given JSON\-STRING
|
Set register NAME to given JSON\-STRING
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
Copyright (C) 2009-2018 The Bitcoin Core developers
|
Copyright (C) 2009-2018 The LBRYcrd Core developers
|
||||||
|
|
||||||
Please contribute if you find Bitcoin Core useful. Visit
|
Please contribute if you find LBRYcrd Core useful. Visit
|
||||||
<https://bitcoincore.org> for further information about the software.
|
<https://lbrycrdcore.org> for further information about the software.
|
||||||
The source code is available from <https://github.com/bitcoin/bitcoin>.
|
The source code is available from <https://github.com/lbrycrd/lbrycrd>.
|
||||||
|
|
||||||
This is experimental software.
|
This is experimental software.
|
||||||
Distributed under the MIT software license, see the accompanying file COPYING
|
Distributed under the MIT software license, see the accompanying file COPYING
|
|
@ -1,12 +1,12 @@
|
||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||||
.TH BITCOIND "1" "December 2018" "bitcoind v0.17.1.0" "User Commands"
|
.TH BITCOIND "1" "December 2018" "lbrycrdd v0.17.1.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bitcoind \- manual page for bitcoind v0.17.1.0
|
lbrycrdd \- manual page for lbrycrdd v0.17.1.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B bitcoind
|
.B lbrycrdd
|
||||||
[\fI\,options\/\fR] \fI\,Start Bitcoin Core Daemon\/\fR
|
[\fI\,options\/\fR] \fI\,Start LBRYcrd Core Daemon\/\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Bitcoin Core Daemon version v0.17.1.0
|
LBRYcrd Core Daemon version v0.17.1.0
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
@ -44,7 +44,7 @@ Specify blocks directory (default: <datadir>/blocks)
|
||||||
\fB\-conf=\fR<file>
|
\fB\-conf=\fR<file>
|
||||||
.IP
|
.IP
|
||||||
Specify configuration file. Relative paths will be prefixed by datadir
|
Specify configuration file. Relative paths will be prefixed by datadir
|
||||||
location. (default: bitcoin.conf)
|
location. (default: lbrycrd.conf)
|
||||||
.HP
|
.HP
|
||||||
\fB\-daemon\fR
|
\fB\-daemon\fR
|
||||||
.IP
|
.IP
|
||||||
|
@ -98,7 +98,7 @@ Whether to save the mempool on shutdown and load on restart (default: 1)
|
||||||
\fB\-pid=\fR<file>
|
\fB\-pid=\fR<file>
|
||||||
.IP
|
.IP
|
||||||
Specify pid file. Relative paths will be prefixed by a net\-specific
|
Specify pid file. Relative paths will be prefixed by a net\-specific
|
||||||
datadir location. (default: bitcoind.pid)
|
datadir location. (default: lbrycrdd.pid)
|
||||||
.HP
|
.HP
|
||||||
\fB\-prune=\fR<n>
|
\fB\-prune=\fR<n>
|
||||||
.IP
|
.IP
|
||||||
|
@ -578,11 +578,11 @@ Username for JSON\-RPC connections
|
||||||
.IP
|
.IP
|
||||||
Accept command line and JSON\-RPC commands
|
Accept command line and JSON\-RPC commands
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
Copyright (C) 2009-2018 The Bitcoin Core developers
|
Copyright (C) 2009-2018 The LBRYcrd Core developers
|
||||||
|
|
||||||
Please contribute if you find Bitcoin Core useful. Visit
|
Please contribute if you find LBRYcrd Core useful. Visit
|
||||||
<https://bitcoincore.org> for further information about the software.
|
<https://lbrycrdcore.org> for further information about the software.
|
||||||
The source code is available from <https://github.com/bitcoin/bitcoin>.
|
The source code is available from <https://github.com/lbrycrd/lbrycrd>.
|
||||||
|
|
||||||
This is experimental software.
|
This is experimental software.
|
||||||
Distributed under the MIT software license, see the accompanying file COPYING
|
Distributed under the MIT software license, see the accompanying file COPYING
|
64
packaging/build_windows.sh
Executable file
64
packaging/build_windows.sh
Executable file
|
@ -0,0 +1,64 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y --no-install-recommends \
|
||||||
|
g++-mingw-w64-i686 mingw-w64-i686-dev g++-mingw-w64-x86-64 \
|
||||||
|
mingw-w64-x86-64-dev build-essential libtool autotools-dev automake pkg-config \
|
||||||
|
libssl-dev libevent-dev bsdmainutils curl ca-certificates
|
||||||
|
|
||||||
|
echo "1" | sudo update-alternatives --config x86_64-w64-mingw32-g++
|
||||||
|
echo "1" | sudo update-alternatives --config x86_64-w64-mingw32-gcc
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
# Build ICU for Linux first so that we can cross compile it below
|
||||||
|
# It's a strange ICU thing in that it requries a working
|
||||||
|
# Linux build of itself to be used as part of the cross-compile
|
||||||
|
#################################################################
|
||||||
|
icu_version=63.1
|
||||||
|
icu_release=icu4c-63_1-src.tgz
|
||||||
|
staging_dir=/tmp/icu_staging
|
||||||
|
icu_linux_dir=$staging_dir/build_icu_linux
|
||||||
|
mkdir -p $staging_dir
|
||||||
|
pushd $staging_dir
|
||||||
|
wget -c http://download.icu-project.org/files/icu4c/$icu_version/$icu_release
|
||||||
|
tar -xzf $icu_release
|
||||||
|
pushd icu/source
|
||||||
|
CC="gcc" CXX="g++" ./runConfigureICU Linux --prefix=$icu_linux_dir --enable-extras=no --enable-strict=no --enable-static --enable-shared=no --enable-tests=no --enable-samples=no --enable-dyload=no
|
||||||
|
make -j4
|
||||||
|
make install
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
export CXXFLAGS="-std=c++11"
|
||||||
|
|
||||||
|
pushd depends
|
||||||
|
# Remove the dir saying that dependencies are built (although ccache
|
||||||
|
# is still enabled).
|
||||||
|
rm -rf built
|
||||||
|
mkdir -p sources
|
||||||
|
cp "$staging_dir/$icu_release" sources/
|
||||||
|
|
||||||
|
# Build and install the cross compiled ICU package.
|
||||||
|
make -j4 HOST=x86_64-w64-mingw32 NO_QT=1 ICU_ONLY=1
|
||||||
|
|
||||||
|
# Then build the rest of the dependencies (now that it exists and we
|
||||||
|
# can determine the location for it).
|
||||||
|
icu_mingw_dir=$(find /tmp/icu_install -name x86_64-w64-mingw32 -type d)
|
||||||
|
|
||||||
|
make -j4 HOST=x86_64-w64-mingw32 NO_QT=1 ICU_DIR=$icu_mingw_dir V=1
|
||||||
|
popd
|
||||||
|
|
||||||
|
./autogen.sh
|
||||||
|
echo "Using --with-icu=$icu_mingw_dir"
|
||||||
|
PREFIX=`pwd`/depends/x86_64-w64-mingw32
|
||||||
|
CC="x86_64-w64-mingw32-gcc" CXX="x86_64-w64-mingw32-g++" ./configure --prefix=$PREFIX --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --without-gui --with-icu=$icu_mingw_dir --enable-static --disable-shared
|
||||||
|
./configure --prefix=$PREFIX --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --without-gui --with-icu=$icu_mingw_dir --enable-static --disable-shared
|
||||||
|
make -j4
|
||||||
|
|
||||||
|
rm -rf $staging_dir
|
||||||
|
# Remove hardcoded cross compiled ICU package path.
|
||||||
|
rm -rf /tmp/icu_install
|
||||||
|
echo "Windows build is complete"
|
23
packaging/remove_consensus.patch
Normal file
23
packaging/remove_consensus.patch
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||||
|
index a9f0a94..d71bfeb 100644
|
||||||
|
--- a/src/Makefile.am
|
||||||
|
+++ b/src/Makefile.am
|
||||||
|
@@ -64,12 +64,12 @@ if ENABLE_ZMQ
|
||||||
|
EXTRA_LIBRARIES += libbitcoin_zmq.a
|
||||||
|
endif
|
||||||
|
|
||||||
|
-if BUILD_BITCOIN_LIBS
|
||||||
|
-lib_LTLIBRARIES = libbitcoinconsensus.la
|
||||||
|
-LIBBITCOINCONSENSUS=libbitcoinconsensus.la
|
||||||
|
-else
|
||||||
|
-LIBBITCOINCONSENSUS=
|
||||||
|
-endif
|
||||||
|
+# if BUILD_BITCOIN_LIBS
|
||||||
|
+# lib_LTLIBRARIES = libbitcoinconsensus.la
|
||||||
|
+# LIBBITCOINCONSENSUS=libbitcoinconsensus.la
|
||||||
|
+# else
|
||||||
|
+# LIBBITCOINCONSENSUS=
|
||||||
|
+# endif
|
||||||
|
|
||||||
|
bin_PROGRAMS =
|
||||||
|
TESTS =
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -euo pipefail
|
set -euox pipefail
|
||||||
|
|
||||||
function HELP {
|
function HELP {
|
||||||
echo "Build lbrycrd"
|
echo "Build lbrycrd"
|
||||||
|
@ -15,7 +15,6 @@ function HELP {
|
||||||
echo
|
echo
|
||||||
echo "Optional arguments:"
|
echo "Optional arguments:"
|
||||||
echo
|
echo
|
||||||
echo "-c: don't clone a fresh copy of the repo"
|
|
||||||
echo "-f: check formatting of committed code relative to master"
|
echo "-f: check formatting of committed code relative to master"
|
||||||
echo "-r: remove intermediate files."
|
echo "-r: remove intermediate files."
|
||||||
echo "-l: build only lbrycrd"
|
echo "-l: build only lbrycrd"
|
||||||
|
@ -26,7 +25,6 @@ function HELP {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
CLONE=true
|
|
||||||
CLEAN=false
|
CLEAN=false
|
||||||
CHECK_CODE_FORMAT=false
|
CHECK_CODE_FORMAT=false
|
||||||
BUILD_DEPENDENCIES=true
|
BUILD_DEPENDENCIES=true
|
||||||
|
@ -39,15 +37,12 @@ OUTPUT_LOG=true
|
||||||
|
|
||||||
while getopts :crfldoth:w:d: FLAG; do
|
while getopts :crfldoth:w:d: FLAG; do
|
||||||
case $FLAG in
|
case $FLAG in
|
||||||
c)
|
|
||||||
CLONE=false
|
|
||||||
;;
|
|
||||||
r)
|
r)
|
||||||
CLEAN=true
|
CLEAN=true
|
||||||
;;
|
;;
|
||||||
f)
|
f)
|
||||||
CHECK_CODE_FORMAT=true
|
CHECK_CODE_FORMAT=true
|
||||||
;;
|
;;
|
||||||
l)
|
l)
|
||||||
BUILD_DEPENDENCIES=false
|
BUILD_DEPENDENCIES=false
|
||||||
;;
|
;;
|
||||||
|
@ -81,13 +76,11 @@ if (( EUID != 0 )); then
|
||||||
SUDO='sudo'
|
SUDO='sudo'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${CLONE}" = false ]; then
|
if [ "$(basename "$PWD")" != "lbrycrd" ]; then
|
||||||
if [ "$(basename "$PWD")" != "lbrycrd" ]; then
|
echo "Not currently in the lbrycrd directory. Cowardly refusing to go forward"
|
||||||
echo "Not currently in the lbrycrd directory. Cowardly refusing to go forward"
|
exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
SOURCE_DIR=$PWD
|
|
||||||
fi
|
fi
|
||||||
|
SOURCE_DIR=$PWD
|
||||||
|
|
||||||
if [ -z "${TRAVIS_OS_NAME+x}" ]; then
|
if [ -z "${TRAVIS_OS_NAME+x}" ]; then
|
||||||
if [ "$(uname -s)" = "Darwin" ]; then
|
if [ "$(uname -s)" = "Darwin" ]; then
|
||||||
|
@ -106,24 +99,22 @@ else
|
||||||
# this file is created when the build starts
|
# this file is created when the build starts
|
||||||
START_TIME_FILE="$TRAVIS_BUILD_DIR/start_time"
|
START_TIME_FILE="$TRAVIS_BUILD_DIR/start_time"
|
||||||
fi
|
fi
|
||||||
if [ ! -f "${START_TIME_FILE}" ]; then
|
rm -f ${START_TIME_FILE}
|
||||||
date +%s > "${START_TIME_FILE}"
|
date +%s > ${START_TIME_FILE}
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
NEXT_TIME=60
|
NEXT_TIME=60
|
||||||
function exit_at_40() {
|
function exit_at_60() {
|
||||||
if [ -f "${START_TIME_FILE}" ]; then
|
if [ -f "${START_TIME_FILE}" ]; then
|
||||||
NOW=$(date +%s)
|
NOW=$(date +%s)
|
||||||
START=$(cat "${START_TIME_FILE}")
|
START=$(cat "${START_TIME_FILE}")
|
||||||
TIMEOUT_SECS=2400 # 40 * 60
|
TIMEOUT_SECS=3600 # 60 * 60
|
||||||
TIME=$((NOW - START))
|
TIME=$((NOW - START))
|
||||||
if (( TIME > NEXT_TIME )); then
|
if (( TIME > NEXT_TIME )); then
|
||||||
echo "Build has taken $((TIME / 60)) minutes: $1"
|
echo "Build has taken $((TIME / 60)) minutes: $1"
|
||||||
NEXT_TIME=$((TIME + 60))
|
NEXT_TIME=$((TIME + 60))
|
||||||
fi
|
fi
|
||||||
if [ "$TIMEOUT" = true ] && (( TIME > TIMEOUT_SECS )); then
|
if [ "$TIMEOUT" = true ] && (( TIME > TIMEOUT_SECS )); then
|
||||||
echo 'Exiting at 40 minutes to allow the cache to populate'
|
echo 'Exiting at 60 minutes to allow the cache to populate'
|
||||||
OUTPUT_LOG=false
|
OUTPUT_LOG=false
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -135,44 +126,41 @@ function exit_at_40() {
|
||||||
# - echo message
|
# - echo message
|
||||||
function wait_and_echo() {
|
function wait_and_echo() {
|
||||||
PID=$1
|
PID=$1
|
||||||
(set -o | grep xtrace | grep -q on)
|
|
||||||
TRACE_STATUS=$?
|
|
||||||
# disable xtrace or else this will get verbose, which is what
|
|
||||||
# I'm trying to avoid by going through all of this nonsense anyway
|
|
||||||
set +o xtrace
|
|
||||||
TIME=0
|
TIME=0
|
||||||
SLEEP=5
|
SLEEP=3
|
||||||
# loop until the process is no longer running
|
# loop until the process is no longer running
|
||||||
# check every $SLEEP seconds, echoing a message every minute
|
# check every $SLEEP seconds, echoing a message every minute
|
||||||
while (ps -p "${PID}" > /dev/null); do
|
while (ps -p "${PID}" > /dev/null); do
|
||||||
exit_at_40 "$2"
|
exit_at_60 "$2"
|
||||||
sleep "${SLEEP}"
|
sleep "${SLEEP}"
|
||||||
done
|
done
|
||||||
# restore the xtrace setting
|
|
||||||
if [ "${TRACE_STATUS}" -eq 0 ]; then
|
|
||||||
set -o xtrace
|
|
||||||
fi
|
|
||||||
wait "$PID"
|
|
||||||
return $?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# run a command ($1) in the background
|
# run a command ($1) in the background
|
||||||
# logging its stdout and stderr to $2
|
# logging its stdout and stderr to $2
|
||||||
# and wait until it completed
|
# and wait until it completed
|
||||||
function background() {
|
function background() {
|
||||||
$1 >> "$2" 2>&1 &
|
eval $1 >> "$2" 2>&1 &
|
||||||
BACKGROUND_PID=$!
|
BACKGROUND_PID=$!
|
||||||
wait_and_echo $BACKGROUND_PID "$3"
|
(
|
||||||
|
set +xe # do not echo each sleep call in trace mode
|
||||||
|
wait_and_echo $BACKGROUND_PID "$3"
|
||||||
|
)
|
||||||
|
wait $BACKGROUND_PID
|
||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
rv=$?
|
rv=$?
|
||||||
|
if [ $rv -eq 0 ]; then
|
||||||
|
return $rv
|
||||||
|
fi
|
||||||
# cat the log file if it exists
|
# cat the log file if it exists
|
||||||
if [ -f "$2" ] && [ "${OUTPUT_LOG}" = true ]; then
|
if [ -f "$2" ] && [ "${OUTPUT_LOG}" = true ]; then
|
||||||
echo
|
echo
|
||||||
echo "Output of log file $2"
|
echo "Output of log file $2"
|
||||||
echo
|
echo
|
||||||
tail -n 1000 "$2"
|
cat "$2"
|
||||||
|
# tail -n 200 "$2"
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
# delete the build directory
|
# delete the build directory
|
||||||
|
@ -211,7 +199,7 @@ function install_brew_packages() {
|
||||||
brew_if_not_installed automake
|
brew_if_not_installed automake
|
||||||
# something weird happened where glibtoolize was failing to find
|
# something weird happened where glibtoolize was failing to find
|
||||||
# sed, and reinstalling fixes it.
|
# sed, and reinstalling fixes it.
|
||||||
brew reinstall -s libtool
|
brew reinstall libtool
|
||||||
brew_if_not_installed pkg-config
|
brew_if_not_installed pkg-config
|
||||||
brew_if_not_installed protobuf
|
brew_if_not_installed protobuf
|
||||||
brew_if_not_installed gmp
|
brew_if_not_installed gmp
|
||||||
|
@ -222,6 +210,10 @@ function install_brew_packages() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_apt_packages() {
|
function install_apt_packages() {
|
||||||
|
if [ -d "${OUTPUT_DIR}" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${TRAVIS+x}" ]; then
|
if [ -z "${TRAVIS+x}" ]; then
|
||||||
# if not on travis, its nice to see progress
|
# if not on travis, its nice to see progress
|
||||||
QUIET=""
|
QUIET=""
|
||||||
|
@ -244,8 +236,10 @@ function install_apt_packages() {
|
||||||
|
|
||||||
function build_dependencies() {
|
function build_dependencies() {
|
||||||
if [ "${OS_NAME}" = "osx" ]; then
|
if [ "${OS_NAME}" = "osx" ]; then
|
||||||
|
PARALLEL="-j $(sysctl -n hw.ncpu)"
|
||||||
install_brew_packages
|
install_brew_packages
|
||||||
else
|
else
|
||||||
|
PARALLEL="-j $(grep -c processor /proc/cpuinfo)"
|
||||||
install_apt_packages
|
install_apt_packages
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -254,17 +248,39 @@ function build_dependencies() {
|
||||||
rm -rf "${OUTPUT_DIR}"
|
rm -rf "${OUTPUT_DIR}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "${LBRYCRD_DEPENDENCIES}" ]; then
|
mkdir -p "${LBRYCRD_DEPENDENCIES}"
|
||||||
git clone https://github.com/lbryio/lbrycrd-dependencies.git "${LBRYCRD_DEPENDENCIES}"
|
|
||||||
|
# Download required dependencies (if not already present)
|
||||||
|
pushd ${LBRYCRD_DEPENDENCIES} > /dev/null
|
||||||
|
if [ ! -f db-4.8.30.NC.zip ]; then
|
||||||
|
wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.zip
|
||||||
|
unzip -o -q db-4.8.30.NC.zip
|
||||||
fi
|
fi
|
||||||
# TODO: if the repo exists, make sure its clean: revert to head.
|
if [ ! -f libevent-2.1.8-stable.tar.gz ]; then
|
||||||
|
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
|
||||||
|
tar -xzf libevent-2.1.8-stable.tar.gz
|
||||||
|
fi
|
||||||
|
if [ ! -f openssl-1.0.2r.tar.gz ]; then
|
||||||
|
wget https://www.openssl.org/source/openssl-1.0.2r.tar.gz
|
||||||
|
tar -xzf openssl-1.0.2r.tar.gz
|
||||||
|
fi
|
||||||
|
if [ ! -f icu4c-63_1-src.tgz ]; then
|
||||||
|
wget http://download.icu-project.org/files/icu4c/63.1/icu4c-63_1-src.tgz
|
||||||
|
tar -xzf icu4c-63_1-src.tgz
|
||||||
|
fi
|
||||||
|
if [ ! -f boost_1_64_0.tar.bz2 ]; then
|
||||||
|
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.bz2
|
||||||
|
tar -xjf boost_1_64_0.tar.bz2
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p "${LOG_DIR}"
|
mkdir -p "${LOG_DIR}"
|
||||||
|
|
||||||
build_dependency "${BDB_PREFIX}" "${LOG_DIR}/bdb_build.log" build_bdb
|
|
||||||
build_dependency "${OPENSSL_PREFIX}" "${LOG_DIR}/openssl_build.log" build_openssl
|
build_dependency "${OPENSSL_PREFIX}" "${LOG_DIR}/openssl_build.log" build_openssl
|
||||||
|
build_dependency "${ICU_PREFIX}" "${LOG_DIR}/icu_build.log" build_icu
|
||||||
|
build_dependency "${BDB_PREFIX}" "${LOG_DIR}/bdb_build.log" build_bdb
|
||||||
|
|
||||||
set +u
|
set +u
|
||||||
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${OPENSSL_PREFIX}/lib/pkgconfig/"
|
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${OPENSSL_PREFIX}/lib/pkgconfig"
|
||||||
set -u
|
set -u
|
||||||
|
|
||||||
build_dependency "${BOOST_PREFIX}" "${LOG_DIR}/boost_build.log" build_boost
|
build_dependency "${BOOST_PREFIX}" "${LOG_DIR}/boost_build.log" build_boost
|
||||||
|
@ -274,55 +290,82 @@ function build_dependencies() {
|
||||||
function build_bdb() {
|
function build_bdb() {
|
||||||
BDB_LOG="$1"
|
BDB_LOG="$1"
|
||||||
if [ "${OS_NAME}" = "osx" ]; then
|
if [ "${OS_NAME}" = "osx" ]; then
|
||||||
patch db-4.8.30.NC/dbinc/atomic.h < atomic.patch
|
# TODO: make this handle already patched files
|
||||||
|
patch db-4.8.30.NC/dbinc/atomic.h < ../contrib/patches/atomic.patch
|
||||||
fi
|
fi
|
||||||
cd db-4.8.30.NC/build_unix
|
cd db-4.8.30.NC/build_unix
|
||||||
echo "Building bdb. tail -f $BDB_LOG to see the details and monitor progress"
|
echo "Building bdb. tail -f $BDB_LOG to see the details and monitor progress"
|
||||||
../dist/configure --prefix="${BDB_PREFIX}" --enable-cxx --disable-shared --with-pic > "${BDB_LOG}"
|
../dist/configure --prefix="${BDB_PREFIX}" --enable-cxx --disable-shared --with-pic > "${BDB_LOG}"
|
||||||
background make "${BDB_LOG}" "Waiting for bdb to finish building"
|
background "make ${PARALLEL}" "${BDB_LOG}" "Waiting for bdb to finish building"
|
||||||
make install >> "${BDB_LOG}" 2>&1
|
make install >> "${BDB_LOG}" 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_openssl() {
|
function build_openssl() {
|
||||||
OPENSSL_LOG="$1"
|
OPENSSL_LOG="$1"
|
||||||
mkdir -p "${OPENSSL_PREFIX}/ssl"
|
mkdir -p "${OPENSSL_PREFIX}/ssl"
|
||||||
cd openssl-1.0.1p
|
cd openssl-1.0.2r
|
||||||
echo "Building openssl. tail -f $OPENSSL_LOG to see the details and monitor progress"
|
echo "Building openssl. tail -f $OPENSSL_LOG to see the details and monitor progress"
|
||||||
if [ "${OS_NAME}" = "osx" ]; then
|
if [ "${OS_NAME}" = "osx" ]; then
|
||||||
./Configure --prefix="${OPENSSL_PREFIX}" --openssldir="${OPENSSL_PREFIX}/ssl" \
|
./Configure --prefix="${OPENSSL_PREFIX}" --openssldir="${OPENSSL_PREFIX}/ssl" \
|
||||||
-fPIC darwin64-x86_64-cc \
|
-fPIC darwin64-x86_64-cc \
|
||||||
no-shared no-dso no-engines > "${OPENSSL_LOG}"
|
no-shared no-dso no-engines > "${OPENSSL_LOG}"
|
||||||
|
make depend
|
||||||
else
|
else
|
||||||
[[ $(uname -m) = 'i686' ]] && OS_ARCH="linux-generic32" || OS_ARCH="linux-x86_64"
|
[[ $(uname -m) = 'i686' ]] && OS_ARCH="linux-generic32" || OS_ARCH="linux-x86_64"
|
||||||
./Configure --prefix="${OPENSSL_PREFIX}" --openssldir="${OPENSSL_PREFIX}/ssl" \
|
./Configure --prefix="${OPENSSL_PREFIX}" --openssldir="${OPENSSL_PREFIX}/ssl" \
|
||||||
${OS_ARCH} -fPIC -static no-shared no-dso > "${OPENSSL_LOG}"
|
${OS_ARCH} -fPIC -static no-shared no-dso > "${OPENSSL_LOG}"
|
||||||
fi
|
fi
|
||||||
background make "${OPENSSL_LOG}" "Waiting for openssl to finish building"
|
background "make ${PARALLEL}" "${OPENSSL_LOG}" "Waiting for openssl to finish building"
|
||||||
make install >> "${OPENSSL_LOG}" 2>&1
|
make install >> "${OPENSSL_LOG}" 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_boost() {
|
function build_boost() {
|
||||||
BOOST_LOG="$1"
|
BOOST_LOG="$1"
|
||||||
cd boost_1_59_0
|
cd boost_1_64_0
|
||||||
|
|
||||||
|
echo "int main() { return 0; }" > libs/regex/build/has_icu_test.cpp
|
||||||
|
echo "int main() { return 0; }" > libs/locale/build/has_icu_test.cpp
|
||||||
|
|
||||||
|
export BOOST_ICU_LIBS="-L${ICU_PREFIX}/lib -licui18n -licuuc -licudata -ldl"
|
||||||
|
export BOOST_LIBRARIES="chrono,filesystem,program_options,system,locale,regex,thread,test"
|
||||||
|
|
||||||
echo "Building Boost. tail -f ${BOOST_LOG} to see the details and monitor progress"
|
echo "Building Boost. tail -f ${BOOST_LOG} to see the details and monitor progress"
|
||||||
./bootstrap.sh --prefix="${BOOST_PREFIX}" > "${BOOST_LOG}" 2>&1
|
./bootstrap.sh --prefix="${BOOST_PREFIX}" --with-icu="${ICU_PREFIX}" --with-libraries=${BOOST_LIBRARIES} > "${BOOST_LOG}" 2>&1
|
||||||
background "./b2 link=static cxxflags=-fPIC install" \
|
b2cmd="./b2 --reconfigure ${PARALLEL} link=static cxxflags=\"-std=c++11 -fPIC\" install boost.locale.iconv=off boost.locale.posix=off -sICU_PATH=\"${ICU_PREFIX}\" -sICU_LINK=\"${BOOST_ICU_LIBS}\""
|
||||||
"${BOOST_LOG}" \
|
background "${b2cmd}" "${BOOST_LOG}" "Waiting for boost to finish building"
|
||||||
"Waiting for boost to finish building"
|
}
|
||||||
|
|
||||||
|
function build_icu() {
|
||||||
|
ICU_LOG="$1"
|
||||||
|
mkdir -p "${ICU_PREFIX}/icu"
|
||||||
|
pushd icu/source > /dev/null
|
||||||
|
echo "Building icu. tail -f $ICU_LOG to see the details and monitor progress"
|
||||||
|
./configure --prefix="${ICU_PREFIX}" --enable-draft --enable-tools \
|
||||||
|
--disable-shared --enable-static --disable-extras --disable-icuio --disable-dyload \
|
||||||
|
--disable-layout --disable-layoutex --disable-tests --disable-samples CFLAGS=-fPIC CPPFLAGS=-fPIC > "${ICU_LOG}"
|
||||||
|
if [ ! -z ${TARGET+x} ]; then
|
||||||
|
TMP_TARGET="${TARGET}"
|
||||||
|
unset TARGET
|
||||||
|
fi
|
||||||
|
set +e
|
||||||
|
background "make ${PARALLEL} VERBOSE=1" "${ICU_LOG}" "Waiting for icu to finish building"
|
||||||
|
make install >> "${ICU_LOG}" 2>&1
|
||||||
|
if [ ! -z ${TARGET+x} ]; then
|
||||||
|
TARGET="${TMP_TARGET}"
|
||||||
|
fi
|
||||||
|
set -e
|
||||||
|
popd > /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_libevent() {
|
function build_libevent() {
|
||||||
LIBEVENT_LOG="$1"
|
LIBEVENT_LOG="$1"
|
||||||
if [ ! -d libevent ]; then
|
cd libevent-2.1.8-stable
|
||||||
git clone --branch release-2.0.22-stable https://github.com/libevent/libevent.git
|
|
||||||
fi
|
|
||||||
cd libevent
|
|
||||||
echo "Building libevent. tail -f ${LIBEVENT_LOG} to see the details and monitor progress"
|
echo "Building libevent. tail -f ${LIBEVENT_LOG} to see the details and monitor progress"
|
||||||
./autogen.sh > "${LIBEVENT_LOG}" 2>&1
|
./autogen.sh > "${LIBEVENT_LOG}" 2>&1
|
||||||
./configure --prefix="${LIBEVENT_PREFIX}" --enable-static --disable-shared --with-pic \
|
./configure --prefix="${LIBEVENT_PREFIX}" --enable-static --disable-shared --with-pic \
|
||||||
LDFLAGS="-L${OPENSSL_PREFIX}/lib/" \
|
LDFLAGS="-L${OPENSSL_PREFIX}/lib" \
|
||||||
CPPFLAGS="-I${OPENSSL_PREFIX}/include" >> "${LIBEVENT_LOG}" 2>&1
|
CPPFLAGS="-I${OPENSSL_PREFIX}/include" >> "${LIBEVENT_LOG}" 2>&1
|
||||||
background make "${LIBEVENT_LOG}" "Waiting for libevent to finish building"
|
background "make ${PARALLEL}" "${LIBEVENT_LOG}" "Waiting for libevent to finish building"
|
||||||
make install >> "${LIBEVENT_LOG}"
|
make install >> "${LIBEVENT_LOG}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,42 +374,31 @@ function build_dependency() {
|
||||||
PREFIX=$1
|
PREFIX=$1
|
||||||
LOG=$2
|
LOG=$2
|
||||||
BUILD=$3
|
BUILD=$3
|
||||||
if [ ! -d "${PREFIX}" ]; then
|
cd "${LBRYCRD_DEPENDENCIES}"
|
||||||
trap 'cleanup "${PREFIX}" "${LOG}"' INT TERM EXIT
|
mkdir -p "${PREFIX}"
|
||||||
cd "${LBRYCRD_DEPENDENCIES}"
|
trap 'cleanup "${PREFIX}" "${LOG}"' INT TERM EXIT
|
||||||
mkdir -p "${PREFIX}"
|
|
||||||
"${BUILD}" "${LOG}"
|
"${BUILD}" "${LOG}"
|
||||||
trap - INT TERM EXIT
|
trap - INT TERM EXIT
|
||||||
fi
|
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_lbrycrd() {
|
function build_lbrycrd() {
|
||||||
if [ "$CLONE" == true ]; then
|
cd "${SOURCE_DIR}"
|
||||||
cd "${LBRYCRD_DEPENDENCIES}"
|
|
||||||
git clone https://github.com/lbryio/lbrycrd
|
|
||||||
cd lbrycrd
|
|
||||||
else
|
|
||||||
cd "${SOURCE_DIR}"
|
|
||||||
fi
|
|
||||||
./autogen.sh > "${LBRYCRD_LOG}" 2>&1
|
./autogen.sh > "${LBRYCRD_LOG}" 2>&1
|
||||||
LDFLAGS="-L${OPENSSL_PREFIX}/lib/ -L${BDB_PREFIX}/lib/ -L${LIBEVENT_PREFIX}/lib/ -static-libstdc++"
|
LDFLAGS="-L${OPENSSL_PREFIX}/lib -L${BDB_PREFIX}/lib -L${LIBEVENT_PREFIX}/lib"
|
||||||
CPPFLAGS="-I${OPENSSL_PREFIX}/include -I${BDB_PREFIX}/include -I${LIBEVENT_PREFIX}/include/"
|
OPTIONS="--enable-cxx --enable-static --disable-shared --with-pic"
|
||||||
if [ "${OS_NAME}" = "osx" ]; then
|
if [ "${OS_NAME}" = "osx" ]; then
|
||||||
OPTIONS="--enable-cxx --enable-static --disable-shared --with-pic"
|
CPPFLAGS="-I${OPENSSL_PREFIX}/include -I${BDB_PREFIX}/include -I${LIBEVENT_PREFIX}/include -I${ICU_PREFIX}/include"
|
||||||
else
|
else
|
||||||
OPTIONS=""
|
CPPFLAGS="-I${OPENSSL_PREFIX}/include -I${BDB_PREFIX}/include -I${LIBEVENT_PREFIX}/include -I${ICU_PREFIX}/include -Wno-unused-local-typedefs -Wno-deprecated -Wno-implicit-fallthrough"
|
||||||
fi
|
fi
|
||||||
./configure --without-gui ${OPTIONS} \
|
|
||||||
--with-boost="${BOOST_PREFIX}" \
|
CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" \
|
||||||
LDFLAGS="${LDFLAGS}" \
|
./configure --without-gui ${OPTIONS} \
|
||||||
CPPFLAGS="${CPPFLAGS}" >> "${LBRYCRD_LOG}" 2>&1
|
--with-boost="${BOOST_PREFIX}" \
|
||||||
background make "${LBRYCRD_LOG}" "Waiting for lbrycrd to finish building"
|
--with-icu="${ICU_PREFIX}" >> "${LBRYCRD_LOG}" 2>&1
|
||||||
src/test/test_lbrycrd
|
|
||||||
strip src/lbrycrdd
|
background "make ${PARALLEL}" "${LBRYCRD_LOG}" "Waiting for lbrycrd to finish building"
|
||||||
strip src/lbrycrd-cli
|
|
||||||
strip src/lbrycrd-tx
|
|
||||||
strip src/test/test_lbrycrd
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function clang_format_diff(){
|
function clang_format_diff(){
|
||||||
|
@ -379,6 +411,7 @@ function clang_format_diff(){
|
||||||
LBRYCRD_DEPENDENCIES="$(pwd)/lbrycrd-dependencies"
|
LBRYCRD_DEPENDENCIES="$(pwd)/lbrycrd-dependencies"
|
||||||
OUTPUT_DIR="$(pwd)/build"
|
OUTPUT_DIR="$(pwd)/build"
|
||||||
LOG_DIR="$(pwd)/logs"
|
LOG_DIR="$(pwd)/logs"
|
||||||
|
ICU_PREFIX="${OUTPUT_DIR}/icu"
|
||||||
BDB_PREFIX="${OUTPUT_DIR}/bdb"
|
BDB_PREFIX="${OUTPUT_DIR}/bdb"
|
||||||
OPENSSL_PREFIX="${OUTPUT_DIR}/openssl"
|
OPENSSL_PREFIX="${OUTPUT_DIR}/openssl"
|
||||||
BOOST_PREFIX="${OUTPUT_DIR}/boost"
|
BOOST_PREFIX="${OUTPUT_DIR}/boost"
|
||||||
|
@ -398,7 +431,7 @@ if [ "${CHECK_CODE_FORMAT}" = true ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set +u
|
set +u
|
||||||
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${OPENSSL_PREFIX}/lib/pkgconfig/:${LIBEVENT_PREFIX}/lib/pkgconfig/"
|
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${OPENSSL_PREFIX}/lib/pkgconfig:${LIBEVENT_PREFIX}/lib/pkgconfig:${ICU_PREFIX}/lib/pkgconfig"
|
||||||
set -u
|
set -u
|
||||||
|
|
||||||
if [ "${BUILD_LBRYCRD}" = true ]; then
|
if [ "${BUILD_LBRYCRD}" = true ]; then
|
||||||
|
@ -407,4 +440,12 @@ if [ "${BUILD_LBRYCRD}" = true ]; then
|
||||||
trap 'cat_and_exit "${LBRYCRD_LOG}"' INT TERM EXIT
|
trap 'cat_and_exit "${LBRYCRD_LOG}"' INT TERM EXIT
|
||||||
build_lbrycrd
|
build_lbrycrd
|
||||||
trap - INT TERM EXIT
|
trap - INT TERM EXIT
|
||||||
|
|
||||||
|
./src/test/test_lbrycrd
|
||||||
|
set +u
|
||||||
|
if [[ ! $CXXFLAGS =~ -g ]]; then
|
||||||
|
strip src/lbrycrdd
|
||||||
|
strip src/lbrycrd-cli
|
||||||
|
strip src/lbrycrd-tx
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -19,7 +19,7 @@ else
|
||||||
LIBUNIVALUE = $(UNIVALUE_LIBS)
|
LIBUNIVALUE = $(UNIVALUE_LIBS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
BITCOIN_INCLUDES=-I$(builddir) $(BDB_CPPFLAGS) $(ICU_CPPFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) $(CRYPTO_CFLAGS) $(SSL_CFLAGS) $(ICU_CFLAGS)
|
BITCOIN_INCLUDES=-I$(builddir) $(BDB_CPPFLAGS) $(ICU_CPPFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) $(CRYPTO_CFLAGS)
|
||||||
|
|
||||||
BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include
|
BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include
|
||||||
BITCOIN_INCLUDES += $(UNIVALUE_CFLAGS)
|
BITCOIN_INCLUDES += $(UNIVALUE_CFLAGS)
|
||||||
|
@ -80,11 +80,11 @@ TESTS =
|
||||||
BENCHMARKS =
|
BENCHMARKS =
|
||||||
|
|
||||||
if BUILD_BITCOIND
|
if BUILD_BITCOIND
|
||||||
bin_PROGRAMS += bitcoind
|
bin_PROGRAMS += lbrycrdd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if BUILD_BITCOIN_UTILS
|
if BUILD_BITCOIN_UTILS
|
||||||
bin_PROGRAMS += bitcoin-cli bitcoin-tx
|
bin_PROGRAMS += lbrycrd-cli lbrycrd-tx
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: FORCE check-symbols check-security
|
.PHONY: FORCE check-symbols check-security
|
||||||
|
@ -227,6 +227,7 @@ libbitcoin_server_a_SOURCES = \
|
||||||
chain.cpp \
|
chain.cpp \
|
||||||
checkpoints.cpp \
|
checkpoints.cpp \
|
||||||
claimtrie.cpp \
|
claimtrie.cpp \
|
||||||
|
claimtrieforks.cpp \
|
||||||
consensus/tx_verify.cpp \
|
consensus/tx_verify.cpp \
|
||||||
httprpc.cpp \
|
httprpc.cpp \
|
||||||
httpserver.cpp \
|
httpserver.cpp \
|
||||||
|
@ -411,7 +412,7 @@ libbitcoin_common_a_SOURCES = \
|
||||||
# This library *must* be included to make sure that the glibc
|
# This library *must* be included to make sure that the glibc
|
||||||
# backward-compatibility objects and their sanity checks are linked.
|
# backward-compatibility objects and their sanity checks are linked.
|
||||||
libbitcoin_util_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
libbitcoin_util_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
||||||
libbitcoin_util_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
libbitcoin_util_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) $(CRYPTO_CFLAGS)
|
||||||
libbitcoin_util_a_SOURCES = \
|
libbitcoin_util_a_SOURCES = \
|
||||||
support/lockedpool.cpp \
|
support/lockedpool.cpp \
|
||||||
chainparamsbase.cpp \
|
chainparamsbase.cpp \
|
||||||
|
@ -440,7 +441,7 @@ libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp
|
||||||
AM_LDFLAGS += $(COMPAT_LDFLAGS)
|
AM_LDFLAGS += $(COMPAT_LDFLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# cli: shared between bitcoin-cli and bitcoin-qt
|
# cli: shared between lbrycrd-cli and bitcoin-qt
|
||||||
libbitcoin_cli_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
libbitcoin_cli_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
||||||
libbitcoin_cli_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
libbitcoin_cli_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||||
libbitcoin_cli_a_SOURCES = \
|
libbitcoin_cli_a_SOURCES = \
|
||||||
|
@ -451,16 +452,16 @@ nodist_libbitcoin_util_a_SOURCES = $(srcdir)/obj/build.h
|
||||||
#
|
#
|
||||||
|
|
||||||
# bitcoind binary #
|
# bitcoind binary #
|
||||||
bitcoind_SOURCES = bitcoind.cpp
|
lbrycrdd_SOURCES = bitcoind.cpp
|
||||||
bitcoind_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
lbrycrdd_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
||||||
bitcoind_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
lbrycrdd_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||||
bitcoind_LDFLAGS = -L$(ICU_PREFIX)/lib $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
lbrycrdd_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||||
|
|
||||||
if TARGET_WINDOWS
|
if TARGET_WINDOWS
|
||||||
bitcoind_SOURCES += bitcoind-res.rc
|
lbrycrdd_SOURCES += bitcoind-res.rc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
bitcoind_LDADD = \
|
lbrycrdd_LDADD = \
|
||||||
$(LIBBITCOIN_SERVER) \
|
$(LIBBITCOIN_SERVER) \
|
||||||
$(LIBBITCOIN_WALLET) \
|
$(LIBBITCOIN_WALLET) \
|
||||||
$(LIBBITCOIN_COMMON) \
|
$(LIBBITCOIN_COMMON) \
|
||||||
|
@ -474,38 +475,38 @@ bitcoind_LDADD = \
|
||||||
$(LIBMEMENV) \
|
$(LIBMEMENV) \
|
||||||
$(LIBSECP256K1)
|
$(LIBSECP256K1)
|
||||||
|
|
||||||
bitcoind_LDADD += $(BOOST_LIBS) $(ICU_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(ZMQ_LIBS)
|
lbrycrdd_LDADD += $(BOOST_LIBS) $(BDB_LIBS) $(CRYPTO_LIBS) $(ICU_LIBS) $(MINIUPNPC_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(ZMQ_LIBS)
|
||||||
|
|
||||||
# bitcoin-cli binary #
|
# lbrycrd-cli binary #
|
||||||
bitcoin_cli_SOURCES = bitcoin-cli.cpp
|
lbrycrd_cli_SOURCES = bitcoin-cli.cpp
|
||||||
bitcoin_cli_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(EVENT_CFLAGS)
|
lbrycrd_cli_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(EVENT_CFLAGS)
|
||||||
bitcoin_cli_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
lbrycrd_cli_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||||
bitcoin_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
lbrycrd_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||||
|
|
||||||
if TARGET_WINDOWS
|
if TARGET_WINDOWS
|
||||||
bitcoin_cli_SOURCES += bitcoin-cli-res.rc
|
lbrycrd_cli_SOURCES += bitcoin-cli-res.rc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
bitcoin_cli_LDADD = \
|
lbrycrd_cli_LDADD = \
|
||||||
$(LIBBITCOIN_CLI) \
|
$(LIBBITCOIN_CLI) \
|
||||||
$(LIBUNIVALUE) \
|
$(LIBUNIVALUE) \
|
||||||
$(LIBBITCOIN_UTIL) \
|
$(LIBBITCOIN_UTIL) \
|
||||||
$(LIBBITCOIN_CRYPTO)
|
$(LIBBITCOIN_CRYPTO)
|
||||||
|
|
||||||
bitcoin_cli_LDADD += $(BOOST_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(EVENT_LIBS)
|
lbrycrd_cli_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS) $(ICU_LIBS) $(EVENT_LIBS)
|
||||||
#
|
#
|
||||||
|
|
||||||
# bitcoin-tx binary #
|
# bitcoin-tx binary #
|
||||||
bitcoin_tx_SOURCES = bitcoin-tx.cpp
|
lbrycrd_tx_SOURCES = bitcoin-tx.cpp
|
||||||
bitcoin_tx_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
lbrycrd_tx_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
||||||
bitcoin_tx_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
lbrycrd_tx_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||||
bitcoin_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
lbrycrd_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||||
|
|
||||||
if TARGET_WINDOWS
|
if TARGET_WINDOWS
|
||||||
bitcoin_tx_SOURCES += bitcoin-tx-res.rc
|
lbrycrd_tx_SOURCES += bitcoin-tx-res.rc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
bitcoin_tx_LDADD = \
|
lbrycrd_tx_LDADD = \
|
||||||
$(LIBUNIVALUE) \
|
$(LIBUNIVALUE) \
|
||||||
$(LIBBITCOIN_COMMON) \
|
$(LIBBITCOIN_COMMON) \
|
||||||
$(LIBBITCOIN_UTIL) \
|
$(LIBBITCOIN_UTIL) \
|
||||||
|
@ -513,7 +514,7 @@ bitcoin_tx_LDADD = \
|
||||||
$(LIBBITCOIN_CRYPTO) \
|
$(LIBBITCOIN_CRYPTO) \
|
||||||
$(LIBSECP256K1)
|
$(LIBSECP256K1)
|
||||||
|
|
||||||
bitcoin_tx_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
|
lbrycrd_tx_LDADD += $(BOOST_LIBS) $(ICU_LIBS) $(CRYPTO_LIBS)
|
||||||
#
|
#
|
||||||
|
|
||||||
# bitcoinconsensus library #
|
# bitcoinconsensus library #
|
||||||
|
|
|
@ -55,7 +55,7 @@ if ENABLE_WALLET
|
||||||
bench_bench_bitcoin_SOURCES += bench/coin_selection.cpp
|
bench_bench_bitcoin_SOURCES += bench/coin_selection.cpp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
bench_bench_bitcoin_LDADD += $(BOOST_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
bench_bench_bitcoin_LDADD += $(BOOST_LIBS) $(BDB_LIBS) $(CRYPTO_LIBS) $(ICU_LIBS) $(MINIUPNPC_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||||
bench_bench_bitcoin_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
bench_bench_bitcoin_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||||
|
|
||||||
CLEAN_BITCOIN_BENCH = bench/*.gcda bench/*.gcno $(GENERATED_BENCH_FILES)
|
CLEAN_BITCOIN_BENCH = bench/*.gcda bench/*.gcno $(GENERATED_BENCH_FILES)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
bin_PROGRAMS += qt/bitcoin-qt
|
bin_PROGRAMS += qt/lbrycrd-qt
|
||||||
EXTRA_LIBRARIES += qt/libbitcoinqt.a
|
EXTRA_LIBRARIES += qt/libbitcoinqt.a
|
||||||
|
|
||||||
# bitcoin qt core #
|
# bitcoin qt core #
|
||||||
|
@ -366,7 +366,7 @@ BITCOIN_RC = qt/res/bitcoin-qt-res.rc
|
||||||
BITCOIN_QT_INCLUDES = -DQT_NO_KEYWORDS
|
BITCOIN_QT_INCLUDES = -DQT_NO_KEYWORDS
|
||||||
|
|
||||||
qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||||
$(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
$(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS) $(SSL_CFLAGS)
|
||||||
qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||||
qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(QT_PIE_FLAGS)
|
qt_libbitcoinqt_a_OBJCXXFLAGS = $(AM_OBJCXXFLAGS) $(QT_PIE_FLAGS)
|
||||||
|
|
||||||
|
@ -382,37 +382,37 @@ QT_FORMS_H=$(join $(dir $(QT_FORMS_UI)),$(addprefix ui_, $(notdir $(QT_FORMS_UI:
|
||||||
# Most files will depend on the forms and moc files as includes. Generate them
|
# Most files will depend on the forms and moc files as includes. Generate them
|
||||||
# before anything else.
|
# before anything else.
|
||||||
$(QT_MOC): $(QT_FORMS_H)
|
$(QT_MOC): $(QT_FORMS_H)
|
||||||
$(qt_libbitcoinqt_a_OBJECTS) $(qt_bitcoin_qt_OBJECTS) : | $(QT_MOC)
|
$(qt_libbitcoinqt_a_OBJECTS) $(qt_lbrycrd_qt_OBJECTS) : | $(QT_MOC)
|
||||||
|
|
||||||
#Generating these with a half-written protobuf header leads to wacky results.
|
#Generating these with a half-written protobuf header leads to wacky results.
|
||||||
#This makes sure it's done.
|
#This makes sure it's done.
|
||||||
$(QT_MOC): $(PROTOBUF_H)
|
$(QT_MOC): $(PROTOBUF_H)
|
||||||
$(QT_MOC_CPP): $(PROTOBUF_H)
|
$(QT_MOC_CPP): $(PROTOBUF_H)
|
||||||
|
|
||||||
# bitcoin-qt binary #
|
# lbrycrd-qt binary #
|
||||||
qt_bitcoin_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
qt_lbrycrd_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||||
$(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
$(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS)
|
||||||
qt_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
qt_lbrycrd_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||||
|
|
||||||
qt_bitcoin_qt_SOURCES = qt/bitcoin.cpp
|
qt_lbrycrd_qt_SOURCES = qt/bitcoin.cpp
|
||||||
if TARGET_DARWIN
|
if TARGET_DARWIN
|
||||||
qt_bitcoin_qt_SOURCES += $(BITCOIN_MM)
|
qt_lbrycrd_qt_SOURCES += $(BITCOIN_MM)
|
||||||
endif
|
endif
|
||||||
if TARGET_WINDOWS
|
if TARGET_WINDOWS
|
||||||
qt_bitcoin_qt_SOURCES += $(BITCOIN_RC)
|
qt_lbrycrd_qt_SOURCES += $(BITCOIN_RC)
|
||||||
endif
|
endif
|
||||||
qt_bitcoin_qt_LDADD = qt/libbitcoinqt.a $(LIBBITCOIN_SERVER)
|
qt_lbrycrd_qt_LDADD = qt/libbitcoinqt.a $(LIBBITCOIN_SERVER)
|
||||||
if ENABLE_WALLET
|
if ENABLE_WALLET
|
||||||
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_UTIL) $(LIBBITCOIN_WALLET)
|
qt_lbrycrd_qt_LDADD += $(LIBBITCOIN_UTIL) $(LIBBITCOIN_WALLET)
|
||||||
endif
|
endif
|
||||||
if ENABLE_ZMQ
|
if ENABLE_ZMQ
|
||||||
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
qt_lbrycrd_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
||||||
endif
|
endif
|
||||||
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
|
qt_lbrycrd_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(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) $(PROTOBUF_LIBS) $(ICU_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||||
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||||
qt_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
qt_lbrycrd_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||||
qt_bitcoin_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX
|
qt_lbrycrd_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX
|
||||||
|
|
||||||
#locale/foo.ts -> locale/foo.qm
|
#locale/foo.ts -> locale/foo.qm
|
||||||
QT_QM=$(QT_TS:.ts=.qm)
|
QT_QM=$(QT_TS:.ts=.qm)
|
||||||
|
@ -444,9 +444,9 @@ CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda
|
||||||
CLEANFILES += $(CLEAN_QT)
|
CLEANFILES += $(CLEAN_QT)
|
||||||
|
|
||||||
bitcoin_qt_clean: FORCE
|
bitcoin_qt_clean: FORCE
|
||||||
rm -f $(CLEAN_QT) $(qt_libbitcoinqt_a_OBJECTS) $(qt_bitcoin_qt_OBJECTS) qt/bitcoin-qt$(EXEEXT) $(LIBBITCOINQT)
|
rm -f $(CLEAN_QT) $(qt_libbitcoinqt_a_OBJECTS) $(qt_lbrycrd_qt_OBJECTS) qt/lbrycrd-qt$(EXEEXT) $(LIBBITCOINQT)
|
||||||
|
|
||||||
bitcoin_qt : qt/bitcoin-qt$(EXEEXT)
|
bitcoin_qt : qt/lbrycrd-qt$(EXEEXT)
|
||||||
|
|
||||||
ui_%.h: %.ui
|
ui_%.h: %.ui
|
||||||
@test -f $(UIC)
|
@test -f $(UIC)
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
bin_PROGRAMS += qt/test/test_bitcoin-qt
|
bin_PROGRAMS += qt/test/test_lbrycrd-qt
|
||||||
TESTS += qt/test/test_bitcoin-qt
|
TESTS += qt/test/test_lbrycrd-qt
|
||||||
|
|
||||||
TEST_QT_MOC_CPP = \
|
TEST_QT_MOC_CPP = \
|
||||||
qt/test/moc_compattests.cpp \
|
qt/test/moc_compattests.cpp \
|
||||||
|
@ -33,10 +33,10 @@ TEST_BITCOIN_CPP = \
|
||||||
TEST_BITCOIN_H = \
|
TEST_BITCOIN_H = \
|
||||||
test/test_bitcoin.h
|
test/test_bitcoin.h
|
||||||
|
|
||||||
qt_test_test_bitcoin_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
qt_test_test_lbrycrd_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \
|
||||||
$(QT_INCLUDES) $(QT_TEST_INCLUDES) $(PROTOBUF_CFLAGS)
|
$(QT_INCLUDES) $(QT_TEST_INCLUDES) $(PROTOBUF_CFLAGS)
|
||||||
|
|
||||||
qt_test_test_bitcoin_qt_SOURCES = \
|
qt_test_test_lbrycrd_qt_SOURCES = \
|
||||||
qt/test/compattests.cpp \
|
qt/test/compattests.cpp \
|
||||||
qt/test/rpcnestedtests.cpp \
|
qt/test/rpcnestedtests.cpp \
|
||||||
qt/test/test_main.cpp \
|
qt/test/test_main.cpp \
|
||||||
|
@ -46,37 +46,37 @@ qt_test_test_bitcoin_qt_SOURCES = \
|
||||||
$(TEST_BITCOIN_CPP) \
|
$(TEST_BITCOIN_CPP) \
|
||||||
$(TEST_BITCOIN_H)
|
$(TEST_BITCOIN_H)
|
||||||
if ENABLE_WALLET
|
if ENABLE_WALLET
|
||||||
qt_test_test_bitcoin_qt_SOURCES += \
|
qt_test_test_lbrycrd_qt_SOURCES += \
|
||||||
qt/test/addressbooktests.cpp \
|
qt/test/addressbooktests.cpp \
|
||||||
qt/test/paymentservertests.cpp \
|
qt/test/paymentservertests.cpp \
|
||||||
qt/test/wallettests.cpp \
|
qt/test/wallettests.cpp \
|
||||||
wallet/test/wallet_test_fixture.cpp
|
wallet/test/wallet_test_fixture.cpp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
nodist_qt_test_test_bitcoin_qt_SOURCES = $(TEST_QT_MOC_CPP)
|
nodist_qt_test_test_lbrycrd_qt_SOURCES = $(TEST_QT_MOC_CPP)
|
||||||
|
|
||||||
qt_test_test_bitcoin_qt_LDADD = $(LIBBITCOINQT) $(LIBBITCOIN_SERVER)
|
qt_test_test_lbrycrd_qt_LDADD = $(LIBBITCOINQT) $(LIBBITCOIN_SERVER)
|
||||||
if ENABLE_WALLET
|
if ENABLE_WALLET
|
||||||
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_UTIL) $(LIBBITCOIN_WALLET)
|
qt_test_test_lbrycrd_qt_LDADD += $(LIBBITCOIN_UTIL) $(LIBBITCOIN_WALLET)
|
||||||
endif
|
endif
|
||||||
if ENABLE_ZMQ
|
if ENABLE_ZMQ
|
||||||
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
qt_test_test_lbrycrd_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
||||||
endif
|
endif
|
||||||
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) \
|
qt_test_test_lbrycrd_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) \
|
||||||
$(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
|
$(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
|
||||||
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
$(QR_LIBS) $(PROTOBUF_LIBS) $(ICU_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
|
||||||
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
|
||||||
qt_test_test_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
qt_test_test_lbrycrd_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||||
qt_test_test_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
qt_test_test_lbrycrd_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
|
||||||
|
|
||||||
CLEAN_BITCOIN_QT_TEST = $(TEST_QT_MOC_CPP) qt/test/*.gcda qt/test/*.gcno
|
CLEAN_BITCOIN_QT_TEST = $(TEST_QT_MOC_CPP) qt/test/*.gcda qt/test/*.gcno
|
||||||
|
|
||||||
CLEANFILES += $(CLEAN_BITCOIN_QT_TEST)
|
CLEANFILES += $(CLEAN_BITCOIN_QT_TEST)
|
||||||
|
|
||||||
test_bitcoin_qt : qt/test/test_bitcoin-qt$(EXEEXT)
|
test_lbrycrd_qt : qt/test/test_bitcoin-qt$(EXEEXT)
|
||||||
|
|
||||||
test_bitcoin_qt_check : qt/test/test_bitcoin-qt$(EXEEXT) FORCE
|
test_lbrycrd_qt_check : qt/test/test_bitcoin-qt$(EXEEXT) FORCE
|
||||||
$(MAKE) check-TESTS TESTS=$^
|
$(MAKE) check-TESTS TESTS=$^
|
||||||
|
|
||||||
test_bitcoin_qt_clean: FORCE
|
test_lbrycrd_qt_clean: FORCE
|
||||||
rm -f $(CLEAN_BITCOIN_QT_TEST) $(qt_test_test_bitcoin_qt_OBJECTS)
|
rm -f $(CLEAN_BITCOIN_QT_TEST) $(qt_test_test_lbrycrd_qt_OBJECTS)
|
||||||
|
|
|
@ -112,7 +112,7 @@ BITCOIN_TEST_SUITE += \
|
||||||
endif
|
endif
|
||||||
|
|
||||||
test_test_lbrycrd_SOURCES = $(BITCOIN_TEST_SUITE) $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES)
|
test_test_lbrycrd_SOURCES = $(BITCOIN_TEST_SUITE) $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES)
|
||||||
test_test_lbrycrd_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(TESTDEFS) $(EVENT_CFLAGS)
|
test_test_lbrycrd_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(TESTDEFS) $(EVENT_CFLAGS) $(ICU_CPPFLAGS)
|
||||||
test_test_lbrycrd_LDADD =
|
test_test_lbrycrd_LDADD =
|
||||||
if ENABLE_WALLET
|
if ENABLE_WALLET
|
||||||
test_test_lbrycrd_LDADD += $(LIBBITCOIN_WALLET)
|
test_test_lbrycrd_LDADD += $(LIBBITCOIN_WALLET)
|
||||||
|
@ -122,7 +122,7 @@ test_test_lbrycrd_LDADD += $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_C
|
||||||
$(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS)
|
$(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS)
|
||||||
test_test_lbrycrd_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
test_test_lbrycrd_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||||
|
|
||||||
test_test_lbrycrd_LDADD += $(LIBBITCOIN_CONSENSUS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
|
test_test_lbrycrd_LDADD += $(LIBBITCOIN_CONSENSUS) $(BDB_LIBS) $(CRYPTO_LIBS) $(ICU_LIBS) $(MINIUPNPC_LIBS)
|
||||||
test_test_lbrycrd_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static
|
test_test_lbrycrd_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static
|
||||||
|
|
||||||
if ENABLE_ZMQ
|
if ENABLE_ZMQ
|
||||||
|
@ -148,7 +148,7 @@ test_test_lbrycrd_fuzzy_LDADD = \
|
||||||
$(LIBBITCOIN_CRYPTO_SHANI) \
|
$(LIBBITCOIN_CRYPTO_SHANI) \
|
||||||
$(LIBSECP256K1)
|
$(LIBSECP256K1)
|
||||||
|
|
||||||
test_test_lbrycrd_fuzzy_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
|
test_test_lbrycrd_fuzzy_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS) $(ICU_LIBS)
|
||||||
#
|
#
|
||||||
|
|
||||||
nodist_test_test_lbrycrd_SOURCES = $(GENERATED_TEST_FILES)
|
nodist_test_test_lbrycrd_SOURCES = $(GENERATED_TEST_FILES)
|
||||||
|
|
|
@ -107,10 +107,10 @@ static int AppInitRPC(int argc, char* argv[])
|
||||||
std::string strUsage = PACKAGE_NAME " RPC client version " + FormatFullVersion() + "\n";
|
std::string strUsage = PACKAGE_NAME " RPC client version " + FormatFullVersion() + "\n";
|
||||||
if (!gArgs.IsArgSet("-version")) {
|
if (!gArgs.IsArgSet("-version")) {
|
||||||
strUsage += "\n"
|
strUsage += "\n"
|
||||||
"Usage: bitcoin-cli [options] <command> [params] Send command to " PACKAGE_NAME "\n"
|
"Usage: lbrycrd-cli [options] <command> [params] Send command to " PACKAGE_NAME "\n"
|
||||||
"or: bitcoin-cli [options] -named <command> [name=value]... Send command to " PACKAGE_NAME " (with named arguments)\n"
|
"or: lbrycrd-cli [options] -named <command> [name=value]... Send command to " PACKAGE_NAME " (with named arguments)\n"
|
||||||
"or: bitcoin-cli [options] help List commands\n"
|
"or: lbrycrd-cli [options] help List commands\n"
|
||||||
"or: bitcoin-cli [options] help <command> Get help for a command\n";
|
"or: lbrycrd-cli [options] help <command> Get help for a command\n";
|
||||||
strUsage += "\n" + gArgs.GetHelpMessage();
|
strUsage += "\n" + gArgs.GetHelpMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -470,7 +470,7 @@ static int CommandLineRPC(int argc, char *argv[])
|
||||||
strPrint += "error message:\n"+errMsg.get_str();
|
strPrint += "error message:\n"+errMsg.get_str();
|
||||||
|
|
||||||
if (errCode.isNum() && errCode.get_int() == RPC_WALLET_NOT_SPECIFIED) {
|
if (errCode.isNum() && errCode.get_int() == RPC_WALLET_NOT_SPECIFIED) {
|
||||||
strPrint += "\nTry adding \"-rpcwallet=<filename>\" option to bitcoin-cli command line.";
|
strPrint += "\nTry adding \"-rpcwallet=<filename>\" option to lbrycrd-cli command line.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -98,9 +98,9 @@ static int AppInitRawTx(int argc, char* argv[])
|
||||||
|
|
||||||
if (argc < 2 || HelpRequested(gArgs)) {
|
if (argc < 2 || HelpRequested(gArgs)) {
|
||||||
// First part of help message is specific to this utility
|
// First part of help message is specific to this utility
|
||||||
std::string strUsage = PACKAGE_NAME " bitcoin-tx utility version " + FormatFullVersion() + "\n\n" +
|
std::string strUsage = PACKAGE_NAME " lbrycrd-tx utility version " + FormatFullVersion() + "\n\n" +
|
||||||
"Usage: bitcoin-tx [options] <hex-tx> [commands] Update hex-encoded bitcoin transaction\n" +
|
"Usage: lbrycrd-tx [options] <hex-tx> [commands] Update hex-encoded lbrycrd transaction\n" +
|
||||||
"or: bitcoin-tx [options] -create [commands] Create hex-encoded bitcoin transaction\n" +
|
"or: lbrycrd-tx [options] -create [commands] Create hex-encoded lbrycrd transaction\n" +
|
||||||
"\n";
|
"\n";
|
||||||
strUsage += gArgs.GetHelpMessage();
|
strUsage += gArgs.GetHelpMessage();
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ static bool AppInit(int argc, char* argv[])
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strUsage += "\nUsage: bitcoind [options] Start " PACKAGE_NAME " Daemon\n";
|
strUsage += "\nUsage: lbrycrdd [options] Start " PACKAGE_NAME " Daemon\n";
|
||||||
strUsage += "\n" + gArgs.GetHelpMessage();
|
strUsage += "\n" + gArgs.GetHelpMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ static bool AppInit(int argc, char* argv[])
|
||||||
// Error out when loose non-argument tokens are encountered on command line
|
// Error out when loose non-argument tokens are encountered on command line
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (!IsSwitchChar(argv[i][0])) {
|
if (!IsSwitchChar(argv[i][0])) {
|
||||||
fprintf(stderr, "Error: Command line contains unexpected token '%s', see bitcoind -h for a list of options.\n", argv[i]);
|
fprintf(stderr, "Error: Command line contains unexpected token '%s', see lbrycrdd -h for a list of options.\n", argv[i]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ static bool AppInit(int argc, char* argv[])
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
#endif
|
#endif
|
||||||
fprintf(stdout, "Bitcoin server starting\n");
|
fprintf(stdout, "LBRYcrd server starting\n");
|
||||||
|
|
||||||
// Daemonize
|
// Daemonize
|
||||||
if (daemon(1, 0)) { // don't chdir (1), do close FDs (0)
|
if (daemon(1, 0)) { // don't chdir (1), do close FDs (0)
|
||||||
|
|
|
@ -131,6 +131,7 @@ public:
|
||||||
consensus.BIP16Exception = uint256S("0x00000000000002dc756eebf4f49723ed8d30cc28a5f108eb94b1ba88ac4f9c22");
|
consensus.BIP16Exception = uint256S("0x00000000000002dc756eebf4f49723ed8d30cc28a5f108eb94b1ba88ac4f9c22");
|
||||||
consensus.BIP34Height = 1;
|
consensus.BIP34Height = 1;
|
||||||
consensus.BIP34Hash = uint256S("0xdecb9e2cca03a419fd9cca0cb2b1d5ad11b088f22f8f38556d93ac4358b86c24");
|
consensus.BIP34Hash = uint256S("0xdecb9e2cca03a419fd9cca0cb2b1d5ad11b088f22f8f38556d93ac4358b86c24");
|
||||||
|
// FIXME: adjust heights
|
||||||
consensus.BIP65Height = 600000;
|
consensus.BIP65Height = 600000;
|
||||||
consensus.BIP66Height = 600000;
|
consensus.BIP66Height = 600000;
|
||||||
consensus.powLimit = uint256S("0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
consensus.powLimit = uint256S("0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
|
@ -139,7 +140,9 @@ public:
|
||||||
consensus.nOriginalClaimExpirationTime = 262974;
|
consensus.nOriginalClaimExpirationTime = 262974;
|
||||||
consensus.nExtendedClaimExpirationTime = 2102400;
|
consensus.nExtendedClaimExpirationTime = 2102400;
|
||||||
consensus.nExtendedClaimExpirationForkHeight = 400155;
|
consensus.nExtendedClaimExpirationForkHeight = 400155;
|
||||||
consensus.nNormalizedNameForkHeight = 1000000; // FIXME: pick a real fork height
|
consensus.nAllowMinDiffMinHeight = -1;
|
||||||
|
consensus.nAllowMinDiffMaxHeight = -1;
|
||||||
|
consensus.nNormalizedNameForkHeight = 539940; // targeting 21 March 2019
|
||||||
consensus.fPowAllowMinDifficultyBlocks = false;
|
consensus.fPowAllowMinDifficultyBlocks = false;
|
||||||
consensus.fPowNoRetargeting = false;
|
consensus.fPowNoRetargeting = false;
|
||||||
consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016
|
consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016
|
||||||
|
@ -155,7 +158,6 @@ public:
|
||||||
|
|
||||||
// Deployment of SegWit (BIP141, BIP143, and BIP147)
|
// Deployment of SegWit (BIP141, BIP143, and BIP147)
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].bit = 1;
|
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].bit = 1;
|
||||||
// FIXME: Update times
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1547942400; // Jan 20, 2019
|
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1547942400; // Jan 20, 2019
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 1548288000; // Jan 24, 2019
|
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 1548288000; // Jan 24, 2019
|
||||||
|
|
||||||
|
@ -211,14 +213,12 @@ public:
|
||||||
fRequireStandard = true;
|
fRequireStandard = true;
|
||||||
fMineBlocksOnDemand = false;
|
fMineBlocksOnDemand = false;
|
||||||
|
|
||||||
// FIXME: update checkpoints?
|
|
||||||
checkpointData = {
|
checkpointData = {
|
||||||
{
|
{
|
||||||
{ 4000, uint256S("0xa6bbb48f5343eb9b0287c22f3ea8b29f36cf10794a37f8a925a894d6f4519913") },
|
{ 4000, uint256S("0xa6bbb48f5343eb9b0287c22f3ea8b29f36cf10794a37f8a925a894d6f4519913") },
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME:
|
|
||||||
chainTxData = ChainTxData{
|
chainTxData = ChainTxData{
|
||||||
1467272478, 4146, 600.0
|
1467272478, 4146, 600.0
|
||||||
/* // Data from rpc: getchaintxstats 4096 0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8 */
|
/* // Data from rpc: getchaintxstats 4096 0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8 */
|
||||||
|
@ -244,20 +244,22 @@ public:
|
||||||
consensus.nMajorityRejectBlockOutdated = 75;
|
consensus.nMajorityRejectBlockOutdated = 75;
|
||||||
consensus.nMajorityWindow = 100;
|
consensus.nMajorityWindow = 100;
|
||||||
consensus.BIP16Exception = uint256S("0x00000000dd30457c001f4095d208cc1296b0eed002427aa599874af7a432b105");
|
consensus.BIP16Exception = uint256S("0x00000000dd30457c001f4095d208cc1296b0eed002427aa599874af7a432b105");
|
||||||
// FIXME: adjust heights
|
|
||||||
consensus.BIP34Height = 21111;
|
consensus.BIP34Height = 21111;
|
||||||
consensus.BIP34Hash = uint256S("0x0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8");
|
consensus.BIP34Hash = uint256S("0x0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8");
|
||||||
consensus.BIP65Height = 581885; // 00000000007f6655f22f98e72ed80d8b06dc761d5da09df0fa1dc4be4f861eb6
|
// FIXME: adjust heights
|
||||||
consensus.BIP66Height = 330776; // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182
|
consensus.BIP65Height = 1000000;
|
||||||
|
consensus.BIP66Height = 1000000;
|
||||||
consensus.powLimit = uint256S("0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
consensus.powLimit = uint256S("0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
consensus.nPowTargetTimespan = 150;
|
consensus.nPowTargetTimespan = 150;
|
||||||
consensus.nPowTargetSpacing = 150;
|
consensus.nPowTargetSpacing = 150;
|
||||||
consensus.nOriginalClaimExpirationTime = 262974;
|
consensus.nOriginalClaimExpirationTime = 262974;
|
||||||
consensus.nExtendedClaimExpirationTime = 2102400;
|
consensus.nExtendedClaimExpirationTime = 2102400;
|
||||||
consensus.nExtendedClaimExpirationForkHeight = 278160;
|
consensus.nExtendedClaimExpirationForkHeight = 278160;
|
||||||
|
consensus.nAllowMinDiffMinHeight = 277299;
|
||||||
|
consensus.nAllowMinDiffMaxHeight = 1100000;
|
||||||
|
consensus.nNormalizedNameForkHeight = 993380; // targeting, 21 Feb 2019
|
||||||
consensus.fPowAllowMinDifficultyBlocks = true;
|
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||||
consensus.fPowNoRetargeting = false;
|
consensus.fPowNoRetargeting = false;
|
||||||
consensus.nNormalizedNameForkHeight = 1000000; // FIXME: pick a real fork height
|
|
||||||
consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains
|
consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains
|
||||||
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
|
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
||||||
|
@ -278,7 +280,7 @@ public:
|
||||||
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000000a0c3931735170");
|
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000000a0c3931735170");
|
||||||
|
|
||||||
// By default assume that the signatures in ancestors of this block are valid.
|
// By default assume that the signatures in ancestors of this block are valid.
|
||||||
consensus.defaultAssumeValid = uint256S("0x0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75"); //1354312
|
consensus.defaultAssumeValid = uint256S("9812b0bcb7e889e58d999c897e9eaddb2dab98122ff1cfb238ebeef5351bd48c"); // 1
|
||||||
|
|
||||||
pchMessageStart[0] = 0xfa;
|
pchMessageStart[0] = 0xfa;
|
||||||
pchMessageStart[1] = 0xe4;
|
pchMessageStart[1] = 0xe4;
|
||||||
|
@ -324,7 +326,6 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME:
|
|
||||||
chainTxData = ChainTxData{
|
chainTxData = ChainTxData{
|
||||||
// Data from rpc: getchaintxstats 4096 0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75
|
// Data from rpc: getchaintxstats 4096 0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75
|
||||||
/* nTime */ 1531929919,
|
/* nTime */ 1531929919,
|
||||||
|
@ -346,9 +347,9 @@ public:
|
||||||
strNetworkID = "lbrycrdreg";
|
strNetworkID = "lbrycrdreg";
|
||||||
consensus.nSubsidyLevelInterval = 1 << 5;
|
consensus.nSubsidyLevelInterval = 1 << 5;
|
||||||
consensus.BIP16Exception = uint256();
|
consensus.BIP16Exception = uint256();
|
||||||
// FIXME: heights
|
|
||||||
consensus.BIP34Height = 1000; // BIP34 is needed for validation_block_tests
|
consensus.BIP34Height = 1000; // BIP34 is needed for validation_block_tests
|
||||||
consensus.BIP34Hash = uint256();
|
consensus.BIP34Hash = uint256();
|
||||||
|
// FIXME: update heights and add activation tests
|
||||||
consensus.BIP65Height = 1351; // BIP65 activated on regtest (Used in rpc activation tests)
|
consensus.BIP65Height = 1351; // BIP65 activated on regtest (Used in rpc activation tests)
|
||||||
consensus.BIP66Height = 1251; // BIP66 activated on regtest (Used in rpc activation tests)
|
consensus.BIP66Height = 1251; // BIP66 activated on regtest (Used in rpc activation tests)
|
||||||
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
|
@ -357,9 +358,11 @@ public:
|
||||||
consensus.nOriginalClaimExpirationTime = 500;
|
consensus.nOriginalClaimExpirationTime = 500;
|
||||||
consensus.nExtendedClaimExpirationTime = 600;
|
consensus.nExtendedClaimExpirationTime = 600;
|
||||||
consensus.nExtendedClaimExpirationForkHeight = 800;
|
consensus.nExtendedClaimExpirationForkHeight = 800;
|
||||||
|
consensus.nAllowMinDiffMinHeight = -1;
|
||||||
|
consensus.nAllowMinDiffMaxHeight = -1;
|
||||||
|
consensus.nNormalizedNameForkHeight = 250; // SDK depends upon this number
|
||||||
consensus.fPowAllowMinDifficultyBlocks = false;
|
consensus.fPowAllowMinDifficultyBlocks = false;
|
||||||
consensus.fPowNoRetargeting = false;
|
consensus.fPowNoRetargeting = false;
|
||||||
consensus.nNormalizedNameForkHeight = 2000; // FIXME: pick a real fork height
|
|
||||||
consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains
|
consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains
|
||||||
consensus.nMinerConfirmationWindow = 144; // Faster than normal for regtest (144 instead of 2016)
|
consensus.nMinerConfirmationWindow = 144; // Faster than normal for regtest (144 instead of 2016)
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
const std::string CBaseChainParams::MAIN = "main";
|
const std::string CBaseChainParams::MAIN = "lbrycrd";
|
||||||
const std::string CBaseChainParams::TESTNET = "test";
|
const std::string CBaseChainParams::TESTNET = "lbrycrdtest";
|
||||||
const std::string CBaseChainParams::REGTEST = "regtest";
|
const std::string CBaseChainParams::REGTEST = "regtest";
|
||||||
|
|
||||||
void SetupChainParamsBaseOptions()
|
void SetupChainParamsBaseOptions()
|
||||||
|
|
File diff suppressed because it is too large
Load diff
280
src/claimtrie.h
280
src/claimtrie.h
|
@ -1,13 +1,13 @@
|
||||||
#ifndef BITCOIN_CLAIMTRIE_H
|
#ifndef BITCOIN_CLAIMTRIE_H
|
||||||
#define BITCOIN_CLAIMTRIE_H
|
#define BITCOIN_CLAIMTRIE_H
|
||||||
|
|
||||||
#include "amount.h"
|
#include <amount.h>
|
||||||
#include "serialize.h"
|
#include <serialize.h>
|
||||||
#include "uint256.h"
|
#include <uint256.h>
|
||||||
#include "util.h"
|
#include <util.h>
|
||||||
#include "dbwrapper.h"
|
#include <dbwrapper.h>
|
||||||
#include "chainparams.h"
|
#include <chainparams.h>
|
||||||
#include "primitives/transaction.h"
|
#include <primitives/transaction.h>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -321,9 +321,11 @@ struct claimsForNameType
|
||||||
std::vector<CClaimValue> claims;
|
std::vector<CClaimValue> claims;
|
||||||
std::vector<CSupportValue> supports;
|
std::vector<CSupportValue> supports;
|
||||||
int nLastTakeoverHeight;
|
int nLastTakeoverHeight;
|
||||||
|
std::string name;
|
||||||
|
|
||||||
claimsForNameType(std::vector<CClaimValue> claims, std::vector<CSupportValue> supports, int nLastTakeoverHeight)
|
claimsForNameType(const std::vector<CClaimValue>& claims, const std::vector<CSupportValue>& supports,
|
||||||
: claims(std::move(claims)), supports(std::move(supports)), nLastTakeoverHeight(nLastTakeoverHeight) {}
|
int nLastTakeoverHeight, const std::string& name)
|
||||||
|
: claims(claims), supports(supports), nLastTakeoverHeight(nLastTakeoverHeight), name(name) {}
|
||||||
|
|
||||||
claimsForNameType(const claimsForNameType&) = default;
|
claimsForNameType(const claimsForNameType&) = default;
|
||||||
claimsForNameType(claimsForNameType&& other)
|
claimsForNameType(claimsForNameType&& other)
|
||||||
|
@ -331,29 +333,33 @@ struct claimsForNameType
|
||||||
claims = std::move(other.claims);
|
claims = std::move(other.claims);
|
||||||
supports = std::move(other.supports);
|
supports = std::move(other.supports);
|
||||||
nLastTakeoverHeight = other.nLastTakeoverHeight;
|
nLastTakeoverHeight = other.nLastTakeoverHeight;
|
||||||
|
name = std::move(other.name);
|
||||||
}
|
}
|
||||||
claimsForNameType& operator=(const claimsForNameType&) = default;
|
claimsForNameType& operator=(const claimsForNameType&) = default;
|
||||||
claimsForNameType& operator=(claimsForNameType&& other)
|
claimsForNameType& operator=(claimsForNameType&& other)
|
||||||
{
|
{
|
||||||
if (this != &other) {
|
if (this != &other)
|
||||||
|
{
|
||||||
claims = std::move(other.claims);
|
claims = std::move(other.claims);
|
||||||
supports = std::move(other.supports);
|
supports = std::move(other.supports);
|
||||||
nLastTakeoverHeight = other.nLastTakeoverHeight;
|
nLastTakeoverHeight = other.nLastTakeoverHeight;
|
||||||
|
name = std::move(other.name);
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CClaimTrieCache;
|
class CClaimTrieCacheBase;
|
||||||
|
class CClaimTrieCacheExpirationFork;
|
||||||
|
|
||||||
class CClaimTrie
|
class CClaimTrie
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CClaimTrie(bool fMemory = false, bool fWipe = false, int nProportionalDelayFactor = 32)
|
CClaimTrie(bool fMemory = false, bool fWipe = false, int nProportionalDelayFactor = 32)
|
||||||
: db(GetDataDir() / "claimtrie", 100, fMemory, fWipe, false)
|
: db(GetDataDir() / "claimtrie", 100, fMemory, fWipe, false), nCurrentHeight(0),
|
||||||
, nCurrentHeight(0), nExpirationTime(Params().GetConsensus().nOriginalClaimExpirationTime)
|
nExpirationTime(Params().GetConsensus().nOriginalClaimExpirationTime),
|
||||||
, nProportionalDelayFactor(nProportionalDelayFactor)
|
nProportionalDelayFactor(nProportionalDelayFactor),
|
||||||
, root(uint256S("0000000000000000000000000000000000000000000000000000000000000001"))
|
root(uint256S("0000000000000000000000000000000000000000000000000000000000000001"))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
uint256 getMerkleHash();
|
uint256 getMerkleHash();
|
||||||
|
@ -369,10 +375,7 @@ public:
|
||||||
bool getInfoForName(const std::string& name, CClaimValue& claim) const;
|
bool getInfoForName(const std::string& name, CClaimValue& claim) const;
|
||||||
bool getLastTakeoverForName(const std::string& name, int& lastTakeoverHeight) const;
|
bool getLastTakeoverForName(const std::string& name, int& lastTakeoverHeight) const;
|
||||||
|
|
||||||
claimsForNameType getClaimsForName(const std::string& name) const;
|
std::vector<CClaimValue> getClaimsForName(const std::string& name) const;
|
||||||
|
|
||||||
CAmount getEffectiveAmountForClaim(const std::string& name, const uint160& claimId, std::vector<CSupportValue>* supports = nullptr) const;
|
|
||||||
CAmount getEffectiveAmountForClaim(const claimsForNameType& claims, const uint160& claimId, std::vector<CSupportValue>* supports = nullptr) const;
|
|
||||||
|
|
||||||
bool queueEmpty() const;
|
bool queueEmpty() const;
|
||||||
bool supportEmpty() const;
|
bool supportEmpty() const;
|
||||||
|
@ -386,14 +389,6 @@ public:
|
||||||
void removeFromClaimIndex(const CClaimValue& claim);
|
void removeFromClaimIndex(const CClaimValue& claim);
|
||||||
|
|
||||||
bool getClaimById(const uint160 claimId, std::string& name, CClaimValue& claim) const;
|
bool getClaimById(const uint160 claimId, std::string& name, CClaimValue& claim) const;
|
||||||
bool getQueueRow(int nHeight, claimQueueRowType& row) const;
|
|
||||||
bool getQueueNameRow(const std::string& name, queueNameRowType& row) const;
|
|
||||||
bool getExpirationQueueRow(int nHeight, expirationQueueRowType& row) const;
|
|
||||||
bool getSupportNode(std::string name, supportMapEntryType& node) const;
|
|
||||||
bool getSupportQueueRow(int nHeight, supportQueueRowType& row) const;
|
|
||||||
bool getSupportQueueNameRow(const std::string& name, queueNameRowType& row) const;
|
|
||||||
bool getSupportExpirationQueueRow(int nHeight, expirationQueueRowType& row) const;
|
|
||||||
|
|
||||||
|
|
||||||
bool haveClaim(const std::string& name, const COutPoint& outPoint) const;
|
bool haveClaim(const std::string& name, const COutPoint& outPoint) const;
|
||||||
bool haveClaimInQueue(const std::string& name, const COutPoint& outPoint,
|
bool haveClaimInQueue(const std::string& name, const COutPoint& outPoint,
|
||||||
|
@ -407,7 +402,8 @@ public:
|
||||||
unsigned int getTotalClaimsInTrie() const;
|
unsigned int getTotalClaimsInTrie() const;
|
||||||
CAmount getTotalValueOfClaimsInTrie(bool fControllingOnly) const;
|
CAmount getTotalValueOfClaimsInTrie(bool fControllingOnly) const;
|
||||||
|
|
||||||
friend class CClaimTrieCache;
|
friend class CClaimTrieCacheBase;
|
||||||
|
friend class CClaimTrieCacheExpirationFork;
|
||||||
|
|
||||||
CDBWrapper db;
|
CDBWrapper db;
|
||||||
int nCurrentHeight;
|
int nCurrentHeight;
|
||||||
|
@ -430,7 +426,7 @@ private:
|
||||||
bool updateName(const std::string& name, CClaimTrieNode* updatedNode);
|
bool updateName(const std::string& name, CClaimTrieNode* updatedNode);
|
||||||
bool updateHash(const std::string& name, uint256& hash);
|
bool updateHash(const std::string& name, uint256& hash);
|
||||||
bool updateTakeoverHeight(const std::string& name, int nTakeoverHeight);
|
bool updateTakeoverHeight(const std::string& name, int nTakeoverHeight);
|
||||||
bool recursiveNullify(CClaimTrieNode* node, std::string& name);
|
bool recursiveNullify(CClaimTrieNode* node, const std::string& name);
|
||||||
|
|
||||||
bool recursiveCheckConsistency(const CClaimTrieNode* node) const;
|
bool recursiveCheckConsistency(const CClaimTrieNode* node) const;
|
||||||
|
|
||||||
|
@ -441,6 +437,14 @@ private:
|
||||||
CAmount getTotalValueOfClaimsRecursive(const CClaimTrieNode* current,
|
CAmount getTotalValueOfClaimsRecursive(const CClaimTrieNode* current,
|
||||||
bool fControllingOnly) const;
|
bool fControllingOnly) const;
|
||||||
|
|
||||||
|
bool getQueueRow(int nHeight, claimQueueRowType& row) const;
|
||||||
|
bool getQueueNameRow(const std::string& name, queueNameRowType& row) const;
|
||||||
|
bool getExpirationQueueRow(int nHeight, expirationQueueRowType& row) const;
|
||||||
|
bool getSupportNode(std::string name, supportMapEntryType& node) const;
|
||||||
|
bool getSupportQueueRow(int nHeight, supportQueueRowType& row) const;
|
||||||
|
bool getSupportQueueNameRow(const std::string& name, queueNameRowType& row) const;
|
||||||
|
bool getSupportExpirationQueueRow(int nHeight, expirationQueueRowType& row) const;
|
||||||
|
|
||||||
void markNodeDirty(const std::string& name, CClaimTrieNode* node);
|
void markNodeDirty(const std::string& name, CClaimTrieNode* node);
|
||||||
void updateQueueRow(int nHeight, claimQueueRowType& row);
|
void updateQueueRow(int nHeight, claimQueueRowType& row);
|
||||||
void updateQueueNameRow(const std::string& name,
|
void updateQueueNameRow(const std::string& name,
|
||||||
|
@ -454,8 +458,6 @@ private:
|
||||||
|
|
||||||
void BatchWriteNode(CDBBatch& batch, const std::string& name,
|
void BatchWriteNode(CDBBatch& batch, const std::string& name,
|
||||||
const CClaimTrieNode* pNode) const;
|
const CClaimTrieNode* pNode) const;
|
||||||
void BatchEraseNode(CDBBatch& batch, const std::string& nome) const;
|
|
||||||
void BatchWriteClaimIndex(CDBBatch& batch) const;
|
|
||||||
void BatchWriteQueueRows(CDBBatch& batch);
|
void BatchWriteQueueRows(CDBBatch& batch);
|
||||||
void BatchWriteQueueNameRows(CDBBatch& batch);
|
void BatchWriteQueueNameRows(CDBBatch& batch);
|
||||||
void BatchWriteExpirationQueueRows(CDBBatch& batch);
|
void BatchWriteExpirationQueueRows(CDBBatch& batch);
|
||||||
|
@ -561,10 +563,10 @@ struct CNodeCallback {
|
||||||
virtual void visit(const std::string& name, const CClaimTrieNode* node) = 0;
|
virtual void visit(const std::string& name, const CClaimTrieNode* node) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CClaimTrieCache
|
class CClaimTrieCacheBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CClaimTrieCache(CClaimTrie* base, bool fRequireTakeoverHeights = true)
|
CClaimTrieCacheBase(CClaimTrie* base, bool fRequireTakeoverHeights = true)
|
||||||
: base(base),
|
: base(base),
|
||||||
fRequireTakeoverHeights(fRequireTakeoverHeights)
|
fRequireTakeoverHeights(fRequireTakeoverHeights)
|
||||||
{
|
{
|
||||||
|
@ -572,7 +574,7 @@ public:
|
||||||
nCurrentHeight = base->nCurrentHeight;
|
nCurrentHeight = base->nCurrentHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint256 getMerkleHash() const;
|
uint256 getMerkleHash(bool forceCompute = false) const;
|
||||||
|
|
||||||
bool empty() const;
|
bool empty() const;
|
||||||
bool flush();
|
bool flush();
|
||||||
|
@ -580,14 +582,14 @@ public:
|
||||||
|
|
||||||
CClaimTrieNode* getRoot() const
|
CClaimTrieNode* getRoot() const
|
||||||
{
|
{
|
||||||
const auto iter = cache.find("");
|
nodeCacheType::iterator iter = cache.find("");
|
||||||
return iter == cache.end() ? &(base->root) : iter->second;
|
return iter == cache.end() ? &(base->root) : iter->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool addClaim(const std::string& name, const COutPoint& outPoint,
|
bool addClaim(const std::string& name, const COutPoint& outPoint,
|
||||||
uint160 claimId, CAmount nAmount, int nHeight) const;
|
uint160 claimId, CAmount nAmount, int nHeight) const;
|
||||||
bool undoAddClaim(const std::string& name, const COutPoint& outPoint) const;
|
bool undoAddClaim(const std::string& name, const COutPoint& outPoint, int nHeight) const;
|
||||||
bool spendClaim(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight) const;
|
bool spendClaim(const std::string& name, const COutPoint& outPoint, int nHeight, int& nValidAtHeight) const;
|
||||||
bool undoSpendClaim(const std::string& name, const COutPoint& outPoint,
|
bool undoSpendClaim(const std::string& name, const COutPoint& outPoint,
|
||||||
uint160 claimId, CAmount nAmount, int nHeight,
|
uint160 claimId, CAmount nAmount, int nHeight,
|
||||||
int nValidAtHeight) const;
|
int nValidAtHeight) const;
|
||||||
|
@ -595,8 +597,10 @@ public:
|
||||||
bool addSupport(const std::string& name, const COutPoint& outPoint,
|
bool addSupport(const std::string& name, const COutPoint& outPoint,
|
||||||
CAmount nAmount, uint160 supportedClaimId,
|
CAmount nAmount, uint160 supportedClaimId,
|
||||||
int nHeight) const;
|
int nHeight) const;
|
||||||
bool undoAddSupport(const std::string& name, const COutPoint& outPoint) const;
|
bool undoAddSupport(const std::string& name, const COutPoint& outPoint,
|
||||||
bool spendSupport(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight) const;
|
int nHeight) const;
|
||||||
|
bool spendSupport(const std::string& name, const COutPoint& outPoint,
|
||||||
|
int nHeight, int& nValidAtHeight) const;
|
||||||
bool undoSpendSupport(const std::string& name, const COutPoint& outPoint,
|
bool undoSpendSupport(const std::string& name, const COutPoint& outPoint,
|
||||||
uint160 supportedClaimId, CAmount nAmount,
|
uint160 supportedClaimId, CAmount nAmount,
|
||||||
int nHeight, int nValidAtHeight) const;
|
int nHeight, int nValidAtHeight) const;
|
||||||
|
@ -604,48 +608,83 @@ public:
|
||||||
uint256 getBestBlock();
|
uint256 getBestBlock();
|
||||||
void setBestBlock(const uint256& hashBlock);
|
void setBestBlock(const uint256& hashBlock);
|
||||||
|
|
||||||
bool incrementBlock(insertUndoType& insertUndo,
|
virtual bool incrementBlock(insertUndoType& insertUndo,
|
||||||
claimQueueRowType& expireUndo,
|
claimQueueRowType& expireUndo,
|
||||||
insertUndoType& insertSupportUndo,
|
insertUndoType& insertSupportUndo,
|
||||||
supportQueueRowType& expireSupportUndo,
|
supportQueueRowType& expireSupportUndo,
|
||||||
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const;
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo);
|
||||||
bool decrementBlock(insertUndoType& insertUndo,
|
virtual bool decrementBlock(insertUndoType& insertUndo,
|
||||||
claimQueueRowType& expireUndo,
|
claimQueueRowType& expireUndo,
|
||||||
insertUndoType& insertSupportUndo,
|
insertUndoType& insertSupportUndo,
|
||||||
supportQueueRowType& expireSupportUndo,
|
supportQueueRowType& expireSupportUndo,
|
||||||
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const;
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo);
|
||||||
|
|
||||||
~CClaimTrieCache() { clear(); }
|
virtual ~CClaimTrieCacheBase() { clear(); }
|
||||||
|
|
||||||
bool insertClaimIntoTrie(const std::string& name, CClaimValue claim,
|
virtual bool getProofForName(const std::string& name, CClaimTrieProof& proof) const;
|
||||||
bool fCheckTakeover = false) const;
|
virtual bool getInfoForName(const std::string& name, CClaimValue& claim) const;
|
||||||
bool removeClaimFromTrie(const std::string& name, const COutPoint& outPoint,
|
|
||||||
CClaimValue& claim,
|
|
||||||
bool fCheckTakeover = false) const;
|
|
||||||
|
|
||||||
bool getProofForName(const std::string& name, CClaimTrieProof& proof) const;
|
|
||||||
bool getInfoForName(const std::string& name, CClaimValue& claim) const;
|
|
||||||
|
|
||||||
bool finalizeDecrement() const;
|
bool finalizeDecrement() const;
|
||||||
|
|
||||||
void removeAndAddSupportToExpirationQueue(expirationQueueRowType &row, int height, bool increment) const;
|
|
||||||
void removeAndAddToExpirationQueue(expirationQueueRowType &row, int height, bool increment) const;
|
|
||||||
|
|
||||||
bool forkForExpirationChange(bool increment) const;
|
|
||||||
|
|
||||||
bool iterateTrie(CNodeCallback& callback) const;
|
bool iterateTrie(CNodeCallback& callback) const;
|
||||||
|
|
||||||
claimsForNameType getClaimsForName(const std::string& name) const;
|
virtual claimsForNameType getClaimsForName(const std::string& name) const;
|
||||||
|
|
||||||
CAmount getEffectiveAmountForClaim(const std::string& name, const uint160& claimId, std::vector<CSupportValue>* supports = nullptr) const;
|
CAmount getEffectiveAmountForClaim(const std::string& name, const uint160& claimId, std::vector<CSupportValue>* supports = NULL) const;
|
||||||
CAmount getEffectiveAmountForClaim(const claimsForNameType& claims, const uint160& claimId, std::vector<CSupportValue>* supports = nullptr) const;
|
CAmount getEffectiveAmountForClaim(const claimsForNameType& claims, const uint160& claimId, std::vector<CSupportValue>* supports = NULL) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
// Should be private: Do not use unless you know what you're doing.
|
||||||
|
CClaimTrieNode* addNodeToCache(const std::string& position, CClaimTrieNode* original) const;
|
||||||
|
bool recursiveComputeMerkleHash(CClaimTrieNode* tnCurrent,
|
||||||
|
const std::string& sPos,
|
||||||
|
bool forceCompute = false) const;
|
||||||
|
bool recursivePruneName(CClaimTrieNode* tnCurrent, unsigned int nPos, const std::string& sName, bool* pfNullified = NULL) const;
|
||||||
|
void checkNamesForTakeover(insertUndoType& insertUndo, insertUndoType& insertSupportUndo,
|
||||||
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const;
|
||||||
|
|
||||||
|
virtual bool insertClaimIntoTrie(const std::string& name, CClaimValue claim,
|
||||||
|
bool fCheckTakeover = false) const;
|
||||||
|
virtual bool removeClaimFromTrie(const std::string& name, const COutPoint& outPoint,
|
||||||
|
CClaimValue& claim,
|
||||||
|
bool fCheckTakeover = false) const;
|
||||||
|
|
||||||
|
virtual bool insertSupportIntoMap(const std::string& name,
|
||||||
|
CSupportValue support,
|
||||||
|
bool fCheckTakeover) const;
|
||||||
|
virtual bool removeSupportFromMap(const std::string& name, const COutPoint& outPoint,
|
||||||
|
CSupportValue& support,
|
||||||
|
bool fCheckTakeover) const;
|
||||||
|
|
||||||
|
virtual void addClaimToQueues(const std::string& name, CClaimValue& claim) const;
|
||||||
|
virtual bool addSupportToQueues(const std::string& name, CSupportValue& support) const;
|
||||||
|
virtual std::string adjustNameForValidHeight(const std::string& name, int validHeight) const;
|
||||||
|
|
||||||
|
void addToExpirationQueue(int nExpirationHeight, nameOutPointType& entry) const;
|
||||||
|
void removeFromExpirationQueue(const std::string& name, const COutPoint& outPoint,
|
||||||
|
int nHeight) const;
|
||||||
|
|
||||||
|
void addSupportToExpirationQueue(int nExpirationHeight,
|
||||||
|
nameOutPointType& entry) const;
|
||||||
|
void removeSupportFromExpirationQueue(const std::string& name,
|
||||||
|
const COutPoint& outPoint,
|
||||||
|
int nHeight) const;
|
||||||
|
|
||||||
|
bool getSupportsForName(const std::string& name,
|
||||||
|
supportMapEntryType& supports) const;
|
||||||
|
|
||||||
|
virtual int getDelayForName(const std::string& name, const uint160& claimId) const;
|
||||||
|
|
||||||
|
mutable nodeCacheType cache;
|
||||||
|
|
||||||
CClaimTrie* base;
|
CClaimTrie* base;
|
||||||
|
mutable int nCurrentHeight; // Height of the block that is being worked on, which is
|
||||||
|
// one greater than the height of the chain's tip
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
bool fRequireTakeoverHeights;
|
bool fRequireTakeoverHeights;
|
||||||
|
|
||||||
mutable nodeCacheType cache;
|
|
||||||
mutable nodeCacheType block_originals;
|
mutable nodeCacheType block_originals;
|
||||||
mutable std::set<std::string> dirtyHashes;
|
mutable std::set<std::string> dirtyHashes;
|
||||||
mutable hashMapType cacheHashes;
|
mutable hashMapType cacheHashes;
|
||||||
|
@ -658,31 +697,19 @@ protected:
|
||||||
mutable expirationQueueType supportExpirationQueueCache;
|
mutable expirationQueueType supportExpirationQueueCache;
|
||||||
mutable std::set<std::string> namesToCheckForTakeover;
|
mutable std::set<std::string> namesToCheckForTakeover;
|
||||||
mutable std::map<std::string, int> cacheTakeoverHeights;
|
mutable std::map<std::string, int> cacheTakeoverHeights;
|
||||||
mutable int nCurrentHeight; // Height of the block that is being worked on, which is
|
|
||||||
// one greater than the height of the chain's tip
|
|
||||||
mutable claimIndexElementListType claimsToAdd;
|
mutable claimIndexElementListType claimsToAdd;
|
||||||
mutable claimIndexClaimListType claimsToDelete;
|
mutable claimIndexClaimListType claimsToDelete;
|
||||||
|
|
||||||
uint256 hashBlock;
|
uint256 hashBlock;
|
||||||
|
|
||||||
uint256 computeHash() const;
|
|
||||||
|
|
||||||
bool reorderTrieNode(const std::string& name, bool fCheckTakeover) const;
|
bool reorderTrieNode(const std::string& name, bool fCheckTakeover) const;
|
||||||
bool recursiveComputeMerkleHash(CClaimTrieNode* tnCurrent,
|
|
||||||
std::string sPos) const;
|
|
||||||
bool recursivePruneName(CClaimTrieNode* tnCurrent, unsigned int nPos,
|
|
||||||
std::string sName,
|
|
||||||
bool* pfNullified = NULL) const;
|
|
||||||
|
|
||||||
bool clear() const;
|
bool clear() const;
|
||||||
|
|
||||||
bool removeClaim(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight, bool fCheckTakeover) const;
|
// generally the opposite of addClaimToQueues, but they aren't perfectly symmetrical:
|
||||||
bool addClaimToQueues(const std::string& name, CClaimValue& claim) const;
|
bool removeClaim(const std::string& name, const COutPoint& outPoint, int nHeight, int& nValidAtHeight, bool fCheckTakeover) const;
|
||||||
bool removeClaimFromQueue(const std::string& name, const COutPoint& outPoint,
|
bool removeClaimFromQueue(const std::string& name, const COutPoint& outPoint,
|
||||||
CClaimValue& claim) const;
|
CClaimValue& claim) const;
|
||||||
void addToExpirationQueue(int nExpirationHeight, nameOutPointType& entry) const;
|
|
||||||
void removeFromExpirationQueue(const std::string& name, const COutPoint& outPoint,
|
|
||||||
int nHeight) const;
|
|
||||||
|
|
||||||
claimQueueType::iterator getQueueCacheRow(int nHeight,
|
claimQueueType::iterator getQueueCacheRow(int nHeight,
|
||||||
bool createIfNotExists) const;
|
bool createIfNotExists) const;
|
||||||
|
@ -691,40 +718,25 @@ protected:
|
||||||
expirationQueueType::iterator getExpirationQueueCacheRow(int nHeight,
|
expirationQueueType::iterator getExpirationQueueCacheRow(int nHeight,
|
||||||
bool createIfNotExists) const;
|
bool createIfNotExists) const;
|
||||||
|
|
||||||
bool removeSupport(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight, bool fCheckTakeover) const;
|
bool removeSupport(const std::string& name, const COutPoint& outPoint,
|
||||||
bool removeSupportFromMap(const std::string& name, const COutPoint& outPoint,
|
int nHeight, int& nValidAtHeight,
|
||||||
CSupportValue& support,
|
bool fCheckTakeover) const;
|
||||||
bool fCheckTakeover) const;
|
|
||||||
|
|
||||||
bool insertSupportIntoMap(const std::string& name,
|
supportQueueType::iterator getSupportQueueCacheRow(int nHeight,
|
||||||
CSupportValue support,
|
bool createIfNotExists) const;
|
||||||
bool fCheckTakeover) const;
|
queueNameType::iterator getSupportQueueCacheNameRow(const std::string& name,
|
||||||
|
bool createIfNotExists) const;
|
||||||
|
expirationQueueType::iterator getSupportExpirationQueueCacheRow(int nHeight,
|
||||||
|
bool createIfNotExists) const;
|
||||||
|
|
||||||
supportQueueType::iterator getSupportQueueCacheRow(int nHeight, bool createIfNotExists) const;
|
|
||||||
queueNameType::iterator getSupportQueueCacheNameRow(const std::string& name, bool createIfNotExists) const;
|
|
||||||
expirationQueueType::iterator getSupportExpirationQueueCacheRow(int nHeight, bool createIfNotExists) const;
|
|
||||||
|
|
||||||
bool addSupportToQueues(const std::string& name, CSupportValue& support) const;
|
|
||||||
bool removeSupportFromQueue(const std::string& name, const COutPoint& outPoint,
|
bool removeSupportFromQueue(const std::string& name, const COutPoint& outPoint,
|
||||||
CSupportValue& support) const;
|
CSupportValue& support) const;
|
||||||
|
|
||||||
void addSupportToExpirationQueue(int nExpirationHeight,
|
|
||||||
nameOutPointType& entry) const;
|
|
||||||
void removeSupportFromExpirationQueue(const std::string& name,
|
|
||||||
const COutPoint& outPoint,
|
|
||||||
int nHeight) const;
|
|
||||||
|
|
||||||
bool getSupportsForName(const std::string& name,
|
|
||||||
supportMapEntryType& node) const;
|
|
||||||
|
|
||||||
bool getLastTakeoverForName(const std::string& name, int& lastTakeoverHeight) const;
|
bool getLastTakeoverForName(const std::string& name, int& lastTakeoverHeight) const;
|
||||||
|
|
||||||
int getDelayForName(const std::string& name) const;
|
int getDelayForName(const std::string& name) const;
|
||||||
|
|
||||||
uint256 getLeafHashForProof(const std::string& currentPosition, unsigned char nodeChar,
|
uint256 getLeafHashForProof(const std::string& currentPosition, const CClaimTrieNode* currentNode) const;
|
||||||
const CClaimTrieNode* currentNode) const;
|
|
||||||
|
|
||||||
CClaimTrieNode* addNodeToCache(const std::string& position, CClaimTrieNode* original) const;
|
|
||||||
|
|
||||||
bool getOriginalInfoForName(const std::string& name, CClaimValue& claim) const;
|
bool getOriginalInfoForName(const std::string& name, CClaimValue& claim) const;
|
||||||
|
|
||||||
|
@ -735,4 +747,72 @@ protected:
|
||||||
const CClaimTrieNode* getNodeForName(const std::string& name) const;
|
const CClaimTrieNode* getNodeForName(const std::string& name) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CClaimTrieCacheExpirationFork: public CClaimTrieCacheBase {
|
||||||
|
public:
|
||||||
|
CClaimTrieCacheExpirationFork(CClaimTrie* base, bool fRequireTakeoverHeights = true)
|
||||||
|
: CClaimTrieCacheBase(base, fRequireTakeoverHeights) {}
|
||||||
|
|
||||||
|
virtual ~CClaimTrieCacheExpirationFork() {}
|
||||||
|
|
||||||
|
bool forkForExpirationChange(bool increment) const;
|
||||||
|
|
||||||
|
// TODO: move the expiration fork code from main.cpp to overrides of increment/decrement block
|
||||||
|
|
||||||
|
private:
|
||||||
|
void removeAndAddSupportToExpirationQueue(expirationQueueRowType &row, int height, bool increment) const;
|
||||||
|
void removeAndAddToExpirationQueue(expirationQueueRowType &row, int height, bool increment) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CClaimTrieCacheNormalizationFork: public CClaimTrieCacheExpirationFork {
|
||||||
|
public:
|
||||||
|
CClaimTrieCacheNormalizationFork(CClaimTrie* base, bool fRequireTakeoverHeights = true)
|
||||||
|
: CClaimTrieCacheExpirationFork(base, fRequireTakeoverHeights),
|
||||||
|
overrideInsertNormalization(false), overrideRemoveNormalization(false) {}
|
||||||
|
|
||||||
|
virtual ~CClaimTrieCacheNormalizationFork() {}
|
||||||
|
|
||||||
|
bool shouldNormalize() const;
|
||||||
|
|
||||||
|
// lower-case and normalize any input string name
|
||||||
|
// see: https://unicode.org/reports/tr15/#Norm_Forms
|
||||||
|
std::string normalizeClaimName(const std::string& name, bool force = false) const; // public only for validating name field on update op
|
||||||
|
|
||||||
|
virtual bool incrementBlock(insertUndoType& insertUndo,
|
||||||
|
claimQueueRowType& expireUndo,
|
||||||
|
insertUndoType& insertSupportUndo,
|
||||||
|
supportQueueRowType& expireSupportUndo,
|
||||||
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo);
|
||||||
|
virtual bool decrementBlock(insertUndoType& insertUndo,
|
||||||
|
claimQueueRowType& expireUndo,
|
||||||
|
insertUndoType& insertSupportUndo,
|
||||||
|
supportQueueRowType& expireSupportUndo,
|
||||||
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo);
|
||||||
|
|
||||||
|
virtual bool getProofForName(const std::string& name, CClaimTrieProof& proof) const;
|
||||||
|
virtual bool getInfoForName(const std::string& name, CClaimValue& claim) const;
|
||||||
|
virtual claimsForNameType getClaimsForName(const std::string& name) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool insertClaimIntoTrie(const std::string& name, CClaimValue claim, bool fCheckTakeover = false) const;
|
||||||
|
virtual bool removeClaimFromTrie(const std::string& name, const COutPoint& outPoint,
|
||||||
|
CClaimValue& claim, bool fCheckTakeover = false) const;
|
||||||
|
|
||||||
|
virtual bool insertSupportIntoMap(const std::string& name, CSupportValue support, bool fCheckTakeover) const;
|
||||||
|
virtual bool removeSupportFromMap(const std::string& name, const COutPoint& outPoint,
|
||||||
|
CSupportValue& support, bool fCheckTakeover) const;
|
||||||
|
virtual int getDelayForName(const std::string& name, const uint160& claimId) const;
|
||||||
|
|
||||||
|
virtual void addClaimToQueues(const std::string& name, CClaimValue& claim) const;
|
||||||
|
virtual bool addSupportToQueues(const std::string& name, CSupportValue& support) const;
|
||||||
|
virtual std::string adjustNameForValidHeight(const std::string& name, int validHeight) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool overrideInsertNormalization, overrideRemoveNormalization;
|
||||||
|
bool normalizeAllNamesInTrieIfNecessary(insertUndoType& insertUndo, claimQueueRowType& removeUndo,
|
||||||
|
insertUndoType& insertSupportUndo, supportQueueRowType& expireSupportUndo,
|
||||||
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef CClaimTrieCacheNormalizationFork CClaimTrieCache;
|
||||||
|
|
||||||
#endif // BITCOIN_CLAIMTRIE_H
|
#endif // BITCOIN_CLAIMTRIE_H
|
||||||
|
|
300
src/claimtrieforks.cpp
Normal file
300
src/claimtrieforks.cpp
Normal file
|
@ -0,0 +1,300 @@
|
||||||
|
#include "claimtrie.h"
|
||||||
|
|
||||||
|
#include <boost/algorithm/string.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/locale/conversion.hpp>
|
||||||
|
#include <boost/locale/localization_backend.hpp>
|
||||||
|
#include <boost/locale.hpp>
|
||||||
|
#include <boost/scope_exit.hpp>
|
||||||
|
|
||||||
|
void CClaimTrieCacheExpirationFork::removeAndAddToExpirationQueue(expirationQueueRowType &row, int height, bool increment) const
|
||||||
|
{
|
||||||
|
for (expirationQueueRowType::iterator e = row.begin(); e != row.end(); ++e)
|
||||||
|
{
|
||||||
|
// remove and insert with new expiration time
|
||||||
|
removeFromExpirationQueue(e->name, e->outPoint, height);
|
||||||
|
int extend_expiration = Params().GetConsensus().nExtendedClaimExpirationTime - Params().GetConsensus().nOriginalClaimExpirationTime;
|
||||||
|
int new_expiration_height = increment ? height + extend_expiration : height - extend_expiration;
|
||||||
|
nameOutPointType entry(e->name, e->outPoint);
|
||||||
|
addToExpirationQueue(new_expiration_height, entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CClaimTrieCacheExpirationFork::removeAndAddSupportToExpirationQueue(expirationQueueRowType &row, int height, bool increment) const
|
||||||
|
{
|
||||||
|
for (expirationQueueRowType::iterator e = row.begin(); e != row.end(); ++e)
|
||||||
|
{
|
||||||
|
// remove and insert with new expiration time
|
||||||
|
removeSupportFromExpirationQueue(e->name, e->outPoint, height);
|
||||||
|
int extend_expiration = Params().GetConsensus().nExtendedClaimExpirationTime - Params().GetConsensus().nOriginalClaimExpirationTime;
|
||||||
|
int new_expiration_height = increment ? height + extend_expiration : height - extend_expiration;
|
||||||
|
nameOutPointType entry(e->name, e->outPoint);
|
||||||
|
addSupportToExpirationQueue(new_expiration_height, entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheExpirationFork::forkForExpirationChange(bool increment) const
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
If increment is True, we have forked to extend the expiration time, thus items in the expiration queue
|
||||||
|
will have their expiration extended by "new expiration time - original expiration time"
|
||||||
|
|
||||||
|
If increment is False, we are decremented a block to reverse the fork. Thus items in the expiration queue
|
||||||
|
will have their expiration extension removed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// look through dirty expiration queues
|
||||||
|
std::set<int> dirtyHeights;
|
||||||
|
for (expirationQueueType::const_iterator i = base->dirtyExpirationQueueRows.begin(); i != base->dirtyExpirationQueueRows.end(); ++i)
|
||||||
|
{
|
||||||
|
int height = i->first;
|
||||||
|
dirtyHeights.insert(height);
|
||||||
|
expirationQueueRowType row = i->second;
|
||||||
|
removeAndAddToExpirationQueue(row, height, increment);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::set<int> dirtySupportHeights;
|
||||||
|
for (expirationQueueType::const_iterator i = base->dirtySupportExpirationQueueRows.begin(); i != base->dirtySupportExpirationQueueRows.end(); ++i)
|
||||||
|
{
|
||||||
|
int height = i->first;
|
||||||
|
dirtySupportHeights.insert(height);
|
||||||
|
expirationQueueRowType row = i->second;
|
||||||
|
removeAndAddSupportToExpirationQueue(row, height, increment);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//look through db for expiration queues, if we haven't already found it in dirty expiration queue
|
||||||
|
boost::scoped_ptr<CDBIterator> pcursor(const_cast<CDBWrapper*>(&base->db)->NewIterator());
|
||||||
|
pcursor->SeekToFirst();
|
||||||
|
while (pcursor->Valid())
|
||||||
|
{
|
||||||
|
std::pair<char, int> key;
|
||||||
|
if (pcursor->GetKey(key))
|
||||||
|
{
|
||||||
|
int height = key.second;
|
||||||
|
// if we've looked through this in dirtyExprirationQueueRows, don't use it
|
||||||
|
// because its stale
|
||||||
|
if ((key.first == EXP_QUEUE_ROW) & (dirtyHeights.count(height) == 0))
|
||||||
|
{
|
||||||
|
expirationQueueRowType row;
|
||||||
|
if (pcursor->GetValue(row))
|
||||||
|
{
|
||||||
|
removeAndAddToExpirationQueue(row, height, increment);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return error("%s(): error reading expiration queue rows from disk", __func__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((key.first == SUPPORT_EXP_QUEUE_ROW) & (dirtySupportHeights.count(height) == 0))
|
||||||
|
{
|
||||||
|
expirationQueueRowType row;
|
||||||
|
if (pcursor->GetValue(row))
|
||||||
|
{
|
||||||
|
removeAndAddSupportToExpirationQueue(row, height, increment);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return error("%s(): error reading support expiration queue rows from disk", __func__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
pcursor->Next();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::shouldNormalize() const {
|
||||||
|
return nCurrentHeight > Params().GetConsensus().nNormalizedNameForkHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CClaimTrieCacheNormalizationFork::normalizeClaimName(const std::string& name, bool force) const {
|
||||||
|
if (!force && !shouldNormalize())
|
||||||
|
return name;
|
||||||
|
|
||||||
|
static std::locale utf8;
|
||||||
|
static bool initialized = false;
|
||||||
|
if (!initialized) {
|
||||||
|
static boost::locale::localization_backend_manager manager =
|
||||||
|
boost::locale::localization_backend_manager::global();
|
||||||
|
manager.select("icu");
|
||||||
|
|
||||||
|
static boost::locale::generator curLocale(manager);
|
||||||
|
utf8 = curLocale("en_US.UTF8");
|
||||||
|
initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string normalized;
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Check if it is a valid utf-8 string. If not, it will throw a
|
||||||
|
// boost::locale::conv::conversion_error exception which we catch later
|
||||||
|
normalized = boost::locale::conv::to_utf<char>(name, "UTF-8", boost::locale::conv::stop);
|
||||||
|
if (normalized.empty())
|
||||||
|
return name;
|
||||||
|
|
||||||
|
// these methods supposedly only use the "UTF8" portion of the locale object:
|
||||||
|
normalized = boost::locale::normalize(normalized, boost::locale::norm_nfd, utf8);
|
||||||
|
normalized = boost::locale::fold_case(normalized, utf8);
|
||||||
|
}
|
||||||
|
catch (const boost::locale::conv::conversion_error& e){
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
catch (const std::bad_cast& e) {
|
||||||
|
LogPrintf("%s() is invalid or dependencies are missing: %s\n", __func__, e.what());
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
catch (const std::exception& e) { // TODO: change to use ... with current_exception() in c++11
|
||||||
|
LogPrintf("%s() had an unexpected exception: %s\n", __func__, e.what());
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return normalized;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::insertClaimIntoTrie(const std::string& name, CClaimValue claim,
|
||||||
|
bool fCheckTakeover) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::insertClaimIntoTrie(normalizeClaimName(name, overrideInsertNormalization), claim, fCheckTakeover);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::removeClaimFromTrie(const std::string& name, const COutPoint& outPoint,
|
||||||
|
CClaimValue& claim, bool fCheckTakeover) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::removeClaimFromTrie(normalizeClaimName(name, overrideRemoveNormalization), outPoint, claim, fCheckTakeover);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::insertSupportIntoMap(const std::string& name, CSupportValue support,
|
||||||
|
bool fCheckTakeover) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::insertSupportIntoMap(normalizeClaimName(name, overrideInsertNormalization), support, fCheckTakeover);
|
||||||
|
}
|
||||||
|
bool CClaimTrieCacheNormalizationFork::removeSupportFromMap(const std::string& name, const COutPoint& outPoint,
|
||||||
|
CSupportValue& support, bool fCheckTakeover) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::removeSupportFromMap(normalizeClaimName(name, overrideRemoveNormalization), outPoint, support, fCheckTakeover);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct claimsForNormalization: public claimsForNameType {
|
||||||
|
std::string normalized;
|
||||||
|
claimsForNormalization(const std::vector<CClaimValue>& claims, const std::vector<CSupportValue>& supports,
|
||||||
|
int nLastTakeoverHeight, const std::string& name, const std::string& normalized)
|
||||||
|
: claimsForNameType(claims, supports, nLastTakeoverHeight, name), normalized(normalized) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::normalizeAllNamesInTrieIfNecessary(insertUndoType& insertUndo, claimQueueRowType& removeUndo,
|
||||||
|
insertUndoType& insertSupportUndo, supportQueueRowType& expireSupportUndo,
|
||||||
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const {
|
||||||
|
|
||||||
|
struct CNameChangeDetector: public CNodeCallback {
|
||||||
|
std::vector<claimsForNormalization> hits;
|
||||||
|
const CClaimTrieCacheNormalizationFork* owner;
|
||||||
|
CNameChangeDetector(const CClaimTrieCacheNormalizationFork* owner): owner(owner) {}
|
||||||
|
void visit(const std::string& name, const CClaimTrieNode* node) {
|
||||||
|
if (node->claims.empty()) return;
|
||||||
|
const std::string normalized = owner->normalizeClaimName(name, true);
|
||||||
|
if (normalized == name) return;
|
||||||
|
|
||||||
|
supportMapEntryType supports;
|
||||||
|
owner->getSupportsForName(name, supports);
|
||||||
|
const claimsForNormalization cfn(node->claims, supports, node->nHeightOfLastTakeover, name, normalized);
|
||||||
|
hits.push_back(cfn);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (nCurrentHeight == Params().GetConsensus().nNormalizedNameForkHeight) {
|
||||||
|
|
||||||
|
// run the one-time upgrade of all names that need to change
|
||||||
|
// it modifies the (cache) trie as it goes, so we need to grab everything to be modified first
|
||||||
|
|
||||||
|
CNameChangeDetector detector(this);
|
||||||
|
iterateTrie(detector);
|
||||||
|
|
||||||
|
for (std::vector<claimsForNormalization>::iterator it = detector.hits.begin(); it != detector.hits.end(); ++it) {
|
||||||
|
BOOST_FOREACH(CSupportValue support, it->supports) {
|
||||||
|
// if it's already going to expire just skip it
|
||||||
|
if (support.nHeight + base->nExpirationTime <= nCurrentHeight)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bool success = removeSupportFromMap(it->name, support.outPoint, support, false);
|
||||||
|
assert(success);
|
||||||
|
expireSupportUndo.push_back(std::make_pair(it->name, support));
|
||||||
|
success = insertSupportIntoMap(it->normalized, support, false);
|
||||||
|
assert(success);
|
||||||
|
insertSupportUndo.push_back(nameOutPointHeightType(it->name, support.outPoint, -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_FOREACH(CClaimValue claim, it->claims) {
|
||||||
|
if (claim.nHeight + base->nExpirationTime <= nCurrentHeight)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bool success = removeClaimFromTrie(it->name, claim.outPoint, claim, false);
|
||||||
|
assert(success);
|
||||||
|
removeUndo.push_back(std::make_pair(it->name, claim));
|
||||||
|
|
||||||
|
success = insertClaimIntoTrie(it->normalized, claim, true);
|
||||||
|
assert(success);
|
||||||
|
insertUndo.push_back(nameOutPointHeightType(it->name, claim.outPoint, -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
takeoverHeightUndo.push_back(std::make_pair(it->name, it->nLastTakeoverHeight));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::incrementBlock(insertUndoType& insertUndo,
|
||||||
|
claimQueueRowType& expireUndo,
|
||||||
|
insertUndoType& insertSupportUndo,
|
||||||
|
supportQueueRowType& expireSupportUndo,
|
||||||
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) {
|
||||||
|
overrideInsertNormalization = normalizeAllNamesInTrieIfNecessary(insertUndo, expireUndo, insertSupportUndo,
|
||||||
|
expireSupportUndo, takeoverHeightUndo);
|
||||||
|
BOOST_SCOPE_EXIT(&overrideInsertNormalization) { overrideInsertNormalization = false; } BOOST_SCOPE_EXIT_END
|
||||||
|
return CClaimTrieCacheExpirationFork::incrementBlock(insertUndo, expireUndo, insertSupportUndo,
|
||||||
|
expireSupportUndo, takeoverHeightUndo);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::decrementBlock(insertUndoType& insertUndo,
|
||||||
|
claimQueueRowType& expireUndo,
|
||||||
|
insertUndoType& insertSupportUndo,
|
||||||
|
supportQueueRowType& expireSupportUndo,
|
||||||
|
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) {
|
||||||
|
|
||||||
|
overrideRemoveNormalization = shouldNormalize();
|
||||||
|
BOOST_SCOPE_EXIT(&overrideRemoveNormalization) { overrideRemoveNormalization = false; } BOOST_SCOPE_EXIT_END
|
||||||
|
return CClaimTrieCacheExpirationFork::decrementBlock(insertUndo, expireUndo, insertSupportUndo,
|
||||||
|
expireSupportUndo, takeoverHeightUndo);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::getProofForName(const std::string& name, CClaimTrieProof& proof) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::getProofForName(normalizeClaimName(name), proof);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::getInfoForName(const std::string& name, CClaimValue& claim) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::getInfoForName(normalizeClaimName(name), claim);
|
||||||
|
}
|
||||||
|
|
||||||
|
claimsForNameType CClaimTrieCacheNormalizationFork::getClaimsForName(const std::string& name) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::getClaimsForName(normalizeClaimName(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
int CClaimTrieCacheNormalizationFork::getDelayForName(const std::string& name, const uint160& claimId) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::getDelayForName(normalizeClaimName(name), claimId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CClaimTrieCacheNormalizationFork::addClaimToQueues(const std::string& name, CClaimValue& claim) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::addClaimToQueues(normalizeClaimName(name,
|
||||||
|
claim.nValidAtHeight > Params().GetConsensus().nNormalizedNameForkHeight), claim);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClaimTrieCacheNormalizationFork::addSupportToQueues(const std::string& name, CSupportValue& support) const {
|
||||||
|
return CClaimTrieCacheExpirationFork::addSupportToQueues(normalizeClaimName(name,
|
||||||
|
support.nValidAtHeight > Params().GetConsensus().nNormalizedNameForkHeight), support);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CClaimTrieCacheNormalizationFork::adjustNameForValidHeight(const std::string& name, int validHeight) const {
|
||||||
|
return normalizeClaimName(name, validHeight > Params().GetConsensus().nNormalizedNameForkHeight);
|
||||||
|
}
|
|
@ -12,7 +12,7 @@
|
||||||
* for both bitcoind and bitcoin-qt, to make it harder for attackers to
|
* for both bitcoind and bitcoin-qt, to make it harder for attackers to
|
||||||
* target servers or GUI users specifically.
|
* target servers or GUI users specifically.
|
||||||
*/
|
*/
|
||||||
const std::string CLIENT_NAME("Satoshi");
|
const std::string CLIENT_NAME("LBRY");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client version number
|
* Client version number
|
||||||
|
|
|
@ -74,6 +74,8 @@ struct Params {
|
||||||
uint256 powLimit;
|
uint256 powLimit;
|
||||||
bool fPowAllowMinDifficultyBlocks;
|
bool fPowAllowMinDifficultyBlocks;
|
||||||
bool fPowNoRetargeting;
|
bool fPowNoRetargeting;
|
||||||
|
int nAllowMinDiffMinHeight;
|
||||||
|
int nAllowMinDiffMaxHeight;
|
||||||
int nNormalizedNameForkHeight;
|
int nNormalizedNameForkHeight;
|
||||||
int64_t nPowTargetSpacing;
|
int64_t nPowTargetSpacing;
|
||||||
int64_t nPowTargetTimespan;
|
int64_t nPowTargetTimespan;
|
||||||
|
|
|
@ -18,7 +18,7 @@ static const unsigned char REJECT_INVALID = 0x10;
|
||||||
static const unsigned char REJECT_OBSOLETE = 0x11;
|
static const unsigned char REJECT_OBSOLETE = 0x11;
|
||||||
static const unsigned char REJECT_DUPLICATE = 0x12;
|
static const unsigned char REJECT_DUPLICATE = 0x12;
|
||||||
static const unsigned char REJECT_NONSTANDARD = 0x40;
|
static const unsigned char REJECT_NONSTANDARD = 0x40;
|
||||||
// static const unsigned char REJECT_DUST = 0x41; // part of BIP 61
|
static const unsigned char REJECT_DUST = 0x41; // part of BIP 61
|
||||||
static const unsigned char REJECT_INSUFFICIENTFEE = 0x42;
|
static const unsigned char REJECT_INSUFFICIENTFEE = 0x42;
|
||||||
static const unsigned char REJECT_CHECKPOINT = 0x43;
|
static const unsigned char REJECT_CHECKPOINT = 0x43;
|
||||||
|
|
||||||
|
|
|
@ -225,7 +225,7 @@ public:
|
||||||
~CDBWrapper();
|
~CDBWrapper();
|
||||||
|
|
||||||
CDBWrapper(const CDBWrapper&) = delete;
|
CDBWrapper(const CDBWrapper&) = delete;
|
||||||
/* CDBWrapper& operator=(const CDBWrapper&) = delete; */
|
CDBWrapper& operator=(const CDBWrapper&) = delete;
|
||||||
|
|
||||||
template <typename K, typename V>
|
template <typename K, typename V>
|
||||||
bool Read(const K& key, V& value) const
|
bool Read(const K& key, V& value) const
|
||||||
|
|
12
src/init.cpp
12
src/init.cpp
|
@ -197,7 +197,7 @@ void Shutdown()
|
||||||
/// for example if the data directory was found to be locked.
|
/// for example if the data directory was found to be locked.
|
||||||
/// Be sure that anything that writes files or flushes caches only does this if the respective
|
/// Be sure that anything that writes files or flushes caches only does this if the respective
|
||||||
/// module was initialized.
|
/// module was initialized.
|
||||||
RenameThread("bitcoin-shutoff");
|
RenameThread("lbrycrd-shutoff");
|
||||||
mempool.AddTransactionsUpdated(1);
|
mempool.AddTransactionsUpdated(1);
|
||||||
|
|
||||||
StopHTTPRPC();
|
StopHTTPRPC();
|
||||||
|
@ -531,8 +531,8 @@ void SetupServerArgs()
|
||||||
|
|
||||||
std::string LicenseInfo()
|
std::string LicenseInfo()
|
||||||
{
|
{
|
||||||
const std::string URL_SOURCE_CODE = "<https://github.com/bitcoin/bitcoin>";
|
const std::string URL_SOURCE_CODE = "<https://github.com/lbryio/lbrycrd>";
|
||||||
const std::string URL_WEBSITE = "<https://bitcoincore.org>";
|
const std::string URL_WEBSITE = "<https://lbry.io>";
|
||||||
|
|
||||||
return CopyrightHolders(strprintf(_("Copyright (C) %i-%i"), 2009, COPYRIGHT_YEAR) + " ") + "\n" +
|
return CopyrightHolders(strprintf(_("Copyright (C) %i-%i"), 2009, COPYRIGHT_YEAR) + " ") + "\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
|
@ -637,7 +637,7 @@ static void CleanupBlockRevFiles()
|
||||||
static void ThreadImport(std::vector<fs::path> vImportFiles)
|
static void ThreadImport(std::vector<fs::path> vImportFiles)
|
||||||
{
|
{
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
RenameThread("bitcoin-loadblk");
|
RenameThread("lbrycrd-loadblk");
|
||||||
ScheduleBatchPriority();
|
ScheduleBatchPriority();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -1254,9 +1254,9 @@ bool AppInitMain()
|
||||||
// Warn about relative -datadir path.
|
// Warn about relative -datadir path.
|
||||||
if (gArgs.IsArgSet("-datadir") && !fs::path(gArgs.GetArg("-datadir", "")).is_absolute()) {
|
if (gArgs.IsArgSet("-datadir") && !fs::path(gArgs.GetArg("-datadir", "")).is_absolute()) {
|
||||||
LogPrintf("Warning: relative datadir option '%s' specified, which will be interpreted relative to the " /* Continued */
|
LogPrintf("Warning: relative datadir option '%s' specified, which will be interpreted relative to the " /* Continued */
|
||||||
"current working directory '%s'. This is fragile, because if bitcoin is started in the future "
|
"current working directory '%s'. This is fragile, because if lbrycrd is started in the future "
|
||||||
"from a different location, it will be unable to locate the current data files. There could "
|
"from a different location, it will be unable to locate the current data files. There could "
|
||||||
"also be data loss if bitcoin is started while in a temporary directory.\n",
|
"also be data loss if lbrycrd is started while in a temporary directory.\n",
|
||||||
gArgs.GetArg("-datadir", ""), fs::current_path().string());
|
gArgs.GetArg("-datadir", ""), fs::current_path().string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -437,6 +437,7 @@ void BlockAssembler::addPackageTxs(int &nPackagesSelected, int &nDescendantsUpda
|
||||||
{
|
{
|
||||||
CCoinsViewCache view(pcoinsTip.get());
|
CCoinsViewCache view(pcoinsTip.get());
|
||||||
const Coin& coin = view.AccessCoin(txin.prevout);
|
const Coin& coin = view.AccessCoin(txin.prevout);
|
||||||
|
int nTxinHeight = coin.nHeight;
|
||||||
CScript scriptPubKey;
|
CScript scriptPubKey;
|
||||||
if (coin.out.IsNull()) {
|
if (coin.out.IsNull()) {
|
||||||
auto it = std::find_if(txs.begin(), txs.end(), [&txin](const CTransactionRef& tx) {
|
auto it = std::find_if(txs.begin(), txs.end(), [&txin](const CTransactionRef& tx) {
|
||||||
|
@ -469,7 +470,7 @@ void BlockAssembler::addPackageTxs(int &nPackagesSelected, int &nDescendantsUpda
|
||||||
}
|
}
|
||||||
std::string name(vvchParams[0].begin(), vvchParams[0].end());
|
std::string name(vvchParams[0].begin(), vvchParams[0].end());
|
||||||
int throwaway;
|
int throwaway;
|
||||||
if (trieCache.spendClaim(name, COutPoint(txin.prevout.hash, txin.prevout.n), throwaway))
|
if (trieCache.spendClaim(name, COutPoint(txin.prevout.hash, txin.prevout.n), nTxinHeight, throwaway))
|
||||||
{
|
{
|
||||||
std::pair<std::string, uint160> entry(name, claimId);
|
std::pair<std::string, uint160> entry(name, claimId);
|
||||||
spentClaims.push_back(entry);
|
spentClaims.push_back(entry);
|
||||||
|
@ -484,7 +485,7 @@ void BlockAssembler::addPackageTxs(int &nPackagesSelected, int &nDescendantsUpda
|
||||||
assert(vvchParams.size() == 2);
|
assert(vvchParams.size() == 2);
|
||||||
std::string name(vvchParams[0].begin(), vvchParams[0].end());
|
std::string name(vvchParams[0].begin(), vvchParams[0].end());
|
||||||
int throwaway;
|
int throwaway;
|
||||||
if (!trieCache.spendSupport(name, COutPoint(txin.prevout.hash, txin.prevout.n), throwaway))
|
if (!trieCache.spendSupport(name, COutPoint(txin.prevout.hash, txin.prevout.n), nTxinHeight, throwaway))
|
||||||
{
|
{
|
||||||
LogPrintf("%s(): The support was not found in the trie or queue\n", __func__);
|
LogPrintf("%s(): The support was not found in the trie or queue\n", __func__);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1549,7 +1549,6 @@ bool static ProcessHeadersMessage(CNode *pfrom, CConnman *connman, const std::ve
|
||||||
// nMinimumChainWork, even if a peer has a chain past our tip,
|
// nMinimumChainWork, even if a peer has a chain past our tip,
|
||||||
// as an anti-DoS measure.
|
// as an anti-DoS measure.
|
||||||
if (IsOutboundDisconnectionCandidate(pfrom)) {
|
if (IsOutboundDisconnectionCandidate(pfrom)) {
|
||||||
LogPrintf("Disconnecting outbound peer %d (%s < %s) -- headers chain has insufficient work\n", pfrom->GetId(), nodestate->pindexBestKnownBlock->nChainWork.GetHex(), nMinimumChainWork.GetHex());
|
|
||||||
LogPrintf("Disconnecting outbound peer %d -- headers chain has insufficient work\n", pfrom->GetId());
|
LogPrintf("Disconnecting outbound peer %d -- headers chain has insufficient work\n", pfrom->GetId());
|
||||||
pfrom->fDisconnect = true;
|
pfrom->fDisconnect = true;
|
||||||
}
|
}
|
||||||
|
@ -1648,8 +1647,6 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
||||||
vRecv >> nVersion >> nServiceInt >> nTime >> addrMe;
|
vRecv >> nVersion >> nServiceInt >> nTime >> addrMe;
|
||||||
nSendVersion = std::min(nVersion, PROTOCOL_VERSION);
|
nSendVersion = std::min(nVersion, PROTOCOL_VERSION);
|
||||||
nServices = ServiceFlags(nServiceInt);
|
nServices = ServiceFlags(nServiceInt);
|
||||||
LogPrint(BCLog::NET, "peer=%d services (%08x offered, %08x expected);\n", pfrom->GetId(), nServices, GetDesirableServiceFlags(nServices));
|
|
||||||
|
|
||||||
if (!pfrom->fInbound)
|
if (!pfrom->fInbound)
|
||||||
{
|
{
|
||||||
connman->SetServices(pfrom->addr, nServices);
|
connman->SetServices(pfrom->addr, nServices);
|
||||||
|
@ -2017,7 +2014,6 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
||||||
|
|
||||||
else if (strCommand == NetMsgType::GETBLOCKS)
|
else if (strCommand == NetMsgType::GETBLOCKS)
|
||||||
{
|
{
|
||||||
LogPrintf("%s: Got GETBLOCKS message\n", __func__);
|
|
||||||
CBlockLocator locator;
|
CBlockLocator locator;
|
||||||
uint256 hashStop;
|
uint256 hashStop;
|
||||||
vRecv >> locator >> hashStop;
|
vRecv >> locator >> hashStop;
|
||||||
|
@ -3520,24 +3516,17 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
|
||||||
std::vector<CInv> vInv;
|
std::vector<CInv> vInv;
|
||||||
{
|
{
|
||||||
LOCK(pto->cs_inventory);
|
LOCK(pto->cs_inventory);
|
||||||
/* vInv.reserve(std::max<size_t>(pto->vInventoryBlockToSend.size(), INVENTORY_BROADCAST_MAX)); */
|
vInv.reserve(std::max<size_t>(pto->vInventoryBlockToSend.size(), INVENTORY_BROADCAST_MAX));
|
||||||
// FIXME: Bitcoin bug?!
|
|
||||||
vInv.reserve(std::min<size_t>(pto->vInventoryBlockToSend.size(), INVENTORY_BROADCAST_MAX));
|
|
||||||
|
|
||||||
// Add blocks
|
// Add blocks
|
||||||
size_t count = 0;
|
|
||||||
for (const uint256& hash : pto->vInventoryBlockToSend) {
|
for (const uint256& hash : pto->vInventoryBlockToSend) {
|
||||||
vInv.push_back(CInv(MSG_BLOCK, hash));
|
vInv.push_back(CInv(MSG_BLOCK, hash));
|
||||||
if (vInv.size() == MAX_INV_SZ) {
|
if (vInv.size() == MAX_INV_SZ) {
|
||||||
connman->PushMessage(pto, msgMaker.Make(NetMsgType::INV, vInv));
|
connman->PushMessage(pto, msgMaker.Make(NetMsgType::INV, vInv));
|
||||||
vInv.clear();
|
vInv.clear();
|
||||||
}
|
}
|
||||||
if (++count >= INVENTORY_BROADCAST_MAX)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
pto->vInventoryBlockToSend.erase(pto->vInventoryBlockToSend.begin(),
|
pto->vInventoryBlockToSend.clear();
|
||||||
pto->vInventoryBlockToSend.begin() + count);
|
|
||||||
//pto->vInventoryBlockToSend.clear();
|
|
||||||
|
|
||||||
// Check whether periodic sends should happen
|
// Check whether periodic sends should happen
|
||||||
bool fSendTrickle = pto->fWhitelisted;
|
bool fSendTrickle = pto->fWhitelisted;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include <tinyformat.h>
|
#include <tinyformat.h>
|
||||||
|
|
||||||
const std::string CURRENCY_UNIT = "BTC";
|
const std::string CURRENCY_UNIT = "LBC";
|
||||||
|
|
||||||
CFeeRate::CFeeRate(const CAmount& nFeePaid, size_t nBytes_)
|
CFeeRate::CFeeRate(const CAmount& nFeePaid, size_t nBytes_)
|
||||||
{
|
{
|
||||||
|
|
30
src/pow.cpp
30
src/pow.cpp
|
@ -31,36 +31,6 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* // Only change once per difficulty adjustment interval */
|
|
||||||
/* if ((pindexLast->nHeight+1) % params.DifficultyAdjustmentInterval() != 0) */
|
|
||||||
/* { */
|
|
||||||
/* if (params.fPowAllowMinDifficultyBlocks) */
|
|
||||||
/* { */
|
|
||||||
/* // Special difficulty rule for testnet: */
|
|
||||||
/* // If the new block's timestamp is more than 2* 10 minutes */
|
|
||||||
/* // then allow mining of a min-difficulty block. */
|
|
||||||
/* if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + params.nPowTargetSpacing*2) */
|
|
||||||
/* return nProofOfWorkLimit; */
|
|
||||||
/* else */
|
|
||||||
/* { */
|
|
||||||
/* // Return the last non-special-min-difficulty-rules-block */
|
|
||||||
/* const CBlockIndex* pindex = pindexLast; */
|
|
||||||
/* while (pindex->pprev && pindex->nHeight % params.DifficultyAdjustmentInterval() != 0 && pindex->nBits == nProofOfWorkLimit) */
|
|
||||||
/* pindex = pindex->pprev; */
|
|
||||||
/* return pindex->nBits; */
|
|
||||||
/* } */
|
|
||||||
/* } */
|
|
||||||
/* return pindexLast->nBits; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
/* // Go back by what we want to be 14 days worth of blocks */
|
|
||||||
/* int nHeightFirst = pindexLast->nHeight - (params.DifficultyAdjustmentInterval()-1); */
|
|
||||||
/* assert(nHeightFirst >= 0); */
|
|
||||||
/* const CBlockIndex* pindexFirst = pindexLast->GetAncestor(nHeightFirst); */
|
|
||||||
/* assert(pindexFirst); */
|
|
||||||
|
|
||||||
/* return CalculateNextWorkRequired(pindexLast, pindexFirst->GetBlockTime(), params); */
|
|
||||||
|
|
||||||
// Go back the full period unless it's the first retarget after genesis.
|
// Go back the full period unless it's the first retarget after genesis.
|
||||||
int blockstogoback = params.DifficultyAdjustmentInterval()-1;
|
int blockstogoback = params.DifficultyAdjustmentInterval()-1;
|
||||||
if ((pindexLast->nHeight+1) != params.DifficultyAdjustmentInterval())
|
if ((pindexLast->nHeight+1) != params.DifficultyAdjustmentInterval())
|
||||||
|
|
|
@ -24,7 +24,7 @@ class AmountSpinBox: public QAbstractSpinBox
|
||||||
public:
|
public:
|
||||||
explicit AmountSpinBox(QWidget *parent):
|
explicit AmountSpinBox(QWidget *parent):
|
||||||
QAbstractSpinBox(parent),
|
QAbstractSpinBox(parent),
|
||||||
currentUnit(BitcoinUnits::BTC),
|
currentUnit(BitcoinUnits::LBC),
|
||||||
singleStep(100000) // satoshis
|
singleStep(100000) // satoshis
|
||||||
{
|
{
|
||||||
setAlignment(Qt::AlignRight);
|
setAlignment(Qt::AlignRight);
|
||||||
|
@ -99,7 +99,7 @@ public:
|
||||||
|
|
||||||
const QFontMetrics fm(fontMetrics());
|
const QFontMetrics fm(fontMetrics());
|
||||||
int h = lineEdit()->minimumSizeHint().height();
|
int h = lineEdit()->minimumSizeHint().height();
|
||||||
int w = fm.width(BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways));
|
int w = fm.width(BitcoinUnits::format(BitcoinUnits::LBC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways));
|
||||||
w += 2; // cursor blinking space
|
w += 2; // cursor blinking space
|
||||||
|
|
||||||
QStyleOptionSpinBox opt;
|
QStyleOptionSpinBox opt;
|
||||||
|
|
|
@ -17,9 +17,9 @@ BitcoinUnits::BitcoinUnits(QObject *parent):
|
||||||
QList<BitcoinUnits::Unit> BitcoinUnits::availableUnits()
|
QList<BitcoinUnits::Unit> BitcoinUnits::availableUnits()
|
||||||
{
|
{
|
||||||
QList<BitcoinUnits::Unit> unitlist;
|
QList<BitcoinUnits::Unit> unitlist;
|
||||||
unitlist.append(BTC);
|
unitlist.append(LBC);
|
||||||
unitlist.append(mBTC);
|
unitlist.append(mLBC);
|
||||||
unitlist.append(uBTC);
|
unitlist.append(uLBC);
|
||||||
unitlist.append(SAT);
|
unitlist.append(SAT);
|
||||||
return unitlist;
|
return unitlist;
|
||||||
}
|
}
|
||||||
|
@ -28,9 +28,9 @@ bool BitcoinUnits::valid(int unit)
|
||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case BTC:
|
case LBC:
|
||||||
case mBTC:
|
case mLBC:
|
||||||
case uBTC:
|
case uLBC:
|
||||||
case SAT:
|
case SAT:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
|
@ -42,9 +42,9 @@ QString BitcoinUnits::longName(int unit)
|
||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case BTC: return QString("BTC");
|
case LBC: return QString("LBC");
|
||||||
case mBTC: return QString("mBTC");
|
case mLBC: return QString("mLBC");
|
||||||
case uBTC: return QString::fromUtf8("µBTC (bits)");
|
case uLBC: return QString::fromUtf8("µLBC (bits)");
|
||||||
case SAT: return QString("Satoshi (sat)");
|
case SAT: return QString("Satoshi (sat)");
|
||||||
default: return QString("???");
|
default: return QString("???");
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ QString BitcoinUnits::shortName(int unit)
|
||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case uBTC: return QString::fromUtf8("bits");
|
case uLBC: return QString::fromUtf8("bits");
|
||||||
case SAT: return QString("sat");
|
case SAT: return QString("sat");
|
||||||
default: return longName(unit);
|
default: return longName(unit);
|
||||||
}
|
}
|
||||||
|
@ -64,9 +64,9 @@ QString BitcoinUnits::description(int unit)
|
||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case BTC: return QString("Bitcoins");
|
case LBC: return QString("Bitcoins");
|
||||||
case mBTC: return QString("Milli-Bitcoins (1 / 1" THIN_SP_UTF8 "000)");
|
case mLBC: return QString("Milli-Bitcoins (1 / 1" THIN_SP_UTF8 "000)");
|
||||||
case uBTC: return QString("Micro-Bitcoins (bits) (1 / 1" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
case uLBC: return QString("Micro-Bitcoins (bits) (1 / 1" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
||||||
case SAT: return QString("Satoshi (sat) (1 / 100" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
case SAT: return QString("Satoshi (sat) (1 / 100" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
||||||
default: return QString("???");
|
default: return QString("???");
|
||||||
}
|
}
|
||||||
|
@ -76,9 +76,9 @@ qint64 BitcoinUnits::factor(int unit)
|
||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case BTC: return 100000000;
|
case LBC: return 100000000;
|
||||||
case mBTC: return 100000;
|
case mLBC: return 100000;
|
||||||
case uBTC: return 100;
|
case uLBC: return 100;
|
||||||
case SAT: return 1;
|
case SAT: return 1;
|
||||||
default: return 100000000;
|
default: return 100000000;
|
||||||
}
|
}
|
||||||
|
@ -88,9 +88,9 @@ int BitcoinUnits::decimals(int unit)
|
||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case BTC: return 8;
|
case LBC: return 8;
|
||||||
case mBTC: return 5;
|
case mLBC: return 5;
|
||||||
case uBTC: return 2;
|
case uLBC: return 2;
|
||||||
case SAT: return 0;
|
case SAT: return 0;
|
||||||
default: return 0;
|
default: return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,9 +56,9 @@ public:
|
||||||
*/
|
*/
|
||||||
enum Unit
|
enum Unit
|
||||||
{
|
{
|
||||||
BTC,
|
LBC,
|
||||||
mBTC,
|
mLBC,
|
||||||
uBTC,
|
uLBC,
|
||||||
SAT
|
SAT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -529,7 +529,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
|
||||||
}
|
}
|
||||||
|
|
||||||
// actually update labels
|
// actually update labels
|
||||||
int nDisplayUnit = BitcoinUnits::BTC;
|
int nDisplayUnit = BitcoinUnits::LBC;
|
||||||
if (model && model->getOptionsModel())
|
if (model && model->getOptionsModel())
|
||||||
nDisplayUnit = model->getOptionsModel()->getDisplayUnit();
|
nDisplayUnit = model->getOptionsModel()->getDisplayUnit();
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent)
|
||||||
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
|
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
|
||||||
{
|
{
|
||||||
// return if URI is not valid or is no bitcoin: URI
|
// return if URI is not valid or is no bitcoin: URI
|
||||||
if(!uri.isValid() || uri.scheme() != QString("bitcoin"))
|
if(!uri.isValid() || uri.scheme() != QString("lbry"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SendCoinsRecipient rv;
|
SendCoinsRecipient rv;
|
||||||
|
@ -165,7 +165,7 @@ bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
|
||||||
{
|
{
|
||||||
if(!i->second.isEmpty())
|
if(!i->second.isEmpty())
|
||||||
{
|
{
|
||||||
if(!BitcoinUnits::parse(BitcoinUnits::BTC, i->second, &rv.amount))
|
if(!BitcoinUnits::parse(BitcoinUnits::LBC, i->second, &rv.amount))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -191,12 +191,12 @@ bool parseBitcoinURI(QString uri, SendCoinsRecipient *out)
|
||||||
|
|
||||||
QString formatBitcoinURI(const SendCoinsRecipient &info)
|
QString formatBitcoinURI(const SendCoinsRecipient &info)
|
||||||
{
|
{
|
||||||
QString ret = QString("bitcoin:%1").arg(info.address);
|
QString ret = QString("lbry:%1").arg(info.address);
|
||||||
int paramCount = 0;
|
int paramCount = 0;
|
||||||
|
|
||||||
if (info.amount)
|
if (info.amount)
|
||||||
{
|
{
|
||||||
ret += QString("?amount=%1").arg(BitcoinUnits::format(BitcoinUnits::BTC, info.amount, false, BitcoinUnits::separatorNever));
|
ret += QString("?amount=%1").arg(BitcoinUnits::format(BitcoinUnits::LBC, info.amount, false, BitcoinUnits::separatorNever));
|
||||||
paramCount++;
|
paramCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,8 @@ static const struct {
|
||||||
const int iconColorSaturationReduction;
|
const int iconColorSaturationReduction;
|
||||||
const char *titleAddText;
|
const char *titleAddText;
|
||||||
} network_styles[] = {
|
} network_styles[] = {
|
||||||
{"main", QAPP_APP_NAME_DEFAULT, 0, 0, ""},
|
{"lbrycrd", QAPP_APP_NAME_DEFAULT, 0, 0, ""},
|
||||||
{"test", QAPP_APP_NAME_TESTNET, 70, 30, QT_TRANSLATE_NOOP("SplashScreen", "[testnet]")},
|
{"lbrycrdtest", QAPP_APP_NAME_TESTNET, 70, 30, QT_TRANSLATE_NOOP("SplashScreen", "[testnet]")},
|
||||||
{"regtest", QAPP_APP_NAME_REGTEST, 160, 30, "[regtest]"}
|
{"regtest", QAPP_APP_NAME_REGTEST, 160, 30, "[regtest]"}
|
||||||
};
|
};
|
||||||
static const unsigned network_styles_count = sizeof(network_styles)/sizeof(*network_styles);
|
static const unsigned network_styles_count = sizeof(network_styles)/sizeof(*network_styles);
|
||||||
|
|
|
@ -15,7 +15,7 @@ OpenURIDialog::OpenURIDialog(QWidget *parent) :
|
||||||
ui(new Ui::OpenURIDialog)
|
ui(new Ui::OpenURIDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->uriEdit->setPlaceholderText("bitcoin:");
|
ui->uriEdit->setPlaceholderText("lbry:");
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenURIDialog::~OpenURIDialog()
|
OpenURIDialog::~OpenURIDialog()
|
||||||
|
@ -46,5 +46,5 @@ void OpenURIDialog::on_selectFileButton_clicked()
|
||||||
if(filename.isEmpty())
|
if(filename.isEmpty())
|
||||||
return;
|
return;
|
||||||
QUrl fileUri = QUrl::fromLocalFile(filename);
|
QUrl fileUri = QUrl::fromLocalFile(filename);
|
||||||
ui->uriEdit->setText("bitcoin:?r=" + QUrl::toPercentEncoding(fileUri.toString()));
|
ui->uriEdit->setText("lbry:?r=" + QUrl::toPercentEncoding(fileUri.toString()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ void OptionsModel::Init(bool resetSettings)
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
if (!settings.contains("nDisplayUnit"))
|
if (!settings.contains("nDisplayUnit"))
|
||||||
settings.setValue("nDisplayUnit", BitcoinUnits::BTC);
|
settings.setValue("nDisplayUnit", BitcoinUnits::LBC);
|
||||||
nDisplayUnit = settings.value("nDisplayUnit").toInt();
|
nDisplayUnit = settings.value("nDisplayUnit").toInt();
|
||||||
|
|
||||||
if (!settings.contains("strThirdPartyTxUrls"))
|
if (!settings.contains("strThirdPartyTxUrls"))
|
||||||
|
|
|
@ -28,7 +28,7 @@ class TxViewDelegate : public QAbstractItemDelegate
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit TxViewDelegate(const PlatformStyle *_platformStyle, QObject *parent=nullptr):
|
explicit TxViewDelegate(const PlatformStyle *_platformStyle, QObject *parent=nullptr):
|
||||||
QAbstractItemDelegate(parent), unit(BitcoinUnits::BTC),
|
QAbstractItemDelegate(parent), unit(BitcoinUnits::LBC),
|
||||||
platformStyle(_platformStyle)
|
platformStyle(_platformStyle)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ void OverviewPage::setWalletModel(WalletModel *model)
|
||||||
connect(model, SIGNAL(notifyWatchonlyChanged(bool)), this, SLOT(updateWatchOnlyLabels(bool)));
|
connect(model, SIGNAL(notifyWatchonlyChanged(bool)), this, SLOT(updateWatchOnlyLabels(bool)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the display unit, to not use the default ("BTC")
|
// update the display unit, to not use the default ("LBC")
|
||||||
updateDisplayUnit();
|
updateDisplayUnit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ message Output {
|
||||||
required bytes script = 2; // usually one of the standard Script forms
|
required bytes script = 2; // usually one of the standard Script forms
|
||||||
}
|
}
|
||||||
message PaymentDetails {
|
message PaymentDetails {
|
||||||
optional string network = 1 [default = "main"]; // "main" or "test"
|
optional string network = 1 [default = "lbrycrd"]; // "lbrycrd" or "lbrycrdtest"
|
||||||
repeated Output outputs = 2; // Where payment should be sent
|
repeated Output outputs = 2; // Where payment should be sent
|
||||||
required uint64 time = 3; // Timestamp; when payment request created
|
required uint64 time = 3; // Timestamp; when payment request created
|
||||||
optional uint64 expires = 4; // Timestamp; when this request should be considered invalid
|
optional uint64 expires = 4; // Timestamp; when this request should be considered invalid
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
#include <QUrlQuery>
|
#include <QUrlQuery>
|
||||||
|
|
||||||
const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds
|
const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds
|
||||||
const QString BITCOIN_IPC_PREFIX("bitcoin:");
|
const QString BITCOIN_IPC_PREFIX("lbry:");
|
||||||
// BIP70 payment protocol messages
|
// BIP70 payment protocol messages
|
||||||
const char* BIP70_MESSAGE_PAYMENTACK = "PaymentACK";
|
const char* BIP70_MESSAGE_PAYMENTACK = "PaymentACK";
|
||||||
const char* BIP70_MESSAGE_PAYMENTREQUEST = "PaymentRequest";
|
const char* BIP70_MESSAGE_PAYMENTREQUEST = "PaymentRequest";
|
||||||
|
@ -228,11 +228,11 @@ void PaymentServer::ipcParseCommandLine(interfaces::Node& node, int argc, char*
|
||||||
PaymentRequestPlus request;
|
PaymentRequestPlus request;
|
||||||
if (readPaymentRequestFromFile(arg, request))
|
if (readPaymentRequestFromFile(arg, request))
|
||||||
{
|
{
|
||||||
if (request.getDetails().network() == "main")
|
if (request.getDetails().network() == "lbrycrd")
|
||||||
{
|
{
|
||||||
node.selectParams(CBaseChainParams::MAIN);
|
node.selectParams(CBaseChainParams::MAIN);
|
||||||
}
|
}
|
||||||
else if (request.getDetails().network() == "test")
|
else if (request.getDetails().network() == "lbrycrdtest")
|
||||||
{
|
{
|
||||||
node.selectParams(CBaseChainParams::TESTNET);
|
node.selectParams(CBaseChainParams::TESTNET);
|
||||||
}
|
}
|
||||||
|
@ -315,7 +315,7 @@ PaymentServer::PaymentServer(QObject* parent, bool startLocalServer) :
|
||||||
if (!uriServer->listen(name)) {
|
if (!uriServer->listen(name)) {
|
||||||
// constructor is called early in init, so don't use "Q_EMIT message()" here
|
// constructor is called early in init, so don't use "Q_EMIT message()" here
|
||||||
QMessageBox::critical(0, tr("Payment request error"),
|
QMessageBox::critical(0, tr("Payment request error"),
|
||||||
tr("Cannot start bitcoin: click-to-pay handler"));
|
tr("Cannot start lbry: click-to-pay handler"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection()));
|
connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection()));
|
||||||
|
@ -395,9 +395,9 @@ void PaymentServer::handleURIOrFile(const QString& s)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s.startsWith("bitcoin://", Qt::CaseInsensitive))
|
if (s.startsWith("lbry://", Qt::CaseInsensitive))
|
||||||
{
|
{
|
||||||
Q_EMIT message(tr("URI handling"), tr("'bitcoin://' is not a valid URI. Use 'bitcoin:' instead."),
|
Q_EMIT message(tr("URI handling"), tr("'lbry://' is not a valid URI. Use 'lbry:' instead."),
|
||||||
CClientUIInterface::MSG_ERROR);
|
CClientUIInterface::MSG_ERROR);
|
||||||
}
|
}
|
||||||
else if (s.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI
|
else if (s.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI
|
||||||
|
|
|
@ -106,7 +106,7 @@ void SendCoinsEntry::clear()
|
||||||
ui->memoTextLabel_s->clear();
|
ui->memoTextLabel_s->clear();
|
||||||
ui->payAmount_s->clear();
|
ui->payAmount_s->clear();
|
||||||
|
|
||||||
// update the display unit, to not use the default ("BTC")
|
// update the display unit, to not use the default ("LBC")
|
||||||
updateDisplayUnit();
|
updateDisplayUnit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,9 @@ void PaymentServerTests::paymentServerTests()
|
||||||
for (const std::pair<CScript, CAmount>& sendingTo : sendingTos) {
|
for (const std::pair<CScript, CAmount>& sendingTo : sendingTos) {
|
||||||
CTxDestination dest;
|
CTxDestination dest;
|
||||||
if (ExtractDestination(sendingTo.first, dest))
|
if (ExtractDestination(sendingTo.first, dest))
|
||||||
QCOMPARE(PaymentServer::verifyAmount(sendingTo.second), false);
|
// LBRY has a max money defined as 1000x bitcoin's, so we
|
||||||
|
// modify the value here to fail this test properly.
|
||||||
|
QCOMPARE(PaymentServer::verifyAmount(sendingTo.second * 1000), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete server;
|
delete server;
|
||||||
|
|
|
@ -48,7 +48,7 @@ void RPCNestedTests::rpcNestedTests()
|
||||||
std::string filtered;
|
std::string filtered;
|
||||||
auto node = interfaces::MakeNode();
|
auto node = interfaces::MakeNode();
|
||||||
RPCConsole::RPCExecuteCommandLine(*node, result, "getblockchaininfo()[chain]", &filtered); //simple result filtering with path
|
RPCConsole::RPCExecuteCommandLine(*node, result, "getblockchaininfo()[chain]", &filtered); //simple result filtering with path
|
||||||
QVERIFY(result=="main");
|
QVERIFY(result=="lbrycrd");
|
||||||
QVERIFY(filtered == "getblockchaininfo()[chain]");
|
QVERIFY(filtered == "getblockchaininfo()[chain]");
|
||||||
|
|
||||||
RPCConsole::RPCExecuteCommandLine(*node, result, "getblock(getbestblockhash())"); //simple 2 level nesting
|
RPCConsole::RPCExecuteCommandLine(*node, result, "getblock(getbestblockhash())"); //simple 2 level nesting
|
||||||
|
@ -75,7 +75,7 @@ void RPCNestedTests::rpcNestedTests()
|
||||||
QVERIFY(result == result2);
|
QVERIFY(result == result2);
|
||||||
|
|
||||||
RPCConsole::RPCExecuteCommandLine(*node, result, "getblock(getbestblockhash())[tx][0]", &filtered);
|
RPCConsole::RPCExecuteCommandLine(*node, result, "getblock(getbestblockhash())[tx][0]", &filtered);
|
||||||
QVERIFY(result == "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b");
|
QVERIFY(result == "b8211c82c3d15bcd78bba57005b86fed515149a53a425eb592c07af99fe559cc");
|
||||||
QVERIFY(filtered == "getblock(getbestblockhash())[tx][0]");
|
QVERIFY(filtered == "getblock(getbestblockhash())[tx][0]");
|
||||||
|
|
||||||
RPCConsole::RPCParseCommandLine(nullptr, result, "importprivkey", false, &filtered);
|
RPCConsole::RPCParseCommandLine(nullptr, result, "importprivkey", false, &filtered);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue