aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cirrus.yml2
-rw-r--r--.github/ISSUE_TEMPLATE/good_first_issue.yml6
-rw-r--r--.github/workflows/ci.yml4
-rwxr-xr-xci/test/00_setup_env_s390x.sh3
-rwxr-xr-xci/test/04_install.sh10
-rw-r--r--contrib/guix/manifest.scm6
-rw-r--r--contrib/guix/patches/nsis-gcc-10-memmove.patch23
-rw-r--r--src/qt/bitcoin.cpp9
-rw-r--r--src/qt/bitcoingui.cpp4
-rw-r--r--src/qt/bitcoingui.h2
-rw-r--r--src/qt/walletcontroller.cpp9
-rw-r--r--src/qt/walletcontroller.h4
-rwxr-xr-xtest/get_previous_releases.py1
13 files changed, 33 insertions, 50 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index 263d9d73de..96357a103d 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -31,7 +31,7 @@ env: # Global defaults
# swap:
#
# ```
-# fallocate -l 16G /swapfile_ci && chmod 600 /swapfile_ci && mkswap /swapfile_ci && swapon /swapfile_ci && ( echo '/swapfile_ci none swap sw 0 0' | sudo tee -a /etc/fstab )
+# fallocate -l 16G /swapfile_ci && chmod 600 /swapfile_ci && mkswap /swapfile_ci && swapon /swapfile_ci && ( echo '/swapfile_ci none swap sw 0 0' | tee -a /etc/fstab )
# ```
#
# - To register the persistent worker, open a `screen` session and run:
diff --git a/.github/ISSUE_TEMPLATE/good_first_issue.yml b/.github/ISSUE_TEMPLATE/good_first_issue.yml
index c40dad9687..133937c011 100644
--- a/.github/ISSUE_TEMPLATE/good_first_issue.yml
+++ b/.github/ISSUE_TEMPLATE/good_first_issue.yml
@@ -29,8 +29,10 @@ body:
attributes:
label: Useful Skills
description: For example, “`std::thread`”, “Qt5 GUI and async GUI design” or “basic understanding of Bitcoin mining and the Bitcoin Core RPC interface”.
- validations:
- required: false
+ value: |
+ * Compiling Bitcoin Core from source
+ * Running the C++ unit tests and the Python functional tests
+ * ...
- type: textarea
attributes:
label: Guidance for new contributors
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e6e8238667..bdeb691479 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -262,5 +262,7 @@ jobs:
run: py -3 test\util\rpcauth-test.py
- name: Run functional tests
+ env:
+ TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
shell: cmd
- run: py -3 test\functional\test_runner.py --ci --quiet --tmpdirprefix=%RUNNER_TEMP% --combinedlogslen=99999999 --timeout-factor=%TEST_RUNNER_TIMEOUT_FACTOR% --extended --exclude feature_dbcrash
+ run: py -3 test\functional\test_runner.py --ci --quiet --tmpdirprefix=%RUNNER_TEMP% --combinedlogslen=99999999 --timeout-factor=%TEST_RUNNER_TIMEOUT_FACTOR% %TEST_RUNNER_EXTRA%
diff --git a/ci/test/00_setup_env_s390x.sh b/ci/test/00_setup_env_s390x.sh
index a7516d6b4e..ca84ecce51 100755
--- a/ci/test/00_setup_env_s390x.sh
+++ b/ci/test/00_setup_env_s390x.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
-# Copyright (c) 2019-2022 The Bitcoin Core developers
+# Copyright (c) 2019-present The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -10,7 +10,6 @@ export HOST=s390x-linux-gnu
export PACKAGES="python3-zmq"
export CONTAINER_NAME=ci_s390x
export CI_IMAGE_NAME_TAG="docker.io/s390x/debian:bookworm"
-export TEST_RUNNER_ENV="LC_ALL=C"
export TEST_RUNNER_EXTRA="--exclude feature_init,rpc_bind,feature_bind_extra" # Excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547
export RUN_FUNCTIONAL_TESTS=true
export GOAL="install"
diff --git a/ci/test/04_install.sh b/ci/test/04_install.sh
index 6183c6e21f..3b58094821 100755
--- a/ci/test/04_install.sh
+++ b/ci/test/04_install.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
-# Copyright (c) 2018-2022 The Bitcoin Core developers
+# Copyright (c) 2018-present The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -32,13 +32,13 @@ if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
# shellcheck disable=SC2086
CI_CONTAINER_ID=$(docker run $CI_CONTAINER_CAP --rm --interactive --detach --tty \
- --mount type=bind,src=$BASE_READ_ONLY_DIR,dst=/ro_base,readonly \
+ --mount "type=bind,src=$BASE_READ_ONLY_DIR,dst=$BASE_READ_ONLY_DIR,readonly" \
--mount "type=volume,src=${CONTAINER_NAME}_ccache,dst=$CCACHE_DIR" \
--mount "type=volume,src=${CONTAINER_NAME}_depends,dst=$DEPENDS_DIR" \
--mount "type=volume,src=${CONTAINER_NAME}_previous_releases,dst=$PREVIOUS_RELEASES_DIR" \
--env-file /tmp/env \
- --name $CONTAINER_NAME \
- $CONTAINER_NAME)
+ --name "$CONTAINER_NAME" \
+ "$CONTAINER_NAME")
export CI_CONTAINER_ID
export CI_EXEC_CMD_PREFIX="docker exec ${CI_CONTAINER_ID}"
else
@@ -56,7 +56,7 @@ export -f CI_EXEC
# Normalize all folders to BASE_ROOT_DIR
CI_EXEC rsync --archive --stats --human-readable "${BASE_READ_ONLY_DIR}/" "${BASE_ROOT_DIR}" || echo "Nothing to copy from ${BASE_READ_ONLY_DIR}/"
CI_EXEC "${BASE_ROOT_DIR}/ci/test/01_base_install.sh"
-CI_EXEC rsync --archive --stats --human-readable /ro_base/ "${BASE_ROOT_DIR}" || echo "Nothing to copy from ro_base"
+
# Fixes permission issues when there is a container UID/GID mismatch with the owner
# of the git source code directory.
CI_EXEC git config --global --add safe.directory \"*\"
diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm
index 612a2526da..0101826399 100644
--- a/contrib/guix/manifest.scm
+++ b/contrib/guix/manifest.scm
@@ -142,10 +142,6 @@ chain for " target " development."))
(home-page (package-home-page pthreads-xgcc))
(license (package-license pthreads-xgcc)))))
-(define (make-nsis-for-gcc-10 base-nsis)
- (package-with-extra-patches base-nsis
- (search-our-patches "nsis-gcc-10-memmove.patch")))
-
;; While LIEF is packaged in Guix, we maintain our own package,
;; to simplify building, and more easily apply updates.
;; Moreover, the Guix's package uses cmake, which caused build
@@ -604,7 +600,7 @@ inspecting signatures in Mach-O binaries.")
;; Windows
(list zip
(make-mingw-pthreads-cross-toolchain "x86_64-w64-mingw32")
- (make-nsis-for-gcc-10 nsis-x86_64)
+ nsis-x86_64
nss-certs
osslsigncode))
((string-contains target "-linux-")
diff --git a/contrib/guix/patches/nsis-gcc-10-memmove.patch b/contrib/guix/patches/nsis-gcc-10-memmove.patch
deleted file mode 100644
index a1aadfd4f3..0000000000
--- a/contrib/guix/patches/nsis-gcc-10-memmove.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-commit f6df41524e703dc471e283e566a48e05a735b7f2
-Author: Anders <anders_k@users.sourceforge.net>
-Date: Sat Jun 27 23:18:45 2020 +0000
-
- Don't let GCC 10 generate memmove calls (bug #1248)
-
- git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7189 212acab6-be3b-0410-9dea-997c60f758d6
-
-diff --git a/SCons/Config/gnu b/SCons/Config/gnu
-index bfcb362d..21fa446b 100644
---- a/SCons/Config/gnu
-+++ b/SCons/Config/gnu
-@@ -103,6 +103,10 @@ stub_env.Append(LINKFLAGS = ['$NODEFLIBS_FLAG']) # no standard libraries
- stub_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align
- stub_env.Append(LINKFLAGS = ['$MAP_FLAG']) # generate map file
-
-+conf = FlagsConfigure(stub_env)
-+conf.CheckCompileFlag('-fno-tree-loop-distribute-patterns') # GCC 10: Don't generate msvcrt!memmove calls (bug #1248)
-+conf.Finish()
-+
- stub_uenv = stub_env.Clone()
- stub_uenv.Append(CPPDEFINES = ['_UNICODE', 'UNICODE'])
-
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 865871a6d4..bad4e72794 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -407,18 +407,21 @@ void BitcoinApplication::initializeResult(bool success, interfaces::BlockAndHead
qInfo() << "Platform customization:" << platformStyle->getName();
clientModel = new ClientModel(node(), optionsModel);
window->setClientModel(clientModel, &tip_info);
+
+ // If '-min' option passed, start window minimized (iconified) or minimized to tray
+ bool start_minimized = gArgs.GetBoolArg("-min", false);
#ifdef ENABLE_WALLET
if (WalletModel::isWalletEnabled()) {
m_wallet_controller = new WalletController(*clientModel, platformStyle, this);
- window->setWalletController(m_wallet_controller);
+ window->setWalletController(m_wallet_controller, /*show_loading_minimized=*/start_minimized);
if (paymentServer) {
paymentServer->setOptionsModel(optionsModel);
}
}
#endif // ENABLE_WALLET
- // If -min option passed, start window minimized (iconified) or minimized to tray
- if (!gArgs.GetBoolArg("-min", false)) {
+ // Show or minimize window
+ if (!start_minimized) {
window->show();
} else if (clientModel->getOptionsModel()->getMinimizeToTray() && window->hasTrayIcon()) {
// do nothing as the window is managed by the tray icon
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp
index fd329faf18..b84cd02bda 100644
--- a/src/qt/bitcoingui.cpp
+++ b/src/qt/bitcoingui.cpp
@@ -679,7 +679,7 @@ void BitcoinGUI::enableHistoryAction(bool privacy)
if (historyAction->isChecked()) gotoOverviewPage();
}
-void BitcoinGUI::setWalletController(WalletController* wallet_controller)
+void BitcoinGUI::setWalletController(WalletController* wallet_controller, bool show_loading_minimized)
{
assert(!m_wallet_controller);
assert(wallet_controller);
@@ -699,7 +699,7 @@ void BitcoinGUI::setWalletController(WalletController* wallet_controller)
});
auto activity = new LoadWalletsActivity(m_wallet_controller, this);
- activity->load();
+ activity->load(show_loading_minimized);
}
WalletController* BitcoinGUI::getWalletController()
diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h
index 92b889263b..4e1f05255a 100644
--- a/src/qt/bitcoingui.h
+++ b/src/qt/bitcoingui.h
@@ -81,7 +81,7 @@ public:
*/
void setClientModel(ClientModel *clientModel = nullptr, interfaces::BlockAndHeaderTipInfo* tip_info = nullptr);
#ifdef ENABLE_WALLET
- void setWalletController(WalletController* wallet_controller);
+ void setWalletController(WalletController* wallet_controller, bool show_loading_minimized);
WalletController* getWalletController();
#endif
diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp
index d782838d6f..8c8abf0e90 100644
--- a/src/qt/walletcontroller.cpp
+++ b/src/qt/walletcontroller.cpp
@@ -191,7 +191,7 @@ WalletControllerActivity::WalletControllerActivity(WalletController* wallet_cont
connect(this, &WalletControllerActivity::finished, this, &QObject::deleteLater);
}
-void WalletControllerActivity::showProgressDialog(const QString& title_text, const QString& label_text)
+void WalletControllerActivity::showProgressDialog(const QString& title_text, const QString& label_text, bool show_minimized)
{
auto progress_dialog = new QProgressDialog(m_parent_widget);
progress_dialog->setAttribute(Qt::WA_DeleteOnClose);
@@ -206,6 +206,8 @@ void WalletControllerActivity::showProgressDialog(const QString& title_text, con
// The setValue call forces QProgressDialog to start the internal duration estimation.
// See details in https://bugreports.qt.io/browse/QTBUG-47042.
progress_dialog->setValue(0);
+ // When requested, launch dialog minimized
+ if (show_minimized) progress_dialog->showMinimized();
}
CreateWalletActivity::CreateWalletActivity(WalletController* wallet_controller, QWidget* parent_widget)
@@ -368,14 +370,15 @@ LoadWalletsActivity::LoadWalletsActivity(WalletController* wallet_controller, QW
{
}
-void LoadWalletsActivity::load()
+void LoadWalletsActivity::load(bool show_loading_minimized)
{
showProgressDialog(
//: Title of progress window which is displayed when wallets are being loaded.
tr("Load Wallets"),
/*: Descriptive text of the load wallets progress window which indicates to
the user that wallets are currently being loaded.*/
- tr("Loading wallets…"));
+ tr("Loading wallets…"),
+ /*show_minimized=*/show_loading_minimized);
QTimer::singleShot(0, worker(), [this] {
for (auto& wallet : node().walletLoader().getWallets()) {
diff --git a/src/qt/walletcontroller.h b/src/qt/walletcontroller.h
index fcd65756c6..8ec0243890 100644
--- a/src/qt/walletcontroller.h
+++ b/src/qt/walletcontroller.h
@@ -100,7 +100,7 @@ protected:
interfaces::Node& node() const { return m_wallet_controller->m_node; }
QObject* worker() const { return m_wallet_controller->m_activity_worker; }
- void showProgressDialog(const QString& title_text, const QString& label_text);
+ void showProgressDialog(const QString& title_text, const QString& label_text, bool show_minimized=false);
WalletController* const m_wallet_controller;
QWidget* const m_parent_widget;
@@ -156,7 +156,7 @@ class LoadWalletsActivity : public WalletControllerActivity
public:
LoadWalletsActivity(WalletController* wallet_controller, QWidget* parent_widget);
- void load();
+ void load(bool show_loading_minimized);
};
class RestoreWalletActivity : public WalletControllerActivity
diff --git a/test/get_previous_releases.py b/test/get_previous_releases.py
index cb1597503c..07a5ee8691 100755
--- a/test/get_previous_releases.py
+++ b/test/get_previous_releases.py
@@ -247,6 +247,7 @@ def check_host(args) -> int:
if args.download_binary:
platforms = {
'aarch64-*-linux*': 'aarch64-linux-gnu',
+ 'powerpc64le-*-linux-*': 'powerpc64le-linux-gnu',
'riscv64-*-linux*': 'riscv64-linux-gnu',
'x86_64-*-linux*': 'x86_64-linux-gnu',
'x86_64-apple-darwin*': 'x86_64-apple-darwin',