-
Notifications
You must be signed in to change notification settings - Fork 1.2k
backport: Merge bitcoin#28831, 29657, 29189, 30633, 27905, 28093, 30026, 27780, 28789 #7378
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
2e3f13b
0ed18ca
fddc7fc
77a16f4
4bdcbcd
a136b27
3fe418b
06ef315
8bf7f8d
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 |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| dashconsensus | ||
| ======================== | ||
|
|
||
| This library is deprecated and will be removed for v28. | ||
|
|
||
| It has existed for nearly 10 years with very little known uptake or impact. It | ||
| has become a maintenance burden. | ||
|
|
||
| The underlying functionality does not change between versions, so any users of | ||
| the library can continue to use the final release indefinitely, with the | ||
| understanding that it will not receive future consensus updates. | ||
|
|
||
| In the future, a kernel library will provide a much more useful API that is | ||
| aware of the UTXO set, and therefore be able to fully validate transactions and | ||
| blocks. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -54,12 +54,6 @@ cat_logs_snippet: &CAT_LOGS | |
| cat_ci_env_script: | ||
| - env | ||
|
|
||
| merge_base_script_snippet: &MERGE_BASE | ||
| merge_base_script: | ||
| - if [ "$CIRRUS_PR" = "" ]; then exit 0; fi | ||
| - git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge" | ||
| - git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts | ||
|
|
||
| linux_container_snippet: &LINUX_CONTAINER | ||
| container: | ||
| dockerfile: ci/linux-debian.Dockerfile | ||
|
|
@@ -68,12 +62,12 @@ linux_container_snippet: &LINUX_CONTAINER | |
| # Gives us more CPUs for free if they're available. | ||
| greedy: true | ||
| # More than enough for our scripts. | ||
| memory: 1G | ||
| memory: 2G | ||
|
|
||
| task: | ||
| name: "x86_64: Linux (Debian stable)" | ||
| << : *LINUX_CONTAINER | ||
| matrix: &ENV_MATRIX | ||
| matrix: | ||
| - env: {WIDEMUL: int64, RECOVERY: yes} | ||
| - env: {WIDEMUL: int64, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes} | ||
| - env: {WIDEMUL: int128} | ||
|
|
@@ -86,14 +80,18 @@ task: | |
| - env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETESTS: no, BENCH: no} | ||
| - env: {CPPFLAGS: -DDETERMINISTIC} | ||
| - env: {CFLAGS: -O0, CTIMETESTS: no} | ||
| - env: {CFLAGS: -O1, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes} | ||
| - env: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } | ||
| - env: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 } | ||
| matrix: | ||
| - env: | ||
| CC: gcc | ||
| - env: | ||
| CC: clang | ||
| << : *MERGE_BASE | ||
| - env: | ||
| CC: gcc-snapshot | ||
| - env: | ||
| CC: clang-snapshot | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -111,7 +109,6 @@ task: | |
| CC: i686-linux-gnu-gcc | ||
| - env: | ||
| CC: clang --target=i686-pc-linux-gnu -isystem /usr/i686-linux-gnu/include | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -125,20 +122,22 @@ task: | |
| HOMEBREW_NO_INSTALL_CLEANUP: 1 | ||
| # Cirrus gives us a fixed number of 4 virtual CPUs. Not that we even have that many jobs at the moment... | ||
| MAKEFLAGS: -j5 | ||
| matrix: | ||
| << : *ENV_MATRIX | ||
| env: | ||
| ASM: no | ||
| WITH_VALGRIND: no | ||
| CTIMETESTS: no | ||
| CC: clang | ||
|
Comment on lines
125
to
+129
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. 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
file="src/secp256k1/.cirrus.yml"
# Show the relevant range with line numbers.
sed -n '105,140p' "$file" | cat -n
# Also inspect the full task block around the macOS job for structure.
python3 - <<'PY'
from pathlib import Path
p = Path("src/secp256k1/.cirrus.yml")
lines = p.read_text().splitlines()
for i, line in enumerate(lines, 1):
if 110 <= i <= 135:
print(f"{i:4}: {line}")
PYRepository: dashpay/dash Length of output: 2870 🌐 Web query:
💡 Result: In Cirrus CI, the behavior of environment variables defined within an env block follows standard YAML merging rules and Cirrus CI-specific hierarchy rules [1]. 1. Duplicate Keys in YAML: When you define duplicate keys within the same YAML env block, standard YAML parsers typically follow the "last key wins" behavior. The last specified value for a given key will overwrite any preceding values for that same key within that specific block. 2. Merging Hierarchy: Cirrus CI merges environment variables defined at different levels of the configuration [1]. Specifically, variables defined at the root level of.cirrus.yml are merged with those defined at the task level [1]. If a key exists in both the root env block and the task-level env block, the task-level variable takes precedence and overrides the root-level value [1]. 3. Programming Tasks (Starlark): If you are using Starlark (.cirrus.star) to define your CI configuration, you are essentially constructing a dictionary or a list of tasks [2][3]. When returning these structures, the final environment is typically computed by merging dictionaries [2]. In these programmatic contexts, standard programming language rules for dictionary updates apply (i.e., subsequent updates overwrite existing keys). If you are encountering issues with environment variables not persisting as expected between script instructions, note that Cirrus CI does not automatically persist changes made to environment variables (like export VAR=value) between separate script steps, as each instruction may run in a isolated or independent context depending on the executor design [4]. To pass values between steps, you must typically write them to a file or use the provided CI mechanisms [1][4]. Citations:
Merge the macOS task’s 🧰 Tools🪛 YAMLlint (1.37.1)[error] 125-125: duplication of key "env" in mapping (key-duplicates) 🤖 Prompt for AI Agents |
||
| matrix: | ||
| - env: | ||
| CC: gcc | ||
| - env: | ||
| CC: clang | ||
| - env: {WIDEMUL: int64, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes} | ||
| - env: {WIDEMUL: int64, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes, CC: gcc} | ||
| - env: {WIDEMUL: int128_struct, ECMULTGENPRECISION: 2, ECMULTWINDOW: 4} | ||
| - env: {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes} | ||
| - env: {WIDEMUL: int128, RECOVERY: yes, SCHNORRSIG: yes} | ||
| - env: {WIDEMUL: int128, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes, CC: gcc} | ||
| - env: {WIDEMUL: int128, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes, CPPFLAGS: -DVERIFY} | ||
| - env: {BUILD: distcheck} | ||
| brew_script: | ||
| - brew install automake libtool gcc | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -157,7 +156,6 @@ task: | |
| SCHNORRSIG: yes | ||
| ELLSWIFT: yes | ||
| CTIMETESTS: no | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| # https://sourceware.org/bugzilla/show_bug.cgi?id=27008 | ||
| - rm /etc/ld.so.cache | ||
|
|
@@ -180,7 +178,6 @@ task: | |
| matrix: | ||
| - env: {} | ||
| - env: {EXPERIMENTAL: yes, ASM: arm32} | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -198,7 +195,6 @@ task: | |
| SCHNORRSIG: yes | ||
| ELLSWIFT: yes | ||
| CTIMETESTS: no | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -216,7 +212,6 @@ task: | |
| SCHNORRSIG: yes | ||
| ELLSWIFT: yes | ||
| CTIMETESTS: no | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -237,7 +232,6 @@ task: | |
| - name: "i686 (mingw32-w64): Windows (Debian stable, Wine)" | ||
| env: | ||
| HOST: i686-w64-mingw32 | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -280,7 +274,6 @@ task: | |
| CC: /opt/msvc/bin/x86/cl | ||
| AR: /opt/msvc/bin/x86/lib | ||
| NM: /opt/msvc/bin/x86/dumpbin -symbols -headers | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -325,7 +318,6 @@ task: | |
| - env: | ||
| HOST: i686-linux-gnu | ||
| CC: i686-linux-gnu-gcc | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -352,7 +344,6 @@ task: | |
| ECMULTGENPRECISION: 2 | ||
| ECMULTWINDOW: 2 | ||
| CFLAGS: "-fsanitize=memory -g -O3" | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -369,7 +360,6 @@ task: | |
| RECOVERY: yes | ||
| SCHNORRSIG: yes | ||
| ELLSWIFT: yes | ||
| << : *MERGE_BASE | ||
| test_script: | ||
| - ./ci/cirrus.sh | ||
| << : *CAT_LOGS | ||
|
|
@@ -401,11 +391,17 @@ task: | |
| # Ignore MSBuild warning MSB8029. | ||
| # See: https://learn.microsoft.com/en-us/visualstudio/msbuild/errors/msb8029?view=vs-2022 | ||
| IgnoreWarnIntDirInTempDetected: 'true' | ||
| merge_script: | ||
| - PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL pull/$env:CIRRUS_PR/merge; git reset --hard FETCH_HEAD; } | ||
| matrix: | ||
| - env: | ||
| BUILD_SHARED_LIBS: ON | ||
| - env: | ||
| BUILD_SHARED_LIBS: OFF | ||
| git_show_script: | ||
| # Print commit to allow reproducing the job outside of CI. | ||
| - git show --no-patch | ||
| configure_script: | ||
| - '%x64_NATIVE_TOOLS%' | ||
| - cmake -E env CFLAGS="/WX" cmake -G "Visual Studio 17 2022" -A x64 -S . -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON | ||
| - cmake -E env CFLAGS="/WX" cmake -A x64 -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% | ||
| build_script: | ||
| - '%x64_NATIVE_TOOLS%' | ||
| - cmake --build build --config RelWithDebInfo -- -property:UseMultiToolTask=true;CL_MPcount=5 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,7 @@ | ||
| FROM debian:stable | ||
|
|
||
| SHELL ["/bin/bash", "-c"] | ||
|
|
||
| RUN dpkg --add-architecture i386 && \ | ||
| dpkg --add-architecture s390x && \ | ||
| dpkg --add-architecture armhf && \ | ||
|
|
@@ -9,11 +11,11 @@ RUN dpkg --add-architecture i386 && \ | |
| # dkpg-dev: to make pkg-config work in cross-builds | ||
| # llvm: for llvm-symbolizer, which is used by clang's UBSan for symbolized stack traces | ||
| RUN apt-get update && apt-get install --no-install-recommends -y \ | ||
| git ca-certificates \ | ||
| git ca-certificates wget \ | ||
| make automake libtool pkg-config dpkg-dev valgrind qemu-user \ | ||
| gcc clang llvm libc6-dbg \ | ||
| gcc clang llvm libclang-rt-dev libc6-dbg \ | ||
| g++ \ | ||
| gcc-i686-linux-gnu libc6-dev-i386-cross libc6-dbg:i386 libubsan1:i386 libasan6:i386 \ | ||
| gcc-i686-linux-gnu libc6-dev-i386-cross libc6-dbg:i386 libubsan1:i386 libasan8:i386 \ | ||
| gcc-s390x-linux-gnu libc6-dev-s390x-cross libc6-dbg:s390x \ | ||
| gcc-arm-linux-gnueabihf libc6-dev-armhf-cross libc6-dbg:armhf \ | ||
| gcc-aarch64-linux-gnu libc6-dev-arm64-cross libc6-dbg:arm64 \ | ||
|
|
@@ -23,9 +25,44 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ | |
| sagemath | ||
|
|
||
| WORKDIR /root | ||
| # The "wine" package provides a convience wrapper that we need | ||
|
|
||
| # Build and install gcc snapshot | ||
| ARG GCC_SNAPSHOT_MAJOR=14 | ||
|
Comment on lines
+29
to
+30
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. 📐 Maintainability & Code Quality | 🟠 Major 🧩 Analysis chain🏁 Script executed: git ls-files src/secp256k1Repository: dashpay/dash Length of output: 5771 🏁 Script executed: head -n 50 src/secp256k1/ci/linux-debian.DockerfileRepository: dashpay/dash Length of output: 2606 🏁 Script executed: find . -name "*.md" -o -name "CONTRIBUTING*" -o -name "README*" | head -20Repository: dashpay/dash Length of output: 685 Update The - ARG GCC_SNAPSHOT_MAJOR=14
+ ARG GCC_SNAPSHOT_MAJOR=15Updating this ensures the CI environment actually tests against the intended compiler version. 🤖 Prompt for AI Agents |
||
| RUN wget --progress=dot:giga --https-only --recursive --accept '*.tar.xz' --level 1 --no-directories "https://gcc.gnu.org/pub/gcc/snapshots/LATEST-${GCC_SNAPSHOT_MAJOR}" && \ | ||
| wget "https://gcc.gnu.org/pub/gcc/snapshots/LATEST-${GCC_SNAPSHOT_MAJOR}/sha512.sum" && \ | ||
| sha512sum --check --ignore-missing sha512.sum && \ | ||
| # We should have downloaded exactly one tar.xz file | ||
| ls && \ | ||
| [[ $(ls *.tar.xz | wc -l) -eq "1" ]] && \ | ||
| tar xf *.tar.xz && \ | ||
| mkdir gcc-build && cd gcc-build && \ | ||
| apt-get update && apt-get install --no-install-recommends -y libgmp-dev libmpfr-dev libmpc-dev flex && \ | ||
| ../*/configure --prefix=/opt/gcc-snapshot --enable-languages=c --disable-bootstrap --disable-multilib --without-isl && \ | ||
| make -j $(nproc) && \ | ||
| make install && \ | ||
| ln -s /opt/gcc-snapshot/bin/gcc /usr/bin/gcc-snapshot | ||
|
|
||
| # Install clang snapshot | ||
| RUN wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc && \ | ||
| # Add repository for this Debian release | ||
| . /etc/os-release && echo "deb http://apt.llvm.org/${VERSION_CODENAME} llvm-toolchain-${VERSION_CODENAME} main" >> /etc/apt/sources.list && \ | ||
| # Install clang snapshot | ||
| apt-get update && apt-get install --no-install-recommends -y clang && \ | ||
| # Remove just the "clang" symlink again | ||
| apt-get remove -y clang && \ | ||
| # We should have exactly two clang versions now | ||
| ls /usr/bin/clang* && \ | ||
| [[ $(ls /usr/bin/clang-?? | sort | wc -l) -eq "2" ]] && \ | ||
| # Create symlinks for them | ||
| ln -s $(ls /usr/bin/clang-?? | sort | tail -1) /usr/bin/clang-snapshot && \ | ||
| ln -s $(ls /usr/bin/clang-?? | sort | head -1) /usr/bin/clang | ||
|
|
||
| # The "wine" package provides a convenience wrapper that we need | ||
| RUN apt-get update && apt-get install --no-install-recommends -y \ | ||
| git ca-certificates wine64 wine python3-simplejson python3-six msitools winbind procps && \ | ||
| # Workaround for `wine` package failure to employ the Debian alternatives system properly. | ||
| ln -s /usr/lib/wine/wine64 /usr/bin/wine64 && \ | ||
| # Set of tools for using MSVC on Linux. | ||
| git clone https://github.com/mstorsjo/msvc-wine && \ | ||
| mkdir /opt/msvc && \ | ||
| python3 msvc-wine/vsdownload.py --accept-license --dest /opt/msvc Microsoft.VisualStudio.Workload.VCTools && \ | ||
|
|
||
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.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
Merge the Linux matrix entries under a single
matrix:key. The secondmatrix:replaces the first, so the CFLAGS/WIDEMUL combinations stop running and only the compiler variants remain.🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 86-86: duplication of key "matrix" in mapping
(key-duplicates)
🤖 Prompt for AI Agents