mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 11:32:46 +01:00
Merge remote-tracking branch 'bitcoin/0.12' into HEAD
+ merge fixes + keepass on evhttp
This commit is contained in:
commit
a5ac60b868
12
.gitignore
vendored
12
.gitignore
vendored
@ -12,6 +12,7 @@ src/dash-cli
|
|||||||
src/dash-tx
|
src/dash-tx
|
||||||
src/test/test_dash
|
src/test/test_dash
|
||||||
src/qt/test/test_dash-qt
|
src/qt/test/test_dash-qt
|
||||||
|
src/bench/bench_dash
|
||||||
|
|
||||||
# autoreconf
|
# autoreconf
|
||||||
Makefile.in
|
Makefile.in
|
||||||
@ -90,15 +91,13 @@ src/test/buildenv.py
|
|||||||
# Resources cpp
|
# Resources cpp
|
||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
|
|
||||||
# Qt creator
|
|
||||||
*.pro.user
|
|
||||||
|
|
||||||
# Mac specific
|
# Mac specific
|
||||||
.DS_Store
|
.DS_Store
|
||||||
build
|
build
|
||||||
|
|
||||||
#lcov
|
#lcov
|
||||||
*.gcno
|
*.gcno
|
||||||
|
*.gcda
|
||||||
/*.info
|
/*.info
|
||||||
test_dash.coverage/
|
test_dash.coverage/
|
||||||
total.coverage/
|
total.coverage/
|
||||||
@ -109,12 +108,17 @@ linux-coverage-build
|
|||||||
linux-build
|
linux-build
|
||||||
win32-build
|
win32-build
|
||||||
qa/pull-tester/run-bitcoind-for-test.sh
|
qa/pull-tester/run-bitcoind-for-test.sh
|
||||||
qa/pull-tester/tests-config.sh
|
qa/pull-tester/tests_config.py
|
||||||
qa/pull-tester/cache/*
|
qa/pull-tester/cache/*
|
||||||
qa/pull-tester/test.*/*
|
qa/pull-tester/test.*/*
|
||||||
|
qa/tmp
|
||||||
|
cache/
|
||||||
|
share/BitcoindComparisonTool.jar
|
||||||
|
|
||||||
!src/leveldb*/Makefile
|
!src/leveldb*/Makefile
|
||||||
|
|
||||||
.cproject
|
.cproject
|
||||||
.project
|
.project
|
||||||
/doc/doxygen/
|
/doc/doxygen/
|
||||||
|
|
||||||
|
libbitcoinconsensus.pc
|
||||||
|
31
.travis.yml
31
.travis.yml
@ -2,7 +2,7 @@
|
|||||||
# - A travis bug causes caches to trample eachother when using the same
|
# - A travis bug causes caches to trample eachother when using the same
|
||||||
# compiler key (which we don't use anyway). This is worked around for now by
|
# compiler key (which we don't use anyway). This is worked around for now by
|
||||||
# replacing the "compilers" with a build name prefixed by the no-op ":"
|
# replacing the "compilers" with a build name prefixed by the no-op ":"
|
||||||
# command. See: https://github.com/travis-ci/casher/issues/6
|
# command. See: https://github.com/travis-ci/travis-ci/issues/4393
|
||||||
|
|
||||||
os: linux
|
os: linux
|
||||||
language: cpp
|
language: cpp
|
||||||
@ -11,11 +11,14 @@ env:
|
|||||||
global:
|
global:
|
||||||
- MAKEJOBS=-j3
|
- MAKEJOBS=-j3
|
||||||
- RUN_TESTS=false
|
- RUN_TESTS=false
|
||||||
|
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
|
||||||
- CCACHE_SIZE=100M
|
- CCACHE_SIZE=100M
|
||||||
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
||||||
- CCACHE_COMPRESS=1
|
- CCACHE_COMPRESS=1
|
||||||
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
|
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
|
||||||
- SDK_URL=https://dash.org/depends-sources/sdks
|
- SDK_URL=https://dash.org/depends-sources/sdks
|
||||||
|
- PYTHON_DEBUG=1
|
||||||
|
- WINEDEBUG=fixme-all
|
||||||
cache:
|
cache:
|
||||||
apt: true
|
apt: true
|
||||||
directories:
|
directories:
|
||||||
@ -26,20 +29,24 @@ matrix:
|
|||||||
fast_finish: true
|
fast_finish: true
|
||||||
include:
|
include:
|
||||||
- compiler: ": ARM"
|
- compiler: ": ARM"
|
||||||
env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat"
|
env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
||||||
- compiler: ": dashd"
|
|
||||||
env: HOST=x86_64-unknown-linux-gnu PACKAGES="bc" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER"
|
|
||||||
- compiler: ": 32-bit + dash"
|
|
||||||
env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat" USE_SHELL="/bin/dash"
|
|
||||||
- compiler: ": Cross-Mac"
|
|
||||||
env: HOST=x86_64-apple-darwin11 PACKAGES="gcc-multilib g++-multilib cmake libcap-dev libz-dev libbz2-dev" OSX_SDK=10.7 GOAL="deploy"
|
|
||||||
- compiler: ": Win64"
|
|
||||||
env: HOST=x86_64-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui" MAKEJOBS="-j2"
|
|
||||||
- compiler: ": Win32"
|
- compiler: ": Win32"
|
||||||
env: HOST=i686-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-i686 g++-mingw-w64-i686 binutils-mingw-w64-i686 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui" MAKEJOBS="-j2"
|
env: HOST=i686-w64-mingw32 PPA="ppa:ubuntu-wine/ppa" PACKAGES="nsis gcc-mingw-w64-i686 g++-mingw-w64-i686 binutils-mingw-w64-i686 mingw-w64-dev wine1.7 bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" MAKEJOBS="-j2"
|
||||||
|
- compiler: ": 32-bit + dash"
|
||||||
|
env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python-zmq" PPA="ppa:chris-lea/zeromq" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash"
|
||||||
|
- compiler: ": Win64"
|
||||||
|
env: HOST=x86_64-w64-mingw32 PPA="ppa:ubuntu-wine/ppa" PACKAGES="nsis gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-dev wine1.7 bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" MAKEJOBS="-j2"
|
||||||
|
- compiler: ": dashd"
|
||||||
|
env: HOST=x86_64-unknown-linux-gnu PACKAGES="bc python-zmq" PPA="ppa:chris-lea/zeromq" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER"
|
||||||
|
- compiler: ": No wallet"
|
||||||
|
env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
||||||
|
- compiler: ": Cross-Mac"
|
||||||
|
env: HOST=x86_64-apple-darwin11 PACKAGES="cmake libcap-dev libz-dev libbz2-dev" BITCOIN_CONFIG="--enable-reduce-exports" OSX_SDK=10.9 GOAL="deploy"
|
||||||
exclude:
|
exclude:
|
||||||
- compiler: gcc
|
- compiler: gcc
|
||||||
install:
|
install:
|
||||||
|
- if [ -n "$PACKAGES" ]; then sudo rm -f /etc/apt/sources.list.d/travis_ci_zeromq3-source.list; fi
|
||||||
|
- if [ -n "$PPA" ]; then travis_retry sudo add-apt-repository "$PPA" -y; fi
|
||||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
||||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
|
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
|
||||||
before_script:
|
before_script:
|
||||||
@ -62,6 +69,6 @@ script:
|
|||||||
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
|
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
|
||||||
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
|
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
|
||||||
- if [ "$RUN_TESTS" = "true" ]; then make check; fi
|
- if [ "$RUN_TESTS" = "true" ]; then make check; fi
|
||||||
- if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.sh; fi
|
- if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.py --coverage; fi
|
||||||
after_script:
|
after_script:
|
||||||
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then (echo "Upload goes here. Something like: scp -r $BASE_OUTDIR server" || echo "upload failed"); fi
|
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then (echo "Upload goes here. Something like: scp -r $BASE_OUTDIR server" || echo "upload failed"); fi
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[dash.qt-translation-010x]
|
[dash.qt-translation-012x]
|
||||||
file_filter = src/qt/locale/dash_<lang>.ts
|
file_filter = src/qt/locale/dash_<lang>.ts
|
||||||
source_file = src/qt/locale/dash_en.ts
|
source_file = src/qt/locale/dash_en.ts
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
110
CONTRIBUTING.md
Normal file
110
CONTRIBUTING.md
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
Contributing to Bitcoin Core
|
||||||
|
============================
|
||||||
|
|
||||||
|
The Bitcoin Core project operates an open contributor model where anyone is welcome to contribute towards development in the form of peer review, testing and patches. This document explains the practical process and guidelines for contributing.
|
||||||
|
|
||||||
|
Firstly in terms of structure, there is no particular concept of “Core developers” in the sense of privileged people. Open source often naturally revolves around meritocracy where longer term contributors gain more trust from the developer community. However, some hierarchy is necessary for practical purposes. As such there are repository “maintainers” who are responsible for merging pull requests as well as a “lead maintainer” who is responsible for the release cycle, overall merging, moderation and appointment of maintainers.
|
||||||
|
|
||||||
|
|
||||||
|
Contributor Workflow
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The codebase is maintained using the “contributor workflow” where everyone without exception contributes patch proposals using “pull requests”. This facilitates social contribution, easy testing and peer review.
|
||||||
|
|
||||||
|
To contribute a patch, the workflow is as follows:
|
||||||
|
|
||||||
|
- Fork repository
|
||||||
|
- Create topic branch
|
||||||
|
- Commit patches
|
||||||
|
|
||||||
|
The project coding conventions in [doc/developer-notes.md](doc/developer-notes.md) must be adhered to.
|
||||||
|
|
||||||
|
In general [commits should be atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_commit_convention) and diffs should be easy to read. For this reason do not mix any formatting fixes or code moves with actual code changes.
|
||||||
|
|
||||||
|
Commit messages should be verbose by default consisting of a short subject line (50 chars max), a blank line and detailed explanatory text as separate paragraph(s); unless the title alone is self-explanatory (like "Corrected typo in main.cpp") then a single title line is sufficient. Commit messages should be helpful to people reading your code in the future, so explain the reasoning for your decisions. Further explanation [here](http://chris.beams.io/posts/git-commit/).
|
||||||
|
|
||||||
|
If a particular commit references another issue, please add the reference, for example "refs #1234", or "fixes #4321". Using "fixes or closes" keywords will cause the corresponding issue to be closed when the pull request is merged.
|
||||||
|
|
||||||
|
Please refer to the [Git manual](https://git-scm.com/doc) for more information about Git.
|
||||||
|
|
||||||
|
- Push changes to your fork
|
||||||
|
- Create pull request
|
||||||
|
|
||||||
|
The title of the pull request should be prefixed by the component or area that the pull request affects. Examples:
|
||||||
|
|
||||||
|
Consensus: Add new opcode for BIP-XXXX OP_CHECKAWESOMESIG
|
||||||
|
Net: Automatically create hidden service, listen on Tor
|
||||||
|
Qt: Add feed bump button
|
||||||
|
Trivial: fix typo
|
||||||
|
|
||||||
|
If a pull request is specifically not to be considered for merging (yet) please prefix the title with [WIP] or use [Tasks Lists](https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments) in the body of the pull request to indicate tasks are pending.
|
||||||
|
|
||||||
|
The body of the pull request should contain enough description about what the patch does together with any justification/reasoning. You should include references to any discussions (for example other tickets or mailing list discussions).
|
||||||
|
|
||||||
|
At this stage one should expect comments and review from other contributors. You can add more commits to your pull request by committing them locally and pushing to your fork until you have satisfied all feedback. If your pull request is accepted for merging, you may be asked by a maintainer to squash and or rebase your commits before it will be merged. The length of time required for peer review is unpredictable and will vary from patch to patch.
|
||||||
|
|
||||||
|
|
||||||
|
Pull Request Philosophy
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Patchsets should always be focused. For example, a pull request could add a feature, fix a bug, or refactor code; but not a mixture. Please also avoid super pull requests which attempt to do too much, are overly large, or overly complex as this makes review difficult.
|
||||||
|
|
||||||
|
|
||||||
|
###Features
|
||||||
|
|
||||||
|
When adding a new feature, thought must be given to the long term technical debt and maintenance that feature may require after inclusion. Before proposing a new feature that will require maintenance, please consider if you are willing to maintain it (including bug fixing). If features get orphaned with no maintainer in the future, they may be removed by the Repository Maintainer.
|
||||||
|
|
||||||
|
|
||||||
|
###Refactoring
|
||||||
|
|
||||||
|
Refactoring is a necessary part of any software project's evolution. The following guidelines cover refactoring pull requests for the project.
|
||||||
|
|
||||||
|
There are three categories of refactoring, code only moves, code style fixes, code refactoring. In general refactoring pull requests should not mix these three kinds of activity in order to make refactoring pull requests easy to review and uncontroversial. In all cases, refactoring PRs must not change the behaviour of code within the pull request (bugs must be preserved as is).
|
||||||
|
|
||||||
|
Project maintainers aim for a quick turnaround on refactoring pull requests, so where possible keep them short, uncomplex and easy to verify.
|
||||||
|
|
||||||
|
|
||||||
|
"Decision Making" Process
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The following applies to code changes to the Bitcoin Core project (and related projects such as libsecp256k1), and is not to be confused with overall Bitcoin Network Protocol consensus changes.
|
||||||
|
|
||||||
|
Whether a pull request is merged into Bitcoin Core rests with the project merge maintainers and ultimately the project lead.
|
||||||
|
|
||||||
|
Maintainers will take into consideration if a patch is in line with the general principles of the project; meets the minimum standards for inclusion; and will judge the general consensus of contributors.
|
||||||
|
|
||||||
|
In general, all pull requests must:
|
||||||
|
|
||||||
|
- have a clear use case, fix a demonstrable bug or serve the greater good of the project (for example refactoring for modularisation);
|
||||||
|
- be well peer reviewed;
|
||||||
|
- have unit tests and functional tests where appropriate;
|
||||||
|
- follow code style guidelines;
|
||||||
|
- not break the existing test suite;
|
||||||
|
- where bugs are fixed, where possible, there should be unit tests demonstrating the bug and also proving the fix. This helps prevent regression.
|
||||||
|
|
||||||
|
Patches that change Bitcoin consensus rules are considerably more involved than normal because they affect the entire ecosystem and so must be preceded by extensive mailing list discussions and have a numbered BIP. While each case will be different, one should be prepared to expend more time and effort than for other kinds of patches because of increased peer review and consensus building requirements.
|
||||||
|
|
||||||
|
|
||||||
|
###Peer Review
|
||||||
|
|
||||||
|
Anyone may participate in peer review which is expressed by comments in the pull request. Typically reviewers will review the code for obvious errors, as well as test out the patch set and opine on the technical merits of the patch. Project maintainers take into account the peer review when determining if there is consensus to merge a pull request (remember that discussions may have been spread out over github, mailing list and IRC discussions). The following language is used within pull-request comments:
|
||||||
|
|
||||||
|
- ACK means "I have tested the code and I agree it should be merged";
|
||||||
|
- NACK means "I disagree this should be merged", and must be accompanied by sound technical justification. NACKs without accompanying reasoning may be disregarded;
|
||||||
|
- utACK means "I have not tested the code, but I have reviewed it and it looks OK, I agree it can be merged";
|
||||||
|
- Concept ACK means "I agree in the general principle of this pull request";
|
||||||
|
- Nit refers to trivial, often non-blocking issues.
|
||||||
|
|
||||||
|
Reviewers should include the commit hash which they reviewed in their comments.
|
||||||
|
|
||||||
|
Project maintainers reserve the right to weigh the opinions of peer reviewers using common sense judgement and also may weight based on meritocracy: Those that have demonstrated a deeper commitment and understanding towards the project (over time) or have clear domain expertise may naturally have more weight, as one would expect in all walks of life.
|
||||||
|
|
||||||
|
Where a patch set affects consensus critical code, the bar will be set much higher in terms of discussion and peer review requirements, keeping in mind that mistakes could be very costly to the wider community. This includes refactoring of consensus critical code.
|
||||||
|
|
||||||
|
Where a patch set proposes to change the Bitcoin consensus, it must have been discussed extensively on the mailing list and IRC, be accompanied by a widely discussed BIP and have a generally widely perceived technical consensus of being a worthwhile change based on the judgement of the maintainers.
|
||||||
|
|
||||||
|
|
||||||
|
Release Policy
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The project leader is the release manager for each Bitcoin Core release.
|
6
COPYING
6
COPYING
@ -1,5 +1,7 @@
|
|||||||
Copyright (c) 2009-2015 Bitcoin Developers
|
The MIT License (MIT)
|
||||||
Copyright (c) 2014-2015 Dash Developers
|
|
||||||
|
Copyright (c) 2009-2016 The Bitcoin Core developers
|
||||||
|
Copyright (c) 2014-2016 The Dash Core Developers
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
60
Makefile.am
60
Makefile.am
@ -4,35 +4,45 @@ SUBDIRS = src
|
|||||||
|
|
||||||
GZIP_ENV="-9n"
|
GZIP_ENV="-9n"
|
||||||
|
|
||||||
|
if BUILD_BITCOIN_LIBS
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = libbitcoinconsensus.pc
|
||||||
|
endif
|
||||||
|
|
||||||
BITCOIND_BIN=$(top_builddir)/src/dashd$(EXEEXT)
|
BITCOIND_BIN=$(top_builddir)/src/dashd$(EXEEXT)
|
||||||
BITCOIN_QT_BIN=$(top_builddir)/src/qt/dash-qt$(EXEEXT)
|
BITCOIN_QT_BIN=$(top_builddir)/src/qt/dash-qt$(EXEEXT)
|
||||||
BITCOIN_CLI_BIN=$(top_builddir)/src/dash-cli$(EXEEXT)
|
BITCOIN_CLI_BIN=$(top_builddir)/src/dash-cli$(EXEEXT)
|
||||||
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)
|
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)
|
||||||
|
|
||||||
OSX_APP=Dash-Qt.app
|
OSX_APP=Dash-Qt.app
|
||||||
OSX_DMG=Dash-Qt.dmg
|
OSX_DMG=Dash-Core.dmg
|
||||||
|
OSX_BACKGROUND_IMAGE=background.tiff
|
||||||
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
||||||
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
|
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
|
||||||
|
OSX_BASE_LPROJ_DIR=$(top_srcdir)/contrib/macdeploy/Base.lproj/InfoPlist.strings
|
||||||
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
|
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
|
||||||
OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed
|
OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed
|
||||||
OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW
|
OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW
|
||||||
|
|
||||||
DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md)
|
DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md)
|
||||||
|
|
||||||
|
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
|
||||||
|
$(top_srcdir)/contrib/devtools/security-check.py
|
||||||
|
|
||||||
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
|
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
|
||||||
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
|
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
|
||||||
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
|
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
|
||||||
$(top_srcdir)/doc/README_windows.txt
|
$(top_srcdir)/doc/README_windows.txt
|
||||||
|
|
||||||
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \
|
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) $(OSX_BASE_LPROJ_DIR) \
|
||||||
$(top_srcdir)/contrib/macdeploy/background.png \
|
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) \
|
||||||
$(top_srcdir)/contrib/macdeploy/DS_Store \
|
$(top_srcdir)/contrib/macdeploy/DS_Store \
|
||||||
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
|
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
|
||||||
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
|
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
|
||||||
|
|
||||||
COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
||||||
leveldb_baseline.info test_dash_filtered.info total_coverage.info \
|
leveldb_baseline.info test_dash_filtered.info total_coverage.info \
|
||||||
baseline_filtered.info block_test_filtered.info \
|
baseline_filtered.info block_test_filtered.info rpc_test.info rpc_test_filtered.info \
|
||||||
leveldb_baseline_filtered.info test_dash_coverage.info test_dash.info
|
leveldb_baseline_filtered.info test_dash_coverage.info test_dash.info
|
||||||
|
|
||||||
dist-hook:
|
dist-hook:
|
||||||
@ -53,8 +63,9 @@ $(BITCOIN_WIN_INSTALLER): all-recursive
|
|||||||
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release
|
||||||
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release
|
||||||
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release
|
||||||
@test -f $(MAKENSIS) && $(MAKENSIS) $(top_builddir)/share/setup.nsi || \
|
@test -f $(MAKENSIS) && $(MAKENSIS) -V2 $(top_builddir)/share/setup.nsi || \
|
||||||
echo error: could not build $@
|
echo error: could not build $@
|
||||||
|
@echo built $@
|
||||||
|
|
||||||
$(if $(findstring src/,$(MAKECMDGOALS)),$(MAKECMDGOALS), none): FORCE
|
$(if $(findstring src/,$(MAKECMDGOALS)),$(MAKECMDGOALS), none): FORCE
|
||||||
$(MAKE) -C src $(patsubst src/%,%,$@)
|
$(MAKE) -C src $(patsubst src/%,%,$@)
|
||||||
@ -65,7 +76,7 @@ $(OSX_APP)/Contents/PkgInfo:
|
|||||||
|
|
||||||
$(OSX_APP)/Contents/Resources/empty.lproj:
|
$(OSX_APP)/Contents/Resources/empty.lproj:
|
||||||
$(MKDIR_P) $(@D)
|
$(MKDIR_P) $(@D)
|
||||||
@touch $@
|
@touch $@
|
||||||
|
|
||||||
$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
|
$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
|
||||||
$(MKDIR_P) $(@D)
|
$(MKDIR_P) $(@D)
|
||||||
@ -79,9 +90,13 @@ $(OSX_APP)/Contents/MacOS/Dash-Qt: $(BITCOIN_QT_BIN)
|
|||||||
$(MKDIR_P) $(@D)
|
$(MKDIR_P) $(@D)
|
||||||
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@
|
||||||
|
|
||||||
|
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings: $(OSX_BASE_LPROJ_DIR)
|
||||||
|
$(MKDIR_P) $(@D)
|
||||||
|
$(INSTALL_DATA) $< $@
|
||||||
|
|
||||||
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
|
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
|
||||||
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
|
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
|
||||||
$(OSX_APP)/Contents/MacOS/Dash-Qt
|
$(OSX_APP)/Contents/MacOS/Dash-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
|
||||||
|
|
||||||
if BUILD_DARWIN
|
if BUILD_DARWIN
|
||||||
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
||||||
@ -90,7 +105,7 @@ $(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
|||||||
deploydir: $(OSX_DMG)
|
deploydir: $(OSX_DMG)
|
||||||
else
|
else
|
||||||
APP_DIST_DIR=$(top_builddir)/dist
|
APP_DIST_DIR=$(top_builddir)/dist
|
||||||
APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/background.png $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications
|
APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications
|
||||||
|
|
||||||
$(APP_DIST_DIR)/Applications:
|
$(APP_DIST_DIR)/Applications:
|
||||||
@rm -f $@
|
@rm -f $@
|
||||||
@ -99,13 +114,13 @@ $(APP_DIST_DIR)/Applications:
|
|||||||
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Dash-Qt
|
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Dash-Qt
|
||||||
|
|
||||||
$(OSX_DMG): $(APP_DIST_EXTRAS)
|
$(OSX_DMG): $(APP_DIST_EXTRAS)
|
||||||
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "Dash-Qt" -no-pad -r -apple -o $@ dist
|
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "Dash-Core" -no-pad -r -dir-mode 0755 -apple -o $@ dist
|
||||||
|
|
||||||
$(APP_DIST_DIR)/.background/background.png:
|
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_IMAGE)
|
||||||
$(MKDIR_P) $(@D)
|
$(MKDIR_P) $(@D)
|
||||||
$(INSTALL) $(top_srcdir)/contrib/macdeploy/background.png $@
|
$(INSTALL) $< $@
|
||||||
$(APP_DIST_DIR)/.DS_Store:
|
$(APP_DIST_DIR)/.DS_Store: contrib/macdeploy/DS_Store
|
||||||
$(INSTALL) $(top_srcdir)/contrib/macdeploy/DS_Store $@
|
$(INSTALL) $< $@
|
||||||
|
|
||||||
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Dash-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Dash-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
||||||
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2
|
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2
|
||||||
@ -158,7 +173,7 @@ test_dash_filtered.info: test_dash.info
|
|||||||
|
|
||||||
block_test.info: test_dash_filtered.info
|
block_test.info: test_dash_filtered.info
|
||||||
$(MKDIR_P) qa/tmp
|
$(MKDIR_P) qa/tmp
|
||||||
-@TIMEOUT=15 qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool 0
|
-@TIMEOUT=15 qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS)
|
||||||
$(LCOV) -c -d $(abs_builddir)/src --t BitcoinJBlockTest -o $@
|
$(LCOV) -c -d $(abs_builddir)/src --t BitcoinJBlockTest -o $@
|
||||||
$(LCOV) -z -d $(abs_builddir)/src
|
$(LCOV) -z -d $(abs_builddir)/src
|
||||||
$(LCOV) -z -d $(abs_builddir)/src/leveldb
|
$(LCOV) -z -d $(abs_builddir)/src/leveldb
|
||||||
@ -166,11 +181,20 @@ block_test.info: test_dash_filtered.info
|
|||||||
block_test_filtered.info: block_test.info
|
block_test_filtered.info: block_test.info
|
||||||
$(LCOV) -r $< "/usr/include/*" -o $@
|
$(LCOV) -r $< "/usr/include/*" -o $@
|
||||||
|
|
||||||
|
rpc_test.info: test_dash_filtered.info
|
||||||
|
-@TIMEOUT=15 python qa/pull-tester/rpc-tests.py $(EXTENDED_RPC_TESTS)
|
||||||
|
$(LCOV) -c -d $(abs_builddir)/src --t rpc-tests -o $@
|
||||||
|
$(LCOV) -z -d $(abs_builddir)/src
|
||||||
|
$(LCOV) -z -d $(abs_builddir)/src/leveldb
|
||||||
|
|
||||||
|
rpc_test_filtered.info: rpc_test.info
|
||||||
|
$(LCOV) -r $< "/usr/include/*" -o $@
|
||||||
|
|
||||||
test_dash_coverage.info: baseline_filtered_combined.info test_dash_filtered.info
|
test_dash_coverage.info: baseline_filtered_combined.info test_dash_filtered.info
|
||||||
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_dash_filtered.info -o $@
|
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_dash_filtered.info -o $@
|
||||||
|
|
||||||
total_coverage.info: baseline_filtered_combined.info test_dash_filtered.info block_test_filtered.info
|
total_coverage.info: baseline_filtered_combined.info test_dash_filtered.info block_test_filtered.info rpc_test_filtered.info
|
||||||
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_dash_filtered.info -a block_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
|
$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_dash_filtered.info -a block_test_filtered.info -a rpc_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
|
||||||
|
|
||||||
test_dash.coverage/.dirstamp: test_dash_coverage.info
|
test_dash.coverage/.dirstamp: test_dash_coverage.info
|
||||||
$(GENHTML) -s $< -o $(@D)
|
$(GENHTML) -s $< -o $(@D)
|
||||||
@ -194,11 +218,11 @@ endif
|
|||||||
|
|
||||||
dist_noinst_SCRIPTS = autogen.sh
|
dist_noinst_SCRIPTS = autogen.sh
|
||||||
|
|
||||||
EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING)
|
EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.py qa/rpc-tests $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING) $(BIN_CHECKS)
|
||||||
|
|
||||||
CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
|
CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
|
||||||
|
|
||||||
.INTERMEDIATE: $(COVERAGE_INFO)
|
.INTERMEDIATE: $(COVERAGE_INFO)
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
rm -rf test_dash.coverage/ total.coverage/ $(OSX_APP)
|
rm -rf coverage_percent.txt test_dash.coverage/ total.coverage/ qa/tmp/ cache/ $(OSX_APP)
|
||||||
|
89
README.md
89
README.md
@ -3,10 +3,6 @@ Dash Core staging tree 0.12
|
|||||||
|
|
||||||
https://www.dash.org
|
https://www.dash.org
|
||||||
|
|
||||||
Copyright (c) 2009-2016 Bitcoin Core Developers
|
|
||||||
|
|
||||||
Copyright (c) 2014-2016 Dash Core Developers
|
|
||||||
|
|
||||||
|
|
||||||
What is Dash?
|
What is Dash?
|
||||||
----------------
|
----------------
|
||||||
@ -25,29 +21,16 @@ License
|
|||||||
-------
|
-------
|
||||||
|
|
||||||
Dash Core is released under the terms of the MIT license. See [COPYING](COPYING) for more
|
Dash Core is released under the terms of the MIT license. See [COPYING](COPYING) for more
|
||||||
information or see http://opensource.org/licenses/MIT.
|
information or see https://opensource.org/licenses/MIT.
|
||||||
|
|
||||||
Development process
|
Development Process
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Developers work in their own trees, then submit pull requests when they think
|
|
||||||
their feature or bug fix is ready.
|
|
||||||
|
|
||||||
If it is a simple/trivial/non-controversial change, then one of the Dash
|
|
||||||
development team members simply pulls it.
|
|
||||||
|
|
||||||
If it is a *more complicated or potentially controversial* change, then the patch
|
|
||||||
submitter will be asked to start a discussion (if they haven't already) on the
|
|
||||||
[mailing list](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev)
|
|
||||||
|
|
||||||
The patch will be accepted if there is broad consensus that it is a good thing.
|
|
||||||
Developers should expect to rework and resubmit patches if the code doesn't
|
|
||||||
match the project's coding conventions (see [doc/coding.md](doc/coding.md)) or are
|
|
||||||
controversial.
|
|
||||||
|
|
||||||
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/dashpay/dash/tags) are created
|
completely stable. [Tags](https://github.com/bitcoin/bitcoin/tags) are created
|
||||||
regularly to indicate new official, stable release versions of Dash. ***TODO***
|
regularly to indicate new official, stable release versions of Bitcoin Core.
|
||||||
|
|
||||||
|
The contribution workflow is described in [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
-------
|
-------
|
||||||
@ -59,20 +42,23 @@ lots of money.
|
|||||||
|
|
||||||
### Automated Testing
|
### Automated Testing
|
||||||
|
|
||||||
Developers are strongly encouraged to write unit tests for new code, and to
|
Developers are strongly encouraged to write [unit tests](/doc/unit-tests.md) for new code, and to
|
||||||
submit new unit tests for old code. Unit tests can be compiled and run (assuming they weren't disabled in configure) with: `make check`
|
submit new unit tests for old code. Unit tests can be compiled and run
|
||||||
|
(assuming they weren't disabled in configure) with: `make check`
|
||||||
|
|
||||||
Every pull request is built for both Windows and Linux on a dedicated server,
|
There are also [regression and integration tests](/qa) of the RPC interface, written
|
||||||
and unit and sanity tests are automatically run. The binaries produced may be
|
in Python, that are run automatically on the build server.
|
||||||
used for manual QA testing — a link to them will appear in a comment on the
|
These tests can be run with: `qa/pull-tester/rpc-tests.py`
|
||||||
pull request posted by [DashPullTester](https://github.com/dashpay/PullTester). See https://github.com/TheBlueMatt/test-scripts
|
|
||||||
for the build/test scripts. ***TODO***
|
The Travis CI system makes sure that every pull request is built for Windows
|
||||||
|
and Linux, OSX, and that unit and sanity tests are automatically run.
|
||||||
|
|
||||||
### Manual Quality Assurance (QA) Testing
|
### Manual Quality Assurance (QA) Testing
|
||||||
|
|
||||||
Large changes should have a test plan, and should be tested by somebody other
|
Changes should be tested by somebody other than the developer who wrote the
|
||||||
than the developer who wrote the code.
|
code. This is especially important for large or high-risk changes. It is useful
|
||||||
See https://github.com/dashpay/QA/ for how to create a test plan. ***TODO***
|
to add a test plan to the pull request description if testing the changes is
|
||||||
|
not straightforward.
|
||||||
|
|
||||||
Translations
|
Translations
|
||||||
------------
|
------------
|
||||||
@ -86,39 +72,4 @@ Translations are periodically pulled from Transifex and merged into the git repo
|
|||||||
**Important**: We do not accept translation changes as GitHub pull requests because the next
|
**Important**: We do not accept translation changes as GitHub pull requests because the next
|
||||||
pull from Transifex would automatically overwrite them again.
|
pull from Transifex would automatically overwrite them again.
|
||||||
|
|
||||||
Translators should also subscribe to the [mailing list](https://groups.google.com/forum/#!forum/dash-translators). ***TODO***
|
Translators should also follow the [forum](https://dashtalk.org/forums/dash-worldwide-collaboration.88/).
|
||||||
|
|
||||||
Development tips and tricks
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
**compiling for debugging**
|
|
||||||
|
|
||||||
Run configure with the --enable-debug option, then make. Or run configure with
|
|
||||||
CXXFLAGS="-g -ggdb -O0" or whatever debug flags you need.
|
|
||||||
|
|
||||||
**debug.log**
|
|
||||||
|
|
||||||
If the code is behaving strangely, take a look in the debug.log file in the data directory;
|
|
||||||
error and debugging messages are written there.
|
|
||||||
|
|
||||||
The -debug=... command-line option controls debugging; running with just -debug will turn
|
|
||||||
on all categories (and give you a very large debug.log file).
|
|
||||||
|
|
||||||
The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt
|
|
||||||
to see it.
|
|
||||||
|
|
||||||
**testnet and regtest modes**
|
|
||||||
|
|
||||||
Run with the -testnet option to run with "play dash" on the test network, if you
|
|
||||||
are testing multi-machine code that needs to operate across the internet.
|
|
||||||
|
|
||||||
If you are testing something that can run on one machine, run with the -regtest option.
|
|
||||||
In regression test mode, blocks can be created on-demand; see qa/rpc-tests/ for tests
|
|
||||||
that run in -regtest mode.
|
|
||||||
|
|
||||||
**DEBUG_LOCKORDER**
|
|
||||||
|
|
||||||
Dash Core is a multithreaded application, and deadlocks or other multithreading bugs
|
|
||||||
can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure
|
|
||||||
CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of which locks
|
|
||||||
are held, and adds warnings to the debug.log file if inconsistencies are detected.
|
|
||||||
|
@ -38,7 +38,7 @@ AC_DEFUN([BITCOIN_FIND_BDB48],[
|
|||||||
done
|
done
|
||||||
if test "x$bdbpath" = "xX"; then
|
if test "x$bdbpath" = "xX"; then
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
AC_MSG_ERROR(libdb_cxx headers missing)
|
AC_MSG_ERROR([libdb_cxx headers missing, Bitcoin Core requires this library for wallet functionality (--disable-wallet to disable wallet functionality)])
|
||||||
elif test "x$bdb48path" = "xX"; then
|
elif test "x$bdb48path" = "xX"; then
|
||||||
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdbpath}],db_cxx)
|
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdbpath}],db_cxx)
|
||||||
AC_ARG_WITH([incompatible-bdb],[AS_HELP_STRING([--with-incompatible-bdb], [allow using a bdb version other than 4.8])],[
|
AC_ARG_WITH([incompatible-bdb],[AS_HELP_STRING([--with-incompatible-bdb], [allow using a bdb version other than 4.8])],[
|
||||||
|
@ -6,6 +6,7 @@ AC_DEFUN([BITCOIN_QT_FAIL],[
|
|||||||
AC_MSG_WARN([$1; dash-qt frontend will not be built])
|
AC_MSG_WARN([$1; dash-qt frontend will not be built])
|
||||||
fi
|
fi
|
||||||
bitcoin_enable_qt=no
|
bitcoin_enable_qt=no
|
||||||
|
bitcoin_enable_qt_test=no
|
||||||
else
|
else
|
||||||
AC_MSG_ERROR([$1])
|
AC_MSG_ERROR([$1])
|
||||||
fi
|
fi
|
||||||
@ -49,7 +50,7 @@ AC_DEFUN([BITCOIN_QT_INIT],[
|
|||||||
dnl enable qt support
|
dnl enable qt support
|
||||||
AC_ARG_WITH([gui],
|
AC_ARG_WITH([gui],
|
||||||
[AS_HELP_STRING([--with-gui@<:@=no|qt4|qt5|auto@:>@],
|
[AS_HELP_STRING([--with-gui@<:@=no|qt4|qt5|auto@:>@],
|
||||||
[build dash-qt GUI (default=auto, qt4 tried first)])],
|
[build dash-qt GUI (default=auto, qt5 tried first)])],
|
||||||
[
|
[
|
||||||
bitcoin_qt_want_version=$withval
|
bitcoin_qt_want_version=$withval
|
||||||
if test x$bitcoin_qt_want_version = xyes; then
|
if test x$bitcoin_qt_want_version = xyes; then
|
||||||
@ -105,30 +106,33 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
|||||||
dnl results to QT_LIBS.
|
dnl results to QT_LIBS.
|
||||||
BITCOIN_QT_CHECK([
|
BITCOIN_QT_CHECK([
|
||||||
TEMP_CPPFLAGS=$CPPFLAGS
|
TEMP_CPPFLAGS=$CPPFLAGS
|
||||||
CPPFLAGS=$QT_INCLUDES
|
TEMP_CXXFLAGS=$CXXFLAGS
|
||||||
|
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
|
||||||
|
CXXFLAGS="$PIC_FLAGS $CXXFLAGS"
|
||||||
if test x$bitcoin_qt_got_major_vers = x5; then
|
if test x$bitcoin_qt_got_major_vers = x5; then
|
||||||
_BITCOIN_QT_IS_STATIC
|
_BITCOIN_QT_IS_STATIC
|
||||||
if test x$bitcoin_cv_static_qt = xyes; then
|
if test x$bitcoin_cv_static_qt = xyes; then
|
||||||
|
_BITCOIN_QT_FIND_STATIC_PLUGINS
|
||||||
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
|
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
|
||||||
if test x$qt_plugin_path != x; then
|
AC_CACHE_CHECK(for Qt < 5.4, bitcoin_cv_need_acc_widget,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
|
[[#include <QtCore>]],[[
|
||||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms"
|
#if QT_VERSION >= 0x050400
|
||||||
|
choke;
|
||||||
|
#endif
|
||||||
|
]])],
|
||||||
|
[bitcoin_cv_need_acc_widget=yes],
|
||||||
|
[bitcoin_cv_need_acc_widget=no])
|
||||||
|
])
|
||||||
|
if test "x$bitcoin_cv_need_acc_widget" = "xyes"; then
|
||||||
|
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
|
||||||
fi
|
fi
|
||||||
if test x$use_pkgconfig = xyes; then
|
|
||||||
PKG_CHECK_MODULES([QTPLATFORM], [Qt5PlatformSupport], [QT_LIBS="$QTPLATFORM_LIBS $QT_LIBS"])
|
|
||||||
fi
|
|
||||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
|
|
||||||
if test x$TARGET_OS = xwindows; then
|
if test x$TARGET_OS = xwindows; then
|
||||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows])
|
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows])
|
||||||
AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows])
|
AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows])
|
||||||
elif test x$TARGET_OS = xlinux; then
|
elif test x$TARGET_OS = xlinux; then
|
||||||
PKG_CHECK_MODULES([X11XCB], [x11-xcb], [QT_LIBS="$X11XCB_LIBS $QT_LIBS"])
|
|
||||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static])
|
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static])
|
||||||
AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb])
|
AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb])
|
||||||
elif test x$TARGET_OS = xdarwin; then
|
elif test x$TARGET_OS = xdarwin; then
|
||||||
if test x$use_pkgconfig = xyes; then
|
|
||||||
PKG_CHECK_MODULES([QTPRINT], [Qt5PrintSupport], [QT_LIBS="$QTPRINT_LIBS $QT_LIBS"])
|
|
||||||
fi
|
|
||||||
AX_CHECK_LINK_FLAG([[-framework IOKit]],[QT_LIBS="$QT_LIBS -framework IOKit"],[AC_MSG_ERROR(could not iokit framework)])
|
AX_CHECK_LINK_FLAG([[-framework IOKit]],[QT_LIBS="$QT_LIBS -framework IOKit"],[AC_MSG_ERROR(could not iokit framework)])
|
||||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)],[-lqcocoa])
|
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)],[-lqcocoa])
|
||||||
AC_DEFINE(QT_QPA_PLATFORM_COCOA, 1, [Define this symbol if the qt platform is cocoa])
|
AC_DEFINE(QT_QPA_PLATFORM_COCOA, 1, [Define this symbol if the qt platform is cocoa])
|
||||||
@ -137,10 +141,6 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
|||||||
else
|
else
|
||||||
if test x$TARGET_OS = xwindows; then
|
if test x$TARGET_OS = xwindows; then
|
||||||
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
|
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
|
||||||
if test x$qt_plugin_path != x; then
|
|
||||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
|
|
||||||
QT_LIBS="$QT_LIBS -L$qt_plugin_path/codecs"
|
|
||||||
fi
|
|
||||||
_BITCOIN_QT_CHECK_STATIC_PLUGINS([
|
_BITCOIN_QT_CHECK_STATIC_PLUGINS([
|
||||||
Q_IMPORT_PLUGIN(qcncodecs)
|
Q_IMPORT_PLUGIN(qcncodecs)
|
||||||
Q_IMPORT_PLUGIN(qjpcodecs)
|
Q_IMPORT_PLUGIN(qjpcodecs)
|
||||||
@ -151,6 +151,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
CPPFLAGS=$TEMP_CPPFLAGS
|
CPPFLAGS=$TEMP_CPPFLAGS
|
||||||
|
CXXFLAGS=$TEMP_CXXFLAGS
|
||||||
])
|
])
|
||||||
|
|
||||||
if test x$use_pkgconfig$qt_bin_path = xyes; then
|
if test x$use_pkgconfig$qt_bin_path = xyes; then
|
||||||
@ -159,6 +160,43 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$use_hardening != xno; then
|
||||||
|
BITCOIN_QT_CHECK([
|
||||||
|
AC_MSG_CHECKING(whether -fPIE can be used with this Qt config)
|
||||||
|
TEMP_CPPFLAGS=$CPPFLAGS
|
||||||
|
TEMP_CXXFLAGS=$CXXFLAGS
|
||||||
|
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
|
||||||
|
CXXFLAGS="$PIE_FLAGS $CXXFLAGS"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QtCore/qconfig.h>]],
|
||||||
|
[[
|
||||||
|
#if defined(QT_REDUCE_RELOCATIONS)
|
||||||
|
choke;
|
||||||
|
#endif
|
||||||
|
]])],
|
||||||
|
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIE_FLAGS ],
|
||||||
|
[ AC_MSG_RESULT(no); QT_PIE_FLAGS=$PIC_FLAGS]
|
||||||
|
)
|
||||||
|
CPPFLAGS=$TEMP_CPPFLAGS
|
||||||
|
CXXFLAGS=$TEMP_CXXFLAGS
|
||||||
|
])
|
||||||
|
else
|
||||||
|
BITCOIN_QT_CHECK([
|
||||||
|
AC_MSG_CHECKING(whether -fPIC is needed with this Qt config)
|
||||||
|
TEMP_CPPFLAGS=$CPPFLAGS
|
||||||
|
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QtCore/qconfig.h>]],
|
||||||
|
[[
|
||||||
|
#if defined(QT_REDUCE_RELOCATIONS)
|
||||||
|
choke;
|
||||||
|
#endif
|
||||||
|
]])],
|
||||||
|
[ AC_MSG_RESULT(no)],
|
||||||
|
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIC_FLAGS]
|
||||||
|
)
|
||||||
|
CPPFLAGS=$TEMP_CPPFLAGS
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
|
||||||
BITCOIN_QT_PATH_PROGS([MOC], [moc-qt${bitcoin_qt_got_major_vers} moc${bitcoin_qt_got_major_vers} moc], $qt_bin_path)
|
BITCOIN_QT_PATH_PROGS([MOC], [moc-qt${bitcoin_qt_got_major_vers} moc${bitcoin_qt_got_major_vers} moc], $qt_bin_path)
|
||||||
BITCOIN_QT_PATH_PROGS([UIC], [uic-qt${bitcoin_qt_got_major_vers} uic${bitcoin_qt_got_major_vers} uic], $qt_bin_path)
|
BITCOIN_QT_PATH_PROGS([UIC], [uic-qt${bitcoin_qt_got_major_vers} uic${bitcoin_qt_got_major_vers} uic], $qt_bin_path)
|
||||||
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt${bitcoin_qt_got_major_vers} rcc${bitcoin_qt_got_major_vers} rcc], $qt_bin_path)
|
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt${bitcoin_qt_got_major_vers} rcc${bitcoin_qt_got_major_vers} rcc], $qt_bin_path)
|
||||||
@ -204,6 +242,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
|||||||
])
|
])
|
||||||
AC_MSG_RESULT([$bitcoin_enable_qt (Qt${bitcoin_qt_got_major_vers})])
|
AC_MSG_RESULT([$bitcoin_enable_qt (Qt${bitcoin_qt_got_major_vers})])
|
||||||
|
|
||||||
|
AC_SUBST(QT_PIE_FLAGS)
|
||||||
AC_SUBST(QT_INCLUDES)
|
AC_SUBST(QT_INCLUDES)
|
||||||
AC_SUBST(QT_LIBS)
|
AC_SUBST(QT_LIBS)
|
||||||
AC_SUBST(QT_LDFLAGS)
|
AC_SUBST(QT_LDFLAGS)
|
||||||
@ -280,6 +319,39 @@ AC_DEFUN([_BITCOIN_QT_CHECK_STATIC_PLUGINS],[
|
|||||||
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
|
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl Internal. Find paths necessary for linking qt static plugins
|
||||||
|
dnl Inputs: bitcoin_qt_got_major_vers. 4 or 5.
|
||||||
|
dnl Inputs: qt_plugin_path. optional.
|
||||||
|
dnl Outputs: QT_LIBS is appended
|
||||||
|
AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
|
||||||
|
if test x$bitcoin_qt_got_major_vers = x5; then
|
||||||
|
if test x$qt_plugin_path != x; then
|
||||||
|
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms"
|
||||||
|
if test -d "$qt_plugin_path/accessible"; then
|
||||||
|
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
m4_ifdef([PKG_CHECK_MODULES],[
|
||||||
|
if test x$use_pkgconfig = xyes; then
|
||||||
|
PKG_CHECK_MODULES([QTPLATFORM], [Qt5PlatformSupport], [QT_LIBS="$QTPLATFORM_LIBS $QT_LIBS"])
|
||||||
|
if test x$TARGET_OS = xlinux; then
|
||||||
|
PKG_CHECK_MODULES([X11XCB], [x11-xcb], [QT_LIBS="$X11XCB_LIBS $QT_LIBS"])
|
||||||
|
if ${PKG_CONFIG} --exists "Qt5Core >= 5.5" 2>/dev/null; then
|
||||||
|
PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"])
|
||||||
|
fi
|
||||||
|
elif test x$TARGET_OS = xdarwin; then
|
||||||
|
PKG_CHECK_MODULES([QTPRINT], [Qt5PrintSupport], [QT_LIBS="$QTPRINT_LIBS $QT_LIBS"])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
else
|
||||||
|
if test x$qt_plugin_path != x; then
|
||||||
|
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
|
||||||
|
QT_LIBS="$QT_LIBS -L$qt_plugin_path/codecs"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
dnl Internal. Find Qt libraries using pkg-config.
|
dnl Internal. Find Qt libraries using pkg-config.
|
||||||
dnl Inputs: bitcoin_qt_want_version (from --with-gui=). The version to check
|
dnl Inputs: bitcoin_qt_want_version (from --with-gui=). The version to check
|
||||||
dnl first.
|
dnl first.
|
||||||
@ -342,6 +414,8 @@ dnl Outputs: bitcoin_qt_got_major_vers is set to "4" or "5".
|
|||||||
dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no.
|
dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no.
|
||||||
AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
|
AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
|
||||||
TEMP_CPPFLAGS="$CPPFLAGS"
|
TEMP_CPPFLAGS="$CPPFLAGS"
|
||||||
|
TEMP_CXXFLAGS="$CXXFLAGS"
|
||||||
|
CXXFLAGS="$PIC_FLAGS $CXXFLAGS"
|
||||||
TEMP_LIBS="$LIBS"
|
TEMP_LIBS="$LIBS"
|
||||||
BITCOIN_QT_CHECK([
|
BITCOIN_QT_CHECK([
|
||||||
if test x$qt_include_path != x; then
|
if test x$qt_include_path != x; then
|
||||||
@ -381,7 +455,8 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
|
|||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([z] ,[main],,AC_MSG_WARN([zlib not found. Assuming qt has it built-in])))
|
BITCOIN_QT_CHECK(AC_CHECK_LIB([z] ,[main],,AC_MSG_WARN([zlib not found. Assuming qt has it built-in])))
|
||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([png] ,[main],,AC_MSG_WARN([libpng not found. Assuming qt has it built-in])))
|
BITCOIN_QT_CHECK(AC_CHECK_LIB([png] ,[main],,AC_MSG_WARN([libpng not found. Assuming qt has it built-in])))
|
||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([jpeg] ,[main],,AC_MSG_WARN([libjpeg not found. Assuming qt has it built-in])))
|
BITCOIN_QT_CHECK(AC_CHECK_LIB([jpeg] ,[main],,AC_MSG_WARN([libjpeg not found. Assuming qt has it built-in])))
|
||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([pcre16] ,[main],,AC_MSG_WARN([libpcre16 not found. Assuming qt has it built-in])))
|
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([pcre16_exec], [qtpcre pcre16],,AC_MSG_WARN([libpcre16 not found. Assuming qt has it built-in])))
|
||||||
|
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([hb_ot_tags_from_script] ,[qtharfbuzzng harfbuzz],,AC_MSG_WARN([libharfbuzz not found. Assuming qt has it built-in or support is disabled])))
|
||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXCore not found)))
|
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXCore not found)))
|
||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXGui not found)))
|
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXGui not found)))
|
||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXNetwork not found)))
|
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXNetwork not found)))
|
||||||
@ -410,6 +485,7 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
|
|||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
CPPFLAGS="$TEMP_CPPFLAGS"
|
CPPFLAGS="$TEMP_CPPFLAGS"
|
||||||
|
CXXFLAGS="$TEMP_CXXFLAGS"
|
||||||
LIBS="$TEMP_LIBS"
|
LIBS="$TEMP_LIBS"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
238
configure.ac
238
configure.ac
@ -6,7 +6,7 @@ define(_CLIENT_VERSION_REVISION, 1)
|
|||||||
define(_CLIENT_VERSION_BUILD, 0)
|
define(_CLIENT_VERSION_BUILD, 0)
|
||||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||||
define(_COPYRIGHT_YEAR, 2016)
|
define(_COPYRIGHT_YEAR, 2016)
|
||||||
AC_INIT([Dash Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@dash.org],[dash])
|
AC_INIT([Dash Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/dashpay/dash/issues],[dash])
|
||||||
AC_CONFIG_SRCDIR([src/main.cpp])
|
AC_CONFIG_SRCDIR([src/main.cpp])
|
||||||
AC_CONFIG_HEADERS([src/config/dash-config.h])
|
AC_CONFIG_HEADERS([src/config/dash-config.h])
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
@ -58,26 +58,22 @@ AC_PATH_TOOL(STRIP, strip)
|
|||||||
AC_PATH_TOOL(GCOV, gcov)
|
AC_PATH_TOOL(GCOV, gcov)
|
||||||
AC_PATH_PROG(LCOV, lcov)
|
AC_PATH_PROG(LCOV, lcov)
|
||||||
AC_PATH_PROG(JAVA, java)
|
AC_PATH_PROG(JAVA, java)
|
||||||
|
AC_PATH_PROG(PYTHON, python)
|
||||||
AC_PATH_PROG(GENHTML, genhtml)
|
AC_PATH_PROG(GENHTML, genhtml)
|
||||||
AC_PATH_PROG([GIT], [git])
|
AC_PATH_PROG([GIT], [git])
|
||||||
AC_PATH_PROG(CCACHE,ccache)
|
AC_PATH_PROG(CCACHE,ccache)
|
||||||
AC_PATH_PROG(XGETTEXT,xgettext)
|
AC_PATH_PROG(XGETTEXT,xgettext)
|
||||||
AC_PATH_PROG(HEXDUMP,hexdump)
|
AC_PATH_PROG(HEXDUMP,hexdump)
|
||||||
|
AC_PATH_TOOL(READELF, readelf)
|
||||||
# This m4 will only be used if a system copy cannot be found. This is helpful
|
AC_PATH_TOOL(CPPFILT, c++filt)
|
||||||
# on systems where autotools are installed but the pkg-config macros are not in
|
|
||||||
# a default location. It is currently used for building on OSX where autotools
|
|
||||||
# are preinstalled but pkg-config comes from macports or homebrew. It should
|
|
||||||
# probably be removed when building on <= 10.6 is no longer supported.
|
|
||||||
m4_include([pkg.m4])
|
|
||||||
|
|
||||||
dnl pkg-config check.
|
dnl pkg-config check.
|
||||||
PKG_PROG_PKG_CONFIG
|
PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
# Enable wallet
|
# Enable wallet
|
||||||
AC_ARG_ENABLE([wallet],
|
AC_ARG_ENABLE([wallet],
|
||||||
[AS_HELP_STRING([--enable-wallet],
|
[AS_HELP_STRING([--disable-wallet],
|
||||||
[enable wallet (default is yes)])],
|
[disable wallet (enabled by default)])],
|
||||||
[enable_wallet=$enableval],
|
[enable_wallet=$enableval],
|
||||||
[enable_wallet=yes])
|
[enable_wallet=yes])
|
||||||
|
|
||||||
@ -94,10 +90,15 @@ AC_ARG_ENABLE([upnp-default],
|
|||||||
[use_upnp_default=no])
|
[use_upnp_default=no])
|
||||||
|
|
||||||
AC_ARG_ENABLE(tests,
|
AC_ARG_ENABLE(tests,
|
||||||
AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
|
AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
|
||||||
[use_tests=$enableval],
|
[use_tests=$enableval],
|
||||||
[use_tests=yes])
|
[use_tests=yes])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(bench,
|
||||||
|
AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
|
||||||
|
[use_bench=$enableval],
|
||||||
|
[use_bench=yes])
|
||||||
|
|
||||||
AC_ARG_WITH([comparison-tool],
|
AC_ARG_WITH([comparison-tool],
|
||||||
AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
|
AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
|
||||||
[use_comparison_tool=$withval],
|
[use_comparison_tool=$withval],
|
||||||
@ -108,6 +109,11 @@ AC_ARG_ENABLE([comparison-tool-reorg-tests],
|
|||||||
[use_comparison_tool_reorg_tests=$enableval],
|
[use_comparison_tool_reorg_tests=$enableval],
|
||||||
[use_comparison_tool_reorg_tests=no])
|
[use_comparison_tool_reorg_tests=no])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([extended-rpc-tests],
|
||||||
|
AS_HELP_STRING([--enable-extended-rpc-tests],[enable expensive RPC tests when using lcov (default no)]),
|
||||||
|
[use_extended_rpc_tests=$enableval],
|
||||||
|
[use_extended_rpc_tests=no])
|
||||||
|
|
||||||
AC_ARG_WITH([qrencode],
|
AC_ARG_WITH([qrencode],
|
||||||
[AS_HELP_STRING([--with-qrencode],
|
[AS_HELP_STRING([--with-qrencode],
|
||||||
[enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
|
[enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
|
||||||
@ -115,20 +121,20 @@ AC_ARG_WITH([qrencode],
|
|||||||
[use_qr=auto])
|
[use_qr=auto])
|
||||||
|
|
||||||
AC_ARG_ENABLE([hardening],
|
AC_ARG_ENABLE([hardening],
|
||||||
[AS_HELP_STRING([--enable-hardening],
|
[AS_HELP_STRING([--disable-hardening],
|
||||||
[attempt to harden the resulting executables (default is yes)])],
|
[do not attempt to harden the resulting executables (default is to harden)])],
|
||||||
[use_hardening=$enableval],
|
[use_hardening=$enableval],
|
||||||
[use_hardening=yes])
|
[use_hardening=yes])
|
||||||
|
|
||||||
AC_ARG_ENABLE([reduce-exports],
|
AC_ARG_ENABLE([reduce-exports],
|
||||||
[AS_HELP_STRING([--enable-reduce-exports],
|
[AS_HELP_STRING([--enable-reduce-exports],
|
||||||
[attempt to reduce exported symbols in the resulting executables (default is yes)])],
|
[attempt to reduce exported symbols in the resulting executables (default is no)])],
|
||||||
[use_reduce_exports=$enableval],
|
[use_reduce_exports=$enableval],
|
||||||
[use_reduce_exports=auto])
|
[use_reduce_exports=no])
|
||||||
|
|
||||||
AC_ARG_ENABLE([ccache],
|
AC_ARG_ENABLE([ccache],
|
||||||
[AS_HELP_STRING([--enable-ccache],
|
[AS_HELP_STRING([--disable-ccache],
|
||||||
[use ccache for building (default is yes if ccache is found)])],
|
[do not use ccache for building (default is to use if found)])],
|
||||||
[use_ccache=$enableval],
|
[use_ccache=$enableval],
|
||||||
[use_ccache=auto])
|
[use_ccache=auto])
|
||||||
|
|
||||||
@ -140,10 +146,16 @@ AC_ARG_ENABLE([lcov],
|
|||||||
|
|
||||||
AC_ARG_ENABLE([glibc-back-compat],
|
AC_ARG_ENABLE([glibc-back-compat],
|
||||||
[AS_HELP_STRING([--enable-glibc-back-compat],
|
[AS_HELP_STRING([--enable-glibc-back-compat],
|
||||||
[enable backwards compatibility with glibc and libstdc++])],
|
[enable backwards compatibility with glibc])],
|
||||||
[use_glibc_compat=$enableval],
|
[use_glibc_compat=$enableval],
|
||||||
[use_glibc_compat=no])
|
[use_glibc_compat=no])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([zmq],
|
||||||
|
[AS_HELP_STRING([--disable-zmq],
|
||||||
|
[disable ZMQ notifications])],
|
||||||
|
[use_zmq=$enableval],
|
||||||
|
[use_zmq=yes])
|
||||||
|
|
||||||
AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
|
AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
|
||||||
|
|
||||||
# Enable debug
|
# Enable debug
|
||||||
@ -154,12 +166,13 @@ AC_ARG_ENABLE([debug],
|
|||||||
[enable_debug=no])
|
[enable_debug=no])
|
||||||
|
|
||||||
if test "x$enable_debug" = xyes; then
|
if test "x$enable_debug" = xyes; then
|
||||||
|
CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
|
||||||
if test "x$GCC" = xyes; then
|
if test "x$GCC" = xyes; then
|
||||||
CFLAGS="-g3 -O0 -DDEBUG"
|
CFLAGS="$CFLAGS -g3 -O0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$GXX" = xyes; then
|
if test "x$GXX" = xyes; then
|
||||||
CXXFLAGS="-g3 -O0 -DDEBUG"
|
CXXFLAGS="$CXXFLAGS -g3 -O0"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -167,9 +180,9 @@ fi
|
|||||||
## compatibility with the legacy buildsystem.
|
## compatibility with the legacy buildsystem.
|
||||||
##
|
##
|
||||||
if test "x$CXXFLAGS_overridden" = "xno"; then
|
if test "x$CXXFLAGS_overridden" = "xno"; then
|
||||||
CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter"
|
CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-self-assign"
|
||||||
fi
|
fi
|
||||||
CPPFLAGS="$CPPFLAGS -DBOOST_SPIRIT_THREADSAFE -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
|
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],
|
||||||
@ -315,6 +328,7 @@ case $host in
|
|||||||
|
|
||||||
AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
|
AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
|
||||||
CPPFLAGS="$CPPFLAGS -DMAC_OSX"
|
CPPFLAGS="$CPPFLAGS -DMAC_OSX"
|
||||||
|
OBJCXXFLAGS="$CXXFLAGS"
|
||||||
;;
|
;;
|
||||||
*linux*)
|
*linux*)
|
||||||
TARGET_OS=linux
|
TARGET_OS=linux
|
||||||
@ -336,6 +350,10 @@ else
|
|||||||
AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
|
AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$use_extended_rpc_tests != xno; then
|
||||||
|
AC_SUBST(EXTENDED_RPC_TESTS, -extended)
|
||||||
|
fi
|
||||||
|
|
||||||
if test x$use_lcov = xyes; then
|
if test x$use_lcov = xyes; then
|
||||||
if test x$LCOV = x; then
|
if test x$LCOV = x; then
|
||||||
AC_MSG_ERROR("lcov testing requested but lcov not found")
|
AC_MSG_ERROR("lcov testing requested but lcov not found")
|
||||||
@ -346,6 +364,9 @@ if test x$use_lcov = xyes; then
|
|||||||
if test x$JAVA = x; then
|
if test x$JAVA = x; then
|
||||||
AC_MSG_ERROR("lcov testing requested but java not found")
|
AC_MSG_ERROR("lcov testing requested but java not found")
|
||||||
fi
|
fi
|
||||||
|
if test x$PYTHON = x; then
|
||||||
|
AC_MSG_ERROR("lcov testing requested but python not found")
|
||||||
|
fi
|
||||||
if test x$GENHTML = x; then
|
if test x$GENHTML = x; then
|
||||||
AC_MSG_ERROR("lcov testing requested but genhtml not found")
|
AC_MSG_ERROR("lcov testing requested but genhtml not found")
|
||||||
fi
|
fi
|
||||||
@ -357,8 +378,8 @@ if test x$use_lcov = xyes; then
|
|||||||
[AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
|
[AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Require little endian
|
dnl Check for endianness
|
||||||
AC_C_BIGENDIAN([AC_MSG_ERROR("Big Endian not supported")])
|
AC_C_BIGENDIAN
|
||||||
|
|
||||||
dnl Check for pthread compile/link requirements
|
dnl Check for pthread compile/link requirements
|
||||||
AX_PTHREAD
|
AX_PTHREAD
|
||||||
@ -390,6 +411,10 @@ AX_GCC_FUNC_ATTRIBUTE([dllimport])
|
|||||||
|
|
||||||
if test x$use_glibc_compat != xno; then
|
if test x$use_glibc_compat != xno; then
|
||||||
|
|
||||||
|
#glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
|
||||||
|
#in anyway for back-compat.
|
||||||
|
AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
|
||||||
|
|
||||||
#__fdelt_chk's params and return type have changed from long unsigned int to long int.
|
#__fdelt_chk's params and return type have changed from long unsigned int to long int.
|
||||||
# See which one is present here.
|
# See which one is present here.
|
||||||
AC_MSG_CHECKING(__fdelt_chk type)
|
AC_MSG_CHECKING(__fdelt_chk type)
|
||||||
@ -403,7 +428,13 @@ if test x$use_glibc_compat != xno; then
|
|||||||
[ fdelt_type="long int"])
|
[ fdelt_type="long int"])
|
||||||
AC_MSG_RESULT($fdelt_type)
|
AC_MSG_RESULT($fdelt_type)
|
||||||
AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
|
AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
|
||||||
|
else
|
||||||
|
AC_SEARCH_LIBS([clock_gettime],[rt])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$TARGET_OS != xwindows; then
|
||||||
|
# All windows code is PIC, forcing it on just adds useless compile warnings
|
||||||
|
AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$use_hardening != xno; then
|
if test x$use_hardening != xno; then
|
||||||
@ -423,8 +454,7 @@ if test x$use_hardening != xno; then
|
|||||||
AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
|
AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
|
||||||
|
|
||||||
if test x$TARGET_OS != xwindows; then
|
if test x$TARGET_OS != xwindows; then
|
||||||
# All windows code is PIC, forcing it on just adds useless compile warnings
|
AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
|
||||||
AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"])
|
|
||||||
AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
|
AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -433,11 +463,6 @@ if test x$use_hardening != xno; then
|
|||||||
AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
|
AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CXXFLAGS="$CXXFLAGS $HARDENED_CXXFLAGS"
|
|
||||||
CPPFLAGS="$CPPFLAGS $HARDENED_CPPFLAGS"
|
|
||||||
LDFLAGS="$LDFLAGS $HARDENED_LDFLAGS"
|
|
||||||
OBJCXXFLAGS="$CXXFLAGS"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
|
dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
|
||||||
@ -445,15 +470,22 @@ if test x$TARGET_OS = xdarwin; then
|
|||||||
AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
|
AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CHECK_HEADERS([endian.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/stat.h sys/select.h sys/prctl.h])
|
AC_CHECK_HEADERS([endian.h sys/endian.h byteswap.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/stat.h sys/select.h sys/prctl.h])
|
||||||
AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
|
AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
|
||||||
AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
|
AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
|
||||||
|
|
||||||
AC_CHECK_DECLS([strnlen])
|
AC_CHECK_DECLS([strnlen])
|
||||||
|
|
||||||
AC_CHECK_DECLS([le32toh, le64toh, htole32, htole64, be32toh, be64toh, htobe32, htobe64],,,
|
AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
|
||||||
[#if HAVE_ENDIAN_H
|
[#if HAVE_ENDIAN_H
|
||||||
#include <endian.h>
|
#include <endian.h>
|
||||||
|
#elif HAVE_SYS_ENDIAN_H
|
||||||
|
#include <sys/endian.h>
|
||||||
|
#endif])
|
||||||
|
|
||||||
|
AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
|
||||||
|
[#if HAVE_BYTESWAP_H
|
||||||
|
#include <byteswap.h>
|
||||||
#endif])
|
#endif])
|
||||||
|
|
||||||
dnl Check for MSG_NOSIGNAL
|
dnl Check for MSG_NOSIGNAL
|
||||||
@ -464,8 +496,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
|
|||||||
[ AC_MSG_RESULT(no)]
|
[ AC_MSG_RESULT(no)]
|
||||||
)
|
)
|
||||||
|
|
||||||
AC_SEARCH_LIBS([clock_gettime],[rt])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for visibility attribute])
|
AC_MSG_CHECKING([for visibility attribute])
|
||||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||||
int foo_def( void ) __attribute__((visibility("default")));
|
int foo_def( void ) __attribute__((visibility("default")));
|
||||||
@ -478,22 +508,14 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([
|
|||||||
[
|
[
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
if test x$use_reduce_exports = xyes; then
|
if test x$use_reduce_exports = xyes; then
|
||||||
AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduced-exports.])
|
AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
|
||||||
fi
|
fi
|
||||||
AC_MSG_WARN([Cannot find a working visibility attribute. Disabling reduced exports.])
|
|
||||||
use_reduce_exports=no
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
if test x$use_reduce_exports != xno; then
|
if test x$use_reduce_exports = xyes; then
|
||||||
AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
|
AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
|
||||||
[
|
[AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
|
||||||
if test x$use_reduce_exports = xyes; then
|
|
||||||
AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduced-exports.])
|
|
||||||
fi
|
|
||||||
AC_MSG_WARN([Cannot set default symbol visibility. Disabling reduced exports.])
|
|
||||||
use_reduce_exports=no
|
|
||||||
])
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
LEVELDB_CPPFLAGS=
|
LEVELDB_CPPFLAGS=
|
||||||
@ -521,7 +543,7 @@ fi
|
|||||||
BITCOIN_QT_INIT
|
BITCOIN_QT_INIT
|
||||||
|
|
||||||
dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
|
dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
|
||||||
BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt4])
|
BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
|
||||||
|
|
||||||
if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
|
if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
|
||||||
use_boost=no
|
use_boost=no
|
||||||
@ -540,7 +562,7 @@ AX_BOOST_THREAD
|
|||||||
AX_BOOST_CHRONO
|
AX_BOOST_CHRONO
|
||||||
|
|
||||||
|
|
||||||
if test x$use_reduce_exports != xno; then
|
if test x$use_reduce_exports = xyes; then
|
||||||
AC_MSG_CHECKING([for working boost reduced exports])
|
AC_MSG_CHECKING([for working boost reduced exports])
|
||||||
TEMP_CPPFLAGS="$CPPFLAGS"
|
TEMP_CPPFLAGS="$CPPFLAGS"
|
||||||
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
|
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
|
||||||
@ -554,25 +576,14 @@ if test x$use_reduce_exports != xno; then
|
|||||||
#endif
|
#endif
|
||||||
]])],[
|
]])],[
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
],[:
|
],[
|
||||||
if test x$use_reduce_exports = xauto; then
|
AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
|
||||||
use_reduce_exports=no
|
|
||||||
else
|
|
||||||
if test x$use_reduce_exports = xyes; then
|
|
||||||
AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduced-exports.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_MSG_WARN([boost versions < 1.49 are known to have symbol visibility issues. Disabling reduced exports.])
|
|
||||||
])
|
])
|
||||||
CPPFLAGS="$TEMP_CPPFLAGS"
|
CPPFLAGS="$TEMP_CPPFLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif test x$use_reduce_exports = xauto; then
|
|
||||||
use_reduce_exports=yes
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$use_reduce_exports != xno; then
|
if test x$use_reduce_exports = xyes; then
|
||||||
CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
|
CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
|
||||||
AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
|
AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
|
||||||
fi
|
fi
|
||||||
@ -611,17 +622,15 @@ 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_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
|
||||||
|
|
||||||
dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
|
dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
|
||||||
dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
|
dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
|
||||||
dnl a working version is available, else fall back to sleep. sleep was removed
|
dnl a working version is available, else fall back to sleep. sleep was removed
|
||||||
dnl after 1.56.
|
dnl after 1.56.
|
||||||
dnl If neither is available, abort.
|
dnl If neither is available, abort.
|
||||||
dnl If sleep_for is used, boost_chrono becomes a requirement.
|
|
||||||
if test x$ax_cv_boost_chrono = xyes; then
|
|
||||||
TEMP_LIBS="$LIBS"
|
TEMP_LIBS="$LIBS"
|
||||||
LIBS="$BOOST_LIBS $BOOST_CHRONO_LIB $LIBS"
|
LIBS="$BOOST_LIBS $LIBS"
|
||||||
TEMP_CPPFLAGS="$CPPFLAGS"
|
TEMP_CPPFLAGS="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
@ -634,12 +643,11 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|||||||
choke me
|
choke me
|
||||||
#endif
|
#endif
|
||||||
]])],
|
]])],
|
||||||
[boost_sleep=yes; BOOST_LIBS="$BOOST_LIBS $BOOST_CHRONO_LIB";
|
[boost_sleep=yes;
|
||||||
AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
|
AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
|
||||||
[boost_sleep=no])
|
[boost_sleep=no])
|
||||||
LIBS="$TEMP_LIBS"
|
LIBS="$TEMP_LIBS"
|
||||||
CPPFLAGS="$TEMP_CPPFLAGS"
|
CPPFLAGS="$TEMP_CPPFLAGS"
|
||||||
fi
|
|
||||||
|
|
||||||
if test x$boost_sleep != xyes; then
|
if test x$boost_sleep != xyes; then
|
||||||
TEMP_LIBS="$LIBS"
|
TEMP_LIBS="$LIBS"
|
||||||
@ -685,6 +693,22 @@ if test x$use_pkgconfig = xyes; then
|
|||||||
if test x$use_qr != xno; then
|
if test x$use_qr != xno; then
|
||||||
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
|
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
|
||||||
fi
|
fi
|
||||||
|
if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
|
||||||
|
PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
|
||||||
|
if test x$TARGET_OS != xwindows; then
|
||||||
|
PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$use_zmq" = "xyes"; then
|
||||||
|
PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
|
||||||
|
[AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
|
||||||
|
[AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
|
||||||
|
AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
|
||||||
|
use_zmq=no])
|
||||||
|
else
|
||||||
|
AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
|
||||||
|
fi
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
@ -694,6 +718,28 @@ else
|
|||||||
AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
|
AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
|
||||||
AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
|
AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
|
||||||
|
|
||||||
|
if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
|
||||||
|
AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
|
||||||
|
AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
|
||||||
|
if test x$TARGET_OS != xwindows; then
|
||||||
|
AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$use_zmq" = "xyes"; then
|
||||||
|
AC_CHECK_HEADER([zmq.h],
|
||||||
|
[AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
|
||||||
|
[AC_MSG_WARN([zmq.h not found, disabling zmq support])
|
||||||
|
use_zmq=no
|
||||||
|
AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
|
||||||
|
AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
|
||||||
|
[AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
|
||||||
|
use_zmq=no
|
||||||
|
AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
|
||||||
|
else
|
||||||
|
AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
|
||||||
|
fi
|
||||||
|
|
||||||
BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
|
BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
|
||||||
if test x$use_qr != xno; then
|
if test x$use_qr != xno; then
|
||||||
BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
|
BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
|
||||||
@ -701,35 +747,12 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CHECK_LIB([crypto],[RAND_egd],[],[
|
CXXFLAGS_TEMP="$CXXFLAGS"
|
||||||
AC_ARG_WITH([libressl],
|
|
||||||
[AS_HELP_STRING([--with-libressl],[Build with system LibreSSL (default is no; DANGEROUS; NOT SUPPORTED)])],
|
|
||||||
[AC_MSG_WARN([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])],
|
|
||||||
[AC_MSG_ERROR([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])]
|
|
||||||
)
|
|
||||||
])
|
|
||||||
|
|
||||||
CFLAGS_TEMP="$CFLAGS"
|
|
||||||
LIBS_TEMP="$LIBS"
|
LIBS_TEMP="$LIBS"
|
||||||
CFLAGS="$CFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
|
CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
|
||||||
LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS"
|
LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS"
|
||||||
AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
|
AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
|
||||||
|
CXXFLAGS="$CXXFLAGS_TEMP"
|
||||||
AC_MSG_CHECKING(for a supported OpenSSL version)
|
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
||||||
#include <openssl/rand.h>
|
|
||||||
]],
|
|
||||||
[[RAND_egd(NULL);]])],
|
|
||||||
[AC_MSG_RESULT(yes)],
|
|
||||||
[
|
|
||||||
AC_ARG_WITH([libressl],
|
|
||||||
[AS_HELP_STRING([--with-libressl],[Build with system LibreSSL (default is no; DANGEROUS; NOT SUPPORTED)])],
|
|
||||||
[AC_MSG_WARN([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])],
|
|
||||||
[AC_MSG_ERROR([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])]
|
|
||||||
)]
|
|
||||||
)
|
|
||||||
|
|
||||||
CFLAGS="$CFLAGS_TEMP"
|
|
||||||
LIBS="$LIBS_TEMP"
|
LIBS="$LIBS_TEMP"
|
||||||
|
|
||||||
BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
|
BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
|
||||||
@ -746,6 +769,7 @@ AC_MSG_CHECKING([whether to build libraries])
|
|||||||
AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
|
AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
|
||||||
if test x$build_bitcoin_libs = xyes; then
|
if test x$build_bitcoin_libs = xyes; then
|
||||||
AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
|
AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
|
||||||
|
AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT($build_bitcoin_libs)
|
AC_MSG_RESULT($build_bitcoin_libs)
|
||||||
|
|
||||||
@ -847,6 +871,8 @@ if test x$bitcoin_enable_qt != xno; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build test_dash])
|
AC_MSG_CHECKING([whether to build test_dash])
|
||||||
if test x$use_tests = xyes; then
|
if test x$use_tests = xyes; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
@ -856,7 +882,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to reduce exports])
|
AC_MSG_CHECKING([whether to reduce exports])
|
||||||
if test x$use_reduce_exports != xno; then
|
if test x$use_reduce_exports = xyes; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
@ -873,12 +899,13 @@ AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
|
|||||||
AM_CONDITIONAL([ENABLE_TESTS],[test x$use_tests = xyes])
|
AM_CONDITIONAL([ENABLE_TESTS],[test x$use_tests = xyes])
|
||||||
AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
|
AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
|
||||||
AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$use_tests$bitcoin_enable_qt_test = xyesyes])
|
AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$use_tests$bitcoin_enable_qt_test = xyesyes])
|
||||||
|
AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
|
||||||
AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
|
AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
|
||||||
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
|
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
|
||||||
AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
|
AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
|
||||||
AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
|
AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
|
||||||
AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
|
AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
|
||||||
AM_CONDITIONAL([USE_LIBSECP256K1],[test x$use_libsecp256k1 = xyes])
|
AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
|
||||||
|
|
||||||
AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
|
AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
|
||||||
AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
|
AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
|
||||||
@ -894,6 +921,11 @@ AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
|
|||||||
AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
|
AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
|
||||||
|
|
||||||
AC_SUBST(RELDFLAGS)
|
AC_SUBST(RELDFLAGS)
|
||||||
|
AC_SUBST(HARDENED_CXXFLAGS)
|
||||||
|
AC_SUBST(HARDENED_CPPFLAGS)
|
||||||
|
AC_SUBST(HARDENED_LDFLAGS)
|
||||||
|
AC_SUBST(PIC_FLAGS)
|
||||||
|
AC_SUBST(PIE_FLAGS)
|
||||||
AC_SUBST(LIBTOOL_APP_LDFLAGS)
|
AC_SUBST(LIBTOOL_APP_LDFLAGS)
|
||||||
AC_SUBST(USE_UPNP)
|
AC_SUBST(USE_UPNP)
|
||||||
AC_SUBST(USE_QRCODE)
|
AC_SUBST(USE_QRCODE)
|
||||||
@ -907,7 +939,7 @@ AC_SUBST(MINIUPNPC_CPPFLAGS)
|
|||||||
AC_SUBST(MINIUPNPC_LIBS)
|
AC_SUBST(MINIUPNPC_LIBS)
|
||||||
AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
|
AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
|
||||||
AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
|
AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
|
||||||
AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
|
AC_CONFIG_FILES([qa/pull-tester/tests_config.py],[chmod +x qa/pull-tester/tests_config.py])
|
||||||
|
|
||||||
dnl boost's m4 checks do something really nasty: they export these vars. As a
|
dnl boost's m4 checks do something really nasty: they export these vars. As a
|
||||||
dnl result, they leak into secp256k1's configure and crazy things happen.
|
dnl result, they leak into secp256k1's configure and crazy things happen.
|
||||||
@ -932,8 +964,8 @@ PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
|
|||||||
unset PKG_CONFIG_LIBDIR
|
unset PKG_CONFIG_LIBDIR
|
||||||
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
|
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
|
||||||
|
|
||||||
ac_configure_args="${ac_configure_args} --disable-shared --with-pic"
|
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
|
||||||
AC_CONFIG_SUBDIRS([src/secp256k1])
|
AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue])
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
@ -947,3 +979,11 @@ case $host in
|
|||||||
chmod 755 libtool
|
chmod 755 libtool
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
|
||||||
|
case ${OS} in
|
||||||
|
*Windows*)
|
||||||
|
sed 's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/' qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py
|
||||||
|
mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
Wallet Tools
|
Wallet Tools
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
### [BitRPC](/contrib/bitrpc) ###
|
|
||||||
Allows for sending of all standard Bitcoin commands via RPC rather than as command line args.
|
|
||||||
|
|
||||||
### [SpendFrom](/contrib/spendfrom) ###
|
### [SpendFrom](/contrib/spendfrom) ###
|
||||||
|
|
||||||
Use the raw transactions API to send coins received on a particular
|
Use the raw transactions API to send coins received on a particular
|
||||||
@ -16,6 +13,9 @@ Repository Tools
|
|||||||
Specific tools for developers working on this repository.
|
Specific tools for developers working on this repository.
|
||||||
Contains the script `github-merge.sh` for merging github pull requests securely and signing them using GPG.
|
Contains the script `github-merge.sh` for merging github pull requests securely and signing them using GPG.
|
||||||
|
|
||||||
|
### [Verify-Commits](/contrib/verify-commits) ###
|
||||||
|
Tool to verify that every merge commit was signed by a developer using the above `github-merge.sh` script.
|
||||||
|
|
||||||
### [Linearize](/contrib/linearize) ###
|
### [Linearize](/contrib/linearize) ###
|
||||||
Construct a linear, no-fork, best version of the blockchain.
|
Construct a linear, no-fork, best version of the blockchain.
|
||||||
|
|
||||||
|
21
contrib/bitcoin-qt.pro
Normal file
21
contrib/bitcoin-qt.pro
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
FORMS += \
|
||||||
|
../src/qt/forms/aboutdialog.ui \
|
||||||
|
../src/qt/forms/addressbookpage.ui \
|
||||||
|
../src/qt/forms/askpassphrasedialog.ui \
|
||||||
|
../src/qt/forms/coincontroldialog.ui \
|
||||||
|
../src/qt/forms/editaddressdialog.ui \
|
||||||
|
../src/qt/forms/helpmessagedialog.ui \
|
||||||
|
../src/qt/forms/intro.ui \
|
||||||
|
../src/qt/forms/openuridialog.ui \
|
||||||
|
../src/qt/forms/optionsdialog.ui \
|
||||||
|
../src/qt/forms/overviewpage.ui \
|
||||||
|
../src/qt/forms/receivecoinsdialog.ui \
|
||||||
|
../src/qt/forms/receiverequestdialog.ui \
|
||||||
|
../src/qt/forms/debugwindow.ui \
|
||||||
|
../src/qt/forms/sendcoinsdialog.ui \
|
||||||
|
../src/qt/forms/sendcoinsentry.ui \
|
||||||
|
../src/qt/forms/signverifymessagedialog.ui \
|
||||||
|
../src/qt/forms/transactiondescdialog.ui \
|
||||||
|
|
||||||
|
RESOURCES += \
|
||||||
|
../src/qt/bitcoin.qrc
|
@ -1,8 +0,0 @@
|
|||||||
### BitRPC
|
|
||||||
Allows for sending of all standard Bitcoin commands via RPC rather than as command line args.
|
|
||||||
|
|
||||||
### Looking for Wallet Tools?
|
|
||||||
BitRPC.py is able to do the exact same thing as `walletchangepass.py` and `walletunlock.py`. Their respective commands in BitRPC.py are:
|
|
||||||
|
|
||||||
bitrpc.py walletpassphrasechange
|
|
||||||
bitrpc.py walletpassphrase
|
|
@ -1,337 +0,0 @@
|
|||||||
from jsonrpc import ServiceProxy
|
|
||||||
import sys
|
|
||||||
import string
|
|
||||||
import getpass
|
|
||||||
|
|
||||||
# ===== BEGIN USER SETTINGS =====
|
|
||||||
# if you do not set these you will be prompted for a password for every command
|
|
||||||
rpcuser = ""
|
|
||||||
rpcpass = ""
|
|
||||||
# ====== END USER SETTINGS ======
|
|
||||||
|
|
||||||
|
|
||||||
if rpcpass == "":
|
|
||||||
access = ServiceProxy("http://127.0.0.1:9998")
|
|
||||||
else:
|
|
||||||
access = ServiceProxy("http://"+rpcuser+":"+rpcpass+"@127.0.0.1:9998")
|
|
||||||
cmd = sys.argv[1].lower()
|
|
||||||
|
|
||||||
if cmd == "backupwallet":
|
|
||||||
try:
|
|
||||||
path = raw_input("Enter destination path/filename: ")
|
|
||||||
print access.backupwallet(path)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "encryptwallet":
|
|
||||||
try:
|
|
||||||
pwd = getpass.getpass(prompt="Enter passphrase: ")
|
|
||||||
pwd2 = getpass.getpass(prompt="Repeat passphrase: ")
|
|
||||||
if pwd == pwd2:
|
|
||||||
access.encryptwallet(pwd)
|
|
||||||
print "\n---Wallet encrypted. Server stopping, restart to run with encrypted wallet---\n"
|
|
||||||
else:
|
|
||||||
print "\n---Passphrases do not match---\n"
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getaccount":
|
|
||||||
try:
|
|
||||||
addr = raw_input("Enter a Bitcoin address: ")
|
|
||||||
print access.getaccount(addr)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getaccountaddress":
|
|
||||||
try:
|
|
||||||
acct = raw_input("Enter an account name: ")
|
|
||||||
print access.getaccountaddress(acct)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getaddressesbyaccount":
|
|
||||||
try:
|
|
||||||
acct = raw_input("Enter an account name: ")
|
|
||||||
print access.getaddressesbyaccount(acct)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getbalance":
|
|
||||||
try:
|
|
||||||
acct = raw_input("Enter an account (optional): ")
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
try:
|
|
||||||
print access.getbalance(acct, mc)
|
|
||||||
except:
|
|
||||||
print access.getbalance()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getblockbycount":
|
|
||||||
try:
|
|
||||||
height = raw_input("Height: ")
|
|
||||||
print access.getblockbycount(height)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getblockcount":
|
|
||||||
try:
|
|
||||||
print access.getblockcount()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getblocknumber":
|
|
||||||
try:
|
|
||||||
print access.getblocknumber()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getconnectioncount":
|
|
||||||
try:
|
|
||||||
print access.getconnectioncount()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getdifficulty":
|
|
||||||
try:
|
|
||||||
print access.getdifficulty()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getgenerate":
|
|
||||||
try:
|
|
||||||
print access.getgenerate()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "gethashespersec":
|
|
||||||
try:
|
|
||||||
print access.gethashespersec()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getinfo":
|
|
||||||
try:
|
|
||||||
print access.getinfo()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getnewaddress":
|
|
||||||
try:
|
|
||||||
acct = raw_input("Enter an account name: ")
|
|
||||||
try:
|
|
||||||
print access.getnewaddress(acct)
|
|
||||||
except:
|
|
||||||
print access.getnewaddress()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getreceivedbyaccount":
|
|
||||||
try:
|
|
||||||
acct = raw_input("Enter an account (optional): ")
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
try:
|
|
||||||
print access.getreceivedbyaccount(acct, mc)
|
|
||||||
except:
|
|
||||||
print access.getreceivedbyaccount()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getreceivedbyaddress":
|
|
||||||
try:
|
|
||||||
addr = raw_input("Enter a Bitcoin address (optional): ")
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
try:
|
|
||||||
print access.getreceivedbyaddress(addr, mc)
|
|
||||||
except:
|
|
||||||
print access.getreceivedbyaddress()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "gettransaction":
|
|
||||||
try:
|
|
||||||
txid = raw_input("Enter a transaction ID: ")
|
|
||||||
print access.gettransaction(txid)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "getwork":
|
|
||||||
try:
|
|
||||||
data = raw_input("Data (optional): ")
|
|
||||||
try:
|
|
||||||
print access.gettransaction(data)
|
|
||||||
except:
|
|
||||||
print access.gettransaction()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "help":
|
|
||||||
try:
|
|
||||||
cmd = raw_input("Command (optional): ")
|
|
||||||
try:
|
|
||||||
print access.help(cmd)
|
|
||||||
except:
|
|
||||||
print access.help()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "listaccounts":
|
|
||||||
try:
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
try:
|
|
||||||
print access.listaccounts(mc)
|
|
||||||
except:
|
|
||||||
print access.listaccounts()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "listreceivedbyaccount":
|
|
||||||
try:
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
incemp = raw_input("Include empty? (true/false, optional): ")
|
|
||||||
try:
|
|
||||||
print access.listreceivedbyaccount(mc, incemp)
|
|
||||||
except:
|
|
||||||
print access.listreceivedbyaccount()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "listreceivedbyaddress":
|
|
||||||
try:
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
incemp = raw_input("Include empty? (true/false, optional): ")
|
|
||||||
try:
|
|
||||||
print access.listreceivedbyaddress(mc, incemp)
|
|
||||||
except:
|
|
||||||
print access.listreceivedbyaddress()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "listtransactions":
|
|
||||||
try:
|
|
||||||
acct = raw_input("Account (optional): ")
|
|
||||||
count = raw_input("Number of transactions (optional): ")
|
|
||||||
frm = raw_input("Skip (optional):")
|
|
||||||
try:
|
|
||||||
print access.listtransactions(acct, count, frm)
|
|
||||||
except:
|
|
||||||
print access.listtransactions()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "move":
|
|
||||||
try:
|
|
||||||
frm = raw_input("From: ")
|
|
||||||
to = raw_input("To: ")
|
|
||||||
amt = raw_input("Amount:")
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
comment = raw_input("Comment (optional): ")
|
|
||||||
try:
|
|
||||||
print access.move(frm, to, amt, mc, comment)
|
|
||||||
except:
|
|
||||||
print access.move(frm, to, amt)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "sendfrom":
|
|
||||||
try:
|
|
||||||
frm = raw_input("From: ")
|
|
||||||
to = raw_input("To: ")
|
|
||||||
amt = raw_input("Amount:")
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
comment = raw_input("Comment (optional): ")
|
|
||||||
commentto = raw_input("Comment-to (optional): ")
|
|
||||||
try:
|
|
||||||
print access.sendfrom(frm, to, amt, mc, comment, commentto)
|
|
||||||
except:
|
|
||||||
print access.sendfrom(frm, to, amt)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "sendmany":
|
|
||||||
try:
|
|
||||||
frm = raw_input("From: ")
|
|
||||||
to = raw_input("To (in format address1:amount1,address2:amount2,...): ")
|
|
||||||
mc = raw_input("Minimum confirmations (optional): ")
|
|
||||||
comment = raw_input("Comment (optional): ")
|
|
||||||
try:
|
|
||||||
print access.sendmany(frm,to,mc,comment)
|
|
||||||
except:
|
|
||||||
print access.sendmany(frm,to)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "sendtoaddress":
|
|
||||||
try:
|
|
||||||
to = raw_input("To (in format address1:amount1,address2:amount2,...): ")
|
|
||||||
amt = raw_input("Amount:")
|
|
||||||
comment = raw_input("Comment (optional): ")
|
|
||||||
commentto = raw_input("Comment-to (optional): ")
|
|
||||||
try:
|
|
||||||
print access.sendtoaddress(to,amt,comment,commentto)
|
|
||||||
except:
|
|
||||||
print access.sendtoaddress(to,amt)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "setaccount":
|
|
||||||
try:
|
|
||||||
addr = raw_input("Address: ")
|
|
||||||
acct = raw_input("Account:")
|
|
||||||
print access.setaccount(addr,acct)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "setgenerate":
|
|
||||||
try:
|
|
||||||
gen= raw_input("Generate? (true/false): ")
|
|
||||||
cpus = raw_input("Max processors/cores (-1 for unlimited, optional):")
|
|
||||||
try:
|
|
||||||
print access.setgenerate(gen, cpus)
|
|
||||||
except:
|
|
||||||
print access.setgenerate(gen)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "settxfee":
|
|
||||||
try:
|
|
||||||
amt = raw_input("Amount:")
|
|
||||||
print access.settxfee(amt)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "stop":
|
|
||||||
try:
|
|
||||||
print access.stop()
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "validateaddress":
|
|
||||||
try:
|
|
||||||
addr = raw_input("Address: ")
|
|
||||||
print access.validateaddress(addr)
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "walletpassphrase":
|
|
||||||
try:
|
|
||||||
pwd = getpass.getpass(prompt="Enter wallet passphrase: ")
|
|
||||||
access.walletpassphrase(pwd, 60)
|
|
||||||
print "\n---Wallet unlocked---\n"
|
|
||||||
except:
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
|
|
||||||
elif cmd == "walletpassphrasechange":
|
|
||||||
try:
|
|
||||||
pwd = getpass.getpass(prompt="Enter old wallet passphrase: ")
|
|
||||||
pwd2 = getpass.getpass(prompt="Enter new wallet passphrase: ")
|
|
||||||
access.walletpassphrasechange(pwd, pwd2)
|
|
||||||
print
|
|
||||||
print "\n---Passphrase changed---\n"
|
|
||||||
except:
|
|
||||||
print
|
|
||||||
print "\n---An error occurred---\n"
|
|
||||||
print
|
|
||||||
|
|
||||||
else:
|
|
||||||
print "Command not found or not supported"
|
|
@ -1,6 +1,6 @@
|
|||||||
# bash programmable completion for dashd(1) and dash-cli(1)
|
# bash programmable completion for dashd(1) and dash-cli(1)
|
||||||
# Copyright (c) 2012,2014 Christian von Roques <roques@mti.ag>
|
# Copyright (c) 2012,2014 Christian von Roques <roques@mti.ag>
|
||||||
# Distributed under the MIT/X11 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.
|
||||||
|
|
||||||
have dashd && {
|
have dashd && {
|
||||||
@ -96,7 +96,7 @@ _dashd() {
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
-conf=*|-pid=*|-loadblock=*|-wallet=*|-rpcsslcertificatechainfile=*|-rpcsslprivatekeyfile=*)
|
-conf=*|-pid=*|-loadblock=*|-wallet=*)
|
||||||
cur="${cur#*=}"
|
cur="${cur#*=}"
|
||||||
_filedir
|
_filedir
|
||||||
return 0
|
return 0
|
||||||
|
1
contrib/debian/bitcoin-tx.install
Normal file
1
contrib/debian/bitcoin-tx.install
Normal file
@ -0,0 +1 @@
|
|||||||
|
usr/local/bin/bitcoin-tx usr/bin
|
3
contrib/debian/bitcoind.manpages
Normal file
3
contrib/debian/bitcoind.manpages
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
debian/manpages/bitcoind.1
|
||||||
|
debian/manpages/bitcoin.conf.5
|
||||||
|
debian/manpages/bitcoin-cli.1
|
@ -1,3 +1,45 @@
|
|||||||
|
bitcoin (0.11.0-precise1) precise; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 14 Jul 2015 14:39:00 -1000
|
||||||
|
|
||||||
|
bitcoin (0.10.2-precise1) precise; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Mon, 29 Jun 2015 17:33:00 -1000
|
||||||
|
|
||||||
|
bitcoin (0.10.1-precise3) precise; urgency=medium
|
||||||
|
|
||||||
|
* Fix build dep (include python).
|
||||||
|
|
||||||
|
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 5 May 2015 09:28:00 -1000
|
||||||
|
|
||||||
|
bitcoin (0.10.1-precise2) precise; urgency=medium
|
||||||
|
|
||||||
|
* Fix miniupnpc dep.
|
||||||
|
|
||||||
|
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 5 May 2015 00:33:00 -1000
|
||||||
|
|
||||||
|
bitcoin (0.10.1-precise1) precise; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Tue, 5 May 2015 00:07:00 -1000
|
||||||
|
|
||||||
|
bitcoin (0.10.0-precise1) precise; urgency=medium
|
||||||
|
|
||||||
|
* New upstream releases.
|
||||||
|
|
||||||
|
-- Matt Corallo (BlueMatt) <matt@mattcorallo.com> Wed, 18 Feb 2015 13:22:00 -1000
|
||||||
|
|
||||||
|
bitcoin (0.9.4-precise1) precise; urgency=high
|
||||||
|
|
||||||
|
* New upstream releases.
|
||||||
|
|
||||||
|
-- Matt Corallo (laptop - only while traveling) <matt@mattcorallo.com> Mon, 12 Jan 2015 23:30:00 -1000
|
||||||
|
|
||||||
bitcoin (0.9.3-precise1) precise; urgency=medium
|
bitcoin (0.9.3-precise1) precise; urgency=medium
|
||||||
|
|
||||||
* New upstream releases.
|
* New upstream releases.
|
||||||
|
@ -12,7 +12,7 @@ Build-Depends: debhelper,
|
|||||||
libdb4.8++-dev,
|
libdb4.8++-dev,
|
||||||
libssl-dev,
|
libssl-dev,
|
||||||
pkg-config,
|
pkg-config,
|
||||||
libminiupnpc8-dev,
|
libminiupnpc8-dev | libminiupnpc-dev (>> 1.6),
|
||||||
libboost-filesystem-dev (>> 1.35) | libboost-filesystem1.35-dev,
|
libboost-filesystem-dev (>> 1.35) | libboost-filesystem1.35-dev,
|
||||||
libboost-program-options-dev (>> 1.35) | libboost-program-options1.35-dev,
|
libboost-program-options-dev (>> 1.35) | libboost-program-options1.35-dev,
|
||||||
libboost-thread-dev (>> 1.35) | libboost-thread1.35-dev,
|
libboost-thread-dev (>> 1.35) | libboost-thread1.35-dev,
|
||||||
@ -20,24 +20,22 @@ Build-Depends: debhelper,
|
|||||||
qt4-qmake,
|
qt4-qmake,
|
||||||
libqt4-dev,
|
libqt4-dev,
|
||||||
libqrencode-dev,
|
libqrencode-dev,
|
||||||
libprotobuf-dev, protobuf-compiler
|
libprotobuf-dev, protobuf-compiler,
|
||||||
|
python
|
||||||
Standards-Version: 3.9.2
|
Standards-Version: 3.9.2
|
||||||
Homepage: http://www.dash.org/
|
Homepage: https://www.dash.org/
|
||||||
Vcs-Git: git://github.com/dashpay/dash.git
|
Vcs-Git: git://github.com/dashpay/dash.git
|
||||||
Vcs-Browser: http://github.com/dashpay/dash
|
Vcs-Browser: https://github.com/dashpay/dash
|
||||||
|
|
||||||
Package: dashd
|
Package: dashd
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
Description: peer-to-peer network based digital currency - daemon
|
Description: peer-to-peer network based digital currency - daemon
|
||||||
Dash is a free open source peer-to-peer electronic cash system that
|
Dash is an experimental new digital currency that enables instant
|
||||||
is completely decentralized, without the need for a central server or
|
payments to anyone, anywhere in the world. Dash uses peer-to-peer
|
||||||
trusted parties. Users hold the crypto keys to their own money and
|
technology to operate with no central authority: managing transactions
|
||||||
transact directly with each other, with the help of a P2P network to
|
and issuing money are carried out collectively by the network. Dash Core
|
||||||
check for double-spending.
|
is the name of the open source software which enables the use of this currency.
|
||||||
.
|
|
||||||
Full transaction history is stored locally at each client. This
|
|
||||||
requires 1+ GB of space, slowly growing.
|
|
||||||
.
|
.
|
||||||
This package provides the daemon, dashd, and the CLI tool
|
This package provides the daemon, dashd, and the CLI tool
|
||||||
dash-cli to interact with the daemon.
|
dash-cli to interact with the daemon.
|
||||||
@ -46,13 +44,24 @@ Package: dash-qt
|
|||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
Description: peer-to-peer network based digital currency - Qt GUI
|
Description: peer-to-peer network based digital currency - Qt GUI
|
||||||
Dash is a free open source peer-to-peer electronic cash system that
|
Dash is an experimental new digital currency that enables instant
|
||||||
is completely decentralized, without the need for a central server or
|
payments to anyone, anywhere in the world. Dash uses peer-to-peer
|
||||||
trusted parties. Users hold the crypto keys to their own money and
|
technology to operate with no central authority: managing transactions
|
||||||
transact directly with each other, with the help of a P2P network to
|
and issuing money are carried out collectively by the network. Dash Core
|
||||||
check for double-spending.
|
is the name of the open source software which enables the use of this currency.
|
||||||
.
|
|
||||||
Full transaction history is stored locally at each client. This
|
|
||||||
requires 1+ GB of space, slowly growing.
|
|
||||||
.
|
.
|
||||||
This package provides Dash-Qt, a GUI for Dash based on Qt.
|
This package provides Dash-Qt, a GUI for Dash based on Qt.
|
||||||
|
|
||||||
|
Package: dash-tx
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
|
Description: peer-to-peer digital currency - standalone transaction tool
|
||||||
|
Dash is an experimental new digital currency that enables instant
|
||||||
|
payments to anyone, anywhere in the world. Dash uses peer-to-peer
|
||||||
|
technology to operate with no central authority: managing transactions
|
||||||
|
and issuing money are carried out collectively by the network. Dash Core
|
||||||
|
is the name of the open source software which enables the use of this currency.
|
||||||
|
.
|
||||||
|
This package provides dash-tx, a command-line transaction creation
|
||||||
|
tool which can be used without a bitcoin daemon. Some means of
|
||||||
|
exchanging minimal transaction data with peers is still required.
|
||||||
|
@ -1,23 +1,15 @@
|
|||||||
Format: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?rev=174
|
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Upstream-Name: Bitcoin
|
Upstream-Name: Bitcoin
|
||||||
Upstream-Contact: Satoshi Nakamoto <satoshin@gmx.com>
|
Upstream-Contact: Satoshi Nakamoto <satoshin@gmx.com>
|
||||||
irc://#bitcoin@freenode.net
|
irc://#bitcoin@freenode.net
|
||||||
Source: https://github.com/bitcoin/bitcoin
|
Source: https://github.com/bitcoin/bitcoin
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: 2009-2012, Bitcoin Core Developers
|
Copyright: 2009-2016, Bitcoin Core Developers
|
||||||
License: Expat
|
License: Expat
|
||||||
Comment: The Bitcoin Core Developers encompasses the current developers listed on bitcoin.org,
|
Comment: The Bitcoin Core Developers encompasses the current developers listed on bitcoin.org,
|
||||||
as well as the numerous contributors to the project.
|
as well as the numerous contributors to the project.
|
||||||
|
|
||||||
Files: src/json/*
|
|
||||||
Copyright: 2007-2009, John W. Wilkinson
|
|
||||||
License: Expat
|
|
||||||
|
|
||||||
Files: src/strlcpy.h
|
|
||||||
Copyright: 1998, Todd C. Miller <Todd.Miller@courtesan.com>
|
|
||||||
License: ISC
|
|
||||||
|
|
||||||
Files: debian/*
|
Files: debian/*
|
||||||
Copyright: 2010-2011, Jonas Smedegaard <dr@jones.dk>
|
Copyright: 2010-2011, Jonas Smedegaard <dr@jones.dk>
|
||||||
2011, Matt Corallo <matt@bluematt.me>
|
2011, Matt Corallo <matt@bluematt.me>
|
||||||
@ -27,60 +19,66 @@ Files: debian/manpages/*
|
|||||||
Copyright: Micah Anderson <micah@debian.org>
|
Copyright: Micah Anderson <micah@debian.org>
|
||||||
License: GPL-3+
|
License: GPL-3+
|
||||||
|
|
||||||
Files: src/qt/res/icons/clock*.png, src/qt/res/icons/tx*.png,
|
Files: src/qt/res/icons/add.png
|
||||||
src/qt/res/src/*.svg
|
src/qt/res/icons/address-book.png
|
||||||
Copyright: Wladimir van der Laan
|
src/qt/res/icons/configure.png
|
||||||
|
src/qt/res/icons/debugwindow.png
|
||||||
|
src/qt/res/icons/edit.png
|
||||||
|
src/qt/res/icons/editcopy.png
|
||||||
|
src/qt/res/icons/editpaste.png
|
||||||
|
src/qt/res/icons/export.png
|
||||||
|
src/qt/res/icons/eye.png
|
||||||
|
src/qt/res/icons/filesave.png
|
||||||
|
src/qt/res/icons/history.png
|
||||||
|
src/qt/res/icons/info.png
|
||||||
|
src/qt/res/icons/key.png
|
||||||
|
src/qt/res/icons/lock_*.png
|
||||||
|
src/qt/res/icons/open.png
|
||||||
|
src/qt/res/icons/overview.png
|
||||||
|
src/qt/res/icons/quit.png
|
||||||
|
src/qt/res/icons/receive.png
|
||||||
|
src/qt/res/icons/remove.png
|
||||||
|
src/qt/res/icons/send.png
|
||||||
|
src/qt/res/icons/synced.png
|
||||||
|
src/qt/res/icons/transaction*.png
|
||||||
|
src/qt/res/icons/tx_output.png
|
||||||
|
src/qt/res/icons/warning.png
|
||||||
|
Copyright: Stephen Hutchings (and more)
|
||||||
|
http://typicons.com
|
||||||
License: Expat
|
License: Expat
|
||||||
|
Comment: Site: https://github.com/stephenhutchings/typicons.font
|
||||||
Files: src/qt/res/icons/address-book.png, src/qt/res/icons/export.png,
|
|
||||||
src/qt/res/icons/history.png, src/qt/res/icons/key.png,
|
|
||||||
src/qt/res/icons/lock_*.png, src/qt/res/icons/overview.png,
|
|
||||||
src/qt/res/icons/receive.png, src/qt/res/icons/send.png,
|
|
||||||
src/qt/res/icons/synced.png, src/qt/res/icons/filesave.png
|
|
||||||
Copyright: David Vignoni (david@icon-king.com)
|
|
||||||
ICON KING - www.icon-king.com
|
|
||||||
License: LGPL
|
|
||||||
Comment: NUVOLA ICON THEME for KDE 3.x
|
|
||||||
Original icons: kaddressbook, klipper_dock, view-list-text,
|
|
||||||
key-password, encrypted/decrypted, go-home, go-down,
|
|
||||||
go-next, dialog-ok
|
|
||||||
Site: http://www.icon-king.com/projects/nuvola/
|
|
||||||
|
|
||||||
Files: src/qt/res/icons/connect*.png
|
Files: src/qt/res/icons/connect*.png
|
||||||
Copyright: schollidesign
|
src/qt/res/src/connect-*.svg
|
||||||
License: GPL-3+
|
Copyright: Marco Falke
|
||||||
Comment: Icon Pack: Human-O2
|
|
||||||
Site: http://findicons.com/icon/93743/blocks_gnome_netstatus_0
|
|
||||||
|
|
||||||
Files: src/qt/res/icons/transaction*.png
|
|
||||||
Copyright: md2k7
|
|
||||||
License: Expat
|
License: Expat
|
||||||
Comment: Site: https://bitcointalk.org/index.php?topic=15276.0
|
Comment: Inspired by Stephan Hutchings Typicons
|
||||||
|
|
||||||
Files: src/qt/res/icons/configure.png, src/qt/res/icons/quit.png,
|
Files: src/qt/res/icons/tx_mined.png
|
||||||
src/qt/res/icons/editcopy.png, src/qt/res/icons/editpaste.png,
|
src/qt/res/src/mine.svg
|
||||||
src/qt/res/icons/add.png, src/qt/res/icons/edit.png,
|
Copyright: Jonas Schnelli
|
||||||
src/qt/res/icons/remove.png
|
License: Expat
|
||||||
Copyright: http://www.everaldo.com
|
Comment:
|
||||||
License: LGPL
|
|
||||||
Comment: Icon Pack: Crystal SVG
|
|
||||||
|
|
||||||
Files: src/qt/res/icons/bitcoin.png, src/qt/res/icons/toolbar.png
|
Files: src/qt/res/icons/clock*.png
|
||||||
Copyright: Bitboy (optimized for 16x16 by Wladimir van der Laan)
|
src/qt/res/icons/eye_*.png
|
||||||
License: PUB-DOM
|
src/qt/res/icons/verify.png
|
||||||
|
src/qt/res/icons/tx_in*.png
|
||||||
|
src/qt/res/src/clock_*.svg
|
||||||
|
src/qt/res/src/tx_*.svg
|
||||||
|
src/qt/res/src/verify.svg
|
||||||
|
Copyright: Stephan Hutching, Jonas Schnelli
|
||||||
|
License: Expat
|
||||||
|
Comment: Modifications of Stephan Hutchings Typicons
|
||||||
|
|
||||||
|
Files: src/qt/res/icons/about.png
|
||||||
|
src/qt/res/icons/bitcoin.*
|
||||||
|
share/pixmaps/bitcoin*
|
||||||
|
src/qt/res/src/bitcoin.svg
|
||||||
|
Copyright: Bitboy, Jonas Schnelli
|
||||||
|
License: public-domain
|
||||||
Comment: Site: https://bitcointalk.org/?topic=1756.0
|
Comment: Site: https://bitcointalk.org/?topic=1756.0
|
||||||
|
|
||||||
Files: scripts/img/reload.xcf, src/qt/res/movies/*.png
|
|
||||||
Copyright: Everaldo (Everaldo Coelho)
|
|
||||||
License: GPL-3+
|
|
||||||
Comment: Icon Pack: Kids
|
|
||||||
Site: http://findicons.com/icon/17102/reload?id=17102
|
|
||||||
|
|
||||||
Files: src/qt/res/images/splash2.jpg
|
|
||||||
License: PUB-DOM
|
|
||||||
Copyright: Crobbo (forum)
|
|
||||||
Comment: Site: https://bitcointalk.org/index.php?topic=32273.0
|
|
||||||
|
|
||||||
|
|
||||||
License: Expat
|
License: Expat
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@ -102,20 +100,6 @@ License: Expat
|
|||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
License: ISC
|
|
||||||
Permission to use, copy, modify, and distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
.
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
|
||||||
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
|
|
||||||
BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
|
|
||||||
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
||||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
This program is free software; you can redistribute it and/or modify it
|
This program is free software; you can redistribute it and/or modify it
|
||||||
under the terms of the GNU General Public License as published by the
|
under the terms of the GNU General Public License as published by the
|
||||||
@ -144,22 +128,5 @@ Comment:
|
|||||||
You should have received a copy of the GNU General Public License along
|
You should have received a copy of the GNU General Public License along
|
||||||
with this program. If not, see <http://www.gnu.org/licenses/>.
|
with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
License: LGPL
|
License: public-domain
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
.
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
Comment:
|
|
||||||
On Debian systems the GNU Lesser General Public License (LGPL) is
|
|
||||||
located in '/usr/share/common-licenses/LGPL'.
|
|
||||||
.
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
License: PUB-DOM
|
|
||||||
This work is in the public domain.
|
This work is in the public domain.
|
||||||
|
@ -13,6 +13,12 @@
|
|||||||
# Connect via a SOCKS5 proxy
|
# Connect via a SOCKS5 proxy
|
||||||
#proxy=127.0.0.1:9050
|
#proxy=127.0.0.1:9050
|
||||||
|
|
||||||
|
# Bind to given address and always listen on it. Use [host]:port notation for IPv6
|
||||||
|
#bind=<addr>
|
||||||
|
|
||||||
|
# Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6
|
||||||
|
#whitebind=<addr>
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
## Quick Primer on addnode vs connect ##
|
## Quick Primer on addnode vs connect ##
|
||||||
## Let's say for instance you use addnode=4.2.2.4 ##
|
## Let's say for instance you use addnode=4.2.2.4 ##
|
||||||
@ -54,16 +60,20 @@
|
|||||||
# JSON-RPC options (for controlling a running Dash/dashd process)
|
# JSON-RPC options (for controlling a running Dash/dashd process)
|
||||||
#
|
#
|
||||||
|
|
||||||
# server=1 tells Dash-QT and dashd to accept JSON-RPC commands
|
# server=1 tells Dash-Qt and dashd to accept JSON-RPC commands
|
||||||
#server=0
|
#server=0
|
||||||
|
|
||||||
|
# Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6.
|
||||||
|
# This option can be specified multiple times (default: bind to all interfaces)
|
||||||
|
#rpcbind=<addr>
|
||||||
|
|
||||||
# You must set rpcuser and rpcpassword to secure the JSON-RPC api
|
# You must set rpcuser and rpcpassword to secure the JSON-RPC api
|
||||||
#rpcuser=Ulysseys
|
#rpcuser=Ulysseys
|
||||||
#rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593
|
#rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593
|
||||||
|
|
||||||
# How many seconds dash will wait for a complete RPC HTTP request.
|
# How many seconds dash will wait for a complete RPC HTTP request.
|
||||||
# after the HTTP connection is established.
|
# after the HTTP connection is established.
|
||||||
#rpctimeout=30
|
#rpcclienttimeout=30
|
||||||
|
|
||||||
# By default, only RPC connections from localhost are allowed.
|
# By default, only RPC connections from localhost are allowed.
|
||||||
# Specify as many rpcallowip= settings as you like to allow connections from other hosts,
|
# Specify as many rpcallowip= settings as you like to allow connections from other hosts,
|
||||||
@ -72,7 +82,7 @@
|
|||||||
# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED,
|
# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED,
|
||||||
# because the rpcpassword is transmitted over the network unencrypted.
|
# because the rpcpassword is transmitted over the network unencrypted.
|
||||||
|
|
||||||
# server=1 tells Dash-QT to accept JSON-RPC commands.
|
# server=1 tells Dash-Qt to accept JSON-RPC commands.
|
||||||
# it is also read by dashd to determine if RPC should be enabled
|
# it is also read by dashd to determine if RPC should be enabled
|
||||||
#rpcallowip=10.1.1.34/255.255.255.0
|
#rpcallowip=10.1.1.34/255.255.255.0
|
||||||
#rpcallowip=1.2.3.4/24
|
#rpcallowip=1.2.3.4/24
|
||||||
@ -85,15 +95,14 @@
|
|||||||
# running on another host using this option:
|
# running on another host using this option:
|
||||||
#rpcconnect=127.0.0.1
|
#rpcconnect=127.0.0.1
|
||||||
|
|
||||||
# Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate
|
# Transaction Fee Changes in 0.12.0
|
||||||
# with Dash -server or dashd
|
|
||||||
#rpcssl=1
|
|
||||||
|
|
||||||
# OpenSSL settings used when rpcssl=1
|
# Send transactions as zero-fee transactions if possible (default: 0)
|
||||||
#rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH
|
#sendfreetransactions=0
|
||||||
#rpcsslcertificatechainfile=server.cert
|
|
||||||
#rpcsslprivatekeyfile=server.pem
|
|
||||||
|
|
||||||
|
# Create transactions that have enough fees (or priority) so they are likely to begin confirmation within n blocks (default: 1).
|
||||||
|
# This setting is over-ridden by the -paytxfee option.
|
||||||
|
#txconfirmtarget=n
|
||||||
|
|
||||||
# Miscellaneous options
|
# Miscellaneous options
|
||||||
|
|
||||||
|
21
contrib/debian/manpages/bitcoin-cli.1
Normal file
21
contrib/debian/manpages/bitcoin-cli.1
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
.TH BITCOIN-CLI "1" "February 2016" "bitcoin-cli 0.12"
|
||||||
|
.SH NAME
|
||||||
|
bitcoin-cli \- a remote procedure call client for Bitcoin Core.
|
||||||
|
.SH SYNOPSIS
|
||||||
|
bitcoin-cli [options] <command> [params] \- Send command to Bitcoin Core.
|
||||||
|
.TP
|
||||||
|
bitcoin-cli [options] help \- Asks Bitcoin Core for a list of supported commands.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This manual page documents the bitcoin-cli program. bitcoin-cli is an RPC client used to send commands to Bitcoin Core.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
\fB\-?\fR
|
||||||
|
Show possible options.
|
||||||
|
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
\fBbitcoind\fP, \fBbitcoin.conf\fP
|
||||||
|
.SH AUTHOR
|
||||||
|
This manual page was written by Ciemon Dunville <ciemon@gmail.com>. Permission is granted to copy, distribute and/or modify this document under the terms of the MIT License.
|
||||||
|
|
||||||
|
The complete text of the MIT License can be found on the web at \fIhttp://opensource.org/licenses/MIT\fP.
|
@ -1,4 +1,4 @@
|
|||||||
.TH DASH-QT "1" "March 2015" "dash-qt 1"
|
.TH DASH-QT "1" "February 2016" "dash-qt 0.12"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
dash-qt \- peer-to-peer network based digital currency
|
dash-qt \- peer-to-peer network based digital currency
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
@ -8,196 +8,6 @@ dash\-qt [command\-line options]
|
|||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\-?
|
\-?
|
||||||
This help message
|
List options.
|
||||||
.TP
|
.SH "SEE ALSO"
|
||||||
\fB\-conf=\fR<file>
|
dashd(1)
|
||||||
Specify configuration file (default: dash.conf)
|
|
||||||
.TP
|
|
||||||
\fB\-pid=\fR<file>
|
|
||||||
Specify pid file (default: dashd.pid)
|
|
||||||
.TP
|
|
||||||
\fB\-gen\fR
|
|
||||||
Generate coins
|
|
||||||
.TP
|
|
||||||
\fB\-gen\fR=\fI0\fR
|
|
||||||
Don't generate coins
|
|
||||||
.TP
|
|
||||||
\fB\-datadir=\fR<dir>
|
|
||||||
Specify data directory
|
|
||||||
.TP
|
|
||||||
\fB\-dbcache=\fR<n>
|
|
||||||
Set database cache size in megabytes (default: 25)
|
|
||||||
.TP
|
|
||||||
\fB\-timeout=\fR<n>
|
|
||||||
Specify connection timeout in milliseconds (default: 5000)
|
|
||||||
.TP
|
|
||||||
\fB\-proxy=\fR<ip:port>
|
|
||||||
Connect through SOCKS5 proxy
|
|
||||||
.TP
|
|
||||||
\fB\-tor=\fR<ip:port>
|
|
||||||
Use proxy to reach tor hidden services (default: same as \fB\-proxy\fR)
|
|
||||||
.TP
|
|
||||||
\fB\-dns\fR
|
|
||||||
Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR
|
|
||||||
.TP
|
|
||||||
\fB\-port=\fR<port>
|
|
||||||
Listen for connections on <port> (default: 9999 or testnet: 19999)
|
|
||||||
.TP
|
|
||||||
\fB\-maxconnections=\fR<n>
|
|
||||||
Maintain at most <n> connections to peers (default: 125)
|
|
||||||
.TP
|
|
||||||
\fB\-addnode=\fR<ip>
|
|
||||||
Add a node to connect to and attempt to keep the connection open
|
|
||||||
.TP
|
|
||||||
\fB\-connect=\fR<ip>
|
|
||||||
Connect only to the specified node(s)
|
|
||||||
.TP
|
|
||||||
\fB\-seednode=\fR<ip>
|
|
||||||
Connect to a node to retrieve peer addresses, and disconnect
|
|
||||||
.TP
|
|
||||||
\fB\-externalip=\fR<ip>
|
|
||||||
Specify your own public address
|
|
||||||
.TP
|
|
||||||
\fB\-onlynet=\fR<net>
|
|
||||||
Only connect to nodes in network <net> (IPv4, IPv6 or Tor)
|
|
||||||
.TP
|
|
||||||
\fB\-discover\fR
|
|
||||||
Discover own IP address (default: 1 when listening and no \fB\-externalip\fR)
|
|
||||||
.TP
|
|
||||||
\fB\-checkpoints\fR
|
|
||||||
Only accept block chain matching built\-in checkpoints (default: 1)
|
|
||||||
.TP
|
|
||||||
\fB\-listen\fR
|
|
||||||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
|
|
||||||
.TP
|
|
||||||
\fB\-bind=\fR<addr>
|
|
||||||
Bind to given address and always listen on it. Use [host]:port notation for IPv6
|
|
||||||
.TP
|
|
||||||
\fB\-dnsseed\fR
|
|
||||||
Find peers using DNS lookup (default: 1 unless \fB\-connect\fR)
|
|
||||||
.TP
|
|
||||||
\fB\-banscore=\fR<n>
|
|
||||||
Threshold for disconnecting misbehaving peers (default: 100)
|
|
||||||
.TP
|
|
||||||
\fB\-bantime=\fR<n>
|
|
||||||
Number of seconds to keep misbehaving peers from reconnecting (default: 86400)
|
|
||||||
.TP
|
|
||||||
\fB\-maxreceivebuffer=\fR<n>
|
|
||||||
Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
|
|
||||||
.TP
|
|
||||||
\fB\-maxsendbuffer=\fR<n>
|
|
||||||
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
|
|
||||||
.TP
|
|
||||||
\fB\-upnp\fR
|
|
||||||
Use UPnP to map the listening port (default: 1 when listening)
|
|
||||||
.TP
|
|
||||||
\fB\-paytxfee=\fR<amt>
|
|
||||||
Fee per KB to add to transactions you send
|
|
||||||
.TP
|
|
||||||
\fB\-server\fR
|
|
||||||
Accept command line and JSON\-RPC commands
|
|
||||||
.TP
|
|
||||||
\fB\-testnet\fR
|
|
||||||
Use the test network
|
|
||||||
.TP
|
|
||||||
\fB\-debug\fR
|
|
||||||
Output extra debugging information. Implies all other \fB\-debug\fR* options
|
|
||||||
.TP
|
|
||||||
\fB\-debugnet\fR
|
|
||||||
Output extra network debugging information
|
|
||||||
.TP
|
|
||||||
\fB\-logtimestamps\fR
|
|
||||||
Prepend debug output with timestamp
|
|
||||||
.TP
|
|
||||||
\fB\-shrinkdebugfile\fR
|
|
||||||
Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
|
|
||||||
.TP
|
|
||||||
\fB\-printtoconsole\fR
|
|
||||||
Send trace/debug info to console instead of debug.log file
|
|
||||||
.TP
|
|
||||||
\fB\-rpcuser=\fR<user>
|
|
||||||
Username for JSON\-RPC connections
|
|
||||||
.TP
|
|
||||||
\fB\-rpcpassword=\fR<pw>
|
|
||||||
Password for JSON\-RPC connections
|
|
||||||
.TP
|
|
||||||
\fB\-rpcport=\fR<port>
|
|
||||||
Listen for JSON\-RPC connections on <port> (default: 9998 or testnet: 19998)
|
|
||||||
.TP
|
|
||||||
\fB\-rpcallowip=\fR<ip>
|
|
||||||
Allow JSON\-RPC connections from specified IP address
|
|
||||||
.TP
|
|
||||||
\fB\-rpcthreads=\fR<n>
|
|
||||||
Set the number of threads to service RPC calls (default: 4)
|
|
||||||
.TP
|
|
||||||
\fB\-blocknotify=\fR<cmd>
|
|
||||||
Execute command when the best block changes (%s in cmd is replaced by block hash)
|
|
||||||
.TP
|
|
||||||
\fB\-walletnotify=\fR<cmd>
|
|
||||||
Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)
|
|
||||||
.TP
|
|
||||||
\fB\-alertnotify=\fR<cmd>
|
|
||||||
Execute command when a relevant alert is received (%s in cmd is replaced by message)
|
|
||||||
.TP
|
|
||||||
\fB\-upgradewallet\fR
|
|
||||||
Upgrade wallet to latest format
|
|
||||||
.TP
|
|
||||||
\fB\-keypool=\fR<n>
|
|
||||||
Set key pool size to <n> (default: 100)
|
|
||||||
.TP
|
|
||||||
\fB\-rescan\fR
|
|
||||||
Rescan the block chain for missing wallet transactions
|
|
||||||
.TP
|
|
||||||
\fB\-salvagewallet\fR
|
|
||||||
Attempt to recover private keys from a corrupt wallet.dat
|
|
||||||
.TP
|
|
||||||
\fB\-checkblocks=\fR<n>
|
|
||||||
How many blocks to check at startup (default: 288, 0 = all)
|
|
||||||
.TP
|
|
||||||
\fB\-checklevel=\fR<n>
|
|
||||||
How thorough the block verification is (0\-4, default: 3)
|
|
||||||
.TP
|
|
||||||
\fB\-txindex\fR
|
|
||||||
Maintain a full transaction index (default: 0)
|
|
||||||
.TP
|
|
||||||
\fB\-loadblock=\fR<file>
|
|
||||||
Imports blocks from external blk000??.dat file
|
|
||||||
.TP
|
|
||||||
\fB\-reindex\fR
|
|
||||||
Rebuild block chain index from current blk000??.dat files
|
|
||||||
.TP
|
|
||||||
\fB\-par=\fR<n>
|
|
||||||
Set the number of script verification threads (1\-16, 0=auto, default: 0)
|
|
||||||
.SS "Block creation options:"
|
|
||||||
.TP
|
|
||||||
\fB\-blockminsize=\fR<n>
|
|
||||||
Set minimum block size in bytes (default: 0)
|
|
||||||
.TP
|
|
||||||
\fB\-blockmaxsize=\fR<n>
|
|
||||||
Set maximum block size in bytes (default: 250000)
|
|
||||||
.HP
|
|
||||||
\fB\-blockprioritysize=\fR<n> Set maximum size of high\-priority/low\-fee transactions in bytes (default: 27000)
|
|
||||||
.PP
|
|
||||||
SSL options: (see the Bitcoin Wiki for SSL setup instructions)
|
|
||||||
.TP
|
|
||||||
\fB\-rpcssl\fR
|
|
||||||
Use OpenSSL (https) for JSON\-RPC connections
|
|
||||||
.TP
|
|
||||||
\fB\-rpcsslcertificatechainfile=\fR<file.cert>
|
|
||||||
Server certificate file (default: server.cert)
|
|
||||||
.TP
|
|
||||||
\fB\-rpcsslprivatekeyfile=\fR<file.pem>
|
|
||||||
Server private key (default: server.pem)
|
|
||||||
.TP
|
|
||||||
\fB\-rpcsslciphers=\fR<ciphers>
|
|
||||||
Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)
|
|
||||||
.SS "UI options:"
|
|
||||||
.TP
|
|
||||||
\fB\-lang=\fR<lang>
|
|
||||||
Set language, for example "de_DE" (default: system locale)
|
|
||||||
.TP
|
|
||||||
\fB\-min\fR
|
|
||||||
Start minimized
|
|
||||||
.TP
|
|
||||||
\fB\-splash\fR
|
|
||||||
Show splash screen on startup (default: 1)
|
|
||||||
|
@ -1,85 +1,15 @@
|
|||||||
.TH DASH.CONF "5" "January 2011" "dash.conf 3.19"
|
.TH DASH.CONF "5" "February 2016" "dash.conf 0.12"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
dash.conf \- dash configuration file
|
dash.conf \- dash configuration file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
All command-line options (except for '\-conf') may be specified in a configuration file, and all configuration file options may also be specified on the command line. Command-line options override values set in the configuration file.
|
All command-line options (except for '\-conf') may be specified in a configuration file, and all configuration file options may also be specified on the command line. Command-line options override values set in the configuration file.
|
||||||
.TP
|
.TP
|
||||||
The configuration file is a list of 'setting=value' pairs, one per line, with optional comments starting with the '#' character.
|
The configuration file is a list of 'setting=value' pairs, one per line, with optional comments starting with the '#' character. Please refer to dashd(1) for a up to date list of valid options.
|
||||||
.TP
|
.TP
|
||||||
The configuration file is not automatically created; you can create it using your favorite plain-text editor. By default, dashd(1) will look for a file named dash.conf(5) in the dash data directory, but both the data directory and the configuration file path may be changed using the '\-datadir' and '\-conf' command-line arguments.
|
The configuration file is not automatically created; you can create it using your favorite plain-text editor. By default, dashd(1) will look for a file named dash.conf(5) in the dash data directory, but both the data directory and the configuration file path may be changed using the '\-datadir' and '\-conf' command-line arguments.
|
||||||
.SH LOCATION
|
.SH LOCATION
|
||||||
dash.conf should be located in $HOME/.dash
|
dash.conf should be located in $HOME/.dash
|
||||||
.SH NETWORK-RELATED SETTINGS
|
|
||||||
.TP
|
|
||||||
.TP
|
|
||||||
\fBtestnet=\fR[\fI'1'\fR|\fI'0'\fR]
|
|
||||||
Enable or disable run on the test network instead of the real *dash* network.
|
|
||||||
.TP
|
|
||||||
\fBproxy=\fR\fI'127.0.0.1:9050'\fR
|
|
||||||
Connect via a socks4 proxy.
|
|
||||||
.TP
|
|
||||||
\fBaddnode=\fR\fI'10.0.0.2:9999'\fR
|
|
||||||
Use as many *addnode=* settings as you like to connect to specific peers.
|
|
||||||
.TP
|
|
||||||
\fBconnect=\fR\fI'10.0.0.1:9999'\fR
|
|
||||||
Use as many *connect=* settings as you like to connect ONLY to specific peers.
|
|
||||||
.TP
|
|
||||||
\fRmaxconnections=\fR\fI'value'\fR
|
|
||||||
Maximum number of inbound+outbound connections.
|
|
||||||
.SH JSON-RPC OPTIONS
|
|
||||||
.TP
|
|
||||||
\fBserver=\fR[\fI'1'\fR|\fI'0'\fR]
|
|
||||||
Tells *dash* to accept or not accept JSON-RPC commands.
|
|
||||||
.TP
|
|
||||||
\fBrpcuser=\fR\fI'username'\fR
|
|
||||||
You must set *rpcuser* to secure the JSON-RPC api.
|
|
||||||
.TP
|
|
||||||
\fBrpcpassword=\fR\fI'password'\fR
|
|
||||||
You must set *rpcpassword* to secure the JSON-RPC api.
|
|
||||||
.TP
|
|
||||||
\fBrpcallowip=\fR\fI'192.168.1.*'\fR
|
|
||||||
By default, only RPC connections from localhost are allowed. Specify as many *rpcallowip=* settings as you like to allow connections from other hosts (and you may use * as a wildcard character).
|
|
||||||
.TP
|
|
||||||
\fBrpcport=\fR\fI'9998'\fR
|
|
||||||
Listen for RPC connections on this TCP port.
|
|
||||||
.TP
|
|
||||||
\fBrpcconnect=\fR\fI'127.0.0.1'\fR
|
|
||||||
You can use *dash* or *dashd(1)* to send commands to *dash*/*dashd(1)* running on another host using this option.
|
|
||||||
.TP
|
|
||||||
\fBrpcssl=\fR\fI'1'\fR
|
|
||||||
Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate with *dash* '\-server' or *dashd(1)*. Example of OpenSSL settings used when *rpcssl*='1':
|
|
||||||
.TP
|
|
||||||
\fB\-rpcsslciphers=\fR<ciphers>
|
|
||||||
Acceptable ciphers (default: TLSv1+HIGH:\:!SSLv2:\:!aNULL:\:!eNULL:\:!AH:\:!3DES:\:@STRENGTH)
|
|
||||||
.TP
|
|
||||||
\fBrpcsslcertificatechainfile=\fR\fI'server.cert'\fR
|
|
||||||
.TP
|
|
||||||
\fBrpcsslprivatekeyfile=\fR\fI'server.pem'\fR
|
|
||||||
.TP
|
|
||||||
.SH MISCELLANEOUS OPTIONS
|
|
||||||
.TP
|
|
||||||
\fBgen=\fR[\fI'0'\fR|\fI'1'\fR]
|
|
||||||
Enable or disable attempt to generate dashs.
|
|
||||||
.TP
|
|
||||||
\fB4way=\fR[\fI'0'\fR|\fI'1'\fR]
|
|
||||||
Enable or disable use SSE instructions to try to generate dashs faster.
|
|
||||||
.TP
|
|
||||||
\fBkeypool=\fR\fI'100'\fR
|
|
||||||
Pre-generate this many public/private key pairs, so wallet backups will be valid for both prior transactions and several dozen future transactions.
|
|
||||||
.TP
|
|
||||||
\fBpaytxfee=\fR\fI'0.00'\fR
|
|
||||||
Pay an optional transaction fee every time you send dashs. Transactions with fees are more likely than free transactions to be included in generated blocks, so may be validated sooner.
|
|
||||||
.TP
|
|
||||||
\fBallowreceivebyip=\fR\fI'1'\fR
|
|
||||||
Allow direct connections for the 'pay via IP address' feature.
|
|
||||||
.TP
|
|
||||||
.SH USER INTERFACE OPTIONS
|
|
||||||
.TP
|
|
||||||
\fBmin=\fR[\fI'0'\fR|\fI'1'\fR]
|
|
||||||
Enable or disable start dashd minimized.
|
|
||||||
.TP
|
|
||||||
\fBminimizetotray=\fR[\fI'0'\fR|\fI'1'\fR]
|
|
||||||
Enable or disable minimize to the system tray.
|
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
dashd(1)
|
dashd(1)
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.TH DASHD "1" "January 2011" "dashd 3.19"
|
.TH DASHD "1" "February 2016" "dashd 0.12"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
Dash \- peer-to-peer network based digital currency
|
Dash \- peer-to-peer network based digital currency
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -6,199 +6,20 @@ dashd [options] <command> [params]
|
|||||||
.TP
|
.TP
|
||||||
dashd [options] help <command> \- Get help for a command
|
dashd [options] help <command> \- Get help for a command
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This manual page documents the dashd program. Dash is a peer-to-peer digital currency. Peer-to-peer (P2P) means that there is no central authority to issue new money or keep track of transactions. Instead, these tasks are managed collectively by the nodes of the network. Advantages:
|
This manual page documents the dashd program. Dash is an experimental new digital currency that enables instant payments to anyone, anywhere in the world. Dash uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Dash Core is the name of open source software which enables the use of this currency.
|
||||||
|
|
||||||
Dash can be sent easily through the Internet, without having to trust middlemen. Transactions are designed to be irreversible. Be safe from instability caused by fractional reserve banking and central banks. The limited inflation of the Dash system’s money supply is distributed evenly (by CPU power) throughout the network, not monopolized by banks.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\fB\-conf=\fR<file>
|
|
||||||
Specify configuration file (default: dash.conf)
|
|
||||||
.TP
|
|
||||||
\fB\-gen\fR
|
|
||||||
Generate coins
|
|
||||||
.TP
|
|
||||||
\fB\-gen\fR=\fI0\fR
|
|
||||||
Don't generate coins
|
|
||||||
.TP
|
|
||||||
\fB\-min\fR
|
|
||||||
Start minimized
|
|
||||||
.TP
|
|
||||||
\fB\-datadir=\fR<dir>
|
|
||||||
Specify data directory
|
|
||||||
.TP
|
|
||||||
\fB\-proxy=\fR<ip:port>
|
|
||||||
Connect through SOCKS5 proxy
|
|
||||||
.TP
|
|
||||||
\fB\-addnode=\fR<ip>
|
|
||||||
Add a node to connect to
|
|
||||||
.TP
|
|
||||||
\fB\-connect=\fR<ip>
|
|
||||||
Connect only to the specified node
|
|
||||||
.TP
|
|
||||||
\fB\-paytxfee=\fR<amt>
|
|
||||||
Fee per KB to add to transactions you send
|
|
||||||
.TP
|
|
||||||
\fB\-server\fR
|
|
||||||
Accept command line and JSON\-RPC commands
|
|
||||||
.TP
|
|
||||||
\fB\-daemon\fR
|
|
||||||
Run in the background as a daemon and accept commands
|
|
||||||
.TP
|
|
||||||
\fB\-testnet\fR
|
|
||||||
Use the test network
|
|
||||||
.TP
|
|
||||||
\fB\-rpcuser=\fR<user>
|
|
||||||
Username for JSON\-RPC connections
|
|
||||||
.TP
|
|
||||||
\fB\-rpcpassword=\fR<pw>
|
|
||||||
Password for JSON\-RPC connections
|
|
||||||
.TP
|
|
||||||
\fB\-rpcport=\fR<port>
|
|
||||||
Listen for JSON\-RPC connections on <port>
|
|
||||||
.TP
|
|
||||||
\fB\-rpcallowip=\fR<ip>
|
|
||||||
Allow JSON\-RPC connections from specified IP address
|
|
||||||
.TP
|
|
||||||
\fB\-rpcconnect=\fR<ip>
|
|
||||||
Send commands to node running on <ip>
|
|
||||||
.PP
|
|
||||||
SSL options: (see the Bitcoin Wiki for SSL setup instructions)
|
|
||||||
.TP
|
|
||||||
\fB\-rpcssl\fR=\fI1\fR
|
|
||||||
Use OpenSSL (https) for JSON\-RPC connections
|
|
||||||
.TP
|
|
||||||
\fB\-rpcsslcertificatchainfile=\fR<file.cert>
|
|
||||||
Server certificate file (default: server.cert)
|
|
||||||
.TP
|
|
||||||
\fB\-rpcsslprivatekeyfile=\fR<file.pem>
|
|
||||||
Server private key (default: server.pem)
|
|
||||||
.TP
|
|
||||||
\fB\-rpcsslciphers=\fR<ciphers>
|
|
||||||
Acceptable ciphers (default: TLSv1+HIGH:\:!SSLv2:\:!aNULL:\:!eNULL:\:!AH:\:!3DES:\:@STRENGTH)
|
|
||||||
.TP
|
|
||||||
\-?
|
\-?
|
||||||
This help message
|
List of possible options.
|
||||||
.SH COMMANDS
|
.SH COMMANDS
|
||||||
.TP
|
.TP
|
||||||
\fBbackupwallet 'destination'\fR
|
\fBhelp\fR
|
||||||
Safely copies *wallet.dat* to 'destination', which can be a directory or a path with filename.
|
List commands.
|
||||||
.TP
|
|
||||||
\fBgetaccount 'dashaddress'\fR
|
|
||||||
Returns the account associated with the given address.
|
|
||||||
.TP
|
|
||||||
\fBsetaccount 'dashaddress' ['account']\fR
|
|
||||||
Sets the ['account'] associated with the given address. ['account'] may be omitted to remove an address from ['account'].
|
|
||||||
.TP
|
|
||||||
\fBgetaccountaddress 'account'\fR
|
|
||||||
Returns a new dash address for 'account'.
|
|
||||||
.TP
|
|
||||||
\fBgetaddressesbyaccount 'account'\fR
|
|
||||||
Returns the list of addresses associated with the given 'account'.
|
|
||||||
.TP
|
|
||||||
\fBgetbalance 'account'\fR
|
|
||||||
Returns the server's available balance, or the balance for 'account'.
|
|
||||||
.TP
|
|
||||||
\fBgetblockcount\fR
|
|
||||||
Returns the number of blocks in the longest block chain.
|
|
||||||
.TP
|
|
||||||
\fBgetblocknumber\fR
|
|
||||||
Returns the block number of the latest block in the longest block chain.
|
|
||||||
.TP
|
|
||||||
\fBgetconnectioncount\fR
|
|
||||||
Returns the number of connections to other nodes.
|
|
||||||
.TP
|
|
||||||
\fBgetdifficulty\fR
|
|
||||||
Returns the proof-of-work difficulty as a multiple of the minimum difficulty.
|
|
||||||
.TP
|
|
||||||
\fBgetgenerate\fR
|
|
||||||
Returns boolean true if server is trying to generate DASH, false otherwise.
|
|
||||||
.TP
|
|
||||||
\fBsetgenerate 'generate' ['genproclimit']\fR
|
|
||||||
Generation is limited to ['genproclimit'] processors, \-1 is unlimited.
|
|
||||||
.TP
|
|
||||||
\fBgethashespersec\fR
|
|
||||||
Returns a recent hashes per second performance measurement while generating.
|
|
||||||
.TP
|
|
||||||
\fBgetinfo\fR
|
|
||||||
Returns an object containing server information.
|
|
||||||
.TP
|
|
||||||
\fBgetnewaddress 'account'\fR
|
|
||||||
Returns a new dash address for receiving payments. If 'account' is specified (recommended), it is added to the address book so payments received with the address will be credited to 'account'.
|
|
||||||
.TP
|
|
||||||
\fBgetreceivedbyaccount 'account' ['minconf=1']\fR
|
|
||||||
Returns the total amount received by addresses associated with 'account' in transactions with at least ['minconf'] confirmations.
|
|
||||||
.TP
|
|
||||||
\fBgetreceivedbyaddress 'dashaddress' ['minconf=1']\fR
|
|
||||||
Returns the total amount received by 'dashaddress' in transactions with at least ['minconf'] confirmations.
|
|
||||||
.TP
|
|
||||||
\fBgettransaction 'txid'\fR
|
|
||||||
Returns information about a specific transaction, given hexadecimal transaction ID.
|
|
||||||
.TP
|
|
||||||
\fBgetwork 'data'\fR
|
|
||||||
If 'data' is specified, tries to solve the block and returns true if it was successful. If 'data' is not specified, returns formatted hash 'data' to work on:
|
|
||||||
|
|
||||||
"midstate" : precomputed hash state after hashing the first half of the data.
|
|
||||||
"data" : block data.
|
|
||||||
"hash1" : formatted hash buffer for second hash.
|
|
||||||
"target" : little endian hash target.
|
|
||||||
.TP
|
.TP
|
||||||
\fBhelp 'command'\fR
|
\fBhelp 'command'\fR
|
||||||
List commands, or get help for a command.
|
Get help for a command.
|
||||||
.TP
|
|
||||||
\fBlistaccounts ['minconf=1']\fR
|
|
||||||
List accounts and their current balances.
|
|
||||||
*note: requires dash 0.3.20 or later.
|
|
||||||
.TP
|
|
||||||
\fBlistreceivedbyaccount ['minconf=1'] ['includeempty=false']\fR
|
|
||||||
['minconf'] is the minimum number of confirmations before payments are included. ['includeempty'] whether to include addresses that haven't received any payments. Returns an array of objects containing:
|
|
||||||
|
|
||||||
"account" : the account of the receiving address.
|
|
||||||
"amount" : total amount received by the address.
|
|
||||||
"confirmations" : number of confirmations of the most recent transaction included.
|
|
||||||
.TP
|
|
||||||
\fBlistreceivedbyaddress ['minconf=1'] ['includeempty=false']\fR
|
|
||||||
['minconf'] is the minimum number of confirmations before payments are included. ['includeempty'] whether to include addresses that haven't received any payments. Returns an array of objects containing:
|
|
||||||
|
|
||||||
"address" : receiving address.
|
|
||||||
"account" : the account of the receiving address.
|
|
||||||
"amount" : total amount received by the address.
|
|
||||||
"confirmations" : number of confirmations of the most recent transaction included.
|
|
||||||
.TP
|
|
||||||
\fBlisttransactions 'account' ['count=10']\fR
|
|
||||||
Returns a list of the last ['count'] transactions for 'account' \- for all accounts if 'account' is not specified or is "*". Each entry in the list may contain:
|
|
||||||
|
|
||||||
"category" : will be generate, send, receive, or move.
|
|
||||||
"amount" : amount of transaction.
|
|
||||||
"fee" : Fee (if any) paid (only for send transactions).
|
|
||||||
"confirmations" : number of confirmations (only for generate/send/receive).
|
|
||||||
"txid" : transaction ID (only for generate/send/receive).
|
|
||||||
"otheraccount" : account funds were moved to or from (only for move).
|
|
||||||
"message" : message associated with transaction (only for send).
|
|
||||||
"to" : message-to associated with transaction (only for send).
|
|
||||||
|
|
||||||
*note: requires dash 0.3.20 or later.
|
|
||||||
.TP
|
|
||||||
\fBmove <'fromaccount'> <'toaccount'> <'amount'> ['minconf=1'] ['comment']\fR
|
|
||||||
Moves funds between accounts.
|
|
||||||
.TP
|
|
||||||
\fBsendfrom* <'account'> <'dashaddress'> <'amount'> ['minconf=1'] ['comment'] ['comment-to']\fR
|
|
||||||
Sends amount from account's balance to 'dashaddress'. This method will fail if there is less than amount DASH with ['minconf'] confirmations in the account's balance (unless account is the empty-string-named default account; it behaves like the *sendtoaddress* method). Returns transaction ID on success.
|
|
||||||
.TP
|
|
||||||
\fBsendtoaddress 'dashaddress' 'amount' ['comment'] ['comment-to']\fR
|
|
||||||
Sends amount from the server's available balance to 'dashaddress'. amount is a real and is rounded to the nearest 0.01. Returns transaction id on success.
|
|
||||||
.TP
|
|
||||||
\fBstop\fR
|
|
||||||
Stops the dash server.
|
|
||||||
.TP
|
|
||||||
\fBvalidateaddress 'dashaddress'\fR
|
|
||||||
Checks that 'dashaddress' looks like a proper Dash address. Returns an object containing:
|
|
||||||
|
|
||||||
"isvalid" : true or false.
|
|
||||||
"ismine" : true if the address is in the server's wallet.
|
|
||||||
"address" : dashaddress.
|
|
||||||
|
|
||||||
*note: ismine and address are only returned if the address is valid.
|
|
||||||
|
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
dash.conf(5)
|
dash.conf(5)
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
# Run the "uscan" command to check for upstream updates and more.
|
# Run the "uscan" command to check for upstream updates and more.
|
||||||
version=3
|
version=3
|
||||||
# use qa.debian.org redirector; see man uscan
|
# use qa.debian.org redirector; see man uscan
|
||||||
opts=uversionmangle=s/(\d)(alpha|beta|rc)/$1~$2/;s/\-src//,dversionmangle=s/~dfsg\d*// \
|
|
||||||
http://sf.net/bitcoin/bitcoin-(\d.*)-linux\.tar\.gz debian
|
|
||||||
opts=uversionmangle=s/(\d)(alpha|beta|rc)/$1~$2/,dversionmangle=s/~dfsg\d*// \
|
opts=uversionmangle=s/(\d)(alpha|beta|rc)/$1~$2/,dversionmangle=s/~dfsg\d*// \
|
||||||
http://githubredir.debian.net/github/bitcoin/bitcoin v(.*).tar.gz
|
http://githubredir.debian.net/github/bitcoin/bitcoin v(.*).tar.gz
|
||||||
|
@ -1,9 +1,45 @@
|
|||||||
Contents
|
Contents
|
||||||
===========
|
========
|
||||||
This directory contains tools for developers working on this repository.
|
This directory contains tools for developers working on this repository.
|
||||||
|
|
||||||
|
clang-format.py
|
||||||
|
===============
|
||||||
|
|
||||||
|
A script to format cpp source code according to [.clang-format](../../src/.clang-format). This should only be applied to new files or files which are currently not actively developed on. Also, git subtrees are not subject to formatting.
|
||||||
|
|
||||||
|
fix-copyright-headers.py
|
||||||
|
========================
|
||||||
|
|
||||||
|
Every year newly updated files need to have its copyright headers updated to reflect the current year.
|
||||||
|
If you run this script from the root folder it will automatically update the year on the copyright header for all
|
||||||
|
source files if these have a git commit from the current year.
|
||||||
|
|
||||||
|
For example a file changed in 2015 (with 2015 being the current year):
|
||||||
|
|
||||||
|
```// Copyright (c) 2009-2013 The Bitcoin Core developers```
|
||||||
|
|
||||||
|
would be changed to:
|
||||||
|
|
||||||
|
```// Copyright (c) 2009-2015 The Bitcoin Core developers```
|
||||||
|
|
||||||
|
git-subtree-check.sh
|
||||||
|
====================
|
||||||
|
|
||||||
|
Run this script from the root of the repository to verify that a subtree matches the contents of
|
||||||
|
the commit it claims to have been updated to.
|
||||||
|
|
||||||
|
To use, make sure that you have fetched the upstream repository branch in which the subtree is
|
||||||
|
maintained:
|
||||||
|
* for `src/secp256k1`: https://github.com/bitcoin/secp256k1.git (branch master)
|
||||||
|
* for `src/leveldb`: https://github.com/bitcoin/leveldb.git (branch bitcoin-fork)
|
||||||
|
* for `src/univalue`: https://github.com/bitcoin/univalue.git (branch master)
|
||||||
|
|
||||||
|
Usage: `git-subtree-check.sh DIR COMMIT`
|
||||||
|
|
||||||
|
`COMMIT` may be omitted, in which case `HEAD` is used.
|
||||||
|
|
||||||
github-merge.sh
|
github-merge.sh
|
||||||
==================
|
===============
|
||||||
|
|
||||||
A small script to automate merging pull-requests securely and sign them with GPG.
|
A small script to automate merging pull-requests securely and sign them with GPG.
|
||||||
|
|
||||||
@ -36,24 +72,22 @@ Configuring the github-merge tool for the bitcoin repository is done in the foll
|
|||||||
git config githubmerge.testcmd "make -j4 check" (adapt to whatever you want to use for testing)
|
git config githubmerge.testcmd "make -j4 check" (adapt to whatever you want to use for testing)
|
||||||
git config --global user.signingkey mykeyid (if you want to GPG sign)
|
git config --global user.signingkey mykeyid (if you want to GPG sign)
|
||||||
|
|
||||||
fix-copyright-headers.py
|
optimize-pngs.py
|
||||||
===========================
|
================
|
||||||
|
|
||||||
Every year newly updated files need to have its copyright headers updated to reflect the current year.
|
A script to optimize png files in the bitcoin
|
||||||
If you run this script from src/ it will automatically update the year on the copyright header for all
|
repository (requires pngcrush).
|
||||||
.cpp and .h files if these have a git commit from the current year.
|
|
||||||
|
|
||||||
For example a file changed in 2014 (with 2014 being the current year):
|
security-check.py and test-security-check.py
|
||||||
```// Copyright (c) 2009-2013 The Bitcoin developers```
|
============================================
|
||||||
|
|
||||||
would be changed to:
|
Perform basic ELF security checks on a series of executables.
|
||||||
```// Copyright (c) 2009-2014 The Bitcoin developers```
|
|
||||||
|
|
||||||
symbol-check.py
|
symbol-check.py
|
||||||
==================
|
===============
|
||||||
|
|
||||||
A script to check that the (Linux) executables produced by gitian only contain
|
A script to check that the (Linux) executables produced by gitian only contain
|
||||||
allowed gcc, glibc and libstdc++ version symbols. This makes sure they are
|
allowed gcc, glibc and libstdc++ version symbols. This makes sure they are
|
||||||
still compatible with the minimum supported Linux distribution versions.
|
still compatible with the minimum supported Linux distribution versions.
|
||||||
|
|
||||||
Example usage after a gitian build:
|
Example usage after a gitian build:
|
||||||
@ -70,7 +104,7 @@ If there are 'unsupported' symbols, the return value will be 1 a list like this
|
|||||||
.../64/test_dash: symbol _ZNSt8__detail15_List_nod from unsupported version GLIBCXX_3.4.15
|
.../64/test_dash: symbol _ZNSt8__detail15_List_nod from unsupported version GLIBCXX_3.4.15
|
||||||
|
|
||||||
update-translations.py
|
update-translations.py
|
||||||
=======================
|
======================
|
||||||
|
|
||||||
Run this script from the root of the repository to update all translations from transifex.
|
Run this script from the root of the repository to update all translations from transifex.
|
||||||
It will do the following automatically:
|
It will do the following automatically:
|
||||||
@ -80,4 +114,3 @@ It will do the following automatically:
|
|||||||
- add missing translations to the build system (TODO)
|
- add missing translations to the build system (TODO)
|
||||||
|
|
||||||
See doc/translation-process.md for more information.
|
See doc/translation-process.md for more information.
|
||||||
|
|
||||||
|
62
contrib/devtools/clang-format.py
Executable file
62
contrib/devtools/clang-format.py
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
'''
|
||||||
|
Wrapper script for clang-format
|
||||||
|
|
||||||
|
Copyright (c) 2015 MarcoFalke
|
||||||
|
Copyright (c) 2015 The Bitcoin Core developers
|
||||||
|
Distributed under the MIT software license, see the accompanying
|
||||||
|
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
'''
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
tested_versions = ['3.6.0', '3.6.1', '3.6.2'] # A set of versions known to produce the same output
|
||||||
|
accepted_file_extensions = ('.h', '.cpp') # Files to format
|
||||||
|
|
||||||
|
def check_clang_format_version(clang_format_exe):
|
||||||
|
try:
|
||||||
|
output = subprocess.check_output([clang_format_exe, '-version'])
|
||||||
|
for ver in tested_versions:
|
||||||
|
if ver in output:
|
||||||
|
print "Detected clang-format version " + ver
|
||||||
|
return
|
||||||
|
raise RuntimeError("Untested version: " + output)
|
||||||
|
except Exception as e:
|
||||||
|
print 'Could not verify version of ' + clang_format_exe + '.'
|
||||||
|
raise e
|
||||||
|
|
||||||
|
def check_command_line_args(argv):
|
||||||
|
required_args = ['{clang-format-exe}', '{files}']
|
||||||
|
example_args = ['clang-format-3.x', 'src/main.cpp', 'src/wallet/*']
|
||||||
|
|
||||||
|
if(len(argv) < len(required_args) + 1):
|
||||||
|
for word in (['Usage:', argv[0]] + required_args):
|
||||||
|
print word,
|
||||||
|
print ''
|
||||||
|
for word in (['E.g:', argv[0]] + example_args):
|
||||||
|
print word,
|
||||||
|
print ''
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def run_clang_format(clang_format_exe, files):
|
||||||
|
for target in files:
|
||||||
|
if os.path.isdir(target):
|
||||||
|
for path, dirs, files in os.walk(target):
|
||||||
|
run_clang_format(clang_format_exe, (os.path.join(path, f) for f in files))
|
||||||
|
elif target.endswith(accepted_file_extensions):
|
||||||
|
print "Format " + target
|
||||||
|
subprocess.check_call([clang_format_exe, '-i', '-style=file', target], stdout=open(os.devnull, 'wb'), stderr=subprocess.STDOUT)
|
||||||
|
else:
|
||||||
|
print "Skip " + target
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
check_command_line_args(argv)
|
||||||
|
clang_format_exe = argv[1]
|
||||||
|
files = argv[2:]
|
||||||
|
check_clang_format_version(clang_format_exe)
|
||||||
|
run_clang_format(clang_format_exe, files)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main(sys.argv)
|
@ -1,53 +1,46 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
'''
|
'''
|
||||||
Run this script inside of src/ and it will look for all the files
|
Run this script to update all the copyright headers of files
|
||||||
that were changed this year that still have the last year in the
|
that were changed this year.
|
||||||
copyright headers, and it will fix the headers on that file using
|
|
||||||
a perl regex one liner.
|
|
||||||
|
|
||||||
For example: if it finds something like this and we're in 2014
|
For example:
|
||||||
|
|
||||||
// Copyright (c) 2009-2013 The Bitcoin developers
|
// Copyright (c) 2009-2012 The Bitcoin Core developers
|
||||||
|
|
||||||
it will change it to
|
it will change it to
|
||||||
|
|
||||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
// Copyright (c) 2009-2015 The Bitcoin Core developers
|
||||||
|
|
||||||
It will do this for all the files in the folder and its children.
|
|
||||||
|
|
||||||
Author: @gubatron
|
|
||||||
'''
|
'''
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
import re
|
||||||
|
|
||||||
year = time.gmtime()[0]
|
year = time.gmtime()[0]
|
||||||
last_year = year - 1
|
CMD_GIT_DATE = 'git log --format=@%%at -1 %s | date +"%%Y" -u -f -'
|
||||||
command = "perl -pi -e 's/%s The Bitcoin/%s The Bitcoin/' %s"
|
CMD_REGEX= "perl -pi -e 's/(20\d\d)(?:-20\d\d)? The Bitcoin/$1-%s The Bitcoin/' %s"
|
||||||
listFilesCommand = "find . | grep %s"
|
REGEX_CURRENT= re.compile("%s The Bitcoin" % year)
|
||||||
|
CMD_LIST_FILES= "find %s | grep %s"
|
||||||
|
|
||||||
extensions = [".cpp",".h"]
|
FOLDERS = ["./qa", "./src"]
|
||||||
|
EXTENSIONS = [".cpp",".h", ".py"]
|
||||||
|
|
||||||
def getLastGitModifiedDate(filePath):
|
def get_git_date(file_path):
|
||||||
gitGetLastCommitDateCommand = "git log " + filePath +" | grep Date | head -n 1"
|
r = os.popen(CMD_GIT_DATE % file_path)
|
||||||
p = os.popen(gitGetLastCommitDateCommand)
|
for l in r:
|
||||||
result = ""
|
# Result is one line, so just return
|
||||||
for l in p:
|
return l.replace("\n","")
|
||||||
result = l
|
return ""
|
||||||
break
|
|
||||||
result = result.replace("\n","")
|
|
||||||
return result
|
|
||||||
|
|
||||||
n=1
|
n=1
|
||||||
for extension in extensions:
|
for folder in FOLDERS:
|
||||||
foundFiles = os.popen(listFilesCommand % extension)
|
for extension in EXTENSIONS:
|
||||||
for filePath in foundFiles:
|
for file_path in os.popen(CMD_LIST_FILES % (folder, extension)):
|
||||||
filePath = filePath[1:-1]
|
file_path = os.getcwd() + file_path[1:-1]
|
||||||
if filePath.endswith(extension):
|
if file_path.endswith(extension):
|
||||||
filePath = os.getcwd() + filePath
|
git_date = get_git_date(file_path)
|
||||||
modifiedTime = getLastGitModifiedDate(filePath)
|
if str(year) == git_date:
|
||||||
if len(modifiedTime) > 0 and str(year) in modifiedTime:
|
# Only update if current year is not found
|
||||||
print n,"Last Git Modified: ", modifiedTime, " - ", filePath
|
if REGEX_CURRENT.search(open(file_path, "r").read()) is None:
|
||||||
os.popen(command % (last_year,year,filePath))
|
print n,"Last git edit", git_date, "-", file_path
|
||||||
n = n + 1
|
os.popen(CMD_REGEX % (year,file_path))
|
||||||
|
n = n + 1
|
||||||
|
|
||||||
|
74
contrib/devtools/git-subtree-check.sh
Executable file
74
contrib/devtools/git-subtree-check.sh
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
DIR="$1"
|
||||||
|
COMMIT="$2"
|
||||||
|
if [ -z "$COMMIT" ]; then
|
||||||
|
COMMIT=HEAD
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Taken from git-subtree (Copyright (C) 2009 Avery Pennarun <apenwarr@gmail.com>)
|
||||||
|
find_latest_squash()
|
||||||
|
{
|
||||||
|
dir="$1"
|
||||||
|
sq=
|
||||||
|
main=
|
||||||
|
sub=
|
||||||
|
git log --grep="^git-subtree-dir: $dir/*\$" \
|
||||||
|
--pretty=format:'START %H%n%s%n%n%b%nEND%n' "$COMMIT" |
|
||||||
|
while read a b junk; do
|
||||||
|
case "$a" in
|
||||||
|
START) sq="$b" ;;
|
||||||
|
git-subtree-mainline:) main="$b" ;;
|
||||||
|
git-subtree-split:) sub="$b" ;;
|
||||||
|
END)
|
||||||
|
if [ -n "$sub" ]; then
|
||||||
|
if [ -n "$main" ]; then
|
||||||
|
# a rejoin commit?
|
||||||
|
# Pretend its sub was a squash.
|
||||||
|
sq="$sub"
|
||||||
|
fi
|
||||||
|
echo "$sq" "$sub"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sq=
|
||||||
|
main=
|
||||||
|
sub=
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
latest_squash="$(find_latest_squash "$DIR")"
|
||||||
|
if [ -z "$latest_squash" ]; then
|
||||||
|
echo "ERROR: $DIR is not a subtree" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
set $latest_squash
|
||||||
|
old=$1
|
||||||
|
rev=$2
|
||||||
|
if [ "d$(git cat-file -t $rev 2>/dev/null)" != dcommit ]; then
|
||||||
|
echo "ERROR: subtree commit $rev unavailable. Fetch/update the subtree repository" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
tree_subtree=$(git show -s --format="%T" $rev)
|
||||||
|
echo "$DIR in $COMMIT was last updated to upstream commit $rev (tree $tree_subtree)"
|
||||||
|
tree_actual=$(git ls-tree -d "$COMMIT" "$DIR" | head -n 1)
|
||||||
|
if [ -z "$tree_actual" ]; then
|
||||||
|
echo "FAIL: subtree directory $DIR not found in $COMMIT" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
set $tree_actual
|
||||||
|
tree_actual_type=$2
|
||||||
|
tree_actual_tree=$3
|
||||||
|
echo "$DIR in $COMMIT currently refers to $tree_actual_type $tree_actual_tree"
|
||||||
|
if [ "d$tree_actual_type" != "dtree" ]; then
|
||||||
|
echo "FAIL: subtree directory $DIR is not a tree in $COMMIT" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$tree_actual_tree" != "$tree_subtree" ]; then
|
||||||
|
git diff-tree $tree_actual_tree $tree_subtree >&2
|
||||||
|
echo "FAIL: subtree directory tree doesn't match subtree commit tree" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "GOOD"
|
@ -156,12 +156,21 @@ read -p "Press 's' to sign off on the merge. " -n 1 -r >&2
|
|||||||
echo
|
echo
|
||||||
if [[ "d$REPLY" =~ ^d[Ss]$ ]]; then
|
if [[ "d$REPLY" =~ ^d[Ss]$ ]]; then
|
||||||
if [[ "$(git config --get user.signingkey)" == "" ]]; then
|
if [[ "$(git config --get user.signingkey)" == "" ]]; then
|
||||||
echo "WARNING: No GPG signing key set, not signing. Set one using:" >&2
|
echo "ERROR: No GPG signing key set, not signing. Set one using:" >&2
|
||||||
echo "git config --global user.signingkey <key>" >&2
|
echo "git config --global user.signingkey <key>" >&2
|
||||||
git commit -q --signoff --amend --no-edit
|
cleanup
|
||||||
|
exit 1
|
||||||
else
|
else
|
||||||
git commit -q --gpg-sign --amend --no-edit
|
if ! git commit -q --gpg-sign --amend --no-edit; then
|
||||||
|
echo "Error signing, exiting."
|
||||||
|
cleanup
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo "Not signing off on merge, exiting."
|
||||||
|
cleanup
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Clean up temporary branches, and put the result in $BRANCH.
|
# Clean up temporary branches, and put the result in $BRANCH.
|
||||||
|
75
contrib/devtools/optimize-pngs.py
Executable file
75
contrib/devtools/optimize-pngs.py
Executable file
@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
'''
|
||||||
|
Run this script every time you change one of the png files. Using pngcrush, it will optimize the png files, remove various color profiles, remove ancillary chunks (alla) and text chunks (text).
|
||||||
|
#pngcrush -brute -ow -rem gAMA -rem cHRM -rem iCCP -rem sRGB -rem alla -rem text
|
||||||
|
'''
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
import hashlib
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
def file_hash(filename):
|
||||||
|
'''Return hash of raw file contents'''
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
return hashlib.sha256(f.read()).hexdigest()
|
||||||
|
|
||||||
|
def content_hash(filename):
|
||||||
|
'''Return hash of RGBA contents of image'''
|
||||||
|
i = Image.open(filename)
|
||||||
|
i = i.convert('RGBA')
|
||||||
|
data = i.tobytes()
|
||||||
|
return hashlib.sha256(data).hexdigest()
|
||||||
|
|
||||||
|
pngcrush = 'pngcrush'
|
||||||
|
git = 'git'
|
||||||
|
folders = ["src/qt/res/movies", "src/qt/res/icons", "share/pixmaps"]
|
||||||
|
basePath = subprocess.check_output([git, 'rev-parse', '--show-toplevel']).rstrip('\n')
|
||||||
|
totalSaveBytes = 0
|
||||||
|
noHashChange = True
|
||||||
|
|
||||||
|
outputArray = []
|
||||||
|
for folder in folders:
|
||||||
|
absFolder=os.path.join(basePath, folder)
|
||||||
|
for file in os.listdir(absFolder):
|
||||||
|
extension = os.path.splitext(file)[1]
|
||||||
|
if extension.lower() == '.png':
|
||||||
|
print("optimizing "+file+"..."),
|
||||||
|
file_path = os.path.join(absFolder, file)
|
||||||
|
fileMetaMap = {'file' : file, 'osize': os.path.getsize(file_path), 'sha256Old' : file_hash(file_path)};
|
||||||
|
fileMetaMap['contentHashPre'] = content_hash(file_path)
|
||||||
|
|
||||||
|
pngCrushOutput = ""
|
||||||
|
try:
|
||||||
|
pngCrushOutput = subprocess.check_output(
|
||||||
|
[pngcrush, "-brute", "-ow", "-rem", "gAMA", "-rem", "cHRM", "-rem", "iCCP", "-rem", "sRGB", "-rem", "alla", "-rem", "text", file_path],
|
||||||
|
stderr=subprocess.STDOUT).rstrip('\n')
|
||||||
|
except:
|
||||||
|
print "pngcrush is not installed, aborting..."
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
#verify
|
||||||
|
if "Not a PNG file" in subprocess.check_output([pngcrush, "-n", "-v", file_path], stderr=subprocess.STDOUT):
|
||||||
|
print "PNG file "+file+" is corrupted after crushing, check out pngcursh version"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
fileMetaMap['sha256New'] = file_hash(file_path)
|
||||||
|
fileMetaMap['contentHashPost'] = content_hash(file_path)
|
||||||
|
|
||||||
|
if fileMetaMap['contentHashPre'] != fileMetaMap['contentHashPost']:
|
||||||
|
print "Image contents of PNG file "+file+" before and after crushing don't match"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
fileMetaMap['psize'] = os.path.getsize(file_path)
|
||||||
|
outputArray.append(fileMetaMap)
|
||||||
|
print("done\n"),
|
||||||
|
|
||||||
|
print "summary:\n+++++++++++++++++"
|
||||||
|
for fileDict in outputArray:
|
||||||
|
oldHash = fileDict['sha256Old']
|
||||||
|
newHash = fileDict['sha256New']
|
||||||
|
totalSaveBytes += fileDict['osize'] - fileDict['psize']
|
||||||
|
noHashChange = noHashChange and (oldHash == newHash)
|
||||||
|
print fileDict['file']+"\n size diff from: "+str(fileDict['osize'])+" to: "+str(fileDict['psize'])+"\n old sha256: "+oldHash+"\n new sha256: "+newHash+"\n"
|
||||||
|
|
||||||
|
print "completed. Checksum stable: "+str(noHashChange)+". Total reduction: "+str(totalSaveBytes)+" bytes"
|
181
contrib/devtools/security-check.py
Executable file
181
contrib/devtools/security-check.py
Executable file
@ -0,0 +1,181 @@
|
|||||||
|
#!/usr/bin/python2
|
||||||
|
'''
|
||||||
|
Perform basic ELF security checks on a series of executables.
|
||||||
|
Exit status will be 0 if succesful, and the program will be silent.
|
||||||
|
Otherwise the exit status will be 1 and it will log which executables failed which checks.
|
||||||
|
Needs `readelf` (for ELF) and `objdump` (for PE).
|
||||||
|
'''
|
||||||
|
from __future__ import division,print_function
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
|
||||||
|
OBJDUMP_CMD = os.getenv('OBJDUMP', '/usr/bin/objdump')
|
||||||
|
|
||||||
|
def check_ELF_PIE(executable):
|
||||||
|
'''
|
||||||
|
Check for position independent executable (PIE), allowing for address space randomization.
|
||||||
|
'''
|
||||||
|
p = subprocess.Popen([READELF_CMD, '-h', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
if p.returncode:
|
||||||
|
raise IOError('Error opening file')
|
||||||
|
|
||||||
|
ok = False
|
||||||
|
for line in stdout.split('\n'):
|
||||||
|
line = line.split()
|
||||||
|
if len(line)>=2 and line[0] == 'Type:' and line[1] == 'DYN':
|
||||||
|
ok = True
|
||||||
|
return ok
|
||||||
|
|
||||||
|
def get_ELF_program_headers(executable):
|
||||||
|
'''Return type and flags for ELF program headers'''
|
||||||
|
p = subprocess.Popen([READELF_CMD, '-l', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
if p.returncode:
|
||||||
|
raise IOError('Error opening file')
|
||||||
|
in_headers = False
|
||||||
|
count = 0
|
||||||
|
headers = []
|
||||||
|
for line in stdout.split('\n'):
|
||||||
|
if line.startswith('Program Headers:'):
|
||||||
|
in_headers = True
|
||||||
|
if line == '':
|
||||||
|
in_headers = False
|
||||||
|
if in_headers:
|
||||||
|
if count == 1: # header line
|
||||||
|
ofs_typ = line.find('Type')
|
||||||
|
ofs_offset = line.find('Offset')
|
||||||
|
ofs_flags = line.find('Flg')
|
||||||
|
ofs_align = line.find('Align')
|
||||||
|
if ofs_typ == -1 or ofs_offset == -1 or ofs_flags == -1 or ofs_align == -1:
|
||||||
|
raise ValueError('Cannot parse elfread -lW output')
|
||||||
|
elif count > 1:
|
||||||
|
typ = line[ofs_typ:ofs_offset].rstrip()
|
||||||
|
flags = line[ofs_flags:ofs_align].rstrip()
|
||||||
|
headers.append((typ, flags))
|
||||||
|
count += 1
|
||||||
|
return headers
|
||||||
|
|
||||||
|
def check_ELF_NX(executable):
|
||||||
|
'''
|
||||||
|
Check that no sections are writable and executable (including the stack)
|
||||||
|
'''
|
||||||
|
have_wx = False
|
||||||
|
have_gnu_stack = False
|
||||||
|
for (typ, flags) in get_ELF_program_headers(executable):
|
||||||
|
if typ == 'GNU_STACK':
|
||||||
|
have_gnu_stack = True
|
||||||
|
if 'W' in flags and 'E' in flags: # section is both writable and executable
|
||||||
|
have_wx = True
|
||||||
|
return have_gnu_stack and not have_wx
|
||||||
|
|
||||||
|
def check_ELF_RELRO(executable):
|
||||||
|
'''
|
||||||
|
Check for read-only relocations.
|
||||||
|
GNU_RELRO program header must exist
|
||||||
|
Dynamic section must have BIND_NOW flag
|
||||||
|
'''
|
||||||
|
have_gnu_relro = False
|
||||||
|
for (typ, flags) in get_ELF_program_headers(executable):
|
||||||
|
# Note: not checking flags == 'R': here as linkers set the permission differently
|
||||||
|
# This does not affect security: the permission flags of the GNU_RELRO program header are ignored, the PT_LOAD header determines the effective permissions.
|
||||||
|
# However, the dynamic linker need to write to this area so these are RW.
|
||||||
|
# Glibc itself takes care of mprotecting this area R after relocations are finished.
|
||||||
|
# See also http://permalink.gmane.org/gmane.comp.gnu.binutils/71347
|
||||||
|
if typ == 'GNU_RELRO':
|
||||||
|
have_gnu_relro = True
|
||||||
|
|
||||||
|
have_bindnow = False
|
||||||
|
p = subprocess.Popen([READELF_CMD, '-d', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
if p.returncode:
|
||||||
|
raise IOError('Error opening file')
|
||||||
|
for line in stdout.split('\n'):
|
||||||
|
tokens = line.split()
|
||||||
|
if len(tokens)>1 and tokens[1] == '(BIND_NOW)' or (len(tokens)>2 and tokens[1] == '(FLAGS)' and 'BIND_NOW' in tokens[2]):
|
||||||
|
have_bindnow = True
|
||||||
|
return have_gnu_relro and have_bindnow
|
||||||
|
|
||||||
|
def check_ELF_Canary(executable):
|
||||||
|
'''
|
||||||
|
Check for use of stack canary
|
||||||
|
'''
|
||||||
|
p = subprocess.Popen([READELF_CMD, '--dyn-syms', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
if p.returncode:
|
||||||
|
raise IOError('Error opening file')
|
||||||
|
ok = False
|
||||||
|
for line in stdout.split('\n'):
|
||||||
|
if '__stack_chk_fail' in line:
|
||||||
|
ok = True
|
||||||
|
return ok
|
||||||
|
|
||||||
|
def get_PE_dll_characteristics(executable):
|
||||||
|
'''
|
||||||
|
Get PE DllCharacteristics bits
|
||||||
|
'''
|
||||||
|
p = subprocess.Popen([OBJDUMP_CMD, '-x', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
if p.returncode:
|
||||||
|
raise IOError('Error opening file')
|
||||||
|
for line in stdout.split('\n'):
|
||||||
|
tokens = line.split()
|
||||||
|
if len(tokens)>=2 and tokens[0] == 'DllCharacteristics':
|
||||||
|
return int(tokens[1],16)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
def check_PE_PIE(executable):
|
||||||
|
'''PIE: DllCharacteristics bit 0x40 signifies dynamicbase (ASLR)'''
|
||||||
|
return bool(get_PE_dll_characteristics(executable) & 0x40)
|
||||||
|
|
||||||
|
def check_PE_NX(executable):
|
||||||
|
'''NX: DllCharacteristics bit 0x100 signifies nxcompat (DEP)'''
|
||||||
|
return bool(get_PE_dll_characteristics(executable) & 0x100)
|
||||||
|
|
||||||
|
CHECKS = {
|
||||||
|
'ELF': [
|
||||||
|
('PIE', check_ELF_PIE),
|
||||||
|
('NX', check_ELF_NX),
|
||||||
|
('RELRO', check_ELF_RELRO),
|
||||||
|
('Canary', check_ELF_Canary)
|
||||||
|
],
|
||||||
|
'PE': [
|
||||||
|
('PIE', check_PE_PIE),
|
||||||
|
('NX', check_PE_NX)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
def identify_executable(executable):
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
magic = f.read(4)
|
||||||
|
if magic.startswith(b'MZ'):
|
||||||
|
return 'PE'
|
||||||
|
elif magic.startswith(b'\x7fELF'):
|
||||||
|
return 'ELF'
|
||||||
|
return None
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
retval = 0
|
||||||
|
for filename in sys.argv[1:]:
|
||||||
|
try:
|
||||||
|
etype = identify_executable(filename)
|
||||||
|
if etype is None:
|
||||||
|
print('%s: unknown format' % filename)
|
||||||
|
retval = 1
|
||||||
|
continue
|
||||||
|
|
||||||
|
failed = []
|
||||||
|
for (name, func) in CHECKS[etype]:
|
||||||
|
if not func(filename):
|
||||||
|
failed.append(name)
|
||||||
|
if failed:
|
||||||
|
print('%s: failed %s' % (filename, ' '.join(failed)))
|
||||||
|
retval = 1
|
||||||
|
except IOError:
|
||||||
|
print('%s: cannot open' % filename)
|
||||||
|
retval = 1
|
||||||
|
exit(retval)
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python2
|
||||||
# Copyright (c) 2014 Wladimir J. van der Laan
|
# Copyright (c) 2014 Wladimir J. van der Laan
|
||||||
# Distributed under the MIT/X11 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.
|
||||||
'''
|
'''
|
||||||
A script to check that the (Linux) executables produced by gitian only contain
|
A script to check that the (Linux) executables produced by gitian only contain
|
||||||
@ -15,6 +15,7 @@ from __future__ import division, print_function
|
|||||||
import subprocess
|
import subprocess
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
# Debian 6.0.9 (Squeeze) has:
|
# Debian 6.0.9 (Squeeze) has:
|
||||||
#
|
#
|
||||||
@ -41,12 +42,34 @@ MAX_VERSIONS = {
|
|||||||
'GLIBCXX': (3,4,13),
|
'GLIBCXX': (3,4,13),
|
||||||
'GLIBC': (2,11)
|
'GLIBC': (2,11)
|
||||||
}
|
}
|
||||||
|
# See here for a description of _IO_stdin_used:
|
||||||
|
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634261#109
|
||||||
|
|
||||||
# Ignore symbols that are exported as part of every executable
|
# Ignore symbols that are exported as part of every executable
|
||||||
IGNORE_EXPORTS = {
|
IGNORE_EXPORTS = {
|
||||||
'_edata', '_end', '_init', '__bss_start', '_fini'
|
'_edata', '_end', '_init', '__bss_start', '_fini', '_IO_stdin_used'
|
||||||
|
}
|
||||||
|
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
|
||||||
|
CPPFILT_CMD = os.getenv('CPPFILT', '/usr/bin/c++filt')
|
||||||
|
# Allowed NEEDED libraries
|
||||||
|
ALLOWED_LIBRARIES = {
|
||||||
|
# bitcoind and bitcoin-qt
|
||||||
|
'libgcc_s.so.1', # GCC base support
|
||||||
|
'libc.so.6', # C library
|
||||||
|
'libpthread.so.0', # threading
|
||||||
|
'libanl.so.1', # DNS resolve
|
||||||
|
'libm.so.6', # math library
|
||||||
|
'librt.so.1', # real-time (clock)
|
||||||
|
'ld-linux-x86-64.so.2', # 64-bit dynamic linker
|
||||||
|
'ld-linux.so.2', # 32-bit dynamic linker
|
||||||
|
# bitcoin-qt only
|
||||||
|
'libX11-xcb.so.1', # part of X11
|
||||||
|
'libX11.so.6', # part of X11
|
||||||
|
'libxcb.so.1', # part of X11
|
||||||
|
'libfontconfig.so.1', # font support
|
||||||
|
'libfreetype.so.6', # font parsing
|
||||||
|
'libdl.so.2' # programming interface to dynamic linker
|
||||||
}
|
}
|
||||||
READELF_CMD = '/usr/bin/readelf'
|
|
||||||
CPPFILT_CMD = '/usr/bin/c++filt'
|
|
||||||
|
|
||||||
class CPPFilt(object):
|
class CPPFilt(object):
|
||||||
'''
|
'''
|
||||||
@ -98,6 +121,22 @@ def check_version(max_versions, version):
|
|||||||
return False
|
return False
|
||||||
return ver <= max_versions[lib]
|
return ver <= max_versions[lib]
|
||||||
|
|
||||||
|
def read_libraries(filename):
|
||||||
|
p = subprocess.Popen([READELF_CMD, '-d', '-W', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
if p.returncode:
|
||||||
|
raise IOError('Error opening file')
|
||||||
|
libraries = []
|
||||||
|
for line in stdout.split('\n'):
|
||||||
|
tokens = line.split()
|
||||||
|
if len(tokens)>2 and tokens[1] == '(NEEDED)':
|
||||||
|
match = re.match('^Shared library: \[(.*)\]$', ' '.join(tokens[2:]))
|
||||||
|
if match:
|
||||||
|
libraries.append(match.group(1))
|
||||||
|
else:
|
||||||
|
raise ValueError('Unparseable (NEEDED) specification')
|
||||||
|
return libraries
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
cppfilt = CPPFilt()
|
cppfilt = CPPFilt()
|
||||||
retval = 0
|
retval = 0
|
||||||
@ -113,6 +152,11 @@ if __name__ == '__main__':
|
|||||||
continue
|
continue
|
||||||
print('%s: export of symbol %s not allowed' % (filename, cppfilt(sym)))
|
print('%s: export of symbol %s not allowed' % (filename, cppfilt(sym)))
|
||||||
retval = 1
|
retval = 1
|
||||||
|
# Check dependency libraries
|
||||||
|
for library_name in read_libraries(filename):
|
||||||
|
if library_name not in ALLOWED_LIBRARIES:
|
||||||
|
print('%s: NEEDED library %s is not allowed' % (filename, library_name))
|
||||||
|
retval = 1
|
||||||
|
|
||||||
exit(retval)
|
exit(retval)
|
||||||
|
|
||||||
|
60
contrib/devtools/test-security-check.py
Executable file
60
contrib/devtools/test-security-check.py
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/python2
|
||||||
|
'''
|
||||||
|
Test script for security-check.py
|
||||||
|
'''
|
||||||
|
from __future__ import division,print_function
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
def write_testcode(filename):
|
||||||
|
with open(filename, 'w') as f:
|
||||||
|
f.write('''
|
||||||
|
#include <stdio.h>
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
printf("the quick brown fox jumps over the lazy god\\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
''')
|
||||||
|
|
||||||
|
def call_security_check(cc, source, executable, options):
|
||||||
|
subprocess.check_call([cc,source,'-o',executable] + options)
|
||||||
|
p = subprocess.Popen(['./security-check.py',executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
return (p.returncode, stdout.rstrip())
|
||||||
|
|
||||||
|
class TestSecurityChecks(unittest.TestCase):
|
||||||
|
def test_ELF(self):
|
||||||
|
source = 'test1.c'
|
||||||
|
executable = 'test1'
|
||||||
|
cc = 'gcc'
|
||||||
|
write_testcode(source)
|
||||||
|
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-fno-stack-protector','-Wl,-znorelro']),
|
||||||
|
(1, executable+': failed PIE NX RELRO Canary'))
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fno-stack-protector','-Wl,-znorelro']),
|
||||||
|
(1, executable+': failed PIE RELRO Canary'))
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro']),
|
||||||
|
(1, executable+': failed PIE RELRO'))
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro','-pie','-fPIE']),
|
||||||
|
(1, executable+': failed RELRO'))
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE']),
|
||||||
|
(0, ''))
|
||||||
|
|
||||||
|
def test_PE(self):
|
||||||
|
source = 'test1.c'
|
||||||
|
executable = 'test1.exe'
|
||||||
|
cc = 'i686-w64-mingw32-gcc'
|
||||||
|
write_testcode(source)
|
||||||
|
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, []),
|
||||||
|
(1, executable+': failed PIE NX'))
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat']),
|
||||||
|
(1, executable+': failed PIE'))
|
||||||
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--dynamicbase']),
|
||||||
|
(0, ''))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# Copyright (c) 2014 Wladimir J. van der Laan
|
# Copyright (c) 2014 Wladimir J. van der Laan
|
||||||
# Distributed under the MIT/X11 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.
|
||||||
'''
|
'''
|
||||||
Run this script from the root of the repository to update all translations from
|
Run this script from the root of the repository to update all translations from
|
||||||
@ -29,6 +29,8 @@ TX = 'tx'
|
|||||||
SOURCE_LANG = 'dash_en.ts'
|
SOURCE_LANG = 'dash_en.ts'
|
||||||
# Directory with locale files
|
# Directory with locale files
|
||||||
LOCALE_DIR = 'src/qt/locale'
|
LOCALE_DIR = 'src/qt/locale'
|
||||||
|
# Minimum number of messages for translation to be considered at all
|
||||||
|
MIN_NUM_MESSAGES = 10
|
||||||
|
|
||||||
def check_at_repository_root():
|
def check_at_repository_root():
|
||||||
if not os.path.exists('.git'):
|
if not os.path.exists('.git'):
|
||||||
@ -37,7 +39,7 @@ def check_at_repository_root():
|
|||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
def fetch_all_translations():
|
def fetch_all_translations():
|
||||||
if subprocess.call([TX, 'pull', '-f']):
|
if subprocess.call([TX, 'pull', '-f', '-a']):
|
||||||
print('Error while fetching translations', file=sys.stderr)
|
print('Error while fetching translations', file=sys.stderr)
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
@ -73,7 +75,7 @@ def sanitize_string(s):
|
|||||||
'''Sanitize string for printing'''
|
'''Sanitize string for printing'''
|
||||||
return s.replace('\n',' ')
|
return s.replace('\n',' ')
|
||||||
|
|
||||||
def check_format_specifiers(source, translation, errors):
|
def check_format_specifiers(source, translation, errors, numerus):
|
||||||
source_f = split_format_specifiers(find_format_specifiers(source))
|
source_f = split_format_specifiers(find_format_specifiers(source))
|
||||||
# assert that no source messages contain both Qt and strprintf format specifiers
|
# assert that no source messages contain both Qt and strprintf format specifiers
|
||||||
# if this fails, go change the source as this is hacky and confusing!
|
# if this fails, go change the source as this is hacky and confusing!
|
||||||
@ -81,10 +83,13 @@ def check_format_specifiers(source, translation, errors):
|
|||||||
try:
|
try:
|
||||||
translation_f = split_format_specifiers(find_format_specifiers(translation))
|
translation_f = split_format_specifiers(find_format_specifiers(translation))
|
||||||
except IndexError:
|
except IndexError:
|
||||||
errors.append("Parse error in translation '%s'" % sanitize_string(translation))
|
errors.append("Parse error in translation for '%s': '%s'" % (sanitize_string(source), sanitize_string(translation)))
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
if source_f != translation_f:
|
if source_f != translation_f:
|
||||||
|
if numerus and source_f == (set(), ['n']) and translation_f == (set(), []) and translation.find('%') == -1:
|
||||||
|
# Allow numerus translations to omit %n specifier (usually when it only has one possible value)
|
||||||
|
return True
|
||||||
errors.append("Mismatch between '%s' and '%s'" % (sanitize_string(source), sanitize_string(translation)))
|
errors.append("Mismatch between '%s' and '%s'" % (sanitize_string(source), sanitize_string(translation)))
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@ -151,7 +156,7 @@ def postprocess_translations(reduce_diff_hacks=False):
|
|||||||
if translation is None:
|
if translation is None:
|
||||||
continue
|
continue
|
||||||
errors = []
|
errors = []
|
||||||
valid = check_format_specifiers(source, translation, errors)
|
valid = check_format_specifiers(source, translation, errors, numerus)
|
||||||
|
|
||||||
for error in errors:
|
for error in errors:
|
||||||
print('%s: %s' % (filename, error))
|
print('%s: %s' % (filename, error))
|
||||||
@ -169,6 +174,15 @@ def postprocess_translations(reduce_diff_hacks=False):
|
|||||||
if translation_node.get('type') == 'unfinished':
|
if translation_node.get('type') == 'unfinished':
|
||||||
context.remove(message)
|
context.remove(message)
|
||||||
|
|
||||||
|
# check if document is (virtually) empty, and remove it if so
|
||||||
|
num_messages = 0
|
||||||
|
for context in root.findall('context'):
|
||||||
|
for message in context.findall('message'):
|
||||||
|
num_messages += 1
|
||||||
|
if num_messages < MIN_NUM_MESSAGES:
|
||||||
|
print('Removing %s, as it contains only %i messages' % (filepath, num_messages))
|
||||||
|
continue
|
||||||
|
|
||||||
# write fixed-up tree
|
# write fixed-up tree
|
||||||
# if diff reduction requested, replace some XML to 'sanitize' to qt formatting
|
# if diff reduction requested, replace some XML to 'sanitize' to qt formatting
|
||||||
if reduce_diff_hacks:
|
if reduce_diff_hacks:
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
### Gavin's notes on getting gitian builds up and running using KVM:###
|
### Gavin's notes on getting gitian builds up and running using KVM
|
||||||
|
|
||||||
These instructions distilled from:
|
These instructions distilled from
|
||||||
[ https://help.ubuntu.com/community/KVM/Installation]( https://help.ubuntu.com/community/KVM/Installation)
|
[https://help.ubuntu.com/community/KVM/Installation](https://help.ubuntu.com/community/KVM/Installation).
|
||||||
... see there for complete details.
|
|
||||||
|
|
||||||
You need the right hardware: you need a 64-bit-capable CPU with hardware virtualization support (Intel VT-x or AMD-V). Not all modern CPUs support hardware virtualization.
|
You need the right hardware: you need a 64-bit-capable CPU with hardware virtualization support (Intel VT-x or AMD-V). Not all modern CPUs support hardware virtualization.
|
||||||
|
|
||||||
@ -27,20 +26,20 @@ Once you've got the right hardware and software:
|
|||||||
|
|
||||||
# Create base images
|
# Create base images
|
||||||
cd gitian-builder
|
cd gitian-builder
|
||||||
bin/make-base-vm --suite precise --arch amd64
|
bin/make-base-vm --suite trusty --arch amd64
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
# Get inputs (see doc/release-process.md for exact inputs needed and where to get them)
|
# Get inputs (see doc/release-process.md for exact inputs needed and where to get them)
|
||||||
...
|
...
|
||||||
|
|
||||||
# For further build instructions see doc/release-notes.md
|
# For further build instructions see doc/release-process.md
|
||||||
...
|
...
|
||||||
|
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
`gitian-builder` now also supports building using LXC. See
|
`gitian-builder` now also supports building using LXC. See
|
||||||
[ https://help.ubuntu.com/12.04/serverguide/lxc.html]( https://help.ubuntu.com/12.04/serverguide/lxc.html)
|
[help.ubuntu.com](https://help.ubuntu.com/14.04/serverguide/lxc.html)
|
||||||
... for how to get LXC up and running under Ubuntu.
|
for how to get LXC up and running under Ubuntu.
|
||||||
|
|
||||||
If your main machine is a 64-bit Mac or PC with a few gigabytes of memory
|
If your main machine is a 64-bit Mac or PC with a few gigabytes of memory
|
||||||
and at least 10 gigabytes of free disk space, you can `gitian-build` using
|
and at least 10 gigabytes of free disk space, you can `gitian-build` using
|
||||||
|
@ -2,20 +2,22 @@
|
|||||||
name: "dash-linux-0.12"
|
name: "dash-linux-0.12"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "g++-multilib"
|
- "g++-multilib"
|
||||||
- "git-core"
|
- "git-core"
|
||||||
- "pkg-config"
|
- "pkg-config"
|
||||||
- "autoconf2.13"
|
- "autoconf"
|
||||||
- "libtool"
|
- "libtool"
|
||||||
- "automake"
|
- "automake"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
- "bsdmainutils"
|
- "bsdmainutils"
|
||||||
- "binutils-gold"
|
- "binutils-gold"
|
||||||
reference_datetime: "2014-01-10 00:00:00"
|
- "ca-certificates"
|
||||||
|
- "python"
|
||||||
|
reference_datetime: "2016-01-01 00:00:00"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/dashpay/dash.git"
|
- "url": "https://github.com/dashpay/dash.git"
|
||||||
"dir": "dash"
|
"dir": "dash"
|
||||||
@ -23,7 +25,7 @@ files: []
|
|||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
HOSTS="i686-pc-linux-gnu x86_64-unknown-linux-gnu"
|
HOSTS="i686-pc-linux-gnu x86_64-unknown-linux-gnu"
|
||||||
CONFIGFLAGS="--enable-upnp-default --enable-glibc-back-compat"
|
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
|
||||||
FAKETIME_HOST_PROGS=""
|
FAKETIME_HOST_PROGS=""
|
||||||
FAKETIME_PROGS="date ar ranlib nm strip"
|
FAKETIME_PROGS="date ar ranlib nm strip"
|
||||||
|
|
||||||
@ -43,7 +45,7 @@ script: |
|
|||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
@ -54,7 +56,7 @@ script: |
|
|||||||
for prog in ${FAKETIME_HOST_PROGS}; do
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
chmod +x ${WRAP_DIR}/${i}-${prog}
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
@ -94,6 +96,8 @@ script: |
|
|||||||
|
|
||||||
./configure --prefix=${BASEPREFIX}/${i} --bindir=${INSTALLPATH}/bin --includedir=${INSTALLPATH}/include --libdir=${INSTALLPATH}/lib --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
./configure --prefix=${BASEPREFIX}/${i} --bindir=${INSTALLPATH}/bin --includedir=${INSTALLPATH}/include --libdir=${INSTALLPATH}/lib --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
||||||
make ${MAKEOPTS}
|
make ${MAKEOPTS}
|
||||||
|
make ${MAKEOPTS} -C src check-security
|
||||||
|
make ${MAKEOPTS} -C src check-symbols
|
||||||
make install-strip
|
make install-strip
|
||||||
cd installed
|
cd installed
|
||||||
find . -name "lib*.la" -delete
|
find . -name "lib*.la" -delete
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
name: "dash-dmg-signer"
|
name: "dash-dmg-signer"
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "libc6:i386"
|
|
||||||
- "faketime"
|
- "faketime"
|
||||||
reference_datetime: "2013-06-01 00:00:00"
|
reference_datetime: "2016-01-01 00:00:00"
|
||||||
remotes: []
|
remotes:
|
||||||
|
- "url": "https://github.com/dashpay/dash-detached-sigs.git"
|
||||||
|
"dir": "signature"
|
||||||
files:
|
files:
|
||||||
- "dash-osx-unsigned.tar.gz"
|
- "dash-osx-unsigned.tar.gz"
|
||||||
- "signature.tar.gz"
|
|
||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
mkdir -p ${WRAP_DIR}
|
mkdir -p ${WRAP_DIR}
|
||||||
@ -22,7 +22,7 @@ script: |
|
|||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
@ -32,6 +32,6 @@ script: |
|
|||||||
SIGNED=dash-osx-signed.dmg
|
SIGNED=dash-osx-signed.dmg
|
||||||
|
|
||||||
tar -xf ${UNSIGNED}
|
tar -xf ${UNSIGNED}
|
||||||
./detached-sig-apply.sh ${UNSIGNED} signature.tar.gz
|
./detached-sig-apply.sh ${UNSIGNED} signature/osx
|
||||||
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "Dash-Qt" -no-pad -r -apple -o uncompressed.dmg signed-app
|
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "Dash-Core" -no-pad -r -apple -o uncompressed.dmg signed-app
|
||||||
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}
|
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
name: "dash-osx-0.12"
|
name: "dash-osx-0.12"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "g++-multilib"
|
- "g++"
|
||||||
- "git-core"
|
- "git-core"
|
||||||
- "pkg-config"
|
- "pkg-config"
|
||||||
- "autoconf2.13"
|
- "autoconf"
|
||||||
- "libtool"
|
- "libtool"
|
||||||
- "automake"
|
- "automake"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
@ -18,16 +18,18 @@ packages:
|
|||||||
- "libcap-dev"
|
- "libcap-dev"
|
||||||
- "libz-dev"
|
- "libz-dev"
|
||||||
- "libbz2-dev"
|
- "libbz2-dev"
|
||||||
reference_datetime: "2013-06-01 00:00:00"
|
- "ca-certificates"
|
||||||
|
- "python"
|
||||||
|
reference_datetime: "2016-01-01 00:00:00"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/dashpay/dash.git"
|
- "url": "https://github.com/dashpay/dash.git"
|
||||||
"dir": "dash"
|
"dir": "dash"
|
||||||
files:
|
files:
|
||||||
- "MacOSX10.7.sdk.tar.gz"
|
- "MacOSX10.9.sdk.tar.gz"
|
||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
HOSTS="x86_64-apple-darwin11"
|
HOSTS="x86_64-apple-darwin11"
|
||||||
CONFIGFLAGS="--enable-upnp-default GENISOIMAGE=$WRAP_DIR/genisoimage"
|
CONFIGFLAGS="--enable-reduce-exports GENISOIMAGE=$WRAP_DIR/genisoimage"
|
||||||
FAKETIME_HOST_PROGS=""
|
FAKETIME_HOST_PROGS=""
|
||||||
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
|
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
|
||||||
|
|
||||||
@ -49,7 +51,7 @@ script: |
|
|||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
@ -60,7 +62,7 @@ script: |
|
|||||||
for prog in ${FAKETIME_HOST_PROGS}; do
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
chmod +x ${WRAP_DIR}/${i}-${prog}
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
@ -72,7 +74,7 @@ script: |
|
|||||||
BASEPREFIX=`pwd`/depends
|
BASEPREFIX=`pwd`/depends
|
||||||
|
|
||||||
mkdir -p ${BASEPREFIX}/SDKs
|
mkdir -p ${BASEPREFIX}/SDKs
|
||||||
tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX10.7.sdk.tar.gz
|
tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX10.9.sdk.tar.gz
|
||||||
|
|
||||||
# Build dependencies for each host
|
# Build dependencies for each host
|
||||||
for i in $HOSTS; do
|
for i in $HOSTS; do
|
||||||
@ -120,7 +122,7 @@ script: |
|
|||||||
popd
|
popd
|
||||||
|
|
||||||
make deploy
|
make deploy
|
||||||
${WRAP_DIR}/dmg dmg Dash-Qt.dmg ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
|
${WRAP_DIR}/dmg dmg Dash-Core.dmg ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
|
||||||
|
|
||||||
cd installed
|
cd installed
|
||||||
find . -name "lib*.la" -delete
|
find . -name "lib*.la" -delete
|
||||||
|
39
contrib/gitian-descriptors/gitian-win-signer.yml
Normal file
39
contrib/gitian-descriptors/gitian-win-signer.yml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
name: "bitcoin-win-signer"
|
||||||
|
suites:
|
||||||
|
- "trusty"
|
||||||
|
architectures:
|
||||||
|
- "amd64"
|
||||||
|
packages:
|
||||||
|
- "libssl-dev"
|
||||||
|
- "autoconf"
|
||||||
|
reference_datetime: "2016-01-01 00:00:00"
|
||||||
|
remotes:
|
||||||
|
- "url": "https://github.com/bitcoin/bitcoin-detached-sigs.git"
|
||||||
|
"dir": "signature"
|
||||||
|
files:
|
||||||
|
- "osslsigncode-1.7.1.tar.gz"
|
||||||
|
- "osslsigncode-Backports-to-1.7.1.patch"
|
||||||
|
- "bitcoin-win-unsigned.tar.gz"
|
||||||
|
script: |
|
||||||
|
BUILD_DIR=`pwd`
|
||||||
|
SIGDIR=${BUILD_DIR}/signature/win
|
||||||
|
UNSIGNED_DIR=${BUILD_DIR}/unsigned
|
||||||
|
|
||||||
|
echo "f9a8cdb38b9c309326764ebc937cba1523a3a751a7ab05df3ecc99d18ae466c9 osslsigncode-1.7.1.tar.gz" | sha256sum -c
|
||||||
|
echo "a8c4e9cafba922f89de0df1f2152e7be286aba73f78505169bc351a7938dd911 osslsigncode-Backports-to-1.7.1.patch" | sha256sum -c
|
||||||
|
|
||||||
|
mkdir -p ${UNSIGNED_DIR}
|
||||||
|
tar -C ${UNSIGNED_DIR} -xf bitcoin-win-unsigned.tar.gz
|
||||||
|
|
||||||
|
tar xf osslsigncode-1.7.1.tar.gz
|
||||||
|
cd osslsigncode-1.7.1
|
||||||
|
patch -p1 < ${BUILD_DIR}/osslsigncode-Backports-to-1.7.1.patch
|
||||||
|
|
||||||
|
./configure --without-gsf --without-curl --disable-dependency-tracking
|
||||||
|
make
|
||||||
|
find ${UNSIGNED_DIR} -name "*-unsigned.exe" | while read i; do
|
||||||
|
INFILE="`basename "${i}"`"
|
||||||
|
OUTFILE="`echo "${INFILE}" | sed s/-unsigned//`"
|
||||||
|
./osslsigncode attach-signature -in "${i}" -out "${OUTDIR}/${OUTFILE}" -sigin "${SIGDIR}/${INFILE}.pem"
|
||||||
|
done
|
@ -2,14 +2,14 @@
|
|||||||
name: "dash-win-0.12"
|
name: "dash-win-0.12"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "g++"
|
- "g++"
|
||||||
- "git-core"
|
- "git-core"
|
||||||
- "pkg-config"
|
- "pkg-config"
|
||||||
- "autoconf2.13"
|
- "autoconf"
|
||||||
- "libtool"
|
- "libtool"
|
||||||
- "automake"
|
- "automake"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
@ -18,7 +18,9 @@ packages:
|
|||||||
- "g++-mingw-w64"
|
- "g++-mingw-w64"
|
||||||
- "nsis"
|
- "nsis"
|
||||||
- "zip"
|
- "zip"
|
||||||
reference_datetime: "2014-01-10 00:00:00"
|
- "ca-certificates"
|
||||||
|
- "python"
|
||||||
|
reference_datetime: "2016-01-01 00:00:00"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/dashpay/dash.git"
|
- "url": "https://github.com/dashpay/dash.git"
|
||||||
"dir": "dash"
|
"dir": "dash"
|
||||||
@ -26,7 +28,7 @@ files: []
|
|||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
HOSTS="x86_64-w64-mingw32 i686-w64-mingw32"
|
HOSTS="x86_64-w64-mingw32 i686-w64-mingw32"
|
||||||
CONFIGFLAGS="--enable-upnp-default"
|
CONFIGFLAGS="--enable-reduce-exports"
|
||||||
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip"
|
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip"
|
||||||
FAKETIME_PROGS="date makensis zip"
|
FAKETIME_PROGS="date makensis zip"
|
||||||
|
|
||||||
@ -46,7 +48,7 @@ script: |
|
|||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
@ -57,12 +59,36 @@ script: |
|
|||||||
for prog in ${FAKETIME_HOST_PROGS}; do
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
chmod +x ${WRAP_DIR}/${i}-${prog}
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Create per-host linker wrapper
|
||||||
|
# This is only needed for trusty, as the mingw linker leaks a few bytes of
|
||||||
|
# heap, causing non-determinism. See discussion in https://github.com/bitcoin/bitcoin/pull/6900
|
||||||
|
for i in $HOSTS; do
|
||||||
|
mkdir -p ${WRAP_DIR}/${i}
|
||||||
|
for prog in collect2; do
|
||||||
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}/${prog}
|
||||||
|
REAL=$(${i}-gcc -print-prog-name=${prog})
|
||||||
|
echo "export MALLOC_PERTURB_=255" >> ${WRAP_DIR}/${i}/${prog}
|
||||||
|
echo "${REAL} \$@" >> $WRAP_DIR/${i}/${prog}
|
||||||
|
chmod +x ${WRAP_DIR}/${i}/${prog}
|
||||||
|
done
|
||||||
|
for prog in gcc g++; do
|
||||||
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "export COMPILER_PATH=${WRAP_DIR}/${i}" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
export PATH=${WRAP_DIR}:${PATH}
|
export PATH=${WRAP_DIR}:${PATH}
|
||||||
|
|
||||||
cd dash
|
cd dash
|
||||||
@ -84,6 +110,8 @@ script: |
|
|||||||
pushd temp
|
pushd temp
|
||||||
tar xf ../$SOURCEDIST
|
tar xf ../$SOURCEDIST
|
||||||
find dash-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
find dash-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
||||||
|
mkdir -p $OUTDIR/src
|
||||||
|
cp ../$SOURCEDIST $OUTDIR/src
|
||||||
popd
|
popd
|
||||||
|
|
||||||
ORIGPATH="$PATH"
|
ORIGPATH="$PATH"
|
||||||
@ -98,6 +126,7 @@ script: |
|
|||||||
|
|
||||||
./configure --prefix=${BASEPREFIX}/${i} --bindir=${INSTALLPATH}/bin --includedir=${INSTALLPATH}/include --libdir=${INSTALLPATH}/lib --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
./configure --prefix=${BASEPREFIX}/${i} --bindir=${INSTALLPATH}/bin --includedir=${INSTALLPATH}/include --libdir=${INSTALLPATH}/lib --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
||||||
make ${MAKEOPTS}
|
make ${MAKEOPTS}
|
||||||
|
make ${MAKEOPTS} -C src check-security
|
||||||
make deploy
|
make deploy
|
||||||
make install-strip
|
make install-strip
|
||||||
cp -f dash-*setup*.exe $OUTDIR/
|
cp -f dash-*setup*.exe $OUTDIR/
|
||||||
@ -109,7 +138,8 @@ script: |
|
|||||||
find ${DISTNAME} -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
|
find ${DISTNAME} -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
|
||||||
cd ../..
|
cd ../..
|
||||||
done
|
done
|
||||||
mkdir -p $OUTDIR/src
|
cd $OUTDIR
|
||||||
mv $SOURCEDIST $OUTDIR/src
|
rename 's/-setup\.exe$/-setup-unsigned.exe/' *-setup.exe
|
||||||
|
find . -name "*-setup-unsigned.exe" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz
|
||||||
mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip
|
mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip
|
||||||
mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip
|
mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip
|
||||||
|
Binary file not shown.
142
contrib/gitian-downloader/btcdrak-key.pgp
Normal file
142
contrib/gitian-downloader/btcdrak-key.pgp
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v2
|
||||||
|
|
||||||
|
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
|
||||||
|
eEaG0RH54+pi4gw=
|
||||||
|
=fFMC
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
BIN
contrib/gitian-downloader/cdecker-key.pgp
Normal file
BIN
contrib/gitian-downloader/cdecker-key.pgp
Normal file
Binary file not shown.
30
contrib/gitian-downloader/centaur1-key.pgp
Normal file
30
contrib/gitian-downloader/centaur1-key.pgp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1.4.12 (GNU/Linux)
|
||||||
|
|
||||||
|
mQENBFTjy20BCAC7q/tpPQ9tdEALpDqe8kpVAT5ysOJDLDeFEE1J5O8NuDFuibiN
|
||||||
|
XYkb2nAt4Vdr23in9z0LAiTSgr7znndnab/rOSn6pXbXQfLTHrSnAeClTHVQVPSq
|
||||||
|
m5kNg1vWvNxFtIpZ/fGsc6LLmIHxdgeLn+NOpvNx7RzF/N5ctX51vMxMUeDq3daZ
|
||||||
|
tLneJVRj5tXHRJcjW62cyiNFasYAZ3JC8wjwzr0SOndc7kygbEVCTWNkTAGd1Lax
|
||||||
|
KSJW6TjhBPK7j+RljS5nfx/Tf+OG4AoA7/53593YL7Shfx8rwWVIeF4nS6efFnuf
|
||||||
|
eIj+aS5haGyFvNgw8DE7QUCrPiUxeA8wuXu7ABEBAAG0H2NlbnRhdXIgPGNlbnRh
|
||||||
|
dXJAcGhvbmVib29rLmNvbT6JATgEEwECACIFAlTjy20CGwMGCwkIBwMCBhUIAgkK
|
||||||
|
CwQWAgMBAh4BAheAAAoJEP+V+qlxaXQF8r4IAKnE8D9AOTdM/YvYxpCeI6ndEUUs
|
||||||
|
8NcotpbIBJ67vr1Dsot7Ee0PrmIYOiInA+T81lPUDecJYrnemVefhquiyJ5VJ4/d
|
||||||
|
z2zUKBfxjeOsj/PHgcowVxMco8fNEWQa2fZX6X8RVADIsUnIIwpRFVUcbssK/3xJ
|
||||||
|
k46vjWwYNQywht/ZgFBesOgywyz5GozmwrK6TixJxKk8M69GFz2fHhJjp1bxDZuk
|
||||||
|
Rs3YmWeOcCasoJ6GbvIboKQSPHGyEOCqIuiBL63YMa0n1FU0ooDteNZ04eRinIhc
|
||||||
|
fo9JC66fQrUFn8CmmRTtdZOrZ/efYjQtfLAunCkzSM3p6DE9u4Y7d8E5Ar65AQ0E
|
||||||
|
VOPLbQEIANhxtouZuQmw+k89toBWXw75s+csxKHKZuhw8QntaFyFYq3IOnIeV1sK
|
||||||
|
PRENkWsqDInjEM8k9eZ6pnS11EQ1rrFffss+mprTbL3I4S489tJETYZKHrmmox7h
|
||||||
|
ustRi5eXBEmGeKW0mqpb/9r4okpTaIfs+EJ4C9jj0ghWkqU0acyzanJiUY/0R46F
|
||||||
|
vPfGfHnhZ5TAl3eiL0H2JkF6taG8K1XOLemahdZHE9wJh0ZFWnDDkA1l6j2rtYga
|
||||||
|
jEi/ucOp5GkmumxbFiVgponDBqBpsscRrCV6SbZs9gz3dQNgqe5A3CKGZRuVCY6s
|
||||||
|
djRJelgqCF5+dV0fAT0oF3C/3E5KAgcAEQEAAYkBHwQYAQIACQUCVOPLbQIbDAAK
|
||||||
|
CRD/lfqpcWl0BUSxCACjEFwQSHcfZINWD+KdNMayxyHQlBwsEDX+xQkgnn+/Q3hW
|
||||||
|
9VI3SSSfFV3ustlUa3IaNHwuWzsrSqG6mLG47LAQ6vPAWVh723gVCpyJf42Oms/e
|
||||||
|
qeyn0f/PT/6RuNMXQeHbfddmRp4PFjyKOms5Bmf3oi4t4JSvOS4yABBBKzhDQYC9
|
||||||
|
e+qv6Y1sDYpSiCxstQLzIHKiB5bfZ8Szfk09EyyLdqLGkiB0MFhHoXWwQxKiLVc+
|
||||||
|
xNFj2a/jw0rQVgN5DZgHBWU5WqvS5CWIczi+2S9MFI26iBhCn3urZToaaQ/DObqC
|
||||||
|
qmekFrJ/GOj5vB1Mm014lWjG2X3EovLZ1XkgWI7W
|
||||||
|
=vtNZ
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
BIN
contrib/gitian-downloader/erkmos.pgp
Normal file
BIN
contrib/gitian-downloader/erkmos.pgp
Normal file
Binary file not shown.
63
contrib/gitian-downloader/fanquake-key.pgp
Normal file
63
contrib/gitian-downloader/fanquake-key.pgp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG/MacGPG2 v2.0.26
|
||||||
|
|
||||||
|
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
|
||||||
|
XwbdK0Zpx/oDtRHpuDMGKJBV2LWAZYkEbFsmtg==
|
||||||
|
=3o2I
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
110
contrib/gitian-downloader/jonasschnelli-key.pgp
Normal file
110
contrib/gitian-downloader/jonasschnelli-key.pgp
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
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
|
||||||
|
S5rowLE=
|
||||||
|
=ZVPf
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
name: bitcoin
|
|
||||||
urls:
|
|
||||||
- http://bitcoin.org/bitcoin-latest-linux-gitian.zip
|
|
||||||
rss:
|
|
||||||
- url:
|
|
||||||
xpath: //item/link/text()
|
|
||||||
pattern: bitcoin-\d+.\d+.\d+-linux-gitian.zip
|
|
||||||
signers:
|
|
||||||
0A82509767C7D4A5D14DA2301AE1D35043E08E54:
|
|
||||||
name: BlueMatt
|
|
||||||
key: bluematt
|
|
||||||
BF6273FAEF7CC0BA1F562E50989F6B3048A116B5:
|
|
||||||
name: Devrandom
|
|
||||||
key: devrandom
|
|
||||||
E463A93F5F3117EEDE6C7316BD02942421F4889F:
|
|
||||||
name: Luke-Jr
|
|
||||||
key: luke-jr
|
|
||||||
D762373D24904A3E42F33B08B9A408E71DAAC974:
|
|
||||||
name: "Pieter Wuille"
|
|
||||||
key: sipa
|
|
||||||
77E72E69DA7EE0A148C06B21B34821D4944DE5F7:
|
|
||||||
name: tcatm
|
|
||||||
key: tcatm
|
|
||||||
01CDF4627A3B88AAE4A571C87588242FBE38D3A8:
|
|
||||||
name: "Gavin Andresen"
|
|
||||||
key: gavinandresen
|
|
||||||
71A3B16735405025D447E8F274810B012346C9A6:
|
|
||||||
name: "Wladimir J. van der Laan"
|
|
||||||
key: laanwj
|
|
||||||
AEC1884398647C47413C1C3FB1179EB7347DC10D:
|
|
||||||
name: "Warren Togami"
|
|
||||||
key: wtogami
|
|
||||||
9692B91BBF0E8D34DFD33B1882C5C009628ECF0C:
|
|
||||||
name: michagogo
|
|
||||||
key: michagogo
|
|
||||||
E944AE667CF960B1004BC32FCA662BE18B877A60:
|
|
||||||
name: "Andreas Schildbach"
|
|
||||||
key: aschildbach
|
|
||||||
C060A6635913D98A3587D7DB1C2491FFEB0EF770:
|
|
||||||
name: "Cory Fields"
|
|
||||||
key: "cfields"
|
|
Binary file not shown.
1901
contrib/gitian-downloader/petertodd-key.pgp
Normal file
1901
contrib/gitian-downloader/petertodd-key.pgp
Normal file
File diff suppressed because it is too large
Load Diff
81
contrib/gitian-downloader/prab-key.pgp
Normal file
81
contrib/gitian-downloader/prab-key.pgp
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v2
|
||||||
|
|
||||||
|
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
|
||||||
|
RFdDYRHByRDDL1I=
|
||||||
|
=dOwX
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
Binary file not shown.
@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
name: bitcoin
|
|
||||||
urls:
|
|
||||||
- http://bitcoin.org/bitcoin-latest-win32-gitian.zip
|
|
||||||
rss:
|
|
||||||
- url:
|
|
||||||
xpath: //item/link/text()
|
|
||||||
pattern: bitcoin-\d+.\d+.\d+-win32-gitian.zip
|
|
||||||
signers:
|
|
||||||
0A82509767C7D4A5D14DA2301AE1D35043E08E54:
|
|
||||||
name: BlueMatt
|
|
||||||
key: bluematt
|
|
||||||
BF6273FAEF7CC0BA1F562E50989F6B3048A116B5:
|
|
||||||
name: Devrandom
|
|
||||||
key: devrandom
|
|
||||||
E463A93F5F3117EEDE6C7316BD02942421F4889F:
|
|
||||||
name: Luke-Jr
|
|
||||||
key: luke-jr
|
|
||||||
D762373D24904A3E42F33B08B9A408E71DAAC974:
|
|
||||||
name: "Pieter Wuille"
|
|
||||||
key: sipa
|
|
||||||
77E72E69DA7EE0A148C06B21B34821D4944DE5F7:
|
|
||||||
name: tcatm
|
|
||||||
key: tcatm
|
|
||||||
01CDF4627A3B88AAE4A571C87588242FBE38D3A8:
|
|
||||||
name: "Gavin Andresen"
|
|
||||||
key: gavinandresen
|
|
||||||
71A3B16735405025D447E8F274810B012346C9A6:
|
|
||||||
name: "Wladimir J. van der Laan"
|
|
||||||
key: laanwj
|
|
||||||
AEC1884398647C47413C1C3FB1179EB7347DC10D:
|
|
||||||
name: "Warren Togami"
|
|
||||||
key: wtogami
|
|
||||||
9692B91BBF0E8D34DFD33B1882C5C009628ECF0C:
|
|
||||||
name: michagogo
|
|
||||||
key: michagogo
|
|
||||||
E944AE667CF960B1004BC32FCA662BE18B877A60:
|
|
||||||
name: "Andreas Schildbach"
|
|
||||||
key: aschildbach
|
|
||||||
C060A6635913D98A3587D7DB1C2491FFEB0EF770:
|
|
||||||
name: "Cory Fields"
|
|
||||||
key: "cfields"
|
|
@ -4,6 +4,8 @@ SystemD: dashd.service
|
|||||||
Upstart: dashd.conf
|
Upstart: dashd.conf
|
||||||
OpenRC: dashd.openrc
|
OpenRC: dashd.openrc
|
||||||
dashd.openrcconf
|
dashd.openrcconf
|
||||||
|
CentOS: dashd.init
|
||||||
|
OS X: org.dash.dashd.plist
|
||||||
|
|
||||||
have been made available to assist packagers in creating node packages here.
|
have been made available to assist packagers in creating node packages here.
|
||||||
|
|
||||||
|
67
contrib/init/bitcoind.init
Normal file
67
contrib/init/bitcoind.init
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# bitcoind The bitcoin core server.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# chkconfig: 345 80 20
|
||||||
|
# description: bitcoind
|
||||||
|
# processname: bitcoind
|
||||||
|
#
|
||||||
|
|
||||||
|
# Source function library.
|
||||||
|
. /etc/init.d/functions
|
||||||
|
|
||||||
|
# you can override defaults in /etc/sysconfig/bitcoind, see below
|
||||||
|
if [ -f /etc/sysconfig/bitcoind ]; then
|
||||||
|
. /etc/sysconfig/bitcoind
|
||||||
|
fi
|
||||||
|
|
||||||
|
RETVAL=0
|
||||||
|
|
||||||
|
prog=bitcoind
|
||||||
|
# you can override the lockfile via BITCOIND_LOCKFILE in /etc/sysconfig/bitcoind
|
||||||
|
lockfile=${BITCOIND_LOCKFILE-/var/lock/subsys/bitcoind}
|
||||||
|
|
||||||
|
# bitcoind defaults to /usr/bin/bitcoind, override with BITCOIND_BIN
|
||||||
|
bitcoind=${BITCOIND_BIN-/usr/bin/bitcoind}
|
||||||
|
|
||||||
|
# bitcoind opts default to -disablewallet, override with BITCOIND_OPTS
|
||||||
|
bitcoind_opts=${BITCOIND_OPTS--disablewallet}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
echo -n $"Starting $prog: "
|
||||||
|
daemon $DAEMONOPTS $bitcoind $bitcoind_opts
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL -eq 0 ] && touch $lockfile
|
||||||
|
return $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
echo -n $"Stopping $prog: "
|
||||||
|
killproc $prog
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL -eq 0 ] && rm -f $lockfile
|
||||||
|
return $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
status $prog
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: service $prog {start|stop|status|restart}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
33
contrib/init/bitcoind.openrcconf
Normal file
33
contrib/init/bitcoind.openrcconf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# /etc/conf.d/bitcoind: config file for /etc/init.d/bitcoind
|
||||||
|
|
||||||
|
# Config file location
|
||||||
|
#BITCOIND_CONFIGFILE="/etc/bitcoin/bitcoin.conf"
|
||||||
|
|
||||||
|
# What directory to write pidfile to? (created and owned by $BITCOIND_USER)
|
||||||
|
#BITCOIND_PIDDIR="/var/run/bitcoind"
|
||||||
|
|
||||||
|
# What filename to give the pidfile
|
||||||
|
#BITCOIND_PIDFILE="${BITCOIND_PIDDIR}/bitcoind.pid"
|
||||||
|
|
||||||
|
# Where to write bitcoind data (be mindful that the blockchain is large)
|
||||||
|
#BITCOIND_DATADIR="/var/lib/bitcoind"
|
||||||
|
|
||||||
|
# User and group to own bitcoind process
|
||||||
|
#BITCOIND_USER="bitcoin"
|
||||||
|
#BITCOIND_GROUP="bitcoin"
|
||||||
|
|
||||||
|
# Path to bitcoind executable
|
||||||
|
#BITCOIND_BIN="/usr/bin/bitcoind"
|
||||||
|
|
||||||
|
# Nice value to run bitcoind under
|
||||||
|
#BITCOIND_NICE=0
|
||||||
|
|
||||||
|
# Additional options (avoid -conf and -datadir, use flags above)
|
||||||
|
BITCOIND_OPTS="-disablewallet"
|
||||||
|
|
||||||
|
# The timeout in seconds OpenRC will wait for bitcoind to terminate
|
||||||
|
# after a SIGTERM has been raised.
|
||||||
|
# Note that this will be mapped as argument to start-stop-daemon's
|
||||||
|
# '--retry' option, which means you can specify a retry schedule
|
||||||
|
# here. For more information see man 8 start-stop-daemon.
|
||||||
|
BITCOIND_SIGTERM_TIMEOUT=60
|
@ -12,12 +12,14 @@ BITCOIND_CONFIGFILE=${BITCOIND_CONFIGFILE:-/etc/dash/dash.conf}
|
|||||||
BITCOIND_PIDDIR=${BITCOIND_PIDDIR:-/var/run/dashd}
|
BITCOIND_PIDDIR=${BITCOIND_PIDDIR:-/var/run/dashd}
|
||||||
BITCOIND_PIDFILE=${BITCOIND_PIDFILE:-${BITCOIND_PIDDIR}/dashd.pid}
|
BITCOIND_PIDFILE=${BITCOIND_PIDFILE:-${BITCOIND_PIDDIR}/dashd.pid}
|
||||||
BITCOIND_DATADIR=${BITCOIND_DATADIR:-${BITCOIND_DEFAULT_DATADIR}}
|
BITCOIND_DATADIR=${BITCOIND_DATADIR:-${BITCOIND_DEFAULT_DATADIR}}
|
||||||
BITCOIND_USER=${BITCOIND_USER:-dash}
|
BITCOIND_USER=${BITCOIND_USER:-${BITCOIN_USER:-dash}}
|
||||||
BITCOIND_GROUP=${BITCOIND_GROUP:-dash}
|
BITCOIND_GROUP=${BITCOIND_GROUP:-dash}
|
||||||
BITCOIND_BIN=${BITCOIND_BIN:-/usr/bin/dashd}
|
BITCOIND_BIN=${BITCOIND_BIN:-/usr/bin/dashd}
|
||||||
|
BITCOIND_NICE=${BITCOIND_NICE:-${NICELEVEL:-0}}
|
||||||
|
BITCOIND_OPTS="${BITCOIND_OPTS:-${BITCOIN_OPTS}}"
|
||||||
|
|
||||||
name="Dash Core Daemon"
|
name="Dash Core Daemon"
|
||||||
description="Dash crypto-currency p2p network daemon"
|
description="Dash cryptocurrency P2P network daemon"
|
||||||
|
|
||||||
command="/usr/bin/dashd"
|
command="/usr/bin/dashd"
|
||||||
command_args="-pid=\"${BITCOIND_PIDFILE}\" \
|
command_args="-pid=\"${BITCOIND_PIDFILE}\" \
|
||||||
@ -28,9 +30,13 @@ command_args="-pid=\"${BITCOIND_PIDFILE}\" \
|
|||||||
|
|
||||||
required_files="${BITCOIND_CONFIGFILE}"
|
required_files="${BITCOIND_CONFIGFILE}"
|
||||||
start_stop_daemon_args="-u ${BITCOIND_USER} \
|
start_stop_daemon_args="-u ${BITCOIND_USER} \
|
||||||
-N ${BITCOIND_NICE:-0} -w 2000"
|
-N ${BITCOIND_NICE} -w 2000"
|
||||||
pidfile="${BITCOIND_PIDFILE}"
|
pidfile="${BITCOIND_PIDFILE}"
|
||||||
retry=60
|
|
||||||
|
# The retry schedule to use when stopping the daemon. Could be either
|
||||||
|
# a timeout in seconds or multiple signal/timeout pairs (like
|
||||||
|
# "SIGKILL/180 SIGTERM/300")
|
||||||
|
retry="${BITCOIND_SIGTERM_TIMEOUT}"
|
||||||
|
|
||||||
depend() {
|
depend() {
|
||||||
need localmount net
|
need localmount net
|
||||||
|
15
contrib/init/org.bitcoin.bitcoind.plist
Normal file
15
contrib/init/org.bitcoin.bitcoind.plist
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>org.bitcoin.bitcoind</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/usr/local/bin/bitcoind</string>
|
||||||
|
<string>-daemon</string>
|
||||||
|
</array>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
@ -7,7 +7,7 @@ https://github.com/dashpay/dash_hash
|
|||||||
|
|
||||||
## Step 1: Download hash list
|
## Step 1: Download hash list
|
||||||
|
|
||||||
$ ./linearize-hashes.py linearize.cfg > hashlist.txt
|
$ ./linearize-hashes.py linearize.cfg > hashlist.txt
|
||||||
|
|
||||||
Required configuration file settings for linearize-hashes:
|
Required configuration file settings for linearize-hashes:
|
||||||
* RPC: rpcuser, rpcpassword
|
* RPC: rpcuser, rpcpassword
|
||||||
@ -18,7 +18,7 @@ Optional config file setting for linearize-hashes:
|
|||||||
|
|
||||||
## Step 2: Copy local block data
|
## Step 2: Copy local block data
|
||||||
|
|
||||||
$ ./linearize-data.py linearize.cfg
|
$ ./linearize-data.py linearize.cfg
|
||||||
|
|
||||||
Required configuration file settings:
|
Required configuration file settings:
|
||||||
* "input": bitcoind blocks/ directory containing blkNNNNN.dat
|
* "input": bitcoind blocks/ directory containing blkNNNNN.dat
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#
|
#
|
||||||
# linearize-data.py: Construct a linear, no-fork version of the chain.
|
# linearize-data.py: Construct a linear, no-fork version of the chain.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2014 The Bitcoin developers
|
# Copyright (c) 2013-2014 The Bitcoin Core developers
|
||||||
# Distributed under the MIT/X11 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.
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -12,6 +12,7 @@ import json
|
|||||||
import struct
|
import struct
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
import os.path
|
||||||
import base64
|
import base64
|
||||||
import httplib
|
import httplib
|
||||||
import sys
|
import sys
|
||||||
@ -118,19 +119,20 @@ class BlockDataCopier:
|
|||||||
self.setFileTime = True
|
self.setFileTime = True
|
||||||
if settings['split_timestamp'] != 0:
|
if settings['split_timestamp'] != 0:
|
||||||
self.timestampSplit = True
|
self.timestampSplit = True
|
||||||
# Extents and cache for out-of-order blocks
|
# Extents and cache for out-of-order blocks
|
||||||
self.blockExtents = {}
|
self.blockExtents = {}
|
||||||
self.outOfOrderData = {}
|
self.outOfOrderData = {}
|
||||||
self.outOfOrderSize = 0 # running total size for items in outOfOrderData
|
self.outOfOrderSize = 0 # running total size for items in outOfOrderData
|
||||||
|
|
||||||
def writeBlock(self, inhdr, blk_hdr, rawblock):
|
def writeBlock(self, inhdr, blk_hdr, rawblock):
|
||||||
if not self.fileOutput and ((self.outsz + self.inLen) > self.maxOutSz):
|
blockSizeOnDisk = len(inhdr) + len(blk_hdr) + len(rawblock)
|
||||||
|
if not self.fileOutput and ((self.outsz + blockSizeOnDisk) > self.maxOutSz):
|
||||||
self.outF.close()
|
self.outF.close()
|
||||||
if self.setFileTime:
|
if self.setFileTime:
|
||||||
os.utime(outFname, (int(time.time()), highTS))
|
os.utime(outFname, (int(time.time()), highTS))
|
||||||
self.outF = None
|
self.outF = None
|
||||||
self.outFname = None
|
self.outFname = None
|
||||||
self.outFn = outFn + 1
|
self.outFn = self.outFn + 1
|
||||||
self.outsz = 0
|
self.outsz = 0
|
||||||
|
|
||||||
(blkDate, blkTS) = get_blk_dt(blk_hdr)
|
(blkDate, blkTS) = get_blk_dt(blk_hdr)
|
||||||
@ -150,8 +152,8 @@ class BlockDataCopier:
|
|||||||
if self.fileOutput:
|
if self.fileOutput:
|
||||||
outFname = self.settings['output_file']
|
outFname = self.settings['output_file']
|
||||||
else:
|
else:
|
||||||
outFname = "%s/blk%05d.dat" % (self.settings['output'], outFn)
|
outFname = os.path.join(self.settings['output'], "blk%05d.dat" % self.outFn)
|
||||||
print("Output file" + outFname)
|
print("Output file " + outFname)
|
||||||
self.outF = open(outFname, "wb")
|
self.outF = open(outFname, "wb")
|
||||||
|
|
||||||
self.outF.write(inhdr)
|
self.outF.write(inhdr)
|
||||||
@ -168,7 +170,7 @@ class BlockDataCopier:
|
|||||||
(self.blkCountIn, self.blkCountOut, len(self.blkindex), 100.0 * self.blkCountOut / len(self.blkindex)))
|
(self.blkCountIn, self.blkCountOut, len(self.blkindex), 100.0 * self.blkCountOut / len(self.blkindex)))
|
||||||
|
|
||||||
def inFileName(self, fn):
|
def inFileName(self, fn):
|
||||||
return "%s/blk%05d.dat" % (self.settings['input'], fn)
|
return os.path.join(self.settings['input'], "blk%05d.dat" % fn)
|
||||||
|
|
||||||
def fetchBlock(self, extent):
|
def fetchBlock(self, extent):
|
||||||
'''Fetch block contents from disk given extents'''
|
'''Fetch block contents from disk given extents'''
|
||||||
@ -192,7 +194,7 @@ class BlockDataCopier:
|
|||||||
while self.blkCountOut < len(self.blkindex):
|
while self.blkCountOut < len(self.blkindex):
|
||||||
if not self.inF:
|
if not self.inF:
|
||||||
fname = self.inFileName(self.inFn)
|
fname = self.inFileName(self.inFn)
|
||||||
print("Input file" + fname)
|
print("Input file " + fname)
|
||||||
try:
|
try:
|
||||||
self.inF = open(fname, "rb")
|
self.inF = open(fname, "rb")
|
||||||
except IOError:
|
except IOError:
|
||||||
@ -208,7 +210,7 @@ class BlockDataCopier:
|
|||||||
|
|
||||||
inMagic = inhdr[:4]
|
inMagic = inhdr[:4]
|
||||||
if (inMagic != self.settings['netmagic']):
|
if (inMagic != self.settings['netmagic']):
|
||||||
print("Invalid magic:" + inMagic)
|
print("Invalid magic: " + inMagic.encode('hex'))
|
||||||
return
|
return
|
||||||
inLenLE = inhdr[4:]
|
inLenLE = inhdr[4:]
|
||||||
su = struct.unpack("<I", inLenLE)
|
su = struct.unpack("<I", inLenLE)
|
||||||
@ -297,7 +299,7 @@ if __name__ == '__main__':
|
|||||||
blkmap = mkblockmap(blkindex)
|
blkmap = mkblockmap(blkindex)
|
||||||
|
|
||||||
if not settings['genesis'] in blkmap:
|
if not settings['genesis'] in blkmap:
|
||||||
print("genesis not found")
|
print("Genesis block not found in hashlist")
|
||||||
else:
|
else:
|
||||||
BlockDataCopier(settings, blkindex, blkmap).run()
|
BlockDataCopier(settings, blkindex, blkmap).run()
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#
|
#
|
||||||
# linearize-hashes.py: List blocks in a linear, no-fork version of the chain.
|
# linearize-hashes.py: List blocks in a linear, no-fork version of the chain.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2014 The Bitcoin developers
|
# Copyright (c) 2013-2014 The Bitcoin Core developers
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
1
contrib/macdeploy/Base.lproj/InfoPlist.strings
Normal file
1
contrib/macdeploy/Base.lproj/InfoPlist.strings
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ CFBundleDisplayName = "Bitcoin Core"; CFBundleName = "Bitcoin Core"; }
|
Binary file not shown.
@ -11,5 +11,5 @@ This script should not be run manually, instead, after building as usual:
|
|||||||
During the process, the disk image window will pop up briefly where the fancy
|
During the process, the disk image window will pop up briefly where the fancy
|
||||||
settings are applied. This is normal, please do not interfere.
|
settings are applied. This is normal, please do not interfere.
|
||||||
|
|
||||||
When finished, it will produce `Dash-Qt.dmg`.
|
When finished, it will produce `Dash-Core.dmg`.
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 48 KiB |
Binary file not shown.
BIN
contrib/macdeploy/background.tiff
Normal file
BIN
contrib/macdeploy/background.tiff
Normal file
Binary file not shown.
BIN
contrib/macdeploy/background@2x.png
Normal file
BIN
contrib/macdeploy/background@2x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 136 KiB |
@ -1,11 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
UNSIGNED=$1
|
UNSIGNED="$1"
|
||||||
SIGNATURE=$2
|
SIGNATURE="$2"
|
||||||
ARCH=x86_64
|
ARCH=x86_64
|
||||||
ROOTDIR=dist
|
ROOTDIR=dist
|
||||||
BUNDLE=${ROOTDIR}/Dash-Qt.app
|
|
||||||
TEMPDIR=signed.temp
|
TEMPDIR=signed.temp
|
||||||
OUTDIR=signed-app
|
OUTDIR=signed-app
|
||||||
|
|
||||||
@ -21,7 +20,7 @@ fi
|
|||||||
|
|
||||||
rm -rf ${TEMPDIR} && mkdir -p ${TEMPDIR}
|
rm -rf ${TEMPDIR} && mkdir -p ${TEMPDIR}
|
||||||
tar -C ${TEMPDIR} -xf ${UNSIGNED}
|
tar -C ${TEMPDIR} -xf ${UNSIGNED}
|
||||||
tar -C ${TEMPDIR} -xf ${SIGNATURE}
|
cp -rf "${SIGNATURE}"/* ${TEMPDIR}
|
||||||
|
|
||||||
if [ -z "${PAGESTUFF}" ]; then
|
if [ -z "${PAGESTUFF}" ]; then
|
||||||
PAGESTUFF=${TEMPDIR}/pagestuff
|
PAGESTUFF=${TEMPDIR}/pagestuff
|
||||||
@ -31,21 +30,21 @@ if [ -z "${CODESIGN_ALLOCATE}" ]; then
|
|||||||
CODESIGN_ALLOCATE=${TEMPDIR}/codesign_allocate
|
CODESIGN_ALLOCATE=${TEMPDIR}/codesign_allocate
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for i in `find ${TEMPDIR} -name "*.sign"`; do
|
find ${TEMPDIR} -name "*.sign" | while read i; do
|
||||||
SIZE=`stat -c %s ${i}`
|
SIZE=`stat -c %s "${i}"`
|
||||||
TARGET_FILE=`echo ${i} | sed 's/\.sign$//'`
|
TARGET_FILE="`echo "${i}" | sed 's/\.sign$//'`"
|
||||||
|
|
||||||
echo "Allocating space for the signature of size ${SIZE} in ${TARGET_FILE}"
|
echo "Allocating space for the signature of size ${SIZE} in ${TARGET_FILE}"
|
||||||
${CODESIGN_ALLOCATE} -i ${TARGET_FILE} -a ${ARCH} ${SIZE} -o ${i}.tmp
|
${CODESIGN_ALLOCATE} -i "${TARGET_FILE}" -a ${ARCH} ${SIZE} -o "${i}.tmp"
|
||||||
|
|
||||||
OFFSET=`${PAGESTUFF} ${i}.tmp -p | tail -2 | grep offset | sed 's/[^0-9]*//g'`
|
OFFSET=`${PAGESTUFF} "${i}.tmp" -p | tail -2 | grep offset | sed 's/[^0-9]*//g'`
|
||||||
if [ -z ${QUIET} ]; then
|
if [ -z ${QUIET} ]; then
|
||||||
echo "Attaching signature at offset ${OFFSET}"
|
echo "Attaching signature at offset ${OFFSET}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dd if=$i of=${i}.tmp bs=1 seek=${OFFSET} count=${SIZE} 2>/dev/null
|
dd if="$i" of="${i}.tmp" bs=1 seek=${OFFSET} count=${SIZE} 2>/dev/null
|
||||||
mv ${i}.tmp ${TARGET_FILE}
|
mv "${i}.tmp" "${TARGET_FILE}"
|
||||||
rm ${i}
|
rm "${i}"
|
||||||
echo "Success."
|
echo "Success."
|
||||||
done
|
done
|
||||||
mv ${TEMPDIR}/${ROOTDIR} ${OUTDIR}
|
mv ${TEMPDIR}/${ROOTDIR} ${OUTDIR}
|
||||||
|
@ -2,11 +2,12 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
ROOTDIR=dist
|
ROOTDIR=dist
|
||||||
BUNDLE=${ROOTDIR}/Dash-Qt.app
|
BUNDLE="${ROOTDIR}/Dash-Qt.app"
|
||||||
CODESIGN=codesign
|
CODESIGN=codesign
|
||||||
TEMPDIR=sign.temp
|
TEMPDIR=sign.temp
|
||||||
TEMPLIST=${TEMPDIR}/signatures.txt
|
TEMPLIST=${TEMPDIR}/signatures.txt
|
||||||
OUT=signature.tar.gz
|
OUT=signature.tar.gz
|
||||||
|
OUTROOT=osx
|
||||||
|
|
||||||
if [ ! -n "$1" ]; then
|
if [ ! -n "$1" ]; then
|
||||||
echo "usage: $0 <codesign args>"
|
echo "usage: $0 <codesign args>"
|
||||||
@ -19,20 +20,20 @@ mkdir -p ${TEMPDIR}
|
|||||||
|
|
||||||
${CODESIGN} -f --file-list ${TEMPLIST} "$@" "${BUNDLE}"
|
${CODESIGN} -f --file-list ${TEMPLIST} "$@" "${BUNDLE}"
|
||||||
|
|
||||||
for i in `grep -v CodeResources ${TEMPLIST}`; do
|
grep -v CodeResources < "${TEMPLIST}" | while read i; do
|
||||||
TARGETFILE="${BUNDLE}/`echo ${i} | sed "s|.*${BUNDLE}/||"`"
|
TARGETFILE="${BUNDLE}/`echo "${i}" | sed "s|.*${BUNDLE}/||"`"
|
||||||
SIZE=`pagestuff $i -p | tail -2 | grep size | sed 's/[^0-9]*//g'`
|
SIZE=`pagestuff "$i" -p | tail -2 | grep size | sed 's/[^0-9]*//g'`
|
||||||
OFFSET=`pagestuff $i -p | tail -2 | grep offset | sed 's/[^0-9]*//g'`
|
OFFSET=`pagestuff "$i" -p | tail -2 | grep offset | sed 's/[^0-9]*//g'`
|
||||||
SIGNFILE="${TEMPDIR}/${TARGETFILE}.sign"
|
SIGNFILE="${TEMPDIR}/${OUTROOT}/${TARGETFILE}.sign"
|
||||||
DIRNAME="`dirname ${SIGNFILE}`"
|
DIRNAME="`dirname "${SIGNFILE}"`"
|
||||||
mkdir -p "${DIRNAME}"
|
mkdir -p "${DIRNAME}"
|
||||||
echo "Adding detached signature for: ${TARGETFILE}. Size: ${SIZE}. Offset: ${OFFSET}"
|
echo "Adding detached signature for: ${TARGETFILE}. Size: ${SIZE}. Offset: ${OFFSET}"
|
||||||
dd if=$i of=${SIGNFILE} bs=1 skip=${OFFSET} count=${SIZE} 2>/dev/null
|
dd if="$i" of="${SIGNFILE}" bs=1 skip=${OFFSET} count=${SIZE} 2>/dev/null
|
||||||
done
|
done
|
||||||
|
|
||||||
for i in `grep CodeResources ${TEMPLIST}`; do
|
grep CodeResources < "${TEMPLIST}" | while read i; do
|
||||||
TARGETFILE="${BUNDLE}/`echo ${i} | sed "s|.*${BUNDLE}/||"`"
|
TARGETFILE="${BUNDLE}/`echo "${i}" | sed "s|.*${BUNDLE}/||"`"
|
||||||
RESOURCE="${TEMPDIR}/${TARGETFILE}"
|
RESOURCE="${TEMPDIR}/${OUTROOT}/${TARGETFILE}"
|
||||||
DIRNAME="`dirname "${RESOURCE}"`"
|
DIRNAME="`dirname "${RESOURCE}"`"
|
||||||
mkdir -p "${DIRNAME}"
|
mkdir -p "${DIRNAME}"
|
||||||
echo "Adding resource for: "${TARGETFILE}""
|
echo "Adding resource for: "${TARGETFILE}""
|
||||||
@ -41,6 +42,6 @@ done
|
|||||||
|
|
||||||
rm ${TEMPLIST}
|
rm ${TEMPLIST}
|
||||||
|
|
||||||
tar -C ${TEMPDIR} -czf ${OUT} .
|
tar -C "${TEMPDIR}" -czf "${OUT}" .
|
||||||
rm -rf ${TEMPDIR}
|
rm -rf "${TEMPDIR}"
|
||||||
echo "Created ${OUT}"
|
echo "Created ${OUT}"
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<integer>620</integer>
|
<integer>620</integer>
|
||||||
</array>
|
</array>
|
||||||
<key>background_picture</key>
|
<key>background_picture</key>
|
||||||
<string>background.png</string>
|
<string>background.tiff</string>
|
||||||
<key>icon_size</key>
|
<key>icon_size</key>
|
||||||
<integer>96</integer>
|
<integer>96</integer>
|
||||||
<key>applications_symlink</key>
|
<key>applications_symlink</key>
|
||||||
|
@ -155,7 +155,7 @@ class FrameworkInfo(object):
|
|||||||
class ApplicationBundleInfo(object):
|
class ApplicationBundleInfo(object):
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
self.path = path
|
self.path = path
|
||||||
appName = os.path.splitext(os.path.basename(path))[0]
|
appName = "Dash-Qt"
|
||||||
self.binaryPath = os.path.join(path, "Contents", "MacOS", appName)
|
self.binaryPath = os.path.join(path, "Contents", "MacOS", appName)
|
||||||
if not os.path.exists(self.binaryPath):
|
if not os.path.exists(self.binaryPath):
|
||||||
raise RuntimeError("Could not find bundle binary for " + path)
|
raise RuntimeError("Could not find bundle binary for " + path)
|
||||||
@ -596,7 +596,7 @@ if os.path.exists("dist"):
|
|||||||
|
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
|
|
||||||
target = os.path.join("dist", app_bundle)
|
target = os.path.join("dist", "Dash-Qt.app")
|
||||||
|
|
||||||
if verbose >= 2:
|
if verbose >= 2:
|
||||||
print "+ Copying source bundle +"
|
print "+ Copying source bundle +"
|
||||||
@ -757,7 +757,7 @@ if config.dmg is not None:
|
|||||||
|
|
||||||
if fancy is None:
|
if fancy is None:
|
||||||
try:
|
try:
|
||||||
runHDIUtil("create", dmg_name, srcfolder="dist", format="UDBZ", volname=app_bundle_name, ov=True)
|
runHDIUtil("create", dmg_name, srcfolder="dist", format="UDBZ", volname="Dash-Core", ov=True)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
sys.exit(e.returncode)
|
sys.exit(e.returncode)
|
||||||
else:
|
else:
|
||||||
@ -767,12 +767,12 @@ if config.dmg is not None:
|
|||||||
for path, dirs, files in os.walk("dist"):
|
for path, dirs, files in os.walk("dist"):
|
||||||
for file in files:
|
for file in files:
|
||||||
size += os.path.getsize(os.path.join(path, file))
|
size += os.path.getsize(os.path.join(path, file))
|
||||||
size += int(size * 0.1)
|
size += int(size * 0.15)
|
||||||
|
|
||||||
if verbose >= 3:
|
if verbose >= 3:
|
||||||
print "Creating temp image for modification..."
|
print "Creating temp image for modification..."
|
||||||
try:
|
try:
|
||||||
runHDIUtil("create", dmg_name + ".temp", srcfolder="dist", format="UDRW", size=size, volname=app_bundle_name, ov=True)
|
runHDIUtil("create", dmg_name + ".temp", srcfolder="dist", format="UDRW", size=size, volname="Dash-Core", ov=True)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
sys.exit(e.returncode)
|
sys.exit(e.returncode)
|
||||||
|
|
||||||
@ -791,7 +791,8 @@ if config.dmg is not None:
|
|||||||
print "+ Applying fancy settings +"
|
print "+ Applying fancy settings +"
|
||||||
|
|
||||||
if fancy.has_key("background_picture"):
|
if fancy.has_key("background_picture"):
|
||||||
bg_path = os.path.join(disk_root, os.path.basename(fancy["background_picture"]))
|
bg_path = os.path.join(disk_root, ".background", os.path.basename(fancy["background_picture"]))
|
||||||
|
os.mkdir(os.path.dirname(bg_path))
|
||||||
if verbose >= 3:
|
if verbose >= 3:
|
||||||
print fancy["background_picture"], "->", bg_path
|
print fancy["background_picture"], "->", bg_path
|
||||||
shutil.copy2(fancy["background_picture"], bg_path)
|
shutil.copy2(fancy["background_picture"], bg_path)
|
||||||
@ -836,7 +837,7 @@ if config.dmg is not None:
|
|||||||
items_positions.append(itemscript.substitute(params))
|
items_positions.append(itemscript.substitute(params))
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
"disk" : "Dash-Qt",
|
"disk" : "Dash-Core",
|
||||||
"window_bounds" : "300,300,800,620",
|
"window_bounds" : "300,300,800,620",
|
||||||
"icon_size" : "96",
|
"icon_size" : "96",
|
||||||
"background_commands" : "",
|
"background_commands" : "",
|
||||||
@ -849,8 +850,8 @@ if config.dmg is not None:
|
|||||||
if bg_path is not None:
|
if bg_path is not None:
|
||||||
# Set background file, then call SetFile to make it invisible.
|
# Set background file, then call SetFile to make it invisible.
|
||||||
# (note: making it invisible first makes set background picture fail)
|
# (note: making it invisible first makes set background picture fail)
|
||||||
bgscript = Template("""set background picture of theViewOptions to file "$bgpic"
|
bgscript = Template("""set background picture of theViewOptions to file ".background:$bgpic"
|
||||||
do shell script "SetFile -a V /Volumes/$disk/$bgpic" """)
|
do shell script "SetFile -a V /Volumes/$disk/.background/$bgpic" """)
|
||||||
params["background_commands"] = bgscript.substitute({"bgpic" : os.path.basename(bg_path), "disk" : params["disk"]})
|
params["background_commands"] = bgscript.substitute({"bgpic" : os.path.basename(bg_path), "disk" : params["disk"]})
|
||||||
|
|
||||||
s = appscript.substitute(params)
|
s = appscript.substitute(params)
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
### Seeds ###
|
### Seeds ###
|
||||||
|
|
||||||
Utility to generate the seeds.txt list that is compiled into the client
|
Utility to generate the seeds.txt list that is compiled into the client
|
||||||
(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and [share/seeds](/share/seeds)).
|
(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and other utilities in [contrib/seeds](/contrib/seeds)).
|
||||||
|
|
||||||
The 512 seeds compiled into the 0.10 release were created from sipa's DNS seed data, like this:
|
The seeds compiled into the release are created from sipa's DNS seed data, like this:
|
||||||
|
|
||||||
|
curl -s http://bitcoin.sipa.be/seeds.txt > seeds_main.txt
|
||||||
|
python makeseeds.py < seeds_main.txt > nodes_main.txt
|
||||||
|
python generate-seeds.py . > ../../src/chainparamsseeds.h
|
||||||
|
|
||||||
curl -s http://bitcoin.sipa.be/seeds.txt | makeseeds.py
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# Copyright (c) 2014 Wladmir J. van der Laan
|
# Copyright (c) 2014 Wladimir J. van der Laan
|
||||||
# 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.
|
||||||
'''
|
'''
|
||||||
@ -77,6 +77,9 @@ def parse_spec(s, defaultport):
|
|||||||
if match: # ipv6
|
if match: # ipv6
|
||||||
host = match.group(1)
|
host = match.group(1)
|
||||||
port = match.group(2)
|
port = match.group(2)
|
||||||
|
elif s.count(':') > 1: # ipv6, no port
|
||||||
|
host = s
|
||||||
|
port = ''
|
||||||
else:
|
else:
|
||||||
(host,_,port) = s.partition(':')
|
(host,_,port) = s.partition(':')
|
||||||
|
|
||||||
@ -118,7 +121,7 @@ def main():
|
|||||||
g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n')
|
g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n')
|
||||||
g.write('/**\n')
|
g.write('/**\n')
|
||||||
g.write(' * List of fixed seed nodes for the dash network\n')
|
g.write(' * List of fixed seed nodes for the dash network\n')
|
||||||
g.write(' * AUTOGENERATED by share/seeds/generate-seeds.py\n')
|
g.write(' * AUTOGENERATED by contrib/seeds/generate-seeds.py\n')
|
||||||
g.write(' *\n')
|
g.write(' *\n')
|
||||||
g.write(' * Each line contains a 16-byte IPv6 address and a port.\n')
|
g.write(' * Each line contains a 16-byte IPv6 address and a port.\n')
|
||||||
g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
|
g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
|
@ -7,7 +7,7 @@ NSEEDS=512
|
|||||||
|
|
||||||
MAX_SEEDS_PER_ASN=2
|
MAX_SEEDS_PER_ASN=2
|
||||||
|
|
||||||
MIN_BLOCKS = 200000
|
MIN_BLOCKS = 400000
|
||||||
|
|
||||||
# These are hosts that have been observed to be behaving strangely (e.g.
|
# These are hosts that have been observed to be behaving strangely (e.g.
|
||||||
# aggressively connecting to every node).
|
# aggressively connecting to every node).
|
||||||
@ -22,26 +22,50 @@ SUSPICIOUS_HOSTS = set([
|
|||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import dns.resolver
|
import dns.resolver
|
||||||
|
import collections
|
||||||
|
|
||||||
PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):9999$")
|
PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):(\d+)$")
|
||||||
PATTERN_AGENT = re.compile(r"^(\/Satoshi:0.8.6\/|\/Satoshi:0.9.(2|3)\/|\/Core:0.1(0|1|2).\d{1,2}.\d{1,2}\/)$")
|
PATTERN_IPV6 = re.compile(r"^\[([0-9a-z:]+)\]:(\d+)$")
|
||||||
|
PATTERN_ONION = re.compile(r"^([abcdefghijklmnopqrstuvwxyz234567]{16}\.onion):(\d+)$")
|
||||||
|
PATTERN_AGENT = re.compile(r"^(\/Satoshi:0\.8\.6\/|\/Satoshi:0\.9\.(2|3|4|5)\/|\/Core:0.1(0|1|2).\d{1,2}.\d{1,2}\/)$")
|
||||||
|
|
||||||
def parseline(line):
|
def parseline(line):
|
||||||
sline = line.split()
|
sline = line.split()
|
||||||
if len(sline) < 11:
|
if len(sline) < 11:
|
||||||
return None
|
return None
|
||||||
# Match only IPv4
|
|
||||||
m = PATTERN_IPV4.match(sline[0])
|
m = PATTERN_IPV4.match(sline[0])
|
||||||
|
sortkey = None
|
||||||
|
ip = None
|
||||||
if m is None:
|
if m is None:
|
||||||
return None
|
m = PATTERN_IPV6.match(sline[0])
|
||||||
# Do IPv4 sanity check
|
if m is None:
|
||||||
ip = 0
|
m = PATTERN_ONION.match(sline[0])
|
||||||
for i in range(0,4):
|
if m is None:
|
||||||
if int(m.group(i+2)) < 0 or int(m.group(i+2)) > 255:
|
return None
|
||||||
|
else:
|
||||||
|
net = 'onion'
|
||||||
|
ipstr = sortkey = m.group(1)
|
||||||
|
port = int(m.group(2))
|
||||||
|
else:
|
||||||
|
net = 'ipv6'
|
||||||
|
if m.group(1) in ['::']: # Not interested in localhost
|
||||||
|
return None
|
||||||
|
ipstr = m.group(1)
|
||||||
|
sortkey = ipstr # XXX parse IPv6 into number, could use name_to_ipv6 from generate-seeds
|
||||||
|
port = int(m.group(2))
|
||||||
|
else:
|
||||||
|
# Do IPv4 sanity check
|
||||||
|
ip = 0
|
||||||
|
for i in range(0,4):
|
||||||
|
if int(m.group(i+2)) < 0 or int(m.group(i+2)) > 255:
|
||||||
|
return None
|
||||||
|
ip = ip + (int(m.group(i+2)) << (8*(3-i)))
|
||||||
|
if ip == 0:
|
||||||
return None
|
return None
|
||||||
ip = ip + (int(m.group(i+2)) << (8*(3-i)))
|
net = 'ipv4'
|
||||||
if ip == 0:
|
sortkey = ip
|
||||||
return None
|
ipstr = m.group(1)
|
||||||
|
port = int(m.group(6))
|
||||||
# Skip bad results.
|
# Skip bad results.
|
||||||
if sline[1] == 0:
|
if sline[1] == 0:
|
||||||
return None
|
return None
|
||||||
@ -59,7 +83,9 @@ def parseline(line):
|
|||||||
blocks = int(sline[8])
|
blocks = int(sline[8])
|
||||||
# Construct result.
|
# Construct result.
|
||||||
return {
|
return {
|
||||||
'ip': m.group(1),
|
'net': net,
|
||||||
|
'ip': ipstr,
|
||||||
|
'port': port,
|
||||||
'ipnum': ip,
|
'ipnum': ip,
|
||||||
'uptime': uptime30,
|
'uptime': uptime30,
|
||||||
'lastsuccess': lastsuccess,
|
'lastsuccess': lastsuccess,
|
||||||
@ -67,13 +93,27 @@ def parseline(line):
|
|||||||
'agent': agent,
|
'agent': agent,
|
||||||
'service': service,
|
'service': service,
|
||||||
'blocks': blocks,
|
'blocks': blocks,
|
||||||
|
'sortkey': sortkey,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def filtermultiport(ips):
|
||||||
|
'''Filter out hosts with more nodes per IP'''
|
||||||
|
hist = collections.defaultdict(list)
|
||||||
|
for ip in ips:
|
||||||
|
hist[ip['sortkey']].append(ip)
|
||||||
|
return [value[0] for (key,value) in hist.items() if len(value)==1]
|
||||||
|
|
||||||
# Based on Greg Maxwell's seed_filter.py
|
# Based on Greg Maxwell's seed_filter.py
|
||||||
def filterbyasn(ips, max_per_asn, max_total):
|
def filterbyasn(ips, max_per_asn, max_total):
|
||||||
|
# Sift out ips by type
|
||||||
|
ips_ipv4 = [ip for ip in ips if ip['net'] == 'ipv4']
|
||||||
|
ips_ipv6 = [ip for ip in ips if ip['net'] == 'ipv6']
|
||||||
|
ips_onion = [ip for ip in ips if ip['net'] == 'onion']
|
||||||
|
|
||||||
|
# Filter IPv4 by ASN
|
||||||
result = []
|
result = []
|
||||||
asn_count = {}
|
asn_count = {}
|
||||||
for ip in ips:
|
for ip in ips_ipv4:
|
||||||
if len(result) == max_total:
|
if len(result) == max_total:
|
||||||
break
|
break
|
||||||
try:
|
try:
|
||||||
@ -86,13 +126,19 @@ def filterbyasn(ips, max_per_asn, max_total):
|
|||||||
result.append(ip)
|
result.append(ip)
|
||||||
except:
|
except:
|
||||||
sys.stderr.write('ERR: Could not resolve ASN for "' + ip['ip'] + '"\n')
|
sys.stderr.write('ERR: Could not resolve ASN for "' + ip['ip'] + '"\n')
|
||||||
|
|
||||||
|
# TODO: filter IPv6 by ASN
|
||||||
|
|
||||||
|
# Add back non-IPv4
|
||||||
|
result.extend(ips_ipv6)
|
||||||
|
result.extend(ips_onion)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
lines = sys.stdin.readlines()
|
lines = sys.stdin.readlines()
|
||||||
ips = [parseline(line) for line in lines]
|
ips = [parseline(line) for line in lines]
|
||||||
|
|
||||||
# Skip entries with valid IPv4 address.
|
# Skip entries with valid address.
|
||||||
ips = [ip for ip in ips if ip is not None]
|
ips = [ip for ip in ips if ip is not None]
|
||||||
# Skip entries from suspicious hosts.
|
# Skip entries from suspicious hosts.
|
||||||
ips = [ip for ip in ips if ip['ip'] not in SUSPICIOUS_HOSTS]
|
ips = [ip for ip in ips if ip['ip'] not in SUSPICIOUS_HOSTS]
|
||||||
@ -106,13 +152,18 @@ def main():
|
|||||||
ips = [ip for ip in ips if PATTERN_AGENT.match(ip['agent'])]
|
ips = [ip for ip in ips if PATTERN_AGENT.match(ip['agent'])]
|
||||||
# Sort by availability (and use last success as tie breaker)
|
# Sort by availability (and use last success as tie breaker)
|
||||||
ips.sort(key=lambda x: (x['uptime'], x['lastsuccess'], x['ip']), reverse=True)
|
ips.sort(key=lambda x: (x['uptime'], x['lastsuccess'], x['ip']), reverse=True)
|
||||||
|
# Filter out hosts with multiple bitcoin ports, these are likely abusive
|
||||||
|
ips = filtermultiport(ips)
|
||||||
# Look up ASNs and limit results, both per ASN and globally.
|
# Look up ASNs and limit results, both per ASN and globally.
|
||||||
ips = filterbyasn(ips, MAX_SEEDS_PER_ASN, NSEEDS)
|
ips = filterbyasn(ips, MAX_SEEDS_PER_ASN, NSEEDS)
|
||||||
# Sort the results by IP address (for deterministic output).
|
# Sort the results by IP address (for deterministic output).
|
||||||
ips.sort(key=lambda x: (x['ipnum']))
|
ips.sort(key=lambda x: (x['net'], x['sortkey']))
|
||||||
|
|
||||||
for ip in ips:
|
for ip in ips:
|
||||||
print ip['ip']
|
if ip['net'] == 'ipv6':
|
||||||
|
print '[%s]:%i' % (ip['ip'], ip['port'])
|
||||||
|
else:
|
||||||
|
print '%s:%i' % (ip['ip'], ip['port'])
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
937
contrib/seeds/nodes_main.txt
Normal file
937
contrib/seeds/nodes_main.txt
Normal file
@ -0,0 +1,937 @@
|
|||||||
|
5.2.145.201:8333
|
||||||
|
5.22.142.214:8333
|
||||||
|
5.53.172.197:8333
|
||||||
|
5.189.161.164:8333
|
||||||
|
5.230.140.166:8333
|
||||||
|
5.231.3.130:8333
|
||||||
|
5.255.80.103:8333
|
||||||
|
14.202.230.49:8333
|
||||||
|
18.85.11.130:8333
|
||||||
|
23.91.97.25:8333
|
||||||
|
23.94.100.122:8333
|
||||||
|
23.95.99.132:8333
|
||||||
|
24.115.8.206:8333
|
||||||
|
24.127.128.191:8333
|
||||||
|
24.154.178.25:8333
|
||||||
|
24.207.103.43:8333
|
||||||
|
24.207.104.105:8333
|
||||||
|
24.210.230.150:8333
|
||||||
|
24.224.18.84:8333
|
||||||
|
24.246.168.106:8333
|
||||||
|
27.254.64.47:8333
|
||||||
|
31.6.71.123:8333
|
||||||
|
31.6.71.124:8333
|
||||||
|
31.14.134.13:8333
|
||||||
|
31.30.36.220:8333
|
||||||
|
31.164.6.104:8333
|
||||||
|
31.170.106.203:8333
|
||||||
|
31.185.134.201:8333
|
||||||
|
31.204.128.99:8333
|
||||||
|
31.204.128.219:8333
|
||||||
|
37.1.219.88:8333
|
||||||
|
37.97.132.109:8333
|
||||||
|
37.120.160.55:8333
|
||||||
|
37.120.169.123:8333
|
||||||
|
37.139.32.46:8333
|
||||||
|
37.221.163.218:8333
|
||||||
|
38.130.192.72:8333
|
||||||
|
41.75.96.80:8333
|
||||||
|
45.3.0.49:8333
|
||||||
|
45.33.72.185:8333
|
||||||
|
45.33.96.129:8333
|
||||||
|
45.56.4.63:8333
|
||||||
|
45.79.0.127:8333
|
||||||
|
45.79.80.102:8333
|
||||||
|
45.79.97.30:8333
|
||||||
|
45.79.132.219:8333
|
||||||
|
46.21.97.135:8333
|
||||||
|
46.28.205.67:8333
|
||||||
|
46.28.206.188:8333
|
||||||
|
46.29.20.209:8333
|
||||||
|
46.50.234.179:8333
|
||||||
|
46.101.160.168:8333
|
||||||
|
46.166.161.35:8333
|
||||||
|
46.166.161.103:8333
|
||||||
|
46.182.132.100:8333
|
||||||
|
46.218.227.92:8333
|
||||||
|
46.226.109.20:8333
|
||||||
|
46.227.66.132:8333
|
||||||
|
46.227.66.138:8333
|
||||||
|
46.229.165.154:8333
|
||||||
|
46.229.165.155:8333
|
||||||
|
46.229.238.187:8333
|
||||||
|
46.234.104.48:8333
|
||||||
|
46.239.107.74:8333
|
||||||
|
46.244.0.138:8333
|
||||||
|
46.254.72.195:8333
|
||||||
|
50.5.13.44:8333
|
||||||
|
50.7.37.114:8333
|
||||||
|
50.30.37.103:8333
|
||||||
|
50.39.105.60:8333
|
||||||
|
50.106.40.231:8333
|
||||||
|
52.29.0.37:8333
|
||||||
|
52.76.192.246:8333
|
||||||
|
54.152.192.179:8333
|
||||||
|
54.169.64.174:8333
|
||||||
|
54.175.160.22:8333
|
||||||
|
54.199.128.0:8333
|
||||||
|
58.96.171.129:8333
|
||||||
|
58.161.238.57:8333
|
||||||
|
60.251.195.221:8333
|
||||||
|
61.35.225.19:8333
|
||||||
|
62.43.130.178:8333
|
||||||
|
62.65.39.12:8333
|
||||||
|
62.107.200.30:8333
|
||||||
|
62.133.194.2:8333
|
||||||
|
62.181.238.186:8333
|
||||||
|
62.183.22.50:8333
|
||||||
|
62.210.85.120:8333
|
||||||
|
62.210.162.89:8333
|
||||||
|
62.238.34.125:8333
|
||||||
|
64.25.171.73:8333
|
||||||
|
64.27.166.30:8333
|
||||||
|
64.53.137.101:8333
|
||||||
|
64.71.72.44:8333
|
||||||
|
64.83.225.146:8333
|
||||||
|
64.121.3.163:8333
|
||||||
|
64.203.102.86:8333
|
||||||
|
65.94.131.59:8333
|
||||||
|
65.188.136.233:8333
|
||||||
|
66.11.162.218:8333
|
||||||
|
66.23.228.133:8333
|
||||||
|
66.90.137.89:8333
|
||||||
|
66.114.33.49:8333
|
||||||
|
66.150.105.77:8333
|
||||||
|
66.172.10.4:8333
|
||||||
|
66.194.38.250:8333
|
||||||
|
66.194.38.253:8333
|
||||||
|
66.194.38.254:8333
|
||||||
|
66.231.97.172:8333
|
||||||
|
66.240.237.155:8333
|
||||||
|
67.159.13.34:8333
|
||||||
|
67.205.74.206:8333
|
||||||
|
67.221.193.55:8333
|
||||||
|
67.227.72.17:8333
|
||||||
|
68.65.120.53:8333
|
||||||
|
68.65.205.226:9000
|
||||||
|
68.144.4.34:8333
|
||||||
|
69.39.49.199:8333
|
||||||
|
69.50.171.205:8333
|
||||||
|
69.65.41.21:8333
|
||||||
|
69.113.98.61:8333
|
||||||
|
69.119.97.39:8333
|
||||||
|
69.146.70.124:8333
|
||||||
|
69.193.71.2:8333
|
||||||
|
70.46.10.237:8333
|
||||||
|
70.80.200.187:8333
|
||||||
|
70.185.97.117:8333
|
||||||
|
71.254.160.25:8333
|
||||||
|
72.28.203.5:8333
|
||||||
|
72.52.130.110:8333
|
||||||
|
72.83.194.122:8333
|
||||||
|
72.128.32.167:8333
|
||||||
|
72.179.136.80:8333
|
||||||
|
72.235.38.70:8333
|
||||||
|
74.50.44.193:8333
|
||||||
|
74.72.60.83:8333
|
||||||
|
74.80.234.116:8333
|
||||||
|
74.207.233.193:8333
|
||||||
|
75.112.233.128:8333
|
||||||
|
75.118.166.197:8333
|
||||||
|
75.140.0.241:8333
|
||||||
|
75.159.240.66:8333
|
||||||
|
75.174.5.26:8333
|
||||||
|
76.72.160.252:8333
|
||||||
|
76.72.160.254:8333
|
||||||
|
76.74.170.112:8333
|
||||||
|
76.79.201.54:8333
|
||||||
|
76.175.166.164:8333
|
||||||
|
76.179.105.27:8333
|
||||||
|
77.68.37.200:8333
|
||||||
|
77.234.49.196:8333
|
||||||
|
77.247.229.93:8333
|
||||||
|
78.24.72.78:8333
|
||||||
|
78.47.32.147:8333
|
||||||
|
78.84.100.95:8333
|
||||||
|
78.121.69.23:8333
|
||||||
|
78.129.167.5:8333
|
||||||
|
78.193.96.155:8333
|
||||||
|
79.19.37.179:8333
|
||||||
|
79.132.230.144:8333
|
||||||
|
79.133.43.63:8333
|
||||||
|
79.134.201.66:8333
|
||||||
|
79.169.35.235:8333
|
||||||
|
80.57.227.14:8333
|
||||||
|
80.64.65.87:8333
|
||||||
|
80.86.92.70:8333
|
||||||
|
80.100.203.151:8333
|
||||||
|
80.101.32.121:8333
|
||||||
|
80.161.178.73:8333
|
||||||
|
80.240.129.170:8333
|
||||||
|
81.7.11.50:8333
|
||||||
|
81.7.11.55:8333
|
||||||
|
81.17.17.40:9333
|
||||||
|
81.30.39.83:8333
|
||||||
|
81.90.36.7:9444
|
||||||
|
81.136.224.77:8333
|
||||||
|
81.162.231.211:8333
|
||||||
|
81.184.0.143:8333
|
||||||
|
81.198.128.86:8333
|
||||||
|
82.11.33.229:8333
|
||||||
|
82.79.128.134:8333
|
||||||
|
82.118.233.111:8333
|
||||||
|
82.135.139.30:8333
|
||||||
|
82.199.102.10:8333
|
||||||
|
82.221.106.17:8333
|
||||||
|
82.221.108.21:8333
|
||||||
|
82.221.108.27:8333
|
||||||
|
83.137.41.3:8333
|
||||||
|
83.142.197.168:8333
|
||||||
|
83.143.130.19:8333
|
||||||
|
83.150.9.196:8333
|
||||||
|
83.183.17.191:8333
|
||||||
|
83.227.173.83:8333
|
||||||
|
83.230.5.15:8333
|
||||||
|
83.233.105.151:443
|
||||||
|
83.246.75.8:8333
|
||||||
|
83.250.133.158:8333
|
||||||
|
83.255.66.118:8334
|
||||||
|
84.24.69.59:8333
|
||||||
|
84.42.193.6:8333
|
||||||
|
84.45.98.87:8333
|
||||||
|
84.54.128.11:8333
|
||||||
|
84.212.200.24:8333
|
||||||
|
84.215.198.109:8333
|
||||||
|
84.230.4.177:8333
|
||||||
|
85.95.228.83:8333
|
||||||
|
85.95.228.123:8333
|
||||||
|
85.114.128.134:8333
|
||||||
|
85.214.66.168:8333
|
||||||
|
85.214.147.162:8333
|
||||||
|
85.243.168.4:8333
|
||||||
|
86.1.0.18:8333
|
||||||
|
87.79.77.106:8333
|
||||||
|
87.91.156.110:8333
|
||||||
|
87.236.196.222:8333
|
||||||
|
88.85.75.152:8333
|
||||||
|
88.87.1.230:8333
|
||||||
|
88.87.92.102:8333
|
||||||
|
88.89.69.202:8333
|
||||||
|
88.97.72.229:8333
|
||||||
|
88.164.117.99:8333
|
||||||
|
88.198.32.131:8333
|
||||||
|
88.202.230.87:8333
|
||||||
|
88.214.193.154:8343
|
||||||
|
88.214.194.226:8343
|
||||||
|
89.10.155.88:8333
|
||||||
|
89.46.101.44:8333
|
||||||
|
89.163.224.212:8333
|
||||||
|
89.174.248.20:8333
|
||||||
|
89.202.231.198:8333
|
||||||
|
89.212.75.6:8333
|
||||||
|
90.149.38.172:8333
|
||||||
|
90.169.106.139:8333
|
||||||
|
91.64.101.150:8333
|
||||||
|
91.65.196.179:8333
|
||||||
|
91.121.80.17:8333
|
||||||
|
91.126.77.77:8333
|
||||||
|
91.145.76.156:8333
|
||||||
|
91.152.150.35:8333
|
||||||
|
91.192.137.17:8333
|
||||||
|
91.196.170.110:8333
|
||||||
|
91.197.44.133:8333
|
||||||
|
91.207.68.144:8333
|
||||||
|
91.210.105.28:8333
|
||||||
|
91.211.102.101:8333
|
||||||
|
91.211.106.34:8333
|
||||||
|
91.214.200.205:8333
|
||||||
|
91.220.43.146:8333
|
||||||
|
91.222.71.89:8333
|
||||||
|
91.224.140.242:8333
|
||||||
|
91.229.76.14:8333
|
||||||
|
92.27.7.209:8333
|
||||||
|
92.51.167.88:8333
|
||||||
|
92.247.229.163:8333
|
||||||
|
93.84.114.106:8333
|
||||||
|
93.113.36.172:8333
|
||||||
|
93.188.224.253:8333
|
||||||
|
94.75.239.69:8333
|
||||||
|
94.190.227.112:8333
|
||||||
|
94.214.2.74:8333
|
||||||
|
94.224.162.65:8333
|
||||||
|
94.236.198.253:8333
|
||||||
|
94.242.229.158:8333
|
||||||
|
95.84.138.99:8333
|
||||||
|
95.95.168.87:8333
|
||||||
|
95.110.234.93:8333
|
||||||
|
95.130.9.200:8333
|
||||||
|
95.165.168.168:8333
|
||||||
|
95.170.235.254:8333
|
||||||
|
95.211.130.154:8333
|
||||||
|
96.46.68.104:8333
|
||||||
|
96.127.202.148:8333
|
||||||
|
97.76.171.35:8333
|
||||||
|
98.160.160.67:8333
|
||||||
|
99.126.197.187:8333
|
||||||
|
99.198.173.1:8333
|
||||||
|
101.100.174.138:8333
|
||||||
|
101.164.201.208:8333
|
||||||
|
103.224.165.48:8333
|
||||||
|
104.128.225.223:8333
|
||||||
|
104.128.228.252:8333
|
||||||
|
104.131.192.94:8333
|
||||||
|
104.155.45.201:8334
|
||||||
|
104.194.28.195:8663
|
||||||
|
104.211.1.27:8333
|
||||||
|
104.221.38.177:8333
|
||||||
|
104.236.9.79:8333
|
||||||
|
104.236.129.178:8333
|
||||||
|
104.236.186.249:8333
|
||||||
|
104.236.194.15:8333
|
||||||
|
104.238.128.214:8333
|
||||||
|
104.238.130.182:8333
|
||||||
|
106.38.234.84:8333
|
||||||
|
106.185.36.204:8333
|
||||||
|
106.185.38.67:8333
|
||||||
|
107.6.4.145:8333
|
||||||
|
107.150.2.6:8333
|
||||||
|
107.150.40.234:8333
|
||||||
|
107.170.13.184:8333
|
||||||
|
107.181.250.216:8333
|
||||||
|
107.191.101.111:8333
|
||||||
|
107.191.106.115:8333
|
||||||
|
108.59.12.163:8333
|
||||||
|
108.161.129.247:8333
|
||||||
|
109.193.160.140:8333
|
||||||
|
109.197.13.54:8333
|
||||||
|
109.230.7.248:8333
|
||||||
|
109.234.106.191:8333
|
||||||
|
109.236.137.80:8333
|
||||||
|
109.251.161.121:8333
|
||||||
|
112.65.231.226:8333
|
||||||
|
115.70.166.57:8333
|
||||||
|
115.159.42.80:8333
|
||||||
|
117.18.73.34:8333
|
||||||
|
118.67.201.40:8333
|
||||||
|
118.100.86.246:8333
|
||||||
|
118.110.104.152:8333
|
||||||
|
119.224.64.141:8333
|
||||||
|
120.55.193.136:8333
|
||||||
|
122.106.169.178:8333
|
||||||
|
123.203.174.15:8333
|
||||||
|
123.255.232.94:8333
|
||||||
|
124.148.165.165:8333
|
||||||
|
124.232.141.31:8333
|
||||||
|
128.30.92.69:8333
|
||||||
|
128.39.141.182:8333
|
||||||
|
128.84.167.20:8333
|
||||||
|
128.111.73.10:8333
|
||||||
|
128.127.38.195:8333
|
||||||
|
128.140.224.162:8333
|
||||||
|
128.199.101.104:8333
|
||||||
|
128.233.224.35:8333
|
||||||
|
128.253.3.193:20020
|
||||||
|
130.180.228.138:8333
|
||||||
|
130.185.144.213:8333
|
||||||
|
130.255.73.207:8333
|
||||||
|
133.218.233.11:8333
|
||||||
|
134.249.128.23:8333
|
||||||
|
136.159.234.234:8333
|
||||||
|
137.116.160.176:8333
|
||||||
|
139.162.2.145:8333
|
||||||
|
139.162.23.117:8333
|
||||||
|
141.134.69.253:8333
|
||||||
|
141.255.162.215:8333
|
||||||
|
144.122.163.187:8333
|
||||||
|
145.131.3.54:8333
|
||||||
|
145.255.4.94:8333
|
||||||
|
146.0.32.101:8337
|
||||||
|
147.83.72.91:8333
|
||||||
|
148.103.28.68:8333
|
||||||
|
149.5.32.102:8333
|
||||||
|
149.210.164.195:8333
|
||||||
|
150.101.163.241:8333
|
||||||
|
151.236.11.189:8333
|
||||||
|
152.3.136.56:8333
|
||||||
|
154.20.208.25:8333
|
||||||
|
158.181.104.149:8333
|
||||||
|
159.253.96.226:8333
|
||||||
|
160.36.130.180:8333
|
||||||
|
162.209.1.233:8333
|
||||||
|
162.209.4.125:8333
|
||||||
|
162.209.106.123:8333
|
||||||
|
162.210.198.184:8333
|
||||||
|
162.248.99.164:53011
|
||||||
|
162.248.102.117:8333
|
||||||
|
162.251.108.53:8333
|
||||||
|
163.44.2.48:8333
|
||||||
|
163.158.36.17:8333
|
||||||
|
166.230.71.67:8333
|
||||||
|
167.160.36.62:8333
|
||||||
|
167.160.169.92:8333
|
||||||
|
168.93.129.220:8333
|
||||||
|
169.55.99.84:8333
|
||||||
|
169.228.66.43:8333
|
||||||
|
172.9.169.242:8333
|
||||||
|
173.32.11.194:8333
|
||||||
|
173.230.228.136:8333
|
||||||
|
173.246.107.34:8333
|
||||||
|
173.254.235.34:8333
|
||||||
|
174.0.128.222:8333
|
||||||
|
174.25.130.148:8333
|
||||||
|
174.50.64.101:8333
|
||||||
|
175.140.232.141:8333
|
||||||
|
176.36.37.62:8333
|
||||||
|
176.46.9.96:8333
|
||||||
|
176.124.110.27:8333
|
||||||
|
177.39.16.102:8333
|
||||||
|
178.17.173.2:8333
|
||||||
|
178.62.5.248:8333
|
||||||
|
178.62.70.16:8333
|
||||||
|
178.62.203.185:8333
|
||||||
|
178.79.160.118:8333
|
||||||
|
178.169.206.244:8333
|
||||||
|
178.193.234.62:8333
|
||||||
|
178.199.96.108:8333
|
||||||
|
178.254.18.96:8333
|
||||||
|
178.254.34.161:8333
|
||||||
|
178.255.41.123:8333
|
||||||
|
180.210.34.58:9801
|
||||||
|
182.92.226.212:8333
|
||||||
|
182.171.246.142:8333
|
||||||
|
184.23.8.9:8333
|
||||||
|
184.58.162.35:8333
|
||||||
|
184.154.9.170:8333
|
||||||
|
185.8.238.165:8333
|
||||||
|
185.24.97.11:8333
|
||||||
|
185.31.137.139:8333
|
||||||
|
185.38.44.64:8333
|
||||||
|
185.53.128.180:8333
|
||||||
|
185.53.129.244:8333
|
||||||
|
185.77.129.119:8333
|
||||||
|
185.77.129.156:8333
|
||||||
|
185.82.203.92:8333
|
||||||
|
188.20.97.18:8333
|
||||||
|
188.126.8.14:8333
|
||||||
|
188.138.33.239:8333
|
||||||
|
188.155.136.70:8333
|
||||||
|
188.166.229.112:8333
|
||||||
|
188.182.108.129:8333
|
||||||
|
188.226.225.174:8010
|
||||||
|
188.242.171.8:8333
|
||||||
|
188.243.4.139:8333
|
||||||
|
190.10.9.234:8333
|
||||||
|
190.10.10.147:8333
|
||||||
|
190.81.160.184:8333
|
||||||
|
190.85.201.37:8333
|
||||||
|
192.34.227.230:8333
|
||||||
|
192.77.189.200:8333
|
||||||
|
192.124.224.7:8333
|
||||||
|
192.146.137.1:8333
|
||||||
|
192.203.228.71:8333
|
||||||
|
192.206.202.20:8333
|
||||||
|
193.0.109.3:8333
|
||||||
|
193.41.229.130:8333
|
||||||
|
193.41.229.156:8333
|
||||||
|
193.49.43.219:8333
|
||||||
|
193.147.71.120:8333
|
||||||
|
193.179.65.233:8333
|
||||||
|
193.183.99.46:8333
|
||||||
|
193.192.37.135:8333
|
||||||
|
193.234.224.195:8333
|
||||||
|
194.58.108.213:8333
|
||||||
|
194.187.96.2:8333
|
||||||
|
194.255.31.59:8333
|
||||||
|
195.36.6.101:8333
|
||||||
|
195.58.238.243:8333
|
||||||
|
195.197.175.190:8333
|
||||||
|
195.239.1.66:8333
|
||||||
|
198.48.196.230:8333
|
||||||
|
198.50.192.160:8333
|
||||||
|
198.57.210.27:8333
|
||||||
|
198.84.195.179:8333
|
||||||
|
198.167.140.8:8333
|
||||||
|
198.204.224.106:8333
|
||||||
|
199.127.226.245:8333
|
||||||
|
199.201.110.8:8333
|
||||||
|
199.233.234.90:8333
|
||||||
|
200.116.98.185:8333
|
||||||
|
202.60.70.18:8333
|
||||||
|
203.151.140.14:8333
|
||||||
|
204.112.203.52:8333
|
||||||
|
205.200.247.149:8333
|
||||||
|
207.226.141.253:8333
|
||||||
|
207.255.42.202:8333
|
||||||
|
208.53.164.19:8333
|
||||||
|
208.66.68.127:8333
|
||||||
|
208.66.68.130:8333
|
||||||
|
208.71.171.232:8341
|
||||||
|
208.76.200.200:8333
|
||||||
|
208.82.98.189:8333
|
||||||
|
208.85.193.31:8333
|
||||||
|
208.111.48.41:8333
|
||||||
|
208.111.48.45:8333
|
||||||
|
209.34.232.72:8333
|
||||||
|
209.81.9.223:8333
|
||||||
|
209.90.224.2:8333
|
||||||
|
209.90.224.4:8333
|
||||||
|
209.126.98.174:8333
|
||||||
|
209.136.72.69:8333
|
||||||
|
209.195.4.74:8333
|
||||||
|
209.197.13.62:8333
|
||||||
|
211.72.227.8:8333
|
||||||
|
212.51.144.42:8333
|
||||||
|
212.71.233.127:8333
|
||||||
|
212.126.14.122:8333
|
||||||
|
212.159.44.50:8333
|
||||||
|
213.5.36.58:8333
|
||||||
|
213.57.33.10:8333
|
||||||
|
213.66.205.194:8333
|
||||||
|
213.136.73.125:8333
|
||||||
|
213.155.3.216:8333
|
||||||
|
213.155.7.24:8333
|
||||||
|
213.167.17.6:8333
|
||||||
|
213.223.138.13:8333
|
||||||
|
216.15.78.182:8333
|
||||||
|
216.38.129.164:8333
|
||||||
|
216.48.168.8:8333
|
||||||
|
216.169.141.169:8333
|
||||||
|
216.245.206.181:8333
|
||||||
|
216.249.204.161:8333
|
||||||
|
216.250.138.230:8333
|
||||||
|
217.11.225.189:8333
|
||||||
|
217.12.34.158:8333
|
||||||
|
217.12.202.33:8333
|
||||||
|
217.20.171.43:8333
|
||||||
|
217.23.1.126:8333
|
||||||
|
217.23.11.138:8333
|
||||||
|
217.111.66.79:8333
|
||||||
|
217.155.202.191:8333
|
||||||
|
217.158.9.102:8333
|
||||||
|
217.172.32.18:20993
|
||||||
|
220.245.196.37:8333
|
||||||
|
[2001:1291:2bf:1::100]:8333
|
||||||
|
[2001:1620:f00:282::2]:8333
|
||||||
|
[2001:1620:f00:8282::1]:8333
|
||||||
|
[2001:19f0:5000:8de8:5400:ff:fe12:55e4]:8333
|
||||||
|
[2001:19f0:6c00:9103:5400:ff:fe10:a8d3]:8333
|
||||||
|
[2001:1b60:3:172:142b:6dff:fe7a:117]:8333
|
||||||
|
[2001:410:a000:4050:8463:90b0:fffb:4e58]:8333
|
||||||
|
[2001:4128:6135:2010:21e:bff:fee8:a3c0]:8333
|
||||||
|
[2001:41d0:1008:761::17c]:8333
|
||||||
|
[2001:41d0:1:45d8::1]:8333
|
||||||
|
[2001:41d0:1:6cd3::]:8333
|
||||||
|
[2001:41d0:1:8b26::1]:8333
|
||||||
|
[2001:41d0:1:afda::]:8200
|
||||||
|
[2001:41d0:1:b26b::1]:8333
|
||||||
|
[2001:41d0:1:c139::1]:8333
|
||||||
|
[2001:41d0:1:c8d7::1]:8333
|
||||||
|
[2001:41d0:1:f59f::33]:8333
|
||||||
|
[2001:41d0:1:f7cc::1]:8333
|
||||||
|
[2001:41d0:2:1021::1]:8333
|
||||||
|
[2001:41d0:2:37c3::]:8200
|
||||||
|
[2001:41d0:2:4797:2323:2323:2323:2323]:8333
|
||||||
|
[2001:41d0:2:53df::]:8333
|
||||||
|
[2001:41d0:2:9c94::1]:8333
|
||||||
|
[2001:41d0:2:9d3e::1]:8333
|
||||||
|
[2001:41d0:2:a24f::]:8333
|
||||||
|
[2001:41d0:2:a35a::]:8333
|
||||||
|
[2001:41d0:2:b2b8::]:8333
|
||||||
|
[2001:41d0:2:c1d9::]:8333
|
||||||
|
[2001:41d0:2:c6e::]:8333
|
||||||
|
[2001:41d0:2:c9bf::]:8333
|
||||||
|
[2001:41d0:2:f1a5::]:8333
|
||||||
|
[2001:41d0:52:a00::105f]:8333
|
||||||
|
[2001:41d0:52:cff::6f5]:8333
|
||||||
|
[2001:41d0:52:d00::6e2]:8333
|
||||||
|
[2001:41d0:8:3e75::1]:8333
|
||||||
|
[2001:41d0:8:62ab::1]:8333
|
||||||
|
[2001:41d0:8:6728::]:8333
|
||||||
|
[2001:41d0:8:b30a::1]:8333
|
||||||
|
[2001:41d0:8:bc26::1]:8333
|
||||||
|
[2001:41d0:8:be9a::1]:8333
|
||||||
|
[2001:41d0:8:d984::]:8333
|
||||||
|
[2001:41d0:8:eb8b::]:8333
|
||||||
|
[2001:41d0:a:13a2::1]:8333
|
||||||
|
[2001:41d0:a:2b18::1]:8333
|
||||||
|
[2001:41d0:a:2d14::]:8333
|
||||||
|
[2001:41d0:a:4558::1df2:76d3]:8333
|
||||||
|
[2001:41d0:a:4aaa::]:8333
|
||||||
|
[2001:41d0:a:635b::1]:8333
|
||||||
|
[2001:41d0:a:63d8::1]:8333
|
||||||
|
[2001:41d0:a:6c29::1]:8333
|
||||||
|
[2001:41d0:a:f9cd::1]:8333
|
||||||
|
[2001:41d0:d:20a4::]:8333
|
||||||
|
[2001:41d0:e:26b::1]:8333
|
||||||
|
[2001:41d0:fc8c:a200:7a24:afff:fe9d:c69b]:8333
|
||||||
|
[2001:41f0:61::7]:8333
|
||||||
|
[2001:41f0::2]:8333
|
||||||
|
[2001:44b8:41bd:6101:148e:4022:4950:e861]:8333
|
||||||
|
[2001:470:1:2f9:0:1:107a:a301]:8333
|
||||||
|
[2001:470:1f0b:ad6::2]:8333
|
||||||
|
[2001:470:1f11:12d5::ae1:5611]:8333
|
||||||
|
[2001:470:1f14:7d::2]:8333
|
||||||
|
[2001:470:27:ce::2]:8333
|
||||||
|
[2001:470:41:6::2]:8333
|
||||||
|
[2001:470:507d:0:6ab5:99ff:fe73:ac18]:8333
|
||||||
|
[2001:470:583e::2a]:8333
|
||||||
|
[2001:470:5f:5f::232]:8333
|
||||||
|
[2001:470:66:119::2]:8333
|
||||||
|
[2001:470:6c4f::cafe]:8333
|
||||||
|
[2001:470:6f:327:913b:7fe:8545:a4f5]:8333
|
||||||
|
[2001:470:7dda:1::1]:8333
|
||||||
|
[2001:470:95c1::2]:8333
|
||||||
|
[2001:470:b1d0:ffff::1000]:8333
|
||||||
|
[2001:470:d00d:0:3664:a9ff:fe9a:5150]:8333
|
||||||
|
[2001:470:fab7:1::1]:8333
|
||||||
|
[2001:4800:7819:104:be76:4eff:fe05:c828]:8333
|
||||||
|
[2001:4800:7819:104:be76:4eff:fe05:c9a0]:8333
|
||||||
|
[2001:4801:7819:74:b745:b9d5:ff10:a61a]:8333
|
||||||
|
[2001:4801:7819:74:b745:b9d5:ff10:aaec]:8333
|
||||||
|
[2001:4801:7828:104:be76:4eff:fe10:1325]:8333
|
||||||
|
[2001:4802:7800:1:be76:4eff:fe20:f023]:8333
|
||||||
|
[2001:4802:7800:2:30d7:1775:ff20:1858]:8333
|
||||||
|
[2001:4802:7800:2:be76:4eff:fe20:6c26]:8333
|
||||||
|
[2001:4802:7802:101:be76:4eff:fe20:256]:8333
|
||||||
|
[2001:4802:7802:103:be76:4eff:fe20:2de8]:8333
|
||||||
|
[2001:4830:1100:2e8::2]:8333
|
||||||
|
[2001:4b98:dc2:41:216:3eff:fe56:f659]:8333
|
||||||
|
[2001:4ba0:fffa:5d::93]:8333
|
||||||
|
[2001:4ba0:ffff:1be:1:1005:0:1]:8333
|
||||||
|
[2001:4dd0:ff00:867f::3]:8333
|
||||||
|
[2001:4dd0:ff00:9a67::9]:8333
|
||||||
|
[2001:5c0:1400:b::3cc7]:8333
|
||||||
|
[2001:610:1b19::3]:8333
|
||||||
|
[2001:610:600:a41::2]:8333
|
||||||
|
[2001:67c:26b4::]:8333
|
||||||
|
[2001:8d8:840:500::39:1ae]:8333
|
||||||
|
[2001:8d8:965:4a00::10:9343]:8333
|
||||||
|
[2001:980:4650:1:2e0:53ff:fe13:2449]:8333
|
||||||
|
[2001:981:46:1:ba27:ebff:fe5b:edee]:8333
|
||||||
|
[2001:9c8:53e9:369a:226:2dff:fe1b:7472]:8333
|
||||||
|
[2001:9d8:cafe:3::87]:8333
|
||||||
|
[2001:b10:11:21:3e07:54ff:fe48:7248]:8333
|
||||||
|
[2001:ba8:1f1:f34c::2]:8333
|
||||||
|
[2001:bc8:2310:100::1]:8333
|
||||||
|
[2001:bc8:3427:101:7a4f:8be:2611:6e79]:8333
|
||||||
|
[2001:bc8:3505:200::1]:8333
|
||||||
|
[2001:cc0:a004::30:1d]:8333
|
||||||
|
[2001:e42:102:1209:153:121:76:171]:8333
|
||||||
|
[2002:17ea:14eb::17ea:14eb]:8333
|
||||||
|
[2002:2f8:2bc5::2f8:2bc5]:8333
|
||||||
|
[2002:4047:482c::4047:482c]:8333
|
||||||
|
[2002:45c3:8cca::45c3:8cca]:8333
|
||||||
|
[2002:46bb:8a41:0:226:b0ff:feed:5f12]:8888
|
||||||
|
[2002:46bb:8c3c:0:8d55:8fbb:15fa:f4e0]:8765
|
||||||
|
[2002:4c48:a0fe::4c48:a0fe]:8333
|
||||||
|
[2002:4d44:25c8::4d44:25c8]:8333
|
||||||
|
[2002:505f:aaa2::505f:aaa2]:8333
|
||||||
|
[2002:5bc1:799d::5bc1:799d]:8333
|
||||||
|
[2002:6dec:5472::6dec:5472]:8333
|
||||||
|
[2002:8c6d:6521:9617:12bf:48ff:fed8:1724]:8333
|
||||||
|
[2002:ac52:94e2::ac52:94e2]:8333
|
||||||
|
[2002:af7e:3eca::af7e:3eca]:8333
|
||||||
|
[2002:b009:20c5::b009:20c5]:8333
|
||||||
|
[2002:c06f:39a0::c06f:39a0]:8333
|
||||||
|
[2002:c23a:738a::c23a:738a]:8333
|
||||||
|
[2002:c70f:7442::c70f:7442]:8333
|
||||||
|
[2002:cec5:be4f::cec5:be4f]:8333
|
||||||
|
[2002:d149:9e3a::d149:9e3a]:8333
|
||||||
|
[2002:d917:ca5::d917:ca5]:8333
|
||||||
|
[2400:8900::f03c:91ff:fe50:153f]:8333
|
||||||
|
[2400:8900::f03c:91ff:fe6e:823e]:8333
|
||||||
|
[2400:8900::f03c:91ff:fea8:1934]:8333
|
||||||
|
[2400:8901::f03c:91ff:fe26:c4d6]:8333
|
||||||
|
[2400:8901::f03c:91ff:fec8:4280]:8333
|
||||||
|
[2400:8901::f03c:91ff:fec8:660f]:8333
|
||||||
|
[2401:1800:7800:102:be76:4eff:fe1c:559]:8333
|
||||||
|
[2401:1800:7800:102:be76:4eff:fe1c:a7d]:8333
|
||||||
|
[2405:aa00:2::40]:8333
|
||||||
|
[2600:3c00::f03c:91ff:fe18:59b2]:8333
|
||||||
|
[2600:3c00::f03c:91ff:fe26:bfb6]:8333
|
||||||
|
[2600:3c00::f03c:91ff:fe33:88e3]:8333
|
||||||
|
[2600:3c00::f03c:91ff:fe6e:7297]:8333
|
||||||
|
[2600:3c00::f03c:91ff:fe84:8a6e]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe18:6adf]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe26:c4b8]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe3b:1f76]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe50:5e06]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe61:289b]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe69:89e9]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe84:ac15]:8333
|
||||||
|
[2600:3c01::f03c:91ff:fe98:68bb]:8333
|
||||||
|
[2600:3c02::f03c:91ff:fe26:713]:8333
|
||||||
|
[2600:3c02::f03c:91ff:fe26:c49e]:8333
|
||||||
|
[2600:3c02::f03c:91ff:fe84:97d8]:8333
|
||||||
|
[2600:3c02::f03c:91ff:fec8:8feb]:8333
|
||||||
|
[2600:3c03::f03c:91ff:fe18:da80]:8333
|
||||||
|
[2600:3c03::f03c:91ff:fe26:c49b]:8333
|
||||||
|
[2600:3c03::f03c:91ff:fe50:5fa7]:8333
|
||||||
|
[2600:3c03::f03c:91ff:fe67:d2e]:8333
|
||||||
|
[2600:3c03::f03c:91ff:fe6e:1803]:8333
|
||||||
|
[2600:3c03::f03c:91ff:fec8:4bbe]:8333
|
||||||
|
[2600:3c03::f03c:91ff:fee4:4e16]:8333
|
||||||
|
[2601:18d:8300:58a6::2e4]:8333
|
||||||
|
[2601:240:4600:40c0:250:56ff:fea4:6305]:8333
|
||||||
|
[2601:581:c200:a719:542c:9cd5:4852:f7d9]:8333
|
||||||
|
[2601:647:4900:85f1:ca2a:14ff:fe51:bb35]:8333
|
||||||
|
[2601:c2:c002:b300:54a0:15b5:19f7:530d]:8333
|
||||||
|
[2602:306:ccff:ad7f:b116:52be:64ba:db3a]:8333
|
||||||
|
[2602:ae:1982:9400:846:f78c:fec:4d57]:8333
|
||||||
|
[2602:ffc5:1f::1f:2d61]:8333
|
||||||
|
[2602:ffc5:1f::1f:9211]:8333
|
||||||
|
[2602:ffc5::75d5:c1c3]:8333
|
||||||
|
[2602:ffc5::ffc5:b844]:8333
|
||||||
|
[2602:ffe8:100:2::457:936b]:8333
|
||||||
|
[2602:ffe8:100:2::9d20:2e3c]:8333
|
||||||
|
[2602:ffea:1001:72b::578b]:8333
|
||||||
|
[2602:ffea:a::24c4:d9fd]:8333
|
||||||
|
[2604:0:c1:100:1ec1:deff:fe54:2235]:8333
|
||||||
|
[2604:180:1:1af::42a9]:8333
|
||||||
|
[2604:180:3:702::c9de]:8333
|
||||||
|
[2604:4080:1114:0:3285:a9ff:fe93:850c]:8333
|
||||||
|
[2604:6000:ffc0:3c:64a3:94d0:4f1d:1da8]:8333
|
||||||
|
[2605:6000:f380:9a01:ba09:8aff:fed4:3511]:8333
|
||||||
|
[2605:6001:e00f:7b00:c587:6d91:6eff:eeba]:8333
|
||||||
|
[2605:f700:c0:1::25c3:2a3e]:8333
|
||||||
|
[2606:6000:a441:9903:5054:ff:fe78:66ff]:8333
|
||||||
|
[2607:5300:100:200::1c83]:9334
|
||||||
|
[2607:5300:10::a1]:8333
|
||||||
|
[2607:5300:60:1c2f::1]:8333
|
||||||
|
[2607:5300:60:2b90::1]:8333
|
||||||
|
[2607:5300:60:3320::1]:8333
|
||||||
|
[2607:5300:60:385::1]:8333
|
||||||
|
[2607:5300:60:4a85::]:8333
|
||||||
|
[2607:5300:60:65e4::]:8333
|
||||||
|
[2607:5300:60:6918::]:8333
|
||||||
|
[2607:5300:60:711a:78::a7b5]:8333
|
||||||
|
[2607:5300:60:714::1]:8333
|
||||||
|
[2607:5300:60:870::1]:8333
|
||||||
|
[2607:5300:60:952e:3733::1414]:8333
|
||||||
|
[2607:f1c0:848:1000::48:943c]:8333
|
||||||
|
[2607:f2e0:f:5df::2]:8333
|
||||||
|
[2607:f748:1200:f8:21e:67ff:fe99:8f07]:8333
|
||||||
|
[2607:f948:0:1::7]:8333
|
||||||
|
[2607:ff68:100:36::131]:8333
|
||||||
|
[2803:6900:1::117]:8333
|
||||||
|
[2a00:1098:0:80:1000:25:0:1]:8333
|
||||||
|
[2a00:1178:2:43:5054:ff:fe84:f86f]:8333
|
||||||
|
[2a00:1178:2:43:5054:ff:fee7:2eb6]:8333
|
||||||
|
[2a00:1178:2:43:8983:cc27:d72:d97a]:8333
|
||||||
|
[2a00:1328:e100:cc42:230:48ff:fe92:55c]:8333
|
||||||
|
[2a00:14f0:e000:80d2:cd1a::1]:8333
|
||||||
|
[2a00:1630:2:1802:188:122:91:11]:8333
|
||||||
|
[2a00:18e0:0:1800::1]:8333
|
||||||
|
[2a00:18e0:0:dcc5:109:234:106:191]:8333
|
||||||
|
[2a00:1a28:1157:87::94c7]:8333
|
||||||
|
[2a00:1ca8:37::a5fc:40d1]:8333
|
||||||
|
[2a00:1ca8:37::ab6d:ce2c]:8333
|
||||||
|
[2a00:7143:100:0:216:3eff:fe2e:74a3]:8333
|
||||||
|
[2a00:7143:100:0:216:3eff:fed3:5c21]:8333
|
||||||
|
[2a00:7c80:0:45::123]:8333
|
||||||
|
[2a00:dcc0:eda:98:183:193:c382:6bdb]:8333
|
||||||
|
[2a00:dcc0:eda:98:183:193:f72e:d943]:8333
|
||||||
|
[2a00:f820:17::4af:1]:8333
|
||||||
|
[2a00:f940:2:1:2::101d]:8333
|
||||||
|
[2a00:f940:2:1:2::6ac]:8333
|
||||||
|
[2a01:1b0:7999:402::131]:8333
|
||||||
|
[2a01:238:42dd:f900:7a6c:2bc6:4041:c43]:8333
|
||||||
|
[2a01:238:4313:6300:2189:1c97:696b:5ea]:8333
|
||||||
|
[2a01:488:66:1000:5c33:91f9:0:1]:8333
|
||||||
|
[2a01:488:66:1000:b01c:178d:0:1]:8333
|
||||||
|
[2a01:4f8:100:34ce::2]:8333
|
||||||
|
[2a01:4f8:100:34e4::2]:8333
|
||||||
|
[2a01:4f8:100:44e7::2]:8333
|
||||||
|
[2a01:4f8:100:510e::2]:8333
|
||||||
|
[2a01:4f8:100:5128::2]:8333
|
||||||
|
[2a01:4f8:110:5105::2]:8333
|
||||||
|
[2a01:4f8:110:516c::2]:8333
|
||||||
|
[2a01:4f8:120:43e4::2]:8333
|
||||||
|
[2a01:4f8:120:62e6::2]:8333
|
||||||
|
[2a01:4f8:120:702e::2]:8333
|
||||||
|
[2a01:4f8:120:8203::2]:8333
|
||||||
|
[2a01:4f8:121:234d::2]:8333
|
||||||
|
[2a01:4f8:121:261::2]:8333
|
||||||
|
[2a01:4f8:130:11ea::2]:8333
|
||||||
|
[2a01:4f8:130:3332::2]:8333
|
||||||
|
[2a01:4f8:130:40ab::2]:8333
|
||||||
|
[2a01:4f8:130:632c::2]:8333
|
||||||
|
[2a01:4f8:130:6366::2]:8333
|
||||||
|
[2a01:4f8:130:934f::2]:8333
|
||||||
|
[2a01:4f8:131:33ad:fea1::666]:8333
|
||||||
|
[2a01:4f8:140:2195::2]:8333
|
||||||
|
[2a01:4f8:140:6333::2]:8333
|
||||||
|
[2a01:4f8:140:930d::2]:8333
|
||||||
|
[2a01:4f8:140:93b0::2]:8333
|
||||||
|
[2a01:4f8:141:1167::2]:8333
|
||||||
|
[2a01:4f8:141:186::2]:8333
|
||||||
|
[2a01:4f8:141:53f0::2]:8333
|
||||||
|
[2a01:4f8:150:336a::2]:8333
|
||||||
|
[2a01:4f8:150:72ee::4202]:8333
|
||||||
|
[2a01:4f8:150:8324::2]:9001
|
||||||
|
[2a01:4f8:151:21ca::2]:8333
|
||||||
|
[2a01:4f8:151:41c2:0:5404:a67e:f250]:8333
|
||||||
|
[2a01:4f8:151:5128::2]:8333
|
||||||
|
[2a01:4f8:151:52c6::154]:8333
|
||||||
|
[2a01:4f8:151:6347::2]:9001
|
||||||
|
[2a01:4f8:160:5136::2]:8333
|
||||||
|
[2a01:4f8:160:72c5::2858:e1c5]:8333
|
||||||
|
[2a01:4f8:160:72c5::593b:60d5]:8333
|
||||||
|
[2a01:4f8:160:814f::2]:8333
|
||||||
|
[2a01:4f8:161:13d0::2]:8333
|
||||||
|
[2a01:4f8:161:228f::2]:8333
|
||||||
|
[2a01:4f8:161:51c4::2]:8333
|
||||||
|
[2a01:4f8:161:60a7::2]:8333
|
||||||
|
[2a01:4f8:161:7026::2]:8333
|
||||||
|
[2a01:4f8:161:9184::2]:8333
|
||||||
|
[2a01:4f8:162:2108::2]:8333
|
||||||
|
[2a01:4f8:162:218c::2]:8333
|
||||||
|
[2a01:4f8:162:4443::2]:8333
|
||||||
|
[2a01:4f8:162:51a3::2]:8333
|
||||||
|
[2a01:4f8:171:b93::2]:8333
|
||||||
|
[2a01:4f8:190:1483::1]:8333
|
||||||
|
[2a01:4f8:190:4495::2]:8333
|
||||||
|
[2a01:4f8:190:64c9::2]:8333
|
||||||
|
[2a01:4f8:190:91ce::2]:8333
|
||||||
|
[2a01:4f8:191:2194::83]:8333
|
||||||
|
[2a01:4f8:191:40e8::2]:8333
|
||||||
|
[2a01:4f8:191:44b4::2]:8333
|
||||||
|
[2a01:4f8:191:8242::2]:8333
|
||||||
|
[2a01:4f8:191:83a2::2]:8333
|
||||||
|
[2a01:4f8:192:11b2::2]:8333
|
||||||
|
[2a01:4f8:192:216c::2]:8333
|
||||||
|
[2a01:4f8:192:22b3::2]:8333
|
||||||
|
[2a01:4f8:192:440b::2]:8333
|
||||||
|
[2a01:4f8:192:db::2]:8333
|
||||||
|
[2a01:4f8:200:1012::2]:8333
|
||||||
|
[2a01:4f8:200:23d1::dead:beef]:8333
|
||||||
|
[2a01:4f8:200:506d::2]:8333
|
||||||
|
[2a01:4f8:200:51f0::2]:8333
|
||||||
|
[2a01:4f8:200:5389::2]:8333
|
||||||
|
[2a01:4f8:200:53e3::2]:8333
|
||||||
|
[2a01:4f8:200:6344::2]:8333
|
||||||
|
[2a01:4f8:200:6396::2]:8333
|
||||||
|
[2a01:4f8:200:63af::119]:8333
|
||||||
|
[2a01:4f8:200:71e3:78b4:f3ff:fead:e8cf]:8333
|
||||||
|
[2a01:4f8:201:214c::2]:8333
|
||||||
|
[2a01:4f8:201:233:1::3]:8333
|
||||||
|
[2a01:4f8:201:3e3::2]:8333
|
||||||
|
[2a01:4f8:201:6011::4]:8333
|
||||||
|
[2a01:4f8:201:60d5::2]:8333
|
||||||
|
[2a01:4f8:202:265::2]:8333
|
||||||
|
[2a01:4f8:202:3115::2]:8333
|
||||||
|
[2a01:4f8:202:31e3::2]:8333
|
||||||
|
[2a01:4f8:202:31ef::2]:8333
|
||||||
|
[2a01:4f8:202:3392::2]:8333
|
||||||
|
[2a01:4f8:202:53c3::2]:8333
|
||||||
|
[2a01:4f8:202:63f4::2]:8333
|
||||||
|
[2a01:4f8:202:7227::2]:8333
|
||||||
|
[2a01:4f8:210:2227::2]:8333
|
||||||
|
[2a01:4f8:210:24aa::2]:8333
|
||||||
|
[2a01:4f8:211:14cf::2]:8333
|
||||||
|
[2a01:4f8:211:181b::2]:8333
|
||||||
|
[2a01:4f8:212:289e::2]:8333
|
||||||
|
[2a01:4f8:212:33db::2]:18333
|
||||||
|
[2a01:4f8:a0:112f::2]:8333
|
||||||
|
[2a01:4f8:a0:3174::2]:8333
|
||||||
|
[2a01:4f8:a0:328c::2]:8333
|
||||||
|
[2a01:4f8:a0:5243::2]:8333
|
||||||
|
[2a01:4f8:c17:19b9::2]:8333
|
||||||
|
[2a01:4f8:c17:1a41::2]:8333
|
||||||
|
[2a01:4f8:c17:1a92::2]:8333
|
||||||
|
[2a01:4f8:c17:273::2]:8333
|
||||||
|
[2a01:4f8:c17:435::2]:8333
|
||||||
|
[2a01:4f8:c17:755::2]:8333
|
||||||
|
[2a01:4f8:c17:b54::2]:8333
|
||||||
|
[2a01:4f8:d16:9384::2]:8333
|
||||||
|
[2a01:608:ffff:a009:8bf5:879d:e51a:f837]:8333
|
||||||
|
[2a01:680:10:10:f2de:f1ff:fec9:dc0]:8333
|
||||||
|
[2a01:7c8:aaac:1f6:5054:ff:fe30:e585]:8333
|
||||||
|
[2a01:7c8:aaac:20b:5054:ff:fe24:435e]:8333
|
||||||
|
[2a01:7c8:aaac:43d:5054:ff:fe4e:3dd4]:8333
|
||||||
|
[2a01:7c8:aaad:256::1]:8333
|
||||||
|
[2a01:7c8:aab6:ea:5054:ff:feff:eac3]:8333
|
||||||
|
[2a01:7c8:aab9:5a:5054:ff:fe89:7b26]:8333
|
||||||
|
[2a01:7c8:aabc:2c8:5054:ff:fe35:6581]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe18:301e]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe18:3942]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe26:8c87]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe50:6206]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe67:559d]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe84:434f]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe89:1143]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fe98:2505]:8333
|
||||||
|
[2a01:7e00::f03c:91ff:fedb:352e]:8333
|
||||||
|
[2a01:7e01::f03c:91ff:fec8:d7b5]:8333
|
||||||
|
[2a01:e34:ee33:1640:c504:f677:b28a:ba42]:8333
|
||||||
|
[2a01:e35:2e7e:bc0:e079:f55e:cef3:b5d7]:8333
|
||||||
|
[2a01:e35:2ee5:610:21f:d0ff:fe4e:7460]:8333
|
||||||
|
[2a01:e35:8a3f:47c0:c617:feff:fe3c:9fbd]:8333
|
||||||
|
[2a01:e35:8aca:6a0:211:aff:fe5e:295e]:8333
|
||||||
|
[2a02:180:a:18:81:7:11:50]:8333
|
||||||
|
[2a02:1810:1d87:6a00:5604:a6ff:fe60:d87d]:8333
|
||||||
|
[2a02:2168:1144:5c01:d63d:7eff:fedd:4f8e]:8333
|
||||||
|
[2a02:2498:6d7b:7001:b508:b39d:2cea:5b7a]:8333
|
||||||
|
[2a02:2528:503:2::15]:8333
|
||||||
|
[2a02:2528:fa:1a56:216:44ff:fe6a:d112]:8333
|
||||||
|
[2a02:27f8:2012:0:e9f7:268f:c441:6129]:8333
|
||||||
|
[2a02:348:86:3011::1]:8333
|
||||||
|
[2a02:4780:1:1::1:8a01]:8333
|
||||||
|
[2a02:578:5002:116::2]:8333
|
||||||
|
[2a02:6080::1:190b:69e3]:8333
|
||||||
|
[2a02:6080::1:e893:d9d6]:8333
|
||||||
|
[2a02:770:4000::139]:8333
|
||||||
|
[2a02:7aa0:1201::deb3:81a2]:8333
|
||||||
|
[2a02:8010:b001::5860:59b5]:8333
|
||||||
|
[2a02:810d:21c0:f00:a248:1cff:feb8:5348]:8333
|
||||||
|
[2a02:a50::21b:24ff:fe93:4e39]:8333
|
||||||
|
[2a02:a80:0:1200::2]:8333
|
||||||
|
[2a02:c200:0:10:2:1:5830:1]:8333
|
||||||
|
[2a02:c200:0:10:2:5:4692:1]:8333
|
||||||
|
[2a02:c200:0:10:3:0:7158:1]:8333
|
||||||
|
[2a02:c200:0:10::2244:1]:8333
|
||||||
|
[2a02:c200:1:10:2:3:3339:1]:8333
|
||||||
|
[2a02:c200:1:10:2:3:7844:1]:8333
|
||||||
|
[2a02:c200:1:10:2:5:6288:1]:8333
|
||||||
|
[2a02:c200:1:10:3:0:5912:1]:8333
|
||||||
|
[2a03:4000:2:496::8]:8333
|
||||||
|
[2a03:4000:6:8009::1]:8333
|
||||||
|
[2a03:4000:6:8063::bcd0]:8333
|
||||||
|
[2a03:4900:fffc:b::2]:8333
|
||||||
|
[2a03:b0c0:1:d0::d:5001]:8333
|
||||||
|
[2a03:f80:ed15:149:154:155:235:1]:8333
|
||||||
|
[2a03:f80:ed15:149:154:155:241:1]:8333
|
||||||
|
[2a03:f80:ed16:ca7:ea75:b12d:2af:9e2a]:8333
|
||||||
|
[2a04:1980:3100:1aab:290:faff:fe70:a3d8]:8333
|
||||||
|
[2a04:1980:3100:1aab:e61d:2dff:fe29:f590]:8333
|
||||||
|
[2a04:2f80:6:200::89]:8333
|
||||||
|
[2a04:ac00:1:4a0b:5054:ff:fe00:5af5]:8333
|
||||||
|
[2a04:ad80:0:68::35da]:8333
|
||||||
|
3ffk7iumtx3cegbi.onion:8333
|
||||||
|
3nmbbakinewlgdln.onion:8333
|
||||||
|
4j77gihpokxu2kj4.onion:8333
|
||||||
|
546esc6botbjfbxb.onion:8333
|
||||||
|
5at7sq5nm76xijkd.onion:8333
|
||||||
|
77mx2jsxaoyesz2p.onion:8333
|
||||||
|
7g7j54btiaxhtsiy.onion:8333
|
||||||
|
a6obdgzn67l7exu3.onion:8333
|
||||||
|
ab64h7olpl7qpxci.onion:8333
|
||||||
|
am2a4rahltfuxz6l.onion:8333
|
||||||
|
azuxls4ihrr2mep7.onion:8333
|
||||||
|
bitcoin7bi4op7wb.onion:8333
|
||||||
|
bitcoinostk4e4re.onion:8333
|
||||||
|
bk7yp6epnmcllq72.onion:8333
|
||||||
|
bmutjfrj5btseddb.onion:8333
|
||||||
|
ceeji4qpfs3ms3zc.onion:8333
|
||||||
|
clexmzqio7yhdao4.onion:8333
|
||||||
|
gb5ypqt63du3wfhn.onion:8333
|
||||||
|
h2vlpudzphzqxutd.onion:8333
|
||||||
|
n42h7r6oumcfsbrs.onion:4176
|
||||||
|
ncwk3lutemffcpc4.onion:8333
|
||||||
|
okdzjarwekbshnof.onion:8333
|
||||||
|
pjghcivzkoersesd.onion:8333
|
||||||
|
rw7ocjltix26mefn.onion:8333
|
||||||
|
uws7itep7o3yinxo.onion:8333
|
||||||
|
vk3qjdehyy4dwcxw.onion:8333
|
||||||
|
vqpye2k5rcqvj5mq.onion:8333
|
||||||
|
wpi7rpvhnndl52ee.onion:8333
|
11
contrib/seeds/nodes_test.txt
Normal file
11
contrib/seeds/nodes_test.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# List of fixed seed nodes for testnet
|
||||||
|
|
||||||
|
# Onion nodes
|
||||||
|
thfsmmn2jbitcoin.onion
|
||||||
|
it2pj4f7657g3rhi.onion
|
||||||
|
nkf5e6b7pl4jfd4a.onion
|
||||||
|
4zhkir2ofl7orfom.onion
|
||||||
|
t6xj6wilh4ytvcs7.onion
|
||||||
|
i6y6ivorwakd7nw3.onion
|
||||||
|
ubqj4rsu3nqtxmtp.onion
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
### Test Patches ###
|
|
||||||
|
|
||||||
These patches are applied when the automated pull-tester
|
|
||||||
tests each pull and when master is tested using jenkins.
|
|
||||||
You can find more information about the tests run at
|
|
||||||
[http://jenkins.bluematt.me/pull-tester/files/
|
|
||||||
](http://jenkins.bluematt.me/pull-tester/files/)
|
|
@ -1,20 +0,0 @@
|
|||||||
commit cfae26916dba311f6f75d444301c1f9362267c3e
|
|
||||||
Author: Matt Corallo <git@bluematt.me>
|
|
||||||
Date: Sun Mar 24 20:45:50 2013 -0400
|
|
||||||
|
|
||||||
Revert "Checkpoint at first block in 11 March chain fork"
|
|
||||||
|
|
||||||
This reverts commit f817c496a1482d05b22c8e539de67f07db1c09d9.
|
|
||||||
|
|
||||||
diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp
|
|
||||||
index 62234b9..9b11f0b 100644
|
|
||||||
--- a/src/checkpoints.cpp
|
|
||||||
+++ b/src/checkpoints.cpp
|
|
||||||
@@ -44,7 +44,6 @@ namespace Checkpoints
|
|
||||||
(193000, uint256("0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"))
|
|
||||||
(210000, uint256("0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"))
|
|
||||||
(216116, uint256("0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"))
|
|
||||||
- (225430, uint256("0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"))
|
|
||||||
;
|
|
||||||
static const CCheckpointData data = {
|
|
||||||
&mapCheckpoints,
|
|
2
contrib/verify-commits/allow-revsig-commits
Normal file
2
contrib/verify-commits/allow-revsig-commits
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
586a29253dabec3ca0f1ccba9091daabd16b8411
|
||||||
|
eddaba7b5692288087a926da5733e86b47274e4e
|
33
contrib/verify-commits/gpg.sh
Executable file
33
contrib/verify-commits/gpg.sh
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
INPUT=$(</dev/stdin)
|
||||||
|
VALID=false
|
||||||
|
REVSIG=false
|
||||||
|
IFS=$'\n'
|
||||||
|
for LINE in $(echo "$INPUT" | gpg --trust-model always "$@" 2>/dev/null); do
|
||||||
|
case "$LINE" in
|
||||||
|
"[GNUPG:] VALIDSIG "*)
|
||||||
|
while read KEY; do
|
||||||
|
case "$LINE" in "[GNUPG:] VALIDSIG $KEY "*) VALID=true;; esac
|
||||||
|
done < ./contrib/verify-commits/trusted-keys
|
||||||
|
;;
|
||||||
|
"[GNUPG:] REVKEYSIG "*)
|
||||||
|
[ "$BITCOIN_VERIFY_COMMITS_ALLOW_REVSIG" != 1 ] && exit 1
|
||||||
|
while read KEY; do
|
||||||
|
case "$LINE" in "[GNUPG:] REVKEYSIG ${KEY:24:40} "*)
|
||||||
|
REVSIG=true
|
||||||
|
GOODREVSIG="[GNUPG:] GOODSIG ${KEY:24:40} "
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < ./contrib/verify-commits/trusted-keys
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if ! $VALID; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if $VALID && $REVSIG; then
|
||||||
|
echo "$INPUT" | gpg --trust-model always "$@" | grep "\[GNUPG:\] \(NEWSIG\|SIG_ID\|VALIDSIG\)" 2>/dev/null
|
||||||
|
echo "$GOODREVSIG"
|
||||||
|
else
|
||||||
|
echo "$INPUT" | gpg --trust-model always "$@" 2>/dev/null
|
||||||
|
fi
|
16
contrib/verify-commits/pre-push-hook.sh
Executable file
16
contrib/verify-commits/pre-push-hook.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
if ! [[ "$2" =~ ^(git@)?(www.)?github.com(:|/)bitcoin/bitcoin(.git)?$ ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
while read LINE; do
|
||||||
|
set -- A $LINE
|
||||||
|
if [ "$4" != "refs/heads/master" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if ! ./contrib/verify-commits/verify-commits.sh $3 > /dev/null 2>&1; then
|
||||||
|
echo "ERROR: A commit is not signed, can't push"
|
||||||
|
./contrib/verify-commits/verify-commits.sh
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done < /dev/stdin
|
1
contrib/verify-commits/trusted-git-root
Normal file
1
contrib/verify-commits/trusted-git-root
Normal file
@ -0,0 +1 @@
|
|||||||
|
165e323d851cc87213c7673c6f278e87a6f2e752
|
7
contrib/verify-commits/trusted-keys
Normal file
7
contrib/verify-commits/trusted-keys
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
71A3B16735405025D447E8F274810B012346C9A6
|
||||||
|
1F4410F6A89268CE3197A84C57896D2FF8F0B657
|
||||||
|
01CDF4627A3B88AAE4A571C87588242FBE38D3A8
|
||||||
|
AF8BE07C7049F3A26B239D5325B3083201782B2F
|
||||||
|
81291FA67D2C379A006A053FEAB5AF94D9E9ABE7
|
||||||
|
3F1888C6DCA92A6499C4911FDBA1A67379A1A931
|
||||||
|
32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC
|
63
contrib/verify-commits/verify-commits.sh
Executable file
63
contrib/verify-commits/verify-commits.sh
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
DIR=$(dirname "$0")
|
||||||
|
|
||||||
|
echo "Please verify all commits in the following list are not evil:"
|
||||||
|
git log "$DIR"
|
||||||
|
|
||||||
|
VERIFIED_ROOT=$(cat "${DIR}/trusted-git-root")
|
||||||
|
|
||||||
|
IS_REVSIG_ALLOWED () {
|
||||||
|
while read LINE; do
|
||||||
|
[ "$LINE" = "$1" ] && return 0
|
||||||
|
done < "${DIR}/allow-revsig-commits"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
HAVE_FAILED=false
|
||||||
|
IS_SIGNED () {
|
||||||
|
if [ $1 = $VERIFIED_ROOT ]; then
|
||||||
|
return 0;
|
||||||
|
fi
|
||||||
|
if IS_REVSIG_ALLOWED "$1"; then
|
||||||
|
export BITCOIN_VERIFY_COMMITS_ALLOW_REVSIG=1
|
||||||
|
else
|
||||||
|
export BITCOIN_VERIFY_COMMITS_ALLOW_REVSIG=0
|
||||||
|
fi
|
||||||
|
if ! git -c "gpg.program=${DIR}/gpg.sh" verify-commit $1 > /dev/null 2>&1; then
|
||||||
|
return 1;
|
||||||
|
fi
|
||||||
|
local PARENTS=$(git show -s --format=format:%P $1)
|
||||||
|
for PARENT in $PARENTS; do
|
||||||
|
if IS_SIGNED $PARENT > /dev/null; then
|
||||||
|
return 0;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if ! "$HAVE_FAILED"; then
|
||||||
|
echo "No parent of $1 was signed with a trusted key!" > /dev/stderr
|
||||||
|
echo "Parents are:" > /dev/stderr
|
||||||
|
for PARENT in $PARENTS; do
|
||||||
|
git show -s $PARENT > /dev/stderr
|
||||||
|
done
|
||||||
|
HAVE_FAILED=true
|
||||||
|
fi
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ x"$1" = "x" ]; then
|
||||||
|
TEST_COMMIT="HEAD"
|
||||||
|
else
|
||||||
|
TEST_COMMIT="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
IS_SIGNED "$TEST_COMMIT"
|
||||||
|
RES=$?
|
||||||
|
if [ "$RES" = 1 ]; then
|
||||||
|
if ! "$HAVE_FAILED"; then
|
||||||
|
echo "$TEST_COMMIT was not signed with a trusted key!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "There is a valid path from $TEST_COMMIT to $VERIFIED_ROOT where all commits are signed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit $RES
|
@ -17,15 +17,15 @@ function clean_up {
|
|||||||
WORKINGDIR="/tmp/bitcoin"
|
WORKINGDIR="/tmp/bitcoin"
|
||||||
TMPFILE="hashes.tmp"
|
TMPFILE="hashes.tmp"
|
||||||
|
|
||||||
#this URL is used if a version number is not specified as an argument to the script
|
|
||||||
SIGNATUREFILE="https://bitcoin.org/bin/0.9.2.1/SHA256SUMS.asc"
|
|
||||||
|
|
||||||
SIGNATUREFILENAME="SHA256SUMS.asc"
|
SIGNATUREFILENAME="SHA256SUMS.asc"
|
||||||
RCSUBDIR="test/"
|
RCSUBDIR="test/"
|
||||||
BASEDIR="https://bitcoin.org/bin/"
|
BASEDIR="https://bitcoin.org/bin/"
|
||||||
VERSIONPREFIX="bitcoin-"
|
VERSIONPREFIX="bitcoin-core-"
|
||||||
RCVERSIONSTRING="rc"
|
RCVERSIONSTRING="rc"
|
||||||
|
|
||||||
|
#this URL is used if a version number is not specified as an argument to the script
|
||||||
|
SIGNATUREFILE="$BASEDIR""$VERSIONPREFIX""0.10.4/""$RCSUBDIR""$SIGNATUREFILENAME"
|
||||||
|
|
||||||
if [ ! -d "$WORKINGDIR" ]; then
|
if [ ! -d "$WORKINGDIR" ]; then
|
||||||
mkdir "$WORKINGDIR"
|
mkdir "$WORKINGDIR"
|
||||||
fi
|
fi
|
||||||
@ -62,7 +62,7 @@ WGETOUT=$(wget -N "$BASEDIR$SIGNATUREFILENAME" 2>&1)
|
|||||||
#and then see if wget completed successfully
|
#and then see if wget completed successfully
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Error: couldn't fetch signature file. Have you specified the version number in the following format?"
|
echo "Error: couldn't fetch signature file. Have you specified the version number in the following format?"
|
||||||
echo "[bitcoin-]<version>-[rc[0-9]] (example: bitcoin-0.9.2-rc1)"
|
echo "[$VERSIONPREFIX]<version>-[$RCVERSIONSTRING[0-9]] (example: "$VERSIONPREFIX"0.10.4-"$RCVERSIONSTRING"1)"
|
||||||
echo "wget output:"
|
echo "wget output:"
|
||||||
echo "$WGETOUT"|sed 's/^/\t/g'
|
echo "$WGETOUT"|sed 's/^/\t/g'
|
||||||
exit 2
|
exit 2
|
||||||
@ -82,7 +82,7 @@ if [ $RET -ne 0 ]; then
|
|||||||
echo "Bad signature."
|
echo "Bad signature."
|
||||||
elif [ $RET -eq 2 ]; then
|
elif [ $RET -eq 2 ]; then
|
||||||
#or if a gpg error has occurred
|
#or if a gpg error has occurred
|
||||||
echo "gpg error. Do you have Gavin's code signing key installed?"
|
echo "gpg error. Do you have the Bitcoin Core binary release signing key installed?"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "gpg output:"
|
echo "gpg output:"
|
||||||
@ -116,4 +116,6 @@ fi
|
|||||||
#everything matches! clean up the mess
|
#everything matches! clean up the mess
|
||||||
clean_up $FILES $SIGNATUREFILENAME $TMPFILE
|
clean_up $FILES $SIGNATUREFILENAME $TMPFILE
|
||||||
|
|
||||||
|
echo -e "Verified hashes of \n$FILES"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
37
contrib/zmq/zmq_sub.py
Executable file
37
contrib/zmq/zmq_sub.py
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env python2
|
||||||
|
|
||||||
|
import array
|
||||||
|
import binascii
|
||||||
|
import zmq
|
||||||
|
|
||||||
|
port = 28332
|
||||||
|
|
||||||
|
zmqContext = zmq.Context()
|
||||||
|
zmqSubSocket = zmqContext.socket(zmq.SUB)
|
||||||
|
zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "hashblock")
|
||||||
|
zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "hashtx")
|
||||||
|
zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "rawblock")
|
||||||
|
zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "rawtx")
|
||||||
|
zmqSubSocket.connect("tcp://127.0.0.1:%i" % port)
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
msg = zmqSubSocket.recv_multipart()
|
||||||
|
topic = str(msg[0])
|
||||||
|
body = msg[1]
|
||||||
|
|
||||||
|
if topic == "hashblock":
|
||||||
|
print "- HASH BLOCK -"
|
||||||
|
print binascii.hexlify(body)
|
||||||
|
elif topic == "hashtx":
|
||||||
|
print '- HASH TX -'
|
||||||
|
print binascii.hexlify(body)
|
||||||
|
elif topic == "rawblock":
|
||||||
|
print "- RAW BLOCK HEADER -"
|
||||||
|
print binascii.hexlify(body[:80])
|
||||||
|
elif topic == "rawtx":
|
||||||
|
print '- RAW TX -'
|
||||||
|
print binascii.hexlify(body)
|
||||||
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
zmqContext.destroy()
|
4
depends/.gitignore
vendored
4
depends/.gitignore
vendored
@ -3,3 +3,7 @@ work/
|
|||||||
built/
|
built/
|
||||||
sources/
|
sources/
|
||||||
config.site
|
config.site
|
||||||
|
x86_64*
|
||||||
|
i686*
|
||||||
|
mips*
|
||||||
|
arm*
|
||||||
|
@ -6,7 +6,6 @@ SDK_PATH ?= $(BASEDIR)/SDKs
|
|||||||
NO_QT ?=
|
NO_QT ?=
|
||||||
NO_WALLET ?=
|
NO_WALLET ?=
|
||||||
NO_UPNP ?=
|
NO_UPNP ?=
|
||||||
USE_LINUX_STATIC_QT5 ?=
|
|
||||||
FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources
|
FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources
|
||||||
|
|
||||||
BUILD = $(shell ./config.guess)
|
BUILD = $(shell ./config.guess)
|
||||||
@ -92,12 +91,12 @@ include funcs.mk
|
|||||||
toolchain_path=$($($(host_arch)_$(host_os)_native_toolchain)_prefixbin)
|
toolchain_path=$($($(host_arch)_$(host_os)_native_toolchain)_prefixbin)
|
||||||
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
|
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
|
||||||
final_build_id+=$(shell echo -n $(final_build_id_long) | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
|
final_build_id+=$(shell echo -n $(final_build_id_long) | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
|
||||||
$(host_prefix)/.stamp_$(final_build_id): | $(native_packages) $(packages)
|
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
|
||||||
$(AT)rm -rf $(@D)
|
$(AT)rm -rf $(@D)
|
||||||
$(AT)mkdir -p $(@D)
|
$(AT)mkdir -p $(@D)
|
||||||
$(AT)echo copying packages: $|
|
$(AT)echo copying packages: $^
|
||||||
$(AT)echo to: $(@D)
|
$(AT)echo to: $(@D)
|
||||||
$(AT)cd $(@D); $(foreach package,$|, tar xf $($(package)_cached); )
|
$(AT)cd $(@D); $(foreach package,$^, tar xf $($(package)_cached); )
|
||||||
$(AT)touch $@
|
$(AT)touch $@
|
||||||
|
|
||||||
$(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_build_id)
|
$(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_build_id)
|
||||||
@ -122,8 +121,35 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
|
|||||||
$< > $@
|
$< > $@
|
||||||
$(AT)touch $@
|
$(AT)touch $@
|
||||||
|
|
||||||
install: $(host_prefix)/share/config.site
|
|
||||||
download-one: $(all_sources)
|
define check_or_remove_cached
|
||||||
|
mkdir -p $(BASE_CACHE)/$(host)/$(package) && cd $(BASE_CACHE)/$(host)/$(package); \
|
||||||
|
$(build_SHA256SUM) -c $($(package)_cached_checksum) >/dev/null 2>/dev/null || \
|
||||||
|
( rm -f $($(package)_cached_checksum); \
|
||||||
|
if test -f "$($(package)_cached)"; then echo "Checksum mismatch for $(package). Forcing rebuild.."; rm -f $($(package)_cached_checksum) $($(package)_cached); fi )
|
||||||
|
endef
|
||||||
|
|
||||||
|
define check_or_remove_sources
|
||||||
|
mkdir -p $($(package)_source_dir); cd $($(package)_source_dir); \
|
||||||
|
$(build_SHA256SUM) -c $($(package)_fetched) >/dev/null 2>/dev/null || \
|
||||||
|
( if test -f $($(package)_all_sources); then echo "Checksum missing or mismatched for $(package) source. Forcing re-download."; fi; \
|
||||||
|
rm -f $($(package)_all_sources) $($(1)_fetched))
|
||||||
|
endef
|
||||||
|
|
||||||
|
check-packages:
|
||||||
|
@$(foreach package,$(all_packages),$(call check_or_remove_cached,$(package));)
|
||||||
|
check-sources:
|
||||||
|
@$(foreach package,$(all_packages),$(call check_or_remove_sources,$(package));)
|
||||||
|
|
||||||
|
$(host_prefix)/share/config.site: check-packages
|
||||||
|
|
||||||
|
check-packages: check-sources
|
||||||
|
|
||||||
|
install: check-packages $(host_prefix)/share/config.site
|
||||||
|
|
||||||
|
|
||||||
|
download-one: check-sources $(all_sources)
|
||||||
|
|
||||||
download-osx:
|
download-osx:
|
||||||
@$(MAKE) -s HOST=x86_64-apple-darwin11 download-one
|
@$(MAKE) -s HOST=x86_64-apple-darwin11 download-one
|
||||||
download-linux:
|
download-linux:
|
||||||
@ -131,4 +157,5 @@ download-linux:
|
|||||||
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 download-one download-osx download-linux download-win download
|
|
||||||
|
.PHONY: install cached download-one download-osx download-linux download-win download check-packages check-sources
|
||||||
|
56
depends/README.md
Normal file
56
depends/README.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
### Usage
|
||||||
|
|
||||||
|
To build dependencies for the current arch+OS:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
To build for another arch/OS:
|
||||||
|
|
||||||
|
make HOST=host-platform-triplet
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
make HOST=x86_64-w64-mingw32 -j4
|
||||||
|
|
||||||
|
A prefix will be generated that's suitable for plugging into Bitcoin's
|
||||||
|
configure. In the above example, a dir named x86_64-w64-mingw32 will be
|
||||||
|
created. To use it for Bitcoin:
|
||||||
|
|
||||||
|
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
|
||||||
|
|
||||||
|
Common `host-platform-triplets` for cross compilation are:
|
||||||
|
|
||||||
|
- `i686-w64-mingw32` for Win32
|
||||||
|
- `x86_64-w64-mingw32` for Win64
|
||||||
|
- `x86_64-apple-darwin11` for MacOSX
|
||||||
|
- `arm-linux-gnueabihf` for Linux ARM
|
||||||
|
|
||||||
|
No other options are needed, the paths are automatically configured.
|
||||||
|
|
||||||
|
Dependency Options:
|
||||||
|
The following can be set when running make: make FOO=bar
|
||||||
|
|
||||||
|
SOURCES_PATH: downloaded sources will be placed here
|
||||||
|
BASE_CACHE: built packages will be placed here
|
||||||
|
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
|
||||||
|
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_UPNP: Don't download/build/cache packages needed for enabling upnp
|
||||||
|
DEBUG: disable some optimizations and enable more runtime checking
|
||||||
|
|
||||||
|
If some packages are not built, for example `make NO_WALLET=1`, the appropriate
|
||||||
|
options will be passed to bitcoin's configure. In this case, `--disable-wallet`.
|
||||||
|
|
||||||
|
Additional targets:
|
||||||
|
|
||||||
|
download: run 'make download' to fetch all sources without building them
|
||||||
|
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-linux: run 'make download-linux' to fetch all sources needed for linux builds
|
||||||
|
|
||||||
|
### Other documentation
|
||||||
|
|
||||||
|
- [description.md](description.md): General description of the depends system
|
||||||
|
- [packages.md](packages.md): Steps for adding packages
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
To build dependencies for the current arch+OS:
|
|
||||||
make
|
|
||||||
To build for another arch/OS:
|
|
||||||
make HOST=host-platform-triplet && make HOST=host-platform-triplet
|
|
||||||
(For example: make HOST=i686-w64-mingw32 -j4)
|
|
||||||
|
|
||||||
A prefix will be generated that's suitable for plugging into Bitcoin's
|
|
||||||
configure. In the above example, a dir named i686-w64-mingw32 will be
|
|
||||||
created. To use it for Bitcoin:
|
|
||||||
|
|
||||||
./configure --prefix=`pwd`/depends/i686-w64-mingw32
|
|
||||||
|
|
||||||
No other options are needed, the paths are automatically configured.
|
|
||||||
|
|
||||||
Dependency Options:
|
|
||||||
The following can be set when running make: make FOO=bar
|
|
||||||
|
|
||||||
SOURCES_PATH: downloaded sources will be placed here
|
|
||||||
BASE_CACHE: built packages will be placed here
|
|
||||||
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
|
|
||||||
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_UPNP: Don't download/build/cache packages needed for enabling upnp
|
|
||||||
DEBUG: disable some optimizations and enable more runtime checking
|
|
||||||
USE_LINUX_STATIC_QT5: Build a static qt5 rather than shared qt4. Linux only.
|
|
||||||
|
|
||||||
If some packages are not built, for example 'make NO_WALLET=1', the appropriate
|
|
||||||
options will be passed to bitcoin's configure. In this case, --disable-wallet.
|
|
||||||
|
|
||||||
Additional targets:
|
|
||||||
download: run 'make download' to fetch all sources without building them
|
|
||||||
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-linux: run 'make download-linux' to fetch all sources needed for linux builds
|
|
53
depends/config.guess
vendored
53
depends/config.guess
vendored
@ -1,8 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Attempt to guess a canonical system name.
|
# Attempt to guess a canonical system name.
|
||||||
# Copyright 1992-2014 Free Software Foundation, Inc.
|
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2014-03-23'
|
timestamp='2015-11-19'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -24,12 +24,12 @@ timestamp='2014-03-23'
|
|||||||
# program. This Exception is an additional permission under section 7
|
# program. This Exception is an additional permission under section 7
|
||||||
# of the GNU General Public License, version 3 ("GPLv3").
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
#
|
#
|
||||||
# Originally written by Per Bothner.
|
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
|
||||||
#
|
#
|
||||||
# You can get the latest version of this script from:
|
# You can get the latest version of this script from:
|
||||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||||
#
|
#
|
||||||
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
# Please send patches to <config-patches@gnu.org>.
|
||||||
|
|
||||||
|
|
||||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||||
@ -50,7 +50,7 @@ version="\
|
|||||||
GNU config.guess ($timestamp)
|
GNU config.guess ($timestamp)
|
||||||
|
|
||||||
Originally written by Per Bothner.
|
Originally written by Per Bothner.
|
||||||
Copyright 1992-2014 Free Software Foundation, Inc.
|
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -168,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
# Note: NetBSD doesn't particularly care about the vendor
|
# Note: NetBSD doesn't particularly care about the vendor
|
||||||
# portion of the name. We always set it to "unknown".
|
# portion of the name. We always set it to "unknown".
|
||||||
sysctl="sysctl -n hw.machine_arch"
|
sysctl="sysctl -n hw.machine_arch"
|
||||||
UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
|
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
|
||||||
/usr/sbin/$sysctl 2>/dev/null || echo unknown)`
|
/sbin/$sysctl 2>/dev/null || \
|
||||||
|
/usr/sbin/$sysctl 2>/dev/null || \
|
||||||
|
echo unknown)`
|
||||||
case "${UNAME_MACHINE_ARCH}" in
|
case "${UNAME_MACHINE_ARCH}" in
|
||||||
armeb) machine=armeb-unknown ;;
|
armeb) machine=armeb-unknown ;;
|
||||||
arm*) machine=arm-unknown ;;
|
arm*) machine=arm-unknown ;;
|
||||||
sh3el) machine=shl-unknown ;;
|
sh3el) machine=shl-unknown ;;
|
||||||
sh3eb) machine=sh-unknown ;;
|
sh3eb) machine=sh-unknown ;;
|
||||||
sh5el) machine=sh5le-unknown ;;
|
sh5el) machine=sh5le-unknown ;;
|
||||||
|
earmv*)
|
||||||
|
arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
|
||||||
|
endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
|
||||||
|
machine=${arch}${endian}-unknown
|
||||||
|
;;
|
||||||
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
||||||
esac
|
esac
|
||||||
# The Operating System including object format, if it has switched
|
# The Operating System including object format, if it has switched
|
||||||
# to ELF recently, or will in the future.
|
# to ELF recently, or will in the future.
|
||||||
case "${UNAME_MACHINE_ARCH}" in
|
case "${UNAME_MACHINE_ARCH}" in
|
||||||
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||||
| grep -q __ELF__
|
| grep -q __ELF__
|
||||||
@ -197,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
os=netbsd
|
os=netbsd
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
# Determine ABI tags.
|
||||||
|
case "${UNAME_MACHINE_ARCH}" in
|
||||||
|
earm*)
|
||||||
|
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
|
||||||
|
abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
# The OS release
|
# The OS release
|
||||||
# Debian GNU/NetBSD machines have a different userland, and
|
# Debian GNU/NetBSD machines have a different userland, and
|
||||||
# thus, need a distinct triplet. However, they do not need
|
# thus, need a distinct triplet. However, they do not need
|
||||||
@ -207,13 +221,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
release='-gnu'
|
release='-gnu'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
|
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
|
||||||
# contains redundant information, the shorter form:
|
# contains redundant information, the shorter form:
|
||||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||||
echo "${machine}-${os}${release}"
|
echo "${machine}-${os}${release}${abi}"
|
||||||
exit ;;
|
exit ;;
|
||||||
*:Bitrig:*:*)
|
*:Bitrig:*:*)
|
||||||
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
|
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
|
||||||
@ -235,6 +249,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
*:MirBSD:*:*)
|
*:MirBSD:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
|
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
|
*:Sortix:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-sortix
|
||||||
|
exit ;;
|
||||||
alpha:OSF1:*:*)
|
alpha:OSF1:*:*)
|
||||||
case $UNAME_RELEASE in
|
case $UNAME_RELEASE in
|
||||||
*4.0)
|
*4.0)
|
||||||
@ -579,8 +596,9 @@ EOF
|
|||||||
else
|
else
|
||||||
IBM_ARCH=powerpc
|
IBM_ARCH=powerpc
|
||||||
fi
|
fi
|
||||||
if [ -x /usr/bin/oslevel ] ; then
|
if [ -x /usr/bin/lslpp ] ; then
|
||||||
IBM_REV=`/usr/bin/oslevel`
|
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
|
||||||
|
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
|
||||||
else
|
else
|
||||||
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
||||||
fi
|
fi
|
||||||
@ -932,6 +950,9 @@ EOF
|
|||||||
crisv32:Linux:*:*)
|
crisv32:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
|
e2k:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
frv:Linux:*:*)
|
frv:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
@ -944,6 +965,9 @@ EOF
|
|||||||
ia64:Linux:*:*)
|
ia64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
|
k1om:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
m32r*:Linux:*:*)
|
m32r*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
@ -1020,7 +1044,7 @@ EOF
|
|||||||
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
x86_64:Linux:*:*)
|
x86_64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
xtensa*:Linux:*:*)
|
xtensa*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
@ -1369,6 +1393,9 @@ EOF
|
|||||||
x86_64:VMkernel:*:*)
|
x86_64:VMkernel:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-esx
|
echo ${UNAME_MACHINE}-unknown-esx
|
||||||
exit ;;
|
exit ;;
|
||||||
|
amd64:Isilon\ OneFS:*:*)
|
||||||
|
echo x86_64-unknown-onefs
|
||||||
|
exit ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
cat >&2 <<EOF
|
cat >&2 <<EOF
|
||||||
|
49
depends/config.sub
vendored
49
depends/config.sub
vendored
@ -1,8 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright 1992-2014 Free Software Foundation, Inc.
|
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2014-05-01'
|
timestamp='2015-11-22'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -25,7 +25,7 @@ timestamp='2014-05-01'
|
|||||||
# of the GNU General Public License, version 3 ("GPLv3").
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
|
|
||||||
|
|
||||||
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
# Please send patches to <config-patches@gnu.org>.
|
||||||
#
|
#
|
||||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||||
# Supply the specified configuration type as an argument.
|
# Supply the specified configuration type as an argument.
|
||||||
@ -53,8 +53,7 @@ timestamp='2014-05-01'
|
|||||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||||
|
|
||||||
usage="\
|
usage="\
|
||||||
Usage: $0 [OPTION] CPU-MFR-OPSYS
|
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||||
$0 [OPTION] ALIAS
|
|
||||||
|
|
||||||
Canonicalize a configuration name.
|
Canonicalize a configuration name.
|
||||||
|
|
||||||
@ -68,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||||||
version="\
|
version="\
|
||||||
GNU config.sub ($timestamp)
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
Copyright 1992-2014 Free Software Foundation, Inc.
|
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -117,7 +116,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
|||||||
case $maybe_os in
|
case $maybe_os in
|
||||||
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||||
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
||||||
knetbsd*-gnu* | netbsd*-gnu* | \
|
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
|
||||||
kopensolaris*-gnu* | \
|
kopensolaris*-gnu* | \
|
||||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||||
os=-$maybe_os
|
os=-$maybe_os
|
||||||
@ -255,12 +254,13 @@ case $basic_machine in
|
|||||||
| arc | arceb \
|
| arc | arceb \
|
||||||
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||||
| avr | avr32 \
|
| avr | avr32 \
|
||||||
|
| ba \
|
||||||
| be32 | be64 \
|
| be32 | be64 \
|
||||||
| bfin \
|
| bfin \
|
||||||
| c4x | c8051 | clipper \
|
| c4x | c8051 | clipper \
|
||||||
| d10v | d30v | dlx | dsp16xx \
|
| d10v | d30v | dlx | dsp16xx \
|
||||||
| epiphany \
|
| e2k | epiphany \
|
||||||
| fido | fr30 | frv \
|
| fido | fr30 | frv | ft32 \
|
||||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
| hexagon \
|
| hexagon \
|
||||||
| i370 | i860 | i960 | ia64 \
|
| i370 | i860 | i960 | ia64 \
|
||||||
@ -302,9 +302,10 @@ case $basic_machine in
|
|||||||
| pdp10 | pdp11 | pj | pjl \
|
| pdp10 | pdp11 | pj | pjl \
|
||||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||||
| pyramid \
|
| pyramid \
|
||||||
|
| riscv32 | riscv64 \
|
||||||
| rl78 | rx \
|
| rl78 | rx \
|
||||||
| score \
|
| score \
|
||||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||||
| sh64 | sh64le \
|
| sh64 | sh64le \
|
||||||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||||
@ -312,6 +313,7 @@ case $basic_machine in
|
|||||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||||
| ubicom32 \
|
| ubicom32 \
|
||||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||||
|
| visium \
|
||||||
| we32k \
|
| we32k \
|
||||||
| x86 | xc16x | xstormy16 | xtensa \
|
| x86 | xc16x | xstormy16 | xtensa \
|
||||||
| z8k | z80)
|
| z8k | z80)
|
||||||
@ -326,6 +328,9 @@ case $basic_machine in
|
|||||||
c6x)
|
c6x)
|
||||||
basic_machine=tic6x-unknown
|
basic_machine=tic6x-unknown
|
||||||
;;
|
;;
|
||||||
|
leon|leon[3-9])
|
||||||
|
basic_machine=sparc-$basic_machine
|
||||||
|
;;
|
||||||
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
os=-none
|
os=-none
|
||||||
@ -371,12 +376,13 @@ case $basic_machine in
|
|||||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||||
| avr-* | avr32-* \
|
| avr-* | avr32-* \
|
||||||
|
| ba-* \
|
||||||
| be32-* | be64-* \
|
| be32-* | be64-* \
|
||||||
| bfin-* | bs2000-* \
|
| bfin-* | bs2000-* \
|
||||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||||
| c8051-* | clipper-* | craynv-* | cydra-* \
|
| c8051-* | clipper-* | craynv-* | cydra-* \
|
||||||
| d10v-* | d30v-* | dlx-* \
|
| d10v-* | d30v-* | dlx-* \
|
||||||
| elxsi-* \
|
| e2k-* | elxsi-* \
|
||||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||||
| h8300-* | h8500-* \
|
| h8300-* | h8500-* \
|
||||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
@ -423,12 +429,13 @@ case $basic_machine in
|
|||||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||||
| pyramid-* \
|
| pyramid-* \
|
||||||
|
| riscv32-* | riscv64-* \
|
||||||
| rl78-* | romp-* | rs6000-* | rx-* \
|
| rl78-* | romp-* | rs6000-* | rx-* \
|
||||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||||
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||||
| sparclite-* \
|
| sparclite-* \
|
||||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
|
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
|
||||||
| tahoe-* \
|
| tahoe-* \
|
||||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||||
| tile*-* \
|
| tile*-* \
|
||||||
@ -436,6 +443,7 @@ case $basic_machine in
|
|||||||
| ubicom32-* \
|
| ubicom32-* \
|
||||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||||
| vax-* \
|
| vax-* \
|
||||||
|
| visium-* \
|
||||||
| we32k-* \
|
| we32k-* \
|
||||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||||
| xstormy16-* | xtensa*-* \
|
| xstormy16-* | xtensa*-* \
|
||||||
@ -512,6 +520,9 @@ case $basic_machine in
|
|||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-aros
|
os=-aros
|
||||||
;;
|
;;
|
||||||
|
asmjs)
|
||||||
|
basic_machine=asmjs-unknown
|
||||||
|
;;
|
||||||
aux)
|
aux)
|
||||||
basic_machine=m68k-apple
|
basic_machine=m68k-apple
|
||||||
os=-aux
|
os=-aux
|
||||||
@ -773,6 +784,9 @@ case $basic_machine in
|
|||||||
basic_machine=m68k-isi
|
basic_machine=m68k-isi
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
leon-*|leon[3-9]-*)
|
||||||
|
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
|
||||||
|
;;
|
||||||
m68knommu)
|
m68knommu)
|
||||||
basic_machine=m68k-unknown
|
basic_machine=m68k-unknown
|
||||||
os=-linux
|
os=-linux
|
||||||
@ -828,6 +842,10 @@ case $basic_machine in
|
|||||||
basic_machine=powerpc-unknown
|
basic_machine=powerpc-unknown
|
||||||
os=-morphos
|
os=-morphos
|
||||||
;;
|
;;
|
||||||
|
moxiebox)
|
||||||
|
basic_machine=moxie-unknown
|
||||||
|
os=-moxiebox
|
||||||
|
;;
|
||||||
msdos)
|
msdos)
|
||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-msdos
|
os=-msdos
|
||||||
@ -1360,7 +1378,7 @@ case $os in
|
|||||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||||
| -sym* | -kopensolaris* | -plan9* \
|
| -sym* | -kopensolaris* | -plan9* \
|
||||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||||
| -aos* | -aros* \
|
| -aos* | -aros* | -cloudabi* | -sortix* \
|
||||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||||
@ -1373,14 +1391,15 @@ case $os in
|
|||||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||||
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
|
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
|
||||||
|
| -onefs* | -tirtos*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
|
@ -1,28 +1,26 @@
|
|||||||
This is a system of building and caching dependencies necessary for building
|
This is a system of building and caching dependencies necessary for building Bitcoin.
|
||||||
Bitcoin.
|
|
||||||
|
|
||||||
There are several features that make it different from most similar systems:
|
There are several features that make it different from most similar systems:
|
||||||
|
|
||||||
- It is designed to be builder and host agnostic
|
### It is designed to be builder and host agnostic
|
||||||
|
|
||||||
In theory, binaries for any target OS/architecture can be created, from a
|
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 ammended 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 OSX.
|
Linux or OSX.
|
||||||
|
|
||||||
- No reliance on timestamps
|
### No reliance on timestamps
|
||||||
|
|
||||||
File presence is used to determine what needs to be built. This makes the
|
File presence is used to determine what needs to be built. This makes the
|
||||||
results distributable and easily digestable by automated builders.
|
results distributable and easily digestable by automated builders.
|
||||||
|
|
||||||
- Each build only has its specified dependencies available at build-time.
|
### Each build only has its specified dependencies available at build-time.
|
||||||
|
|
||||||
For each build, the sysroot is wiped and the (recursive) dependencies are
|
For each build, the sysroot is wiped and the (recursive) dependencies are
|
||||||
installed. This makes each build deterministic, since there will never be any
|
installed. This makes each build deterministic, since there will never be any
|
||||||
unknown files available to cause side-effects.
|
unknown files available to cause side-effects.
|
||||||
|
|
||||||
- Each package is cached and only rebuilt as needed.
|
### Each package is cached and only rebuilt as needed.
|
||||||
|
|
||||||
Before building, a unique build-id is generated for each package. This id
|
Before building, a unique build-id is generated for each package. This id
|
||||||
consists of a hash of all files used to build the package (Makefiles, packages,
|
consists of a hash of all files used to build the package (Makefiles, packages,
|
||||||
@ -32,7 +30,7 @@ any other package that depends on it. If any of the main makefiles (Makefile,
|
|||||||
funcs.mk, etc) are changed, all packages will be rebuilt. After building, the
|
funcs.mk, etc) are changed, all packages will be rebuilt. After building, the
|
||||||
results are cached into a tarball that can be re-used and distributed.
|
results are cached into a tarball that can be re-used and distributed.
|
||||||
|
|
||||||
- Package build results are (relatively) deterministic.
|
### Package build results are (relatively) deterministic.
|
||||||
|
|
||||||
Each package is configured and patched so that it will yield the same
|
Each package is configured and patched so that it will yield the same
|
||||||
build-results with each consequent build, within a reasonable set of
|
build-results with each consequent build, within a reasonable set of
|
||||||
@ -41,13 +39,13 @@ beyond the scope of this system. Additionally, the toolchain itself must be
|
|||||||
capable of deterministic results. When revisions are properly bumped, a cached
|
capable of deterministic results. When revisions are properly bumped, a cached
|
||||||
build should represent an exact single payload.
|
build should represent an exact single payload.
|
||||||
|
|
||||||
- Sources are fetched and verified automatically
|
### Sources are fetched and verified automatically
|
||||||
|
|
||||||
Each package must define its source location and checksum. The build will fail
|
Each package must define its source location and checksum. The build will fail
|
||||||
if the fetched source does not match. Sources may be pre-seeded and/or cached
|
if the fetched source does not match. Sources may be pre-seeded and/or cached
|
||||||
as desired.
|
as desired.
|
||||||
|
|
||||||
- Self-cleaning
|
### Self-cleaning
|
||||||
|
|
||||||
Build and staging dirs are wiped after use, and any previous version of a
|
Build and staging dirs are wiped after use, and any previous version of a
|
||||||
cached result is removed following a successful build. Automated builders
|
cached result is removed following a successful build. Automated builders
|
@ -53,12 +53,14 @@ $(1)_staging_prefix_dir:=$$($(1)_staging_dir)$($($(1)_type)_prefix)
|
|||||||
$(1)_extract_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)
|
$(1)_extract_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)
|
||||||
$(1)_download_dir:=$(base_download_dir)/$(1)-$($(1)_version)
|
$(1)_download_dir:=$(base_download_dir)/$(1)-$($(1)_version)
|
||||||
$(1)_build_dir:=$$($(1)_extract_dir)/$$($(1)_build_subdir)
|
$(1)_build_dir:=$$($(1)_extract_dir)/$$($(1)_build_subdir)
|
||||||
|
$(1)_cached_checksum:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz.hash
|
||||||
$(1)_patch_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)/.patches-$($(1)_build_id)
|
$(1)_patch_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)/.patches-$($(1)_build_id)
|
||||||
$(1)_prefixbin:=$($($(1)_type)_prefix)/bin/
|
$(1)_prefixbin:=$($($(1)_type)_prefix)/bin/
|
||||||
$(1)_cached:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz
|
$(1)_cached:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz
|
||||||
|
$(1)_all_sources=$($(1)_file_name) $($(1)_extra_sources)
|
||||||
|
|
||||||
#stamps
|
#stamps
|
||||||
$(1)_fetched=$$($(1)_source_dir)/download-stamps/.stamp_fetched-$(1)-$($(1)_file_name)
|
$(1)_fetched=$(SOURCES_PATH)/download-stamps/.stamp_fetched-$(1)-$($(1)_file_name).hash
|
||||||
$(1)_extracted=$$($(1)_extract_dir)/.stamp_extracted
|
$(1)_extracted=$$($(1)_extract_dir)/.stamp_extracted
|
||||||
$(1)_preprocessed=$$($(1)_extract_dir)/.stamp_preprocessed
|
$(1)_preprocessed=$$($(1)_extract_dir)/.stamp_preprocessed
|
||||||
$(1)_cleaned=$$($(1)_extract_dir)/.stamp_cleaned
|
$(1)_cleaned=$$($(1)_extract_dir)/.stamp_cleaned
|
||||||
@ -154,7 +156,10 @@ endef
|
|||||||
define int_add_cmds
|
define int_add_cmds
|
||||||
$($(1)_fetched):
|
$($(1)_fetched):
|
||||||
$(AT)mkdir -p $$(@D) $(SOURCES_PATH)
|
$(AT)mkdir -p $$(@D) $(SOURCES_PATH)
|
||||||
|
$(AT)rm -f $$@
|
||||||
|
$(AT)touch $$@
|
||||||
$(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1))
|
$(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1))
|
||||||
|
$(AT)cd $($(1)_source_dir); $(foreach source,$($(1)_all_sources),$(build_SHA256SUM) $(source) >> $$(@);)
|
||||||
$(AT)touch $$@
|
$(AT)touch $$@
|
||||||
$($(1)_extracted): | $($(1)_fetched)
|
$($(1)_extracted): | $($(1)_fetched)
|
||||||
$(AT)echo Extracting $(1)...
|
$(AT)echo Extracting $(1)...
|
||||||
@ -195,17 +200,19 @@ $($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed)
|
|||||||
$(AT)rm -rf $$(@D) && mkdir -p $$(@D)
|
$(AT)rm -rf $$(@D) && mkdir -p $$(@D)
|
||||||
$(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@)
|
$(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@)
|
||||||
$(AT)rm -rf $($(1)_staging_dir)
|
$(AT)rm -rf $($(1)_staging_dir)
|
||||||
|
$($(1)_cached_checksum): $($(1)_cached)
|
||||||
|
$(AT)cd $$(@D); $(build_SHA256SUM) $$(<F) > $$(@)
|
||||||
|
|
||||||
.PHONY: $(1)
|
.PHONY: $(1)
|
||||||
$(1): | $($(1)_cached)
|
$(1): | $($(1)_cached_checksum)
|
||||||
.SECONDARY: $($(1)_postprocessed) $($(1)_staged) $($(1)_built) $($(1)_configured) $($(1)_preprocessed) $($(1)_extracted) $($(1)_fetched)
|
.SECONDARY: $($(1)_cached) $($(1)_postprocessed) $($(1)_staged) $($(1)_built) $($(1)_configured) $($(1)_preprocessed) $($(1)_extracted) $($(1)_fetched)
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# These functions create the build targets for each package. They must be
|
# These functions create the build targets for each package. They must be
|
||||||
# broken down into small steps so that each part is done for all packages
|
# broken down into small steps so that each part is done for all packages
|
||||||
# before moving on to the next step. Otherwise, a package's info
|
# before moving on to the next step. Otherwise, a package's info
|
||||||
# (build-id for example) would only be avilable to another package if it
|
# (build-id for example) would only be available to another package if it
|
||||||
# happened to be computed already.
|
# happened to be computed already.
|
||||||
|
|
||||||
#set the type for host/build packages.
|
#set the type for host/build packages.
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
OSX_MIN_VERSION=10.6
|
OSX_MIN_VERSION=10.7
|
||||||
OSX_SDK_VERSION=10.7
|
OSX_SDK_VERSION=10.9
|
||||||
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
||||||
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK)
|
LD64_VERSION=241.9
|
||||||
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK)
|
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)
|
||||||
|
|
||||||
darwin_CFLAGS=-pipe
|
darwin_CFLAGS=-pipe
|
||||||
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
||||||
|
@ -4,119 +4,137 @@ variables, and defining build commands.
|
|||||||
The package "mylib" will be used here as an example
|
The package "mylib" will be used here as an example
|
||||||
|
|
||||||
General tips:
|
General tips:
|
||||||
mylib_foo is written as $(package)_foo in order to make recipes more similar.
|
- mylib_foo is written as $(package)_foo in order to make recipes more similar.
|
||||||
|
|
||||||
Identifiers:
|
## Identifiers
|
||||||
Each package is required to define at least these variables:
|
Each package is required to define at least these variables:
|
||||||
$(package)_version:
|
|
||||||
|
$(package)_version:
|
||||||
Version of the upstream library or program. If there is no version, a
|
Version of the upstream library or program. If there is no version, a
|
||||||
placeholder such as 1.0 can be used.
|
placeholder such as 1.0 can be used.
|
||||||
$(package)_download_path:
|
|
||||||
|
$(package)_download_path:
|
||||||
Location of the upstream source, without the file-name. Usually http or
|
Location of the upstream source, without the file-name. Usually http or
|
||||||
ftp.
|
ftp.
|
||||||
$(package)_file_name:
|
|
||||||
|
$(package)_file_name:
|
||||||
The upstream source filename available at the download path.
|
The upstream source filename available at the download path.
|
||||||
$(package)_sha256_hash:
|
|
||||||
|
$(package)_sha256_hash:
|
||||||
The sha256 hash of the upstream file
|
The sha256 hash of the upstream file
|
||||||
|
|
||||||
These variables are optional:
|
These variables are optional:
|
||||||
$(package)_build_subdir:
|
|
||||||
|
$(package)_build_subdir:
|
||||||
cd to this dir before running configure/build/stage commands.
|
cd to this dir before running configure/build/stage commands.
|
||||||
$(package)_download_file:
|
|
||||||
|
$(package)_download_file:
|
||||||
The file-name of the upstream source if it differs from how it should be
|
The file-name of the upstream source if it differs from how it should be
|
||||||
stored locally. This can be used to avoid storing file-names with strange
|
stored locally. This can be used to avoid storing file-names with strange
|
||||||
characters.
|
characters.
|
||||||
$(package)_dependencies:
|
|
||||||
|
$(package)_dependencies:
|
||||||
Names of any other packages that this one depends on.
|
Names of any other packages that this one depends on.
|
||||||
$(package)_patches:
|
|
||||||
|
$(package)_patches:
|
||||||
Filenames of any patches needed to build the package
|
Filenames of any patches needed to build the package
|
||||||
|
|
||||||
|
$(package)_extra_sources:
|
||||||
|
Any extra files that will be fetched via $(package)_fetch_cmds. These are
|
||||||
|
specified so that they can be fetched and verified via 'make download'.
|
||||||
|
|
||||||
Build Variables:
|
|
||||||
|
## Build Variables:
|
||||||
After defining the main identifiers, build variables may be added or customized
|
After defining the main identifiers, build variables may be added or customized
|
||||||
before running the build commands. They should be added to a function called
|
before running the build commands. They should be added to a function called
|
||||||
$(package)_set_vars. For example:
|
$(package)_set_vars. For example:
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
...
|
...
|
||||||
endef
|
endef
|
||||||
|
|
||||||
Most variables can be prefixed with the host, architecture, or both, to make
|
Most variables can be prefixed with the host, architecture, or both, to make
|
||||||
the modifications specific to that case. For example:
|
the modifications specific to that case. For example:
|
||||||
|
|
||||||
Universal: $(package)_cc=gcc
|
Universal: $(package)_cc=gcc
|
||||||
Linux only: $(package)_linux_cc=gcc
|
Linux only: $(package)_linux_cc=gcc
|
||||||
x86_64 only: $(package)_x86_64_cc = gcc
|
x86_64 only: $(package)_x86_64_cc = gcc
|
||||||
x86_64 linux only: $(package)_x86_64_linux_cc = gcc
|
x86_64 linux only: $(package)_x86_64_linux_cc = gcc
|
||||||
|
|
||||||
These variables may be set to override or append their default values.
|
These variables may be set to override or append their default values.
|
||||||
$(package)_cc
|
|
||||||
$(package)_cxx
|
$(package)_cc
|
||||||
$(package)_objc
|
$(package)_cxx
|
||||||
$(package)_objcxx
|
$(package)_objc
|
||||||
$(package)_ar
|
$(package)_objcxx
|
||||||
$(package)_ranlib
|
$(package)_ar
|
||||||
$(package)_libtool
|
$(package)_ranlib
|
||||||
$(package)_nm
|
$(package)_libtool
|
||||||
$(package)_cflags
|
$(package)_nm
|
||||||
$(package)_cxxflags
|
$(package)_cflags
|
||||||
$(package)_ldflags
|
$(package)_cxxflags
|
||||||
$(package)_cppflags
|
$(package)_ldflags
|
||||||
$(package)_config_env
|
$(package)_cppflags
|
||||||
$(package)_build_env
|
$(package)_config_env
|
||||||
$(package)_stage_env
|
$(package)_build_env
|
||||||
$(package)_build_opts
|
$(package)_stage_env
|
||||||
$(package)_config_opts
|
$(package)_build_opts
|
||||||
|
$(package)_config_opts
|
||||||
|
|
||||||
The *_env variables are used to add environment variables to the respective
|
The *_env variables are used to add environment variables to the respective
|
||||||
commands.
|
commands.
|
||||||
|
|
||||||
Many variables respect a debug/release suffix as well, in order to use them for
|
Many variables respect a debug/release suffix as well, in order to use them for
|
||||||
only the appropriate build config. For example:
|
only the appropriate build config. For example:
|
||||||
$(package)_cflags_release = -O3
|
|
||||||
$(package)_cflags_i686_debug = -g
|
$(package)_cflags_release = -O3
|
||||||
$(package)_config_opts_release = --disable-debug
|
$(package)_cflags_i686_debug = -g
|
||||||
|
$(package)_config_opts_release = --disable-debug
|
||||||
|
|
||||||
These will be used in addition to the options that do not specify
|
These will be used in addition to the options that do not specify
|
||||||
debug/release. All builds are considered to be release unless DEBUG=1 is set by
|
debug/release. All builds are considered to be release unless DEBUG=1 is set by
|
||||||
the user.
|
the user. Other variables may be defined as needed.
|
||||||
|
|
||||||
Other variables may be defined as needed.
|
## Build commands:
|
||||||
|
|
||||||
Build commands:
|
|
||||||
|
|
||||||
For each build, a unique build dir and staging dir are created. For example,
|
For each build, a unique build dir and staging dir are created. For example,
|
||||||
work/build/mylib/1.0-1adac830f6e and work/staging/mylib/1.0-1adac830f6e.
|
`work/build/mylib/1.0-1adac830f6e` and `work/staging/mylib/1.0-1adac830f6e`.
|
||||||
|
|
||||||
The following build commands are available for each recipe:
|
The following build commands are available for each recipe:
|
||||||
|
|
||||||
$(package)_fetch_cmds:
|
$(package)_fetch_cmds:
|
||||||
Runs from: build dir
|
Runs from: build dir
|
||||||
Fetch the source file. If undefined, it will be fetched and verified
|
Fetch the source file. If undefined, it will be fetched and verified
|
||||||
against its hash.
|
against its hash.
|
||||||
$(package)_extract_cmds:
|
|
||||||
|
$(package)_extract_cmds:
|
||||||
Runs from: build dir
|
Runs from: build dir
|
||||||
Verify the source file against its hash and extract it. If undefined, the
|
Verify the source file against its hash and extract it. If undefined, the
|
||||||
source is assumed to be a tarball.
|
source is assumed to be a tarball.
|
||||||
$(package)_preprocess_cmds:
|
|
||||||
|
$(package)_preprocess_cmds:
|
||||||
Runs from: build dir/$(package)_build_subdir
|
Runs from: build dir/$(package)_build_subdir
|
||||||
Preprocess the source as necessary. If undefined, does nothing.
|
Preprocess the source as necessary. If undefined, does nothing.
|
||||||
$(package)_config_cmds:
|
|
||||||
|
$(package)_config_cmds:
|
||||||
Runs from: build dir/$(package)_build_subdir
|
Runs from: build dir/$(package)_build_subdir
|
||||||
Configure the source. If undefined, does nothing.
|
Configure the source. If undefined, does nothing.
|
||||||
$(package)_build_cmds:
|
|
||||||
|
$(package)_build_cmds:
|
||||||
Runs from: build dir/$(package)_build_subdir
|
Runs from: build dir/$(package)_build_subdir
|
||||||
Build the source. If undefined, does nothing.
|
Build the source. If undefined, does nothing.
|
||||||
$(package)_stage_cmds:
|
|
||||||
|
$(package)_stage_cmds:
|
||||||
Runs from: build dir/$(package)_build_subdir
|
Runs from: build dir/$(package)_build_subdir
|
||||||
Stage the build results. If undefined, does nothing.
|
Stage the build results. If undefined, does nothing.
|
||||||
|
|
||||||
The following variables are available for each recipe:
|
The following variables are available for each recipe:
|
||||||
$(1)_staging_dir: package's destination sysroot path
|
|
||||||
$(1)_staging_prefix_dir: prefix path inside of the package's staging dir
|
$(1)_staging_dir: package's destination sysroot path
|
||||||
$(1)_extract_dir: path to the package's extracted sources
|
$(1)_staging_prefix_dir: prefix path inside of the package's staging dir
|
||||||
$(1)_build_dir: path where configure/build/stage commands will be run
|
$(1)_extract_dir: path to the package's extracted sources
|
||||||
$(1)_patch_dir: path where the package's patches (if any) are found
|
$(1)_build_dir: path where configure/build/stage commands will be run
|
||||||
|
$(1)_patch_dir: path where the package's patches (if any) are found
|
||||||
|
|
||||||
Notes on build commands:
|
Notes on build commands:
|
||||||
|
|
||||||
@ -125,4 +143,5 @@ configure step to (usually) correctly configure automatically. Any
|
|||||||
$($(package)_config_opts) will be appended.
|
$($(package)_config_opts) will be appended.
|
||||||
|
|
||||||
Most autotools projects can be properly staged using:
|
Most autotools projects can be properly staged using:
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
@ -1,4 +1,4 @@
|
|||||||
ckage=boost
|
package=boost
|
||||||
$(package)_version=1_59_0
|
$(package)_version=1_59_0
|
||||||
$(package)_download_path=http://sourceforge.net/projects/boost/files/boost/1.59.0
|
$(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
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user