Skip to content

Commit 1ea35a4

Browse files
ad5c299 doc: add release notes (Kittywhiskers Van Gogh) 6350e93 merge bitcoin#34102: capnp 1.3.0 (Kittywhiskers Van Gogh) e6e4ad0 merge bitcoin#33181: build for Linux HOSTS with `-static-libgcc` (Kittywhiskers Van Gogh) e403bba merge bitcoin#33780: disable libsanitizer in Linux GCC build (Kittywhiskers Van Gogh) 88108ac partial bitcoin#33445: Update Clang in "tidy" job (Kittywhiskers Van Gogh) f9686bb partial bitcoin#33489: Drop support for EOL macOS 13 (Kittywhiskers Van Gogh) 4a6de56 merge bitcoin#33312: Disable `UndefinedBinaryOperatorResult` check in `src/ipc` (Kittywhiskers Van Gogh) 00f46c2 merge bitcoin#33178: increase maximum allowed (runtime) GCC to 7 (Kittywhiskers Van Gogh) 49f815d partial bitcoin#32922: use notarized v28.2 binaries and fix macOS detection (Kittywhiskers Van Gogh) 7bf7523 merge bitcoin#32760: capnp 1.2.0 (Kittywhiskers Van Gogh) 369e875 merge bitcoin#32400: Use modern Windows randomness functions (Kittywhiskers Van Gogh) 62cb45b merge bitcoin#32458: move `*-check.py` scripts under `contrib/guix/` (Kittywhiskers Van Gogh) 362013a merge bitcoin#29881: use GCC 13 to build releases (Kittywhiskers Van Gogh) bfcf58a merge bitcoin#31818: remove test-security/symbol-check scripts (Kittywhiskers Van Gogh) 973eca0 merge bitcoin#31608: Clarify min macOS and Xcode version (Kittywhiskers Van Gogh) 7f80572 merge bitcoin#31450: disable gcov in base-linux-gcc (Kittywhiskers Van Gogh) e189624 merge bitcoin#31172: increase minimum supported Windows to 10.0 (Kittywhiskers Van Gogh) 8494bd6 partial bitcoin#31105: Update libmultiprocess library (Kittywhiskers Van Gogh) 29c8bd9 merge bitcoin#31099: drop macOS LLVM install instructions (Kittywhiskers Van Gogh) 84b1e17 fix: bump `darwin_cmake_system_version` to match `OSX_MIN_VERSION` (Kittywhiskers Van Gogh) cdc411d merge bitcoin#31048: Bump minimum supported macOS to 13.0 (Kittywhiskers Van Gogh) 5515a69 partial bitcoin#30510: Add IPC wrapper for Mining interface (Kittywhiskers Van Gogh) ce6504e merge bitcoin#27038: test for `_FORTIFY_SOURCE` usage in release binaries (Kittywhiskers Van Gogh) 140848d partial bitcoin#30509: Add -ipcbind option to bitcoin-node (Kittywhiskers Van Gogh) 9df31ce partial bitcoin#30454: Introduce CMake-based build system (Kittywhiskers Van Gogh) 310a652 merge bitcoin#30423: simplify `test-security-check` (Kittywhiskers Van Gogh) 3bb0e30 partial bitcoin#29023: add historical release notes for 26.0 (Kittywhiskers Van Gogh) c725a30 docs: add omitted "Compatibility" heading to release notes template (Kittywhiskers Van Gogh) Pull request description: ## Motivation While working on adding support for Rust to our build system (see [dash#7109](#7109)), there were sources of conflict between our current setup and the minimums demanded by Rust and our FFI crate, [`cxx`](https://github.com/dtolnay/cxx). Specifically, Dash Core currently targets building for Windows 7 ([source](https://github.com/dashpay/dash/blob/cc50446936f8436d9ac3a2442bb348d93d8ba314/configure.ac#L818), [`0x601`](https://learn.microsoft.com/en-gb/windows/win32/winprog/using-the-windows-headers)) in direct conflict with the decision by Rusts' maintainers to drop support for Windows 7 effective Rust 1.78 ([source](https://blog.rust-lang.org/2024/02/26/Windows-7/)) More recent versions of Rust have issues that require additional workarounds (see [`rust-lang/rust#128218`](rust-lang/rust#128218)) to keep support for Windows 7 around and using older versions of Rust is infeasible since both [`cxx`](https://github.com/dtolnay/cxx) and Rust packages currently under evaluation for integration with Dash Core require Rust 1.82+. Additionally, non-conformant definitions in the macOS SDK cause issues when attempting to build crates with FFI definitions (see [`dtolnay/cxx#1574`](dtolnay/cxx#1574)) which is resolved by an additional SDK bump that is not in the scope of this PR as it is _above_ the SDK version used upstream but does give cause to also consider a macOS target version bump, which _is_ done by upstream. ## Additional Information * Dependent on #6919 * Dependency for #7109 * macOS 11 (Big Sur) had its support period elapse ~2 years ago ([source](https://endoflife.date/macos)). macOS 14 (Sonoma) is the lowest version of macOS still receiving support from Apple and the new minimum version elected by upstream. * Windows 7 had its _extended_ support period elapse ~5 years ago ([source](https://learn.microsoft.com/en-gb/lifecycle/products/windows-7)) with the second lowest version, Windows 8.1, had its _extended_ support period elapse ~2 years ago ([source](https://learn.microsoft.com/en-us/lifecycle/products/windows-81)). ## Breaking Changes Dash Core binaries will now target Windows 10 and macOS 14 (Sonoma), replacing the previous target Windows 7 and macOS 11 (Big Sur). ## Checklist - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)** - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: UdjinM6: utACK ad5c299 Tree-SHA512: 650cbc12f2f129770623fd4e62bd7eb77ba0677ae33b765cc8359878633562e2a5c302f86d399400bb798d6a0ac5e6c030f3b8c657b63178f468bbe0d1b246a5
2 parents cc50446 + ad5c299 commit 1ea35a4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+191
-764
lines changed

Makefile.am

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ DIST_SHARE = \
5353
$(top_srcdir)/share/genbuild.sh \
5454
$(top_srcdir)/share/rpcauth
5555

56-
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
57-
$(top_srcdir)/contrib/devtools/security-check.py \
56+
BIN_CHECKS=$(top_srcdir)/contrib/guix/symbol-check.py \
57+
$(top_srcdir)/contrib/guix/security-check.py \
5858
$(top_srcdir)/contrib/devtools/utils.py
5959

6060
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/dash.ico \
@@ -321,17 +321,3 @@ clean-local: clean-docs
321321
rm -rf coverage_percent.txt test_dash.coverage/ total.coverage/ fuzz.coverage/ test/tmp/ cache/ $(OSX_APP)
322322
rm -rf test/functional/__pycache__ test/functional/test_framework/__pycache__ test/cache share/rpcauth/__pycache__
323323
rm -rf dist/
324-
325-
test-security-check:
326-
if TARGET_DARWIN
327-
$(AM_V_at) CXX='$(CXX)' CXXFLAGS='$(CXXFLAGS)' CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' $(PYTHON) $(top_srcdir)/contrib/devtools/test-security-check.py TestSecurityChecks.test_MACHO
328-
$(AM_V_at) CXX='$(CXX)' CXXFLAGS='$(CXXFLAGS)' CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' $(PYTHON) $(top_srcdir)/contrib/devtools/test-symbol-check.py TestSymbolChecks.test_MACHO
329-
endif
330-
if TARGET_WINDOWS
331-
$(AM_V_at) CXX='$(CXX)' CXXFLAGS='$(CXXFLAGS)' CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' $(PYTHON) $(top_srcdir)/contrib/devtools/test-security-check.py TestSecurityChecks.test_PE
332-
$(AM_V_at) CXX='$(CXX)' CXXFLAGS='$(CXXFLAGS)' CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' $(PYTHON) $(top_srcdir)/contrib/devtools/test-symbol-check.py TestSymbolChecks.test_PE
333-
endif
334-
if TARGET_LINUX
335-
$(AM_V_at) CXX='$(CXX)' CXXFLAGS='$(CXXFLAGS)' CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' $(PYTHON) $(top_srcdir)/contrib/devtools/test-security-check.py TestSecurityChecks.test_ELF
336-
$(AM_V_at) CXX='$(CXX)' CXXFLAGS='$(CXXFLAGS)' CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' $(PYTHON) $(top_srcdir)/contrib/devtools/test-symbol-check.py TestSymbolChecks.test_ELF
337-
endif

ci/dash/build_src.sh

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,3 @@ fi
5757
if [ "${RUN_TIDY}" = "true" ] && [ "${GITHUB_ACTIONS}" != "true" ]; then
5858
"${BASE_ROOT_DIR}/ci/dash/lint-tidy.sh"
5959
fi
60-
61-
if [ "$RUN_SECURITY_TESTS" = "true" ]; then
62-
make test-security-check
63-
fi

ci/test/00_setup_env.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export USE_BUSY_BOX=${USE_BUSY_BOX:-false}
3939
export RUN_UNIT_TESTS=${RUN_UNIT_TESTS:-true}
4040
export RUN_FUNCTIONAL_TESTS=${RUN_FUNCTIONAL_TESTS:-true}
4141
export RUN_TIDY=${RUN_TIDY:-false}
42-
export RUN_SECURITY_TESTS=${RUN_SECURITY_TESTS:-false}
4342
# By how much to scale the test_runner timeouts (option --timeout-factor).
4443
# This is needed because some ci machines have slow CPU or disk, so sanitizers
4544
# might be slow or a reindex might be waiting on disk IO.

ci/test/00_setup_env_mac_native_x86_64.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,3 @@ export CI_OS_NAME="macos"
1515
export NO_DEPENDS=1
1616
export OSX_SDK=""
1717
export CCACHE_MAXSIZE=300M
18-
19-
export RUN_SECURITY_TESTS="true"

ci/test/00_setup_env_win64.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export HOST=x86_64-w64-mingw32
1111
export DPKG_ADD_ARCH="i386"
1212
export PACKAGES="python3 nsis g++-mingw-w64-x86-64-posix wine-binfmt wine64 wine32 file"
1313
export RUN_FUNCTIONAL_TESTS=false
14-
export RUN_SECURITY_TESTS="false"
1514
export GOAL="deploy"
1615
# Prior to 11.0.0, the mingw-w64 headers were missing noreturn attributes, causing warnings when
1716
# cross-compiling for Windows. https://sourceforge.net/p/mingw-w64/bugs/306/

configure.ac

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ case $host in
815815
AC_MSG_ERROR([windres not found])
816816
fi
817817

818-
CORE_CPPFLAGS="$CORE_CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0601 -D_WIN32_IE=0x0501 -DWIN32_LEAN_AND_MEAN"
818+
CORE_CPPFLAGS="$CORE_CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0A00 -D_WIN32_IE=0x0A00 -DWIN32_LEAN_AND_MEAN"
819819
dnl Prevent the definition of min/max macros.
820820
dnl We always want to use the standard library.
821821
CORE_CPPFLAGS="$CORE_CPPFLAGS -DNOMINMAX"
@@ -828,8 +828,10 @@ case $host in
828828
archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
829829
postdeps_CXX=
830830

831-
dnl We require Windows 7 (NT 6.1) or later
832-
AX_CHECK_LINK_FLAG([-Wl,--major-subsystem-version -Wl,6 -Wl,--minor-subsystem-version -Wl,1], [CORE_LDFLAGS="$CORE_LDFLAGS -Wl,--major-subsystem-version -Wl,6 -Wl,--minor-subsystem-version -Wl,1"], [], [$LDFLAG_WERROR])
831+
dnl We support Windows 10+, however it's not possible to set these values accordingly,
832+
dnl due to a bug in mingw-w64. See https://sourceforge.net/p/mingw-w64/bugs/968/.
833+
dnl As a best effort, target Windows 8.
834+
AX_CHECK_LINK_FLAG([-Wl,--major-subsystem-version -Wl,6 -Wl,--minor-subsystem-version -Wl,2], [CORE_LDFLAGS="$CORE_LDFLAGS -Wl,--major-subsystem-version -Wl,6 -Wl,--minor-subsystem-version -Wl,2"], [], [$LDFLAG_WERROR])
833835

834836
dnl Avoid the use of aligned vector instructions when building for Windows.
835837
dnl See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412.
@@ -1073,8 +1075,7 @@ if test "$use_hardening" != "no"; then
10731075

10741076
case $host in
10751077
*mingw*)
1076-
dnl stack-clash-protection doesn't compile with GCC 10 and earlier.
1077-
dnl In any case, it is a no-op for Windows.
1078+
dnl stack-clash-protection is a no-op for Windows.
10781079
dnl See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90458 for more details.
10791080
;;
10801081
*)
@@ -2054,6 +2055,8 @@ AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([doc/Doxyfile])])
20542055
AC_CONFIG_LINKS([contrib/filter-lcov.py:contrib/filter-lcov.py])
20552056
AC_CONFIG_LINKS([src/.bear-tidy-config:src/.bear-tidy-config])
20562057
AC_CONFIG_LINKS([src/.clang-tidy:src/.clang-tidy])
2058+
AC_CONFIG_LINKS([src/ipc/.clang-tidy:src/ipc/.clang-tidy])
2059+
AC_CONFIG_LINKS([src/test/.clang-tidy:src/test/.clang-tidy])
20572060
AC_CONFIG_LINKS([test/functional/test_runner.py:test/functional/test_runner.py])
20582061
AC_CONFIG_LINKS([test/fuzz/test_runner.py:test/fuzz/test_runner.py])
20592062
AC_CONFIG_LINKS([test/util/test_runner.py:test/util/test_runner.py])

contrib/devtools/README.md

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -171,35 +171,6 @@ optimize-pngs.py
171171
A script to optimize png files in the dash
172172
repository (requires pngcrush).
173173

174-
security-check.py and test-security-check.py
175-
============================================
176-
177-
Perform basic security checks on a series of executables.
178-
179-
symbol-check.py
180-
===============
181-
182-
A script to check that release executables only contain
183-
certain symbols and are only linked against allowed libraries.
184-
185-
For Linux this means checking for allowed gcc, glibc and libstdc++ version symbols.
186-
This makes sure they are still compatible with the minimum supported distribution versions.
187-
188-
For macOS and Windows we check that the executables are only linked against libraries we allow.
189-
190-
Example usage:
191-
192-
find ../path/to/executables -type f -executable | xargs python3 contrib/devtools/symbol-check.py
193-
194-
If no errors occur the return value will be 0 and the output will be empty.
195-
196-
If there are any errors the return value will be 1 and output like this will be printed:
197-
198-
.../64/test_dash: symbol memcpy from unsupported version GLIBC_2.14
199-
.../64/test_dash: symbol __fdelt_chk from unsupported version GLIBC_2.15
200-
.../64/test_dash: symbol std::out_of_range::~out_of_range() from unsupported version GLIBCXX_3.4.15
201-
.../64/test_dash: symbol _ZNSt8__detail15_List_nod from unsupported version GLIBCXX_3.4.15
202-
203174
update-translations.py
204175
======================
205176

contrib/devtools/test-security-check.py

Lines changed: 0 additions & 149 deletions
This file was deleted.

0 commit comments

Comments
 (0)