aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rwxr-xr-xcontrib/devtools/gen-manpages.py20
-rwxr-xr-xcontrib/macdeploy/macdeployqtplus79
-rw-r--r--doc/bips.md5
-rw-r--r--src/bench/examples.cpp2
-rw-r--r--src/bitcoin-cli.cpp5
-rw-r--r--src/bitcoin-tx.cpp5
-rw-r--r--src/bitcoin-util.cpp5
-rw-r--r--src/bitcoin-wallet.cpp5
-rw-r--r--src/bitcoind.cpp7
-rw-r--r--src/clientversion.cpp33
-rw-r--r--src/clientversion.h5
-rw-r--r--src/init.cpp19
-rw-r--r--src/init.h3
-rw-r--r--src/test/fs_tests.cpp4
-rw-r--r--src/test/fuzz/addrman.cpp2
-rw-r--r--src/test/serialize_tests.cpp12
-rw-r--r--src/util/system.cpp12
-rw-r--r--src/util/system.h2
-rwxr-xr-xtest/functional/feature_dirsymlinks.py24
-rwxr-xr-xtest/lint/lint-format-strings.py4
-rw-r--r--test/sanitizer_suppressions/tsan5
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::*