diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rwxr-xr-x | contrib/devtools/gen-manpages.py | 20 | ||||
-rwxr-xr-x | contrib/macdeploy/macdeployqtplus | 79 | ||||
-rw-r--r-- | doc/bips.md | 5 | ||||
-rw-r--r-- | src/bench/examples.cpp | 2 | ||||
-rw-r--r-- | src/bitcoin-cli.cpp | 5 | ||||
-rw-r--r-- | src/bitcoin-tx.cpp | 5 | ||||
-rw-r--r-- | src/bitcoin-util.cpp | 5 | ||||
-rw-r--r-- | src/bitcoin-wallet.cpp | 5 | ||||
-rw-r--r-- | src/bitcoind.cpp | 7 | ||||
-rw-r--r-- | src/clientversion.cpp | 33 | ||||
-rw-r--r-- | src/clientversion.h | 5 | ||||
-rw-r--r-- | src/init.cpp | 19 | ||||
-rw-r--r-- | src/init.h | 3 | ||||
-rw-r--r-- | src/test/fs_tests.cpp | 4 | ||||
-rw-r--r-- | src/test/fuzz/addrman.cpp | 2 | ||||
-rw-r--r-- | src/test/serialize_tests.cpp | 12 | ||||
-rw-r--r-- | src/util/system.cpp | 12 | ||||
-rw-r--r-- | src/util/system.h | 2 | ||||
-rwxr-xr-x | test/functional/feature_dirsymlinks.py | 24 | ||||
-rwxr-xr-x | test/lint/lint-format-strings.py | 4 | ||||
-rw-r--r-- | test/sanitizer_suppressions/tsan | 5 |
22 files changed, 136 insertions, 124 deletions
diff --git a/configure.ac b/configure.ac index 222fa94946..ae21dd9a7c 100644 --- a/configure.ac +++ b/configure.ac @@ -100,7 +100,7 @@ dnl sets RPATH for any directories in the dynamic linker search path. dnl See more: https://wiki.debian.org/RpathIssue LT_PREREQ([1.5.2]) dnl Libtool init checks. -LT_INIT([pic-only]) +LT_INIT([pic-only win32-dll]) dnl Check/return PATH for base programs. AC_PATH_TOOL([AR], [ar]) diff --git a/contrib/devtools/gen-manpages.py b/contrib/devtools/gen-manpages.py index 05f613da38..26612cc444 100755 --- a/contrib/devtools/gen-manpages.py +++ b/contrib/devtools/gen-manpages.py @@ -32,7 +32,6 @@ mandir = os.getenv('MANDIR', os.path.join(topdir, 'doc/man')) # Verify that all the required binaries are usable, and extract copyright # message in a first pass. -copyright = None versions = [] for relpath in BINARIES: abspath = os.path.join(builddir, relpath) @@ -42,18 +41,17 @@ for relpath in BINARIES: print(f'{abspath} not found or not an executable', file=sys.stderr) sys.exit(1) # take first line (which must contain version) - verstr = r.stdout.split('\n')[0] + verstr = r.stdout.splitlines()[0] # last word of line is the actual version e.g. v22.99.0-5c6b3d5b3508 verstr = verstr.split()[-1] assert verstr.startswith('v') + # remaining lines are copyright + copyright = r.stdout.split('\n')[1:] + assert copyright[0].startswith('Copyright (C)') - # Only bitcoin-qt prints the copyright message on --version, so store it specifically. - if relpath == 'src/qt/bitcoin-qt': - copyright = r.stdout.split('\n')[1:] + versions.append((abspath, verstr, copyright)) - versions.append((abspath, verstr)) - -if any(verstr.endswith('-dirty') for (_, verstr) in versions): +if any(verstr.endswith('-dirty') for (_, verstr, _) in versions): print("WARNING: Binaries were built from a dirty tree.") print('man pages generated from dirty binaries should NOT be committed.') print('To properly generate man pages, please commit your changes (or discard them), rebuild, then run this script again.') @@ -61,13 +59,13 @@ if any(verstr.endswith('-dirty') for (_, verstr) in versions): with tempfile.NamedTemporaryFile('w', suffix='.h2m') as footer: # Create copyright footer, and write it to a temporary include file. - assert copyright + # Copyright is the same for all binaries, so just use the first. footer.write('[COPYRIGHT]\n') - footer.write('\n'.join(copyright).strip()) + footer.write('\n'.join(versions[0][2]).strip()) footer.flush() # Call the binaries through help2man to produce a manual page for each of them. - for (abspath, verstr) in versions: + for (abspath, verstr, _) in versions: outname = os.path.join(mandir, os.path.basename(abspath) + '.1') print(f'Generating {outname}…') subprocess.run([help2man, '-N', '--version-string=' + verstr, '--include=' + footer.name, '-o', outname, abspath], check=True) diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus index 3b76108034..0455a137f1 100755 --- a/contrib/macdeploy/macdeployqtplus +++ b/contrib/macdeploy/macdeployqtplus @@ -16,7 +16,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -import sys, re, os, shutil, stat, os.path +import sys, re, os, platform, shutil, stat, subprocess, os.path from argparse import ArgumentParser from ds_store import DSStore from mac_alias import Alias @@ -244,49 +244,47 @@ def copyFramework(framework: FrameworkInfo, path: str, verbose: int) -> Optional fromPath = framework.sourceFilePath toDir = os.path.join(path, framework.destinationDirectory) toPath = os.path.join(toDir, framework.binaryName) - - if not os.path.exists(fromPath): - raise RuntimeError(f"No file at {fromPath}") - - if os.path.exists(toPath): - return None # Already there - - if not os.path.exists(toDir): - os.makedirs(toDir) - - shutil.copy2(fromPath, toPath) - if verbose: - print("Copied:", fromPath) - print(" to:", toPath) + + if framework.isDylib(): + if not os.path.exists(fromPath): + raise RuntimeError(f"No file at {fromPath}") + + if os.path.exists(toPath): + return None # Already there + + if not os.path.exists(toDir): + os.makedirs(toDir) + + shutil.copy2(fromPath, toPath) + if verbose: + print("Copied:", fromPath) + print(" to:", toPath) + else: + to_dir = os.path.join(path, "Contents", "Frameworks", framework.frameworkName) + if os.path.exists(to_dir): + return None # Already there + + from_dir = framework.frameworkPath + if not os.path.exists(from_dir): + raise RuntimeError(f"No directory at {from_dir}") + + shutil.copytree(from_dir, to_dir, symlinks=True) + if verbose: + print("Copied:", from_dir) + print(" to:", to_dir) + + headers_link = os.path.join(to_dir, "Headers") + if os.path.exists(headers_link): + os.unlink(headers_link) + + headers_dir = os.path.join(to_dir, framework.binaryDirectory, "Headers") + if os.path.exists(headers_dir): + shutil.rmtree(headers_dir) permissions = os.stat(toPath) if not permissions.st_mode & stat.S_IWRITE: os.chmod(toPath, permissions.st_mode | stat.S_IWRITE) - if not framework.isDylib(): # Copy resources for real frameworks - - linkfrom = os.path.join(path, "Contents","Frameworks", framework.frameworkName, "Versions", "Current") - linkto = framework.version - if not os.path.exists(linkfrom): - os.symlink(linkto, linkfrom) - print("Linked:", linkfrom, "->", linkto) - fromResourcesDir = framework.sourceResourcesDirectory - if os.path.exists(fromResourcesDir): - toResourcesDir = os.path.join(path, framework.destinationResourcesDirectory) - shutil.copytree(fromResourcesDir, toResourcesDir, symlinks=True) - if verbose: - print("Copied resources:", fromResourcesDir) - print(" to:", toResourcesDir) - fromContentsDir = framework.sourceVersionContentsDirectory - if not os.path.exists(fromContentsDir): - fromContentsDir = framework.sourceContentsDirectory - if os.path.exists(fromContentsDir): - toContentsDir = os.path.join(path, framework.destinationVersionContentsDirectory) - shutil.copytree(fromContentsDir, toContentsDir, symlinks=True) - if verbose: - print("Copied Contents:", fromContentsDir) - print(" to:", toContentsDir) - return toPath def deployFrameworks(frameworks: List[FrameworkInfo], bundlePath: str, binaryPath: str, strip: bool, verbose: int, deploymentInfo: Optional[DeploymentInfo] = None) -> DeploymentInfo: @@ -543,6 +541,9 @@ ds.close() # ------------------------------------------------ +if platform.system() == "Darwin": + subprocess.check_call(f"codesign --deep --force --sign - {target}", shell=True) + if config.dmg is not None: print("+ Preparing .dmg disk image +") diff --git a/doc/bips.md b/doc/bips.md index 27adcedd31..0f3f61daf1 100644 --- a/doc/bips.md +++ b/doc/bips.md @@ -1,4 +1,4 @@ -BIPs that are implemented by Bitcoin Core (up-to-date up to **v22.0**): +BIPs that are implemented by Bitcoin Core (up-to-date up to **v23.0**): * [`BIP 9`](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki): The changes allowing multiple soft-forks to be deployed in parallel have been implemented since **v0.12.1** ([PR #7575](https://github.com/bitcoin/bitcoin/pull/7575)) * [`BIP 11`](https://github.com/bitcoin/bips/blob/master/bip-0011.mediawiki): Multisig outputs are standard since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)). @@ -42,7 +42,8 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v22.0**): * [`BIP 147`](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki): NULLDUMMY softfork as of **v0.13.1** ([PR 8636](https://github.com/bitcoin/bitcoin/pull/8636) and [PR 8937](https://github.com/bitcoin/bitcoin/pull/8937)), *buried* since **v0.19.0** ([PR #16060](https://github.com/bitcoin/bitcoin/pull/16060)). * [`BIP 152`](https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki): Compact block transfer and related optimizations are used as of **v0.13.0** ([PR 8068](https://github.com/bitcoin/bitcoin/pull/8068)). * [`BIP 155`](https://github.com/bitcoin/bips/blob/master/bip-0155.mediawiki): The 'addrv2' and 'sendaddrv2' messages which enable relay of Tor V3 addresses (and other networks) are supported as of **v0.21.0** ([PR 19954](https://github.com/bitcoin/bitcoin/pull/19954)). -* [`BIP 158`](https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki): Compact Block Filters for Light Clients can be indexed as of **v0.19.0** ([PR #14121](https://github.com/bitcoin/bitcoin/pull/14121)). +* [`BIP 157`](https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki) + [`158`](https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki): Compact Block Filters for Light Clients can be indexed as of **v0.19.0** ([PR #14121](https://github.com/bitcoin/bitcoin/pull/14121)) and served to peers on the P2P network as of **v0.21.0** ([PR #16442](https://github.com/bitcoin/bitcoin/pull/16442)). * [`BIP 159`](https://github.com/bitcoin/bips/blob/master/bip-0159.mediawiki): The `NODE_NETWORK_LIMITED` service bit is signalled as of **v0.16.0** ([PR 11740](https://github.com/bitcoin/bitcoin/pull/11740)), and such nodes are connected to as of **v0.17.0** ([PR 10387](https://github.com/bitcoin/bitcoin/pull/10387)). * [`BIP 173`](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki): Bech32 addresses for native Segregated Witness outputs are supported as of **v0.16.0** ([PR 11167](https://github.com/bitcoin/bitcoin/pull/11167)). Bech32 addresses are generated by default as of **v0.20.0** ([PR 16884](https://github.com/bitcoin/bitcoin/pull/16884)). * [`BIP 174`](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki): RPCs to operate on Partially Signed Bitcoin Transactions (PSBT) are present as of **v0.17.0** ([PR 13557](https://github.com/bitcoin/bitcoin/pull/13557)). diff --git a/src/bench/examples.cpp b/src/bench/examples.cpp index dcd615b9da..72a9922e94 100644 --- a/src/bench/examples.cpp +++ b/src/bench/examples.cpp @@ -13,7 +13,7 @@ static void Trig(benchmark::Bench& bench) { double d = 0.01; bench.run([&] { - sum += sin(d); + sum = sum + sin(d); d += 0.000001; }); } diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index 874e38752a..5523fff3b2 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -133,7 +133,10 @@ static int AppInitRPC(int argc, char* argv[]) } if (argc < 2 || HelpRequested(gArgs) || gArgs.IsArgSet("-version")) { std::string strUsage = PACKAGE_NAME " RPC client version " + FormatFullVersion() + "\n"; - if (!gArgs.IsArgSet("-version")) { + + if (gArgs.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "Usage: bitcoin-cli [options] <command> [params] Send command to " PACKAGE_NAME "\n" "or: bitcoin-cli [options] -named <command> [name=value]... Send command to " PACKAGE_NAME " (with named arguments)\n" diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index ec07114d6e..b297081cab 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -102,7 +102,10 @@ static int AppInitRawTx(int argc, char* argv[]) if (argc < 2 || HelpRequested(gArgs) || gArgs.IsArgSet("-version")) { // First part of help message is specific to this utility std::string strUsage = PACKAGE_NAME " bitcoin-tx utility version " + FormatFullVersion() + "\n"; - if (!gArgs.IsArgSet("-version")) { + + if (gArgs.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "Usage: bitcoin-tx [options] <hex-tx> [commands] Update hex-encoded bitcoin transaction\n" "or: bitcoin-tx [options] -create [commands] Create hex-encoded bitcoin transaction\n" diff --git a/src/bitcoin-util.cpp b/src/bitcoin-util.cpp index 973f4f2883..b457e0b354 100644 --- a/src/bitcoin-util.cpp +++ b/src/bitcoin-util.cpp @@ -53,7 +53,10 @@ static int AppInitUtil(ArgsManager& args, int argc, char* argv[]) if (HelpRequested(args) || args.IsArgSet("-version")) { // First part of help message is specific to this utility std::string strUsage = PACKAGE_NAME " bitcoin-util utility version " + FormatFullVersion() + "\n"; - if (!args.IsArgSet("-version")) { + + if (args.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "Usage: bitcoin-util [options] [commands] Do stuff\n"; strUsage += "\n" + args.GetHelpMessage(); diff --git a/src/bitcoin-wallet.cpp b/src/bitcoin-wallet.cpp index ff5485e2da..2f3dd45267 100644 --- a/src/bitcoin-wallet.cpp +++ b/src/bitcoin-wallet.cpp @@ -59,7 +59,10 @@ static bool WalletAppInit(ArgsManager& args, int argc, char* argv[]) } if (argc < 2 || HelpRequested(args) || args.IsArgSet("-version")) { std::string strUsage = strprintf("%s bitcoin-wallet version", PACKAGE_NAME) + " " + FormatFullVersion() + "\n"; - if (!args.IsArgSet("-version")) { + + if (args.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "bitcoin-wallet is an offline tool for creating and interacting with " PACKAGE_NAME " wallet files.\n" "By default bitcoin-wallet will act on wallets in the default mainnet wallet directory in the datadir.\n" diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index 6432e8849d..9843382682 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -126,9 +126,10 @@ static bool AppInit(NodeContext& node, int argc, char* argv[]) if (HelpRequested(args) || args.IsArgSet("-version")) { std::string strUsage = PACKAGE_NAME " version " + FormatFullVersion() + "\n"; - if (!args.IsArgSet("-version")) { - strUsage += FormatParagraph(LicenseInfo()) + "\n" - "\nUsage: bitcoind [options] Start " PACKAGE_NAME "\n" + if (args.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { + strUsage += "\nUsage: bitcoind [options] Start " PACKAGE_NAME "\n" "\n"; strUsage += args.GetHelpMessage(); } diff --git a/src/clientversion.cpp b/src/clientversion.cpp index 9b65952b02..192e9c52bc 100644 --- a/src/clientversion.cpp +++ b/src/clientversion.cpp @@ -3,9 +3,13 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include <clientversion.h> +#include <util/translation.h> #include <tinyformat.h> +#include <sstream> +#include <string> +#include <vector> /** * Name of client reported in the 'version' message. Report the same name @@ -72,3 +76,32 @@ std::string FormatSubVersion(const std::string& name, int nClientVersion, const ss << "/"; return ss.str(); } + +std::string CopyrightHolders(const std::string& strPrefix) +{ + const auto copyright_devs = strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION); + std::string strCopyrightHolders = strPrefix + copyright_devs; + + // Make sure Bitcoin Core copyright is not removed by accident + if (copyright_devs.find("Bitcoin Core") == std::string::npos) { + strCopyrightHolders += "\n" + strPrefix + "The Bitcoin Core developers"; + } + return strCopyrightHolders; +} + +std::string LicenseInfo() +{ + const std::string URL_SOURCE_CODE = "<https://github.com/bitcoin/bitcoin>"; + + return CopyrightHolders(strprintf(_("Copyright (C) %i-%i").translated, 2009, COPYRIGHT_YEAR) + " ") + "\n" + + "\n" + + strprintf(_("Please contribute if you find %s useful. " + "Visit %s for further information about the software.").translated, PACKAGE_NAME, "<" PACKAGE_URL ">") + + "\n" + + strprintf(_("The source code is available from %s.").translated, URL_SOURCE_CODE) + + "\n" + + "\n" + + _("This is experimental software.").translated + "\n" + + strprintf(_("Distributed under the MIT software license, see the accompanying file %s or %s").translated, "COPYING", "<https://opensource.org/licenses/MIT>") + + "\n"; +} diff --git a/src/clientversion.h b/src/clientversion.h index a39d96292d..d2efd7dcab 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -41,6 +41,11 @@ extern const std::string CLIENT_NAME; std::string FormatFullVersion(); std::string FormatSubVersion(const std::string& name, int nClientVersion, const std::vector<std::string>& comments); +std::string CopyrightHolders(const std::string& strPrefix); + +/** Returns licensing information (for -version) */ +std::string LicenseInfo(); + #endif // WINDRES_PREPROC #endif // BITCOIN_CLIENTVERSION_H diff --git a/src/init.cpp b/src/init.cpp index 64ed868333..02ea30e28e 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -594,25 +594,6 @@ void SetupServerArgs(ArgsManager& argsman) argsman.AddHiddenArgs(hidden_args); } -std::string LicenseInfo() -{ - const std::string URL_SOURCE_CODE = "<https://github.com/bitcoin/bitcoin>"; - - return CopyrightHolders(strprintf(_("Copyright (C) %i-%i").translated, 2009, COPYRIGHT_YEAR) + " ") + "\n" + - "\n" + - strprintf(_("Please contribute if you find %s useful. " - "Visit %s for further information about the software.").translated, - PACKAGE_NAME, "<" PACKAGE_URL ">") + - "\n" + - strprintf(_("The source code is available from %s.").translated, - URL_SOURCE_CODE) + - "\n" + - "\n" + - _("This is experimental software.").translated + "\n" + - strprintf(_("Distributed under the MIT software license, see the accompanying file %s or %s").translated, "COPYING", "<https://opensource.org/licenses/MIT>") + - "\n"; -} - static bool fHaveGenesis = false; static Mutex g_genesis_wait_mutex; static std::condition_variable g_genesis_wait_cv; diff --git a/src/init.h b/src/init.h index 1292cc1a3a..ddd439f619 100644 --- a/src/init.h +++ b/src/init.h @@ -70,7 +70,4 @@ bool AppInitMain(node::NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip */ void SetupServerArgs(ArgsManager& argsman); -/** Returns licensing information (for -version) */ -std::string LicenseInfo(); - #endif // BITCOIN_INIT_H diff --git a/src/test/fs_tests.cpp b/src/test/fs_tests.cpp index 313064b294..5875f0218f 100644 --- a/src/test/fs_tests.cpp +++ b/src/test/fs_tests.cpp @@ -152,7 +152,7 @@ BOOST_AUTO_TEST_CASE(rename) fs::remove(path2); } -#ifndef WIN32 +#ifndef __MINGW64__ // no symlinks on mingw BOOST_AUTO_TEST_CASE(create_directories) { // Test fs::create_directories workaround. @@ -174,6 +174,6 @@ BOOST_AUTO_TEST_CASE(create_directories) fs::remove(symlink); fs::remove(dir); } -#endif // WIN32 +#endif // __MINGW64__ BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/fuzz/addrman.cpp b/src/test/fuzz/addrman.cpp index 3699abb597..ba917dec2a 100644 --- a/src/test/fuzz/addrman.cpp +++ b/src/test/fuzz/addrman.cpp @@ -137,7 +137,7 @@ public: * - vvNew entries refer to the same addresses * - vvTried entries refer to the same addresses */ - bool operator==(const AddrManDeterministic& other) + bool operator==(const AddrManDeterministic& other) const { LOCK2(m_impl->cs, other.m_impl->cs); diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp index 2441847f99..8c7c650cb1 100644 --- a/src/test/serialize_tests.cpp +++ b/src/test/serialize_tests.cpp @@ -38,13 +38,13 @@ public: READWRITE(obj.txval); } - bool operator==(const CSerializeMethodsTestSingle& rhs) + bool operator==(const CSerializeMethodsTestSingle& rhs) const { - return intval == rhs.intval && \ - boolval == rhs.boolval && \ - stringval == rhs.stringval && \ - strcmp(charstrval, rhs.charstrval) == 0 && \ - *txval == *rhs.txval; + return intval == rhs.intval && + boolval == rhs.boolval && + stringval == rhs.stringval && + strcmp(charstrval, rhs.charstrval) == 0 && + *txval == *rhs.txval; } }; diff --git a/src/util/system.cpp b/src/util/system.cpp index 69811a751b..aa9122106b 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -1342,18 +1342,6 @@ int GetNumCores() return std::thread::hardware_concurrency(); } -std::string CopyrightHolders(const std::string& strPrefix) -{ - const auto copyright_devs = strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION); - std::string strCopyrightHolders = strPrefix + copyright_devs; - - // Make sure Bitcoin Core copyright is not removed by accident - if (copyright_devs.find("Bitcoin Core") == std::string::npos) { - strCopyrightHolders += "\n" + strPrefix + "The Bitcoin Core developers"; - } - return strCopyrightHolders; -} - // Obtain the application startup time (used for uptime calculation) int64_t GetStartupTime() { diff --git a/src/util/system.h b/src/util/system.h index a72ba3f3ed..f193c8ac0b 100644 --- a/src/util/system.h +++ b/src/util/system.h @@ -512,8 +512,6 @@ std::string HelpMessageOpt(const std::string& option, const std::string& message */ int GetNumCores(); -std::string CopyrightHolders(const std::string& strPrefix); - /** * On platforms that support it, tell the kernel the calling thread is * CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details. diff --git a/test/functional/feature_dirsymlinks.py b/test/functional/feature_dirsymlinks.py index 85c8e27600..288754c04c 100755 --- a/test/functional/feature_dirsymlinks.py +++ b/test/functional/feature_dirsymlinks.py @@ -6,9 +6,8 @@ """ import os -import sys -from test_framework.test_framework import BitcoinTestFramework, SkipTest +from test_framework.test_framework import BitcoinTestFramework def rename_and_link(*, from_name, to_name): @@ -16,24 +15,27 @@ def rename_and_link(*, from_name, to_name): os.symlink(to_name, from_name) assert os.path.islink(from_name) and os.path.isdir(from_name) -class SymlinkTest(BitcoinTestFramework): - def skip_test_if_missing_module(self): - if sys.platform == 'win32': - raise SkipTest("Symlinks test skipped on Windows") +class SymlinkTest(BitcoinTestFramework): def set_test_params(self): self.num_nodes = 1 def run_test(self): + dir_new_blocks = self.nodes[0].chain_path / "new_blocks" + dir_new_chainstate = self.nodes[0].chain_path / "new_chainstate" self.stop_node(0) - rename_and_link(from_name=os.path.join(self.nodes[0].datadir, self.chain, "blocks"), - to_name=os.path.join(self.nodes[0].datadir, self.chain, "newblocks")) - rename_and_link(from_name=os.path.join(self.nodes[0].datadir, self.chain, "chainstate"), - to_name=os.path.join(self.nodes[0].datadir, self.chain, "newchainstate")) + rename_and_link( + from_name=self.nodes[0].chain_path / "blocks", + to_name=dir_new_blocks, + ) + rename_and_link( + from_name=self.nodes[0].chain_path / "chainstate", + to_name=dir_new_chainstate, + ) self.start_node(0) -if __name__ == '__main__': +if __name__ == "__main__": SymlinkTest().main() diff --git a/test/lint/lint-format-strings.py b/test/lint/lint-format-strings.py index 2870432bff..b814446125 100755 --- a/test/lint/lint-format-strings.py +++ b/test/lint/lint-format-strings.py @@ -16,14 +16,12 @@ FALSE_POSITIVES = [ ("src/dbwrapper.cpp", "vsnprintf(p, limit - p, format, backup_ap)"), ("src/index/base.cpp", "FatalError(const char* fmt, const Args&... args)"), ("src/netbase.cpp", "LogConnectFailure(bool manual_connection, const char* fmt, const Args&... args)"), - ("src/util/system.cpp", "strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION)"), + ("src/clientversion.cpp", "strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION)"), ("src/validationinterface.cpp", "LogPrint(BCLog::VALIDATION, fmt \"\\n\", __VA_ARGS__)"), ("src/wallet/wallet.h", "WalletLogPrintf(std::string fmt, Params... parameters)"), ("src/wallet/wallet.h", "LogPrintf((\"%s \" + fmt).c_str(), GetDisplayName(), parameters...)"), ("src/wallet/scriptpubkeyman.h", "WalletLogPrintf(std::string fmt, Params... parameters)"), ("src/wallet/scriptpubkeyman.h", "LogPrintf((\"%s \" + fmt).c_str(), m_storage.GetDisplayName(), parameters...)"), - ("src/logging.h", "LogPrintf(const char* fmt, const Args&... args)"), - ("src/wallet/scriptpubkeyman.h", "WalletLogPrintf(const std::string& fmt, const Params&... parameters)"), ] diff --git a/test/sanitizer_suppressions/tsan b/test/sanitizer_suppressions/tsan index 26f3fdc7af..3acf575d07 100644 --- a/test/sanitizer_suppressions/tsan +++ b/test/sanitizer_suppressions/tsan @@ -26,9 +26,6 @@ deadlock:src/qt/test/* deadlock:libdb race:libzmq -# Race in headers only Boost Test -race:std::__1::ios_base::flags - # Intermittent issues # ------------------- # @@ -42,4 +39,4 @@ race:CZMQAbstractPublishNotifier::SendZmqMessage race:epoll_ctl # https://github.com/bitcoin/bitcoin/issues/23366 -race:std::__1::ios_base::width +race:std::__1::ios_base::* |