diff --git a/.cirrus.yml b/.cirrus.yml index 2a3cb1c6d9..b3ac31881e 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -140,13 +140,13 @@ task: FILE_ENV: "./ci/test/00_setup_env_win64.sh" task: - name: '32-bit CentOS, dash, gui' + name: 'CentOS, dash, gui' << : *GLOBAL_TASK_TEMPLATE persistent_worker: labels: type: small env: - FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh" + FILE_ENV: "./ci/test/00_setup_env_native_centos.sh" task: name: 'previous releases, depends DEBUG' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index df1d12e86c..3e9f885d13 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,7 +67,7 @@ jobs: echo "TEST_BASE=$(git rev-list -n$((${{ env.MAX_COUNT }} + 1)) --reverse HEAD $EXCLUDE_MERGE_BASE_ANCESTORS | head -1)" >> "$GITHUB_ENV" - run: | sudo apt-get update - sudo apt-get install clang ccache build-essential cmake pkg-config python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libzmq3-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtwayland5 libqrencode-dev -y + sudo apt-get install clang ccache build-essential cmake pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libzmq3-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtwayland5 libqrencode-dev -y - name: Compile and run tests run: | # Run tests on commits after the last merge commit and before the PR head commit diff --git a/CMakeLists.txt b/CMakeLists.txt index edc84a8bb3..728ceeb34b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -580,8 +580,13 @@ endif() # Relevant discussions: # - https://github.com/hebasto/bitcoin/pull/236#issuecomment-2183120953 # - https://github.com/bitcoin/bitcoin/pull/30312#issuecomment-2191235833 -set(CMAKE_SKIP_BUILD_RPATH TRUE) -set(CMAKE_SKIP_INSTALL_RPATH TRUE) +# NetBSD always requires runtime paths to be set for executables. +if(CMAKE_SYSTEM_NAME STREQUAL "NetBSD") + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +else() + set(CMAKE_SKIP_BUILD_RPATH TRUE) + set(CMAKE_SKIP_INSTALL_RPATH TRUE) +endif() add_subdirectory(test) add_subdirectory(doc) diff --git a/ci/test/00_setup_env.sh b/ci/test/00_setup_env.sh index 021d5e1597..d7d527c7f6 100755 --- a/ci/test/00_setup_env.sh +++ b/ci/test/00_setup_env.sh @@ -64,7 +64,7 @@ export BASE_OUTDIR=${BASE_OUTDIR:-$BASE_SCRATCH_DIR/out} # The folder for previous release binaries. # This folder exists only on the ci guest, and on the ci host as a volume. export PREVIOUS_RELEASES_DIR=${PREVIOUS_RELEASES_DIR:-$BASE_ROOT_DIR/prev_releases} -export CI_BASE_PACKAGES=${CI_BASE_PACKAGES:-build-essential pkg-config curl ca-certificates ccache python3 rsync git procps bison e2fsprogs cmake} +export CI_BASE_PACKAGES=${CI_BASE_PACKAGES:-build-essential pkgconf curl ca-certificates ccache python3 rsync git procps bison e2fsprogs cmake} export GOAL=${GOAL:-install} export DIR_QA_ASSETS=${DIR_QA_ASSETS:-${BASE_SCRATCH_DIR}/qa-assets} export CI_RETRY_EXE=${CI_RETRY_EXE:-"retry --"} diff --git a/ci/test/00_setup_env_i686_centos.sh b/ci/test/00_setup_env_native_centos.sh similarity index 53% rename from ci/test/00_setup_env_i686_centos.sh rename to ci/test/00_setup_env_native_centos.sh index 22657742d7..878778506f 100755 --- a/ci/test/00_setup_env_i686_centos.sh +++ b/ci/test/00_setup_env_native_centos.sh @@ -6,12 +6,10 @@ export LC_ALL=C.UTF-8 -export HOST=i686-pc-linux-gnu -export CONTAINER_NAME=ci_i686_centos -export CI_IMAGE_NAME_TAG="quay.io/centos/amd64:stream9" +export CONTAINER_NAME=ci_native_centos +export CI_IMAGE_NAME_TAG="quay.io/centos/centos:stream9" export STREAM_GCC_V="12" -export CI_BASE_PACKAGES="gcc-toolset-${STREAM_GCC_V}-gcc-c++ glibc-devel.x86_64 gcc-toolset-${STREAM_GCC_V}-libstdc++-devel.x86_64 glibc-devel.i686 gcc-toolset-${STREAM_GCC_V}-libstdc++-devel.i686 ccache make git python3 python3-pip which patch lbzip2 xz procps-ng dash rsync coreutils bison e2fsprogs cmake" +export CI_BASE_PACKAGES="gcc-toolset-${STREAM_GCC_V}-gcc-c++ glibc-devel gcc-toolset-${STREAM_GCC_V}-libstdc++-devel ccache make git python3 python3-pip which patch xz procps-ng dash rsync coreutils bison e2fsprogs cmake" export PIP_PACKAGES="pyzmq" export GOAL="install" export BITCOIN_CONFIG="-DWITH_ZMQ=ON -DBUILD_GUI=ON -DREDUCE_EXPORTS=ON" -export CONFIG_SHELL="/bin/dash" diff --git a/depends/README.md b/depends/README.md index 5ecf16e3c4..848137f03f 100644 --- a/depends/README.md +++ b/depends/README.md @@ -47,7 +47,7 @@ The paths are automatically configured and no other options are needed. Skip the following packages if you don't intend to use the GUI and will build with [`NO_QT=1`](#dependency-options): - apt install bison g++ pkg-config python3 xz-utils + apt install bison g++ pkgconf python3 xz-utils #### For macOS cross compilation diff --git a/depends/builders/freebsd.mk b/depends/builders/freebsd.mk index 465f58e04d..18316f492e 100644 --- a/depends/builders/freebsd.mk +++ b/depends/builders/freebsd.mk @@ -1,5 +1,5 @@ build_freebsd_CC=clang build_freebsd_CXX=clang++ -build_freebsd_SHA256SUM = shasum -a 256 +build_freebsd_SHA256SUM = sha256sum build_freebsd_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o diff --git a/doc/build-unix.md b/doc/build-unix.md index 6ef92bf68f..b9261dfab9 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -44,7 +44,7 @@ Finally, clang (often less resource hungry) can be used instead of gcc, which is Build requirements: - sudo apt-get install build-essential cmake pkg-config python3 + sudo apt-get install build-essential cmake pkgconf python3 Now, you can either build from self-compiled [depends](#dependencies) or install the required dependencies: diff --git a/doc/release-notes/release-notes-28.1.md b/doc/release-notes/release-notes-28.1.md new file mode 100644 index 0000000000..de3b8c5a06 --- /dev/null +++ b/doc/release-notes/release-notes-28.1.md @@ -0,0 +1,107 @@ +Bitcoin Core version 28.1 is now available from: + + + +This release includes new features, various bug fixes and performance +improvements, as well as updated translations. + +Please report bugs using the issue tracker at GitHub: + + + +To receive security and update notifications, please subscribe to: + + + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes in some cases), then run the +installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS) +or `bitcoind`/`bitcoin-qt` (on Linux). + +Upgrading directly from a version of Bitcoin Core that has reached its EOL is +possible, but it might take some time if the data directory needs to be migrated. Old +wallet versions of Bitcoin Core are generally supported. + +Running Bitcoin Core binaries on macOS requires self signing. +``` +cd /path/to/bitcoin-28.x/bin +xattr -d com.apple.quarantine bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin +codesign -s - bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin +``` + +Compatibility +============== + +Bitcoin Core is supported and extensively tested on operating systems +using the Linux Kernel 3.17+, macOS 11.0+, and Windows 7 and newer. Bitcoin +Core should also work on most other UNIX-like systems but is not as +frequently tested on them. It is not recommended to use Bitcoin Core on +unsupported systems. + +Notable changes +=============== + +### P2P + +- When the `-port` configuration option is used, the default onion listening port will now + be derived to be that port + 1 instead of being set to a fixed value (8334 on mainnet). + This re-allows setups with multiple local nodes using different `-port` and not using `-bind`, + which would lead to a startup failure in v28.0 due to a port collision. + + Note that a `HiddenServicePort` manually configured in `torrc` may need adjustment if used in + connection with the `-port` option. + For example, if you are using `-port=5555` with a non-standard value and not using `-bind=...=onion`, + previously Bitcoin Core would listen for incoming Tor connections on `127.0.0.1:8334`. + Now it would listen on `127.0.0.1:5556` (`-port` plus one). If you configured the hidden service manually + in torrc now you have to change it from `HiddenServicePort 8333 127.0.0.1:8334` to `HiddenServicePort 8333 + 127.0.0.1:5556`, or configure bitcoind with `-bind=127.0.0.1:8334=onion` to get the previous behavior. + (#31223) +- #30568 addrman: change internal id counting to int64_t + +### Key + +- #31166 key: clear out secret data in DecodeExtKey + +### Build + +- #31013 depends: For mingw cross compile use `-gcc-posix` to prevent library conflict +- #31502 depends: Fix CXXFLAGS on NetBSD + +### Test + +- #31016 test: add missing sync to feature_fee_estimation.py +- #31448 fuzz: add cstdlib to FuzzedDataProvider +- #31419 test: fix MIN macro redefinition +- #31563 rpc: Extend scope of validation mutex in generateblock + +### Doc + +- #31007 doc: add testnet4 section header for config file + +### CI + +- #30961 ci: add LLVM_SYMBOLIZER_PATH to Valgrind fuzz job + +### Misc + +- #31267 refactor: Drop deprecated space in `operator""_mst` +- #31431 util: use explicit cast in MultiIntBitSet::Fill() + +Credits +======= + +Thanks to everyone who directly contributed to this release: + +- fanquake +- Hennadii Stepanov +- laanwj +- MarcoFalke +- Martin Zumsande +- Marnix +- Sebastian Falbesoner + +As well as to everyone that helped with translations on +[Transifex](https://www.transifex.com/bitcoin/bitcoin/). diff --git a/src/banman.cpp b/src/banman.cpp index 2dbfc76df2..2964a37de0 100644 --- a/src/banman.cpp +++ b/src/banman.cpp @@ -30,7 +30,7 @@ void BanMan::LoadBanlist() { LOCK(m_banned_mutex); - if (m_client_interface) m_client_interface->InitMessage(_("Loading banlist…").translated); + if (m_client_interface) m_client_interface->InitMessage(_("Loading banlist…")); const auto start{SteadyClock::now()}; if (m_ban_db.Read(m_banned)) { diff --git a/src/bitcoin-chainstate.cpp b/src/bitcoin-chainstate.cpp index bab09f13d9..51c482607a 100644 --- a/src/bitcoin-chainstate.cpp +++ b/src/bitcoin-chainstate.cpp @@ -19,9 +19,9 @@ #include #include +#include #include #include -#include #include #include #include