diff options
-rw-r--r-- | .cirrus.yml | 2 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/good_first_issue.yml | 6 | ||||
-rw-r--r-- | .github/workflows/ci.yml | 4 | ||||
-rwxr-xr-x | ci/test/00_setup_env_s390x.sh | 3 | ||||
-rwxr-xr-x | ci/test/04_install.sh | 10 | ||||
-rw-r--r-- | contrib/guix/manifest.scm | 6 | ||||
-rw-r--r-- | contrib/guix/patches/nsis-gcc-10-memmove.patch | 23 | ||||
-rw-r--r-- | src/qt/bitcoin.cpp | 9 | ||||
-rw-r--r-- | src/qt/bitcoingui.cpp | 4 | ||||
-rw-r--r-- | src/qt/bitcoingui.h | 2 | ||||
-rw-r--r-- | src/qt/walletcontroller.cpp | 9 | ||||
-rw-r--r-- | src/qt/walletcontroller.h | 4 | ||||
-rwxr-xr-x | test/get_previous_releases.py | 1 |
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', |