-
Notifications
You must be signed in to change notification settings - Fork 1.2k
backport: Merge bitcoin#28725, 28771, 28814, 28546, 28076, 28741, 28727, 22764 #7280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from all commits
12e6567
7e27914
486499a
b40b3dd
d3afdef
1ba1f39
cca92dc
e1a8cdd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -33,6 +33,17 @@ if [ -z "${SKIP_PYTHON_INSTALL}" ]; then | |
| python3 --version | ||
| fi | ||
|
|
||
| export LINT_RUNNER_PATH="/lint_test_runner" | ||
| if [ ! -d "${LINT_RUNNER_PATH}" ]; then | ||
| ${CI_RETRY_EXE} apt-get install -y cargo | ||
| ( | ||
| cd ./test/lint/test_runner || exit 1 | ||
| cargo build | ||
| mkdir -p "${LINT_RUNNER_PATH}" | ||
| mv target/debug/test_runner "${LINT_RUNNER_PATH}" | ||
| ) | ||
|
Comment on lines
+37
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Check for the executable, not just the directory. Line 37 only checks Suggested fix export LINT_RUNNER_PATH="/lint_test_runner"
-if [ ! -d "${LINT_RUNNER_PATH}" ]; then
+if [ ! -x "${LINT_RUNNER_PATH}/test_runner" ]; then
${CI_RETRY_EXE} apt-get install -y cargo
(
cd ./test/lint/test_runner || exit 1
cargo build
mkdir -p "${LINT_RUNNER_PATH}"
- mv target/debug/test_runner "${LINT_RUNNER_PATH}"
+ mv target/debug/test_runner "${LINT_RUNNER_PATH}/test_runner"
)
fi🤖 Prompt for AI Agents |
||
| fi | ||
|
|
||
| # NOTE: BUMP ALSO contrib/containers/ci/ci-slim.Dockerfile | ||
| ${CI_RETRY_EXE} pip3 install codespell==2.2.1 | ||
| ${CI_RETRY_EXE} pip3 install flake8==5.0.4 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,3 +16,4 @@ export RUN_FUNCTIONAL_TESTS=false | |
| export RUN_FUZZ_TESTS=true | ||
| export GOAL="install" | ||
| export BITCOIN_CONFIG="--enable-zmq --enable-fuzz --with-sanitizers=fuzzer,address,undefined,integer CC='clang-19 -ftrivial-auto-var-init=pattern' CXX='clang++-19 -ftrivial-auto-var-init=pattern'" | ||
| export LLVM_SYMBOLIZER_PATH="/usr/bin/llvm-symbolizer-17" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
# Inspect compiler and symbolizer pins in the changed CI setup script.
rg -n 'BITCOIN_CONFIG|LLVM_SYMBOLIZER_PATH|clang-[0-9]+|llvm-symbolizer-[0-9]+' ci/test/00_setup_env_native_fuzz.sh -C1
# Extract and compare major versions (read-only check).
python - <<'PY'
import re
from pathlib import Path
p = Path("ci/test/00_setup_env_native_fuzz.sh").read_text()
clang = re.search(r"clang-(\d+)", p)
symbolizer = re.search(r"llvm-symbolizer-(\d+)", p)
print("clang_major =", clang.group(1) if clang else "not found")
print("symbolizer_major =", symbolizer.group(1) if symbolizer else "not found")
if clang and symbolizer and clang.group(1) != symbolizer.group(1):
print("RESULT: version mismatch detected (needs explicit justification).")
else:
print("RESULT: no major-version mismatch detected in this file.")
PYRepository: dashpay/dash Length of output: 446 Address LLVM version mismatch and verify CI-scope approval. Line 19 pins 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,10 +8,9 @@ | |
| import shutil | ||
| import sys | ||
| import os | ||
| from typing import List | ||
|
|
||
|
|
||
| def determine_wellknown_cmd(envvar, progname) -> List[str]: | ||
| def determine_wellknown_cmd(envvar, progname) -> list[str]: | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Contrib-path modification needs explicit scope approval. Line 13 changes As per coding guidelines, "Do not make changes to build system files (guix-build*), release artifacts, or avoid changes to .github, depends, ci, contrib, and doc directories unless specifically prompted". 🤖 Prompt for AI Agents |
||
| maybe_env = os.getenv(envvar) | ||
| maybe_which = shutil.which(progname) | ||
| if maybe_env: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -11,7 +11,7 @@ | |
| from io import BytesIO | ||
| import json | ||
| from pathlib import Path | ||
| from typing import Any, List, Optional | ||
| from typing import Any, Optional | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Description: Check Python version requirements across the project
# Check for python_requires in setup files
fd -e py -e cfg -e toml -e txt 'setup|pyproject|requirements|README' --exec rg -n 'python_requires|Python [0-9]|python.*3\.[0-9]+' {}
# Check shebang lines for version hints
rg -n '^#!/usr/bin/env python3\.[0-9]+' --type py
# Check for other uses of built-in generics (list[], dict[])
rg -n 'def.*:\s*(list|dict)\[' --type py | head -20Repository: dashpay/dash Length of output: 814 🌐 Web query:
💡 Result: PEP 585 introduces support for using built-in collection types like list, dict, tuple, set, frozenset, and type as generics directly in type hints in Python 3.9, without needing to import equivalents from the typing module (e.g., list[str] instead of typing.List[str]). This uses class_getitem for parameterization, available at runtime. Importing the typing versions is deprecated for Python 3.9+, with removal planned after Python 3.9's end-of-life in October 2025. Other collections like collections.deque and collections.defaultdict also gain generic support. Type checkers must recognize these, and with from future import annotations (since 3.7), this works in annotations earlier. Example: def greet_all(names: list[str]) -> None: ... Citations:
Remove built-in generic syntax or add future annotations import to maintain Python 3.7+ compatibility. The changes use PEP 585 syntax ( Additionally, changes to Also applies to: 95-95, 192-192 🤖 Prompt for AI Agents |
||
|
|
||
| sys.path.append(os.path.join(os.path.dirname(__file__), '../../test/functional')) | ||
|
|
||
|
|
@@ -92,7 +92,7 @@ def to_jsonable(obj: Any) -> Any: | |
| return obj | ||
|
|
||
|
|
||
| def process_file(path: str, messages: List[Any], recv: bool, progress_bar: Optional[ProgressBar]) -> None: | ||
| def process_file(path: str, messages: list[Any], recv: bool, progress_bar: Optional[ProgressBar]) -> None: | ||
| with open(path, 'rb') as f_in: | ||
| if progress_bar: | ||
| bytes_read = 0 | ||
|
|
@@ -189,7 +189,7 @@ def main(): | |
| output = Path.cwd() / Path(args.output) if args.output else False | ||
| use_progress_bar = (not args.no_progress_bar) and sys.stdout.isatty() | ||
|
|
||
| messages = [] # type: List[Any] | ||
| messages = [] # type: list[Any] | ||
| if use_progress_bar: | ||
| total_size = sum(capture.stat().st_size for capture in capturepaths) | ||
| progress_bar = ProgressBar(total_size) | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -488,11 +488,14 @@ SECONDARY: $(QT_QM) | |||||
|
|
||||||
| $(srcdir)/qt/dashstrings.cpp: FORCE | ||||||
| @test -n $(XGETTEXT) || echo "xgettext is required for updating translations" | ||||||
| $(AM_V_GEN) cd $(srcdir); XGETTEXT=$(XGETTEXT) COPYRIGHT_HOLDERS="$(COPYRIGHT_HOLDERS)" $(PYTHON) ../share/qt/extract_strings_qt.py $(libbitcoin_node_a_SOURCES) $(libbitcoin_wallet_a_SOURCES) $(libbitcoin_common_a_SOURCES) $(libbitcoin_zmq_a_SOURCES) $(libbitcoin_consensus_a_SOURCES) $(libbitcoin_util_a_SOURCES) | ||||||
| $(AM_V_GEN) cd $(srcdir); XGETTEXT=$(XGETTEXT) COPYRIGHT_HOLDERS="$(COPYRIGHT_HOLDERS)" $(PYTHON) ../share/qt/extract_strings_qt.py \ | ||||||
| $(libbitcoin_node_a_SOURCES) $(libbitcoin_wallet_a_SOURCES) $(libbitcoin_common_a_SOURCES) \ | ||||||
| $(libbitcoin_zmq_a_SOURCES) $(libbitcoin_consensus_a_SOURCES) $(libbitcoin_util_a_SOURCES) \ | ||||||
| $(BITCOIN_QT_BASE_CPP) $(BITCOIN_QT_WINDOWS_CPP) $(BITCOIN_QT_WALLET_CPP) $(BITCOIN_QT_H) $(BITCOIN_MM) | ||||||
|
|
||||||
| # The resulted dash_en.xlf source file should follow Transifex requirements. | ||||||
| # See: https://docs.transifex.com/formats/xliff#how-to-distinguish-between-a-source-file-and-a-translation-file | ||||||
| translate: $(srcdir)/qt/dashstrings.cpp $(QT_FORMS_UI) $(QT_FORMS_UI) $(BITCOIN_QT_BASE_CPP) qt/bitcoin.cpp $(BITCOIN_QT_WINDOWS_CPP) $(BITCOIN_QT_WALLET_CPP) $(BITCOIN_QT_H) $(BITCOIN_MM) | ||||||
| translate: $(srcdir)/qt/dashstrings.cpp $(QT_FORMS_UI) $(QT_FORMS_UI) $(BITCOIN_QT_BASE_CPP) $(BITCOIN_QT_WINDOWS_CPP) $(BITCOIN_QT_WALLET_CPP) $(BITCOIN_QT_H) $(BITCOIN_MM) | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Duplicate
🔧 Proposed fix-translate: $(srcdir)/qt/dashstrings.cpp $(QT_FORMS_UI) $(QT_FORMS_UI) $(BITCOIN_QT_BASE_CPP) $(BITCOIN_QT_WINDOWS_CPP) $(BITCOIN_QT_WALLET_CPP) $(BITCOIN_QT_H) $(BITCOIN_MM)
+translate: $(srcdir)/qt/dashstrings.cpp $(QT_FORMS_UI) $(BITCOIN_QT_BASE_CPP) $(BITCOIN_QT_WINDOWS_CPP) $(BITCOIN_QT_WALLET_CPP) $(BITCOIN_QT_H) $(BITCOIN_MM)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| @test -n $(LUPDATE) || echo "lupdate is required for updating translations" | ||||||
| $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(LUPDATE) -no-obsolete -I $(srcdir) -locations relative $^ -ts $(srcdir)/qt/locale/dash_en.ts | ||||||
| @test -n $(LCONVERT) || echo "lconvert is required for updating translations" | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This
cdruns from/install.shduring the lint image build. I checkedci/lint/Dockerfile: it builds from./ci/lint, copies only04_install.shanddocker-entrypoint.sh, and invokes/install.shbefore the repository is mounted as/bitcoin, so./test/lint/test_runnerdoes not exist and the documenteddocker build -t bitcoin-linter .flow fails.Useful? React with 👍 / 👎.