diff --git a/.cirrus.yml b/.cirrus.yml index 700692c1ca..d31f0afb53 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,35 +1,80 @@ env: ### cirrus config CIRRUS_CLONE_DEPTH: 1 - PACKAGE_MANAGER_INSTALL: "apt-get update && apt-get install -y" - MAKEJOBS: "-j10" - TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache - CI_FAILFAST_TEST_LEAVE_DANGLING: "1" # Cirrus CI does not care about dangling processes and setting this variable avoids killing the CI script itself on error - CCACHE_MAXSIZE: "200M" - CCACHE_DIR: "/tmp/ccache_dir" - CCACHE_NOHASHDIR: "1" # Debug info might contain a stale path if the build dir changes, but this is fine + ### compiler options + HOST: + WRAPPER_CMD: + # Specific warnings can be disabled with -Wno-error=foo. + # -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual. + WERROR_CFLAGS: -Werror -pedantic-errors + MAKEFLAGS: -j4 + BUILD: check + ### secp256k1 config + ECMULTWINDOW: 15 + ECMULTGENKB: 22 + ASM: no + WIDEMUL: auto + WITH_VALGRIND: yes + EXTRAFLAGS: + ### secp256k1 modules + EXPERIMENTAL: no + ECDH: no + RECOVERY: no + SCHNORRSIG: no + ELLSWIFT: no + ### test options + SECP256K1_TEST_ITERS: + BENCH: yes + SECP256K1_BENCH_ITERS: 2 + CTIMETESTS: yes + # Compile and run the tests + EXAMPLES: yes +# A self-hosted machine(s) can be used via Cirrus CI. It can be configured with +# multiple users to run tasks in parallel. No sudo permission is required. +# # https://cirrus-ci.org/guide/persistent-workers/ # -# It is possible to select a specific persistent worker by label. Refer to the +# Generally, a persistent worker must run Ubuntu 23.04+ or Debian 12+. +# +# The following specific types should exist, with the following requirements: +# - small: For an x86_64 machine, recommended to have 2 CPUs and 8 GB of memory. +# - medium: For an x86_64 machine, recommended to have 4 CPUs and 16 GB of memory. +# - arm64: For an aarch64 machine, recommended to have 2 CPUs and 8 GB of memory. +# +# CI jobs for the latter configuration can be run on x86_64 hardware +# by installing qemu-user-static, which works out of the box with +# podman or docker. Background: https://stackoverflow.com/a/72890225/313633 +# +# The above machine types are matched to each task by their label. Refer to the # Cirrus CI docs for more details. # -# Generally, a persistent worker must run Ubuntu 23.04+ or Debian 12+. -# Specifically, +# When a contributor maintains a fork of the repo, any pull request they make +# to their own fork, or to the main repository, will trigger two CI runs: +# one for the branch push and one for the pull request. +# This can be avoided by setting SKIP_BRANCH_PUSH=true as a custom env variable +# in Cirrus repository settings, accessible from +# https://cirrus-ci.com/github/my-organization/my-repository +# +# On machines that are persisted between CI jobs, RESTART_CI_DOCKER_BEFORE_RUN=1 +# ensures that previous containers and artifacts are cleared before each run. +# This requires installing Podman instead of Docker. +# +# Futhermore: # - apt-get is required due to PACKAGE_MANAGER_INSTALL -# - podman-docker-4.1+ is required due to the use of `podman` when -# RESTART_CI_DOCKER_BEFORE_RUN is set and 4.1+ due to the bugfix in 4.1 +# - podman-docker-4.1+ is required due to the bugfix in 4.1 # (https://github.com/bitcoin/bitcoin/pull/21652#issuecomment-1657098200) -# - The ./ci/ depedencies (with cirrus-cli) should be installed: +# - The ./ci/ dependencies (with cirrus-cli) should be installed. One-liner example +# for a single user setup with sudo permission: # # ``` # apt update && apt install git screen python3 bash podman-docker curl -y && curl -L -o cirrus "https://github.com/cirruslabs/cirrus-cli/releases/latest/download/cirrus-linux-$(dpkg --print-architecture)" && mv cirrus /usr/local/bin/cirrus && chmod +x /usr/local/bin/cirrus # ``` # -# - There are no strict requirements on the hardware, because having less CPUs -# runs the same CI script (maybe slower). To avoid rare and intermittent OOM -# due to short memory usage spikes, it is recommended to add (and persist) -# swap: +# - There are no strict requirements on the hardware. Having fewer CPU threads +# than recommended merely causes the CI script to run slower. +# To avoid rare and intermittent OOM due to short memory usage spikes, +# it is recommended to add (and persist) swap: # # ``` # fallocate -l 16G /swapfile_ci && chmod 600 /swapfile_ci && mkswap /swapfile_ci && swapon /swapfile_ci && ( echo '/swapfile_ci none swap sw 0 0' | tee -a /etc/fstab ) @@ -40,16 +85,13 @@ env: # ``` # RESTART_CI_DOCKER_BEFORE_RUN=1 screen cirrus worker run --labels type=todo_fill_in_type --token todo_fill_in_token # ``` -# -# The following specific types should exist, with the following requirements: -# - small: For an x86_64 machine, recommended to have 2 CPUs and 8 GB of memory. -# - medium: For an x86_64 machine, recommended to have 4 CPUs and 16 GB of memory. -# - noble: For a machine running the Linux kernel shipped with exaclty Ubuntu Noble 24.04. The machine is recommended to have 4 CPUs and 16 GB of memory. -# - arm64: For an aarch64 machine, recommended to have 2 CPUs and 8 GB of memory. # https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks filter_template: &FILTER_TEMPLATE - skip: $CIRRUS_REPO_FULL_NAME == "BGL-core/gui" && $CIRRUS_PR == "" # No need to run on the read-only mirror, unless it is a PR. https://cirrus-ci.org/guide/writing-tasks/#conditional-task-execution + # Allow forks to specify SKIP_BRANCH_PUSH=true and skip CI runs when a branch is pushed, + # but still run CI when a PR is created. + # https://cirrus-ci.org/guide/writing-tasks/#conditional-task-execution + skip: $SKIP_BRANCH_PUSH == "true" && $CIRRUS_PR == "" stateful: false # https://cirrus-ci.org/guide/writing-tasks/#stateful-tasks base_template: &BASE_TEMPLATE @@ -58,43 +100,54 @@ base_template: &BASE_TEMPLATE # Unconditionally install git (used in fingerprint_script). - git --version || bash -c "$PACKAGE_MANAGER_INSTALL git" - 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 - # Also, the merge commit is used to lint COMMIT_RANGE="HEAD~..HEAD" - -main_template: &MAIN_TEMPLATE - timeout_in: 120m # https://cirrus-ci.org/faq/#instance-timed-out - ci_script: - - ./ci/test_run_all.sh + - git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH + - git config --global user.email "ci@ci.ci" + - git config --global user.name "ci" + - git merge FETCH_HEAD # Merge base to detect silent merge conflicts -global_task_template: &GLOBAL_TASK_TEMPLATE - << : *BASE_TEMPLATE - << : *MAIN_TEMPLATE +env_matrix_snippet: &ENV_MATRIX_VALGRIND + - env: + ENABLE_FIELDS: "7,32,58" + - env: + BUILD: distcheck + - env: + EXEC_CMD: valgrind --error-exitcode=42 + TESTRUNS: 1 + BUILD: -compute_credits_template: &CREDITS_TEMPLATE - # https://cirrus-ci.org/pricing/#compute-credits - # Only use credits for pull requests to the main repo - use_compute_credits: $CIRRUS_REPO_FULL_NAME == 'BGL/BGL' && $CIRRUS_PR != "" +env_matrix_snippet: &ENV_MATRIX_SAN_VALGRIND + - env: + ENABLE_FIELDS: "11,64,37" + - env: + BUILD: distcheck + - env: + EXEC_CMD: valgrind --error-exitcode=42 + TESTRUNS: 1 + BUILD: + - env: + CXXFLAGS: "-fsanitize=undefined -fno-omit-frame-pointer" + LDFLAGS: "-fsanitize=undefined -fno-omit-frame-pointer" + UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1" + BENCH: no task: name: 'lint' << : *BASE_TEMPLATE container: - image: debian:bookworm - cpu: 1 - memory: 1G - # For faster CI feedback, immediately schedule the linters - << : *CREDITS_TEMPLATE - test_runner_cache: - folder: "/lint_test_runner" - fingerprint_script: echo $CIRRUS_TASK_NAME $(git rev-parse HEAD:test/lint/test_runner) - python_cache: - folder: "/python_build" - fingerprint_script: cat .python-version /etc/os-release - unshallow_script: - - git fetch --unshallow --no-tags - lint_script: - - ./ci/lint_run_all.sh + dockerfile: ci/linux-debian.Dockerfile + memory: 2G + cpu: 4 + matrix: + << : *ENV_MATRIX_SAN_VALGRIND + matrix: + - env: + CXX: g++ + - env: + CXX: clang++ -gdwarf-4 + << : *MERGE_BASE + test_script: + - ./ci/cirrus.sh + << : *CAT_LOGS task: name: 'tidy' @@ -103,16 +156,54 @@ task: labels: type: medium env: - FILE_ENV: "./ci/test/00_setup_env_native_tidy.sh" + HOST: i686-linux-gnu + matrix: + << : *ENV_MATRIX_VALGRIND + matrix: + - env: + CXX: i686-linux-gnu-g++ + - env: + CXX: clang++ --target=i686-linux-gnu -gdwarf-4 + CXXFLAGS: -g -O2 -isystem /usr/i686-linux-gnu/include -isystem /usr/i686-linux-gnu/include/c++/10/i686-linux-gnu + test_script: + - ./ci/cirrus.sh + << : *CAT_LOGS task: - name: 'ARM, unit tests, no functional tests' - << : *GLOBAL_TASK_TEMPLATE - persistent_worker: - labels: - type: arm64 # Use arm64 worker to sidestep qemu and avoid a slow CI: https://github.com/bitcoin/bitcoin/pull/28087#issuecomment-1649399453 + name: "arm64: macOS Monterey" + macos_instance: + image: ghcr.io/cirruslabs/macos-monterey-base:latest env: - FILE_ENV: "./ci/test/00_setup_env_arm.sh" + # Cirrus gives us a fixed number of 4 virtual CPUs. + MAKEFLAGS: -j5 + matrix: + - env: + CXX: g++-11 + # Homebrew's gcc for arm64 has no libubsan. + matrix: + - env: + ENABLE_FIELDS: 28 + - env: + BUILD: distcheck + - env: + CXX: clang++ + matrix: + - env: + ENABLE_FIELDS: 28 + - env: + BUILD: distcheck + - env: + CXXFLAGS: "-fsanitize=undefined -fno-omit-frame-pointer" + LDFLAGS: "-fsanitize=undefined -fno-omit-frame-pointer" + UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1" + BENCH: no + brew_script: + - brew update + - brew install automake libtool gcc@11 + << : *MERGE_BASE + test_script: + - ./ci/cirrus.sh + << : *CAT_LOGS task: name: 'Win64, unit tests, no gui tests, no functional tests' @@ -121,7 +212,13 @@ task: labels: type: small env: - FILE_ENV: "./ci/test/00_setup_env_win64.sh" + EXEC_CMD: qemu-s390x + HOST: s390x-linux-gnu + BUILD: + << : *MERGE_BASE + test_script: + - ./ci/cirrus.sh + << : *CAT_LOGS task: name: '32-bit CentOS, dash, gui' @@ -160,19 +257,6 @@ task: env: FILE_ENV: "./ci/test/00_setup_env_native_msan.sh" -task: - name: 'ASan + LSan + UBSan + integer, no depends, USDT' - enable_bpfcc_script: - # In the image build step, no external environment variables are available, - # so any settings will need to be written to the settings env file: - - sed -i "s|\${CIRRUS_CI}|true|g" ./ci/test/00_setup_env_native_asan.sh - << : *GLOBAL_TASK_TEMPLATE - persistent_worker: - labels: - type: noble # Must use this specific worker (needed for USDT functional tests) - env: - FILE_ENV: "./ci/test/00_setup_env_native_asan.sh" - task: name: 'fuzzer,address,undefined,integer, no depends' << : *GLOBAL_TASK_TEMPLATE @@ -192,20 +276,13 @@ task: FILE_ENV: "./ci/test/00_setup_env_i686_multiprocess.sh" task: - name: "ARM64: Linux (Debian stable)" + name: 'no wallet, libBGLkernel' + << : *GLOBAL_TASK_TEMPLATE persistent_worker: labels: - type: arm64 + type: small env: - ECDH: yes - RECOVERY: yes - SCHNORRSIG: yes - ELLSWIFT: yes - matrix: - # Currently only gcc-snapshot, the other compilers are tested on GHA with QEMU - - env: { CC: 'gcc-snapshot' } - << : *LINUX_ARM64_CONTAINER - << : *CAT_LOGS + FILE_ENV: "./ci/test/00_setup_env_native_nowallet_libBGLkernel.sh" task: name: 'macOS-cross, gui, no tests' diff --git a/.github/actions/install-homebrew-valgrind/action.yml b/.github/actions/install-homebrew-valgrind/action.yml index 094ff891f7..ce10eb2686 100644 --- a/.github/actions/install-homebrew-valgrind/action.yml +++ b/.github/actions/install-homebrew-valgrind/action.yml @@ -16,7 +16,7 @@ runs: cat valgrind_fingerprint shell: bash - - uses: actions/cache@v3 + - uses: actions/cache@v4 id: cache with: path: ${{ env.CI_HOMEBREW_CELLAR_VALGRIND }} diff --git a/.github/actions/run-in-docker-action/action.yml b/.github/actions/run-in-docker-action/action.yml index dbfaa4fece..74933686a0 100644 --- a/.github/actions/run-in-docker-action/action.yml +++ b/.github/actions/run-in-docker-action/action.yml @@ -36,6 +36,11 @@ runs: load: true cache-from: type=gha + - # Workaround for https://github.com/google/sanitizers/issues/1614 . + # The underlying issue has been fixed in clang 18.1.3. + run: sudo sysctl -w vm.mmap_rnd_bits=28 + shell: bash + - # Tell Docker to pass environment variables in `env` into the container. run: > docker run \ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b326c32905..7d608c9f6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,8 +21,8 @@ env: MAKEFLAGS: '-j4' BUILD: 'check' ### secp256k1 config - ECMULTWINDOW: 'auto' - ECMULTGENPRECISION: 'auto' + ECMULTWINDOW: 15 + ECMULTGENKB: 22 ASM: 'no' WIDEMUL: 'auto' WITH_VALGRIND: 'yes' @@ -44,7 +44,7 @@ env: jobs: test-each-commit: name: 'test each commit' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 if: github.event_name == 'pull_request' && github.event.pull_request.commits != 1 timeout-minutes: 360 # Use maximum time, see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes. Assuming a worst case time of 1 hour per commit, this leads to a --max-count=6 below. env: @@ -77,15 +77,21 @@ jobs: # and the ^ prefix is used to exclude these parents and all their # ancestors from the rev-list output as described in: # https://git-scm.com/docs/git-rev-list - echo "TEST_BASE=$(git rev-list -n$((${{ env.MAX_COUNT }} + 1)) --reverse HEAD ^$(git rev-list -n1 --merges HEAD)^@ | head -1)" >> "$GITHUB_ENV" + MERGE_BASE=$(git rev-list -n1 --merges HEAD) + EXCLUDE_MERGE_BASE_ANCESTORS= + # MERGE_BASE can be empty due to limited fetch-depth + if test -n "$MERGE_BASE"; then + EXCLUDE_MERGE_BASE_ANCESTORS=^${MERGE_BASE}^@ + fi + echo "TEST_BASE=$(git rev-list -n$((${{ env.MAX_COUNT }} + 1)) --reverse HEAD $EXCLUDE_MERGE_BASE_ANCESTORS | head -1)" >> "$GITHUB_ENV" - run: | sudo apt-get update - sudo apt-get install clang-15 ccache build-essential libtool autotools-dev automake pkg-config bsdmainutils python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libminiupnpc-dev libnatpmp-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtwayland5 libqrencode-dev -y + sudo apt-get install clang ccache build-essential libtool autotools-dev automake pkg-config bsdmainutils python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libminiupnpc-dev libnatpmp-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtwayland5 libqrencode-dev -y - name: Compile and run tests run: | # Run tests on commits after the last merge commit and before the PR head commit # Use clang++, because it is a bit faster and uses less memory than g++ - git rebase --exec "echo Running test-one-commit on \$( git log -1 ) && ./autogen.sh && CC=clang-15 CXX=clang++-15 ./configure && make clean && make -j $(nproc) check && ./test/functional/test_runner.py -j $(( $(nproc) * 2 ))" ${{ env.TEST_BASE }} + git rebase --exec "echo Running test-one-commit on \$( git log -1 ) && ./autogen.sh && CC=clang CXX=clang++ ./configure && make clean && make -j $(nproc) check && ./test/functional/test_runner.py -j $(( $(nproc) * 2 ))" ${{ env.TEST_BASE }} macos-native-x86_64: name: 'macOS 13 native, x86_64, no depends, sqlite only, gui' @@ -123,8 +129,8 @@ jobs: - env_vars: { CPPFLAGS: '-DDETERMINISTIC' } - env_vars: { CFLAGS: '-O0', CTIMETESTS: 'no' } - env_vars: { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - - env_vars: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env_vars: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 } + - env_vars: { ECMULTGENKB: 2, ECMULTWINDOW: 2 } + - env_vars: { ECMULTGENKB: 86, ECMULTWINDOW: 4 } cc: - 'gcc' - 'clang' @@ -132,7 +138,9 @@ jobs: - 'clang-snapshot' env: - CC: ${{ matrix.cc }} + DANGER_RUN_CI_ON_HOST: 1 + FILE_ENV: './ci/test/00_setup_env_mac_native.sh' + BASE_ROOT_DIR: ${{ github.workspace }} steps: - name: Checkout @@ -370,17 +378,15 @@ jobs: configuration: - env_vars: { CC: 'clang', ASM: 'auto' } - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' } - - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } + - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 } + - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 } - name: Get tool information run: | - msbuild -version | Out-File -FilePath "$env:GITHUB_WORKSPACE\msbuild_version" - Get-Content -Path "$env:GITHUB_WORKSPACE\msbuild_version" - $env:VCToolsVersion | Out-File -FilePath "$env:GITHUB_WORKSPACE\toolset_version" - Write-Host "VCToolsVersion $(Get-Content -Path "$env:GITHUB_WORKSPACE\toolset_version")" - $env:CI_QT_URL | Out-File -FilePath "$env:GITHUB_WORKSPACE\qt_url" - $env:CI_QT_CONF | Out-File -FilePath "$env:GITHUB_WORKSPACE\qt_conf" + msbuild -version | Tee-Object -FilePath "msbuild_version" + $env:VCToolsVersion | Tee-Object -FilePath "toolset_version" + $env:CI_QT_URL | Out-File -FilePath "qt_url" + $env:CI_QT_CONF | Out-File -FilePath "qt_conf" py -3 --version Write-Host "PowerShell version $($PSVersionTable.PSVersion.ToString())" @@ -420,8 +426,8 @@ jobs: configuration: - env_vars: { CC: 'clang', ASM: 'auto' } - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' } - - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } + - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 } + - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 } env: ECDH: 'yes' @@ -498,15 +504,36 @@ jobs: matrix: configuration: - env_vars: + CTIMETESTS: 'yes' CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -g' - env_vars: - ECMULTGENPRECISION: 2 + ECMULTGENKB: 2 ECMULTWINDOW: 2 + CTIMETESTS: 'yes' CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -g -O3' + - env_vars: + # -fsanitize-memory-param-retval is clang's default, but our build system disables it + # when ctime_tests when enabled. + CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -fsanitize-memory-param-retval -g' + CTIMETESTS: 'no' - - name: Ccache installation cache - id: ccache-installation-cache - uses: actions/cache@v4 + env: + ECDH: 'yes' + RECOVERY: 'yes' + SCHNORRSIG: 'yes' + ELLSWIFT: 'yes' + CC: 'clang' + SECP256K1_TEST_ITERS: 32 + ASM: 'no' + WITH_VALGRIND: 'no' + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: CI script + env: ${{ matrix.configuration.env_vars }} + uses: ./.github/actions/run-in-docker-action with: dockerfile: ./ci/linux-debian.Dockerfile tag: linux-debian-image @@ -559,10 +586,10 @@ jobs: run: env if: ${{ always() }} - macos-native: - name: "x86_64: macOS Monterey" + x86_64-macos-native: + name: "x86_64: macOS Monterey, Valgrind" # See: https://github.com/actions/runner-images#available-images. - runs-on: macos-12 # Use M1 once available https://github.com/github/roadmap/issues/528 + runs-on: macos-12 env: CC: 'clang' @@ -574,7 +601,7 @@ jobs: matrix: env_vars: - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - - { WIDEMUL: 'int128_struct', ECMULTGENPRECISION: 2, ECMULTWINDOW: 4 } + - { WIDEMUL: 'int128_struct', ECMULTGENKB: 2, ECMULTWINDOW: 4 } - { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - { WIDEMUL: 'int128', RECOVERY: 'yes' } - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } @@ -592,10 +619,8 @@ jobs: run: | Set-Location "$env:VCPKG_INSTALLATION_ROOT" Add-Content -Path "triplets\x64-windows-static.cmake" -Value "set(VCPKG_BUILD_TYPE release)" - Add-Content -Path "triplets\x64-windows-static.cmake" -Value "set(VCPKG_PLATFORM_TOOLSET_VERSION $env:VCToolsVersion)" .\vcpkg.exe --vcpkg-root "$env:VCPKG_INSTALLATION_ROOT" integrate install - git rev-parse HEAD | Out-File -FilePath "$env:GITHUB_WORKSPACE\vcpkg_commit" - Get-Content -Path "$env:GITHUB_WORKSPACE\vcpkg_commit" + git rev-parse HEAD | Tee-Object -FilePath "$env:GITHUB_WORKSPACE\vcpkg_commit" - name: vcpkg tools cache uses: actions/cache@v4 @@ -631,6 +656,62 @@ jobs: run: env if: ${{ always() }} + arm64-macos-native: + name: "ARM64: macOS Sonoma" + # See: https://github.com/actions/runner-images#available-images. + runs-on: macos-14 + + env: + CC: 'clang' + HOMEBREW_NO_AUTO_UPDATE: 1 + HOMEBREW_NO_INSTALL_CLEANUP: 1 + WITH_VALGRIND: 'no' + CTIMETESTS: 'no' + + strategy: + fail-fast: false + matrix: + env_vars: + - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } + - { WIDEMUL: 'int128_struct', ECMULTGENPRECISION: 2, ECMULTWINDOW: 4 } + - { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } + - { WIDEMUL: 'int128', RECOVERY: 'yes' } + - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } + - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' } + - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY' } + - BUILD: 'distcheck' + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Homebrew packages + run: | + brew install automake libtool gcc + ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc + + - name: CI script + env: ${{ matrix.env_vars }} + run: ./ci/ci.sh + + - run: cat tests.log || true + if: ${{ always() }} + - run: cat noverify_tests.log || true + if: ${{ always() }} + - run: cat exhaustive_tests.log || true + if: ${{ always() }} + - run: cat ctime_tests.log || true + if: ${{ always() }} + - run: cat bench.log || true + if: ${{ always() }} + - run: cat config.log || true + if: ${{ always() }} + - run: cat test_env.log || true + if: ${{ always() }} + - name: CI env + run: env + if: ${{ always() }} + win64-native: name: ${{ matrix.configuration.job_name }} # See: https://github.com/actions/runner-images#available-images. @@ -786,3 +867,59 @@ jobs: TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }} shell: cmd run: py -3 test\functional\test_runner.py --jobs %NUMBER_OF_PROCESSORS% --ci --quiet --tmpdirprefix=%RUNNER_TEMP% --combinedlogslen=99999999 --timeout-factor=%TEST_RUNNER_TIMEOUT_FACTOR% %TEST_RUNNER_EXTRA% + + - name: Clone fuzz corpus + run: | + git clone --depth=1 https://github.com/bitcoin-core/qa-assets "$env:RUNNER_TEMP\qa-assets" + Set-Location "$env:RUNNER_TEMP\qa-assets" + Write-Host "Using qa-assets repo from commit ..." + git log -1 + + - name: Run fuzz binaries + env: + BITCOINFUZZ: "${{ github.workspace}}\\src\\fuzz.exe" + shell: cmd + run: py -3 test\fuzz\test_runner.py --par %NUMBER_OF_PROCESSORS% --loglevel DEBUG %RUNNER_TEMP%\qa-assets\fuzz_seed_corpus + + asan-lsan-ubsan-integer-no-depends-usdt: + name: 'ASan + LSan + UBSan + integer, no depends, USDT' + runs-on: ubuntu-24.04 # has to match container in ci/test/00_setup_env_native_asan.sh for tracing tools + # No need to run on the read-only mirror, unless it is a PR. + if: github.repository != 'bitcoin-core/gui' || github.event_name == 'pull_request' + timeout-minutes: 120 + env: + FILE_ENV: "./ci/test/00_setup_env_native_asan.sh" + DANGER_CI_ON_HOST_CACHE_FOLDERS: 1 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set Ccache directory + run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV" + + - name: Set base root directory + run: echo "BASE_ROOT_DIR=${RUNNER_TEMP}" >> "$GITHUB_ENV" + + - name: Restore Ccache cache + id: ccache-cache + uses: actions/cache/restore@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: ${{ github.job }}-ccache-${{ github.run_id }} + restore-keys: ${{ github.job }}-ccache- + + - name: Enable bpfcc script + # In the image build step, no external environment variables are available, + # so any settings will need to be written to the settings env file: + run: sed -i "s|\${INSTALL_BCC_TRACING_TOOLS}|true|g" ./ci/test/00_setup_env_native_asan.sh + + - name: CI script + run: ./ci/test_run_all.sh + + - name: Save Ccache cache + uses: actions/cache/save@v4 + if: github.event_name != 'pull_request' && steps.ccache-cache.outputs.cache-hit != 'true' + with: + path: ${{ env.CCACHE_DIR }} + # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache + key: ${{ github.job }}-ccache-${{ github.run_id }} diff --git a/.venv/lib/python3.8/site-packages/pip/__pip-runner__.py b/.venv/lib/python3.8/site-packages/pip/__pip-runner__.py new file mode 100644 index 0000000000..49a148a097 --- /dev/null +++ b/.venv/lib/python3.8/site-packages/pip/__pip-runner__.py @@ -0,0 +1,50 @@ +"""Execute exactly this copy of pip, within a different environment. + +This file is named as it is, to ensure that this module can't be imported via +an import statement. +""" + +# /!\ This version compatibility check section must be Python 2 compatible. /!\ + +import sys + +# Copied from setup.py +PYTHON_REQUIRES = (3, 7) + + +def version_str(version): # type: ignore + return ".".join(str(v) for v in version) + + +if sys.version_info[:2] < PYTHON_REQUIRES: + raise SystemExit( + "This version of pip does not support python {} (requires >={}).".format( + version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES) + ) + ) + +# From here on, we can use Python 3 features, but the syntax must remain +# Python 2 compatible. + +import runpy # noqa: E402 +from importlib.machinery import PathFinder # noqa: E402 +from os.path import dirname # noqa: E402 + +PIP_SOURCES_ROOT = dirname(dirname(__file__)) + + +class PipImportRedirectingFinder: + @classmethod + def find_spec(self, fullname, path=None, target=None): # type: ignore + if fullname != "pip": + return None + + spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target) + assert spec, (PIP_SOURCES_ROOT, fullname) + return spec + + +sys.meta_path.insert(0, PipImportRedirectingFinder()) + +assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module" +runpy.run_module("pip", run_name="__main__", alter_sys=True) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04ac9b7e5a..a2855912fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.5.0] - 2024-05-06 + +#### Added + - New function `secp256k1_ec_pubkey_sort` that sorts public keys using lexicographic (of compressed serialization) order. + +#### Changed + - The implementation of the point multiplication algorithm used for signing and public key generation was changed, resulting in improved performance for those operations. + - The related configure option `--ecmult-gen-precision` was replaced with `--ecmult-gen-kb` (`ECMULT_GEN_KB` for CMake). + - This changes the supported precomputed table sizes for these operations. The new supported sizes are 2 KiB, 22 KiB, or 86 KiB (while the old supported sizes were 32 KiB, 64 KiB, or 512 KiB). + +#### ABI Compatibility +The ABI is backward compatible with versions 0.4.x and 0.3.x. + ## [0.4.1] - 2023-12-21 #### Changed @@ -115,7 +128,8 @@ This version was in fact never released. The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6). Therefore, this version number does not uniquely identify a set of source files. -[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.4.1...HEAD +[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.5.0...HEAD +[0.5.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.4.1...v0.5.0 [0.4.1]: https://github.com/bitcoin-core/secp256k1/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.2...v0.4.0 [0.3.2]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.1...v0.3.2 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5e457913a..2e0b906ff2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,7 +44,7 @@ The Contributor Workflow & Peer Review in libsecp256k1 are similar to Bitcoin Co In addition, libsecp256k1 tries to maintain the following coding conventions: -* No runtime heap allocation (e.g., no `malloc`) unless explicitly requested by the caller (via `secp256k1_context_create` or `secp256k1_scratch_space_create`, for example). Morever, it should be possible to use the library without any heap allocations. +* No runtime heap allocation (e.g., no `malloc`) unless explicitly requested by the caller (via `secp256k1_context_create` or `secp256k1_scratch_space_create`, for example). Moreover, it should be possible to use the library without any heap allocations. * The tests should cover all lines and branches of the library (see [Test coverage](#coverage)). * Operations involving secret data should be tested for being constant time with respect to the secrets (see [src/ctime_tests.c](src/ctime_tests.c)). * Local variables containing secret data should be cleared explicitly to try to delete secrets from memory. @@ -104,4 +104,307 @@ These tests are *exhaustive* since they provide all elements and scalars of the ### Benchmarks -See `src/bench*.c` for examples of benchmarks. +The title of the pull request should be prefixed by the component or area that +the pull request affects. Valid areas as: + + - `consensus` for changes to consensus critical code + - `doc` for changes to the documentation + - `qt` or `gui` for changes to bitcoin-qt + - `log` for changes to log messages + - `mining` for changes to the mining code + - `net` or `p2p` for changes to the peer-to-peer network code + - `refactor` for structural changes that do not change behavior + - `rpc`, `rest` or `zmq` for changes to the RPC, REST or ZMQ APIs + - `contrib` or `cli` for changes to the scripts and tools + - `test`, `qa` or `ci` for changes to the unit tests, QA tests or CI code + - `util` or `lib` for changes to the utils or libraries + - `wallet` for changes to the wallet code + - `build` for changes to the GNU Autotools or MSVC builds + - `guix` for changes to the GUIX reproducible builds + +Examples: + + consensus: Add new opcode for BIP-XXXX OP_CHECKAWESOMESIG + net: Automatically create onion service, listen on Tor + qt: Add feed bump button + log: Fix typo in log message + +The body of the pull request should contain sufficient description of *what* the +patch does, and even more importantly, *why*, with justification and reasoning. +You should include references to any discussions (for example, other issues or +mailing list discussions). + +The description for a new pull request should not contain any `@` mentions. The +PR description will be included in the commit message when the PR is merged and +any users mentioned in the description will be annoyingly notified each time a +fork of Bitcoin Core copies the merge. Instead, make any username mentions in a +subsequent comment to the PR. + +### Translation changes + +Note that translations should not be submitted as pull requests. Please see +[Translation Process](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md) +for more information on helping with translations. + +### Work in Progress Changes and Requests for Comments + +If a pull request is not to be considered for merging (yet), please +prefix the title with [WIP] or use [Tasks Lists](https://docs.github.com/en/github/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#task-lists) +in the body of the pull request to indicate tasks are pending. + +### Address Feedback + +At this stage, one should expect comments and review from other contributors. You +can add more commits to your pull request by committing them locally and pushing +to your fork. + +You are expected to reply to any review comments before your pull request is +merged. You may update the code or reject the feedback if you do not agree with +it, but you should express so in a reply. If there is outstanding feedback and +you are not actively working on it, your pull request may be closed. + +Please refer to the [peer review](#peer-review) section below for more details. + +### Squashing Commits + +If your pull request contains fixup commits (commits that change the same line of code repeatedly) or too fine-grained +commits, you may be asked to [squash](https://git-scm.com/docs/git-rebase#_interactive_mode) your commits +before it will be reviewed. The basic squashing workflow is shown below. + + git checkout your_branch_name + git rebase -i HEAD~n + # n is normally the number of commits in the pull request. + # Set commits (except the one in the first line) from 'pick' to 'squash', save and quit. + # On the next screen, edit/refine commit messages. + # Save and quit. + git push -f # (force push to GitHub) + +Please update the resulting commit message, if needed. It should read as a +coherent message. In most cases, this means not just listing the interim +commits. + +If your change contains a merge commit, the above workflow may not work and you +will need to remove the merge commit first. See the next section for details on +how to rebase. + +Please refrain from creating several pull requests for the same change. +Use the pull request that is already open (or was created earlier) to amend +changes. This preserves the discussion and review that happened earlier for +the respective change set. + +The length of time required for peer review is unpredictable and will vary from +pull request to pull request. + +### Rebasing Changes + +When a pull request conflicts with the target branch, you may be asked to rebase it on top of the current target branch. + + git fetch https://github.com/bitcoin/bitcoin # Fetch the latest upstream commit + git rebase FETCH_HEAD # Rebuild commits on top of the new base + +This project aims to have a clean git history, where code changes are only made in non-merge commits. This simplifies +auditability because merge commits can be assumed to not contain arbitrary code changes. Merge commits should be signed, +and the resulting git tree hash must be deterministic and reproducible. The script in +[/contrib/verify-commits](/contrib/verify-commits) checks that. + +After a rebase, reviewers are encouraged to sign off on the force push. This should be relatively straightforward with +the `git range-diff` tool explained in the [productivity +notes](/doc/productivity.md#diff-the-diffs-with-git-range-diff). To avoid needless review churn, maintainers will +generally merge pull requests that received the most review attention first. + +Pull Request Philosophy +----------------------- + +Patchsets should always be focused. For example, a pull request could add a +feature, fix a bug, or refactor code; but not a mixture. Please also avoid super +pull requests which attempt to do too much, are overly large, or overly complex +as this makes review difficult. + + +### Features + +When adding a new feature, thought must be given to the long term technical debt +and maintenance that feature may require after inclusion. Before proposing a new +feature that will require maintenance, please consider if you are willing to +maintain it (including bug fixing). If features get orphaned with no maintainer +in the future, they may be removed by the Repository Maintainer. + + +### Refactoring + +Refactoring is a necessary part of any software project's evolution. The +following guidelines cover refactoring pull requests for the project. + +There are three categories of refactoring: code-only moves, code style fixes, and +code refactoring. In general, refactoring pull requests should not mix these +three kinds of activities in order to make refactoring pull requests easy to +review and uncontroversial. In all cases, refactoring PRs must not change the +behaviour of code within the pull request (bugs must be preserved as is). + +Project maintainers aim for a quick turnaround on refactoring pull requests, so +where possible keep them short, uncomplex and easy to verify. + +Pull requests that refactor the code should not be made by new contributors. It +requires a certain level of experience to know where the code belongs to and to +understand the full ramification (including rebase effort of open pull requests). + +Trivial pull requests or pull requests that refactor the code with no clear +benefits may be immediately closed by the maintainers to reduce unnecessary +workload on reviewing. + + +"Decision Making" Process +------------------------- + +The following applies to code changes to the Bitcoin Core project (and related +projects such as libsecp256k1), and is not to be confused with overall Bitcoin +Network Protocol consensus changes. + +Whether a pull request is merged into Bitcoin Core rests with the project merge +maintainers. + +Maintainers will take into consideration if a patch is in line with the general +principles of the project; meets the minimum standards for inclusion; and will +judge the general consensus of contributors. + +In general, all pull requests must: + + - Have a clear use case, fix a demonstrable bug or serve the greater good of + the project (for example refactoring for modularisation); + - Be well peer-reviewed; + - Have unit tests, functional tests, and fuzz tests, where appropriate; + - Follow code style guidelines ([C++](doc/developer-notes.md), [functional tests](test/functional/README.md)); + - Not break the existing test suite; + - Where bugs are fixed, where possible, there should be unit tests + demonstrating the bug and also proving the fix. This helps prevent regression. + - Change relevant comments and documentation when behaviour of code changes. + +Patches that change Bitcoin consensus rules are considerably more involved than +normal because they affect the entire ecosystem and so must be preceded by +extensive mailing list discussions and have a numbered BIP. While each case will +be different, one should be prepared to expend more time and effort than for +other kinds of patches because of increased peer review and consensus building +requirements. + + +### Peer Review + +Anyone may participate in peer review which is expressed by comments in the pull +request. Typically reviewers will review the code for obvious errors, as well as +test out the patch set and opine on the technical merits of the patch. Project +maintainers take into account the peer review when determining if there is +consensus to merge a pull request (remember that discussions may have been +spread out over GitHub, mailing list and IRC discussions). + +Code review is a burdensome but important part of the development process, and +as such, certain types of pull requests are rejected. In general, if the +**improvements** do not warrant the **review effort** required, the PR has a +high chance of being rejected. It is up to the PR author to convince the +reviewers that the changes warrant the review effort, and if reviewers are +"Concept NACK'ing" the PR, the author may need to present arguments and/or do +research backing their suggested changes. + +#### Conceptual Review + +A review can be a conceptual review, where the reviewer leaves a comment + * `Concept (N)ACK`, meaning "I do (not) agree with the general goal of this pull + request", + * `Approach (N)ACK`, meaning `Concept ACK`, but "I do (not) agree with the + approach of this change". + +A `NACK` needs to include a rationale why the change is not worthwhile. +NACKs without accompanying reasoning may be disregarded. + +#### Code Review + +After conceptual agreement on the change, code review can be provided. A review +begins with `ACK BRANCH_COMMIT`, where `BRANCH_COMMIT` is the top of the PR +branch, followed by a description of how the reviewer did the review. The +following language is used within pull request comments: + + - "I have tested the code", involving change-specific manual testing in + addition to running the unit, functional, or fuzz tests, and in case it is + not obvious how the manual testing was done, it should be described; + - "I have not tested the code, but I have reviewed it and it looks + OK, I agree it can be merged"; + - A "nit" refers to a trivial, often non-blocking issue. + +Project maintainers reserve the right to weigh the opinions of peer reviewers +using common sense judgement and may also weigh based on merit. Reviewers that +have demonstrated a deeper commitment and understanding of the project over time +or who have clear domain expertise may naturally have more weight, as one would +expect in all walks of life. + +Where a patch set affects consensus-critical code, the bar will be much +higher in terms of discussion and peer review requirements, keeping in mind that +mistakes could be very costly to the wider community. This includes refactoring +of consensus-critical code. + +Where a patch set proposes to change the Bitcoin consensus, it must have been +discussed extensively on the mailing list and IRC, be accompanied by a widely +discussed BIP and have a generally widely perceived technical consensus of being +a worthwhile change based on the judgement of the maintainers. + +### Finding Reviewers + +As most reviewers are themselves developers with their own projects, the review +process can be quite lengthy, and some amount of patience is required. If you find +that you've been waiting for a pull request to be given attention for several +months, there may be a number of reasons for this, some of which you can do something +about: + + - It may be because of a feature freeze due to an upcoming release. During this time, + only bug fixes are taken into consideration. If your pull request is a new feature, + it will not be prioritized until after the release. Wait for the release. + - It may be because the changes you are suggesting do not appeal to people. Rather than + nits and critique, which require effort and means they care enough to spend time on your + contribution, thundering silence is a good sign of widespread (mild) dislike of a given change + (because people don't assume *others* won't actually like the proposal). Don't take + that personally, though! Instead, take another critical look at what you are suggesting + and see if it: changes too much, is too broad, doesn't adhere to the + [developer notes](doc/developer-notes.md), is dangerous or insecure, is messily written, etc. + Identify and address any of the issues you find. Then ask e.g. on IRC if someone could give + their opinion on the concept itself. + - It may be because your code is too complex for all but a few people, and those people + may not have realized your pull request even exists. A great way to find people who + are qualified and care about the code you are touching is the + [Git Blame feature](https://docs.github.com/en/github/managing-files-in-a-repository/managing-files-on-github/tracking-changes-in-a-file). Simply + look up who last modified the code you are changing and see if you can find + them and give them a nudge. Don't be incessant about the nudging, though. + - Finally, if all else fails, ask on IRC or elsewhere for someone to give your pull request + a look. If you think you've been waiting for an unreasonably long time (say, + more than a month) for no particular reason (a few lines changed, etc.), + this is totally fine. Try to return the favor when someone else is asking + for feedback on their code, and the universe balances out. + - Remember that the best thing you can do while waiting is give review to others! + + +Backporting +----------- + +Security and bug fixes can be backported from `master` to release +branches. +Maintainers will do backports in batches and +use the proper `Needs backport (...)` labels +when needed (the original author does not need to worry about it). + +A backport should contain the following metadata in the commit body: + +``` +Github-Pull: # +Rebased-From: +``` + +Have a look at [an example backport PR]( +https://github.com/bitcoin/bitcoin/pull/16189). + +Also see the [backport.py script]( +https://github.com/bitcoin-core/bitcoin-maintainer-tools#backport). + +Copyright +--------- + +By contributing to this repository, you agree to license your work under the +MIT license unless specified otherwise in `contrib/debian/copyright` or at +the top of the file itself. Any work contributed where you are not the original +author must contain its license header with the original author(s) and source. diff --git a/Makefile.am b/Makefile.am index 05c860adf8..5af4dd3bc5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -113,9 +113,6 @@ OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lp $(OSX_APP)/Contents/Resources/BGL.icns $(OSX_APP)/Contents/Info.plist \ $(OSX_APP)/Contents/MacOS/BGL-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings -osx_volname: - echo $(OSX_VOLNAME) >$@ - if BUILD_DARWIN $(OSX_ZIP): $(OSX_APP_BUILT) $(OSX_PACKAGING) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR) -zip @@ -129,7 +126,7 @@ $(OSX_ZIP): deploydir cd $(APP_DIST_DIR) && find . | sort | $(ZIP) -X@ $@ $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/BGL-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING) - INSTALL_NAME_TOOL=$(INSTALL_NAME_TOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR) + OBJDUMP=$(OBJDUMP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR) deploydir: $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/BGL-Qt endif !BUILD_DARWIN @@ -189,7 +186,7 @@ baseline_filtered.info: baseline.info $(LCOV) -a $@ $(LCOV_OPTS) -o $@ fuzz.info: baseline_filtered.info - @TIMEOUT=15 test/fuzz/test_runner.py $(DIR_FUZZ_SEED_CORPUS) -l DEBUG + @test/fuzz/test_runner.py $(DIR_FUZZ_SEED_CORPUS) -l DEBUG $(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src --t fuzz-tests -o $@ $(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src @@ -207,7 +204,7 @@ test_BGL_filtered.info: test_BGL.info $(LCOV) -a $@ $(LCOV_OPTS) -o $@ functional_test.info: test_BGL_filtered.info - @TIMEOUT=15 test/functional/test_runner.py $(EXTENDED_FUNCTIONAL_TESTS) + @test/functional/test_runner.py $(EXTENDED_FUNCTIONAL_TESTS) $(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src --t functional-tests -o $@ $(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src @@ -333,7 +330,7 @@ clean-docs: clean-local: clean-docs rm -rf coverage_percent.txt test_BGL.coverage/ total.coverage/ fuzz.coverage/ test/tmp/ cache/ $(OSX_APP) rm -rf test/functional/__pycache__ test/functional/test_framework/__pycache__ test/cache share/rpcauth/__pycache__ - rm -rf osx_volname dist/ test/lint/test_runner/target/ test/lint/__pycache__ + rm -rf dist/ test/lint/test_runner/target/ test/lint/__pycache__ test-security-check: if TARGET_DARWIN diff --git a/README.md b/README.md index 8853804ec2..1e3d003ae1 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,11 @@ ## About The Project + ![Product Name Screen Shot](https://github.com/BitgesellOfficial/bitgesell/blob/master/share/pixmaps/BGL64.png) + Features: * secp256k1 ECDSA signing/verification and key generation. * Additive and multiplicative tweaking of secret/public keys. @@ -68,13 +70,13 @@ Features: Bitgesell is a fork of Bitcoin with the following changes:
* Block Reward [Burn rate is 90% of tx fees] ```sh - nFees*0.1 + GetBlockSubsidy() + nFees*0.1 + GetBlockSubsidy() ``` * Block Weight [10 times smaller than Bitcoin] ```sh <= 400,000 ``` -* 100% Segwit +* 100% Segwit ```sh Eliminates problems with legacy type of transactions ``` @@ -87,8 +89,8 @@ Features: `Hashing algorithm for blocks is Keccak (sha-3).`

`The master branch is regularly built (see` [doc/build-*.md](https://github.com/BitgesellOfficial/bitgesell/tree/master/doc) `for instructions) and tested, but is not guaranteed to be completely stable.`

[tags](https://github.com/BitgesellOfficial/bitgesell/tags) `are created regularly to indicate new official, stable release versions of BGL Core.`
- - + + ### Built With * General diff --git a/build-aux/m4/BGL_qt.m4 b/build-aux/m4/BGL_qt.m4 index 18583c98e9..d967235e4b 100644 --- a/build-aux/m4/BGL_qt.m4 +++ b/build-aux/m4/BGL_qt.m4 @@ -79,19 +79,10 @@ AC_DEFUN([BGL_QT_INIT],[ AC_ARG_WITH([qtdbus], [AS_HELP_STRING([--with-qtdbus], - [enable DBus support (default is yes if qt is enabled and QtDBus is found, except on Android)])], + [enable DBus support (default is yes if qt is enabled and QtDBus is found)])], [use_dbus=$withval], [use_dbus=auto]) - dnl Android doesn't support D-Bus and certainly doesn't use it for notifications - case $host in - *android*) - if test "x$use_dbus" != xyes; then - use_dbus=no - fi - ;; - esac - AC_SUBST(QT_TRANSLATION_DIR,$qt_translation_path) ]) @@ -131,17 +122,12 @@ AC_DEFUN([BGL_QT_CONFIGURE],[ if test -d "$qt_plugin_path/accessible"; then QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible" fi - if test -d "$qt_plugin_path/platforms/android"; then - QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms/android -lqtfreetype -lEGL" - fi fi - AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static]) - if test "x$TARGET_OS" != xandroid; then - _BGL_QT_CHECK_STATIC_PLUGIN([Q_IMPORT_PLUGIN(QMinimalIntegrationPlugin)],[-lqminimal]) - AC_DEFINE(QT_QPA_PLATFORM_MINIMAL, 1, [Define this symbol if the minimal qt platform exists]) - fi - if test "x$TARGET_OS" = xwindows; then + AC_DEFINE([QT_STATICPLUGIN], [1], [Define this symbol if qt plugins are static]) + _BGL_QT_CHECK_STATIC_PLUGIN([QMinimalIntegrationPlugin], [-lqminimal]) + AC_DEFINE([QT_QPA_PLATFORM_MINIMAL], [1], [Define this symbol if the minimal qt platform exists]) + if test "$TARGET_OS" = "windows"; then dnl Linking against wtsapi32 is required. See #17749 and dnl https://bugreports.qt.io/browse/QTBUG-27097. AX_CHECK_LINK_FLAG([-lwtsapi32], [QT_LIBS="$QT_LIBS -lwtsapi32"], [AC_MSG_ERROR([could not link against -lwtsapi32])]) @@ -159,9 +145,6 @@ AC_DEFUN([BGL_QT_CONFIGURE],[ _BGL_QT_CHECK_STATIC_PLUGIN([QCocoaIntegrationPlugin], [-lqcocoa]) _BGL_QT_CHECK_STATIC_PLUGIN([QMacStylePlugin], [-lqmacstyle]) AC_DEFINE([QT_QPA_PLATFORM_COCOA], [1], [Define this symbol if the qt platform is cocoa]) - elif test "$TARGET_OS" = "android"; then - QT_LIBS="-Wl,--export-dynamic,--undefined=JNI_OnLoad -lplugins_platforms_qtforandroid${qt_lib_suffix} -ljnigraphics -landroid -lqtfreetype${qt_lib_suffix} $QT_LIBS" - AC_DEFINE([QT_QPA_PLATFORM_ANDROID], [1], [Define this symbol if the qt platform is android]) fi fi CPPFLAGS=$TEMP_CPPFLAGS @@ -226,7 +209,7 @@ AC_DEFUN([BGL_QT_CONFIGURE],[ BGL_QT_PATH_PROGS([LUPDATE], [lupdate-qt5 lupdate5 lupdate],$qt_bin_path, yes) BGL_QT_PATH_PROGS([LCONVERT], [lconvert-qt5 lconvert5 lconvert], $qt_bin_path, yes) - MOC_DEFS='-DHAVE_CONFIG_H -I$(srcdir)' + MOC_DEFS='-I$(srcdir)' case $host in *darwin*) BGL_QT_CHECK([ @@ -351,8 +334,6 @@ AC_DEFUN([_BGL_QT_CHECK_STATIC_LIBS], [ PKG_CHECK_MODULES([QT_SERVICE], [${qt_lib_prefix}ServiceSupport${qt_lib_suffix}], [QT_LIBS="$QT_SERVICE_LIBS $QT_LIBS"]) elif test "x$TARGET_OS" = xwindows; then PKG_CHECK_MODULES([QT_WINDOWSUIAUTOMATION], [${qt_lib_prefix}WindowsUIAutomationSupport${qt_lib_suffix}], [QT_LIBS="$QT_WINDOWSUIAUTOMATION_LIBS $QT_LIBS"]) - elif test "x$TARGET_OS" = xandroid; then - PKG_CHECK_MODULES([QT_EGL], [${qt_lib_prefix}EglSupport], [QT_LIBS="$QT_EGL_LIBS $QT_LIBS"]) fi ]) diff --git a/build-aux/m4/ax_cxx_compile_stdcxx.m4 b/build-aux/m4/ax_cxx_compile_stdcxx.m4 index 8a2df5627f..51a35054d0 100644 --- a/build-aux/m4/ax_cxx_compile_stdcxx.m4 +++ b/build-aux/m4/ax_cxx_compile_stdcxx.m4 @@ -983,7 +983,7 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_20], [[ #error "This is not a C++ compiler" -#elif __cplusplus < 201709L // Temporary patch on top of upstream to allow g++-10 +#elif __cplusplus < 202002L #error "This is not a C++20 compiler" diff --git a/build-aux/m4/l_atomic.m4 b/build-aux/m4/l_atomic.m4 index aa00168fce..859ddaabbb 100644 --- a/build-aux/m4/l_atomic.m4 +++ b/build-aux/m4/l_atomic.m4 @@ -7,7 +7,7 @@ dnl warranty. # Clang, when building for 32-bit, # and linking against libstdc++, requires linking with # -latomic if using the C++ atomic library. -# Can be tested with: clang++ test.cpp -m32 +# Can be tested with: clang++ -std=c++20 test.cpp -m32 # # Sourced from http://bugs.debian.org/797228 @@ -27,8 +27,11 @@ m4_define([_CHECK_ATOMIC_testbody], [[ auto t1 = t.load(); t.compare_exchange_strong(t1, 3s); - std::atomic a{}; + std::atomic d{}; + d.store(3.14); + auto d1 = d.load(); + std::atomic a{}; int64_t v = 5; int64_t r = a.fetch_add(v); return static_cast(r); diff --git a/build_msvc/BGL-qt/BGL-qt.vcxproj b/build_msvc/BGL-qt/BGL-qt.vcxproj index 9e8ff631d1..c30aaa11a6 100644 --- a/build_msvc/BGL-qt/BGL-qt.vcxproj +++ b/build_msvc/BGL-qt/BGL-qt.vcxproj @@ -61,7 +61,7 @@ ..\..\src; - HAVE_CONFIG_H;_UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) @@ -73,7 +73,7 @@ ..\..\src; - HAVE_CONFIG_H;_UNICODE;UNICODE;%(PreprocessorDefinitions) + _UNICODE;UNICODE;%(PreprocessorDefinitions) diff --git a/build_msvc/BGL_config.h b/build_msvc/BGL_config.h index 0c0c2693a5..7d99fa6af4 100644 --- a/build_msvc/BGL_config.h +++ b/build_msvc/BGL_config.h @@ -6,7 +6,7 @@ #define BGL_BGL_CONFIG_H /* Version Build */ -#define CLIENT_VERSION_BUILD 12 +#define CLIENT_VERSION_BUILD 13 /* Version is release */ #define CLIENT_VERSION_IS_RELEASE true @@ -24,7 +24,7 @@ #define COPYRIGHT_HOLDERS_FINAL "The Bitgesell Core developers" /* Replacement for %s in copyright holders string */ -#define COPYRIGHT_HOLDERS_SUBSTITUTION "BGL Core" +#define COPYRIGHT_HOLDERS_SUBSTITUTION "Bitgesell Core" /* Copyright year */ #define COPYRIGHT_YEAR 2024 @@ -59,13 +59,13 @@ #define PACKAGE_NAME "Bitgesell Core" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "BGL Core 0.1.12" +#define PACKAGE_STRING "BGL Core 0.1.13" /* Define to the home page for this package. */ #define PACKAGE_URL "https://github.com/BitgesellOfficial/bitgesell/releases/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.1.12" +#define PACKAGE_VERSION "0.1.13" /* Define this symbol if the minimal qt platform exists */ #define QT_QPA_PLATFORM_MINIMAL 1 diff --git a/build_msvc/BGLd/BGLd.vcxproj b/build_msvc/BGLd/BGLd.vcxproj index ffd8e9067e..2fb0cef9fe 100644 --- a/build_msvc/BGLd/BGLd.vcxproj +++ b/build_msvc/BGLd/BGLd.vcxproj @@ -80,7 +80,7 @@ + Replace="@ENABLE_FUZZ_BINARY_TRUE@" By=""> Level3 NotUsing - /utf-8 /Zc:__cplusplus /std:c++20 %(AdditionalOptions) + /utf-8 /Zc:preprocessor /Zc:__cplusplus /std:c++20 %(AdditionalOptions) 4018;4244;4267;4715;4805 true - _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;SECP256K1_STATIC;ZMQ_STATIC;NOMINMAX;WIN32;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_WIN32_WINNT=0x0601;_WIN32_IE=0x0501;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions) + _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;SECP256K1_STATIC;ZMQ_STATIC;NOMINMAX;WIN32;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_WIN32_WINNT=0x0601;_WIN32_IE=0x0501;WIN32_LEAN_AND_MEAN;PROVIDE_FUZZ_MAIN_FUNCTION;%(PreprocessorDefinitions) ..\..\src;..\..\src\minisketch\include;..\..\src\univalue\include;..\..\src\secp256k1\include;..\..\src\leveldb\include;..\..\src\leveldb\helpers\memenv;%(AdditionalIncludeDirectories) diff --git a/build_msvc/fuzz/fuzz.vcxproj b/build_msvc/fuzz/fuzz.vcxproj new file mode 100644 index 0000000000..7c72703c93 --- /dev/null +++ b/build_msvc/fuzz/fuzz.vcxproj @@ -0,0 +1,85 @@ + + + + + {AFCEE6C1-89FB-49AB-A694-BA580A59E2D8} + + + Application + $(SolutionDir)$(Platform)\$(Configuration)\ + + + + + $(IntDir)test_fuzz_util_descriptor.obj + + + $(IntDir)test_fuzz_util_mempool.obj + + + $(IntDir)test_fuzz_util_net.obj + + + $(IntDir)wallet_test_fuzz_coincontrol.obj + + + $(IntDir)wallet_test_fuzz_coinselection.obj + + + $(IntDir)wallet_test_fuzz_fees.obj + + + $(IntDir)wallet_test_fuzz_notifications.obj + + + $(IntDir)wallet_test_fuzz_parse_iso8601.obj + + + $(IntDir)wallet_test_fuzz_scriptpubkeyman.obj + + + + + {542007e3-be0d-4b0d-a6b0-aa8813e2558d} + + + {2b384fa8-9ee1-4544-93cb-0d733c25e8ce} + + + {0667528c-d734-4009-adf9-c0d6c4a5a5a6} + + + {7c87e378-df58-482e-aa2f-1bc129bc19ce} + + + {6190199c-6cf4-4dad-bfbd-93fa72a760c1} + + + {460fee33-1fe1-483f-b3bf-931ff8e969a5} + + + {b53a5535-ee9d-4c6f-9a26-f79ee3bc3754} + + + {93b86837-b543-48a5-a89b-7c87abb77df2} + + + {792d487f-f14c-49fc-a9de-3fc150f31c3f} + + + {1e065f03-3566-47d0-8fa9-daa72b084e7d} + + + {5724ba7d-a09a-4ba8-800b-c4c1561b3d69} + + + {bb493552-3b8c-4a8c-bf69-a6e7a51d2ea6} + + + {18430fef-6b61-4c53-b396-718e02850f1b} + + + + + + diff --git a/build_msvc/libBGL_common/libBGL_common.vcxproj.in b/build_msvc/libBGL_common/libBGL_common.vcxproj.in index 482e4333f7..b47d62b295 100644 --- a/build_msvc/libBGL_common/libBGL_common.vcxproj.in +++ b/build_msvc/libBGL_common/libBGL_common.vcxproj.in @@ -8,7 +8,6 @@ StaticLibrary - @SOURCE_FILES@ diff --git a/build_msvc/test_BGL/test_BGL.vcxproj b/build_msvc/test_BGL/test_BGL.vcxproj index c9e303c863..8d6c9f3e5d 100644 --- a/build_msvc/test_BGL/test_BGL.vcxproj +++ b/build_msvc/test_BGL/test_BGL.vcxproj @@ -59,11 +59,6 @@ {18430fef-6b61-4c53-b396-718e02850f1b} - - - 4018;4244;4267;4703;4715;4805 - - There was an error executing the JSON test header generation task. diff --git a/build_msvc/vcpkg.json b/build_msvc/vcpkg.json index 7bce47c11c..1edc322b9c 100644 --- a/build_msvc/vcpkg.json +++ b/build_msvc/vcpkg.json @@ -1,5 +1,5 @@ { - "name": "BGL-core", + "name": "bgl-core", "version-string": "1", "dependencies": [ "berkeleydb", diff --git a/ci/ci.sh b/ci/ci.sh index 9cc715955e..c7d2e9e4ea 100755 --- a/ci/ci.sh +++ b/ci/ci.sh @@ -12,12 +12,13 @@ print_environment() { # There are many ways to print variable names and their content. This one # does not rely on bash. for var in WERROR_CFLAGS MAKEFLAGS BUILD \ - ECMULTWINDOW ECMULTGENPRECISION ASM WIDEMUL WITH_VALGRIND EXTRAFLAGS \ + ECMULTWINDOW ECMULTGENKB ASM WIDEMUL WITH_VALGRIND EXTRAFLAGS \ EXPERIMENTAL ECDH RECOVERY SCHNORRSIG ELLSWIFT \ SECP256K1_TEST_ITERS BENCH SECP256K1_BENCH_ITERS CTIMETESTS\ EXAMPLES \ HOST WRAPPER_CMD \ - CC CFLAGS CPPFLAGS AR NM + CC CFLAGS CPPFLAGS AR NM \ + UBSAN_OPTIONS ASAN_OPTIONS LSAN_OPTIONS do eval "isset=\${$var+x}" if [ -n "$isset" ]; then @@ -73,7 +74,7 @@ esac --enable-experimental="$EXPERIMENTAL" \ --with-test-override-wide-multiply="$WIDEMUL" --with-asm="$ASM" \ --with-ecmult-window="$ECMULTWINDOW" \ - --with-ecmult-gen-precision="$ECMULTGENPRECISION" \ + --with-ecmult-gen-kb="$ECMULTGENKB" \ --enable-module-ecdh="$ECDH" --enable-module-recovery="$RECOVERY" \ --enable-module-ellswift="$ELLSWIFT" \ --enable-module-schnorrsig="$SCHNORRSIG" \ diff --git a/ci/lint/04_install.sh b/ci/lint/04_install.sh index 6b12c53f2a..87e3a8fa9b 100755 --- a/ci/lint/04_install.sh +++ b/ci/lint/04_install.sh @@ -57,3 +57,8 @@ SHELLCHECK_VERSION=v0.8.0 curl -sL "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | \ tar --xz -xf - --directory /tmp/ mv "/tmp/shellcheck-${SHELLCHECK_VERSION}/shellcheck" /usr/bin/ + +MLC_VERSION=v0.16.3 +MLC_BIN=mlc-x86_64-linux +curl -sL "https://github.com/becheran/mlc/releases/download/${MLC_VERSION}/${MLC_BIN}" -o "/usr/bin/mlc" +chmod +x /usr/bin/mlc diff --git a/ci/linux-debian.Dockerfile b/ci/linux-debian.Dockerfile index 5ce715b41b..f12545be0d 100644 --- a/ci/linux-debian.Dockerfile +++ b/ci/linux-debian.Dockerfile @@ -24,56 +24,8 @@ RUN dpkg --add-architecture i386 && \ RUN apt-get update && apt-get install --no-install-recommends -y \ git ca-certificates \ make automake libtool pkg-config dpkg-dev valgrind qemu-user \ - gcc clang llvm libclang-rt-dev libc6-dbg \ - g++ \ - 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-powerpc64le-linux-gnu libc6-dev-ppc64el-cross libc6-dbg:ppc64el \ - gcc-mingw-w64-x86-64-win32 wine64 wine \ - gcc-mingw-w64-i686-win32 wine32 \ - python3 && \ - if ! ( dpkg --print-architecture | grep --quiet "arm64" ) ; then \ - apt-get install --no-install-recommends -y \ - gcc-aarch64-linux-gnu libc6-dev-arm64-cross libc6-dbg:arm64 ;\ - fi && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -# Build and install gcc snapshot -ARG GCC_SNAPSHOT_MAJOR=14 -RUN apt-get update && apt-get install --no-install-recommends -y wget libgmp-dev libmpfr-dev libmpc-dev flex && \ - mkdir gcc && cd gcc && \ - 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 && \ - ../*/configure --prefix=/opt/gcc-snapshot --enable-languages=c --disable-bootstrap --disable-multilib --without-isl && \ - make -j $(nproc) && \ - make install && \ - cd ../.. && rm -rf gcc && \ - ln -s /opt/gcc-snapshot/bin/gcc /usr/bin/gcc-snapshot && \ - apt-get autoremove -y wget libgmp-dev libmpfr-dev libmpc-dev flex && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -# Install clang snapshot, see https://apt.llvm.org/ -RUN \ - # Setup GPG keys of LLVM repository - apt-get update && apt-get install --no-install-recommends -y wget && \ - 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 && \ - apt-get update && \ - # Determine the version number of the LLVM development branch - LLVM_VERSION=$(apt-cache search --names-only '^clang-[0-9]+$' | sort -V | tail -1 | cut -f1 -d" " | cut -f2 -d"-" ) && \ - # Install - apt-get install --no-install-recommends -y "clang-${LLVM_VERSION}" && \ - # Create symlink - ln -s "/usr/bin/clang-${LLVM_VERSION}" /usr/bin/clang-snapshot && \ - # Clean up - apt-get autoremove -y wget && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + gcc g++ clang libclang-rt-dev libc6-dbg \ + gcc-i686-linux-gnu g++-i686-linux-gnu libc6-dev-i386-cross libc6-dbg:i386 \ + g++-s390x-linux-gnu libstdc++6:s390x gcc-s390x-linux-gnu libc6-dev-s390x-cross libc6-dbg:s390x \ + wine wine64 g++-mingw-w64-x86-64 diff --git a/ci/test/00_setup_env_android.sh b/ci/test/00_setup_env_android.sh deleted file mode 100755 index 97a6bd7318..0000000000 --- a/ci/test/00_setup_env_android.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright (c) 2019-present The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -export LC_ALL=C.UTF-8 - -export HOST=aarch64-linux-android -export PACKAGES="unzip openjdk-8-jdk gradle" -export CONTAINER_NAME=ci_android -export CI_IMAGE_NAME_TAG="docker.io/amd64/ubuntu:22.04" - -export RUN_UNIT_TESTS=false -export RUN_FUNCTIONAL_TESTS=false - -export ANDROID_API_LEVEL=28 -export ANDROID_BUILD_TOOLS_VERSION=28.0.3 -export ANDROID_NDK_VERSION=23.2.8568313 -export ANDROID_TOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip -export ANDROID_HOME="${DEPENDS_DIR}/SDKs/android" -export ANDROID_NDK_HOME="${ANDROID_HOME}/ndk/${ANDROID_NDK_VERSION}" -export DEP_OPTS="ANDROID_SDK=${ANDROID_HOME} ANDROID_NDK=${ANDROID_NDK_HOME} ANDROID_API_LEVEL=${ANDROID_API_LEVEL} ANDROID_TOOLCHAIN_BIN=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/" - -export BITCOIN_CONFIG="--disable-tests --enable-gui-tests --disable-bench --disable-fuzz-binary --without-utils --without-libs --without-daemon" diff --git a/ci/test/00_setup_env_arm.sh b/ci/test/00_setup_env_arm.sh index c80036164f..396e782959 100755 --- a/ci/test/00_setup_env_arm.sh +++ b/ci/test/00_setup_env_arm.sh @@ -17,4 +17,4 @@ export RUN_FUNCTIONAL_TESTS=false export GOAL="install" # -Wno-psabi is to disable ABI warnings: "note: parameter passing for argument of type ... changed in GCC 7.1" # This could be removed once the ABI change warning does not show up by default -export BITCOIN_CONFIG="--enable-reduce-exports CXXFLAGS=-Wno-psabi" +export BITCOIN_CONFIG="--enable-reduce-exports CXXFLAGS='-Wno-psabi -Wno-error=maybe-uninitialized'" diff --git a/ci/test/00_setup_env_i686_multiprocess.sh b/ci/test/00_setup_env_i686_multiprocess.sh index 5de5cb2cba..fd26bf26b3 100644 --- a/ci/test/00_setup_env_i686_multiprocess.sh +++ b/ci/test/00_setup_env_i686_multiprocess.sh @@ -14,5 +14,5 @@ export DEP_OPTS="DEBUG=1 MULTIPROCESS=1" export GOAL="install" export TEST_RUNNER_EXTRA="--v2transport" export BGL_CONFIG="--enable-debug CC='clang -m32' CXX='clang++ -m32' \ -CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE'" +CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE' CXXFLAGS='-Wno-error=documentation'" export BGLD=BGL-node # Used in functional tests diff --git a/ci/test/00_setup_env_mac_cross.sh b/ci/test/00_setup_env_mac_cross.sh index 31c4bff6ae..f607c93ae6 100755 --- a/ci/test/00_setup_env_mac_cross.sh +++ b/ci/test/00_setup_env_mac_cross.sh @@ -9,9 +9,9 @@ export LC_ALL=C.UTF-8 export SDK_URL=${SDK_URL:-https://bitcoincore.org/depends-sources/sdks} export CONTAINER_NAME=ci_macos_cross -export CI_IMAGE_NAME_TAG="docker.io/ubuntu:22.04" +export CI_IMAGE_NAME_TAG="docker.io/ubuntu:24.04" export HOST=x86_64-apple-darwin -export PACKAGES="zip" +export PACKAGES="clang lld llvm zip" export XCODE_VERSION=15.0 export XCODE_BUILD_ID=15A240d export RUN_UNIT_TESTS=false diff --git a/ci/test/00_setup_env_native_asan.sh b/ci/test/00_setup_env_native_asan.sh index 313fd44f9e..aca315a617 100755 --- a/ci/test/00_setup_env_native_asan.sh +++ b/ci/test/00_setup_env_native_asan.sh @@ -7,8 +7,10 @@ export LC_ALL=C.UTF-8 export CI_IMAGE_NAME_TAG="docker.io/ubuntu:24.04" -# Only install BCC tracing packages in Cirrus CI. -if [[ "${CIRRUS_CI}" == "true" ]]; then + +# Only install BCC tracing packages in CI. Container has to match the host for BCC to work. +if [[ "${INSTALL_BCC_TRACING_TOOLS}" == "true" ]]; then + # Required for USDT functional tests to run BPFCC_PACKAGE="bpfcc-tools linux-headers-$(uname --kernel-release)" export CI_CONTAINER_CAP="--privileged -v /sys/kernel:/sys/kernel:rw" else @@ -24,3 +26,4 @@ export BGL_CONFIG="--enable-usdt --enable-zmq --with-incompatible-bdb --with-gui CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER' \ --with-sanitizers=address,float-divide-by-zero,integer,undefined \ CC='clang-18 -ftrivial-auto-var-init=pattern' CXX='clang++-18 -ftrivial-auto-var-init=pattern'" +export CCACHE_MAXSIZE=300M diff --git a/ci/test/00_setup_env_native_fuzz_with_msan.sh b/ci/test/00_setup_env_native_fuzz_with_msan.sh index 8250bd520a..070e49c909 100755 --- a/ci/test/00_setup_env_native_fuzz_with_msan.sh +++ b/ci/test/00_setup_env_native_fuzz_with_msan.sh @@ -17,7 +17,8 @@ export PACKAGES="ninja-build" # BDB generates false-positives and will be removed in future export DEP_OPTS="DEBUG=1 NO_BDB=1 NO_QT=1 CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'" export GOAL="install" -export BGL_CONFIG="--enable-fuzz --with-sanitizers=fuzzer,memory --disable-hardening --with-asm=no CFLAGS='${MSAN_FLAGS}' CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'" +# _FORTIFY_SOURCE is not compatible with MSAN. +export BGL_CONFIG="--enable-fuzz --with-sanitizers=fuzzer,memory CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE -U_FORTIFY_SOURCE'" export USE_MEMORY_SANITIZER="true" export RUN_UNIT_TESTS="false" export RUN_FUNCTIONAL_TESTS="false" diff --git a/ci/test/00_setup_env_native_fuzz_with_valgrind.sh b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh index 0a113f5152..0ab90a7503 100644 --- a/ci/test/00_setup_env_native_fuzz_with_valgrind.sh +++ b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh @@ -6,15 +6,14 @@ export LC_ALL=C.UTF-8 -export CI_IMAGE_NAME_TAG="docker.io/debian:bookworm" +export CI_IMAGE_NAME_TAG="docker.io/ubuntu:24.04" export CONTAINER_NAME=ci_native_fuzz_valgrind -export PACKAGES="clang llvm libclang-rt-dev libevent-dev libboost-dev libsqlite3-dev valgrind" +export PACKAGES="clang-16 llvm-16 libclang-rt-16-dev libevent-dev libboost-dev libsqlite3-dev valgrind" export NO_DEPENDS=1 export RUN_UNIT_TESTS=false export RUN_FUNCTIONAL_TESTS=false export RUN_FUZZ_TESTS=true export FUZZ_TESTS_CONFIG="--valgrind" export GOAL="install" -# Temporarily pin dwarf 4, until using Valgrind 3.20 or later -export BGL_CONFIG="--enable-fuzz --with-sanitizers=fuzzer CC=clang CXX=clang++ CFLAGS=-gdwarf-4 CXXFLAGS=-gdwarf-4" +export BGL_CONFIG="--enable-fuzz --with-sanitizers=fuzzer CC=clang-16 CXX=clang++-16" export CCACHE_MAXSIZE=200M diff --git a/ci/test/00_setup_env_native_msan.sh b/ci/test/00_setup_env_native_msan.sh index 8030dc9958..600f16a5a6 100644 --- a/ci/test/00_setup_env_native_msan.sh +++ b/ci/test/00_setup_env_native_msan.sh @@ -17,7 +17,8 @@ export PACKAGES="ninja-build" # BDB generates false-positives and will be removed in future export DEP_OPTS="DEBUG=1 NO_BDB=1 NO_QT=1 CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'" export GOAL="install" -export BGL_CONFIG="--with-sanitizers=memory --disable-hardening --with-asm=no CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'" +# _FORTIFY_SOURCE is not compatible with MSAN. +export BGL_CONFIG="--with-sanitizers=memory CPPFLAGS='-U_FORTIFY_SOURCE'" export USE_MEMORY_SANITIZER="true" export RUN_FUNCTIONAL_TESTS="false" export CCACHE_MAXSIZE=250M diff --git a/ci/test/00_setup_env_native_nowallet_libBGLkernel.sh b/ci/test/00_setup_env_native_nowallet_libBGLkernel.sh index b83d2def09..1eb7e666ce 100644 --- a/ci/test/00_setup_env_native_nowallet_libBGLkernel.sh +++ b/ci/test/00_setup_env_native_nowallet_libBGLkernel.sh @@ -6,10 +6,10 @@ export LC_ALL=C.UTF-8 -export CONTAINER_NAME=ci_native_nowallet_libBGLkernel -export CI_IMAGE_NAME_TAG="docker.io/ubuntu:22.04" -# Use minimum supported python3.9 (or best-effort 3.10) and clang-14, see doc/dependencies.md -export PACKAGES="python3-zmq clang-14 llvm-14 libc++abi-14-dev libc++-14-dev" -export DEP_OPTS="NO_WALLET=1 CC=clang-14 CXX='clang++-14 -stdlib=libc++'" +export CONTAINER_NAME=ci_native_nowallet_libbitcoinkernel +export CI_IMAGE_NAME_TAG="docker.io/debian:bullseye" +# Use minimum supported python3.9 and clang-16, see doc/dependencies.md +export PACKAGES="python3-zmq clang-16 llvm-16 libc++abi-16-dev libc++-16-dev" +export DEP_OPTS="NO_WALLET=1 CC=clang-16 CXX='clang++-16 -stdlib=libc++'" export GOAL="install" export BGL_CONFIG="--enable-reduce-exports --enable-experimental-util-chainstate --with-experimental-kernel-lib --enable-shared" diff --git a/ci/test/00_setup_env_native_tidy.sh b/ci/test/00_setup_env_native_tidy.sh index 4c8658479b..5f422bbdb6 100755 --- a/ci/test/00_setup_env_native_tidy.sh +++ b/ci/test/00_setup_env_native_tidy.sh @@ -16,5 +16,5 @@ export RUN_FUNCTIONAL_TESTS=false export RUN_FUZZ_TESTS=false export RUN_TIDY=true export GOAL="install" -export BITCOIN_CONFIG="CC=clang-${TIDY_LLVM_V} CXX=clang++-${TIDY_LLVM_V} --with-incompatible-bdb --disable-hardening CFLAGS='-O0 -g0' CXXFLAGS='-O0 -g0 -I/usr/lib/llvm-${TIDY_LLVM_V}/lib/clang/${TIDY_LLVM_V}/include'" +export BITCOIN_CONFIG="CC=clang-${TIDY_LLVM_V} CXX=clang++-${TIDY_LLVM_V} --with-incompatible-bdb --disable-hardening CFLAGS='-O0 -g0' CXXFLAGS='-O0 -g0'" export CCACHE_MAXSIZE=200M diff --git a/ci/test/00_setup_env_native_tsan.sh b/ci/test/00_setup_env_native_tsan.sh index 23ab1ae000..3fcaa8c6c6 100755 --- a/ci/test/00_setup_env_native_tsan.sh +++ b/ci/test/00_setup_env_native_tsan.sh @@ -11,4 +11,4 @@ export CI_IMAGE_NAME_TAG="docker.io/ubuntu:24.04" export PACKAGES="clang-18 llvm-18 libclang-rt-18-dev libc++abi-18-dev libc++-18-dev python3-zmq" export DEP_OPTS="CC=clang-18 CXX='clang++-18 -stdlib=libc++'" export GOAL="install" -export BITCOIN_CONFIG="--enable-zmq CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER -DDEBUG_LOCKCONTENTION' CXXFLAGS='-g' --with-sanitizers=thread" +export BITCOIN_CONFIG="--enable-zmq CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER -DDEBUG_LOCKCONTENTION' --with-sanitizers=thread" diff --git a/ci/test/00_setup_env_native_valgrind.sh b/ci/test/00_setup_env_native_valgrind.sh index 13b26434e0..5dbd96ffc1 100755 --- a/ci/test/00_setup_env_native_valgrind.sh +++ b/ci/test/00_setup_env_native_valgrind.sh @@ -6,12 +6,11 @@ export LC_ALL=C.UTF-8 -export CI_IMAGE_NAME_TAG="docker.io/debian:bookworm" +export CI_IMAGE_NAME_TAG="docker.io/ubuntu:24.04" export CONTAINER_NAME=ci_native_valgrind -export PACKAGES="valgrind clang llvm libclang-rt-dev python3-zmq libevent-dev libboost-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libsqlite3-dev" +export PACKAGES="valgrind clang-16 llvm-16 libclang-rt-16-dev python3-zmq libevent-dev libboost-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libsqlite3-dev" export USE_VALGRIND=1 export NO_DEPENDS=1 -export TEST_RUNNER_EXTRA="--exclude feature_init,rpc_bind,feature_bind_extra" # Excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547 +export TEST_RUNNER_EXTRA="--exclude feature_init,rpc_bind,feature_bind_extra" # feature_init excluded for now, see https://github.com/bitcoin/bitcoin/issues/30011 ; bind tests excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547 export GOAL="install" -# Temporarily pin dwarf 4, until using Valgrind 3.20 or later -export BGL_CONFIG="--enable-zmq --with-incompatible-bdb --with-gui=no CC=clang CXX=clang++ CFLAGS=-gdwarf-4 CXXFLAGS=-gdwarf-4" # TODO enable GUI +export BGL_CONFIG="--enable-zmq --with-incompatible-bdb --with-gui=no CC=clang-16 CXX=clang++-16" # TODO enable GUI diff --git a/ci/test/00_setup_env_s390x.sh b/ci/test/00_setup_env_s390x.sh index 8ccdc267f1..c4698a9075 100755 --- a/ci/test/00_setup_env_s390x.sh +++ b/ci/test/00_setup_env_s390x.sh @@ -9,8 +9,8 @@ export LC_ALL=C.UTF-8 export HOST=s390x-linux-gnu export PACKAGES="python3-zmq" export CONTAINER_NAME=ci_s390x -export CI_IMAGE_NAME_TAG="docker.io/s390x/debian:bookworm" -export TEST_RUNNER_EXTRA="--exclude feature_init,rpc_bind,feature_bind_extra" # Excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547 +export CI_IMAGE_NAME_TAG="docker.io/s390x/ubuntu:24.04" +export TEST_RUNNER_EXTRA="--exclude rpc_bind,feature_bind_extra" # Excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547 export RUN_FUNCTIONAL_TESTS=true export GOAL="install" export BGL_CONFIG="--enable-reduce-exports" diff --git a/ci/test/00_setup_env_win64.sh b/ci/test/00_setup_env_win64.sh index 41a2d7ba99..a0108cd147 100644 --- a/ci/test/00_setup_env_win64.sh +++ b/ci/test/00_setup_env_win64.sh @@ -23,4 +23,4 @@ export GOAL="deploy" # Prior to 11.0.0, the mingw-w64 headers were missing noreturn attributes, causing warnings when # cross-compiling for Windows. https://sourceforge.net/p/mingw-w64/bugs/306/ # https://github.com/mingw-w64/mingw-w64/commit/1690994f515910a31b9fb7c7bd3a52d4ba987abe -export BGL_CONFIG="--enable-reduce-exports --disable-gui-tests CXXFLAGS=-Wno-return-type" +export BGL_CONFIG="--enable-reduce-exports --disable-gui-tests CXXFLAGS='-Wno-return-type -Wno-error=maybe-uninitialized -Wno-error=array-bounds'" diff --git a/ci/test/01_base_install.sh b/ci/test/01_base_install.sh index 6f1498963a..f16321ba55 100755 --- a/ci/test/01_base_install.sh +++ b/ci/test/01_base_install.sh @@ -36,7 +36,7 @@ if [ -n "$PIP_PACKAGES" ]; then fi if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then - ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-18.1.1" /msan/llvm-project + ${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-18.1.3" /msan/llvm-project cmake -G Ninja -B /msan/clang_build/ \ -DLLVM_ENABLE_PROJECTS="clang" \ @@ -86,14 +86,4 @@ if [ -n "$XCODE_VERSION" ] && [ ! -d "${DEPENDS_DIR}/SDKs/${OSX_SDK_BASENAME}" ] tar -C "${DEPENDS_DIR}/SDKs" -xf "$OSX_SDK_PATH" fi -if [ -n "$ANDROID_HOME" ] && [ ! -d "$ANDROID_HOME" ]; then - ANDROID_TOOLS_PATH=${DEPENDS_DIR}/sdk-sources/android-tools.zip - if [ ! -f "$ANDROID_TOOLS_PATH" ]; then - ${CI_RETRY_EXE} curl --location --fail "${ANDROID_TOOLS_URL}" -o "$ANDROID_TOOLS_PATH" - fi - mkdir -p "$ANDROID_HOME" - unzip -o "$ANDROID_TOOLS_PATH" -d "$ANDROID_HOME" - yes | "${ANDROID_HOME}"/cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_HOME}" --install "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" "platform-tools" "platforms;android-31" "platforms;android-${ANDROID_API_LEVEL}" "ndk;${ANDROID_NDK_VERSION}" -fi - git config --global ${CFG_DONE} "true" diff --git a/ci/test/02_run_container.sh b/ci/test/02_run_container.sh index c6521ad03b..d383948637 100755 --- a/ci/test/02_run_container.sh +++ b/ci/test/02_run_container.sh @@ -16,6 +16,7 @@ if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then # System-dependent env vars must be kept as is. So read them from the container. docker run --rm "${CI_IMAGE_NAME_TAG}" bash -c "env | grep --extended-regexp '^(HOME|PATH|USER)='" | tee --append "/tmp/env-$USER-$CONTAINER_NAME" echo "Creating $CI_IMAGE_NAME_TAG container to run in" + DOCKER_BUILDKIT=1 docker build \ --file "${BASE_READ_ONLY_DIR}/ci/test_imagefile" \ --build-arg "CI_IMAGE_NAME_TAG=${CI_IMAGE_NAME_TAG}" \ @@ -23,12 +24,32 @@ if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then --label="${CI_IMAGE_LABEL}" \ --tag="${CONTAINER_NAME}" \ "${BASE_READ_ONLY_DIR}" + docker volume create "${CONTAINER_NAME}_ccache" || true docker volume create "${CONTAINER_NAME}_depends" || true docker volume create "${CONTAINER_NAME}_depends_sources" || true - docker volume create "${CONTAINER_NAME}_depends_SDKs_android" || true docker volume create "${CONTAINER_NAME}_previous_releases" || true + CI_CCACHE_MOUNT="type=volume,src=${CONTAINER_NAME}_ccache,dst=$CCACHE_DIR" + CI_DEPENDS_MOUNT="type=volume,src=${CONTAINER_NAME}_depends,dst=$DEPENDS_DIR/built" + CI_DEPENDS_SOURCES_MOUNT="type=volume,src=${CONTAINER_NAME}_depends_sources,dst=$DEPENDS_DIR/sources" + CI_PREVIOUS_RELEASES_MOUNT="type=volume,src=${CONTAINER_NAME}_previous_releases,dst=$PREVIOUS_RELEASES_DIR" + + if [ "$DANGER_CI_ON_HOST_CACHE_FOLDERS" ]; then + # ensure the directories exist + mkdir -p "${CCACHE_DIR}" + mkdir -p "${DEPENDS_DIR}/built" + mkdir -p "${DEPENDS_DIR}/sources" + mkdir -p "${PREVIOUS_RELEASES_DIR}" + + CI_CCACHE_MOUNT="type=bind,src=${CCACHE_DIR},dst=$CCACHE_DIR" + CI_DEPENDS_MOUNT="type=bind,src=${DEPENDS_DIR}/built,dst=$DEPENDS_DIR/built" + CI_DEPENDS_SOURCES_MOUNT="type=bind,src=${DEPENDS_DIR}/sources,dst=$DEPENDS_DIR/sources" + CI_PREVIOUS_RELEASES_MOUNT="type=bind,src=${PREVIOUS_RELEASES_DIR},dst=$PREVIOUS_RELEASES_DIR" + fi + + docker network create --ipv6 --subnet 1111:1111::/112 ci-ip6net || true + if [ -n "${RESTART_CI_DOCKER_BEFORE_RUN}" ] ; then echo "Restart docker before run to stop and clear all containers started with --rm" podman container rm --force --all # Similar to "systemctl restart docker" @@ -49,13 +70,13 @@ if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then # shellcheck disable=SC2086 CI_CONTAINER_ID=$(docker run --cap-add LINUX_IMMUTABLE $CI_CONTAINER_CAP --rm --interactive --detach --tty \ --mount "type=bind,src=$BASE_READ_ONLY_DIR,dst=$BASE_READ_ONLY_DIR,readonly" \ - --mount "type=volume,src=${CONTAINER_NAME}_ccache,dst=$CCACHE_DIR" \ - --mount "type=volume,src=${CONTAINER_NAME}_depends,dst=$DEPENDS_DIR/built" \ - --mount "type=volume,src=${CONTAINER_NAME}_depends_sources,dst=$DEPENDS_DIR/sources" \ - --mount "type=volume,src=${CONTAINER_NAME}_depends_SDKs_android,dst=$DEPENDS_DIR/SDKs/android" \ - --mount "type=volume,src=${CONTAINER_NAME}_previous_releases,dst=$PREVIOUS_RELEASES_DIR" \ + --mount "${CI_CCACHE_MOUNT}" \ + --mount "${CI_DEPENDS_MOUNT}" \ + --mount "${CI_DEPENDS_SOURCES_MOUNT}" \ + --mount "${CI_PREVIOUS_RELEASES_MOUNT}" \ --env-file /tmp/env-$USER-$CONTAINER_NAME \ --name "$CONTAINER_NAME" \ + --network ci-ip6net \ "$CONTAINER_NAME") export CI_CONTAINER_ID export CI_EXEC_CMD_PREFIX="docker exec ${CI_CONTAINER_ID}" diff --git a/ci/test/03_test_script.sh b/ci/test/03_test_script.sh index f5da7bc55d..71d9ad7f72 100755 --- a/ci/test/03_test_script.sh +++ b/ci/test/03_test_script.sh @@ -110,15 +110,6 @@ fi ccache --zero-stats PRINT_CCACHE_STATISTICS="ccache --version | head -n 1 && ccache --show-stats" -if [ -n "$ANDROID_TOOLS_URL" ]; then - make distclean || true - ./autogen.sh - bash -c "./configure $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG" || ( (cat config.log) && false) - make "${MAKEJOBS}" && cd src/qt && ANDROID_HOME=${ANDROID_HOME} ANDROID_NDK_HOME=${ANDROID_NDK_HOME} make apk - bash -c "${PRINT_CCACHE_STATISTICS}" - exit 0 -fi - BITCOIN_CONFIG_ALL="${BITCOIN_CONFIG_ALL} --enable-external-signer --prefix=$BASE_OUTDIR" if [ -n "$CONFIG_SHELL" ]; then diff --git a/configure.ac b/configure.ac index 6e90aa6122..15a9d5ad38 100755 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ -AC_PREREQ([2.60]) +AC_PREREQ([2.69]) define(_CLIENT_VERSION_MAJOR, 0) define(_CLIENT_VERSION_MINOR, 1) -define(_CLIENT_VERSION_BUILD, 12) +define(_CLIENT_VERSION_BUILD, 13) define(_CLIENT_VERSION_RC, 0) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2024) @@ -125,6 +125,7 @@ AC_PATH_PROG([GIT], [git]) AC_PATH_PROG([CCACHE], [ccache]) AC_PATH_PROG([XGETTEXT], [xgettext]) AC_PATH_PROG([HEXDUMP], [hexdump]) +AC_PATH_TOOL([OBJDUMP], [objdump]) AC_PATH_TOOL([OBJCOPY], [objcopy]) AC_PATH_PROG([DOXYGEN], [doxygen]) AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) @@ -205,9 +206,9 @@ AC_ARG_WITH([qrencode], AC_ARG_ENABLE([hardening], [AS_HELP_STRING([--disable-hardening], - [do not attempt to harden the resulting executables (default is to harden when possible)])], + [do not attempt to harden the resulting executables (default is to harden)])], [use_hardening=$enableval], - [use_hardening=auto]) + [use_hardening=yes]) AC_ARG_ENABLE([reduce-exports], [AS_HELP_STRING([--enable-reduce-exports], @@ -237,18 +238,6 @@ AC_ARG_ENABLE([lcov], [use_lcov=$enableval], [use_lcov=no]) -AC_ARG_ENABLE([lcov-branch-coverage], - [AS_HELP_STRING([--enable-lcov-branch-coverage], - [enable lcov testing branch coverage (default is no)])], - [use_lcov_branch=yes], - [use_lcov_branch=no]) - -AC_ARG_ENABLE([threadlocal], - [AS_HELP_STRING([--enable-threadlocal], - [enable features that depend on the c++ thread_local keyword (currently just thread names in debug logs). (default is to enable if there is platform support)])], - [use_thread_local=$enableval], - [use_thread_local=auto]) - AC_ARG_ENABLE([zmq], [AS_HELP_STRING([--disable-zmq], [disable ZMQ notifications])], @@ -292,13 +281,6 @@ AC_ARG_WITH([sanitizers], [comma separated list of extra sanitizers to build with (default is none enabled)])], [use_sanitizers=$withval]) -dnl Enable gprof profiling -AC_ARG_ENABLE([gprof], - [AS_HELP_STRING([--enable-gprof], - [use gprof profiling compiler flags (default is no)])], - [enable_gprof=$enableval], - [enable_gprof=no]) - dnl Turn warnings into errors AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], @@ -307,9 +289,9 @@ AC_ARG_ENABLE([werror], [enable_werror=no]) AC_ARG_ENABLE([external-signer], - [AS_HELP_STRING([--enable-external-signer],[compile external signer support (default is auto, requires Boost::Process)])], + [AS_HELP_STRING([--enable-external-signer],[compile external signer support (default is yes)])], [use_external_signer=$enableval], - [use_external_signer=auto]) + [use_external_signer=yes]) AC_LANG_PUSH([C++]) @@ -401,38 +383,33 @@ if test "$enable_werror" = "yes"; then ERROR_CXXFLAGS=$CXXFLAG_WERROR fi -if test "$CXXFLAGS_overridden" = "no"; then - AX_CHECK_COMPILE_FLAG([-Wall], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wall"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wextra], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wextra"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wgnu], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wgnu"], [], [$CXXFLAG_WERROR]) - dnl some compilers will ignore -Wformat-security without -Wformat, so just combine the two here. - AX_CHECK_COMPILE_FLAG([-Wformat -Wformat-security], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wformat -Wformat-security"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wvla], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wvla"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wshadow-field], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wshadow-field"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wthread-safety], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wthread-safety"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wloop-analysis], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wloop-analysis"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wredundant-decls], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wredundant-decls"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wunused-member-function], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wunused-member-function"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wdate-time], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wdate-time"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wconditional-uninitialized], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wconditional-uninitialized"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wduplicated-branches], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wduplicated-branches"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wduplicated-cond], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wduplicated-cond"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wlogical-op], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wlogical-op"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Woverloaded-virtual], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Woverloaded-virtual"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wsuggest-override], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wsuggest-override"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wimplicit-fallthrough"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wunreachable-code], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wunreachable-code"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wdocumentation], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wdocumentation"], [], [$CXXFLAG_WERROR]) - - dnl Some compilers (gcc) ignore unknown -Wno-* options, but warn about all - dnl unknown options if any other warning is produced. Test the -Wfoo case, and - dnl set the -Wno-foo case if it works. - AX_CHECK_COMPILE_FLAG([-Wunused-parameter], [NOWARN_CXXFLAGS="$NOWARN_CXXFLAGS -Wno-unused-parameter"], [], [$CXXFLAG_WERROR]) - AX_CHECK_COMPILE_FLAG([-Wself-assign], [NOWARN_CXXFLAGS="$NOWARN_CXXFLAGS -Wno-self-assign"], [], [$CXXFLAG_WERROR]) - if test "$suppress_external_warnings" != "yes" ; then - AX_CHECK_COMPILE_FLAG([-Wdeprecated-copy], [NOWARN_CXXFLAGS="$NOWARN_CXXFLAGS -Wno-deprecated-copy"], [], [$CXXFLAG_WERROR]) - fi -fi +AX_CHECK_COMPILE_FLAG([-Wall], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wall"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wextra], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wextra"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wgnu], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wgnu"], [], [$CXXFLAG_WERROR]) +dnl some compilers will ignore -Wformat-security without -Wformat, so just combine the two here. +AX_CHECK_COMPILE_FLAG([-Wformat -Wformat-security], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wformat -Wformat-security"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wvla], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wvla"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wshadow-field], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wshadow-field"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wthread-safety], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wthread-safety"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wloop-analysis], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wloop-analysis"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wredundant-decls], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wredundant-decls"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wunused-member-function], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wunused-member-function"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wdate-time], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wdate-time"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wconditional-uninitialized], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wconditional-uninitialized"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wduplicated-branches], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wduplicated-branches"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wduplicated-cond], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wduplicated-cond"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wlogical-op], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wlogical-op"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Woverloaded-virtual], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Woverloaded-virtual"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wsuggest-override], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wsuggest-override"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wimplicit-fallthrough"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wunreachable-code], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wunreachable-code"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wdocumentation], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wdocumentation"], [], [$CXXFLAG_WERROR]) +AX_CHECK_COMPILE_FLAG([-Wself-assign], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wself-assign"], [], [$CXXFLAG_WERROR]) + +dnl Some compilers (gcc) ignore unknown -Wno-* options, but warn about all +dnl unknown options if any other warning is produced. Test the -Wfoo case, and +dnl set the -Wno-foo case if it works. +AX_CHECK_COMPILE_FLAG([-Wunused-parameter], [NOWARN_CXXFLAGS="$NOWARN_CXXFLAGS -Wno-unused-parameter"], [], [$CXXFLAG_WERROR]) dnl Don't allow extended (non-ASCII) symbols in identifiers. This is easier for code review. AX_CHECK_COMPILE_FLAG([-fno-extended-identifiers], [CORE_CXXFLAGS="$CORE_CXXFLAGS -fno-extended-identifiers"], [], [$CXXFLAG_WERROR]) @@ -696,6 +673,9 @@ case $host in TARGET_OS=darwin if test $cross_compiling != "yes"; then BUILD_OS=darwin + + AX_CHECK_LINK_FLAG([-Wl,-headerpad_max_install_names], [CORE_LDFLAGS="$CORE_LDFLAGS -Wl,-headerpad_max_install_names"], [], [$LDFLAG_WERROR]) + AC_CHECK_PROG([BREW], [brew], [brew]) if test "$BREW" = "brew"; then dnl These Homebrew packages may be keg-only, meaning that they won't be found @@ -759,8 +739,6 @@ case $host in ;; *) AC_PATH_TOOL([DSYMUTIL], [dsymutil], [dsymutil]) - AC_PATH_TOOL([INSTALL_NAME_TOOL], [install_name_tool], [install_name_tool]) - AC_PATH_TOOL([OTOOL], [otool], [otool]) AC_PATH_PROG([ZIP], [zip], [zip]) dnl libtool will try to strip the static lib, which is a problem for @@ -772,29 +750,12 @@ case $host in esac fi - AX_CHECK_LINK_FLAG([-Wl,-headerpad_max_install_names], [CORE_LDFLAGS="$CORE_LDFLAGS -Wl,-headerpad_max_install_names"], [], [$LDFLAG_WERROR]) CORE_CPPFLAGS="$CORE_CPPFLAGS -DMAC_OSX -DOBJC_OLD_DISPATCH_PROTOTYPES=0" dnl ignore deprecated-declarations warnings coming from objcxx code dnl "'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0". OBJCXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations" ;; - *android*) - dnl make sure android stays above linux for hosts like *linux-android* - TARGET_OS=android - case $host in - *x86_64*) - ANDROID_ARCH=x86_64 - ;; - *aarch64*) - ANDROID_ARCH=arm64-v8a - ;; - *armv7a*) - ANDROID_ARCH=armeabi-v7a - ;; - *) AC_MSG_ERROR([Could not determine Android arch, or it is unsupported]) ;; - esac - ;; *linux*) TARGET_OS=linux ;; @@ -844,10 +805,8 @@ if test "$use_lcov" = "yes"; then AX_CHECK_COMPILE_FLAG([--coverage],[CORE_CXXFLAGS="$CORE_CXXFLAGS --coverage"], [AC_MSG_ERROR([lcov testing requested but --coverage flag does not work])]) CORE_CXXFLAGS="$CORE_CXXFLAGS -Og" -fi -if test "$use_lcov_branch" != "no"; then - AC_SUBST(LCOV_OPTS, "$LCOV_OPTS --rc lcov_branch_coverage=1") + AC_SUBST(LCOV_OPTS) fi dnl Check for endianness @@ -878,30 +837,12 @@ if test "$ac_cv_sys_large_files" != "" && CORE_CPPFLAGS="$CORE_CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files" fi -if test "$enable_gprof" = "yes"; then - dnl -pg is incompatible with -pie. Since hardening and profiling together doesn't make sense, - dnl we simply make them mutually exclusive here. Additionally, hardened toolchains may force - dnl -pie by default, in which case it needs to be turned off with -no-pie. - - if test "$use_hardening" = "yes"; then - AC_MSG_ERROR([gprof profiling is not compatible with hardening. Reconfigure with --disable-hardening or --disable-gprof]) - fi - use_hardening=no - AX_CHECK_COMPILE_FLAG([-pg],[GPROF_CXXFLAGS="-pg"], - [AC_MSG_ERROR([gprof profiling requested but not available])], [$CXXFLAG_WERROR]) - - AX_CHECK_LINK_FLAG([-no-pie], [GPROF_LDFLAGS="-no-pie"]) - AX_CHECK_LINK_FLAG([-pg], [GPROF_LDFLAGS="$GPROF_LDFLAGS -pg"], - [AC_MSG_ERROR([gprof profiling requested but not available])], [$GPROF_LDFLAGS]) -fi - if test "$TARGET_OS" != "windows"; then dnl All windows code is PIC, forcing it on just adds useless compile warnings AX_CHECK_COMPILE_FLAG([-fPIC], [PIC_FLAGS="-fPIC"]) fi if test "$use_hardening" != "no"; then - use_hardening=yes AX_CHECK_COMPILE_FLAG([-Wstack-protector], [HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"]) AX_CHECK_COMPILE_FLAG([-fstack-protector-all], [HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"]) @@ -955,7 +896,7 @@ if test "$TARGET_OS" = "darwin"; then AX_CHECK_LINK_FLAG([-Wl,-fixup_chains], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-fixup_chains"], [], [$LDFLAG_WERROR]) fi -AC_CHECK_HEADERS([sys/select.h sys/prctl.h sys/sysctl.h vm/vm_param.h sys/vmmeter.h sys/resources.h]) +AC_CHECK_HEADERS([sys/select.h sys/prctl.h vm/vm_param.h sys/vmmeter.h sys/resources.h]) AC_CHECK_DECLS([getifaddrs, freeifaddrs],[CHECK_SOCKET],, [#include @@ -968,24 +909,6 @@ AC_CHECK_DECLS([setsid]) AC_CHECK_DECLS([pipe2]) -AC_CHECK_FUNCS([timingsafe_bcmp]) - -AC_MSG_CHECKING([for __builtin_clzl]) -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[ - (void) __builtin_clzl(0); - ]])], - [ AC_MSG_RESULT([yes]); have_clzl=yes; AC_DEFINE([HAVE_BUILTIN_CLZL], [1], [Define this symbol if you have __builtin_clzl])], - [ AC_MSG_RESULT([no]); have_clzl=no;] -) - -AC_MSG_CHECKING([for __builtin_clzll]) -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[ - (void) __builtin_clzll(0); - ]])], - [ AC_MSG_RESULT([yes]); have_clzll=yes; AC_DEFINE([HAVE_BUILTIN_CLZLL], [1], [Define this symbol if you have __builtin_clzll])], - [ AC_MSG_RESULT([no]); have_clzll=no;] -) - dnl Check for malloc_info (for memory statistics information in getmemoryinfo) AC_MSG_CHECKING([for getmemoryinfo]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], @@ -1047,61 +970,6 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([ [AC_MSG_RESULT([no])] ) -if test "$use_thread_local" = "yes" || test "$use_thread_local" = "auto"; then - TEMP_LDFLAGS="$LDFLAGS" - LDFLAGS="$TEMP_LDFLAGS $PTHREAD_CFLAGS" - AC_MSG_CHECKING([for thread_local support]) - AC_LINK_IFELSE([AC_LANG_SOURCE([ - #include - static thread_local int foo = 0; - static void run_thread() { foo++;} - int main(){ - for(int i = 0; i < 10; i++) { std::thread(run_thread).detach();} - return foo; - } - ])], - [ - case $host in - *mingw*) - dnl mingw32's implementation of thread_local has also been shown to behave - dnl erroneously under concurrent usage; see: - dnl https://gist.github.com/jamesob/fe9a872051a88b2025b1aa37bfa98605 - AC_MSG_RESULT([no]) - ;; - *freebsd*) - dnl FreeBSD's implementation of thread_local is also buggy (per - dnl https://groups.google.com/d/msg/bsdmailinglist/22ncTZAbDp4/Dii_pII5AwAJ) - AC_MSG_RESULT([no]) - ;; - *) - AC_DEFINE([HAVE_THREAD_LOCAL], [1], [Define if thread_local is supported.]) - AC_MSG_RESULT([yes]) - ;; - esac - ], - [ - AC_MSG_RESULT([no]) - ] - ) - LDFLAGS="$TEMP_LDFLAGS" -fi - -dnl check for gmtime_r(), fallback to gmtime_s() if that is unavailable -dnl fail if neither are available. -AC_MSG_CHECKING([for gmtime_r]) -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], - [[ gmtime_r((const time_t *) nullptr, (struct tm *) nullptr); ]])], - [ AC_MSG_RESULT([yes]); AC_DEFINE([HAVE_GMTIME_R], [1], [Define this symbol if gmtime_r is available]) ], - [ AC_MSG_RESULT([no]); - AC_MSG_CHECKING([for gmtime_s]); - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], - [[ gmtime_s((struct tm *) nullptr, (const time_t *) nullptr); ]])], - [ AC_MSG_RESULT([yes])], - [ AC_MSG_RESULT([no]); AC_MSG_ERROR([Both gmtime_r and gmtime_s are unavailable]) ] - ) - ] -) - dnl Check for different ways of gathering OS randomness AC_MSG_CHECKING([for Linux getrandom function]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @@ -1432,56 +1300,14 @@ if test "$use_boost" = "yes"; then fi fi -if test "$use_external_signer" != "no"; then - AC_MSG_CHECKING([whether Boost.Process can be used]) - TEMP_CXXFLAGS="$CXXFLAGS" - dnl Boost 1.78 requires the following workaround. - dnl See: https://github.com/boostorg/process/issues/235 - CXXFLAGS="$CXXFLAGS -Wno-error=narrowing" - TEMP_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" - TEMP_LDFLAGS="$LDFLAGS" - dnl Boost 1.73 and older require the following workaround. - LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #define BOOST_PROCESS_USE_STD_FS - #include - ]],[[ - namespace bp = boost::process; - bp::opstream stdin_stream; - bp::ipstream stdout_stream; - bp::child c("dummy", bp::std_out > stdout_stream, bp::std_err > stdout_stream, bp::std_in < stdin_stream); - stdin_stream << std::string{"test"} << std::endl; - if (c.running()) c.terminate(); - c.wait(); - c.exit_code(); - ]])], - [have_boost_process="yes"], - [have_boost_process="no"]) - LDFLAGS="$TEMP_LDFLAGS" - CPPFLAGS="$TEMP_CPPFLAGS" - CXXFLAGS="$TEMP_CXXFLAGS" - AC_MSG_RESULT([$have_boost_process]) - if test "$have_boost_process" = "yes"; then - case $host in - dnl Boost Process for Windows uses Boost ASIO. Boost ASIO performs - dnl pre-main init of Windows networking libraries, which we do not - dnl want. - *mingw*) - use_external_signer="no" - ;; - *) - use_external_signer="yes" - AC_DEFINE([ENABLE_EXTERNAL_SIGNER], [1], [Define if external signer support is enabled]) - AC_DEFINE([BOOST_PROCESS_USE_STD_FS], [1], [Defined to avoid Boost::Process trying to use Boost Filesystem]) - ;; - esac - else - if test "$use_external_signer" = "yes"; then - AC_MSG_ERROR([External signing is not supported for this Boost version]) - fi - use_external_signer="no"; - fi +case $host in + dnl Re-enable it after enabling Windows support in cpp-subprocess. + *mingw*) + use_external_signer="no" + ;; +esac +if test "$use_external_signer" = "yes"; then + AC_DEFINE([ENABLE_EXTERNAL_SIGNER], [1], [Define if external signer support is enabled]) fi AM_CONDITIONAL([ENABLE_EXTERNAL_SIGNER], [test "$use_external_signer" = "yes"]) @@ -1782,7 +1608,6 @@ AM_CONDITIONAL([ENABLE_QT_TESTS], [test "$BUILD_TEST_QT" = "yes"]) AM_CONDITIONAL([ENABLE_BENCH], [test "$use_bench" = "yes"]) AM_CONDITIONAL([USE_QRCODE], [test "$use_qr" = "yes"]) AM_CONDITIONAL([USE_LCOV], [test "$use_lcov" = "yes"]) -AM_CONDITIONAL([USE_LIBEVENT], [test "$use_libevent" = "yes"]) AM_CONDITIONAL([HARDEN], [test "$use_hardening" = "yes"]) AM_CONDITIONAL([ENABLE_SSE42], [test "$enable_sse42" = "yes"]) AM_CONDITIONAL([ENABLE_SSE41], [test "$enable_sse41" = "yes"]) @@ -1796,7 +1621,6 @@ AM_CONDITIONAL([USE_UPNP], [test "$use_upnp" = "yes"]) dnl for minisketch AM_CONDITIONAL([ENABLE_CLMUL], [test "$enable_clmul" = "yes"]) -AM_CONDITIONAL([HAVE_CLZ], [test "$have_clzl$have_clzll" = "yesyes"]) AC_DEFINE([CLIENT_VERSION_MAJOR], [_CLIENT_VERSION_MAJOR], [Major version]) AC_DEFINE([CLIENT_VERSION_MINOR], [_CLIENT_VERSION_MINOR], [Minor version]) @@ -1835,8 +1659,6 @@ AC_SUBST(WARN_CXXFLAGS) AC_SUBST(NOWARN_CXXFLAGS) AC_SUBST(DEBUG_CXXFLAGS) AC_SUBST(ERROR_CXXFLAGS) -AC_SUBST(GPROF_CXXFLAGS) -AC_SUBST(GPROF_LDFLAGS) AC_SUBST(HARDENED_CXXFLAGS) AC_SUBST(HARDENED_CPPFLAGS) AC_SUBST(HARDENED_LDFLAGS) @@ -1862,14 +1684,12 @@ AC_SUBST(MINIUPNPC_CPPFLAGS) AC_SUBST(MINIUPNPC_LIBS) AC_SUBST(NATPMP_CPPFLAGS) AC_SUBST(NATPMP_LIBS) -AC_SUBST(HAVE_GMTIME_R) AC_SUBST(HAVE_FDATASYNC) AC_SUBST(HAVE_FULLFSYNC) AC_SUBST(HAVE_O_CLOEXEC) AC_SUBST(HAVE_BUILTIN_PREFETCH) AC_SUBST(HAVE_MM_PREFETCH) AC_SUBST(HAVE_STRONG_GETAUXVAL) -AC_SUBST(ANDROID_ARCH) AC_SUBST(HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR) AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist test/config.ini]) AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh]) @@ -1896,7 +1716,7 @@ CPPFLAGS="$CPPFLAGS_TEMP" if test -n "$use_sanitizers"; then export SECP_CFLAGS="$SECP_CFLAGS $SANITIZER_CFLAGS" fi -ac_configure_args="${ac_configure_args} --disable-shared --with-pic --enable-benchmark=no --enable-module-recovery --disable-module-ecdh" +ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-ecmult-gen-kb=86 --enable-benchmark=no --enable-module-recovery --disable-module-ecdh" AC_CONFIG_SUBDIRS([src/secp256k1]) AC_OUTPUT @@ -1946,7 +1766,6 @@ echo " with natpmp = $use_natpmp" echo " USDT tracing = $use_usdt" echo " sanitizers = $use_sanitizers" echo " debug enabled = $enable_debug" -echo " gprof enabled = $enable_gprof" echo " werror = $enable_werror" echo echo " target os = $host_os" @@ -1956,8 +1775,8 @@ echo " CC = $CC" echo " CFLAGS = $PTHREAD_CFLAGS $SANITIZER_CFLAGS $CFLAGS" echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CORE_CPPFLAGS $CPPFLAGS" echo " CXX = $CXX" -echo " CXXFLAGS = $CORE_CXXFLAGS $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $SANITIZER_CXXFLAGS $CXXFLAGS" -echo " LDFLAGS = $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $SANITIZER_LDFLAGS $CORE_LDFLAGS $LDFLAGS" +echo " CXXFLAGS = $CORE_CXXFLAGS $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $SANITIZER_CXXFLAGS $CXXFLAGS" +echo " LDFLAGS = $PTHREAD_LIBS $HARDENED_LDFLAGS $SANITIZER_LDFLAGS $CORE_LDFLAGS $LDFLAGS" echo " AR = $AR" echo " ARFLAGS = $ARFLAGS" echo diff --git a/contrib/asmap/README.md b/contrib/asmap/README.md new file mode 100644 index 0000000000..5fab4b285e --- /dev/null +++ b/contrib/asmap/README.md @@ -0,0 +1,12 @@ +# ASMap Tool + +Tool for performing various operations on textual and binary asmap files, +particularly encoding/compressing the raw data to the binary format that can +be used in Bitcoin Core with the `-asmap` option. + +Example usage: +``` +python3 asmap-tool.py encode /path/to/input.file /path/to/output.file +python3 asmap-tool.py decode /path/to/input.file /path/to/output.file +python3 asmap-tool.py diff /path/to/first.file /path/to/second.file +``` diff --git a/contrib/asmap/asmap-tool.py b/contrib/asmap/asmap-tool.py new file mode 100755 index 0000000000..09c28725e4 --- /dev/null +++ b/contrib/asmap/asmap-tool.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python3 +# Copyright (c) 2022 Pieter Wuille +# Distributed under the MIT software license, see the accompanying +# file LICENSE or http://www.opensource.org/licenses/mit-license.php. + +import argparse +import sys +import ipaddress +import math + +import asmap + +def load_file(input_file): + try: + contents = input_file.read() + except OSError as err: + sys.exit(f"Input file '{input_file.name}' cannot be read: {err.strerror}.") + try: + bin_asmap = asmap.ASMap.from_binary(contents) + except ValueError: + bin_asmap = None + txt_error = None + entries = None + try: + txt_contents = str(contents, encoding="utf-8") + except UnicodeError: + txt_error = "invalid UTF-8" + txt_contents = None + if txt_contents is not None: + entries = [] + for line in txt_contents.split("\n"): + idx = line.find('#') + if idx >= 0: + line = line[:idx] + line = line.lstrip(' ').rstrip(' \t\r\n') + if len(line) == 0: + continue + fields = line.split(' ') + if len(fields) != 2: + txt_error = f"unparseable line '{line}'" + entries = None + break + prefix, asn = fields + if len(asn) <= 2 or asn[:2] != "AS" or any(c < '0' or c > '9' for c in asn[2:]): + txt_error = f"invalid ASN '{asn}'" + entries = None + break + try: + net = ipaddress.ip_network(prefix) + except ValueError: + txt_error = f"invalid network '{prefix}'" + entries = None + break + entries.append((asmap.net_to_prefix(net), int(asn[2:]))) + if entries is not None and bin_asmap is not None and len(contents) > 0: + sys.exit(f"Input file '{input_file.name}' is ambiguous.") + if entries is not None: + state = asmap.ASMap() + state.update_multi(entries) + return state + if bin_asmap is not None: + return bin_asmap + sys.exit(f"Input file '{input_file.name}' is neither a valid binary asmap file nor valid text input ({txt_error}).") + + +def save_binary(output_file, state, fill): + contents = state.to_binary(fill=fill) + try: + output_file.write(contents) + output_file.close() + except OSError as err: + sys.exit(f"Output file '{output_file.name}' cannot be written to: {err.strerror}.") + +def save_text(output_file, state, fill, overlapping): + for prefix, asn in state.to_entries(fill=fill, overlapping=overlapping): + net = asmap.prefix_to_net(prefix) + try: + print(f"{net} AS{asn}", file=output_file) + except OSError as err: + sys.exit(f"Output file '{output_file.name}' cannot be written to: {err.strerror}.") + try: + output_file.close() + except OSError as err: + sys.exit(f"Output file '{output_file.name}' cannot be written to: {err.strerror}.") + +def main(): + parser = argparse.ArgumentParser(description="Tool for performing various operations on textual and binary asmap files.") + subparsers = parser.add_subparsers(title="valid subcommands", dest="subcommand") + + parser_encode = subparsers.add_parser("encode", help="convert asmap data to binary format") + parser_encode.add_argument('-f', '--fill', dest="fill", default=False, action="store_true", + help="permit reassigning undefined network ranges arbitrarily to reduce size") + parser_encode.add_argument('infile', nargs='?', type=argparse.FileType('rb'), default=sys.stdin.buffer, + help="input asmap file (text or binary); default is stdin") + parser_encode.add_argument('outfile', nargs='?', type=argparse.FileType('wb'), default=sys.stdout.buffer, + help="output binary asmap file; default is stdout") + + parser_decode = subparsers.add_parser("decode", help="convert asmap data to text format") + parser_decode.add_argument('-f', '--fill', dest="fill", default=False, action="store_true", + help="permit reassigning undefined network ranges arbitrarily to reduce length") + parser_decode.add_argument('-n', '--nonoverlapping', dest="overlapping", default=True, action="store_false", + help="output strictly non-overall ping network ranges (increases output size)") + parser_decode.add_argument('infile', nargs='?', type=argparse.FileType('rb'), default=sys.stdin.buffer, + help="input asmap file (text or binary); default is stdin") + parser_decode.add_argument('outfile', nargs='?', type=argparse.FileType('w'), default=sys.stdout, + help="output text file; default is stdout") + + parser_diff = subparsers.add_parser("diff", help="compute the difference between two asmap files") + parser_diff.add_argument('-i', '--ignore-unassigned', dest="ignore_unassigned", default=False, action="store_true", + help="ignore unassigned ranges in the first input (useful when second input is filled)") + parser_diff.add_argument('infile1', type=argparse.FileType('rb'), + help="first file to compare (text or binary)") + parser_diff.add_argument('infile2', type=argparse.FileType('rb'), + help="second file to compare (text or binary)") + + args = parser.parse_args() + if args.subcommand is None: + parser.print_help() + elif args.subcommand == "encode": + state = load_file(args.infile) + save_binary(args.outfile, state, fill=args.fill) + elif args.subcommand == "decode": + state = load_file(args.infile) + save_text(args.outfile, state, fill=args.fill, overlapping=args.overlapping) + elif args.subcommand == "diff": + state1 = load_file(args.infile1) + state2 = load_file(args.infile2) + ipv4_changed = 0 + ipv6_changed = 0 + for prefix, old_asn, new_asn in state1.diff(state2): + if args.ignore_unassigned and old_asn == 0: + continue + net = asmap.prefix_to_net(prefix) + if isinstance(net, ipaddress.IPv4Network): + ipv4_changed += 1 << (32 - net.prefixlen) + elif isinstance(net, ipaddress.IPv6Network): + ipv6_changed += 1 << (128 - net.prefixlen) + if new_asn == 0: + print(f"# {net} was AS{old_asn}") + elif old_asn == 0: + print(f"{net} AS{new_asn} # was unassigned") + else: + print(f"{net} AS{new_asn} # was AS{old_asn}") + ipv4_change_str = "" if ipv4_changed == 0 else f" (2^{math.log2(ipv4_changed):.2f})" + ipv6_change_str = "" if ipv6_changed == 0 else f" (2^{math.log2(ipv6_changed):.2f})" + + print( + f"# {ipv4_changed}{ipv4_change_str} IPv4 addresses changed; " + f"{ipv6_changed}{ipv6_change_str} IPv6 addresses changed" + ) + else: + parser.print_help() + sys.exit("No command provided.") + +if __name__ == '__main__': + main() diff --git a/contrib/seeds/asmap.py b/contrib/asmap/asmap.py similarity index 99% rename from contrib/seeds/asmap.py rename to contrib/asmap/asmap.py index c3512a0082..903a42c945 100644 --- a/contrib/seeds/asmap.py +++ b/contrib/asmap/asmap.py @@ -482,12 +482,14 @@ def candidate(ctx: Optional[int], arg1, arg2, func: Callable): if ctx not in ret or cand.size < ret[ctx].size: ret[ctx] = cand - for ctx in set(left) | set(right): + union = set(left) | set(right) + sorted_union = sorted(union, key=lambda x: (x is None, x)) + for ctx in sorted_union: candidate(ctx, left.get(ctx), right.get(ctx), _BinNode.make_branch) candidate(ctx, left.get(None), right.get(ctx), _BinNode.make_branch) candidate(ctx, left.get(ctx), right.get(None), _BinNode.make_branch) if not hole: - for ctx in set(ret) - set([None]): + for ctx in sorted(set(ret) - set([None])): candidate(None, ctx, ret[ctx], _BinNode.make_default) if None in ret: ret = {ctx:enc for ctx, enc in ret.items() diff --git a/contrib/devtools/symbol-check.py b/contrib/devtools/symbol-check.py index 370691bc80..12f2bb9d4b 100755 --- a/contrib/devtools/symbol-check.py +++ b/contrib/devtools/symbol-check.py @@ -14,31 +14,31 @@ import lief -# Debian 10 (Buster) EOL: 2024. https://wiki.debian.org/LTS +# Debian 11 (Bullseye) EOL: 2026. https://wiki.debian.org/LTS # -# - libgcc version 8.3.0 (https://packages.debian.org/search?suite=buster&arch=any&searchon=names&keywords=libgcc1) -# - libc version 2.28 (https://packages.debian.org/search?suite=buster&arch=any&searchon=names&keywords=libc6) +# - libgcc version 10.2.1 (https://packages.debian.org/bullseye/libgcc-s1) +# - libc version 2.31 (https://packages.debian.org/source/bullseye/glibc) # -# Ubuntu 18.04 (Bionic) EOL: 2028. https://wiki.ubuntu.com/ReleaseTeam +# Ubuntu 20.04 (Focal) EOL: 2030. https://wiki.ubuntu.com/ReleaseTeam # -# - libgcc version 8.4.0 (https://packages.ubuntu.com/bionic/libgcc1) -# - libc version 2.27 (https://packages.ubuntu.com/bionic/libc6) +# - libgcc version 10.5.0 (https://packages.ubuntu.com/focal/libgcc1) +# - libc version 2.31 (https://packages.ubuntu.com/focal/libc6) # -# CentOS Stream 8 EOL: 2024. https://wiki.centos.org/About/Product +# CentOS Stream 9 EOL: 2027. https://www.centos.org/cl-vs-cs/#end-of-life # -# - libgcc version 8.5.0 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/) -# - libc version 2.28 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/) +# - libgcc version 12.2.1 (https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/) +# - libc version 2.34 (https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/) # # See https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html for more info. MAX_VERSIONS = { 'GCC': (4,3,0), 'GLIBC': { - lief.ELF.ARCH.x86_64: (2,27), - lief.ELF.ARCH.ARM: (2,27), - lief.ELF.ARCH.AARCH64:(2,27), - lief.ELF.ARCH.PPC64: (2,27), - lief.ELF.ARCH.RISCV: (2,27), + lief.ELF.ARCH.x86_64: (2,31), + lief.ELF.ARCH.ARM: (2,31), + lief.ELF.ARCH.AARCH64:(2,31), + lief.ELF.ARCH.PPC64: (2,31), + lief.ELF.ARCH.RISCV: (2,31), }, 'LIBATOMIC': (1,0), 'V': (0,5,0), # xkb (bitcoin-qt only) @@ -210,6 +210,11 @@ def check_exported_symbols(binary) -> bool: ok = False return ok +def check_RUNPATH(binary) -> bool: + assert binary.get(lief.ELF.DYNAMIC_TAGS.RUNPATH) is None + assert binary.get(lief.ELF.DYNAMIC_TAGS.RPATH) is None + return True + def check_ELF_libraries(binary) -> bool: ok: bool = True for library in binary.libraries: @@ -237,8 +242,8 @@ def check_MACHO_sdk(binary) -> bool: return True return False -def check_MACHO_ld64(binary) -> bool: - if binary.build_version.tools[0].version == [711, 0, 0]: +def check_MACHO_lld(binary) -> bool: + if binary.build_version.tools[0].version == [18, 1, 6]: return True return False @@ -275,12 +280,13 @@ def check_ELF_ABI(binary) -> bool: ('LIBRARY_DEPENDENCIES', check_ELF_libraries), ('INTERPRETER_NAME', check_ELF_interpreter), ('ABI', check_ELF_ABI), + ('RUNPATH', check_RUNPATH), ], lief.EXE_FORMATS.MACHO: [ ('DYNAMIC_LIBRARIES', check_MACHO_libraries), ('MIN_OS', check_MACHO_min_os), ('SDK', check_MACHO_sdk), - ('LD64', check_MACHO_ld64), + ('LLD', check_MACHO_lld), ], lief.EXE_FORMATS.PE: [ ('DYNAMIC_LIBRARIES', check_PE_libraries), diff --git a/contrib/devtools/test-security-check.py b/contrib/devtools/test-security-check.py index 48823c7e45..7bfd4d98da 100755 --- a/contrib/devtools/test-security-check.py +++ b/contrib/devtools/test-security-check.py @@ -27,22 +27,24 @@ def clean_files(source, executable): os.remove(source) os.remove(executable) -def call_security_check(cc: str, source: str, executable: str, options) -> tuple: +def env_flags() -> list[str]: # This should behave the same as AC_TRY_LINK, so arrange well-known flags # in the same order as autoconf would. # # See the definitions for ac_link in autoconf's lib/autoconf/c.m4 file for # reference. - env_flags: list[str] = [] + flags: list[str] = [] for var in ['CFLAGS', 'CPPFLAGS', 'LDFLAGS']: - env_flags += filter(None, os.environ.get(var, '').split(' ')) + flags += filter(None, os.environ.get(var, '').split(' ')) + return flags - subprocess.run([*cc,source,'-o',executable] + env_flags + options, check=True) +def call_security_check(cc: str, source: str, executable: str, options) -> tuple: + subprocess.run([*cc,source,'-o',executable] + env_flags() + options, check=True) p = subprocess.run([os.path.join(os.path.dirname(__file__), 'security-check.py'), executable], stdout=subprocess.PIPE, text=True) return (p.returncode, p.stdout.rstrip()) def get_arch(cc, source, executable): - subprocess.run([*cc, source, '-o', executable], check=True) + subprocess.run([*cc, source, '-o', executable] + env_flags(), check=True) binary = lief.parse(executable) arch = binary.abstract.header.architecture os.remove(executable) @@ -57,32 +59,32 @@ def test_ELF(self): arch = get_arch(cc, source, executable) if arch == lief.ARCHITECTURES.X86: - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-fno-stack-protector','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), - (1, executable+': failed PIE NX RELRO Canary CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fno-stack-protector','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), - (1, executable+': failed PIE RELRO Canary CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), + (1, executable+': failed PIE NX RELRO CONTROL_FLOW')) + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), (1, executable+': failed PIE RELRO CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro','-pie','-fPIE', '-Wl,-z,separate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), + (1, executable+': failed PIE RELRO CONTROL_FLOW')) + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-znorelro','-pie','-fPIE', '-Wl,-z,separate-code']), (1, executable+': failed RELRO CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,noseparate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,noseparate-code']), (1, executable+': failed separate_code CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,separate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,separate-code']), (1, executable+': failed CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,separate-code', '-fcf-protection=full']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,separate-code', '-fcf-protection=full']), (0, '')) else: - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-fno-stack-protector','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), - (1, executable+': failed PIE NX RELRO Canary')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fno-stack-protector','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), - (1, executable+': failed PIE RELRO Canary')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), + (1, executable+': failed PIE NX RELRO')) + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), + (1, executable+': failed PIE RELRO')) + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']), (1, executable+': failed PIE RELRO')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro','-pie','-fPIE', '-Wl,-z,separate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-znorelro','-pie','-fPIE', '-Wl,-z,separate-code']), (1, executable+': failed RELRO')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,noseparate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,noseparate-code']), (1, executable+': failed separate_code')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,separate-code']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE', '-Wl,-z,separate-code']), (0, '')) clean_files(source, executable) @@ -118,21 +120,15 @@ def test_MACHO(self): arch = get_arch(cc, source, executable) if arch == lief.ARCHITECTURES.X86: - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-Wl,-flat_namespace','-Wl,-allow_stack_execute','-fno-stack-protector', '-Wl,-no_fixup_chains']), - (1, executable+': failed NOUNDEFS Canary FIXUP_CHAINS PIE NX CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-Wl,-flat_namespace','-Wl,-allow_stack_execute','-fno-stack-protector', '-Wl,-fixup_chains']), - (1, executable+': failed NOUNDEFS Canary PIE NX CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-Wl,-flat_namespace','-Wl,-allow_stack_execute','-fstack-protector-all', '-Wl,-fixup_chains']), - (1, executable+': failed NOUNDEFS PIE NX CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-Wl,-flat_namespace','-fstack-protector-all', '-Wl,-fixup_chains']), - (1, executable+': failed NOUNDEFS PIE CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-fstack-protector-all', '-Wl,-fixup_chains']), - (1, executable+': failed PIE CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-fstack-protector-all', '-Wl,-fixup_chains']), - (1, executable+': failed PIE CONTROL_FLOW')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-fstack-protector-all', '-fcf-protection=full', '-Wl,-fixup_chains']), - (1, executable+': failed PIE')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-pie','-fstack-protector-all', '-fcf-protection=full', '-Wl,-fixup_chains']), + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-Wl,-flat_namespace','-fno-stack-protector', '-Wl,-no_fixup_chains']), + (1, executable+': failed NOUNDEFS Canary FIXUP_CHAINS PIE CONTROL_FLOW')) + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-flat_namespace','-fno-stack-protector', '-Wl,-fixup_chains']), + (1, executable+': failed NOUNDEFS Canary CONTROL_FLOW')) + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-flat_namespace','-fstack-protector-all', '-Wl,-fixup_chains']), + (1, executable+': failed NOUNDEFS CONTROL_FLOW')) + self.assertEqual(call_security_check(cc, source, executable, ['-fstack-protector-all', '-Wl,-fixup_chains']), + (1, executable+': failed CONTROL_FLOW')) + self.assertEqual(call_security_check(cc, source, executable, ['-fstack-protector-all', '-fcf-protection=full', '-Wl,-fixup_chains']), (0, '')) else: # arm64 darwin doesn't support non-PIE binaries, control flow or executable stacks diff --git a/contrib/devtools/test-symbol-check.py b/contrib/devtools/test-symbol-check.py index 0140decb25..b00004586c 100755 --- a/contrib/devtools/test-symbol-check.py +++ b/contrib/devtools/test-symbol-check.py @@ -27,10 +27,6 @@ def call_symbol_check(cc: list[str], source, executable, options): os.remove(executable) return (p.returncode, p.stdout.rstrip()) -def get_machine(cc: list[str]): - p = subprocess.run([*cc,'-dumpmachine'], stdout=subprocess.PIPE, text=True) - return p.stdout.rstrip() - class TestSymbolChecks(unittest.TestCase): def test_ELF(self): source = 'test1.c' diff --git a/contrib/guix/guix-build b/contrib/guix/guix-build index b57beabed9..2a79e42ce4 100755 --- a/contrib/guix/guix-build +++ b/contrib/guix/guix-build @@ -361,6 +361,10 @@ INFO: Building ${VERSION:?not set} for platform triple ${HOST:?not set}: ...bind-mounted in container to: '$(DISTSRC_BASE=/distsrc-base && distsrc_for_host "$HOST")' ...outputting in: '$(outdir_for_host "$HOST")' ...bind-mounted in container to: '$(OUTDIR_BASE=/outdir-base && outdir_for_host "$HOST")' + ADDITIONAL FLAGS (if set) + ADDITIONAL_GUIX_COMMON_FLAGS: ${ADDITIONAL_GUIX_COMMON_FLAGS} + ADDITIONAL_GUIX_ENVIRONMENT_FLAGS: ${ADDITIONAL_GUIX_ENVIRONMENT_FLAGS} + ADDITIONAL_GUIX_TIMEMACHINE_FLAGS: ${ADDITIONAL_GUIX_TIMEMACHINE_FLAGS} EOF # Run the build script 'contrib/guix/libexec/build.sh' in the build diff --git a/contrib/guix/libexec/build.sh b/contrib/guix/libexec/build.sh index fe4707509b..86cd855364 100644 --- a/contrib/guix/libexec/build.sh +++ b/contrib/guix/libexec/build.sh @@ -74,6 +74,15 @@ export CPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include" export OBJC_INCLUDE_PATH="${NATIVE_GCC}/include" export OBJCPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include" +case "$HOST" in + *darwin*) export LIBRARY_PATH="${NATIVE_GCC}/lib" ;; + *mingw*) export LIBRARY_PATH="${NATIVE_GCC}/lib" ;; + *) + NATIVE_GCC_STATIC="$(store_path gcc-toolchain static)" + export LIBRARY_PATH="${NATIVE_GCC}/lib:${NATIVE_GCC_STATIC}/lib" + ;; +esac + # Set environment variables to point the CROSS toolchain to the right # includes/libs for $HOST case "$HOST" in @@ -124,18 +133,7 @@ for p in "${PATHS[@]}"; do done # Disable Guix ld auto-rpath behavior -case "$HOST" in - *darwin*) - # The auto-rpath behavior is necessary for darwin builds as some native - # tools built by depends refer to and depend on Guix-built native - # libraries - # - # After the native packages in depends are built, the ld wrapper should - # no longer affect our build, as clang would instead reach for - # x86_64-apple-darwin-ld from cctools - ;; - *) export GUIX_LD_WRAPPER_DISABLE_RPATH=yes ;; -esac +export GUIX_LD_WRAPPER_DISABLE_RPATH=yes # Make /usr/bin if it doesn't exist [ -e /usr/bin ] || mkdir -p /usr/bin @@ -164,16 +162,6 @@ esac # Environment variables for determinism export TAR_OPTIONS="--owner=0 --group=0 --numeric-owner --mtime='@${SOURCE_DATE_EPOCH}' --sort=name" export TZ="UTC" -case "$HOST" in - *darwin*) - # cctools AR, unlike GNU binutils AR, does not have a deterministic mode - # or a configure flag to enable determinism by default, it only - # understands if this env-var is set or not. See: - # - # https://github.com/tpoechtrager/cctools-port/blob/55562e4073dea0fbfd0b20e0bf69ffe6390c7f97/cctools/ar/archive.c#L334 - export ZERO_AR_DATE=yes - ;; -esac #################### # Depends Building # @@ -190,8 +178,7 @@ make -C depends --jobs="$JOBS" HOST="$HOST" \ x86_64_linux_AR=x86_64-linux-gnu-gcc-ar \ x86_64_linux_RANLIB=x86_64-linux-gnu-gcc-ranlib \ x86_64_linux_NM=x86_64-linux-gnu-gcc-nm \ - x86_64_linux_STRIP=x86_64-linux-gnu-strip \ - FORCE_USE_SYSTEM_CLANG=1 + x86_64_linux_STRIP=x86_64-linux-gnu-strip ########################### @@ -316,26 +303,16 @@ mkdir -p "$DISTSRC" ( cd installed - case "$HOST" in - *mingw*) - mv --target-directory="$DISTNAME"/lib/ "$DISTNAME"/bin/*.dll - ;; - esac - # Prune libtool and object archives find . -name "lib*.la" -delete find . -name "lib*.a" -delete - # Prune pkg-config files - rm -rf "${DISTNAME}/lib/pkgconfig" - case "$HOST" in *darwin*) ;; *) - # Split binaries and libraries from their debug symbols + # Split binaries from their debug symbols { find "${DISTNAME}/bin" -type f -executable -print0 - find "${DISTNAME}/lib" -type f -print0 } | xargs -0 -P"$JOBS" -I{} "${DISTSRC}/contrib/devtools/split-debug.sh" {} {} {}.dbg ;; esac diff --git a/contrib/guix/libexec/prelude.bash b/contrib/guix/libexec/prelude.bash index 2aacec3eef..f126b2295a 100644 --- a/contrib/guix/libexec/prelude.bash +++ b/contrib/guix/libexec/prelude.bash @@ -51,7 +51,7 @@ fi time-machine() { # shellcheck disable=SC2086 guix time-machine --url=https://git.savannah.gnu.org/git/guix.git \ - --commit=dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a \ + --commit=f0bb724211872cd6158fce6162e0b8c73efed126 \ --cores="$JOBS" \ --keep-failed \ --fallback \ diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index 4a5542d45a..da0891a60f 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -98,7 +98,7 @@ chain for " target " development.")) #:key (base-gcc-for-libc linux-base-gcc) (base-kernel-headers base-linux-kernel-headers) - (base-libc glibc-2.27) + (base-libc glibc-2.31) (base-gcc linux-base-gcc)) "Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values desirable for building BGL Core release binaries." @@ -110,13 +110,15 @@ desirable for building BGL Core release binaries." (define (gcc-mingw-patches gcc) (package-with-extra-patches gcc - (search-our-patches "gcc-remap-guix-store.patch" - "vmov-alignment.patch" - "gcc-broken-longjmp.patch"))) + (search-our-patches "gcc-remap-guix-store.patch"))) + +(define (binutils-mingw-patches binutils) + (package-with-extra-patches binutils + (search-our-patches "binutils-unaligned-default.patch"))) (define (make-mingw-pthreads-cross-toolchain target) "Create a cross-compilation toolchain package for TARGET" - (let* ((xbinutils (cross-binutils target)) + (let* ((xbinutils (binutils-mingw-patches (cross-binutils target))) (pthreads-xlibc mingw-w64-x86_64-winpthreads) (pthreads-xgcc (cross-gcc target #:xgcc (gcc-mingw-patches mingw-w64-base-gcc) @@ -438,23 +440,21 @@ inspecting signatures in Mach-O binaries.") (("-rpath=") "-rpath-link=")) #t)))))))) -(define-public glibc-2.27 +(define-public glibc-2.31 + (let ((commit "8e30f03744837a85e33d84ccd34ed3abe30d37c3")) (package - (inherit glibc-2.31) - (version "2.27") + (inherit glibc) ;; 2.35 + (version "2.31") (source (origin (method git-fetch) (uri (git-reference (url "https://sourceware.org/git/glibc.git") - (commit "73886db6218e613bd6d4edf529f11e008a6c2fa6"))) - (file-name (git-file-name "glibc" "73886db6218e613bd6d4edf529f11e008a6c2fa6")) + (commit commit))) + (file-name (git-file-name "glibc" commit)) (sha256 (base32 - "0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq")) - (patches (search-our-patches "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch" - "glibc-2.27-fcommon.patch" - "glibc-2.27-guix-prefix.patch" - "glibc-2.27-no-librt.patch")))) + "1zi0s9yy5zkisw823vivn7zlj8w6g9p3mm7lmlqiixcxdkz4dbn6")) + (patches (search-our-patches "glibc-guix-prefix.patch")))) (arguments (substitute-keyword-arguments (package-arguments glibc) ((#:configure-flags flags) @@ -470,12 +470,13 @@ inspecting signatures in Mach-O binaries.") (lambda* (#:key outputs #:allow-other-keys) ;; Install the rpc data base file under `$out/etc/rpc'. ;; Otherwise build will fail with "Permission denied." + ;; Can be removed when we are building 2.32 or later. (let ((out (assoc-ref outputs "out"))) (substitute* "sunrpc/Makefile" (("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix) (string-append out "/etc/rpc" suffix "\n")) (("^install-others =.*$") - (string-append "install-others = " out "/etc/rpc\n")))))))))))) + (string-append "install-others = " out "/etc/rpc\n"))))))))))))) (packages->manifest (append @@ -496,7 +497,6 @@ inspecting signatures in Mach-O binaries.") moreutils ;; Compression and archiving tar - bzip2 gzip xz ;; Build tools @@ -517,7 +517,6 @@ inspecting signatures in Mach-O binaries.") (cond ((string-suffix? "-mingw32" target) (list ;; Native GCC 12 toolchain gcc-toolchain-12 - (list gcc-toolchain-12 "static") zip (make-mingw-pthreads-cross-toolchain "x86_64-w64-mingw32") nsis-x86_64 @@ -529,11 +528,11 @@ inspecting signatures in Mach-O binaries.") (list gcc-toolchain-12 "static") (make-BGL-cross-toolchain target))) ((string-contains target "darwin") - (list ;; Native GCC 10 toolchain - gcc-toolchain-10 - (list gcc-toolchain-10 "static") - binutils - clang-toolchain-17 + (list ;; Native GCC 11 toolchain + gcc-toolchain-11 + clang-toolchain-18 + lld-18 + (make-lld-wrapper lld-18 #:lld-as-ld? #t) python-signapple zip)) (else '()))))) diff --git a/contrib/guix/patches/binutils-unaligned-default.patch b/contrib/guix/patches/binutils-unaligned-default.patch new file mode 100644 index 0000000000..d1bc71aee1 --- /dev/null +++ b/contrib/guix/patches/binutils-unaligned-default.patch @@ -0,0 +1,22 @@ +commit 6537181f59ed186a341db621812a6bc35e22eaf6 +Author: fanquake +Date: Wed Apr 10 12:15:52 2024 +0200 + + build: turn on -muse-unaligned-vector-move by default + + This allows us to avoid (more invasively) patching GCC, to avoid + unaligned instruction use. + +diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c +index e0632681477..14a9653abdf 100644 +--- a/gas/config/tc-i386.c ++++ b/gas/config/tc-i386.c +@@ -801,7 +801,7 @@ static unsigned int no_cond_jump_promotion = 0; + static unsigned int sse2avx; + + /* Encode aligned vector move as unaligned vector move. */ +-static unsigned int use_unaligned_vector_move; ++static unsigned int use_unaligned_vector_move = 1; + + /* Encode scalar AVX instructions with specific vector length. */ + static enum diff --git a/contrib/guix/patches/glibc-2.27-fcommon.patch b/contrib/guix/patches/glibc-2.27-fcommon.patch deleted file mode 100644 index f8d14837fc..0000000000 --- a/contrib/guix/patches/glibc-2.27-fcommon.patch +++ /dev/null @@ -1,34 +0,0 @@ -commit 264a4a0dbe1f4369db315080034b500bed66016c -Author: fanquake -Date: Fri May 6 11:03:04 2022 +0100 - - build: use -fcommon to retain legacy behaviour with GCC 10 - - GCC 10 started using -fno-common by default, which causes issues with - the powerpc builds using gibc 2.27. A patch was committed to glibc to fix - the issue, 18363b4f010da9ba459b13310b113ac0647c2fcc but is non-trvial - to backport, and was broken in at least one way, see the followup in - commit 7650321ce037302bfc2f026aa19e0213b8d02fe6. - - For now, retain the legacy GCC behaviour by passing -fcommon when - building glibc. - - https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html. - https://sourceware.org/git/?p=glibc.git;a=commit;h=18363b4f010da9ba459b13310b113ac0647c2fcc - https://sourceware.org/git/?p=glibc.git;a=commit;h=7650321ce037302bfc2f026aa19e0213b8d02fe6 - - This patch can be dropped when we are building with glibc 2.31+. - -diff --git a/Makeconfig b/Makeconfig -index 86a71e5802..aa2166be60 100644 ---- a/Makeconfig -+++ b/Makeconfig -@@ -896,7 +896,7 @@ ifeq "$(strip $(+cflags))" "" - endif # $(+cflags) == "" - - +cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \ -- $(+stack-protector) -+ $(+stack-protector) -fcommon - +gcc-nowarn := -w - - # Don't duplicate options if we inherited variables from the parent. diff --git a/contrib/guix/patches/glibc-2.27-no-librt.patch b/contrib/guix/patches/glibc-2.27-no-librt.patch deleted file mode 100644 index 4f2092ba7e..0000000000 --- a/contrib/guix/patches/glibc-2.27-no-librt.patch +++ /dev/null @@ -1,53 +0,0 @@ -This patch can be dropped when we are building with glibc 2.30+. - -commit 6e41ef56c9baab719a02f1377b1e7ce7bff61e73 -Author: Florian Weimer -Date: Fri Feb 8 10:21:56 2019 +0100 - - rt: Turn forwards from librt to libc into compat symbols [BZ #24194] - - As the result of commit 6e6249d0b461b952d0f544792372663feb6d792a - ("BZ#14743: Move clock_* symbols from librt to libc."), in glibc 2.17, - clock_gettime, clock_getres, clock_settime, clock_getcpuclockid, - clock_nanosleep were added to libc, and the file rt/clock-compat.c - was added with forwarders to the actual implementations in libc. - These forwarders were wrapped in - - #if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_17) - - so that they are not present for newer architectures (such as - powerpc64le) with a 2.17 or later ABI baseline. But the forwarders - were not marked as compatibility symbols. As a result, on older - architectures, historic configure checks such as - - AC_CHECK_LIB(rt, clock_gettime) - - still cause linking against librt, even though this is completely - unnecessary. It also creates a needless porting hazard because - architectures behave differently when it comes to symbol availability. - - Reviewed-by: Carlos O'Donell - -diff --git a/rt/clock-compat.c b/rt/clock-compat.c -index f816973c05..11e71aa890 100644 ---- a/rt/clock-compat.c -+++ b/rt/clock-compat.c -@@ -30,14 +30,16 @@ - #if HAVE_IFUNC - # undef INIT_ARCH - # define INIT_ARCH() --# define COMPAT_REDIRECT(name, proto, arglist) libc_ifunc (name, &__##name) -+# define COMPAT_REDIRECT(name, proto, arglist) libc_ifunc (name, &__##name) \ -+ compat_symbol (librt, name, name, GLIBC_2_2); - #else - # define COMPAT_REDIRECT(name, proto, arglist) \ - int \ - name proto \ - { \ - return __##name arglist; \ -- } -+ } \ -+ compat_symbol (librt, name, name, GLIBC_2_2); - #endif - - COMPAT_REDIRECT (clock_getres, diff --git a/contrib/guix/patches/glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch b/contrib/guix/patches/glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch deleted file mode 100644 index ab8ae9c023..0000000000 --- a/contrib/guix/patches/glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch +++ /dev/null @@ -1,78 +0,0 @@ -Note that this has been modified from the original commit, to use __has_include -instead of __has_include__, as the later was causing build failures with GCC 10. -See also: http://lists.busybox.net/pipermail/buildroot/2020-July/590376.html. - -https://sourceware.org/git/?p=glibc.git;a=commit;h=0b9c84906f653978fb8768c7ebd0ee14a47e662e - -This patch can be dropped when we are building with glibc 2.28+. - -From 562c52cc81a4e456a62e6455feb32732049e9070 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Mon, 31 Dec 2018 09:26:42 -0800 -Subject: [PATCH] riscv: Use __has_include__ to include [BZ - #24022] - - has been removed by - -commit 27f8899d6002e11a6e2d995e29b8deab5aa9cc25 -Author: David Abdurachmanov -Date: Thu Nov 8 20:02:39 2018 +0100 - - riscv: add asm/unistd.h UAPI header - - Marcin Juszkiewicz reported issues while generating syscall table for riscv - using 4.20-rc1. The patch refactors our unistd.h files to match some other - architectures. - - - Add asm/unistd.h UAPI header, which has __ARCH_WANT_NEW_STAT only for 64-bit - - Remove asm/syscalls.h UAPI header and merge to asm/unistd.h - - Adjust kernel asm/unistd.h - - So now asm/unistd.h UAPI header should show all syscalls for riscv. - - may be restored by - -Subject: [PATCH] riscv: restore asm/syscalls.h UAPI header -Date: Tue, 11 Dec 2018 09:09:35 +0100 - -UAPI header asm/syscalls.h was merged into UAPI asm/unistd.h header, -which did resolve issue with missing syscalls macros resulting in -glibc (2.28) build failure. It also broke glibc in a different way: -asm/syscalls.h is being used by glibc. I noticed this while doing -Fedora 30/Rawhide mass rebuild. - -The patch returns asm/syscalls.h header and incl. it into asm/unistd.h. -I plan to send a patch to glibc to use asm/unistd.h instead of -asm/syscalls.h - -In the meantime, we use __has_include__, which was added to GCC 5, to -check if exists before including it. Tested with -build-many-glibcs.py for riscv against kernel 4.19.12 and 4.20-rc7. - - [BZ #24022] - * sysdeps/unix/sysv/linux/riscv/flush-icache.c: Check if - exists with __has_include__ before including it. ---- - sysdeps/unix/sysv/linux/riscv/flush-icache.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/sysdeps/unix/sysv/linux/riscv/flush-icache.c b/sysdeps/unix/sysv/linux/riscv/flush-icache.c -index d612ef4c6c..0b2042620b 100644 ---- a/sysdeps/unix/sysv/linux/riscv/flush-icache.c -+++ b/sysdeps/unix/sysv/linux/riscv/flush-icache.c -@@ -21,7 +21,11 @@ - #include - #include - #include --#include -+#if __has_include () -+# include -+#else -+# include -+#endif - - typedef int (*func_type) (void *, void *, unsigned long int); - --- -2.31.1 - diff --git a/contrib/guix/patches/glibc-2.27-guix-prefix.patch b/contrib/guix/patches/glibc-guix-prefix.patch similarity index 78% rename from contrib/guix/patches/glibc-2.27-guix-prefix.patch rename to contrib/guix/patches/glibc-guix-prefix.patch index dc515907ff..60e12ca525 100644 --- a/contrib/guix/patches/glibc-2.27-guix-prefix.patch +++ b/contrib/guix/patches/glibc-guix-prefix.patch @@ -4,19 +4,13 @@ hash for the same package will differ when on different architectures. In order to be reproducible regardless of the architecture used to build the package, map all guix store prefixes to something fixed, e.g. /usr. -We might be able to drop this in favour of using --with-nonshared-cflags -when we begin using newer versions of glibc. - --- a/Makeconfig +++ b/Makeconfig -@@ -992,6 +992,10 @@ object-suffixes := +@@ -1007,6 +1007,7 @@ object-suffixes := CPPFLAGS-.o = $(pic-default) # libc.a must be compiled with -fPIE/-fpie for static PIE. CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) $(pie-default) -+ -+# Map Guix store paths to /usr +CFLAGS-.o += `find /gnu/store -maxdepth 1 -mindepth 1 -type d -exec echo -n " -ffile-prefix-map={}=/usr" \;` -+ libtype.o := lib%.a object-suffixes += .o ifeq (yes,$(build-shared)) diff --git a/contrib/guix/patches/vmov-alignment.patch b/contrib/guix/patches/vmov-alignment.patch deleted file mode 100644 index 96e1cb7cd1..0000000000 --- a/contrib/guix/patches/vmov-alignment.patch +++ /dev/null @@ -1,288 +0,0 @@ -Description: Use unaligned VMOV instructions -Author: Stephen Kitt -Bug-Debian: https://bugs.debian.org/939559 -See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412 - -Based on a patch originally by Claude Heiland-Allen - ---- a/gcc/config/i386/sse.md -+++ b/gcc/config/i386/sse.md -@@ -1058,17 +1058,11 @@ - { - if (FLOAT_MODE_P (GET_MODE_INNER (mode))) - { -- if (misaligned_operand (operands[1], mode)) -- return "vmovu\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"; -- else -- return "vmova\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"; -+ return "vmovu\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"; - } - else - { -- if (misaligned_operand (operands[1], mode)) -- return "vmovdqu\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"; -- else -- return "vmovdqa\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"; -+ return "vmovdqu\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"; - } - } - [(set_attr "type" "ssemov") -@@ -1184,17 +1178,11 @@ - { - if (FLOAT_MODE_P (GET_MODE_INNER (mode))) - { -- if (misaligned_operand (operands[0], mode)) -- return "vmovu\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -- else -- return "vmova\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -+ return "vmovu\t{%1, %0%{%2%}|%0%{%2%}, %1}"; - } - else - { -- if (misaligned_operand (operands[0], mode)) -- return "vmovdqu\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -- else -- return "vmovdqa\t{%1, %0%{%2%}|%0%{%2%}, %1}"; -+ return "vmovdqu\t{%1, %0%{%2%}|%0%{%2%}, %1}"; - } - } - [(set_attr "type" "ssemov") -@@ -7806,7 +7794,7 @@ - "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))" - "@ - %vmovlps\t{%1, %0|%q0, %1} -- %vmovaps\t{%1, %0|%0, %1} -+ %vmovups\t{%1, %0|%0, %1} - %vmovlps\t{%1, %d0|%d0, %q1}" - [(set_attr "type" "ssemov") - (set_attr "prefix" "maybe_vex") -@@ -13997,29 +13985,15 @@ - switch (mode) - { - case E_V8DFmode: -- if (misaligned_operand (operands[2], mode)) -- return "vmovupd\t{%2, %x0|%x0, %2}"; -- else -- return "vmovapd\t{%2, %x0|%x0, %2}"; -+ return "vmovupd\t{%2, %x0|%x0, %2}"; - case E_V16SFmode: -- if (misaligned_operand (operands[2], mode)) -- return "vmovups\t{%2, %x0|%x0, %2}"; -- else -- return "vmovaps\t{%2, %x0|%x0, %2}"; -+ return "vmovups\t{%2, %x0|%x0, %2}"; - case E_V8DImode: -- if (misaligned_operand (operands[2], mode)) -- return which_alternative == 2 ? "vmovdqu64\t{%2, %x0|%x0, %2}" -+ return which_alternative == 2 ? "vmovdqu64\t{%2, %x0|%x0, %2}" - : "vmovdqu\t{%2, %x0|%x0, %2}"; -- else -- return which_alternative == 2 ? "vmovdqa64\t{%2, %x0|%x0, %2}" -- : "vmovdqa\t{%2, %x0|%x0, %2}"; - case E_V16SImode: -- if (misaligned_operand (operands[2], mode)) -- return which_alternative == 2 ? "vmovdqu32\t{%2, %x0|%x0, %2}" -+ return which_alternative == 2 ? "vmovdqu32\t{%2, %x0|%x0, %2}" - : "vmovdqu\t{%2, %x0|%x0, %2}"; -- else -- return which_alternative == 2 ? "vmovdqa32\t{%2, %x0|%x0, %2}" -- : "vmovdqa\t{%2, %x0|%x0, %2}"; - default: - gcc_unreachable (); - } -@@ -21225,63 +21199,27 @@ - switch (get_attr_mode (insn)) - { - case MODE_V16SF: -- if (misaligned_operand (operands[1], mode)) -- return "vmovups\t{%1, %t0|%t0, %1}"; -- else -- return "vmovaps\t{%1, %t0|%t0, %1}"; -+ return "vmovups\t{%1, %t0|%t0, %1}"; - case MODE_V8DF: -- if (misaligned_operand (operands[1], mode)) -- return "vmovupd\t{%1, %t0|%t0, %1}"; -- else -- return "vmovapd\t{%1, %t0|%t0, %1}"; -+ return "vmovupd\t{%1, %t0|%t0, %1}"; - case MODE_V8SF: -- if (misaligned_operand (operands[1], mode)) -- return "vmovups\t{%1, %x0|%x0, %1}"; -- else -- return "vmovaps\t{%1, %x0|%x0, %1}"; -+ return "vmovups\t{%1, %x0|%x0, %1}"; - case MODE_V4DF: -- if (misaligned_operand (operands[1], mode)) -- return "vmovupd\t{%1, %x0|%x0, %1}"; -- else -- return "vmovapd\t{%1, %x0|%x0, %1}"; -+ return "vmovupd\t{%1, %x0|%x0, %1}"; - case MODE_XI: -- if (misaligned_operand (operands[1], mode)) -- { -- if (which_alternative == 2) -- return "vmovdqu\t{%1, %t0|%t0, %1}"; -- else if (GET_MODE_SIZE (mode) == 8) -- return "vmovdqu64\t{%1, %t0|%t0, %1}"; -- else -- return "vmovdqu32\t{%1, %t0|%t0, %1}"; -- } -+ if (which_alternative == 2) -+ return "vmovdqu\t{%1, %t0|%t0, %1}"; -+ else if (GET_MODE_SIZE (mode) == 8) -+ return "vmovdqu64\t{%1, %t0|%t0, %1}"; - else -- { -- if (which_alternative == 2) -- return "vmovdqa\t{%1, %t0|%t0, %1}"; -- else if (GET_MODE_SIZE (mode) == 8) -- return "vmovdqa64\t{%1, %t0|%t0, %1}"; -- else -- return "vmovdqa32\t{%1, %t0|%t0, %1}"; -- } -+ return "vmovdqu32\t{%1, %t0|%t0, %1}"; - case MODE_OI: -- if (misaligned_operand (operands[1], mode)) -- { -- if (which_alternative == 2) -- return "vmovdqu\t{%1, %x0|%x0, %1}"; -- else if (GET_MODE_SIZE (mode) == 8) -- return "vmovdqu64\t{%1, %x0|%x0, %1}"; -- else -- return "vmovdqu32\t{%1, %x0|%x0, %1}"; -- } -+ if (which_alternative == 2) -+ return "vmovdqu\t{%1, %x0|%x0, %1}"; -+ else if (GET_MODE_SIZE (mode) == 8) -+ return "vmovdqu64\t{%1, %x0|%x0, %1}"; - else -- { -- if (which_alternative == 2) -- return "vmovdqa\t{%1, %x0|%x0, %1}"; -- else if (GET_MODE_SIZE (mode) == 8) -- return "vmovdqa64\t{%1, %x0|%x0, %1}"; -- else -- return "vmovdqa32\t{%1, %x0|%x0, %1}"; -- } -+ return "vmovdqu32\t{%1, %x0|%x0, %1}"; - default: - gcc_unreachable (); - } ---- a/gcc/config/i386/i386.cc -+++ b/gcc/config/i386/i386.cc -@@ -5418,17 +5418,15 @@ ix86_get_ssemov (rtx *operands, unsigned size, - { - case opcode_int: - if (scalar_mode == E_HFmode) -- opcode = (misaligned_p -- ? (TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64") -- : "vmovdqa64"); -+ opcode = TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64"; - else -- opcode = misaligned_p ? "vmovdqu32" : "vmovdqa32"; -+ opcode = "vmovdqu32"; - break; - case opcode_float: -- opcode = misaligned_p ? "vmovups" : "vmovaps"; -+ opcode = "vmovups"; - break; - case opcode_double: -- opcode = misaligned_p ? "vmovupd" : "vmovapd"; -+ opcode = "vmovupd"; - break; - } - } -@@ -5438,29 +5436,21 @@ ix86_get_ssemov (rtx *operands, unsigned size, - { - case E_HFmode: - if (evex_reg_p) -- opcode = (misaligned_p -- ? (TARGET_AVX512BW -- ? "vmovdqu16" -- : "vmovdqu64") -- : "vmovdqa64"); -+ opcode = TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64"; - else -- opcode = (misaligned_p -- ? (TARGET_AVX512BW -- ? "vmovdqu16" -- : "%vmovdqu") -- : "%vmovdqa"); -+ opcode = TARGET_AVX512BW ? "vmovdqu16" : "%vmovdqu"; - break; - case E_SFmode: -- opcode = misaligned_p ? "%vmovups" : "%vmovaps"; -+ opcode = "%vmovups"; - break; - case E_DFmode: -- opcode = misaligned_p ? "%vmovupd" : "%vmovapd"; -+ opcode = "%vmovupd"; - break; - case E_TFmode: - if (evex_reg_p) -- opcode = misaligned_p ? "vmovdqu64" : "vmovdqa64"; -+ opcode = "vmovdqu64"; - else -- opcode = misaligned_p ? "%vmovdqu" : "%vmovdqa"; -+ opcode = "%vmovdqu"; - break; - default: - gcc_unreachable (); -@@ -5472,48 +5462,32 @@ ix86_get_ssemov (rtx *operands, unsigned size, - { - case E_QImode: - if (evex_reg_p) -- opcode = (misaligned_p -- ? (TARGET_AVX512BW -- ? "vmovdqu8" -- : "vmovdqu64") -- : "vmovdqa64"); -+ opcode = TARGET_AVX512BW ? "vmovdqu8" : "vmovdqu64"; - else -- opcode = (misaligned_p -- ? (TARGET_AVX512BW -- ? "vmovdqu8" -- : "%vmovdqu") -- : "%vmovdqa"); -+ opcode = TARGET_AVX512BW ? "vmovdqu8" : "%vmovdqu"; - break; - case E_HImode: - if (evex_reg_p) -- opcode = (misaligned_p -- ? (TARGET_AVX512BW -- ? "vmovdqu16" -- : "vmovdqu64") -- : "vmovdqa64"); -+ opcode = TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64"; - else -- opcode = (misaligned_p -- ? (TARGET_AVX512BW -- ? "vmovdqu16" -- : "%vmovdqu") -- : "%vmovdqa"); -+ opcode = TARGET_AVX512BW ? "vmovdqu16" : "%vmovdqu"; - break; - case E_SImode: - if (evex_reg_p) -- opcode = misaligned_p ? "vmovdqu32" : "vmovdqa32"; -+ opcode = "vmovdqu32"; - else -- opcode = misaligned_p ? "%vmovdqu" : "%vmovdqa"; -+ opcode = "%vmovdqu"; - break; - case E_DImode: - case E_TImode: - case E_OImode: - if (evex_reg_p) -- opcode = misaligned_p ? "vmovdqu64" : "vmovdqa64"; -+ opcode = "vmovdqu64"; - else -- opcode = misaligned_p ? "%vmovdqu" : "%vmovdqa"; -+ opcode = "%vmovdqu"; - break; - case E_XImode: -- opcode = misaligned_p ? "vmovdqu64" : "vmovdqa64"; -+ opcode = "vmovdqu64"; - break; - default: - gcc_unreachable (); diff --git a/contrib/macdeploy/README.md b/contrib/macdeploy/README.md index d555f3bc2e..c5619d10dc 100644 --- a/contrib/macdeploy/README.md +++ b/contrib/macdeploy/README.md @@ -56,46 +56,22 @@ The `sha256sum` should be `c0c2e7bb92c1fee0c4e9f3a485e4530786732d6c6dd9e9f418c28 ## Deterministic macOS App Notes -macOS Applications are created in Linux by combining a recent `clang` and the Apple -`binutils` (`ld`, `ar`, etc). +macOS Applications are created on Linux using a recent LLVM. -Apple uses `clang` extensively for development and has upstreamed the necessary -functionality so that a vanilla clang can take advantage. It supports the use of `-F`, -`-target`, `-mmacosx-version-min`, and `-isysroot`, which are all necessary when -building for macOS. +All builds must target an Apple SDK. These SDKs are free to download, but not redistributable. +See the SDK Extraction notes above for how to obtain it. -Apple's version of `binutils` (called `cctools`) contains lots of functionality missing in the -FSF's `binutils`. In addition to extra linker options for frameworks and sysroots, several -other tools are needed as well such as `install_name_tool`, `lipo`, and `nmedit`. These -do not build under Linux, so they have been patched to do so. The work here was used as -a starting point: [mingwandroid/toolchain4](https://github.com/mingwandroid/toolchain4). +The Guix build process has been designed to avoid including the SDK's files in Guix's outputs. +All interim tarballs are fully deterministic and may be freely redistributed. -In order to build a working toolchain, the following source packages are needed from -Apple: `cctools`, `dyld`, and `ld64`. - -These tools inject timestamps by default, which produce non-deterministic binaries. The -`ZERO_AR_DATE` environment variable is used to disable that. - -This version of `cctools` has been patched to use the current version of `clang`'s headers -and its `libLTO.so` rather than those from `llvmgcc`, as it was originally done in `toolchain4`. - -To complicate things further, all builds must target an Apple SDK. These SDKs are free to -download, but not redistributable. See the SDK Extraction notes above for how to obtain it. - -The Guix process builds 2 sets of files: Linux tools, then Apple binaries which are -created using these tools. The build process has been designed to avoid including the -SDK's files in Guix's outputs. All interim tarballs are fully deterministic and may be freely -redistributed. - -As of OS X 10.9 Mavericks, using an Apple-blessed key to sign binaries is a requirement in -order to satisfy the new Gatekeeper requirements. Because this private key cannot be -shared, we'll have to be a bit creative in order for the build process to remain somewhat -deterministic. Here's how it works: +Using an Apple-blessed key to sign binaries is a requirement to produce (distributable) macOS +binaries. Because this private key cannot be shared, we'll have to be a bit creative in order +for the build process to remain somewhat deterministic. Here's how it works: - Builders use Guix to create an unsigned release. This outputs an unsigned ZIP which - users may choose to bless and run. It also outputs an unsigned app structure in the form - of a tarball. + users may choose to bless, self-codesign, and run. It also outputs an unsigned app structure + in the form of a tarball. - The Apple keyholder uses this unsigned app to create a detached signature, using the - script that is also included there. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs). -- Builders feed the unsigned app + detached signature back into Guix. It uses the - pre-built tools to recombine the pieces into a deterministic ZIP. + included script. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs). +- Builders feed the unsigned app + detached signature back into Guix, which combines the + pieces into a deterministic ZIP. diff --git a/contrib/macdeploy/gen-sdk b/contrib/macdeploy/gen-sdk index b73f5cba14..86a6262b5c 100755 --- a/contrib/macdeploy/gen-sdk +++ b/contrib/macdeploy/gen-sdk @@ -8,21 +8,6 @@ import gzip import os import contextlib -# monkey-patch Python 3.8 and older to fix wrong TAR header handling -# see https://github.com/bitcoin/bitcoin/pull/24534 -# and https://github.com/python/cpython/pull/18080 for more info -if sys.version_info < (3, 9): - _old_create_header = tarfile.TarInfo._create_header - def _create_header(info, format, encoding, errors): - buf = _old_create_header(info, format, encoding, errors) - # replace devmajor/devminor with binary zeroes - buf = buf[:329] + bytes(16) + buf[345:] - # recompute checksum - chksum = tarfile.calc_chksums(buf)[0] - buf = buf[:-364] + bytes("%06o\0" % chksum, "ascii") + buf[-357:] - return buf - tarfile.TarInfo._create_header = staticmethod(_create_header) - @contextlib.contextmanager def cd(path): """Context manager that restores PWD even if an exception was raised.""" diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus index 487a723721..e6b146f41f 100755 --- a/contrib/macdeploy/macdeployqtplus +++ b/contrib/macdeploy/macdeployqtplus @@ -77,7 +77,7 @@ class FrameworkInfo(object): bundleBinaryDirectory = "Contents/MacOS" @classmethod - def fromOtoolLibraryLine(cls, line: str) -> Optional['FrameworkInfo']: + def fromLibraryLine(cls, line: str) -> Optional['FrameworkInfo']: # Note: line must be trimmed if line == "": return None @@ -88,8 +88,8 @@ class FrameworkInfo(object): m = cls.reOLine.match(line) if m is None: - raise RuntimeError(f"otool line could not be parsed: {line}") - + raise RuntimeError(f"Line could not be parsed: {line}") + path = m.group(1) info = cls() @@ -120,8 +120,8 @@ class FrameworkInfo(object): break i += 1 if i == len(parts): - raise RuntimeError(f"Could not find .framework or .dylib in otool line: {line}") - + raise RuntimeError(f"Could not find .framework or .dylib in line: {line}") + info.frameworkName = parts[i] info.frameworkDirectory = "/".join(parts[:i]) info.frameworkPath = os.path.join(info.frameworkDirectory, info.frameworkName) @@ -182,24 +182,24 @@ class DeploymentInfo(object): return False def getFrameworks(binaryPath: str, verbose: int) -> list[FrameworkInfo]: + objdump = os.getenv("OBJDUMP", "objdump") if verbose: - print(f"Inspecting with otool: {binaryPath}") - otoolbin=os.getenv("OTOOL", "otool") - otool = run([otoolbin, "-L", binaryPath], stdout=PIPE, stderr=PIPE, text=True) - if otool.returncode != 0: - sys.stderr.write(otool.stderr) + print(f"Inspecting with {objdump}: {binaryPath}") + output = run([objdump, "--macho", "--dylibs-used", binaryPath], stdout=PIPE, stderr=PIPE, text=True) + if output.returncode != 0: + sys.stderr.write(output.stderr) sys.stderr.flush() - raise RuntimeError(f"otool failed with return code {otool.returncode}") + raise RuntimeError(f"{objdump} failed with return code {output.returncode}") - otoolLines = otool.stdout.split("\n") - otoolLines.pop(0) # First line is the inspected binary + lines = output.stdout.split("\n") + lines.pop(0) # First line is the inspected binary if ".framework" in binaryPath or binaryPath.endswith(".dylib"): - otoolLines.pop(0) # Frameworks and dylibs list themselves as a dependency. - + lines.pop(0) # Frameworks and dylibs list themselves as a dependency. + libraries = [] - for line in otoolLines: + for line in lines: line = line.replace("@loader_path", os.path.dirname(binaryPath)) - info = FrameworkInfo.fromOtoolLibraryLine(line.strip()) + info = FrameworkInfo.fromLibraryLine(line.strip()) if info is not None: if verbose: print("Found framework:") diff --git a/contrib/seeds/makeseeds.py b/contrib/seeds/makeseeds.py index 14ab213fb8..c30bc68097 100755 --- a/contrib/seeds/makeseeds.py +++ b/contrib/seeds/makeseeds.py @@ -9,11 +9,14 @@ import argparse import collections import ipaddress +from pathlib import Path import re import sys from typing import Union -from asmap import ASMap, net_to_prefix +asmap_dir = Path(__file__).parent.parent / "asmap" +sys.path.append(str(asmap_dir)) +from asmap import ASMap, net_to_prefix # noqa: E402 NSEEDS=512 diff --git a/contrib/signet/miner b/contrib/signet/miner index e5daf9f993..813d11e74a 100755 --- a/contrib/signet/miner +++ b/contrib/signet/miner @@ -58,14 +58,14 @@ def signet_txs(block, challenge): sd += struct.pack(" bool: VERSION_FORMAT = ".[.][-rc[0-9]][-platform]" -VERSION_EXAMPLE = "22.0-x86_64 or 23.1-rc1-darwin" +VERSION_EXAMPLE = "22.0 or 23.1-rc1-darwin.dmg or 27.0-x86_64-linux-gnu" parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( @@ -200,20 +200,14 @@ def bool_from_env(key, default=False) -> bool: VERSION_EXAMPLE = "22.0-x86_64 or 0.21.0-rc2-osx" def parse_version_string(version_str): - parts = version_str.split('-') - version_base = parts[0] - version_rc = "" - version_os = "" - if len(parts) == 2: # "-rcN" or "version-platform" - if "rc" in parts[1]: - version_rc = parts[1] - else: - version_os = parts[1] - elif len(parts) == 3: # "-rcN-platform" - version_rc = parts[1] - version_os = parts[2] + # "[-rcN][-platform]" + version_base, _, platform = version_str.partition('-') + rc = "" + if platform.startswith("rc"): # "-rcN[-platform]" + rc, _, platform = platform.partition('-') + # else "" or "-platform" - return version_base, version_rc, version_os + return version_base, rc, platform def download_with_wget(remote_file, local_file): @@ -625,7 +619,9 @@ def cleanup(): # Extract hashes and filenames hashes_to_verify = parse_sums_file(SUMS_FILENAME, os_filter) if not hashes_to_verify: - log.error("no files matched the platform specified") + available_versions = ["-".join(line[1].split("-")[2:]) for line in parse_sums_file(SUMS_FILENAME, [])] + closest_match = difflib.get_close_matches(os_filter, available_versions, cutoff=0, n=1)[0] + log.error(f"No files matched the platform specified. Did you mean: {closest_match}") return ReturnCode.NO_BINARIES_MATCH # remove binaries that are known not to be hosted by bitcoincore.org diff --git a/contrib/windeploy/win-codesign.cert b/contrib/windeploy/win-codesign.cert index 22f17296b6..ec60a3018d 100644 --- a/contrib/windeploy/win-codesign.cert +++ b/contrib/windeploy/win-codesign.cert @@ -1,8 +1,8 @@ -----BEGIN CERTIFICATE----- -MIIHfDCCBWSgAwIBAgIQCmVvdQal72U2QxbUTT3SRTANBgkqhkiG9w0BAQsFADBp +MIIHeTCCBWGgAwIBAgIQBzR46J2yq3g++NbQS/BBVDANBgkqhkiG9w0BAQsFADBp MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT OERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0 -IDIwMjEgQ0ExMB4XDTIyMDUyNDAwMDAwMFoXDTI0MDUyOTIzNTk1OVowgYAxCzAJ +IDIwMjEgQ0ExMB4XDTI0MDUyMjAwMDAwMFoXDTI3MDUzMTIzNTk1OVowgYAxCzAJ BgNVBAYTAlVTMREwDwYDVQQIEwhEZWxhd2FyZTEOMAwGA1UEBxMFTGV3ZXMxJjAk BgNVBAoTHUJpdGNvaW4gQ29yZSBDb2RlIFNpZ25pbmcgTExDMSYwJAYDVQQDEx1C aXRjb2luIENvcmUgQ29kZSBTaWduaW5nIExMQzCCAiIwDQYJKoZIhvcNAQEBBQAD @@ -17,28 +17,28 @@ CDvScIgnQXmk+cbKMBtg9kM0F+aLWsN2xVf0uAj3U7sdXLrfJeW0DZIktWtTBQzX O/OE4Ka+1WFnDg0HJIih0cTjl9YYvfe53L4pCGy+qGt/XGBRqCMfXp3g+H9FGR5r pensVVcsrv3GbTfYdlpdmp9OHH5G57GTAZueobCZg7r7RKK0zPU9EiTLJxzyXuai v/Ksd8eIhHRjewMaQuAtQM1tO+oKAbLF0v2M7v7/aVT76X32JllYAizm3zjvAgMB -AAGjggIGMIICAjAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNV -HQ4EFgQUvCpU58PIuofv0kHJ3Ty0YDKEy3cwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud -JQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwz -LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5 -NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5j -b20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIx -Q0ExLmNybDA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRw -Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsG +AAGjggIDMIIB/zAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNV +HQ4EFgQUvCpU58PIuofv0kHJ3Ty0YDKEy3cwPgYDVR0gBDcwNTAzBgZngQwBBAEw +KTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4GA1Ud +DwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzCBtQYDVR0fBIGtMIGqMFOg +UaBPhk1odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRD +b2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDBToFGgT4ZNaHR0cDov +L2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdS +U0E0MDk2U0hBMzg0MjAyMUNBMS5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsG AQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0 dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVT -aWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJ -KoZIhvcNAQELBQADggIBABhpTZufRws1vrtI0xB1/UWrSEJxdPHivfpXE708dzum -Jh3TFzpsEUCQX5BJJet1l7x92sKNeAL7votA+8O8YvMD64Kim7VKA2BB8AOHKQbp -r1c2iZBwwofInviRYvsrvQta6KBy2KOe1L/l0KnpUazL9Tv4VKvuWAw/Qc0/eTQr -NZRsmADORxnZ1qW+SpF+/WbazIYjod/Oqb1U3on+PzyiGD3SjzNhsdFRptqzrIaY -UVV+2XHG4fN6A8wkyQL5NIVXGiK7rqS5VrRAv58Lf1ZZTghdAL+5SySE0OsR9t0K -W73ZB9pxbuZZ6Zfxjotjw+IilCEm3ADbc7Eb2ijI4x8mix0XWMUrhL34s7/jRyDi -P+30aSgjWp611tp/EYRW5kpIaFR8AesDdM0DSSCCRXOMwQG2Tq2+CnqItB5oLNPp -2XySwlIWvmjbzsREfIpE3yh3bxmHY+vFIc2R0nNkbWNIT6AGtaEQ7oWkgpK8YMkA -QCf4EUC4Qa7qHiH6YSmYJhjApBLC7UDwevgwxuDrwimWAj+tDkzdnENMcBp4SAy6 -LwUuDi2IU6HRSXWdh2YEkDbc3FdwknnnEWaB4dlRL85YjHyLXN0KiE7SKTj1LfR4 -dGeDqVUlDj9D5+X4a7F89wLP/um40/52HUQv5t5WcNr/47r9aVkx9DHs1b8oUnLg +aWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAkGA1UdEwQCMAAwDQYJKoZI +hvcNAQELBQADggIBADdniG9IY9oOfw1e3+uc2lR4hoZqquJQRrCnbWJ1npnCTavI +CfcEEMuQ5ztg4TR7tQNj2KcaHWKuPYxEz2bg8HpSPG27lnXaz4pLgfqvjdZWNH2v +W6DGRUAwuMQHSV0qhuRcJPZuhwSFx/8y4r++jIcBxCbt/Jprt/bqc8vZZZzTDPfG +M6cGaKMDvF//OkUPVzh4s557kV7+LoaX8CigiACZky3Zj3tkQfJYkEvdQseNvX49 +CMJ+cjN+fGweshbn/DszAT5oXW5l2PXeceyGrE+5Ex1ELXCPqNj8ZSn+S9IKZOag +zDFBA93RTVD438peXPz//xgusgnmSqSPS5tCp9KSvew81acu4v/+egg9EgSSx5Ho +9fkOX7JuygvN3r3UZqsddxdwf2dPvBDYlMdieF8qsR7H5DQPQoaTVrIhW4TFtJl/ +UPjVlnDwu+yvMC70F+CaVgQs01uZ0VKuG3KNkkEj6+V/SM54NVVgcY/Q7llKIFA8 +Qk8Ip8/83cVBptKW+OU+i2ZwoYskLbdfDE31X2knUIouNZgBBMhzc5WjJCEGXAPm +9xYZMn87cc+ejxCw6/WC4b6tDCziO8drq76Pl6LTNPOtRkEVqt12p8Uqi9PgznUB +bdHeoF5XHt1Ca2ySpSYuMz5djwIC2ws8kiMm44/AyTm6dwRcesiOTqnaRc+t -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIGsDCCBJigAwIBAgIQCK1AsmDSnEyfXs2pvZOu2TANBgkqhkiG9w0BAQwFADBi diff --git a/debian.minimal/build-in-docker.sh b/debian.minimal/build-in-docker.sh index fe96797d96..494fb6ea6e 100755 --- a/debian.minimal/build-in-docker.sh +++ b/debian.minimal/build-in-docker.sh @@ -21,8 +21,8 @@ docker exec $container useradd user docker exec $container mkdir /home/user docker exec $container chown user.user /home/user docker exec $container sudo -u user mkdir /home/user/build -docker cp ../bitgesell_0.1.12.dsc $container:/root/repo/ -docker cp ../bitgesell_0.1.12.tar.xz $container:/root/repo/ +docker cp ../bitgesell_0.1.13.dsc $container:/root/repo/ +docker cp ../bitgesell_0.1.13.tar.xz $container:/root/repo/ # docker exec -w /root/repo $container sh -c "dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz" docker exec -w /root/repo $container sh -c "apt-ftparchive sources . > Sources" docker exec $container sh -c "echo deb-src [trusted=yes] file:/root/repo ./ >> /etc/apt/sources.list" @@ -31,5 +31,5 @@ docker exec $container apt-get -y build-dep bitgesell docker exec $container chmod a+rX /root docker exec $container chmod -R a+rX /root/repo docker exec -w /home/user/build $container sudo -u user apt-get -y source bitgesell -docker exec -w /home/user/build/bitgesell-0.1.12 $container sudo -u user debuild -b -docker cp $container:/home/user/build/bitgesell_0.1.12_amd64.deb bitgesell_0.1.12_amd64.deb +docker exec -w /home/user/build/bitgesell-0.1.13 $container sudo -u user debuild -b +docker cp $container:/home/user/build/bitgesell_0.1.13_amd64.deb bitgesell_0.1.13_amd64.deb diff --git a/debian.minimal/changelog b/debian.minimal/changelog index edaf189bf5..cc411a4539 100644 --- a/debian.minimal/changelog +++ b/debian.minimal/changelog @@ -1,3 +1,9 @@ +bitgesell (0.1.13) UNRELEASED; urgency=low + + * Bitcoin code synced + + -- Mathias van Orton Fri, 2 Aug 2024 08:50:00 +0000 + bitgesell (0.1.12) UNRELEASED; urgency=low * Bitcoin code synced diff --git a/debian.minimal/control b/debian.minimal/control index 7b4a407e12..8995d832b7 100644 --- a/debian.minimal/control +++ b/debian.minimal/control @@ -9,7 +9,7 @@ Homepage: https://github.com/wu-emma/bitgesell Package: bitgesell Architecture: any Depends: libc6 (>= 2.27), libstdc++6 (>= 8.4.0), libbz2-1.0 (>= 1.0.6), liblzma5 (>= 5.2.2), zlib1g (>= 1:1.1.4), libsqlite3-dev, - openssl, perl-modules-5.26 | perl-modules-5.28 | perl-modules-5.30, ${misc:Depends} + openssl, perl-modules-5.34, ${misc:Depends} Description: BGL is an experimental digital currency that enables instant payments to anyone, anywhere in the world BGL is an experimental digital currency that enables instant payments to anyone, anywhere in the world. BGL uses peer-to-peer technology to operate with no central authority: diff --git a/debian.minimal/files b/debian.minimal/files index 1001f5af32..b3087511ce 100644 --- a/debian.minimal/files +++ b/debian.minimal/files @@ -1 +1 @@ -bitgesell_0.1.12_source.buildinfo misc optional +bitgesell_0.1.13_source.buildinfo misc optional diff --git a/debian.minimal/test.sh b/debian.minimal/test.sh index 3ac0cab23d..6f0e177ba7 100755 --- a/debian.minimal/test.sh +++ b/debian.minimal/test.sh @@ -12,7 +12,7 @@ container=`docker run -dit -e TZ='Etc/UTC' -e DEBIAN_FRONTEND='noninteractive' u docker exec $container apt-get -y update docker exec $container apt-get -y install apt-utils #dpkg-dev docker exec $container mkdir /root/repo -docker cp ./bitgesell_0.1.12_amd64.deb $container:/root/repo +docker cp ./bitgesell_0.1.13_amd64.deb $container:/root/repo # docker exec -w /root/repo $container sh -c "dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz" docker exec -w /root/repo $container sh -c "apt-ftparchive packages . > Packages" docker exec $container sh -c "echo deb [trusted=yes] file:/root/repo ./ >> /etc/apt/sources.list" diff --git a/debian.qt/build-in-docker.sh b/debian.qt/build-in-docker.sh index 59ab623f2c..014c7b885f 100755 --- a/debian.qt/build-in-docker.sh +++ b/debian.qt/build-in-docker.sh @@ -23,8 +23,8 @@ docker exec $container useradd user docker exec $container mkdir /home/user docker exec $container chown user.user /home/user docker exec $container sudo -u user mkdir /home/user/build -docker cp ../bitgesell-qt_0.1.12.dsc $container:/root/repo/ -docker cp ../bitgesell-qt_0.1.12.tar.xz $container:/root/repo/ +docker cp ../bitgesell-qt_0.1.13.dsc $container:/root/repo/ +docker cp ../bitgesell-qt_0.1.13.tar.xz $container:/root/repo/ # docker exec -w /root/repo $container sh -c "dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz" docker exec -w /root/repo $container sh -c "apt-ftparchive sources . > Sources" @@ -34,6 +34,6 @@ docker exec $container apt-get -y build-dep bitgesell-qt docker exec $container chmod a+rX /root docker exec $container chmod -R a+rX /root/repo docker exec -w /home/user/build $container sudo -u user apt-get -y source bitgesell-qt -docker exec -w /home/user/build/bitgesell-qt-0.1.12 $container sudo -u user debuild -b -docker cp $container:/home/user/build/bitgesell-qt_0.1.12_amd64.deb bitgesell-qt_0.1.12_amd64.deb -docker cp $container:/home/user/build/bitgesell-qt-dbg_0.1.12_amd64.deb bitgesell-qt-dbg_0.1.12_amd64.deb +docker exec -w /home/user/build/bitgesell-qt-0.1.13 $container sudo -u user debuild -b +docker cp $container:/home/user/build/bitgesell-qt_0.1.13_amd64.deb bitgesell-qt_0.1.13_amd64.deb +docker cp $container:/home/user/build/bitgesell-qt-dbg_0.1.13_amd64.deb bitgesell-qt-dbg_0.1.13_amd64.deb diff --git a/debian.qt/changelog b/debian.qt/changelog index 1d9c3a521a..6a80f79b8b 100644 --- a/debian.qt/changelog +++ b/debian.qt/changelog @@ -1,3 +1,8 @@ +bitgesell-qt (0.1.13) UNRELEASED; urgency=low + * Bitcoin code synced + + -- Mathias van Orton Fri, 2 Apr 2024 08:50:00 +0000 + bitgesell-qt (0.1.12) UNRELEASED; urgency=low * Bitcoin code synced diff --git a/debian.qt/control b/debian.qt/control index 5b719161f0..9103a8c8fb 100644 --- a/debian.qt/control +++ b/debian.qt/control @@ -10,7 +10,7 @@ Package: bitgesell-qt Architecture: any Depends: libc6 (>= 2.27), libstdc++6 (>= 8.4.0), libbz2-1.0 (>= 1.0.6), liblzma5 (>= 5.2.2), zlib1g (>= 1:1.1.4), libqt5core5a (>= 5.9.5), libqt5dbus5 (>= 5.9.5), libqt5network5 (>= 5.9.5), libqt5gui5 (>= 5.9.5), libqrencode-dev, libsqlite3-dev, - openssl, perl-modules-5.26 | perl-modules-5.28 | perl-modules-5.30, ${misc:Depends} + openssl, perl-modules-5.34, ${misc:Depends} Description: BGL is an experimental digital currency that enables instant payments to anyone, anywhere in the world BGL is an experimental digital currency that enables instant payments to anyone, anywhere in the world. BGL uses peer-to-peer technology to operate with no central authority: diff --git a/debian.qt/files b/debian.qt/files index f60e678b3d..f68e9fd4b8 100644 --- a/debian.qt/files +++ b/debian.qt/files @@ -1 +1 @@ -bitgesell-qt_0.1.12_source.buildinfo misc optional +bitgesell-qt_0.1.13_source.buildinfo misc optional diff --git a/debian.qt/test.sh b/debian.qt/test.sh index 3c86044952..49aa7fcef9 100755 --- a/debian.qt/test.sh +++ b/debian.qt/test.sh @@ -12,7 +12,7 @@ trap finish EXIT docker exec $container apt-get -y update docker exec $container apt-get -y install apt-utils #dpkg-dev docker exec $container mkdir /root/repo -docker cp ./bitgesell-qt_0.1.12_amd64.deb $container:/root/repo +docker cp ./bitgesell-qt_0.1.13_amd64.deb $container:/root/repo # docker exec -w /root/repo $container sh -c "dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz" docker exec -w /root/repo $container sh -c "apt-ftparchive packages . > Packages" docker exec $container sh -c "echo deb [trusted=yes] file:/root/repo ./ >> /etc/apt/sources.list" diff --git a/depends/Makefile b/depends/Makefile index 254f55e97b..52a9a14e56 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -46,7 +46,7 @@ NO_NATPMP ?= MULTIPROCESS ?= LTO ?= NO_HARDEN ?= -FALLBACK_DOWNLOAD_PATH ?= https://bitgesell.ca/depends-sources +FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources C_STANDARD ?= c11 CXX_STANDARD ?= c++20 @@ -101,10 +101,6 @@ host_os+=$(findstring netbsd,$(full_host_os)) host_os+=$(findstring openbsd,$(full_host_os)) host_os+=$(findstring mingw32,$(full_host_os)) -ifeq (android,$(findstring android,$(full_host_os))) -host_os:=android -endif - host_os:=$(strip $(host_os)) ifeq ($(host_os),) host_os=$(full_host_os) @@ -185,9 +181,6 @@ all_packages = $(packages) $(native_packages) meta_depends = Makefile config.guess config.sub funcs.mk builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk -$(host_arch)_$(host_os)_native_binutils?=$($(host_os)_native_binutils) -$(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain) - include funcs.mk final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in) @@ -217,9 +210,8 @@ $(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages) # tool needs to be available in $PATH at all times. # # 2. If the tool is _**not**_ expected to be available in $PATH at all times -# (such as is the case for our native_cctools binutils tools), it needs to -# be referred to by its absolute path, such as would be output by the -# AC_PATH_{PROG,TOOL} macros. +# it needs to be referred to by its absolute path, such as would be output +# by the AC_PATH_{PROG,TOOL} macros. # # Minor note: it is also okay to refer to tools by their absolute path even if # we expect them to be available in $PATH at all times, more specificity does @@ -233,8 +225,7 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_ -e 's|@RANLIB@|$(host_RANLIB)|' \ -e 's|@NM@|$(host_NM)|' \ -e 's|@STRIP@|$(host_STRIP)|' \ - -e 's|@OTOOL@|$(host_OTOOL)|' \ - -e 's|@INSTALL_NAME_TOOL@|$(host_INSTALL_NAME_TOOL)|' \ + -e 's|@OBJDUMP@|$(host_OBJDUMP)|' \ -e 's|@DSYMUTIL@|$(host_DSYMUTIL)|' \ -e 's|@build_os@|$(build_os)|' \ -e 's|@host_os@|$(host_os)|' \ diff --git a/depends/README.md b/depends/README.md index ebb8deb0b5..53ecfa70cb 100644 --- a/depends/README.md +++ b/depends/README.md @@ -38,21 +38,22 @@ Common `host-platform-triplet`s for cross compilation are: - `riscv32-linux-gnu` for Linux RISC-V 32 bit - `riscv64-linux-gnu` for Linux RISC-V 64 bit - `s390x-linux-gnu` for Linux S390X -- `armv7a-linux-android` for Android ARM 32 bit -- `aarch64-linux-android` for Android ARM 64 bit -- `x86_64-linux-android` for Android x86 64 bit -The paths are automatically configured and no other options are needed unless targeting [Android](../doc/build-android.md). +The paths are automatically configured and no other options are needed. ### Install the required dependencies: Ubuntu & Debian +#### Common + + apt install automake bison cmake curl libtool make patch pkg-config python3 xz-utils + #### For macOS cross compilation - sudo apt-get install curl bsdmainutils cmake zip + apt install clang lld llvm g++ zip -Note: You must obtain the macOS SDK before proceeding with a cross-compile. -Under the depends directory, create a subdirectory named `SDKs`. -Then, place the extracted SDK under this new directory. +Clang 18 or later is required. You must also obtain the macOS SDK before +proceeding with a cross-compile. Under the depends directory, create a +subdirectory named `SDKs`. Then, place the extracted SDK under this new directory. For more information, see [SDK Extraction](../contrib/macdeploy/README.md#sdk-extraction). #### For Win64 cross compilation @@ -63,7 +64,7 @@ For more information, see [SDK Extraction](../contrib/macdeploy/README.md#sdk-ex Common linux dependencies: - sudo apt-get install make automake cmake curl g++-multilib libtool binutils bsdmainutils pkg-config python3 patch bison + sudo apt-get install g++-multilib binutils For linux ARM cross compilation: @@ -85,6 +86,10 @@ For linux S390X cross compilation: sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu +### Install the required dependencies: FreeBSD + + pkg install bash + ### Install the required dependencies: OpenBSD pkg_add bash gtar @@ -114,9 +119,6 @@ The following can be set when running make: `make FOO=bar` - `DEBUG`: Disable some optimizations and enable more runtime checking - `HOST_ID_SALT`: Optional salt to use when generating host package ids - `BUILD_ID_SALT`: Optional salt to use when generating build package ids -- `FORCE_USE_SYSTEM_CLANG`: (EXPERTS ONLY) When cross-compiling for macOS, use Clang found in the - system's `$PATH` rather than the default prebuilt release of Clang - from llvm.org. Clang 8 or later is required - `LOG`: Use file-based logging for individual packages. During a package build its log file resides in the `depends` directory, and the log file is printed out automatically in case of build error. After successful build log files are moved along with package archives diff --git a/depends/builders/darwin.mk b/depends/builders/darwin.mk index a5f07643de..2b59353e84 100644 --- a/depends/builders/darwin.mk +++ b/depends/builders/darwin.mk @@ -3,9 +3,8 @@ build_darwin_CXX:=$(shell xcrun -f clang++) -isysroot$(shell xcrun --show-sdk-pa build_darwin_AR:=$(shell xcrun -f ar) build_darwin_RANLIB:=$(shell xcrun -f ranlib) build_darwin_STRIP:=$(shell xcrun -f strip) -build_darwin_OTOOL:=$(shell xcrun -f otool) +build_darwin_OBJDUMP:=$(shell xcrun -f objdump) build_darwin_NM:=$(shell xcrun -f nm) -build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool) build_darwin_DSYMUTIL:=$(shell xcrun -f dsymutil) build_darwin_SHA256SUM=shasum -a 256 build_darwin_DOWNLOAD=curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o @@ -16,12 +15,9 @@ darwin_CXX:=$(shell xcrun -f clang++) -stdlib=libc++ -isysroot$(shell xcrun --sh darwin_AR:=$(shell xcrun -f ar) darwin_RANLIB:=$(shell xcrun -f ranlib) darwin_STRIP:=$(shell xcrun -f strip) -darwin_OTOOL:=$(shell xcrun -f otool) +darwin_OBJDUMP:=$(shell xcrun -f objdump) darwin_NM:=$(shell xcrun -f nm) -darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool) darwin_DSYMUTIL:=$(shell xcrun -f dsymutil) -darwin_native_binutils= -darwin_native_toolchain= x86_64_darwin_CFLAGS += -arch x86_64 x86_64_darwin_CXXFLAGS += -arch x86_64 diff --git a/depends/builders/default.mk b/depends/builders/default.mk index 806d6e7c50..2a1709d98a 100644 --- a/depends/builders/default.mk +++ b/depends/builders/default.mk @@ -1,6 +1,7 @@ default_build_CC = gcc default_build_CXX = g++ default_build_AR = ar +default_build_OBJDUMP = objdump default_build_TAR = tar default_build_RANLIB = ranlib default_build_STRIP = strip @@ -12,7 +13,7 @@ build_$(build_os)_$1 ?= $$(default_build_$1) build_$(build_arch)_$(build_os)_$1 ?= $$(build_$(build_os)_$1) build_$1=$$(build_$(build_arch)_$(build_os)_$1) endef -$(foreach var,CC CXX AR TAR RANLIB NM STRIP SHA256SUM DOWNLOAD OTOOL INSTALL_NAME_TOOL DSYMUTIL TOUCH,$(eval $(call add_build_tool_func,$(var)))) +$(foreach var,CC CXX AR TAR RANLIB NM STRIP SHA256SUM DOWNLOAD OBJDUMP DSYMUTIL TOUCH,$(eval $(call add_build_tool_func,$(var)))) define add_build_flags_func build_$(build_arch)_$(build_os)_$1 += $(build_$(build_os)_$1) build_$1=$$(build_$(build_arch)_$(build_os)_$1) diff --git a/depends/config.site.in b/depends/config.site.in index 81975f02b9..f6bed6a9d4 100644 --- a/depends/config.site.in +++ b/depends/config.site.in @@ -118,9 +118,9 @@ if test -n "@STRIP@"; then fi if test "@host_os@" = darwin; then - if test -n "@OTOOL@"; then - OTOOL="@OTOOL@" - ac_cv_path_OTOOL="${OTOOL}" + if test -n "@OBJDUMP@"; then + OBJDUMP="@OBJDUMP@" + ac_cv_path_OBJDUMP="${OBJDUMP}" fi if test -n "@DSYMUTIL@"; then diff --git a/depends/description.md b/depends/description.md index 69ee5bd36c..fa345bfe85 100644 --- a/depends/description.md +++ b/depends/description.md @@ -11,7 +11,7 @@ on new hosts. ### No reliance on timestamps File presence is used to determine what needs to be built. This makes the -results distributable and easily digestable by automated builders. +results distributable and easily digestible by automated builders. ### Each build only has its specified dependencies available at build-time. diff --git a/depends/funcs.mk b/depends/funcs.mk index 494ed5d324..3c0dc7a7fc 100644 --- a/depends/funcs.mk +++ b/depends/funcs.mk @@ -46,7 +46,7 @@ endef define int_get_build_id $(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies)) -$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($($(1)_type)_native_binutils) $($(1)_dependencies))) +$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($(1)_dependencies))) $(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash))) $(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_type) $($(1)_build_id_deps) $($($(1)_type)_id)) $(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))) @@ -180,8 +180,12 @@ $(1)_cmake=env CC="$$($(1)_cc)" \ CXXFLAGS="$$($(1)_cppflags) $$($(1)_cxxflags)" \ LDFLAGS="$$($(1)_ldflags)" \ cmake -DCMAKE_INSTALL_PREFIX:PATH="$$($($(1)_type)_prefix)" \ + -DCMAKE_AR=`which $$($(1)_ar)` \ + -DCMAKE_NM=`which $$($(1)_nm)` \ + -DCMAKE_RANLIB=`which $$($(1)_ranlib)` \ -DCMAKE_INSTALL_LIBDIR=lib/ \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=$(V) \ $$($(1)_config_opts) ifeq ($($(1)_type),build) $(1)_cmake += -DCMAKE_INSTALL_RPATH:PATH="$$($($(1)_type)_prefix)/lib" @@ -293,6 +297,3 @@ $(foreach package,$(all_packages),$(eval $(call int_config_attach_build_config,$ #create build targets $(foreach package,$(all_packages),$(eval $(call int_add_cmds,$(package)))) - -#special exception: if a toolchain package exists, all non-native packages depend on it -$(foreach package,$(packages),$(eval $($(package)_extracted): |$($($(host_arch)_$(host_os)_native_toolchain)_cached) $($($(host_arch)_$(host_os)_native_binutils)_cached) )) diff --git a/depends/gen_id b/depends/gen_id index 8518b4e674..e2e2273b2d 100755 --- a/depends/gen_id +++ b/depends/gen_id @@ -53,7 +53,6 @@ echo "BEGIN AR" bash -c "${AR} --version" env | grep '^AR_' - echo "ZERO_AR_DATE=${ZERO_AR_DATE}" echo "END AR" echo "BEGIN NM" diff --git a/depends/hosts/android.mk b/depends/hosts/android.mk deleted file mode 100644 index a1c8c56dba..0000000000 --- a/depends/hosts/android.mk +++ /dev/null @@ -1,15 +0,0 @@ -ifeq ($(HOST),armv7a-linux-android) -android_CXX=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)eabi$(ANDROID_API_LEVEL)-clang++ -android_CC=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)eabi$(ANDROID_API_LEVEL)-clang -else -android_CXX=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang++ -android_CC=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang -endif - -android_CFLAGS=-std=$(C_STANDARD) -android_CXXFLAGS=-std=$(CXX_STANDARD) - -android_AR=$(ANDROID_TOOLCHAIN_BIN)/llvm-ar -android_RANLIB=$(ANDROID_TOOLCHAIN_BIN)/llvm-ranlib - -android_cmake_system=Android diff --git a/depends/hosts/darwin.mk b/depends/hosts/darwin.mk index 29ad7ef252..564381d1e9 100644 --- a/depends/hosts/darwin.mk +++ b/depends/hosts/darwin.mk @@ -2,29 +2,10 @@ OSX_MIN_VERSION=11.0 OSX_SDK_VERSION=14.0 XCODE_VERSION=15.0 XCODE_BUILD_ID=15A240d -LD64_VERSION=711 +LLD_VERSION=711 OSX_SDK=$(SDK_PATH)/Xcode-$(XCODE_VERSION)-$(XCODE_BUILD_ID)-extracted-SDK-with-libcxx-headers -darwin_native_binutils=native_cctools - -ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),) -# FORCE_USE_SYSTEM_CLANG is empty, so we use our depends-managed, pinned clang -# from llvm.org - -# Clang is a dependency of native_cctools when FORCE_USE_SYSTEM_CLANG is empty -darwin_native_toolchain=native_cctools - -clang_prog=$(build_prefix)/bin/clang -clangxx_prog=$(clang_prog)++ -llvm_config_prog=$(build_prefix)/bin/llvm-config - -else -# FORCE_USE_SYSTEM_CLANG is non-empty, so we use the clang from the user's -# system - -darwin_native_toolchain= - # We can't just use $(shell command -v clang) because GNU Make handles builtins # in a special way and doesn't know that `command` is a POSIX-standard builtin # prior to 1af314465e5dfe3e8baa839a32a72e83c04f26ef, first released in v4.2.90. @@ -34,20 +15,13 @@ darwin_native_toolchain= # Source: https://lists.gnu.org/archive/html/bug-make/2017-11/msg00017.html clang_prog=$(shell $(SHELL) $(.SHELLFLAGS) "command -v clang") clangxx_prog=$(shell $(SHELL) $(.SHELLFLAGS) "command -v clang++") -llvm_config_prog=$(shell $(SHELL) $(.SHELLFLAGS) "command -v llvm-config") - -llvm_lib_dir=$(shell $(llvm_config_prog) --libdir) -endif - -cctools_TOOLS=AR RANLIB STRIP NM OTOOL INSTALL_NAME_TOOL DSYMUTIL -# Make-only lowercase function -lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) - -# For well-known tools provided by cctools, make sure that their well-known -# variable is set to the full path of the tool, just like how AC_PATH_{TOO,PROG} -# would. -$(foreach TOOL,$(cctools_TOOLS),$(eval darwin_$(TOOL) = $$(build_prefix)/bin/$$(host)-$(call lc,$(TOOL)))) +darwin_AR=$(shell $(SHELL) $(.SHELLFLAGS) "command -v llvm-ar") +darwin_DSYMUTIL=$(shell $(SHELL) $(.SHELLFLAGS) "command -v dsymutil") +darwin_NM=$(shell $(SHELL) $(.SHELLFLAGS) "command -v llvm-nm") +darwin_OBJDUMP=$(shell $(SHELL) $(.SHELLFLAGS) "command -v llvm-objdump") +darwin_RANLIB=$(shell $(SHELL) $(.SHELLFLAGS) "command -v llvm-ranlib") +darwin_STRIP=$(shell $(SHELL) $(.SHELLFLAGS) "command -v llvm-strip") # Flag explanations: # @@ -56,11 +30,6 @@ $(foreach TOOL,$(cctools_TOOLS),$(eval darwin_$(TOOL) = $$(build_prefix)/bin/$$( # Ensures that modern linker features are enabled. See here for more # details: https://github.com/bitcoin/bitcoin/pull/19407. # -# -B$(build_prefix)/bin -# -# Explicitly point to our binaries (e.g. cctools) so that they are -# ensured to be found and preferred over other possibilities. -# # -isysroot$(OSX_SDK) -nostdlibinc # # Disable default include paths built into the compiler as well as @@ -75,12 +44,16 @@ $(foreach TOOL,$(cctools_TOOLS),$(eval darwin_$(TOOL) = $$(build_prefix)/bin/$$( # # Indicate to the linker the platform, the oldest supported version, # and the SDK used. +# +# -no_adhoc_codesign +# +# Disable adhoc codesigning (for now) when using LLVM tooling, to avoid +# non-determinism issues with the Identifier field. darwin_CC=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \ -u OBJC_INCLUDE_PATH -u OBJCPLUS_INCLUDE_PATH -u CPATH \ -u LIBRARY_PATH \ $(clang_prog) --target=$(host) \ - -B$(build_prefix)/bin \ -isysroot$(OSX_SDK) -nostdlibinc \ -iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks @@ -88,24 +61,24 @@ darwin_CXX=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \ -u OBJC_INCLUDE_PATH -u OBJCPLUS_INCLUDE_PATH -u CPATH \ -u LIBRARY_PATH \ $(clangxx_prog) --target=$(host) \ - -B$(build_prefix)/bin \ -isysroot$(OSX_SDK) -nostdlibinc \ -iwithsysroot/usr/include/c++/v1 \ -iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks -darwin_CFLAGS=-pipe -std=$(C_STANDARD) -mmacosx-version-min=$(OSX_MIN_VERSION) -darwin_CXXFLAGS=-pipe -std=$(CXX_STANDARD) -mmacosx-version-min=$(OSX_MIN_VERSION) +darwin_CFLAGS=-pipe -std=$(C_STANDARD) -mmacos-version-min=$(OSX_MIN_VERSION) +darwin_CXXFLAGS=-pipe -std=$(CXX_STANDARD) -mmacos-version-min=$(OSX_MIN_VERSION) darwin_LDFLAGS=-Wl,-platform_version,macos,$(OSX_MIN_VERSION),$(OSX_SDK_VERSION) ifneq ($(build_os),darwin) -darwin_CFLAGS += -mlinker-version=$(LD64_VERSION) -darwin_CXXFLAGS += -mlinker-version=$(LD64_VERSION) +darwin_CFLAGS += -mlinker-version=$(LLD_VERSION) +darwin_CXXFLAGS += -mlinker-version=$(LLD_VERSION) +darwin_LDFLAGS += -Wl,-no_adhoc_codesign -fuse-ld=lld endif darwin_release_CFLAGS=-O2 darwin_release_CXXFLAGS=$(darwin_release_CFLAGS) -darwin_debug_CFLAGS=-O1 +darwin_debug_CFLAGS=-O1 -g darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS) darwin_cmake_system=Darwin diff --git a/depends/hosts/default.mk b/depends/hosts/default.mk index cf3c90441d..d82c33f29c 100644 --- a/depends/hosts/default.mk +++ b/depends/hosts/default.mk @@ -38,5 +38,5 @@ host_$1 = $$($(host_arch)_$(host_os)_$1) host_$(release_type)_$1 = $$($(host_arch)_$(host_os)_$(release_type)_$1) endef -$(foreach tool,CC CXX AR RANLIB STRIP NM OBJCOPY OTOOL INSTALL_NAME_TOOL DSYMUTIL,$(eval $(call add_host_tool_func,$(tool)))) +$(foreach tool,CC CXX AR RANLIB STRIP NM OBJCOPY OBJDUMP DSYMUTIL,$(eval $(call add_host_tool_func,$(tool)))) $(foreach flags,CFLAGS CXXFLAGS CPPFLAGS LDFLAGS, $(eval $(call add_host_flags_func,$(flags)))) diff --git a/depends/hosts/linux.mk b/depends/hosts/linux.mk index 8be23be57d..f5ce2bb0b8 100644 --- a/depends/hosts/linux.mk +++ b/depends/hosts/linux.mk @@ -10,10 +10,14 @@ endif linux_release_CFLAGS=-O2 linux_release_CXXFLAGS=$(linux_release_CFLAGS) -linux_debug_CFLAGS=-O1 +linux_debug_CFLAGS=-O1 -g linux_debug_CXXFLAGS=$(linux_debug_CFLAGS) -linux_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC -D_LIBCPP_ENABLE_DEBUG_MODE=1 +# https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html +linux_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC + +# https://libcxx.llvm.org/Hardening.html +linux_debug_CPPFLAGS+=-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG ifeq (86,$(findstring 86,$(build_arch))) i686_linux_CC=gcc -m32 diff --git a/depends/hosts/mingw32.mk b/depends/hosts/mingw32.mk index 15aa7cd25a..4c657358f6 100644 --- a/depends/hosts/mingw32.mk +++ b/depends/hosts/mingw32.mk @@ -14,7 +14,7 @@ endif mingw32_release_CFLAGS=-O2 mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS) -mingw32_debug_CFLAGS=-O1 +mingw32_debug_CFLAGS=-O1 -g mingw32_debug_CXXFLAGS=$(mingw32_debug_CFLAGS) mingw32_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC diff --git a/depends/packages.md b/depends/packages.md index 0ffdc66d48..7a7a42afa1 100644 --- a/depends/packages.md +++ b/depends/packages.md @@ -162,7 +162,7 @@ From the [Gentoo Wiki entry](https://wiki.gentoo.org/wiki/Project:Quality_Assura > creates. This leads to massive overlinking, which is toxic to the Gentoo > ecosystem, as it leads to a massive number of unnecessary rebuilds. -Where possible, packages are built with Position Independant Code. Either using +Where possible, packages are built with Position Independent Code. Either using the Autotools `--with-pic` flag, or `CMAKE_POSITION_INDEPENDENT_CODE` with CMake. ## Secondary dependencies: diff --git a/depends/packages/boost.mk b/depends/packages/boost.mk index ab43764b38..938e9971ba 100644 --- a/depends/packages/boost.mk +++ b/depends/packages/boost.mk @@ -1,13 +1,8 @@ package=boost $(package)_version=1.81.0 -$(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$($(package)_version)/source/ -$(package)_file_name=boost_$(subst .,_,$($(package)_version)).tar.bz2 -$(package)_sha256_hash=71feeed900fbccca04a3b4f2f84a7c217186f28a940ed8b7ed4725986baf99fa -$(package)_patches=process_macos_sdk.patch - -define $(package)_preprocess_cmds - patch -p1 < $($(package)_patch_dir)/process_macos_sdk.patch -endef +$(package)_download_path=https://archives.boost.io/release/$($(package)_version)/source/ +$(package)_file_name=boost_$(subst .,_,$($(package)_version)).tar.gz +$(package)_sha256_hash=205666dea9f6a7cfed87c7a6dfbeb52a2c1b9de55712c9c1a87735d7181452b6 define $(package)_stage_cmds mkdir -p $($(package)_staging_prefix_dir)/include && \ diff --git a/depends/packages/fontconfig.mk b/depends/packages/fontconfig.mk index 444acfe36d..6baaecc55a 100644 --- a/depends/packages/fontconfig.mk +++ b/depends/packages/fontconfig.mk @@ -1,8 +1,8 @@ package=fontconfig $(package)_version=2.12.6 $(package)_download_path=https://www.freedesktop.org/software/fontconfig/release/ -$(package)_file_name=$(package)-$($(package)_version).tar.bz2 -$(package)_sha256_hash=cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017 +$(package)_file_name=$(package)-$($(package)_version).tar.gz +$(package)_sha256_hash=064b9ebf060c9e77011733ac9dc0e2ce92870b574cca2405e11f5353a683c334 $(package)_dependencies=freetype expat $(package)_patches=gperf_header_regen.patch diff --git a/depends/packages/libXau.mk b/depends/packages/libXau.mk index b7e032c0b2..161c2c42d0 100644 --- a/depends/packages/libXau.mk +++ b/depends/packages/libXau.mk @@ -1,8 +1,8 @@ package=libXau $(package)_version=1.0.9 $(package)_download_path=https://xorg.freedesktop.org/releases/individual/lib/ -$(package)_file_name=$(package)-$($(package)_version).tar.bz2 -$(package)_sha256_hash=ccf8cbf0dbf676faa2ea0a6d64bcc3b6746064722b606c8c52917ed00dcb73ec +$(package)_file_name=$(package)-$($(package)_version).tar.gz +$(package)_sha256_hash=1f123d8304b082ad63a9e89376400a3b1d4c29e67e3ea07b3f659cccca690eea $(package)_dependencies=xproto # When updating this package, check the default value of diff --git a/depends/packages/libevent.mk b/depends/packages/libevent.mk index 9650f77db9..60e1ee469e 100644 --- a/depends/packages/libevent.mk +++ b/depends/packages/libevent.mk @@ -3,19 +3,16 @@ $(package)_version=2.1.12-stable $(package)_download_path=https://github.com/libevent/libevent/releases/download/release-$($(package)_version)/ $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_sha256_hash=92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb +$(package)_patches=cmake_fixups.patch +$(package)_build_subdir=build # When building for Windows, we set _WIN32_WINNT to target the same Windows # version as we do in configure. Due to quirks in libevents build system, this # is also required to enable support for ipv6. See #19375. define $(package)_set_vars - $(package)_config_opts=--disable-shared --disable-openssl --disable-libevent-regress --disable-samples - $(package)_config_opts += --disable-dependency-tracking --enable-option-checking - $(package)_config_opts_release=--disable-debug-mode - $(package)_config_opts_linux=--with-pic - $(package)_config_opts_freebsd=--with-pic - $(package)_config_opts_netbsd=--with-pic - $(package)_config_opts_openbsd=--with-pic - $(package)_config_opts_android=--with-pic + $(package)_config_opts=-DEVENT__DISABLE_BENCHMARK=ON -DEVENT__DISABLE_OPENSSL=ON + $(package)_config_opts+=-DEVENT__DISABLE_SAMPLES=ON -DEVENT__DISABLE_REGRESS=ON + $(package)_config_opts+=-DEVENT__DISABLE_TESTS=ON -DEVENT__LIBRARY_TYPE=STATIC $(package)_cppflags_mingw32=-D_WIN32_WINNT=0x0601 ifeq ($(NO_HARDEN),) @@ -24,11 +21,11 @@ define $(package)_set_vars endef define $(package)_preprocess_cmds - cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub build-aux + patch -p1 < $($(package)_patch_dir)/cmake_fixups.patch endef define $(package)_config_cmds - $($(package)_autoconf) + $($(package)_cmake) -S .. -B . endef define $(package)_build_cmds @@ -40,7 +37,7 @@ define $(package)_stage_cmds endef define $(package)_postprocess_cmds - rm lib/*.la && \ + rm bin/event_rpcgen.py && \ rm include/ev*.h && \ rm include/event2/*_compat.h endef diff --git a/depends/packages/libmultiprocess.mk b/depends/packages/libmultiprocess.mk index 765d649377..c292c49bfb 100644 --- a/depends/packages/libmultiprocess.mk +++ b/depends/packages/libmultiprocess.mk @@ -20,7 +20,7 @@ define $(package)_config_cmds endef define $(package)_build_cmds - $(MAKE) + $(MAKE) multiprocess endef define $(package)_stage_cmds diff --git a/depends/packages/libnatpmp.mk b/depends/packages/libnatpmp.mk index caa809ec0b..5a573a18e7 100644 --- a/depends/packages/libnatpmp.mk +++ b/depends/packages/libnatpmp.mk @@ -1,26 +1,20 @@ package=libnatpmp -$(package)_version=07004b97cf691774efebe70404cf22201e4d330d +$(package)_version=f2433bec24ca3d3f22a8a7840728a3ac177f94ba $(package)_download_path=https://github.com/miniupnp/libnatpmp/archive $(package)_file_name=$($(package)_version).tar.gz -$(package)_sha256_hash=9321953ceb39d07c25463e266e50d0ae7b64676bb3a986d932b18881ed94f1fb -$(package)_patches=no_libtool.patch +$(package)_sha256_hash=ef84979950dfb3556705b63c9cd6c95501b75e887fba466234b187f3c9029669 +$(package)_build_subdir=build -define $(package)_set_vars - $(package)_build_opts=CC="$($(package)_cc)" - $(package)_build_opts_mingw32=CPPFLAGS=-DNATPMP_STATICLIB - $(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)" -endef - -define $(package)_preprocess_cmds - patch -p1 < $($(package)_patch_dir)/no_libtool.patch +define $(package)_config_cmds + $($(package)_cmake) -S .. -B . endef define $(package)_build_cmds - $(MAKE) libnatpmp.a $($(package)_build_opts) + $(MAKE) natpmp endef define $(package)_stage_cmds - mkdir -p $($(package)_staging_prefix_dir)/include $($(package)_staging_prefix_dir)/lib &&\ - install *.h $($(package)_staging_prefix_dir)/include &&\ + mkdir -p $($(package)_staging_prefix_dir)/include $($(package)_staging_prefix_dir)/lib && \ + install ../natpmp.h ../natpmp_declspec.h $($(package)_staging_prefix_dir)/include && \ install libnatpmp.a $($(package)_staging_prefix_dir)/lib endef diff --git a/depends/packages/libxcb_util.mk b/depends/packages/libxcb_util.mk index 6f1b9cd7c6..284e8ca9eb 100644 --- a/depends/packages/libxcb_util.mk +++ b/depends/packages/libxcb_util.mk @@ -1,8 +1,8 @@ package=libxcb_util $(package)_version=0.4.0 $(package)_download_path=https://xcb.freedesktop.org/dist -$(package)_file_name=xcb-util-$($(package)_version).tar.bz2 -$(package)_sha256_hash=46e49469cb3b594af1d33176cd7565def2be3fa8be4371d62271fabb5eae50e9 +$(package)_file_name=xcb-util-$($(package)_version).tar.gz +$(package)_sha256_hash=0ed0934e2ef4ddff53fcc70fc64fb16fe766cd41ee00330312e20a985fd927a7 $(package)_dependencies=libxcb define $(package)_set_vars diff --git a/depends/packages/libxcb_util_image.mk b/depends/packages/libxcb_util_image.mk index d12d67e8e8..2228250fec 100644 --- a/depends/packages/libxcb_util_image.mk +++ b/depends/packages/libxcb_util_image.mk @@ -1,8 +1,8 @@ package=libxcb_util_image $(package)_version=0.4.0 $(package)_download_path=https://xcb.freedesktop.org/dist -$(package)_file_name=xcb-util-image-$($(package)_version).tar.bz2 -$(package)_sha256_hash=2db96a37d78831d643538dd1b595d7d712e04bdccf8896a5e18ce0f398ea2ffc +$(package)_file_name=xcb-util-image-$($(package)_version).tar.gz +$(package)_sha256_hash=cb2c86190cf6216260b7357a57d9100811bb6f78c24576a3a5bfef6ad3740a42 $(package)_dependencies=libxcb libxcb_util define $(package)_set_vars diff --git a/depends/packages/libxcb_util_keysyms.mk b/depends/packages/libxcb_util_keysyms.mk index d4f72dedbe..56bc33d258 100644 --- a/depends/packages/libxcb_util_keysyms.mk +++ b/depends/packages/libxcb_util_keysyms.mk @@ -1,8 +1,8 @@ package=libxcb_util_keysyms $(package)_version=0.4.0 $(package)_download_path=https://xcb.freedesktop.org/dist -$(package)_file_name=xcb-util-keysyms-$($(package)_version).tar.bz2 -$(package)_sha256_hash=0ef8490ff1dede52b7de533158547f8b454b241aa3e4dcca369507f66f216dd9 +$(package)_file_name=xcb-util-keysyms-$($(package)_version).tar.gz +$(package)_sha256_hash=0807cf078fbe38489a41d755095c58239e1b67299f14460dec2ec811e96caa96 $(package)_dependencies=libxcb xproto define $(package)_set_vars diff --git a/depends/packages/libxcb_util_render.mk b/depends/packages/libxcb_util_render.mk index 28f1fb073c..ee2883feda 100644 --- a/depends/packages/libxcb_util_render.mk +++ b/depends/packages/libxcb_util_render.mk @@ -1,8 +1,8 @@ package=libxcb_util_render $(package)_version=0.3.9 $(package)_download_path=https://xcb.freedesktop.org/dist -$(package)_file_name=xcb-util-renderutil-$($(package)_version).tar.bz2 -$(package)_sha256_hash=c6e97e48fb1286d6394dddb1c1732f00227c70bd1bedb7d1acabefdd340bea5b +$(package)_file_name=xcb-util-renderutil-$($(package)_version).tar.gz +$(package)_sha256_hash=55eee797e3214fe39d0f3f4d9448cc53cffe06706d108824ea37bb79fcedcad5 $(package)_dependencies=libxcb define $(package)_set_vars diff --git a/depends/packages/libxcb_util_wm.mk b/depends/packages/libxcb_util_wm.mk index 3b905ba4ec..a68fd23f8a 100644 --- a/depends/packages/libxcb_util_wm.mk +++ b/depends/packages/libxcb_util_wm.mk @@ -1,8 +1,8 @@ package=libxcb_util_wm $(package)_version=0.4.1 $(package)_download_path=https://xcb.freedesktop.org/dist -$(package)_file_name=xcb-util-wm-$($(package)_version).tar.bz2 -$(package)_sha256_hash=28bf8179640eaa89276d2b0f1ce4285103d136be6c98262b6151aaee1d3c2a3f +$(package)_file_name=xcb-util-wm-$($(package)_version).tar.gz +$(package)_sha256_hash=038b39c4bdc04a792d62d163ba7908f4bb3373057208c07110be73c1b04b8334 $(package)_dependencies=libxcb define $(package)_set_vars diff --git a/depends/packages/miniupnpc.mk b/depends/packages/miniupnpc.mk index 5698a7cbb1..341031b5f8 100644 --- a/depends/packages/miniupnpc.mk +++ b/depends/packages/miniupnpc.mk @@ -1,30 +1,31 @@ package=miniupnpc -$(package)_version=2.2.2 -$(package)_download_path=https://miniupnp.tuxfamily.org/files/ +$(package)_version=2.2.7 +$(package)_download_path=http://miniupnp.free.fr/files/ $(package)_file_name=$(package)-$($(package)_version).tar.gz -$(package)_sha256_hash=888fb0976ba61518276fe1eda988589c700a3f2a69d71089260d75562afd3687 -$(package)_patches=dont_leak_info.patch respect_mingw_cflags.patch no_libtool.patch +$(package)_sha256_hash=b0c3a27056840fd0ec9328a5a9bac3dc5e0ec6d2e8733349cf577b0aa1e70ac1 +$(package)_patches=dont_leak_info.patch cmake_get_src_addr.patch fix_windows_snprintf.patch +$(package)_build_subdir=build -# Next time this package is updated, ensure that _WIN32_WINNT is still properly set. -# See discussion in https://github.com/bitcoin/bitcoin/pull/25964. define $(package)_set_vars -$(package)_build_opts=CC="$($(package)_cc)" -$(package)_build_opts_mingw32=-f Makefile.mingw CFLAGS="$($(package)_cflags) -D_WIN32_WINNT=0x0601" -$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)" +$(package)_config_opts = -DUPNPC_BUILD_SAMPLE=OFF -DUPNPC_BUILD_SHARED=OFF +$(package)_config_opts += -DUPNPC_BUILD_STATIC=ON -DUPNPC_BUILD_TESTS=OFF +$(package)_config_opts_mingw32 += -DMINIUPNPC_TARGET_WINDOWS_VERSION=0x0601 endef define $(package)_preprocess_cmds patch -p1 < $($(package)_patch_dir)/dont_leak_info.patch && \ - patch -p1 < $($(package)_patch_dir)/respect_mingw_cflags.patch && \ - patch -p1 < $($(package)_patch_dir)/no_libtool.patch + patch -p1 < $($(package)_patch_dir)/cmake_get_src_addr.patch && \ + patch -p1 < $($(package)_patch_dir)/fix_windows_snprintf.patch +endef + +define $(package)_config_cmds + $($(package)_cmake) -S .. -B . endef define $(package)_build_cmds - $(MAKE) libminiupnpc.a $($(package)_build_opts) + $(MAKE) endef define $(package)_stage_cmds - mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\ - install *.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\ - install libminiupnpc.a $($(package)_staging_prefix_dir)/lib + cmake --install . --prefix $($(package)_staging_prefix_dir) endef diff --git a/depends/packages/native_cctools.mk b/depends/packages/native_cctools.mk deleted file mode 100644 index 3148e51048..0000000000 --- a/depends/packages/native_cctools.mk +++ /dev/null @@ -1,39 +0,0 @@ -package=native_cctools -$(package)_version=c74fafe86076713cb8e6f937af43b6df6da1f42d -$(package)_download_path=https://github.com/tpoechtrager/cctools-port/archive -$(package)_file_name=$($(package)_version).tar.gz -$(package)_sha256_hash=e2c1588d505a69c32e079f4e616e0f117d5478429040e394f624f43f2796e6bc -$(package)_build_subdir=cctools -$(package)_dependencies=native_libtapi - -define $(package)_set_vars - $(package)_config_opts=--target=$(host) --enable-lto-support - $(package)_config_opts+=--with-llvm-config=$(llvm_config_prog) - $(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib - $(package)_cc=$(clang_prog) - $(package)_cxx=$(clangxx_prog) -endef - -ifneq ($(strip $(FORCE_USE_SYSTEM_CLANG)),) -define $(package)_preprocess_cmds - mkdir -p $($(package)_staging_prefix_dir)/lib && \ - cp $(llvm_lib_dir)/libLTO.so $($(package)_staging_prefix_dir)/lib/ -endef -else -endif - -define $(package)_config_cmds - $($(package)_autoconf) -endef - -define $(package)_build_cmds - $(MAKE) -endef - -define $(package)_stage_cmds - $(MAKE) DESTDIR=$($(package)_staging_dir) install -endef - -define $(package)_postprocess_cmds - rm -rf share -endef diff --git a/depends/packages/native_libtapi.mk b/depends/packages/native_libtapi.mk deleted file mode 100644 index fb5ab0b4dc..0000000000 --- a/depends/packages/native_libtapi.mk +++ /dev/null @@ -1,22 +0,0 @@ -package=native_libtapi -$(package)_version=eb33a59f2e30ff9724dc1ea8bee8b5229b0557c9 -$(package)_download_path=https://github.com/tpoechtrager/apple-libtapi/archive -$(package)_file_name=$($(package)_version).tar.gz -$(package)_sha256_hash=d4d46c64622f13d6938cecf989046d9561011bb59e8ee835f8f39825d67f578f -$(package)_patches=disable_zlib.patch - -ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),) -$(package)_dependencies=native_llvm -endif - -define $(package)_preprocess_cmds - patch -p1 < $($(package)_patch_dir)/disable_zlib.patch -endef - -define $(package)_build_cmds - CC=$(clang_prog) CXX=$(clangxx_prog) INSTALLPREFIX=$($(package)_staging_prefix_dir) ./build.sh -endef - -define $(package)_stage_cmds - ./install.sh -endef diff --git a/depends/packages/native_llvm.mk b/depends/packages/native_llvm.mk deleted file mode 100644 index 09994eb012..0000000000 --- a/depends/packages/native_llvm.mk +++ /dev/null @@ -1,25 +0,0 @@ -package=native_llvm -$(package)_version=17.0.6 -$(package)_major_version=$(firstword $(subst ., ,$($(package)_version))) -$(package)_download_path=https://github.com/llvm/llvm-project/releases/download/llvmorg-$($(package)_version) -ifneq (,$(findstring aarch64,$(BUILD))) -$(package)_file_name=clang+llvm-$($(package)_version)-aarch64-linux-gnu.tar.xz -$(package)_sha256_hash=6dd62762285326f223f40b8e4f2864b5c372de3f7de0731cb7cd55ca5287b75a -else -$(package)_file_name=clang+llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-22.04.tar.xz -$(package)_sha256_hash=884ee67d647d77e58740c1e645649e29ae9e8a6fe87c1376be0f3a30f3cc9ab3 -endif - -define $(package)_stage_cmds - mkdir -p $($(package)_staging_prefix_dir)/lib/clang/$($(package)_major_version)/include && \ - mkdir -p $($(package)_staging_prefix_dir)/bin && \ - mkdir -p $($(package)_staging_prefix_dir)/include/llvm-c && \ - cp bin/clang $($(package)_staging_prefix_dir)/bin/ && \ - cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin/ && \ - cp bin/dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \ - cp bin/llvm-config $($(package)_staging_prefix_dir)/bin/ && \ - cp include/llvm-c/ExternC.h $($(package)_staging_prefix_dir)/include/llvm-c && \ - cp include/llvm-c/lto.h $($(package)_staging_prefix_dir)/include/llvm-c && \ - cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \ - cp -r lib/clang/$($(package)_major_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_major_version)/include/ -endef diff --git a/depends/packages/packages.mk b/depends/packages/packages.mk index fb52fd4499..01ed0d7a92 100644 --- a/depends/packages/packages.mk +++ b/depends/packages/packages.mk @@ -5,12 +5,10 @@ boost_packages = boost libevent_packages = libevent qrencode_linux_packages = qrencode -qrencode_android_packages = qrencode qrencode_darwin_packages = qrencode qrencode_mingw32_packages = qrencode qt_linux_packages:=qt expat libxcb xcb_proto libXau xproto freetype fontconfig libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm -qt_android_packages=qt qt_darwin_packages=qt qt_mingw32_packages=qt @@ -26,14 +24,3 @@ multiprocess_packages = libmultiprocess capnp multiprocess_native_packages = native_libmultiprocess native_capnp usdt_linux_packages=systemtap - -darwin_native_packages = - -ifneq ($(build_os),darwin) -darwin_native_packages += native_cctools native_libtapi - -ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),) -darwin_native_packages+= native_llvm -endif - -endif diff --git a/depends/packages/qrencode.mk b/depends/packages/qrencode.mk index 4d852d833d..4216646063 100644 --- a/depends/packages/qrencode.mk +++ b/depends/packages/qrencode.mk @@ -1,8 +1,8 @@ package=qrencode $(package)_version=4.1.1 $(package)_download_path=https://fukuchi.org/works/qrencode/ -$(package)_file_name=$(package)-$($(package)_version).tar.bz2 -$(package)_sha256_hash=e455d9732f8041cf5b9c388e345a641fd15707860f928e94507b1961256a6923 +$(package)_file_name=$(package)-$($(package)_version).tar.gz +$(package)_sha256_hash=da448ed4f52aba6bcb0cd48cac0dd51b8692bccc4cd127431402fca6f8171e8e $(package)_patches=cmake_fixups.patch define $(package)_set_vars diff --git a/depends/packages/qt.mk b/depends/packages/qt.mk index 0acf4cf565..d35139dd2d 100644 --- a/depends/packages/qt.mk +++ b/depends/packages/qt.mk @@ -1,9 +1,9 @@ package=qt -$(package)_version=5.15.13 +$(package)_version=5.15.14 $(package)_download_path=https://download.qt.io/official_releases/qt/5.15/$($(package)_version)/submodules $(package)_suffix=everywhere-opensource-src-$($(package)_version).tar.xz $(package)_file_name=qtbase-$($(package)_suffix) -$(package)_sha256_hash=4cca51dcc1f22ceeee6b3e33cd1c3a60b14e85e24644dca3af89a2c2989ab809 +$(package)_sha256_hash=500d3b390048e9538c28b5f523dfea6936f9c2e10d24ab46580ff57d430b98be $(package)_linux_dependencies=freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm $(package)_qt_libs=corelib network widgets gui plugins testlib $(package)_linguist_tools = lrelease lupdate lconvert @@ -12,22 +12,24 @@ $(package)_patches += qttools_src.pro $(package)_patches += mac-qmake.conf $(package)_patches += fix_qt_pkgconfig.patch $(package)_patches += no-xlib.patch -$(package)_patches += fix_android_jni_static.patch $(package)_patches += dont_hardcode_pwd.patch $(package)_patches += qtbase-moc-ignore-gcc-macro.patch +$(package)_patches += no_warnings_for_symbols.patch $(package)_patches += rcc_hardcode_timestamp.patch $(package)_patches += duplicate_lcqpafonts.patch $(package)_patches += guix_cross_lib_path.patch $(package)_patches += fix-macos-linker.patch $(package)_patches += memory_resource.patch +$(package)_patches += clang_18_libpng.patch $(package)_patches += utc_from_string_no_optimize.patch $(package)_patches += windows_lto.patch +$(package)_patches += zlib-timebits64.patch $(package)_qttranslations_file_name=qttranslations-$($(package)_suffix) -$(package)_qttranslations_sha256_hash=24d4c58bc2a40c0f44f59ee64af4192c7d0038c1e45af61646cfc5b65058f271 +$(package)_qttranslations_sha256_hash=5b94d1a11b566908622fcca2f8b799744d2f8a68da20be4caa5953ed63b10489 $(package)_qttools_file_name=qttools-$($(package)_suffix) -$(package)_qttools_sha256_hash=57c9794c572c4e02871f2e7581525752b0cf85ea16cfab23a4ac9ba7b39a5d34 +$(package)_qttools_sha256_hash=12061a85baf5f4de8fbc795e1d3872b706f340211b9e70962caeffc6f5e89563 $(package)_extra_sources = $($(package)_qttranslations_file_name) $(package)_extra_sources += $($(package)_qttools_file_name) @@ -137,7 +139,7 @@ ifneq ($(build_os),darwin) $(package)_config_opts_darwin += -xplatform macx-clang-linux $(package)_config_opts_darwin += -device-option MAC_SDK_PATH=$(OSX_SDK) $(package)_config_opts_darwin += -device-option MAC_SDK_VERSION=$(OSX_SDK_VERSION) -$(package)_config_opts_darwin += -device-option CROSS_COMPILE="$(host)-" +$(package)_config_opts_darwin += -device-option CROSS_COMPILE="llvm-" $(package)_config_opts_darwin += -device-option MAC_TARGET=$(host) $(package)_config_opts_darwin += -device-option XCODE_VERSION=$(XCODE_VERSION) endif @@ -184,24 +186,6 @@ $(package)_config_opts_mingw32 += -pch ifneq ($(LTO),) $(package)_config_opts_mingw32 += -ltcg endif - -$(package)_config_opts_android = -xplatform android-clang -$(package)_config_opts_android += -android-sdk $(ANDROID_SDK) -$(package)_config_opts_android += -android-ndk $(ANDROID_NDK) -$(package)_config_opts_android += -android-ndk-platform android-$(ANDROID_API_LEVEL) -$(package)_config_opts_android += -egl -$(package)_config_opts_android += -no-dbus -$(package)_config_opts_android += -opengl es2 -$(package)_config_opts_android += -qt-freetype -$(package)_config_opts_android += -no-fontconfig -$(package)_config_opts_android += -L $(host_prefix)/lib -$(package)_config_opts_android += -I $(host_prefix)/include -$(package)_config_opts_android += -pch -$(package)_config_opts_android += -no-feature-vulkan - -$(package)_config_opts_aarch64_android += -android-arch arm64-v8a -$(package)_config_opts_armv7a_android += -android-arch armeabi-v7a -$(package)_config_opts_x86_64_android += -android-arch x86_64 endef define $(package)_fetch_cmds @@ -242,15 +226,17 @@ define $(package)_preprocess_cmds patch -p1 -i $($(package)_patch_dir)/fix-macos-linker.patch && \ patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch && \ patch -p1 -i $($(package)_patch_dir)/fix_qt_pkgconfig.patch && \ - patch -p1 -i $($(package)_patch_dir)/fix_android_jni_static.patch && \ patch -p1 -i $($(package)_patch_dir)/no-xlib.patch && \ patch -p1 -i $($(package)_patch_dir)/qtbase-moc-ignore-gcc-macro.patch && \ patch -p1 -i $($(package)_patch_dir)/memory_resource.patch && \ + patch -p1 -i $($(package)_patch_dir)/no_warnings_for_symbols.patch && \ + patch -p1 -i $($(package)_patch_dir)/clang_18_libpng.patch && \ patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \ patch -p1 -i $($(package)_patch_dir)/duplicate_lcqpafonts.patch && \ patch -p1 -i $($(package)_patch_dir)/utc_from_string_no_optimize.patch && \ patch -p1 -i $($(package)_patch_dir)/guix_cross_lib_path.patch && \ patch -p1 -i $($(package)_patch_dir)/windows_lto.patch && \ + patch -p1 -i $($(package)_patch_dir)/zlib-timebits64.patch && \ mkdir -p qtbase/mkspecs/macx-clang-linux &&\ cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\ cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \ diff --git a/depends/packages/sqlite.mk b/depends/packages/sqlite.mk index 7d175ec4bb..15bc0f4d7a 100644 --- a/depends/packages/sqlite.mk +++ b/depends/packages/sqlite.mk @@ -8,7 +8,6 @@ define $(package)_set_vars $(package)_config_opts=--disable-shared --disable-readline --disable-dynamic-extensions --enable-option-checking $(package)_config_opts+= --disable-rtree --disable-fts4 --disable-fts5 # We avoid using `--enable-debug` because it overrides CFLAGS, a behavior we want to prevent. -$(package)_cflags_debug += -g $(package)_cppflags_debug += -DSQLITE_DEBUG $(package)_cppflags+=-DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_OMIT_DEPRECATED $(package)_cppflags+=-DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_JSON -DSQLITE_LIKE_DOESNT_MATCH_BLOBS diff --git a/depends/packages/xproto.mk b/depends/packages/xproto.mk index 7a43c52faf..29c349a21b 100644 --- a/depends/packages/xproto.mk +++ b/depends/packages/xproto.mk @@ -1,8 +1,8 @@ package=xproto $(package)_version=7.0.31 $(package)_download_path=https://xorg.freedesktop.org/releases/individual/proto -$(package)_file_name=$(package)-$($(package)_version).tar.bz2 -$(package)_sha256_hash=c6f9747da0bd3a95f86b17fb8dd5e717c8f3ab7f0ece3ba1b247899ec1ef7747 +$(package)_file_name=$(package)-$($(package)_version).tar.gz +$(package)_sha256_hash=6d755eaae27b45c5cc75529a12855fed5de5969b367ed05003944cf901ed43c7 define $(package)_set_vars $(package)_config_opts=--without-fop --without-xmlto --without-xsltproc --disable-specs diff --git a/depends/patches/boost/process_macos_sdk.patch b/depends/patches/boost/process_macos_sdk.patch deleted file mode 100644 index ebc556d972..0000000000 --- a/depends/patches/boost/process_macos_sdk.patch +++ /dev/null @@ -1,27 +0,0 @@ -Fix Boost Process compilation with macOS 14 SDK. -Can be dropped with Boost 1.84.0. -https://github.com/boostorg/process/pull/343. -https://github.com/boostorg/process/issues/342. - -diff --git a/boost/process/detail/posix/handles.hpp b/boost/process/detail/posix/handles.hpp -index cd9e1ce5a..304e77b1c 100644 ---- a/boost/process/detail/posix/handles.hpp -+++ b/boost/process/detail/posix/handles.hpp -@@ -33,7 +33,7 @@ inline std::vector get_handles(std::error_code & ec) - else - ec.clear(); - -- auto my_fd = ::dirfd(dir.get()); -+ auto my_fd = dirfd(dir.get()); - - struct ::dirent * ent_p; - -@@ -117,7 +117,7 @@ struct limit_handles_ : handler_base_ext - return; - } - -- auto my_fd = ::dirfd(dir); -+ auto my_fd = dirfd(dir); - struct ::dirent * ent_p; - - while ((ent_p = readdir(dir)) != nullptr) diff --git a/depends/patches/libevent/cmake_fixups.patch b/depends/patches/libevent/cmake_fixups.patch new file mode 100644 index 0000000000..d80c1a9489 --- /dev/null +++ b/depends/patches/libevent/cmake_fixups.patch @@ -0,0 +1,35 @@ +cmake: set minimum version to 3.5 + +Fix generated pkg-config files, see +https://github.com/libevent/libevent/pull/1165. + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -19,7 +19,7 @@ + # start libevent.sln + # + +-cmake_minimum_required(VERSION 3.1 FATAL_ERROR) ++cmake_minimum_required(VERSION 3.5 FATAL_ERROR) + + if (POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +diff --git a/cmake/AddEventLibrary.cmake b/cmake/AddEventLibrary.cmake +index 04f5837e..d8ea42c4 100644 +--- a/cmake/AddEventLibrary.cmake ++++ b/cmake/AddEventLibrary.cmake +@@ -20,12 +20,12 @@ macro(generate_pkgconfig LIB_NAME) + + set(LIBS "") + foreach (LIB ${LIB_PLATFORM}) +- set(LIBS "${LIBS} -L${LIB}") ++ set(LIBS "${LIBS} -l${LIB}") + endforeach() + + set(OPENSSL_LIBS "") + foreach(LIB ${OPENSSL_LIBRARIES}) +- set(OPENSSL_LIBS "${OPENSSL_LIBS} -L${LIB}") ++ set(OPENSSL_LIBS "${OPENSSL_LIBS} -l${LIB}") + endforeach() + + configure_file("lib${LIB_NAME}.pc.in" "lib${LIB_NAME}.pc" @ONLY) diff --git a/depends/patches/libnatpmp/no_libtool.patch b/depends/patches/libnatpmp/no_libtool.patch deleted file mode 100644 index 2b9f01f6eb..0000000000 --- a/depends/patches/libnatpmp/no_libtool.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -ruN libnatpmp-07004b97cf691774efebe70404cf22201e4d330d/Makefile libnatpmp-07004b97cf691774efebe70404cf22201e4d330d.new/Makefile ---- libnatpmp-07004b97cf691774efebe70404cf22201e4d330d/Makefile 2022-07-05 07:49:50.000000000 +0000 -+++ libnatpmp-07004b97cf691774efebe70404cf22201e4d330d.new/Makefile 2024-01-23 20:59:35.674821779 +0000 -@@ -197,11 +197,7 @@ - $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) - - $(STATICLIB): $(LIBOBJS) --ifneq (, $(findstring darwin, $(OS))) -- $(LIBTOOL) -static -o $@ $? --else - $(AR) crs $@ $? --endif - - $(SHAREDLIB): $(LIBOBJS) - ifneq (, $(findstring darwin, $(OS))) diff --git a/depends/patches/miniupnpc/cmake_get_src_addr.patch b/depends/patches/miniupnpc/cmake_get_src_addr.patch new file mode 100644 index 0000000000..bae1b738f3 --- /dev/null +++ b/depends/patches/miniupnpc/cmake_get_src_addr.patch @@ -0,0 +1,22 @@ +commit cb2026239c2a3aff393952ccb0ee1c448189402d +Author: fanquake +Date: Fri Mar 22 14:03:54 2024 +0000 + + build: add MINIUPNPC_GET_SRC_ADDR to CMake build + + This mirrors the autotools build. + + See https://github.com/miniupnp/miniupnp/pull/721. + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1aa95a8..0cacf3e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -31,6 +31,7 @@ endif () + if (NOT WIN32) + target_compile_definitions(miniupnpc-private INTERFACE + MINIUPNPC_SET_SOCKET_TIMEOUT ++ MINIUPNPC_GET_SRC_ADDR + _BSD_SOURCE _DEFAULT_SOURCE) + if (NOT APPLE AND NOT CMAKE_SYSTEM_NAME MATCHES ".*BSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "SunOS") + # add_definitions (-D_POSIX_C_SOURCE=200112L) diff --git a/depends/patches/miniupnpc/dont_leak_info.patch b/depends/patches/miniupnpc/dont_leak_info.patch index 512f9c50ea..95a09a26dc 100644 --- a/depends/patches/miniupnpc/dont_leak_info.patch +++ b/depends/patches/miniupnpc/dont_leak_info.patch @@ -1,31 +1,31 @@ -commit 8815452257437ba36607d0e2381c01142d1c7bb0 +commit 51f6dd991c29af66fb4f64c6feb2787cce23a1a7 Author: fanquake -Date: Thu Nov 19 10:51:19 2020 +0800 +Date: Mon Jan 8 11:21:40 2024 +0000 Don't leak OS and miniupnpc version info in User-Agent -diff --git a//minisoap.c b/minisoap.c -index 7860667..775580b 100644 ---- a/minisoap.c -+++ b/minisoap.c +diff --git a/src/minisoap.c b/src/minisoap.c +index 903ac5f..046e0ea 100644 +--- a/src/minisoap.c ++++ b/src/minisoap.c @@ -90,7 +90,7 @@ int soapPostSubmit(SOCKET fd, headerssize = snprintf(headerbuf, sizeof(headerbuf), "POST %s HTTP/%s\r\n" "Host: %s%s\r\n" -- "User-Agent: " OS_STRING ", " UPNP_VERSION_STRING ", MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" +- "User-Agent: " OS_STRING " " UPNP_VERSION_STRING " MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" + "User-Agent: " UPNP_VERSION_STRING "\r\n" "Content-Length: %d\r\n" + #if (UPNP_VERSION_MAJOR == 1) && (UPNP_VERSION_MINOR == 0) "Content-Type: text/xml\r\n" - "SOAPAction: \"%s\"\r\n" -diff --git a/miniwget.c b/miniwget.c -index d5b7970..05aeb9c 100644 ---- a/miniwget.c -+++ b/miniwget.c +diff --git a/src/miniwget.c b/src/miniwget.c +index e76a5e5..0cc36fe 100644 +--- a/src/miniwget.c ++++ b/src/miniwget.c @@ -444,7 +444,7 @@ miniwget3(const char * host, "GET %s HTTP/%s\r\n" "Host: %s:%d\r\n" "Connection: Close\r\n" -- "User-Agent: " OS_STRING ", " UPNP_VERSION_STRING ", MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" +- "User-Agent: " OS_STRING " " UPNP_VERSION_STRING " MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" + "User-Agent: " UPNP_VERSION_STRING "\r\n" "\r\n", diff --git a/depends/patches/miniupnpc/fix_windows_snprintf.patch b/depends/patches/miniupnpc/fix_windows_snprintf.patch new file mode 100644 index 0000000000..ff9e26231e --- /dev/null +++ b/depends/patches/miniupnpc/fix_windows_snprintf.patch @@ -0,0 +1,25 @@ +commit a1e9de80ab99b4c956a6a4e21d3e0de6f7a1014d +Author: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> +Date: Sat Apr 20 15:14:47 2024 +0100 + + Fix macro expression that guards `snprintf` for Windows + + Otherwise, the `snprintf` is still wrongly emulated for the following + cases: + - mingw-w64 6.0.0 or new with ucrt + - mingw-w64 8.0.0 or new with iso c ext + +--- a/src/win32_snprintf.h ++++ b/src/win32_snprintf.h +@@ -23,9 +23,9 @@ + (defined(_MSC_VER) && _MSC_VER < 1900) /* Visual Studio older than 2015 */ || \ + (defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && defined(__NO_ISOCEXT)) /* mingw32 without iso c ext */ || \ + (defined(__MINGW64_VERSION_MAJOR) && /* mingw-w64 not ... */ !( \ +- (defined (__USE_MINGW_ANSI_STDIO) && __USE_MINGW_ANSI_STDIO != 0)) /* ... with ansi stdio */ || \ ++ (defined (__USE_MINGW_ANSI_STDIO) && __USE_MINGW_ANSI_STDIO != 0) /* ... with ansi stdio */ || \ + (__MINGW64_VERSION_MAJOR >= 6 && defined(_UCRT)) /* ... at least 6.0.0 with ucrt */ || \ +- (__MINGW64_VERSION_MAJOR >= 8 && !defined(__NO_ISOCEXT)) /* ... at least 8.0.0 with iso c ext */ || \ ++ (__MINGW64_VERSION_MAJOR >= 8 && !defined(__NO_ISOCEXT))) /* ... at least 8.0.0 with iso c ext */ || \ + 0) || \ + 0) + diff --git a/depends/patches/miniupnpc/no_libtool.patch b/depends/patches/miniupnpc/no_libtool.patch deleted file mode 100644 index bb7d4a87ef..0000000000 --- a/depends/patches/miniupnpc/no_libtool.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -ruN miniupnpc-2.2.2/Makefile miniupnpc-2.2.2.new/Makefile ---- miniupnpc-2.2.2/Makefile 2020-11-27 18:25:02.000000000 +0000 -+++ miniupnpc-2.2.2.new/Makefile 2024-01-23 20:58:08.387188527 +0000 -@@ -298,11 +298,7 @@ - makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null - - $(LIBRARY): $(LIBOBJS) --ifneq (, $(findstring darwin, $(OS))) -- $(LIBTOOL) -static -o $@ $? --else - $(AR) crs $@ $? --endif - - $(SHAREDLIBRARY): $(LIBOBJS) - ifneq (, $(findstring darwin, $(OS))) diff --git a/depends/patches/miniupnpc/respect_mingw_cflags.patch b/depends/patches/miniupnpc/respect_mingw_cflags.patch deleted file mode 100644 index a44580ddab..0000000000 --- a/depends/patches/miniupnpc/respect_mingw_cflags.patch +++ /dev/null @@ -1,23 +0,0 @@ -commit fec515a7ac9991a0ee91068fda046b54b191155e -Author: fanquake -Date: Wed Jul 27 15:52:37 2022 +0100 - - build: respect CFLAGS in makefile.mingw - - Similar to the other Makefile. - - Cherry-pick of https://github.com/miniupnp/miniupnp/pull/619. - -diff --git a/Makefile.mingw b/Makefile.mingw -index 2bff7bd..88430d2 100644 ---- a/Makefile.mingw -+++ b/Makefile.mingw -@@ -19,7 +19,7 @@ else - RM = rm -f - endif - #CFLAGS = -Wall -g -DDEBUG -D_WIN32_WINNT=0X501 --CFLAGS = -Wall -W -Wstrict-prototypes -Os -DNDEBUG -D_WIN32_WINNT=0X501 -+CFLAGS ?= -Wall -W -Wstrict-prototypes -Os -DNDEBUG -D_WIN32_WINNT=0X501 - LDLIBS = -lws2_32 -liphlpapi - # -lwsock32 - # -liphlpapi is needed for GetBestRoute() and GetIpAddrTable() diff --git a/depends/patches/native_libtapi/disable_zlib.patch b/depends/patches/native_libtapi/disable_zlib.patch deleted file mode 100644 index 6c7691214a..0000000000 --- a/depends/patches/native_libtapi/disable_zlib.patch +++ /dev/null @@ -1,17 +0,0 @@ -build: disable zlib - -This isn't needed, and causes issues when clang-tblgen -is built, but trys to reach for a system libz.so. - -diff --git a/build.sh b/build.sh -index e25d2f732..ec8422621 100755 ---- a/build.sh -+++ b/build.sh -@@ -66,6 +66,7 @@ cmake ../src/llvm \ - -DCMAKE_INSTALL_PREFIX=$INSTALLPREFIX \ - -DTAPI_REPOSITORY_STRING=$TAPI_VERSION \ - -DTAPI_FULL_VERSION=$TAPI_VERSION \ -+ -DLLVM_ENABLE_ZLIB=OFF \ - $CMAKE_EXTRA_ARGS - - echo "" diff --git a/depends/patches/qt/clang_18_libpng.patch b/depends/patches/qt/clang_18_libpng.patch new file mode 100644 index 0000000000..e807905b32 --- /dev/null +++ b/depends/patches/qt/clang_18_libpng.patch @@ -0,0 +1,40 @@ +fix Qt macOS build with Clang 18 + + See: + https://github.com/pnggroup/libpng/commit/893b8113f04d408cc6177c6de19c9889a48faa24. + + In a similar manner as zlib (madler/zlib#895), + libpng contains a header configuration that's no longer valid and + hasn't been exercised for the macOS target. + + - The target OS conditional macros are misused. Specifically + `TARGET_OS_MAC` covers all Apple targets, including iOS, and it + should not be checked with `#if defined` as they would always be + defined (to either 1 or 0) on Apple platforms. + - `#include ` no longer works for the macOS target and results + in a compilation failure. macOS ships all required functions in + `math.h`, and clients should use `math.h` instead. + +--- a/qtbase/src/3rdparty/libpng/pngpriv.h ++++ b/qtbase/src/3rdparty/libpng/pngpriv.h +@@ -514,18 +514,8 @@ + */ + # include + +-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ +- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) +- /* We need to check that hasn't already been included earlier +- * as it seems it doesn't agree with , yet we should really use +- * if possible. +- */ +-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__) +-# include +-# endif +-# else +-# include +-# endif ++# include ++ + # if defined(_AMIGA) && defined(__SASC) && defined(_M68881) + /* Amiga SAS/C: We must include builtin FPU functions when compiling using + * MATH=68881 diff --git a/depends/patches/qt/dont_hardcode_pwd.patch b/depends/patches/qt/dont_hardcode_pwd.patch index 665b7a21df..f6955b2f20 100644 --- a/depends/patches/qt/dont_hardcode_pwd.patch +++ b/depends/patches/qt/dont_hardcode_pwd.patch @@ -1,14 +1,13 @@ +Do not assume FHS in scripts -commit 0e953866fc4672486e29e1ba6d83b4207e7b2f0b -Author: fanquake -Date: Tue Aug 18 15:09:06 2020 +0800 +On systems that do not follow the Filesystem Hierarchy Standard, such as +guix, the hardcoded `/bin/pwd` will fail to be found so that the script +will fail. - Don't hardcode pwd path +Use `pwd`, instead, so that the command can be found through the normal +path search mechanism. - Let a man use his builtins if he wants to! Also, removes the unnecessary - assumption that pwd lives under /bin/pwd. - - See #15581. +See https://github.com/qt/qtbase/commit/3388de698bfb9bbc456c08f03e83bf3e749df35c. diff --git a/qtbase/configure b/qtbase/configure index 08b49a8d..faea5b55 100755 diff --git a/depends/patches/qt/fix_android_jni_static.patch b/depends/patches/qt/fix_android_jni_static.patch deleted file mode 100644 index 79824f244a..0000000000 --- a/depends/patches/qt/fix_android_jni_static.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- old/qtbase/src/plugins/platforms/android/androidjnimain.cpp -+++ new/qtbase/src/plugins/platforms/android/androidjnimain.cpp -@@ -979,6 +979,14 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/) - __android_log_print(ANDROID_LOG_FATAL, "Qt", "registerNatives failed"); - return -1; - } -+ -+ const jint ret = QT_PREPEND_NAMESPACE(QtAndroidPrivate::initJNI(vm, env)); -+ if (ret != 0) -+ { -+ __android_log_print(ANDROID_LOG_FATAL, "Qt", "initJNI failed"); -+ return ret; -+ } -+ - QWindowSystemInterfacePrivate::TabletEvent::setPlatformSynthesizesMouse(false); - - m_javaVM = vm; diff --git a/depends/patches/qt/mac-qmake.conf b/depends/patches/qt/mac-qmake.conf index cb94bf07b4..a29db20004 100644 --- a/depends/patches/qt/mac-qmake.conf +++ b/depends/patches/qt/mac-qmake.conf @@ -13,6 +13,7 @@ QMAKE_MAC_SDK.macosx.Path = $${MAC_SDK_PATH} QMAKE_MAC_SDK.macosx.platform_name = macosx QMAKE_MAC_SDK.macosx.SDKVersion = $${MAC_SDK_VERSION} QMAKE_MAC_SDK.macosx.PlatformPath = /phony +QMAKE_CXXFLAGS += -fuse-ld=lld !host_build: QMAKE_CFLAGS += -target $${MAC_TARGET} !host_build: QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CFLAGS !host_build: QMAKE_CXXFLAGS += -target $${MAC_TARGET} diff --git a/depends/patches/qt/no_warnings_for_symbols.patch b/depends/patches/qt/no_warnings_for_symbols.patch new file mode 100644 index 0000000000..11cdc599ed --- /dev/null +++ b/depends/patches/qt/no_warnings_for_symbols.patch @@ -0,0 +1,11 @@ +--- a/qtbase/mkspecs/features/mac/no_warn_empty_obj_files.prf ++++ b/qtbase/mkspecs/features/mac/no_warn_empty_obj_files.prf +@@ -1,7 +1,7 @@ + # Prevent warnings about object files without any symbols. This is a common + # thing in Qt as we tend to build files unconditionally, and then use ifdefs + # to compile out parts that are not relevant. +-QMAKE_RANLIB += -no_warning_for_no_symbols ++# QMAKE_RANLIB += -no_warning_for_no_symbols + + # We have to tell 'ar' to not run ranlib by itself + QMAKE_AR += -S diff --git a/depends/patches/qt/zlib-timebits64.patch b/depends/patches/qt/zlib-timebits64.patch new file mode 100644 index 0000000000..139c1dfa77 --- /dev/null +++ b/depends/patches/qt/zlib-timebits64.patch @@ -0,0 +1,31 @@ +From a566e156b3fa07b566ddbf6801b517a9dba04fa3 Mon Sep 17 00:00:00 2001 +From: Mark Adler +Date: Sat, 29 Jul 2023 22:13:09 -0700 +Subject: [PATCH] Avoid compiler complaints if _TIME_BITS defined when building + zlib. + +zlib does not use time_t, so _TIME_BITS is irrelevant. However it +may be defined anyway as part of a sledgehammer indiscriminately +applied to all builds. + +From https://github.com/madler/zlib/commit/a566e156b3fa07b566ddbf6801b517a9dba04fa3.patch +--- + qtbase/src/3rdparty/zlib/src/gzguts.h | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/qtbase/src/3rdparty/zlib/src/gzguts.h b/qtbase/src/3rdparty/zlib/src/gzguts.h +index e23f831f5..f9375047e 100644 +--- a/qtbase/src/3rdparty/zlib/src/gzguts.h ++++ b/qtbase/src/3rdparty/zlib/src/gzguts.h +@@ -26,9 +26,8 @@ + # ifndef _LARGEFILE_SOURCE + # define _LARGEFILE_SOURCE 1 + # endif +-# ifdef _FILE_OFFSET_BITS +-# undef _FILE_OFFSET_BITS +-# endif ++# undef _FILE_OFFSET_BITS ++# undef _TIME_BITS + #endif + + #ifdef HAVE_HIDDEN diff --git a/doc/BGL-conf.md b/doc/BGL-conf.md index 86769f3a0c..1d82a2395b 100644 --- a/doc/BGL-conf.md +++ b/doc/BGL-conf.md @@ -59,7 +59,7 @@ The `includeconf=` option in the `BGL.conf` file can be used to include ad Operating System | Data Directory | Example Path -- | -- | -- -Windows | `%APPDATA%\BGL\` | `C:\Users\username\AppData\Roaming\BGL\BGL.conf` +Windows | `%LOCALAPPDATA%\BGL\` | `C:\Users\username\AppData\Local\BGL\BGL.conf` Linux | `$HOME/.BGL/` | `/home/username/.BGL/BGL.conf` macOS | `$HOME/Library/Application Support/BGL/` | `/Users/username/Library/Application Support/BGL/BGL.conf` diff --git a/doc/JSON-RPC-interface.md b/doc/JSON-RPC-interface.md index e2b1014bd7..b3c83e0338 100644 --- a/doc/JSON-RPC-interface.md +++ b/doc/JSON-RPC-interface.md @@ -33,10 +33,10 @@ requests when multiple wallets are in use. ```sh # Get block count from the / endpoint when rpcuser=alice and rpcport=38332 -$ curl --user alice --data-binary '{"jsonrpc": "1.0", "id": "0", "method": "getblockcount", "params": []}' -H 'content-type: text/plain;' localhost:38332/ +$ curl --user alice --data-binary '{"jsonrpc": "2.0", "id": "0", "method": "getblockcount", "params": []}' -H 'content-type: application/json' localhost:38332/ # Get balance from the /wallet/walletname endpoint when rpcuser=alice, rpcport=38332 and rpcwallet=desc-wallet -$ curl --user alice --data-binary '{"jsonrpc": "1.0", "id": "0", "method": "getbalance", "params": []}' -H 'content-type: text/plain;' localhost:38332/wallet/desc-wallet +$ curl --user alice --data-binary '{"jsonrpc": "2.0", "id": "0", "method": "getbalance", "params": []}' -H 'content-type: application/json' localhost:38332/wallet/desc-wallet ``` @@ -74,6 +74,22 @@ major version via the `-deprecatedrpc=` command line option. The release notes of a new major release come with detailed instructions on what RPC features were deprecated and how to re-enable them temporarily. +## JSON-RPC 1.1 vs 2.0 + +The server recognizes [JSON-RPC v2.0](https://www.jsonrpc.org/specification) requests +and responds accordingly. A 2.0 request is identified by the presence of +`"jsonrpc": "2.0"` in the request body. If that key + value is not present in a request, +the legacy JSON-RPC v1.1 protocol is followed instead, which was the only available +protocol in v27.0 and prior releases. + +|| 1.1 | 2.0 | +|-|-|-| +| Request marker | `"version": "1.1"` (or none) | `"jsonrpc": "2.0"` | +| Response marker | (none) | `"jsonrpc": "2.0"` | +| `"error"` and `"result"` fields in response | both present | only one is present | +| HTTP codes in response | `200` unless there is any kind of RPC error (invalid parameters, method not found, etc) | Always `200` unless there is an actual HTTP server error (request parsing error, endpoint not found, etc) | +| Notifications: requests that get no reply | (not supported) | Supported for requests that exclude the "id" field. Returns HTTP status `204` "No Content" | + ## Security The RPC interface allows other programs to control BGL Core, diff --git a/doc/README.md b/doc/README.md index 1f6688b7dc..9f7c8d7ba7 100644 --- a/doc/README.md +++ b/doc/README.md @@ -45,7 +45,6 @@ The following are developer notes on how to build BGL Core on your native platfo - [FreeBSD Build Notes](build-freebsd.md) - [OpenBSD Build Notes](build-openbsd.md) - [NetBSD Build Notes](build-netbsd.md) -- [Android Build Notes](build-android.md) Development --------------------- diff --git a/doc/bips.md b/doc/bips.md index 8309ee7e92..19a8091f55 100644 --- a/doc/bips.md +++ b/doc/bips.md @@ -69,3 +69,4 @@ BIPs that are implemented by Bitcoin Core: [`385`](https://github.com/bitcoin/bips/blob/master/bip-0385.mediawiki): Output Script Descriptors, and most of Script Expressions are implemented as of **v0.17.0** ([PR 13697](https://github.com/bitcoin/bitcoin/pull/13697)). * [`BIP 386`](https://github.com/bitcoin/bips/blob/master/bip-0386.mediawiki): tr() Output Script Descriptors are implemented as of **v22.0** ([PR 22051](https://github.com/bitcoin/bitcoin/pull/22051)). +* [`BIP 431`](https://github.com/bitcoin/bips/blob/master/bip-0431.mediawiki): transactions with nVersion=3 are standard and treated as Topologically Restricted Until Confirmation as of **v28.0** ([PR 29496](https://github.com/bitcoin/bitcoin/pull/29496)). diff --git a/doc/build-android.md b/doc/build-android.md deleted file mode 100644 index 2f2e01c441..0000000000 --- a/doc/build-android.md +++ /dev/null @@ -1,25 +0,0 @@ -ANDROID BUILD NOTES -====================== - -This guide describes how to build and package the `bitcoin-qt` GUI for Android on Linux and macOS. - - -## Dependencies - -Before proceeding with an Android build one needs to get the [Android SDK](https://developer.android.com/studio) and use the "SDK Manager" tool to download the NDK and one or more "Platform packages" (these are Android versions and have a corresponding API level). - -The minimum supported Android NDK version is [r23](https://github.com/android/ndk/wiki/Changelog-r23). - -In order to build `ANDROID_API_LEVEL` (API level corresponding to the Android version targeted, e.g. Android 9.0 Pie is 28 and its "Platform package" needs to be available) and `ANDROID_TOOLCHAIN_BIN` (path to toolchain binaries depending on the platform the build is being performed on) need to be set. - -API levels from 24 to 29 have been tested to work. - -If the build includes Qt, environment variables `ANDROID_SDK` and `ANDROID_NDK` need to be set as well but can otherwise be omitted. -This is an example command for a default build with no disabled dependencies: - - ANDROID_SDK=/home/user/Android/Sdk ANDROID_NDK=/home/user/Android/Sdk/ndk-bundle make HOST=aarch64-linux-android ANDROID_API_LEVEL=28 ANDROID_TOOLCHAIN_BIN=/home/user/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin - - -## Building and packaging - -After the depends are built configure with one of the resulting prefixes and run `make && make apk` in `src/qt`. \ No newline at end of file diff --git a/doc/build-freebsd.md b/doc/build-freebsd.md index 75ef3d99ae..321bd9bf34 100644 --- a/doc/build-freebsd.md +++ b/doc/build-freebsd.md @@ -1,6 +1,6 @@ # FreeBSD Build Guide -**Updated for FreeBSD [12.3](https://www.freebsd.org/releases/12.3R/announce/)** +**Updated for FreeBSD [14.0](https://www.freebsd.org/releases/14.0R/announce/)** This guide describes how to build BGLd, command-line utilities, and GUI on FreeBSD. @@ -64,10 +64,11 @@ sh/bash: export BDB_PREFIX=[path displayed above] #### GUI Dependencies ###### Qt5 -BGL Core includes a GUI built with the cross-platform Qt Framework. To compile the GUI, we need to install `qt5`. Skip if you don't intend to use the GUI. +Bitgesell Core includes a GUI built with the cross-platform Qt Framework. To compile the GUI, we need to install the necessary parts of Qt. Skip if you don't intend to use the GUI. ```bash -pkg install qt5 +pkg install qt5-buildtools qt5-core qt5-gui qt5-linguisttools qt5-testlib qt5-widgets ``` + ###### libqrencode The GUI can encode addresses in a QR Code. To build in QR support for the GUI, install `libqrencode`. Skip if not using the GUI or don't want QR code functionality. diff --git a/doc/build-netbsd.md b/doc/build-netbsd.md index 5c2120e1d7..1c230fe605 100644 --- a/doc/build-netbsd.md +++ b/doc/build-netbsd.md @@ -1,6 +1,6 @@ # NetBSD Build Guide -Updated for NetBSD [9.2](https://netbsd.org/releases/formal-9/NetBSD-9.2.html). +**Updated for NetBSD [10.0](https://netbsd.org/releases/formal-10/NetBSD-10.0.html)** This guide describes how to build bitcoind, command-line utilities, and GUI on NetBSD. @@ -12,23 +12,23 @@ Install the required dependencies the usual way you [install software on NetBSD] The example commands below use `pkgin`. ```bash -pkgin install autoconf automake libtool pkg-config git gmake boost libevent +pkgin install autoconf automake libtool pkg-config git gmake boost-headers libevent ``` NetBSD currently ships with an older version of `gcc` than is needed to build. You should upgrade your `gcc` and then pass this new version to the configure script. -For example, grab `gcc9`: +For example, grab `gcc12`: ``` -pkgin install gcc9 +pkgin install gcc12 ``` Then, when configuring, pass the following: ```bash ./configure ... - CC="/usr/pkg/gcc9/bin/gcc" \ - CXX="/usr/pkg/gcc9/bin/g++" \ + CC="/usr/pkg/gcc12/bin/gcc" \ + CXX="/usr/pkg/gcc12/bin/g++" \ ... ``` @@ -66,10 +66,10 @@ pkgin install db4 #### GUI Dependencies -Bitcoin Core includes a GUI built with the cross-platform Qt Framework. To compile the GUI, we need to install `qt5`. +Bitcoin Core includes a GUI built with the cross-platform Qt Framework. To compile the GUI, Qt 5 is required. ```bash -pkgin install qt5 +pkgin install qt5-qtbase qt5-qttools ``` The GUI can encode addresses in a QR Code. To build in QR support for the GUI, install `qrencode`. @@ -84,7 +84,7 @@ There is an included test suite that is useful for testing code changes when dev To run the test suite (recommended), you will need to have Python 3 installed: ```bash -pkgin install python37 +pkgin install python39 ``` ### Building BGL Core diff --git a/doc/build-openbsd.md b/doc/build-openbsd.md index 5cf59d60b9..1088cdaec9 100644 --- a/doc/build-openbsd.md +++ b/doc/build-openbsd.md @@ -1,6 +1,6 @@ # OpenBSD Build Guide -**Updated for OpenBSD [7.4](https://www.openbsd.org/74.html)** +**Updated for OpenBSD [7.5](https://www.openbsd.org/75.html)** This guide describes how to build BGLd, command-line utilities, and GUI on OpenBSD. @@ -63,7 +63,7 @@ export BDB_PREFIX="/path/to/BGL/depends/x86_64-unknown-openbsd" BGL Core includes a GUI built with the cross-platform Qt Framework. To compile the GUI, Qt 5 is required. ```bash -pkg_add qt5 +pkg_add qtbase qttools ``` ## Building BGL Core diff --git a/doc/build-osx.md b/doc/build-osx.md index 16c982b1c3..8c1aa2e9c5 100644 --- a/doc/build-osx.md +++ b/doc/build-osx.md @@ -46,7 +46,21 @@ To install, run the following from your terminal: brew install automake libtool boost pkg-config libevent ``` -### 4. Clone BGL repository +For macOS 11 (Big Sur) and 12 (Monterey) you need to install a more recent version of llvm. + +``` bash +brew install llvm +``` + +And append the following to the configure commands below: + +``` bash +CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++ +``` + +Try `llvm@17` if compilation fails with the default version of llvm. + +### 4. Clone Bitgesell repository `git` should already be installed by default on your system. Now that all the required dependencies are installed, let's clone the BGL Core repository to a directory. diff --git a/doc/code-sync/sync_log.txt b/doc/code-sync/sync_log.txt index bbb39e64fa..9307ee792d 100644 --- a/doc/code-sync/sync_log.txt +++ b/doc/code-sync/sync_log.txt @@ -17770,6 +17770,1607 @@ pr 2024-03-29 11:39:57 +0100 4373414d26ffd2cd004a59a095ce30b433059780 Merge bitc v 2024-03-29 15:19:08 +0100 fad23a06469607689c4f637bb407c96af4902a27 ci: Bump clang+llvm in i686_multiprocess task cr 2024-03-29 16:41:18 +0100 fa75220ac5e0ea401a26dd2f16a88627e51c240a ci: Use clang-18 in asan/fuzz/tsan task pr 2024-03-30 00:52:50 +0100 61de64df6790077857faba84796bb874b59c5d15 Merge bitcoin/bitcoin#29724: 29242 Diagram check followups +v 2024-03-31 10:33:58 +0100 31a15f0aff79d2b34a9640909b9e6fb39a647b60 bench: Disable WalletCreate* benchmarks when building with MSVC +v 2024-04-01 04:13:06 +0100 bbe82c116e72ca0638751e063bf564cd1fe5c4d5 Fix #29767, set m_synced = true after Commit() +pr 2024-04-01 14:54:45 +0100 8d19d688f407ac0f41b1137d2d54887b6ac66e5d Merge bitcoin/bitcoin#29738: doc: fix typos +pr 2024-04-01 14:56:27 +0100 b8420e4603094433deb9dd4e4fabd12dc3921c4a Merge bitcoin/bitcoin#29764: doc: Suggest installing dev packages for debian/ubuntu qt5 build +pr 2024-04-01 15:10:42 +0100 3d37ed490a1a90141ead9e393d7739cf6f5afaca Merge bitcoin/bitcoin#29732: depends: qt 5.15.13 +pr 2024-04-01 15:27:18 +0100 c7247bd9e80bc5599df5c8e26bb3c937cccc8db0 Merge bitcoin/bitcoin#29765: ci: Use clang-18 +pr 2024-04-01 15:54:44 +0100 90224fbf614e0e4c537ea90c2107b2567826167c Merge bitcoin/bitcoin#29756: doc: Override `-g` properly to skip debugging information +pr 2024-04-01 16:53:31 +0100 948ecf181e84010b38bfdc05135a44e3fd5816fd Merge bitcoin/bitcoin#29648: Remove libbitcoinconsensus +pr 2024-04-01 17:59:42 +0100 23ba39470c3d155a65f0616f8848ada730658301 Merge bitcoin/bitcoin#29753: test: fix StopIteration exception in p2p_node_network_limited.py +v 2024-04-01 19:37:24 +0100 ca18aea5c4975ace4e307be96c74641d203fa389 Add AutoFile::seek and tell +v 2024-04-02 09:37:10 +0100 d32346c39e9ddb2a58a4bb77061044ac3008ca7e [doc] add historical release notes for 26.1 +v 2024-04-02 09:57:21 +0100 fac012c7262f036e9b6f5800e57dcd63870a871c ci: Temporarily disable bpfcc-tools +pr 2024-04-02 11:06:35 +0100 1d8a5f0d9bd00d0f585d77b8e70a3e51fda79cb9 Merge bitcoin/bitcoin#29750: test: makes timeout a forced named argument in tests methods that use it +pr 2024-04-02 11:20:38 +0100 c407caa2972191d6a795228fd4bcdcd4be41d4a7 Merge bitcoin/bitcoin#29687: cli: improve bitcoin-cli error when not connected +v 2024-04-02 13:39:33 +0100 fd8527a20ebc490df030b3a91c1161f00c8a29b6 guix: remove errant leftover from #29648 +v 2024-04-02 14:29:24 +0100 03b87a3e64305ba651e22a730e35271dea8fea64 Drop Windows Socket dependency for `randomenv.cpp` +pr 2024-04-02 14:57:22 +0100 82b47cb52b695dab02b3c6c50691ec9dd0a443b2 Merge bitcoin/bitcoin#29733: build, macos: Drop unused `osx_volname` target +pr 2024-04-02 15:05:09 +0100 6dabb315c4fb2cdc4421ed34dee5e19042f899c3 Merge bitcoin/bitcoin#29784: [doc] add historical release notes for 26.1 +pr 2024-04-02 15:47:05 +0100 3b987d03a49964995dced76889634561fd363d28 Merge bitcoin/bitcoin#29419: log: deduplicate category names and improve logging.cpp +cr 2024-04-02 16:49:48 +0100 49c0b8b2288e60ae22fcac5d03811cf36ecec058 test: Bump timeouts in feature_index_prune and wallet_importdescriptors +pr 2024-04-02 17:05:14 +0100 3b12fc7bcd94cf214984911f68612feb468d5404 Merge bitcoin/bitcoin#29787: guix: remove errant leftover from #29648 +v 2024-04-02 17:12:24 +0100 eef51afc6a29c693a68400930ef8011be41b7401 depends: add -g to DEBUG=1 flags +v 2024-04-02 17:12:25 +0100 84fbf9b2841a9ba1ebd1421b9ff9fe444bb1abd9 depends: remove -g from sqlite debug flags +s 2024-04-02 19:38:40 +0100 0ead466a0c72bef0a8622749b84e9c7c5c37144f Update the developer mailing list address. +v 2024-04-02 20:15:15 +0100 2de2ea2ff63b97eacb23234932c6e1f1f65e4494 build, depends: Fix `libmultiprocess` cross-compilation +pr 2024-04-03 09:45:08 +0100 43735252c58217aaee19aa3e7d024525f457d64b Merge bitcoin/bitcoin#29782: doc: Update the developer mailing list address. +pr 2024-04-03 10:26:33 +0100 5aff45a90aa4183211b423dfc6364dd6c1806fc9 Merge bitcoin/bitcoin#29665: build, depends: Fix `libmultiprocess` cross-compilation +pr 2024-04-03 10:43:21 +0100 0d509bab45d292caeaf34600e57b5928757c6005 Merge bitcoin/bitcoin#29527: depends: add -g to DEBUG=1 flags +v 2024-04-03 12:21:49 +0100 3cb80febb87696f3b1073469c0cc68a57ba81de9 guix: Remove another leftover from #29648 +pr 2024-04-04 10:08:42 +0100 3900854ba391780b7b05347ee2351887097409f1 Merge bitcoin/bitcoin#29797: guix: Remove another leftover from #29648 +pr 2024-04-04 11:14:46 +0100 5de68e45c280f98f70bd29f82495927ab773f68a Merge bitcoin/bitcoin#29788: ci: Temporarily disable bpfcc-tools +pr 2024-04-04 12:02:13 +0100 71c51c161d476cc495afdb7864283fdb84d2dc0c Merge bitcoin/bitcoin#29673: guix: use GCC 11 in macOS build env +ff 2024-04-04 12:05:16 +0100 4654cc32248d788ac1160ca320ea68d31357d0c9 Update secp256k1 subtree to latest master +cr 2024-04-04 12:05:16 +0100 53eec53dca1cb677d11564b055d3b8581ddd6747 Squashed 'src/secp256k1/' changes from efe85c70a2..d8311688bd +v 2024-04-04 12:36:45 +0100 c4f857cc301d856f3c60acbe6271d3fe19441c7a test: Extends wait_for_getheaders so a specific block hash can be checked +v 2024-04-04 13:55:46 +0100 561a650e0f669159699224ddd4eb5b1c91cf9ac3 test: Fix debug recommendation in argsman_tests +pr 2024-04-04 14:25:16 +0100 5a5ab1d5446693ee2655860c2f2920bcc3389c83 Merge bitcoin/bitcoin#29776: ThreadSanitizer: Fix #29767 +v 2024-04-04 21:08:38 +0100 10c5275ba4532fb1bf54057d2f61fc35b51f1e85 gui: don't permit port in proxy IP option +v 2024-04-04 22:32:39 +0100 2179e2c3209a41c1419f1f5ed6270a0dad68b50d doc: i2p: improve `-i2pacceptincoming` mention +cr 2024-04-05 00:06:14 +0100 f81fad5e0f3be1f7aed59f9da00396c75c2a6406 test: introduce and use `calculate_input_weight` helper +v 2024-04-05 00:09:31 +0100 6d91cb781c30966963f28e7577c7aa3829fa9390 test: add unit tests for `calculate_input_weight` +pr 2024-04-05 15:10:14 +0100 eb78ebc064b8d7fdd605e184efb6b45a53b2c6d5 Merge bitcoin/bitcoin#29725: depends: build libqrencode with CMake +cr 2024-04-05 15:20:14 +0100 3c1ae3ee33d4d9dbea046d5ab8ee924a12982759 depends: switch libnatpmp to CMake +cr 2024-04-05 15:20:14 +0100 72ba7b5d263b6d909ae59040536a499a596237c2 depends: libnatpmp f2433bec24ca3d3f22a8a7840728a3ac177f94ba +cr 2024-04-05 15:38:16 +0100 a3485af67da4949c72c45acc608f8746ed0e0848 ci: Drop duplicated compiler flags +cr 2024-04-05 16:44:21 +0100 2d1819455cb4c516f6cdf81c11e869a23dee3e6b crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's +pr 2024-04-05 17:02:00 +0100 c3530254c926a5ab9b710512bbbd29e5cd5b10f7 Merge bitcoin/bitcoin#29081: refactor: Remove gmtime* +pr 2024-04-05 17:09:10 +0100 3a8dc562f259af2716a231f225130e0fdbab9ab1 Merge bitcoin/bitcoin#29800: ci: Drop duplicated compiler flags +pr 2024-04-05 17:25:38 +0100 8f1185feec3efdb8d0e3f6b7d0aee67bbdc3d653 Merge bitcoin/bitcoin#29805: test: Fix debug recommendation in argsman_tests +pr 2024-04-06 09:39:20 +0100 b5d21182e5a66110ce2796c2c99da39c8ebf0d72 Merge bitcoin/bitcoin#29803: Update libsecp256k1 subtree to latest master +v 2024-04-06 09:40:23 +0100 c7efee591a27720757504f3ebf7dbeaef0185931 ci: use LLVM 18.1.3 in MSAN jobs +cr 2024-04-06 09:41:24 +0100 61641e2466768e128fef995e9fcb24cad90e527d ci: remove --with-asm usage (secp256k1) +v 2024-04-06 15:46:53 +0100 56e1e5dd10cbe51d3abc3fbf532b6b41bf62a889 refactor, bench, fuzz: Drop unneeded `UCharCast` calls +v 2024-04-06 16:03:39 +0100 1573e9a11e7a204a51f815a4c48c4b7054303ca9 fuzz, refactor: Deduplicate fuzz binary path creation +v 2024-04-06 16:06:52 +0100 47cedee776c6253232beb6039ea708c578211327 fuzz: Introduce `BITCOINFUZZ` environment variable +v 2024-04-06 17:30:09 +0100 93fae5ae7c31fa1b1095770f00adeac1cfeda4b9 test: remove immediate tx relay workaround in wallet_groups.py +cr 2024-04-06 19:17:20 +0100 a8203e94123b6ea6e4f4a6320e3ad20457f44a28 refactor: Simplify `extra_txn` to be a vec of CTransactionRef instead of a vec of pair +pr 2024-04-06 20:45:19 +0100 0f0e36de5f53f82d31416dc05a24d2885781ce57 Merge bitcoin/bitcoin#29815: crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's +pr 2024-04-07 10:38:59 +0100 03e94f8b90c2a7b7d3ee2b11899c046ec3a67394 Merge bitcoin/bitcoin#29791: test: Bump timeouts in feature_index_prune and wallet_importdescriptors +pr 2024-04-07 10:47:51 +0100 bb1383eb52502229cc6112f82f432c29f27a4e45 Merge bitcoin/bitcoin#29742: ci: remove --with-asm=no (secp256k1) from MSAN jobs +v 2024-04-07 10:49:21 +0100 5efebc0edbb479d2041b3fb2d43be3a77e817b3e depends: add the new LLVM debug macro +pr 2024-04-07 10:50:17 +0100 f0794cbd405636a7f528a60f2873050b865cf7e8 Merge bitcoin/bitcoin#29822: test: remove immediate tx relay workaround in wallet_groups.py +cr 2024-04-07 14:04:45 +0100 78407b99ed6dd17f687fcbfb0486ecc433302287 [clang-tidy] Enable the misc-no-recursion check +cr 2024-04-07 14:06:27 +0100 05da2460db895374ea1fd89e4b8b4b73689f8faf guix: remove gcc-toolchain static from Windows build +v 2024-04-08 10:12:28 +0100 93bd2e2f6c9672fbf1120d1e25349f6edd29cfef doc: 25.2 historical release notes +v 2024-04-08 14:05:07 +0100 73b68bd8b4f9447e30091c7f8c3dc91a086bd93b fill_mempool: remove subtest-specific comment +pr 2024-04-08 15:49:10 +0100 3206e45412ded0e70c1f15ba66c2ba3b4426f27f Merge bitcoin/bitcoin#29830: doc: 25.2 historical release notes +pr 2024-04-08 16:35:15 +0100 eaf186d1ee3a0271ec8cad65fa294b4298d79b0a Merge bitcoin/bitcoin#29690: clang-tidy: Enable misc-no-recursion +pr 2024-04-08 16:36:12 +0100 34a299f9ee04ca10414be2232f9022ee04f02486 Merge bitcoin/bitcoin#29691: Change Luke Dashjr seed to dashjr-list-of-p2p-nodes.us +v 2024-04-09 08:17:34 +0100 c15170c27d96a66422cb86c6653c931aa204bbb0 Revert "ci: Temporarily disable bpfcc-tools" +pr 2024-04-09 08:32:12 +0100 9dfe43572eae1666077cb49afd749a87580981f0 Merge bitcoin/bitcoin#29781: depends: add new LLVM debug macro +pr 2024-04-09 08:43:28 +0100 a160a6a08103ed2dbb42ad92c03a6f3de33add1d Merge bitcoin/bitcoin#29498: test: Update --tmpdir doc string to say directory must not exist +pr 2024-04-09 09:21:27 +0100 71f96c274f52786eb2d95f0f5e837113014c8360 Merge bitcoin/bitcoin#29786: Drop Windows Socket dependency for `randomenv.cpp` +pr 2024-04-09 09:57:19 +0100 383457333a1824e5a1f62356a6b92f05e7280cda Merge bitcoin/bitcoin#29832: Revert "ci: Temporarily disable bpfcc-tools" +pr 2024-04-09 09:58:16 +0100 f348ec7c2a9bec428a0b7a62592a5662c0087750 Merge bitcoin/bitcoin#29821: fuzz: Some `test/fuzz/test_runner.py` improvements +v 2024-04-09 10:21:57 +0100 a71eadf66bed8d3ea4282c8499f533a8eeed9900 Change MAC_OSX macro to __APPLE__ in crypto package +pr 2024-04-09 13:17:28 +0100 bf031a517c79cec5b43420bcd40291ab0e9f68a8 Merge bitcoin/bitcoin#29752: refactor: Use typesafe Wtxid in compact block encodings +v 2024-04-09 13:47:39 +0100 a3da63e8febe475f2250f6432bca237d31fa9107 Move fill_mempool to util function +v 2024-04-09 13:53:34 +0100 4ba1d0b55339c3ea90e2bcd64662a06f0f90dd46 fuzz: Add coverage for client_maxfeerate +v 2024-04-09 13:53:34 +0100 91d7d8f22a1c528db14fa743c66cd861ea00e84b AcceptMultipleTransactions: Fix workspace client_maxfeerate +v 2024-04-09 13:53:34 +0100 f3aa5bd5eb6d1088f98a4dc7daaab0e17a7d5529 fill_mempool: assertions and docsctring update +cr 2024-04-09 14:58:05 +0100 08ff17d1420a3d1c14c6b1a5436678fbb1dd9cbc ci: disable _FORTIFY_SOURCE with MSAN +pr 2024-04-09 16:09:02 +0100 0b4218e43cb1d3e149a0adfbf12aa9b4636f70c3 Merge bitcoin/bitcoin#29834: build: Change MAC_OSX macro to __APPLE__ in crypto +pr 2024-04-09 21:16:28 +0100 e31956980e16ad3d619022e572bdf55a4eae8716 Merge bitcoin/bitcoin#29820: refactor, bench, fuzz: Drop unneeded `UCharCast` calls +pr 2024-04-10 11:03:06 +0100 0a9cfd175259391ec29b0dfe87578d46b508611e Merge bitcoin/bitcoin#28981: Replace Boost.Process with cpp-subprocess +v 2024-04-10 11:20:31 +0100 95c594f4e9ea3cb57aa03b75d4d70fe0e1742065 depends: remove no longer needed patch for Boost::Process +pr 2024-04-10 11:31:02 +0100 3f6a6da3b08da15c10cbf2806f672da4a57254f6 Merge bitcoin/bitcoin#29844: depends: remove no longer needed patch for Boost::Process +cr 2024-04-10 12:59:43 +0100 a0dc2ebcda9e33aa5320221cd4ea371f84d221fd guix: replace GCC unaligned VMOV patch with binutils patch +v 2024-04-10 15:15:46 +0100 038fd979effb54ee76ce1b7cf078e920c652326a [net processing] Move nTimeOffset to net_processing +v 2024-04-10 15:15:46 +0100 55361a15d1aa6984051441bce88112000688fb43 [net processing] Use std::chrono for type-safe time offsets +v 2024-04-10 16:01:27 +0100 7d9c3ec622d73a98d07ab3cee78751718982a5bc [net processing] Introduce PeerManagerInfo +v 2024-04-10 16:01:27 +0100 92e72b5d0d49aa395e626c238bc28aba8e4c3d44 [net processing] Move IgnoresIncomingTxs to PeerManagerInfo +cr 2024-04-10 16:01:27 +0100 c6be144c4b774a03a8bcab5a165768cf81e9b06b Remove timedata +cr 2024-04-10 16:01:27 +0100 ee178dfcc1175e0af8163216c9c024f4bfc97965 Add TimeOffsets helper class +cr 2024-04-11 13:03:37 +0100 13f5391bbb45cd8aebc6ae70cad08aff632ebd55 Fix typos in `subprocess.hpp` +v 2024-04-11 13:43:30 +0100 f2e3662e57eca1330962faf38ff428a564d50a11 net: Decrease nMaxIPs when learning from DNS seeds +pr 2024-04-11 13:46:52 +0100 bdb33ec51986570ea17406c83bad2c955ae23186 Merge bitcoin/bitcoin#29735: AcceptMultipleTransactions: Fix workspace not being set as client_maxfeerate failure +pr 2024-04-11 15:18:39 +0100 0de63b8b46eff5cda85b4950062703324ba65a80 Merge bitcoin/bitcoin#29849: Fix typos in `subprocess.hpp` +v 2024-04-12 08:52:06 +0100 dd3e0fa12534c9e782dc9c24d2e30b70a0d73176 build: Fix false positive `CHECK_ATOMIC` test for clang-15 +cr 2024-04-12 13:27:45 +0100 1eea10a6d25fd8225560347cda2b1cfdc267910d Squashed 'src/minisketch/' changes from a571ba20f9..3472e2f5ec +ff 2024-04-12 13:27:45 +0100 e58e1323a8c3cd4d04731414dc050531b901fa23 Update minisketch subtree to latest master +cr 2024-04-12 13:28:34 +0100 4722b7c7154e6130d4de66f7aed0fffe3c7c19a4 build: remove minisketch clz check +v 2024-04-12 15:30:45 +0100 fadf7e90dc10e212e59bb294209bab2e73c47800 ci: Bump s390x to ubuntu:24.04 +cr 2024-04-14 10:39:14 +0100 ad21f2294821d7c436e58a8f199fb555b11a56ad ci: use clang-16 for Valgrind +cr 2024-04-15 09:01:15 +0100 fa6ab0d020d0b1492203f7eb2ccb8051812de086 rpc: Reword SighashFromStr error message +v 2024-04-15 09:51:06 +0100 c2e0489b7125cceaeef355fc274dd8988822fff4 [rpc, bugfix] Enforce maximum value for setmocktime +pr 2024-04-15 10:00:24 +0100 d29fc3a245c070494155dad4cf68b9c95d99c13e Merge bitcoin/bitcoin#29823: minisketch: update subtree to 3472e2f5ec75ace39ce9243af6b3fee233a67492 +pr 2024-04-15 10:04:42 +0100 3abee5eceb4158ccf455aff9d1d76461dfff5af0 Merge bitcoin/bitcoin#29856: ci: Bump s390x to ubuntu:24.04 +v 2024-04-15 12:34:27 +0100 fa382d3dd0592f3cbd6e1de791449f49e06dae86 test: Add missing Assert(mock_time_in >= 0s) to SetMockTime +v 2024-04-15 12:34:31 +0100 fae0db555c12dca75fb09e5fa7bbabdf39b8c1df refactor: Use chrono type for g_mock_time +pr 2024-04-15 13:10:18 +0100 58446e1d92c7da46da1fc48e1eb5eefe2e0748cb Merge bitcoin/bitcoin#28874: doc: fixup help output for -upnp and -natpmp +v 2024-04-15 13:12:54 +0100 b1ee4a557beb1b4c65eca81c567a4afa2a7a23ca chore: fix some typos in comments +pr 2024-04-15 14:26:59 +0100 22c86140f8fe4f13b7b5415ff62922e497fd4948 Merge bitcoin/bitcoin#29848: ci: use Clang 16 for Valgrind +pr 2024-04-15 15:04:07 +0100 df609a344e534a8130d8afc12204d894ae32a2f9 Merge bitcoin/bitcoin#29699: test: check disconnection when sending sendaddrv2 after verack +pr 2024-04-15 15:06:17 +0100 07720b1cdd77399f32124641dbe1dd267eb0cf8b Merge bitcoin/bitcoin#29869: rpc, bugfix: Enforce maximum value for setmocktime +v 2024-04-15 17:22:32 +0100 e9dc511a7e9a562f953ff93f358102f555f583e6 fixup: get all utxos up front in fill_mempool, discourage wallet mixing +v 2024-04-15 21:48:32 +0100 60ca5d55081275a011ccfc9546e0c4a8c4030493 test: p2p: add test for rejected tx request logic (`m_recent_rejects` filter) +v 2024-04-16 09:10:33 +0100 c08754971d207bd2b60ba9c4faf34396a97bbc26 doc: archive 27.0 release notes +v 2024-04-16 10:09:45 +0100 6f4da19cc3b1b7cd23cb4be95a6bb9acb79eb3bf guard against MempoolAcceptResult::m_replaced_transactions +v 2024-04-16 10:11:01 +0100 c3c1e15831c463df7968b028a77e787da7e6256d [doc] restore comment about why we check if ptx HasWitness before caching rejected txid +pr 2024-04-16 11:51:43 +0100 c7567d9223a927a88173ff04eeb4f54a5c02b43d Merge bitcoin/bitcoin#29886: doc: archive 27.0 release notes +cr 2024-04-16 13:25:00 +0100 03ffb09c31aa04cc296c0ce10d07109e22a8dd75 remove unneeded bufsize option from cpp-subprocess +cr 2024-04-16 13:25:00 +0100 2088777ba0f9ad3f6d4ab8b0b6ff8aad71117307 remove unneeded cwd option from cpp-subprocess +cr 2024-04-16 13:25:00 +0100 62db8f8e5a6cfe19d905afc91731d6bc8a665f61 remove unneeded session_leader option from cpp-subprocess +cr 2024-04-16 13:25:00 +0100 633e45b2e2728efcb0637afa94fcbd5756dfbe76 remove unneeded shell option from cpp-subprocess +cr 2024-04-16 13:25:00 +0100 79c30363733503a1fb7d4c98aa0d56ced0be6e32 remove unneeded close_fds option from cpp-subprocess +cr 2024-04-16 13:25:00 +0100 80d008c66d00d3496cd8549daee6775cf2c6b782 remove unneeded defer_spawn option from cpp-subprocess +cr 2024-04-16 13:25:00 +0100 cececad7b29e2ca3de1216db1c541dba6dc81bfa remove unneeded preexec function option from cpp-subprocess +v 2024-04-16 15:24:02 +0100 fb4cc5f423ce587c1e97377e8afdf92fb4850f59 netbase: clean up Proxy logging +v 2024-04-16 15:35:12 +0100 fa4c69669e079c38844ecea1ad3394aae3702ae1 test: Fix failing univalue float test +v 2024-04-16 16:27:59 +0100 016ed248ba0ae64e3f0c93bb47a2cd9b5e49cd85 fuzz: explicitly cap the vsize of RBFs for diagram checks +cr 2024-04-16 16:47:43 +0100 4357158c4712d479522d5cd441ad4dd1693fdd05 wallet: return and display signer error +cr 2024-04-16 16:47:43 +0100 6c1a2cc09a00baa6ff3ff34455c2243b43067fb5 test: use h marker for external signer mock +cr 2024-04-16 16:47:43 +0100 dc55531087478d01fbde4f5fbb75375b672960c3 wallet: compare address returned by displayaddress +v 2024-04-16 17:20:47 +0100 1ae5b208d339fa984d9caf4fab89b0b2ba9cc197 test: fix intermittent failure in p2p_compactblocks_hb.py +pr 2024-04-16 18:03:23 +0100 312f54278fd972ba3557c6a5b805fd244a063959 Merge bitcoin/bitcoin#29726: assumeutxo: Fix -reindex before snapshot was validated +cr 2024-04-16 19:14:37 +0100 c87b0a0ff4cb6d83bb59360ac4453f6daa871177 zmq: accept unix domain socket address for notifier +v 2024-04-16 19:14:42 +0100 21d0e6c7b7c7af7f6e54a45829b4fbfba6923b86 doc: release notes for PR 27679 +v 2024-04-16 19:14:42 +0100 791dea204ecde9b500ec243b4e16fc601998ec84 test: cover unix sockets in zmq interface +pr 2024-04-17 08:56:45 +0100 5c10d12e779992f2e6222571fe449d0638f514a8 Merge bitcoin/bitcoin#29828: guix: remove `gcc-toolchain static` from Windows build +pr 2024-04-17 08:57:34 +0100 c8e3b947444cf4aa008002888e3ef4c4e3a11da4 Merge bitcoin/bitcoin#29892: test: Fix failing univalue float test +pr 2024-04-17 11:28:42 +0100 8cd9475321737a69454f3b54a588b7bfe9f32847 Merge bitcoin/bitcoin#29893: test: fix intermittent failure in p2p_compactblocks_hb.py +v 2024-04-17 11:40:25 +0100 1a9aa8d4eedff3788c792799328ad599132e0da1 build: better scope usage of -Wl,-headerpad_max_install_names +cr 2024-04-17 11:40:25 +0100 3bee51427a05075150721f0a05ead8f92e1ba019 build: don't use install_name_tool for macOS deploy when cross-compiling +cr 2024-04-17 11:40:25 +0100 78b6b5c485191b85ae201df9d5ef0bcdaaa9c190 build: don't pass strip to macOS deploy if cross-compiling +pr 2024-04-17 12:22:11 +0100 3b70ce231e8d45b25a02f12ceb604498306aadf5 Merge bitcoin/bitcoin#29846: guix: replace GCC unaligned VMOV patch with binutils patch +pr 2024-04-17 14:00:40 +0100 dd9007d5bd19ffeda7051525eb2b267be7146dd5 Merge bitcoin/bitcoin#29859: build: Fix false positive `CHECK_ATOMIC` test +pr 2024-04-17 14:02:22 +0100 5562f698b7f4a2b5905b0aaa7c1e54cb78989739 Merge bitcoin/bitcoin#29875: chore: fix some typos in comments +pr 2024-04-17 16:29:50 +0100 003785c961e1b25f7052ee48d6751c5e7d1d774b Merge bitcoin/bitcoin#28373: doc: Add example of mixing private and public keys in descriptors +pr 2024-04-17 18:00:42 +0100 dbd2000b34903b87ae2e02eb2fc6c4a2f7d11451 Merge bitcoin/bitcoin#28340: security: restrict abis in bitcoind.service +v 2024-04-17 21:24:05 +0100 65951e0418c53cbbf30b9ee85e24ccaf729088a1 index: race fix, lock cs_main while 'm_synced' is subject to change +pr 2024-04-18 09:46:04 +0100 aaab5fb3c51c6a0fb96270fd6cfb0ba0bfbfe1c1 Merge bitcoin-core/gui#806: refactor: Misc int sign change fixes +pr 2024-04-18 10:05:05 +0100 c05c214f2e9cfd6070a3c7680bfa09358fd9d97a Merge bitcoin-core/gui#808: Change example address from legacy (P2PKH) to bech32m (P2TR) +v 2024-04-18 10:18:44 +0100 09f5a74198c328c80539c17d951a70558e6b361e fuzz: Re-implement `read_stdin` in portable way +v 2024-04-18 10:27:12 +0100 4c078d7bd278fa8b4db6e1da7b9b747f49a8ac4c build, msvc: Enable preprocessor conformance mode +v 2024-04-18 10:27:25 +0100 19dceddf4bcdb74e84cf27229039a239b873d41b build, msvc: Build `fuzz.exe` binary +v 2024-04-18 10:27:34 +0100 23cb8207cdd6c674480840b76626039cdfe7cb13 ci, msvc: Add "Clone fuzz corpus" step +v 2024-04-18 10:27:46 +0100 52933d7283736fe3ae15e7ac44c02ca3bd95fe6d fuzz: Pass `SystemRoot` environment variable to subprocess +v 2024-04-18 10:27:55 +0100 18fd522ca9a74cf8690a6c9b9b729e78c6ed41fd ci, msvc: Add "Run fuzz binaries" step +v 2024-04-18 10:53:32 +0100 976e5d8f7b2bc77cb1443b8bf0f38cb07db70e9b test: Fix `test/streams_tests.cpp` compilation on SunOS / illumos +v 2024-04-18 15:05:57 +0100 fd81a37239541d0d508402cd4eeb28f38128c1f2 net: attempts to connect to all resolved addresses when connecting to a node +cr 2024-04-18 17:07:57 +0100 1ea8674316f2dce0005f6094b6ee111b045dd770 [doc] update release-process.md and backports section of CONTRIBUTING +v 2024-04-18 20:03:45 +0100 6b02c11d667adff24daf611f9b14815d27963674 test: Fix intermittent issue in p2p_handshake.py +v 2024-04-19 13:01:09 +0100 58c423def3d71892d60b973f2d86c94de7134648 depends: switch boost to .tar.gz +v 2024-04-19 13:01:09 +0100 5996c30384b0b2af1994751611cdeb81ee2a97d9 depends: switch libXau to .tar.gz +v 2024-04-19 13:01:09 +0100 8e9190c6aae1e47f2a37d4f5f6ff4c28604e708b depends: switch libxcb_util to .tar.gz +v 2024-04-19 13:01:09 +0100 b845029d4693a0c1ed21754e15a382cd522c95a5 depends: switch xproto to .tar.gz +v 2024-04-19 13:01:09 +0100 e7a8dd5931c165b5aac34fcfce467bc14cd727e5 depends: switch fontconfig to .tar.gz +v 2024-04-19 13:01:10 +0100 00a68963468cf77218bdd1158ccb9c83b5ded689 depends: switch libxcb_util_image to .tar.gz +v 2024-04-19 13:01:10 +0100 4a9b71b9006fc1d7069295c394baa74149576f2f depends: switch libxcb_util_wm to .tar.gz +v 2024-04-19 13:01:10 +0100 b8e084b9781eaa4d624a3c1d58b39c07005a0e13 guix: remove no-longer-used bzip2 +v 2024-04-19 13:01:10 +0100 bd6e1d6718c8de8aa7b5bb173a201678b88d3da4 depends: switch qrencode to .tar.gz +v 2024-04-19 13:01:10 +0100 ce28cb31b4ed7da9065128eb4bc9f0640e025dad depends: switch libxcb_util_keysyms to .tar.gz +v 2024-04-19 13:01:10 +0100 fad989852d4e3a0723f1f7030b21fb6ac3f8ac1d depends: switch libxcb_util_render to .tar.gz +pr 2024-04-19 16:22:46 +0100 67c0d93982ad214f5e0c9509e9dc3d6d792ad97c Merge bitcoin/bitcoin#29827: test: p2p: add test for rejected tx request logic (`m_recent_rejects` filter) +v 2024-04-21 14:30:38 +0100 6f5954acac2ced22dae7088e2b679bf663507d4c ci: Drop no longer needed `-I` flag in "tidy" task +pr 2024-04-22 12:33:06 +0100 ba7c67f609a3d9a6da194d4abb7f8a60934907c3 Merge bitcoin/bitcoin#29879: fuzz: explicitly cap the vsize of RBFs for diagram checks +v 2024-04-22 14:03:03 +0100 fa6c300a9926a1d35fdd0a80f59ea39769bd2596 test: Fix intermittent timeout in p2p_tx_download.py +cr 2024-04-22 14:36:36 +0100 b22901dfa9cc3af94bf13163a28300eb1ab25b22 Avoid explicitly computing diagram; compare based on chunks +v 2024-04-22 16:07:23 +0100 55b13ecd2e00ad2dbfd44c34d7de6f616590adf8 doc: explain what the wallet password does +pr 2024-04-22 16:24:43 +0100 04c90f105949f63f19f47950bcfa7bfb249a8125 Merge bitcoin/bitcoin#27679: ZMQ: Support UNIX domain sockets +pr 2024-04-22 17:06:20 +0100 b3106be84f0124f5a84e0a90499ba80e8cd6c60b Merge bitcoin/bitcoin#29898: test: Fix intermittent issue in p2p_handshake.py +pr 2024-04-22 17:16:15 +0100 3310a965bd491755fa2c67879f12ebd0b4fb0bae Merge bitcoin/bitcoin#29850: net: Decrease nMaxIPs when learning from DNS seeds +v 2024-04-22 17:24:35 +0100 4d8d21320eba54571ff63931509cd515c3e20339 sign: don't assume we are parsing a sane Miniscript +v 2024-04-22 19:07:12 +0100 3120a4678ab2a71a381e847688f44068749cfa97 Gives seednode priority over dnsseed if both are provided +v 2024-04-22 19:07:14 +0100 82f41d76f1c6ad38290917dad5499ffbe6b3974d Added seednode prioritization message to help output +pr 2024-04-22 23:04:27 +0100 dec74c035b80afceae70d064467d25bef6cf5630 Merge bitcoin/bitcoin#29657: Bugfix: bitcoin-cli: Check length of peer.transport_protocol_type +pr 2024-04-22 23:20:02 +0100 10bd32a1c96802728ef5c0e7504e09eff423eed6 Merge bitcoin/bitcoin#29933: test: Fix intermittent timeout in p2p_tx_download.py +cr 2024-04-22 23:37:31 +0100 ec1f1abfefa281e62bb876aa1c4738d576ef9a47 test:Validate UTXO snapshot with coin_height > base_height & amount > money_supply +pr 2024-04-22 23:51:59 +0100 256e1703197fdddd78bc6d659431cd0fc3b63cde Merge bitcoin/bitcoin#29777: test: refactor: introduce and use `calculate_input_weight` helper +cr 2024-04-23 14:10:19 +0100 13adbf733f09c73c3cf0025d94c52f9cec5dba3b remove unneeded environment option from cpp-subprocess +pr 2024-04-23 18:04:25 +0100 2cecbbb98683844a642899f4563aab8b856ffd3b Merge bitcoin/bitcoin#29865: util: remove unused cpp-subprocess options +v 2024-04-23 18:22:58 +0100 08f756bd370c3e100b186c7e24bef6a033575b29 Replace locale-dependent `std::strerror` with `SysErrorString` +cr 2024-04-23 18:22:58 +0100 d8e4ba4d0568769782b8c19c82e955c4aee73477 refactor: Rename `subprocess.hpp` to follow our header name conventions +pr 2024-04-23 20:34:24 +0100 4aa18cea823be87608d7e389d20d738407602b8f Merge bitcoin/bitcoin#28974: doc: explain what the wallet password does +pr 2024-04-23 21:07:43 +0100 7c17f203a5fdc697dd1cf78a9f6c6e7f49a0567d Merge bitcoin/bitcoin#29688: test: remove duplicated ban test +pr 2024-04-23 22:20:54 +0100 a7129f827c9de1330dea1fec739ca210e6bda3cb Merge bitcoin/bitcoin#24313: Improve display address handling for external signer +v 2024-04-24 01:26:42 +0100 f19f0a2e5af6c2a64900f1f229e21b6f1668bd3d test: Run framework unit tests in parallel +v 2024-04-24 02:51:01 +0100 e912717ff63f111d8f1cd7ed1fcf054e28f36409 test: add missing comparison of node1's mempool in MempoolPackagesTest +v 2024-04-24 09:17:48 +0100 970cbc3172b73e1faf6bdb429400d3497cbb9d33 doc: Suggest only necessary Qt packages for installation on OpenBSD +pr 2024-04-24 11:07:09 +0100 19722e3e728933e629eb8e407075fb193b2908e2 Merge bitcoin/bitcoin#29929: ci: Drop no longer needed `-I` flag in "tidy" task +pr 2024-04-24 12:14:48 +0100 19d59c9cc6078df7927eec3fe34a292121909041 Merge bitcoin/bitcoin#29882: netbase: clean up Proxy logging +cr 2024-04-24 13:14:18 +0100 dace02f99d4a8785567732c0d687517175765bfd doc: suggest only necessary Qt packages for installation on FreeBSD +pr 2024-04-24 13:55:27 +0100 9e0e51b1d9f9c9bf95bc2c56f29ae32fa479c3b3 Merge bitcoin/bitcoin#29870: rpc: Reword SighashFromStr error message +pr 2024-04-24 14:00:29 +0100 631a2b5b3f2a9db6007c5c3e74e576d34e581d54 Merge bitcoin/bitcoin#29947: doc: Suggest only necessary Qt packages for installation on OpenBSD +pr 2024-04-24 14:05:23 +0100 072b118407af08dd68a10f94190b600d63b99758 Merge bitcoin/bitcoin#29932: doc: suggest only necessary Qt packages for installation on FreeBSD +pr 2024-04-24 14:14:26 +0100 c143244ce3fbfd9776496283489832ba4737e370 Merge bitcoin/bitcoin#29853: sign: don't assume we are parsing a sane TapMiniscript +pr 2024-04-24 14:23:58 +0100 427044afa3614e3380c525140b50df48822d939f Merge bitcoin/bitcoin#29585: contrib: list other binaries in manpage output +v 2024-04-24 15:40:14 +0100 9381052194a78024b3994cc6ad906858c477b88f doc: Bash is needed in gen_id and is not installed on FreeBSD by default +pr 2024-04-24 15:46:25 +0100 d822d4e849646a455aa360efd4a48a546ecc5950 Merge bitcoin/bitcoin#29837: ci: disable `_FORTIFY_SOURCE` with MSAN +pr 2024-04-24 15:57:50 +0100 50729c060907b69543755a8e1ed6b0d32d071a8a Merge bitcoin/bitcoin#29910: refactor: Rename `subprocess.hpp` to follow our header name conventions +pr 2024-04-24 16:51:56 +0100 2a07c4662d7266158d47f79fa2433ab22e22c907 Merge bitcoin/bitcoin#29757: feefrac: avoid explicitly computing diagram; compare based on chunks +v 2024-04-24 21:21:06 +0100 46bc6c2aaa613eef526b21a06bf21e8edde31a88 test: Add unit tests for urlDecode +cr 2024-04-24 22:23:34 +0100 650d43ec15f7a3ae38126f65ef8fa0b1fd3ee936 refactor: Replace libevent use in urlDecode with our own code +v 2024-04-24 22:23:38 +0100 8f39aaae417c33490e0e41fb97620eb23ced3d05 refactor: Remove hooking code for urlDecode +v 2024-04-24 22:26:24 +0100 099fa571511f113e0056d4bc27b3153a42f9dc65 scripted-diff: Modernize name of urlDecode function and param +v 2024-04-24 22:27:50 +0100 992c714451676cee33d3dff49f36329423270c1c common: Don't terminate on null character in UrlDecode +v 2024-04-25 01:04:31 +0100 ff79adbe056220202f7a56d67f788c38fc49ef9f remove unused templates from cpp-subprocess +v 2024-04-25 09:14:10 +0100 03e36b3da093e2c23cf51b46f6901cb84ddbf867 Fix typos in description.md and wallet_util.py +v 2024-04-25 14:00:10 +0100 7c69baf227252511455bc06e315f6a3c7fc5a398 depends: pass verbose through to cmake based make +pr 2024-04-25 14:07:52 +0100 10f50220724c02efe0ba38717cc64578ffb58ebc Merge bitcoin/bitcoin#29708: depends: build libnatpmp with CMake +pr 2024-04-25 14:13:28 +0100 ee1c975f80a0accd991c3c9c82b7eb52a76c6d30 Merge bitcoin/bitcoin#29938: Fix typos in description.md and wallet_util.py +pr 2024-04-25 14:21:42 +0100 d48d55e0d30057c60293a5f76e312e8eda452f78 Merge bitcoin/bitcoin#29890: deploy: remove some tools when cross-compiling for macOS +pr 2024-04-25 14:22:45 +0100 0eb1459efa91c6a3bc2964007057cef2f7280a57 Merge bitcoin/bitcoin#29953: doc: Bash is needed in gen_id and is not installed on FreeBSD by default +v 2024-04-25 14:22:58 +0100 e504b1fa1fa4d014b329dea81bfdf1aa55db238f test: Add test case for spending bare multisig +cr 2024-04-25 14:32:28 +0100 9adf949d2aa6d199b85295b18c08967395b5570a contrib: rpcauth.py - Add new option (-j/--json) to output text in json format +v 2024-04-25 16:27:08 +0100 6abe772a17e09fe96e68cd3311280d5a30f6378b contrib: Add asmap-tool +v 2024-04-25 16:44:39 +0100 908c51fe4afeba0af500c6275027b1afa1b3bd19 remove commented out code in cpp-subprocess +pr 2024-04-25 17:34:50 +0100 a9011781fc9c1a08988297bb67d1915678940fac Merge bitcoin/bitcoin#29689: lint: scripted-diff verification also requires GNU grep +pr 2024-04-25 18:02:43 +0100 16a617461338876a03665cec7f39964602d298bb Merge bitcoin/bitcoin#29904: refactor: Use our own implementation of urlDecode +pr 2024-04-25 18:26:21 +0100 3c88eac28e8984893746caebb313dc3b2fca90db Merge bitcoin/bitcoin#29736: test: Extends wait_for_getheaders so a specific block hash can be checked +pr 2024-04-25 18:51:39 +0100 50b09e8173d018d63e7e3623424497953257a54a Merge bitcoin/bitcoin#29615: test: fix accurate multisig sigop count (BIP16), add unit test +pr 2024-04-25 18:55:47 +0100 206629517270f6a51cd38a27552e71405b661c55 Merge bitcoin/bitcoin#29433: contrib: rpcauth.py - Add new option (-json) to output text in json format +pr 2024-04-25 19:12:13 +0100 0e2e7d1a355ab6d4c483e192a2f881a5beef2381 Merge bitcoin/bitcoin#29867: index: race fix, lock cs_main while 'm_synced' is subject to change +pr 2024-04-25 21:08:24 +0100 2eff198f4900c34442439ef2cbd9d82f4903f915 Merge bitcoin/bitcoin#28834: net: attempts to connect to all resolved addresses when connecting to a node +cr 2024-04-25 21:08:24 +0100 6a8b2befeab25e4e92d8e947a23e78014695e06c refactor: Avoid copying util::Result values +cr 2024-04-25 21:08:24 +0100 834f65e82405bbed336f98996bc8cef366bbed0f refactor: Drop util::Result operator= +v 2024-04-26 07:33:56 +0100 fa55972a758865a6bd0114afe72e51877896d495 test: Add two more urlDecode tests +pr 2024-04-26 09:40:04 +0100 7973a670915632b75a6aa16f24f98b936865c48f Merge bitcoin/bitcoin#29967: test: Add two more urlDecode tests +cr 2024-04-26 10:28:27 +0100 092c978a42e8f4a02291b994713505ba8aac8b28 [txpackages] add canonical way to get hash of package +cr 2024-04-26 10:28:27 +0100 2f51cd680fb4323f1c792dae37d4c4e0e0e35804 [txorphanage] add method to get all orphans spending a tx +v 2024-04-26 10:28:27 +0100 410ebd6efaf20fe4715c9b825103b74db69f35ac [fuzz] break out parent functions and add GetChildrenFrom* coverage +v 2024-04-26 10:28:27 +0100 6c51e1d7d021ed6523107a6db87a865aaa8fc4c9 [p2p] add separate rejections cache for reconsiderable txns +v 2024-04-26 10:28:27 +0100 d095316c1c23e9460dfbd9fdbaf292063adcd080 [unit test] TxOrphanage::GetChildrenFrom* +v 2024-04-26 11:27:37 +0100 87c5c524d63c833cf490c7f2f73d72695ad480df [p2p] opportunistically accept 1-parent-1-child packages +v 2024-04-26 11:27:37 +0100 e518a8bf8abf3d7b83c9013f56d0dca18ae04d6f [functional test] opportunistic 1p1c package submission +v 2024-04-26 14:50:00 +0100 b259b0e8d360726b062c4b0453d1cf5a68e1933f [Test] Assumeutxo: ensure failure when importing a snapshot twice +v 2024-04-26 16:14:20 +0100 a8d9a0edc7cef2c31a557ef53eb45520976b0d65 test: adds outbound eviction functional tests, updates comment in ConsiderEviction +v 2024-04-26 16:15:22 +0100 d53d84834747c37f4060a9ef379e0a6b50155246 test: adds outbound eviction tests for non outbound-full-relay peers +pr 2024-04-26 21:06:37 +0100 1ffbd96349820cae7f076ae3253d8a9d28155fd2 Merge bitcoin/bitcoin#29771: test: Run framework unit tests in parallel +v 2024-04-26 22:47:00 +0100 97a4ad5713853f51c729cced73f133fafa735ba2 build, msvc: Drop duplicated `common\url.cpp` source file +pr 2024-04-27 07:48:54 +0100 7fee0ca014b1513e836d2550d1b7512739d5a79a Merge bitcoin/bitcoin#29976: build, msvc: Drop duplicated `common\url.cpp` source file +v 2024-04-27 13:54:00 +0100 fa1964c5b80ee28b0e06abdbd9a26e8e8c6f5acd build: Bump clang minimum supported version to 15 +pr 2024-04-28 03:55:01 +0100 3aaf7328eb656b642e5f0f74f3e4d51645a1d0ab Merge bitcoin/bitcoin#29774: build: Enable fuzz binary in MSVC +v 2024-04-28 07:11:24 +0100 85f50a46c50e7e56b5ee2d7258021939cd80c550 refactor: Fix "error C2248: cannot access private member" on MSVC +v 2024-04-28 07:11:32 +0100 774359b4a96d2724dc70f900cb71e084a77164da build, msvc: Compile `test\fuzz\bitdeque.cpp` +v 2024-04-28 10:37:54 +0100 7766dd280d9a4a7ffdfcec58224d0985cfd4169b net: Replace ifname check with IFF_LOOPBACK in Discover +v 2024-04-28 10:40:19 +0100 a68fed111be393ddbbcd7451f78bc63601253ee0 net: Fix misleading comment for Discover +v 2024-04-28 13:17:14 +0100 97f159776ec06f767df1d4990aa7d0859140f52f remove unused method `Popen::kill` from cpp-subprocess +v 2024-04-28 13:18:06 +0100 8b52e7f628304e83b0e36fd97e617de0f71c5a62 update comments in cpp-subprocess (check_output references) +v 2024-04-28 20:39:10 +0100 cc15c5bfd1eb3903de246c124702a7c66c687008 fuzz: don't allow adding duplicate transactions to the mempool +pr 2024-04-29 03:00:23 +0100 a46065e36cf868265c909dc5edf29dc17be53c1f Merge bitcoin/bitcoin#29895: guix: remove bzip2 from deps +v 2024-04-29 08:48:26 +0100 2e266f33b5d2be5c233c2c692481f75785714fa1 depends: Fix build of Qt for 32-bit platforms +cr 2024-04-29 09:33:21 +0100 22574046c90c0662f3aa9b1baea074aff54f92a9 doc: add LLVM instruction for macOS < 13 +v 2024-04-29 11:46:02 +0100 357ad110548d726021547d85b5b2bfcf3191d7e3 test: Handle functional test disk-full error +pr 2024-04-29 13:59:12 +0100 4d2d91a9e0f7a0647d5a45ed04bcbf6590ce8814 Merge bitcoin/bitcoin#29165: build: Bump clang minimum supported version to 15 +pr 2024-04-29 14:37:49 +0100 0c45d73f185d0f09c9b0b5a1749f405fb8125887 Merge bitcoin/bitcoin#29872: test: Add missing Assert(mock_time_in >= 0s) to SetMockTime +pr 2024-04-29 15:38:50 +0100 19865a8350a8181ab658bef48976a728bae6a8bd Merge bitcoin/bitcoin#29277: RPC: access RPC arguments by name +v 2024-04-29 17:15:15 +0100 95897ff181c0757e445f0e066a2a590a0a0120d2 doc: removed help text saying that peers may not connect automatically +v 2024-04-29 17:15:30 +0100 f8a141c2dae2471a7ce7248e28a0bbeb8a291acd test: Don't rely on incentive incompatible replacement in mempool_accept_v3.py +v 2024-04-30 03:07:19 +0100 6866b571ab96f03ca0775424e45458c5731f230f depends: miniupnpc 2.2.7 +v 2024-04-30 05:41:20 +0100 f5618c79d9e7af05c2987044dc2da03697f8bb89 depends: add upstream CMake patch to miniupnpc +v 2024-04-30 05:53:44 +0100 3c2d440f1497f60bb444326f51383df244dcdfe9 depends: switch miniupnpc to CMake +v 2024-04-30 06:29:33 +0100 5195baa60087ee366290887ad982fc491e14c111 depends: fix miniupnpc snprintf usage on Windows +pr 2024-04-30 07:19:35 +0100 ad42d63519839b5751db0f294b5de7cfdc332e61 Merge bitcoin/bitcoin#29985: depends: Fix build of Qt for 32-bit platforms with recent glibc +pr 2024-04-30 09:52:00 +0100 36e660fc234b8c327e56144bd331b1181dc94940 Merge bitcoin/bitcoin#29990: fuzz: don't allow adding duplicate transactions to the mempool +pr 2024-04-30 10:01:00 +0100 15f696b454047f5dafc3c95e36fcd677c1901de9 Merge bitcoin/bitcoin#29986: test: Don't rely on incentive incompatible replacement in mempool_accept_v3.py +cr 2024-04-30 16:03:04 +0100 855dd8d592c951a2b3239867ffbf66bb8677d470 system: use %LOCALAPPDATA% as default datadir on windows +v 2024-04-30 16:03:46 +0100 84900ac34f6888b7a851d0a6a5885192155f865c doc: add release-notes-27064.md +pr 2024-04-30 17:19:03 +0100 2d3056751bb7d742a802a30503f07dbeb07310ee Merge bitcoin/bitcoin#29906: Disable util::Result copying and assignment +v 2024-04-30 19:14:50 +0100 fd6a7d3a13d89d74e161095b0e9bd3570210a40c test: use sleepy wait-for-log in reindex readonly +pr 2024-04-30 23:40:53 +0100 d813ba1bc4b4da3ad1f3812b61ff125d1d664625 Merge bitcoin/bitcoin#28970: p2p: opportunistically accept 1-parent-1-child packages +pr 2024-04-30 23:49:34 +0100 0c3a3c9394e608c4beb92722ad034648af81dee7 Merge bitcoin/bitcoin#29623: Simplify network-adjusted time warning logic +pr 2024-04-30 23:59:56 +0100 326e563360671c568534ff72f45dec6b607e4b36 Merge bitcoin/bitcoin#28016: p2p: gives seednode priority over dnsseed if both are provided +pr 2024-05-01 00:00:54 +0100 063072b86abcb2dff4db6861b63b5b1d19e93c62 Merge bitcoin/bitcoin#29813: doc: i2p: improve `-i2pacceptincoming` mention +pr 2024-05-01 01:14:02 +0100 4df2d0c4ce7697648ec724d2057a60bd8d7d032f Merge bitcoin/bitcoin#29983: msvc: Compile `test\fuzz\bitdeque.cpp` +pr 2024-05-01 01:17:04 +0100 842f7fdf786fcbbdf3df40522945813404f8a397 Merge bitcoin/bitcoin#29645: doc: update release-process.md +v 2024-05-01 07:12:40 +0100 fa9be2f79520fff9cfe2ed35ace05cb322680af3 lint: [doc] Clarify Windows line endings (CR LF) not to be used +cr 2024-05-01 07:33:04 +0100 dddd40ba8267dea11a3eb03d5cf8b51dbb99be5d scripted-diff: Add IWYU pragma keep to bitcoin-config.h includes +v 2024-05-01 07:33:43 +0100 fa09451f8e6799682d7e7c863f25334fd1c7dce3 Add lint check for bitcoin-config.h include IWYU pragma +v 2024-05-01 13:34:37 +0100 8496f69e1c2d1961db2604829cb6a289eb8dd3d6 [refactor] make MempoolAcceptResult::m_replaced_transactions non-optional +v 2024-05-01 13:34:37 +0100 9a762efc7a118c44556fa9ad404f6b54103bad41 [txpackages] use std::lexicographical_compare instead of sorting hex strings +v 2024-05-01 13:35:12 +0100 c2ada0530719e044bb498e0d78907a208214a71e [doc] remove redundant PackageToValidate comment +v 2024-05-01 13:38:19 +0100 2b482dc1f3fb248ccbe7eeb8c9c07d4bf1295a70 [refactor] have ProcessPackageResult take a PackageToValidate +v 2024-05-01 13:48:03 +0100 6119f76ef72c1adc55c1a384c20f8ba9e1a01206 Process every MempoolAcceptResult regardless of PackageValidationResult +cr 2024-05-01 14:44:57 +0100 42fb5311b19582361409d65c6fddeadbee14bb97 rpc: return warnings as an array instead of just a single one +v 2024-05-01 16:06:48 +0100 58594c7040241f2312b0b8735a8baf0412674613 fuzz: txorphan tests fixups +pr 2024-05-01 19:43:58 +0100 d73245abc70346a0e8805d50a1f395706084294c Merge bitcoin/bitcoin#29120: test: Add test case for spending bare multisig +v 2024-05-02 00:16:33 +0100 b50d127a7710d790c2ba4a08f01b832c2a0b1203 refactor: Make 64-bit shift explicit +pr 2024-05-02 04:21:24 +0100 1cc3aa4d21e3e4ff7a651bc71fec062ec5a9eb09 Merge bitcoin/bitcoin#29707: depends: build miniupnpc with CMake +pr 2024-05-02 04:45:23 +0100 59b773f42a6730104e13904fb521e52023a997b5 Merge bitcoin/bitcoin#30010: lint: [doc] Clarify Windows line endings (CR LF) not to be used +pr 2024-05-02 08:27:25 +0100 9d1a286f20b8a602ffe72928bcd79be09fdbf9d0 Merge bitcoin/bitcoin#29934: doc: add LLVM instruction for macOS < 13 +v 2024-05-02 11:24:36 +0100 7f6fb73c82fdff2afe5edefcc335ba6707d5627d [refactor] use reference in for loop through iters +v 2024-05-02 11:37:24 +0100 fa9abf968840745e428a86a9545aaa6c923415e2 refactor: Avoid unused-variable warning in init.cpp +pr 2024-05-02 14:09:14 +0100 3d28725134df09768780249dc1d974b9cdcc83f1 Merge bitcoin/bitcoin#29968: refactor: Avoid unused-variable warning in init.cpp +v 2024-05-02 20:16:40 +0100 ffc674595cb19b2fdc5705b355bdd3e7f724b860 Replace remaining "520" magic numbers with MAX_SCRIPT_ELEMENT_SIZE +pr 2024-05-02 21:33:18 +0100 81174d8a9b8060b35341d88d3b54c08d9f2bb079 Merge bitcoin/bitcoin#29961: refactor: remove remaining unused code from cpp-subprocess +pr 2024-05-02 21:45:42 +0100 62ef33a718c9891d37d7c757968876033c4f794d Merge bitcoin/bitcoin#29617: test: Validate UTXO snapshot with coin height > base height & amount > MAX_MONEY supply +v 2024-05-02 23:10:05 +0100 bd2de7ac591d7704b79304089ad1fb57e085da8b refactor, test: Always initialize pointer +pr 2024-05-03 03:47:37 +0100 5127844cabbe50236abc8d55015692515c49315e Merge bitcoin/bitcoin#30017: refactor, fuzz: Make 64-bit shift explicit +pr 2024-05-03 08:31:06 +0100 99d7538cdb2a0ab7a7a2116cd5f33b95fc52b00e Merge bitcoin/bitcoin#30012: opportunistic 1p1c followups +cr 2024-05-03 08:31:54 +0100 7469ac7032e26fe805c5d15ecded2d44253bc9c1 ci: disable -Werror=maybe-uninitialized for Windows builds +cr 2024-05-03 08:31:54 +0100 b088062e687d95deff28b0715fd4859449b56584 ci: remove -Wdocumentation from -Werror in multiprocess CI +cr 2024-05-03 08:31:54 +0100 bec6a88fbcff0bd974e820cefd2be2d00b6f6c56 ci: remove -Warray-bounds from -Werror for win64 +v 2024-05-03 08:31:54 +0100 f0e22be69a15248c42964d57f44ce8c37a36081d build: no-longer disable WARN_CXXFLAGS when CXXFLAGS is set +cr 2024-05-03 08:36:57 +0100 fb9f150759b22772dd48983a2be1ea397245e289 gui: fix misleading signmessage error with segwit +v 2024-05-03 10:30:50 +0100 af3c18169a075222fe0795ab24b8b20ad5e30ae4 [test]: remove duplicate WITNESS_SCALE_FACTOR +pr 2024-05-03 14:54:52 +0100 70e4d6ff1d269abbda9dafae659e3da3ea17867a Merge bitcoin/bitcoin#30026: refactor, test: Always initialize pointer +cr 2024-05-03 16:07:12 +0100 4b9f49da2b120e81516ddc3dc577d7a2e58e02d3 doc: fix broken relative md links +v 2024-05-03 16:38:14 +0100 63317103c9f2b0635558da814567bb79c17ae851 miniscript: make operator_mst consteval +pr 2024-05-03 17:36:00 +0100 f9486de6a96b624982a2d45b895bfe4e865063d1 Merge bitcoin/bitcoin#30029: test: remove duplicate `WITNESS_SCALE_FACTOR` constant definition +pr 2024-05-03 17:36:56 +0100 f5b6f621fff7540ca97974b26a66ca1cc6db018c Merge bitcoin/bitcoin#30024: doc: replace remaining "520" magic nums with MAX_SCRIPT_ELEMENT_SIZE +pr 2024-05-04 01:47:18 +0100 bd597c33e3e58cd3c6b22ed42f8f1fd7ff886bb2 Merge bitcoin/bitcoin#25972: build: no-longer disable WARN_CXXFLAGS when CXXFLAGS is set +pr 2024-05-04 02:07:44 +0100 61d3280c3a36084a6fef17fcedb3de3555294424 Merge bitcoin/bitcoin#29907: test: Fix `test/streams_tests.cpp` compilation on SunOS / illumos +pr 2024-05-04 02:13:11 +0100 eb0bdbdd753bca97120247b921fd29d606fea6e9 Merge bitcoin/bitcoin#28657: miniscript: make operator""_mst consteval +v 2024-05-04 09:04:09 +0100 9155b733e153e799f09cc7f7e9199ad776b2cbb1 build, msvc: Compile test\fuzz\miniscript.cpp +v 2024-05-04 20:33:36 +0100 613a45cd4b5482aedbdc7c61c839ea05996935c6 net: reduce LOCK(cs_main) scope in GETBLOCKTXN +v 2024-05-04 20:38:39 +0100 75d27fefc7a04ebdda7be5724a014b6a896e7325 net: reduce LOCK(cs_main) scope in ProcessGetBlockData +v 2024-05-05 11:33:30 +0100 4f347140b1a31237597dd1821adcde8bd5761edc test: refactor: move fill_mempool to new module mempool_util +cr 2024-05-05 11:33:34 +0100 b2037ad4aeb4e16c7eb1e5756d0d1ee20172344b test: add MiniWallet tagging support to avoid UTXO mixing +v 2024-05-05 11:33:34 +0100 c8e6d08236ff225db445009bf513d6d25def8eb2 test: refactor: eliminate COINBASE_MATURITY magic number in fill_mempool +v 2024-05-05 11:36:51 +0100 dd8fa861939d5b8bdd844ad7cab015d08533a91a test: use tagged ephemeral MiniWallet instance in fill_mempool +pr 2024-05-06 02:33:56 +0100 f7b81c7e1edb1d2d972b8d1e81e40f381d9beb59 Merge bitcoin/bitcoin#30031: msvc: Compile `test\fuzz\miniscript.cpp` +pr 2024-05-06 02:47:29 +0100 00ac1b963d08f2779d2197edcdb1e76392993378 Merge bitcoin/bitcoin#29960: depends: pass verbose through to cmake based makefiles +cr 2024-05-06 11:29:14 +0100 5deb0b024e14c7c63d405c651d1ca323560a1c21 build, test, doc: Temporarily remove Android-related stuff +pr 2024-05-06 14:02:30 +0100 fdb41e08c4a4fb2743f8ca7c4b8dac52a460e864 Merge bitcoin/bitcoin#29773: build, bench, msvc: Add missing benchmarks +pr 2024-05-06 17:24:09 +0100 63d0b930f821132badd804822a46232a5f98bbef Merge bitcoin/bitcoin#29845: rpc: return warnings as an array instead of just a single one +v 2024-05-06 21:34:10 +0100 cc67d33fdac45357b593b1faff3d1735e5fe91ba refactor: Simply include CTxMemPool::Options in CTxMemPool directly rather than duplicating definition +v 2024-05-06 23:11:22 +0100 ee67bba76cca2355541f99bb731f58479981b29e test: added test coverage to loadtxoutset +cr 2024-05-07 00:21:43 +0100 17f74512f0d19cb452ed79a4bff5a222fcdb53c4 test: add bounds checking for submitpackage RPC +v 2024-05-07 00:21:44 +0100 f9ece258aa868d0776caa86b94e71ba05a9b287e doc: rpc: submitpackage takes sorted array +v 2024-05-07 00:22:28 +0100 1a875d4049574730d4a53a1b68bd29b80ad96d38 rpc: update min package size error message in submitpackage +v 2024-05-07 00:22:30 +0100 78e52f663f3e3ac86260b913dad777fd7218f210 doc: rpc: fix submitpackage examples +pr 2024-05-07 03:28:58 +0100 ef09f535b7b540d997f8c2bfa67b3386711bc8b4 Merge bitcoin/bitcoin#29984: net: Replace ifname check with IFF_LOOPBACK in Discover +v 2024-05-07 07:53:18 +0100 fab179d10243e85cdb172a9f08bcb7ec19ddf74d ci: Exclude feature_init for now in valgrind task +pr 2024-05-07 19:14:03 +0100 8efd03ad04726aa34219ad83115a3d45030412c3 Merge bitcoin/bitcoin#29494: build: Assume HAVE_CONFIG_H, Add IWYU pragma keep to bitcoin-config.h includes +pr 2024-05-07 21:31:14 +0100 4e56df8f915bf6e769920ef12e7c52848786a56d Merge bitcoin-core/gui#819: Fix misleading signmessage error with segwit +pr 2024-05-08 04:54:46 +0100 09d3ad2861a0127d2cdcf81a8d82f6da6b0f16c1 Merge bitcoin/bitcoin#30025: doc: fix broken relative md links +pr 2024-05-08 04:56:32 +0100 74f517b4411d80afa7733c088da961e9c736a97d Merge bitcoin/bitcoin#30054: ci: Exclude feature_init for now in valgrind task +pr 2024-05-08 09:15:00 +0100 43a66c55ec8770cf7c21112aac9b997f3f2fb704 Merge bitcoin/bitcoin#30053: test: added test coverage to loadtxoutset could not open file +cr 2024-05-08 09:36:41 +0100 7f5ac4520d1553170b1053a9ffcd58179386a6d2 build: swap otool for (llvm-)objdump +cr 2024-05-08 14:31:16 +0100 189d0da3f6f561c808fdd9fbd4dfd34ccfa23fe1 build, test: Remove unused `TIMEOUT` environment variable +pr 2024-05-08 22:52:58 +0100 4ff42762fdbef983a886e5eb63cf21f7108fe78b Merge bitcoin/bitcoin#28336: rpc: parse legacy pubkeys consistently with specific error messages +pr 2024-05-08 23:04:19 +0100 573f6311658a7ef5b84a08c6aedeab35d2ac7956 Merge bitcoin/bitcoin#26326: net: don't lock cs_main while reading blocks in net processing +pr 2024-05-08 23:11:35 +0100 8a45f572b9e0d4681a7e636df338d978841c27a3 Merge bitcoin/bitcoin#29335: test: Handle functional test disk-full error +v 2024-05-08 23:19:47 +0100 0d114e3cb20cb9e03fc9ba8daf3d03436b491742 blockstorage: Add Assume for fKnown / snapshot chainstate +pr 2024-05-08 23:39:56 +0100 43003255c00f72a85188d29a313904f46513f1eb Merge bitcoin/bitcoin#29292: rpc: improve submitpackage documentation and other improvements +pr 2024-05-09 04:11:57 +0100 6f1d9064381d834b0f8daa9011f18ba40834d85a Merge bitcoin/bitcoin#30063: build, test: Remove unused `TIMEOUT` environment variable +cr 2024-05-09 14:55:55 +0100 538fedde1d9c96a2bbe06cacc0cd6903135fbc83 common: Add ECC_Context RAII wrapper for ECC_Start/ECC_Stop +v 2024-05-09 14:56:04 +0100 28905c1a64a87a56f16aea8a4d23dea7eec9ca59 test: Use ECC_Context helper in bench and fuzz tests +v 2024-05-09 14:56:06 +0100 a08d2b3cb971c68e9a50b991b2953fa4541cf48a tools: Use ECC_Context helper in bitcoin-tx and bitcoin-wallet tools +cr 2024-05-09 14:56:08 +0100 41eba5bd716bea47c8731d156d053afee92a7f12 kernel: Remove key module from kernel library +v 2024-05-09 14:56:10 +0100 96378fe734e5fb6167eb20036d7170572a647edb Refactor: Remove ECC_Start and ECC_Stop from key header +pr 2024-05-09 16:55:15 +0100 921c61e9a5c8592cc9e07986612d3f4f31d663fc Merge bitcoin/bitcoin#29973: test: Assumeutxo: ensure failure when importing a snapshot twice +pr 2024-05-09 16:57:30 +0100 ceb1e078f8c0ae58ff72748b039184a205efe337 Merge bitcoin/bitcoin#28793: contrib: Add asmap-tool +v 2024-05-09 17:13:31 +0100 e6aba463adeb88fc707342a12fef658f68b0a0ea contrib: use env_flags in get_arch +v 2024-05-09 17:13:50 +0100 b59a027d957a4cffd225a681e6c85f9ae7fd77f3 contrib: drop dead get_machine from test sym check +pr 2024-05-09 21:20:43 +0100 012e540acee4c06dbade5451e76c606f987e5957 Merge bitcoin/bitcoin#29122: test: adds outbound eviction functional tests, updates comment in ConsiderEviction +pr 2024-05-09 21:54:18 +0100 24572cf768167c0e82a688e7eaef865a5cbc4ffd Merge bitcoin/bitcoin#29939: test: add MiniWallet tagging support to avoid UTXO mixing, use in `fill_mempool` +pr 2024-05-09 23:31:03 +0100 98dd4e712efaa2b77cb168426756879c6405c3f4 Merge bitcoin/bitcoin#30006: test: use sleepy wait-for-log in reindex readonly +v 2024-05-10 14:42:31 +0100 24b53fc84af301fff592e06723b980e29aa68289 refactor, subprocess: Remove `Popen::pid()` +v 2024-05-10 14:47:07 +0100 9e1ccf55e178144804e30cfe94757b6da2a6ca28 refactor, subprocess: Remove unused `Popen::poll()` +v 2024-05-10 14:47:15 +0100 05b6f8793c6d5f17d1cb413e2884f1fb0f367ad8 refactor, subprocess: Remove unused `Popen::child_created_` data member +v 2024-05-10 14:58:27 +0100 5a11d3023f7d0cde777f3496c0f3aa381823d749 refactor, subprocess: Remove unused stream API calls +pr 2024-05-10 17:44:42 +0100 7066980273aa5f405ae34b71ead7f0bf0132e1b7 Merge bitcoin/bitcoin#29948: test: add missing comparison of node1's mempool in MempoolPackagesTest +pr 2024-05-10 18:18:00 +0100 2cedb42a928fbf3a1e0e8715e918497cbe64af0d Merge bitcoin/bitcoin#29252: kernel: Remove key module from kernel library +v 2024-05-11 05:29:51 +0100 684da9707040ce25d95b2954eda50b811136d92c p2p, bugfix: detect addnode cjdns peers in GetAddedNodeInfo() +v 2024-05-11 05:29:51 +0100 d0b047494c28381942c09d0cca45baa323bfcffc test: add GetAddedNodeInfo() CJDNS regression unit test +pr 2024-05-11 11:34:42 +0100 4d3f1d08db4198b13056c5bb44530dae9507dcf3 Merge bitcoin/bitcoin#29739: build: swap cctools otool for llvm-objdump +pr 2024-05-11 11:37:49 +0100 b47c393d8a39b48a8f17f2d8abae9ba2f2bf5a61 Merge bitcoin/bitcoin#30081: refactor: Remove unused code from `subprocess.h` header +pr 2024-05-11 19:13:34 +0100 182983c6ab2e037d65303fa13148f39236f2734a Merge bitcoin-core/gui#788: debugwindow: update session ID tooltip +pr 2024-05-11 19:34:12 +0100 32072866809ade129a3219105f0851606dc9fd38 Merge bitcoin-core/gui#813: Don't permit port in proxy IP option +pr 2024-05-12 14:21:21 +0100 ee9491369faaa755ae1d248b8f32456fd656a5f4 Merge bitcoin/bitcoin#29658: Bugfix: GUI: Help messages already have a trailing newline, so don't add an extra one +pr 2024-05-12 15:30:34 +0100 b94061902e52132489fe296c12396798700f1f35 Merge bitcoin-core/gui#812: Fix create unsigned transaction fee bump +v 2024-05-13 13:01:06 +0100 1e4412b317f74dd64069309544fe73c95e2c10e7 depends: set AR for CMake +v 2024-05-13 13:01:37 +0100 43cfb428cba04b8db98d4d0d56ffe28ad686e58c depends: set NM for CMake +v 2024-05-13 13:01:45 +0100 019ad7327c397094d7648b55503bf5373b108a57 depends: set RANLIB for CMake +v 2024-05-13 14:30:44 +0100 b77bad309e92f176f340598eec056eb7bff86f5f rpc: move UniValue in blockToJSON +pr 2024-05-13 15:58:36 +0100 c7deb761187e052ec25f94d855befdd1ff2e73fd Merge bitcoin/bitcoin#29994: doc: removed help text saying that peers may not connect automatically +pr 2024-05-13 16:00:49 +0100 ff8c606cf1eaefd0eab9f144561120ae6c5a498f Merge bitcoin/bitcoin#29974: fuzz: txorphan tests fixups +pr 2024-05-13 21:15:53 +0100 0503cbea9aab47ec0a87d34611e5453158727169 Merge bitcoin/bitcoin#30094: rpc: move UniValue in blockToJSON +pr 2024-05-13 21:31:19 +0100 d6069cb8d6bad2da111e9db0f6ba587855349bc8 Merge bitcoin/bitcoin#28233: validation: don't clear cache on periodic flush: >2x block connection speed +v 2024-05-13 22:31:46 +0100 12d82817bf32396b58c8c65645012def606680b6 refactor: simplify `FormatSubVersion` using strprintf/Join +v 2024-05-14 04:01:06 +0100 756ff9b478484b17c4a6e65c171c2e4fecb21ad4 wallet: add dummy BerkeleyRODatabase and BerkeleyROBatch classes +v 2024-05-14 04:01:37 +0100 0c8e72847603540bb29b8b8aeb80fa3f2e3a2c9a wallet: implement BerkeleyROBatch +v 2024-05-14 04:01:38 +0100 ecba23097955dad7208baa687fc405c846aee794 wallet: implement BerkeleyRODatabase::Backup +pr 2024-05-14 04:47:09 +0100 7fcf4e99791ca5be0b068ac03a81a50ece11dba3 Merge bitcoin/bitcoin#30078: depends: set AR & RANLIB for CMake +v 2024-05-14 09:24:31 +0100 b946f8a4c51be42e52d63a6d578158c0b2a6b7ed crypto: add NUMS_H const +v 2024-05-14 09:26:28 +0100 d4b17c7d46ad8e2833ade99d5b4c9741c913e84d kernel: Remove batchpriority from kernel library +v 2024-05-14 10:31:56 +0100 7e475b9648bbee04f5825b922ba0399373eaa5a9 [p2p] don't query orphanage by txid +v 2024-05-14 10:32:27 +0100 efcc5930175f31b685adb4627a038d9f0848eb1f [refactor] TxOrphanage::HaveTx only by wtxid +v 2024-05-14 10:32:28 +0100 6675f6428d653bf7a53537bd773114f4fb5ba53f [unit test] TxOrphanage handling of same-txid-different-witness txns +cr 2024-05-14 10:32:28 +0100 8923edfc1f12ebc6a074651c084ba7d249074799 [p2p] allow entries with the same txid in TxOrphanage +cr 2024-05-14 10:32:28 +0100 c31f148166f01a9167d82501a77823785d28a841 [refactor] TxOrphanage::EraseTx by wtxid +cr 2024-05-14 10:38:57 +0100 0fb17bf61a40b73a2b81a18e70b3de180c917f22 [log] updates in TxOrphanage +v 2024-05-14 10:38:57 +0100 b16da7eda76944719713be68b61f03d4acdd3e16 [functional test] attackers sending mutated orphans +v 2024-05-14 10:44:33 +0100 9408a04e424cee0d226bde79171bd4954f9caeb0 tests, fuzz: use new NUMS_H const +v 2024-05-14 13:36:31 +0100 9365baa489e123d9bcaf986e4311d3fa3f1e3f88 test: add conflicting topology test case +cr 2024-05-14 15:32:43 +0100 2ca1460ae3a7217eaa8c5972515bf622bedadfce rpc: identify JSON-RPC 2.0 requests +cr 2024-05-14 15:39:43 +0100 466b90562f4785de74b548f7c4a256069e2aaf43 rpc: Add "jsonrpc" field and drop null "result"/"error" fields +cr 2024-05-14 16:15:54 +0100 bf1a1f1662427fbf1a43bb951364eface469bdb7 rpc: Avoid returning HTTP errors for JSON-RPC 2.0 requests +pr 2024-05-14 16:20:33 +0100 dbb3113082a75035b14d20021036d2166171976e Merge bitcoin/bitcoin#30083: kernel: Remove batchpriority from kernel library +v 2024-05-14 16:28:43 +0100 e7ee80dcf2b68684eae96070875ea13a60e3e7b0 rpc: JSON-RPC 2.0 should not respond to "notifications" +cr 2024-05-14 16:28:48 +0100 cbc6c440e3811d342fa570713702900b3e3e75b9 doc: add comments and release-notes for JSON-RPC 2.0 +v 2024-05-14 18:49:34 +0100 fdae638e83522c28a1222e65c43d1cbca3e34cba doc: Improve doc for functions involved in saving blocks to disk +v 2024-05-14 19:54:26 +0100 064859bbad6984a6ec85c744064abdf757807c58 blockstorage: split up FindBlockPos function +cr 2024-05-14 19:54:27 +0100 17103637c6fa2dfcf5374ebb0cd715e540dd4ce1 blockstorage: Rename FindBlockPos and have it return a FlatFilePos +cr 2024-05-14 19:54:27 +0100 d9e477c4dc39d9623ed66c35c06e28f94ae62ad5 validation, blockstorage: Separate code paths for reindex and saving new blocks +v 2024-05-14 19:54:27 +0100 e41667b720372dae8438ea86e9819027e62b54e0 blockstorage: Don't move cursor backwards in UpdateBlockInfo +pr 2024-05-15 01:00:34 +0100 f5fc3190fbe3a42670ef96b2ad8b4914b9eac813 Merge bitcoin/bitcoin#29086: refactor: Simply include CTxMemPool::Options in CTxMemPool directly rather than duplicating definition +pr 2024-05-15 02:02:32 +0100 695d80126f75a99c80d5d6c18ebaaabf7410b989 Merge bitcoin/bitcoin#30074: contrib: use ENV flags in get_arch +pr 2024-05-15 05:48:37 +0100 3d24189664e696a2ca1aee2b5ea57b245344e2d4 Merge bitcoin/bitcoin#30098: refactor: simplify `FormatSubVersion` using strprintf/Join +v 2024-05-15 08:53:00 +0100 fa6c82dd9b0ef9687c28ddd6b57065d0ba7de85b ci: Remove clang version pin in test-each-commit +v 2024-05-15 08:53:04 +0100 fa90ad23c0cb99bde305af156c978c066f7bacb8 ci: Roll test-each-commit Ubuntu +pr 2024-05-15 09:31:27 +0100 42d5a1ff25a8045b6f4c09fa1fb71736dbccc034 Merge bitcoin/bitcoin#30060: ci: Roll clang in test-each-commit task +v 2024-05-15 14:50:25 +0100 141df0a28810470e53fdbc6d32d3cb4020fe3ca1 crypto: disable asan for sha256_sse4 with clang and -O0 +pr 2024-05-15 14:56:17 +0100 33303b2b296cdb21b6ade3e95663e9ed58c08753 Merge bitcoin/bitcoin#30000: p2p: index TxOrphanage by wtxid, allow entries with same txid +v 2024-05-15 17:46:02 +0100 fa6d4891c7815025ab1cd58d0906466af31bb648 refactor: Use type-safe time in txorphanage +pr 2024-05-15 18:41:15 +0100 7a40f2a3f1cf744d136ecf534979114e79c5e71d Merge bitcoin-core/gui#722: wallet: Allow user to navigate options while encrypting at creation +pr 2024-05-15 20:09:56 +0100 71f0f2273f6258e466c7b299c11982b4a04ae0d7 Merge bitcoin/bitcoin#28929: serialization: Support for multiple parameters +pr 2024-05-16 01:40:34 +0100 ae2658caacc1f3d8ab48d6b8ece481b1e9707fbb Merge bitcoin/bitcoin#30097: crypto: disable asan for sha256_sse4 with clang and -O0 +cr 2024-05-16 03:35:52 +0100 ca3d945dc66e177e8fa3e83c77236de89cc0072a Squashed 'src/secp256k1/' changes from d8311688bd..06bff6dec8 +ff 2024-05-16 03:35:52 +0100 f82a940bbfda2622d01e581187b7ba10b4a66a55 Update libsecp256k1 subtree to latest master +pr 2024-05-16 04:18:26 +0100 dd42a5ddea6a72e1e9cad54f8352c76b0b701973 Merge bitcoin/bitcoin#30085: p2p: detect addnode cjdns peers in GetAddedNodeInfo() +v 2024-05-16 10:28:46 +0100 b47bd959207e82555f07e028cc2246943d32d4c3 kernel: De-globalize fReindex +pr 2024-05-16 15:18:04 +0100 75118a608fc22a57567743000d636bc1f969f748 Merge bitcoin/bitcoin#27101: Support JSON-RPC 2.0 when requested by client +pr 2024-05-16 16:16:08 +0100 2f53f2273da020d7fabd7c65a1bc7e69a31249b2 Merge bitcoin/bitcoin#29975: blockstorage: Separate reindexing from saving new blocks +v 2024-05-16 17:16:46 +0100 d35ba1b3f16071b8fe9b36398ba15352dbf2a54d util: avoid using thread_local variable that has a destructor +v 2024-05-16 17:58:07 +0100 e3249f21111f1dd4beb66f10af933c34a36c30ac fuzz: add more coverage for `ScriptPubKeyMan` +cr 2024-05-16 20:03:13 +0100 0b753156ce60c29efb2386954ba7555ad8f642f5 test: Test bdb_ro dump of wallet without reset LSNs +v 2024-05-16 20:03:13 +0100 3568dce9e93295674cdf5458c5bdf93ff01fd0a2 tests: Add BerkeleyRO to db prefix tests +v 2024-05-16 20:03:13 +0100 4d7a3ae78e55f25868979f1bd920857a4aecb825 Berkeley RO Database fuzz test +cr 2024-05-16 20:03:13 +0100 6ace3e953f0864bd7818f040c59a1bc70aa47512 bdb: Be able to make byteswapped databases +cr 2024-05-16 20:03:13 +0100 6e50bee67d1d58aecd8a0ce8b7c3f5a7979365f5 Implement handling of other endianness in BerkeleyRODatabase +v 2024-05-16 20:03:13 +0100 70cfbfdadf16d3b115309c6938f07ef5b96c7cc1 wallettool: Optionally use BERKELEY_RO as format when dumping BDB wallets +cr 2024-05-16 20:03:13 +0100 c1984f128284589423b7e0cc06c9a3b23a242d95 test: Test dumping dbs with overflow pages +cr 2024-05-16 20:03:13 +0100 cdd61c9cc108df8e13f4e3891ff2c96355b3ee38 wallet: implement independent BDB deserializer in BerkeleyRODatabase +v 2024-05-16 20:03:13 +0100 d51fbab4b32d56765e8faab6ad01245fb259b0ca wallet, test: Be able to always swap BDB endianness +v 2024-05-16 20:03:13 +0100 d9878903fb34939dee8e1462f079acc68110253d Error if LSNs are not reset +cr 2024-05-16 20:03:13 +0100 dd57713f6ede3d46e97ee7df87c10001b0bf4c3d Add MakeBerkeleyRODatabase +cr 2024-05-16 20:03:13 +0100 fd7b16e391ed320e35255157a28be14c947ef30a test: Test dumps of other endian BDB files +v 2024-05-17 16:49:59 +0100 7c8abf3c2001152423da06d25f9f4906611685ea bench: bugfix, properly release wallet before erasing directory +pr 2024-05-17 19:10:51 +0100 4877fcdb4263fc3582184fdab3e5d1533c64a7d5 Merge bitcoin/bitcoin#30048: crypto: add `NUMS_H` const +pr 2024-05-17 20:50:56 +0100 058af75874ffa2b4064e3d6d30cc50f0ec754ba8 Merge bitcoin/bitcoin#29817: kernel: De-globalize fReindex +v 2024-05-17 21:38:59 +0100 8950053636cb38ed85fe2d58b53e5d0acb35c390 test: remove unneeded `-maxorphantx=1000` settings +v 2024-05-18 04:12:25 +0100 a057869aa3c42457570765966cb66accb2375b13 build: pass --with-ecmult-gen-kb=86 to secp256k1 +pr 2024-05-20 09:27:37 +0100 063bb2fbb571b9ee4940dacbf56f36b15f6aa501 Merge bitcoin/bitcoin#30066: test: add conflicting topology test case +pr 2024-05-20 09:47:31 +0100 ecd23656db174adef61d3bd753d02698c3528192 Merge bitcoin/bitcoin#30133: test: remove unneeded `-maxorphantx=1000` settings +v 2024-05-20 12:59:15 +0100 85e480a41ad0901a8b46759e921c187ebbbcccdf doc: Update NetBSD Build Guide +v 2024-05-20 17:48:19 +0100 d7707d9843b03f20d2a8c5a45d7b3db58e169e6f rpc: avoid copying into UniValue +v 2024-05-21 05:48:40 +0100 fa73431dd4709754c34a4d5ad1c940ff9e628cf3 ci: Add mising -Wno-error=maybe-uninitialized to armhf task +pr 2024-05-21 10:05:09 +0100 5acdc2b97dcd756a15d28d75bce9a9d3e3953f9f Merge bitcoin/bitcoin#26606: wallet: Implement independent BDB parser +pr 2024-05-21 10:25:56 +0100 8804ec736adaacf5392392add003e679069ad527 Merge bitcoin/bitcoin#30095: util: avoid using thread_local variable that has a destructor +pr 2024-05-21 10:26:49 +0100 a786fd2041913d82ca90b561de309421bd24e41b Merge bitcoin/bitcoin#30143: doc: Update NetBSD Build Guide +v 2024-05-21 10:27:42 +0100 5bba43312c0ceccfe18bd4d086e12ec0497ed926 build: Enable `thread_local` for MinGW-w64 builds +cr 2024-05-21 10:29:51 +0100 17fe948cce2eb75f0f3f4b0db9d0d90648c7d4af build: remove --enable-threadlocal +v 2024-05-21 10:29:51 +0100 1e7c20bc19a216269c646177ab90cfa084c096a5 doc: remove comment about using thread_local +cr 2024-05-21 12:38:07 +0100 de95953d870c41436de67d56c93259bc66fe1434 rpc: Optimize serialization disk space of dumptxoutset +v 2024-05-21 12:38:09 +0100 4d8e5edbaa94805be41ae4c8aa2f4bf7aaa276fe assumeutxo: Add documentation on dumptxoutset serialization format +v 2024-05-21 12:38:09 +0100 c14ed7f384075330361df636f40121cf25a066d6 assumeutxo: Add test for changed coin size value +cr 2024-05-21 12:57:09 +0100 542e13b2937356810bda2c41be83c3b1675e2f2f rpc: Enhance metadata of the dumptxoutset output +v 2024-05-21 14:58:44 +0100 6629d1d0f8285d1bf2d87341a856abe903f26c13 test: improve robustness of connect_nodes() +v 2024-05-21 15:06:02 +0100 d578e2e3540e085942001350ff3aeb047bdac973 [policy] explicitly require non-v3 for CPFP carve out +v 2024-05-21 15:06:55 +0100 a29f1df289cf27c6cbd565448548b3dc1392a9b0 [policy] restrict all v3 transactions to 10kvB +v 2024-05-21 15:06:58 +0100 154b2b2296edccb5ed24e829798dacb6195edc11 [fuzz] V3_MAX_VSIZE and effective ancestor/descendant size limits +v 2024-05-21 17:59:47 +0100 2289d4524053ab71c0d9133987cb36412797c1a2 wallet, tests: Avoid stringop-overflow warning in PollutePubKey +pr 2024-05-21 18:59:33 +0100 6c13b1375f8fd810f46f5650e01a464ee63cfa46 Merge bitcoin/bitcoin#29421: net: make the list of known message types a compile time constant +pr 2024-05-21 21:14:30 +0100 2ec0a28a37dbb50d463899f53c28fb96905d97b7 Merge bitcoin/bitcoin#30137: build: Remove `--enable-threadlocal` +v 2024-05-22 04:19:51 +0100 9f4ff1e9659597307f62510f1885ad8da3a1d9a3 windeploy: Renew certificate +pr 2024-05-22 08:50:42 +0100 0388dd702b8d76c83bd17fc339d8c63904234fb0 Merge bitcoin/bitcoin#30120: Update libsecp256k1 subtree to current master +v 2024-05-22 08:51:33 +0100 437e908ebd1bf9473ef924de5aec57bdc26de6dd depends: swap cctools-x for llvm-x +v 2024-05-22 08:51:33 +0100 4a0536c5d96688729f8c885060c83cb12d72a8c5 build: switch to using lld for macOS builds +v 2024-05-22 08:51:33 +0100 555fddf646265f7e57a416dc64b171f2c9460e20 guix: use GUIX_LD_WRAPPER_DISABLE_RPATH for all HOSTS +cr 2024-05-22 08:51:33 +0100 9ec238d0f3c7b97aec83dbeb4c7a6950c8f5125e guix: remove ZERO_AR_DATE export +v 2024-05-22 08:51:33 +0100 bab287d1bab2c02b5fab3285f2678c15316d31c2 depends: don't use -no_warning_for_no_symbols in macOS qt build +v 2024-05-22 08:51:33 +0100 c6a6b2d6fd4e3a01b095dc98645f819ebabf1931 build: add lld into macOS build environment(s) +cr 2024-05-22 08:51:33 +0100 f836f7e9b3e091eb27cdefb624e2a6f2a921fa55 depends: remove cctools & libtapi +cr 2024-05-22 08:51:34 +0100 e8c25e8a35e333e90514945c592557615641553f guix: drop binutils from macOS env +v 2024-05-22 08:59:58 +0100 fa3e1151a28345edff8f371283745bdd647f9a74 doc: Correct pull request prefix for scripts and tools +pr 2024-05-22 09:20:45 +0100 fa8cb0516d4198c56d3dc1252a5a899959e279aa Merge bitcoin/bitcoin#30144: ci: Add mising -Wno-error=maybe-uninitialized to armhf task +v 2024-05-22 11:57:04 +0100 8c2714907d1e1ffc58487b3b43e018c1ec10065b net: rpc: return peer's mapped AS in getrawaddrman +cr 2024-05-22 11:58:08 +0100 1e54d61c4698debf3329d1960e06078ccbf8063c test: add coverage for `mapped_as` from `getrawaddrman` +v 2024-05-22 12:05:26 +0100 21b8a14d37c19ce292d5529597e0d52338db48a9 depends: Fetch miniupnpc sources from an alternative website +pr 2024-05-22 13:43:33 +0100 93bec6e953172c14fc65aa1e9e363a5a9188ba37 Merge bitcoin/bitcoin#30131: wallet, tests: Avoid stringop-overflow warning in PollutePubKey +pr 2024-05-22 14:43:32 +0100 6f36624147dfb59603698db647b4ad612b771810 Merge bitcoin/bitcoin#30150: doc: Correct pull request prefix for scripts and tools +pr 2024-05-23 09:39:47 +0100 ef44726918c05e158246cb695ae358db603653e9 Merge bitcoin/bitcoin#30151: depends: Fetch miniupnpc sources from an alternative website +pr 2024-05-23 12:08:36 +0100 83ae1bac9d3e01de994734b4bc7002deaf19bc67 Merge bitcoin/bitcoin#30062: net: add ASMap info in `getrawaddrman` RPC +pr 2024-05-23 13:25:14 +0100 f15778536ad421f9805f0c005f0eb7b84dda1b4e Merge bitcoin/bitcoin#30149: contrib: Renew Windows code signing certificate +pr 2024-05-23 15:00:00 +0100 e163d864d380956a4c0f89a4d80a76f5aefc9a08 Merge bitcoin/bitcoin#30118: test: improve robustness of connect_nodes() +pr 2024-05-23 15:53:37 +0100 6300438a2e0b6ee21fe210072b7b8be2f4845c17 Merge bitcoin/bitcoin#30115: rpc: avoid copying into UniValue +pr 2024-05-23 16:54:18 +0100 867f6af803dcc9f0f754bf5cc683c853bb09051b Merge bitcoin/bitcoin#29873: policy: restrict all TRUC (v3) transactions to 10kvB +v 2024-05-23 17:08:39 +0100 57ee3029ddadaee5cb48224e0a87f704b7971bd8 Add description for m_test_accept +v 2024-05-23 17:08:39 +0100 69f7ab05bafec1cf06fd7a58351f78e32bbfa2cf Add m_allow_sibling_eviction as separate ATMPArgs flag +cr 2024-05-23 17:08:46 +0100 20d8936d8bb6137a5a3722d34e0d7ae756031009 [refactor] make some members MemPoolAccept-wide +v 2024-05-23 17:08:46 +0100 2fd34ba504957331f5a08614b6e1f8317260f04d Add sanity checks for various ATMPArgs booleans +cr 2024-05-23 17:08:46 +0100 cbbfe719b223b9e05398227cef68c99eb97670bd cpfp carveout is excluded in packages +pr 2024-05-23 17:11:55 +0100 915d7276e4060999bac2a42c533b6fb8bdbe5b3d Merge bitcoin/bitcoin#27064: system: use %LOCALAPPDATA% as default datadir on windows +v 2024-05-23 17:26:26 +0100 949abebea0059edd929b653b4b475a5880fc0a3e [fuzz] Avoid collecting initialization coverage +pr 2024-05-23 17:31:23 +0100 413844f1c2a3d8f7cfef822f348f26df488b03c7 Merge bitcoin/bitcoin#29612: rpc: Optimize serialization and enhance metadata of dumptxoutset output +pr 2024-05-24 10:24:50 +0100 4c387cb64ff4c74f911b1559fb0ef143ee6c268b Merge bitcoin/bitcoin#30072: refactor prep for package rbf +v 2024-05-24 11:42:06 +0100 359967e310794e0bbdbe2bca38ee440a88bc4f43 doc: Add release notes for #29612 +v 2024-05-24 11:42:09 +0100 1f1f9984555d49f07ae20cb3a8153a177c546beb assumeutxo: Deserialize trailing byte instead of Txid +cr 2024-05-24 12:11:50 +0100 4b7d9842691046b01f0c08d69f924ddb62ccc4c6 lint: add markdown hyperlink checker +v 2024-05-24 13:21:30 +0100 fac72985292b516919a216d9a78cf84418cd7f96 fuzz: Fix wallet_bdb_parser stdlib error matching +v 2024-05-24 17:44:02 +0100 6b6084850b8c2ebcdbeecdb406e8732adaa6d23c assumeutxo: Add network magic ctor param to SnapshotMetadata +v 2024-05-24 17:44:05 +0100 efc1b5be8a4696c0db19ba18316b2d4ed09e10f2 test: Add coverage for txid coins count check when loading snapshot +pr 2024-05-24 18:15:47 +0100 327f08bb0cd91a22249395adeb34549e3c86ca76 Merge bitcoin/bitcoin#30169: fuzz: Fix wallet_bdb_parser stdlib error matching +pr 2024-05-29 09:22:24 +0100 58956028e4398a33a3bd7ba00aebe03bb589910f Merge bitcoin/bitcoin#30170: refactor: Use type-safe time in txorphanage +pr 2024-05-29 09:34:48 +0100 417b6ceceee94b9f291f7f84c4664e5a6bcd3707 Merge bitcoin/bitcoin#30156: fuzz: More accurate coverage reports +pr 2024-05-29 09:42:05 +0100 be100cf4c77a3e45750773689e0a396fda39d8a7 Merge bitcoin/bitcoin#21778: build: LLD based macOS toolchain +v 2024-05-29 10:01:21 +0100 9ddf39dd87a3729ceedaa05a207621a02c532536 fuzz: Handle missing BDBRO errors +pr 2024-05-29 10:27:12 +0100 46d3477b5b18384ab022b5e122f6fba64cf4593f Merge bitcoin/bitcoin#30172: fuzz: Handle missing BDBRO errors +pr 2024-05-29 10:32:02 +0100 10164916f712bd3c92f0b3ac329ba2e1209746fe Merge bitcoin/bitcoin#30122: bench: enable wallet creation benchmarks on all platforms +v 2024-05-29 16:22:11 +0100 0048680467e15037023ceae44bc2dc8309f82f39 increase txorphan harness stability +v 2024-05-29 17:02:07 +0100 8defc182a31d828ad0f53ebf7e3be9e9cfc42d09 scripted-diff: Replace nNextSweep with m_next_sweep +pr 2024-05-30 09:25:42 +0100 f61ede574c12f1f8ae67f38f15387586719c856f Merge bitcoin/bitcoin#30049: build, test, doc: Temporarily remove Android-related stuff +v 2024-05-30 09:29:11 +0100 b018bd779dd9b2d46c10254a1cf5b819ae8e027c depends: qt 5.15.14 +v 2024-05-30 10:36:55 +0100 cbd4640ede92a1a5d7b7c1367eb7c00a9f476c62 build: remove --enable-lcov-branch-coverage +v 2024-05-30 11:33:59 +0100 88cdb5967f093cf96e9184a48c0d9e34cea9d341 clang-tidy: Add `bugprone-move-forwarding-reference` check +v 2024-05-30 12:00:05 +0100 0a3631fc352eda849290db940844e5ef723436df depends: fix Qt macOS build with Clang 18 +pr 2024-05-30 12:36:09 +0100 0a7c650fcd322a46dac7239b421046a61a6a5a20 Merge bitcoin/bitcoin#30034: ci: add markdown link check job +pr 2024-05-30 15:32:08 +0100 62f7f59ff495fbcbfc10c25e97bb0dc032647abf Merge bitcoin/bitcoin#30199: clang-tidy: Add `bugprone-move-forwarding-reference` check +v 2024-05-31 09:30:24 +0100 a27e1ceb9f9c9239af9b0a151c84a57573ea646a depends: consolidate dependency docs +pr 2024-05-31 15:28:32 +0100 3ac1465cd9da8d328972a67d4c623a012a276e81 Merge bitcoin/bitcoin#30198: depends: qt 5.15.14 and fix macOS build with Clang 18 +pr 2024-05-31 15:30:29 +0100 457e1846d2bf6ef9d54b9ba1a330ba8bbff13091 Merge bitcoin/bitcoin#30204: depends: consolidate dependency docs +cr 2024-05-31 16:44:47 +0100 3c08e11c3ea4499e8d20609e2417cac859b3e98e doc: JSON-RPC request Content-Type is application/json +v 2024-06-02 07:54:50 +0100 539404fe0fc0346b3aa77c330b38a5a0ad6565b2 [policy] make v3 transactions standard +cr 2024-06-02 07:54:50 +0100 9dbe6a03f0d6e70ccdf8e8715f888c0c17216bee [test] wallet uses CURRENT_VERSION which is 2 +v 2024-06-02 19:21:56 +0100 30a01134cdec37e7467fcd6eee8b0ae3890a131c [doc] update bips.md for 431 +cr 2024-06-02 19:51:22 +0100 3299abce948f205bb1354993614b669189f9b89f build: Fix building `fuzz` binary on on SunOS / illumos +v 2024-06-03 09:49:34 +0100 ffbc173ca1ed6b93de8bf3f88b8aed0743f4916c depends: Update Boost download link +pr 2024-06-03 09:59:54 +0100 e18accc5f518e229471f79d191196604abad254a Merge bitcoin/bitcoin#30186: fuzz: increase `txorphan` harness stability +pr 2024-06-03 10:06:15 +0100 f7c0ddff466508b863b420770dc3257a178cc208 Merge bitcoin/bitcoin#30192: build: remove `--enable-lcov-branch-coverage` +pr 2024-06-03 10:29:14 +0100 80bdd4b6beb878c95478b5623c9f9ff0b948ad57 Merge bitcoin/bitcoin#30167: doc, rpc: Release notes and follow-ups for #29612 +v 2024-06-03 10:32:43 +0100 22d0f1a27ef7733b51b3c2138a8d01713df8f248 [fuzz] Avoid endless waiting in FuzzedSock::{Wait,WaitMany} +v 2024-06-03 10:32:43 +0100 a7fceda68bb62fe3d9060fcf52e33b2f64a2acf9 [fuzz] Make peeking through FuzzedSock::Recv fuzzer friendly +v 2024-06-03 11:56:40 +0100 5f2c1d84e37697f4f8a20e3c12f37bba71b3c2a6 guix: show *_FLAGS variables in pre-build output +pr 2024-06-03 12:44:06 +0100 e40df5468d1187a608f3821a23f37939e24804a1 Merge bitcoin/bitcoin#30216: build: Fix building `fuzz` binary on on SunOS / illumos +pr 2024-06-03 14:01:47 +0100 c065ae84695de811716cb4fc89357346d7decc8f Merge bitcoin/bitcoin#30134: fuzz: add more coverage for `ScriptPubKeyMan` +pr 2024-06-03 14:41:34 +0100 f7a6d3444973421bfd35815fabe552874f462467 Merge bitcoin/bitcoin#30215: doc: JSON-RPC request Content-Type is application/json +cr 2024-06-03 15:59:43 +0100 8801e319d51209fe3a3b06e2aab5f96ceead290d refactor: remove unused `CKey::Negate` method +pr 2024-06-04 09:11:46 +0100 9efc2af3be5817972d9899893c343fc4deab7df5 Merge bitcoin/bitcoin#30217: depends: Update Boost download link +v 2024-06-04 14:13:44 +0100 0fcbfdb7ad172e518a10dd6e5be4cb6bb1158784 Support running individual lint checks +pr 2024-06-04 14:56:47 +0100 d39f15a8a5b06d68070a3434a81c6840d4f87715 Merge bitcoin/bitcoin#30211: fuzz: Make FuzzedSock fuzz friendlier +v 2024-06-04 20:49:47 +0100 fa6aa4027cecd819c1210d6959af364d5bf9f608 test: Fix typos and use names args +v 2024-06-04 20:49:50 +0100 4444de152f01368e603f2b089679a86eae02e34a test: Set mocktime in p2p_disconnect_ban.py to avoid intermittent test failure +pr 2024-06-04 23:37:18 +0100 701b0cf2f33c65961374bb0e13e4481cfc0f3d01 Merge bitcoin/bitcoin#28366: Fix waste calculation in SelectionResult +pr 2024-06-04 23:46:47 +0100 e54c392356c4ff4a3b658f816793231a1285f655 Merge bitcoin/bitcoin#28979: wallet, rpc: document and update `sendall` behavior around unconfirmed inputs +pr 2024-06-05 00:00:59 +0100 a937458904aea50f96ab64ded7adb3ddff316efe Merge bitcoin/bitcoin#30154: doc: update mention of generating bitcoin.conf +pr 2024-06-05 00:13:03 +0100 56ea8ed3d325f42ac501cbbf536c2c642366e743 Merge bitcoin/bitcoin#29428: test: Assumeutxo: snapshots with less work should not be loaded +pr 2024-06-05 01:11:59 +0100 09fe1435d9cae5d32fa4e24042d7a862b7c7bf22 Merge bitcoin/bitcoin#29997: rpc: Remove index-based Arg accessor +pr 2024-06-05 01:32:25 +0100 55cf34a5c30f1aee0737b48fa2814996359eca89 Merge bitcoin/bitcoin#30047: refactor: Model the bech32 charlimit as an Enum +pr 2024-06-05 02:26:42 +0100 b3a61bd7b10211124613d18a524ec86781a30e9e Merge bitcoin/bitcoin#28074: fuzz: wallet, add target for `Crypter` +pr 2024-06-05 02:39:49 +0100 76a33be21d4243f9e8f18c164f776adf7c99a56c Merge bitcoin/bitcoin#28307: rpc, wallet: fix incorrect segwit redeem script size limit +pr 2024-06-05 02:47:16 +0100 c29314ecfcc09db4f3d3656a825c13158974578c Merge bitcoin/bitcoin#29998: functional test: ensure confirmed utxo being sourced for 2nd chain +pr 2024-06-05 02:57:36 +0100 23b3dc2dd13dc9bf13790a87b046a64cbbfccc43 Merge bitcoin/bitcoin#30218: refactor: remove unused `CKey::Negate` method +s 2024-06-05 04:25:19 +0100 2721d64989c2b2114890586b7efd01ab4b062ca6 chainparams: Add achow101 DNS seeder +v 2024-06-05 10:08:35 +0100 e6636ff4ec594a38f2e2c4bda3a9549bbc07118e doc: fixup deps doc after #30198 +v 2024-06-05 10:47:52 +0100 232928b58a82e3f15307deba1ae921ae2960ccc8 build: no-longer allow GCC-10 in C++20 check +pr 2024-06-05 11:37:15 +0100 74dc8585b38df405ab78018a4faaa4a25f8fc7a4 Merge bitcoin/bitcoin#30174: test: Set mocktime in p2p_disconnect_ban.py to avoid intermittent test failure +pr 2024-06-05 11:40:47 +0100 ff7d2054c4f1d7ff98078b9695e7c36e79a476c6 Merge bitcoin/bitcoin#30185: guix: show `*_FLAGS` variables in pre-build output +v 2024-06-05 11:46:39 +0100 d5ece3c4b5e109f65f5d3315c43239dd87bb2c81 Reserve hrp memory in Decode and LocateErrors +v 2024-06-05 12:18:13 +0100 07f64177a49f1b6b4d486d10cf67fddfa3c995eb Reduce memory copying operations in bech32 encode +v 2024-06-05 14:15:10 +0100 2599655c1fb8e7d0b8407d2be249977372cb73ff guix: bump time-machine to f0bb724211872cd6158fce6162e0b8c73efed126 +v 2024-06-05 15:15:17 +0100 0c41fc3fa52ad16923afbd0ec18b9c1b3ded8036 test: fix `keys_to_multisig_script` (P2MS) helper for n/k > 16 +v 2024-06-05 15:18:31 +0100 0570d2c204ec7f10af6bd8e48c23318a48fefc10 test: add unit test for `keys_to_multisig_script` +cr 2024-06-05 15:18:34 +0100 5cf0a1f230389ef37e0ff65de5fc98394f32f60c test: add `createmultisig` P2MS encoding test for all n (1..20) +v 2024-06-05 22:06:44 +0100 c3a5e8a0639ff2505adb4a4e7776db87d5ebafd3 build: re-enable deprecated warning copy +pr 2024-06-06 10:49:37 +0100 f47cd649e970b37fcd1fc31bbadaebf49566ee73 Merge bitcoin/bitcoin#30236: build: re-enable deprecated warning copy +cr 2024-06-06 10:57:00 +0100 4621e7cc8f8e2b71393a2b30d5dbe56165bfb854 test: refactor: Rename extra_txn to const empty_extra_txn as it is empty in all test cases +pr 2024-06-06 10:59:25 +0100 1040a1fc807ed984020eeaa6e90b5bf070b61b05 Merge bitcoin/bitcoin#30228: build: no-longer allow GCC-10 in C++20 check +v 2024-06-06 13:08:17 +0100 4c99301220ab44e98d0d0e1cc8d774d96a25b7aa test: Add ReceiveWithExtraTransactions Compact Block receive test. +v 2024-06-06 15:14:08 +0100 53372f21767be449bb452fc3f5fe7f16286ae371 refactor: disable self-assign warning for tests +v 2024-06-06 15:14:34 +0100 15796d4b61342f75548b20a18c670ed21d102ba8 build: warn on self-assignment +cr 2024-06-06 18:50:54 +0100 6eecba475efd025eb011400af58621ad5823994e net_processing: make MaybePunishNodeFor{Block,Tx} return void +v 2024-06-06 21:06:23 +0100 193c748e44f8647a056121fc9cbb9c2efbcbfc49 fuzz: add I2P harness +v 2024-06-06 22:06:15 +0100 62fd24af6a3fe1569662c2802f59bb68a0172087 util: add VecDeque +v 2024-06-06 22:06:15 +0100 7b8eea067f188c0b0e52ef21b01aedd37667a237 tests: add fuzz tests for VecDeque +pr 2024-06-07 00:18:55 +0100 4a020ca443ba370bf41583962d16aa8551876f53 Merge bitcoin/bitcoin#29401: test: Remove struct.pack from almost all places +v 2024-06-07 09:55:34 +0100 501aceefcf7536cbdead5bcb53b13f2fec7ab6be ci: Remove no longer needed workaround for GHA Windows images +v 2024-06-07 10:47:36 +0100 0d3ef83433805d3f367130fd5bd227a8ed5a7ccd ci: Use relative paths in `win64-native` CI job consistently +v 2024-06-07 12:06:52 +0100 533eab7d67d78f217f74909662133086b79ea808 bugfix: Streamline setting reindex option +v 2024-06-07 12:06:57 +0100 e17255322378076edce3ef6f06cd36ca58d2e236 validation: Remove needs_init from LoadBlockIndex +v 2024-06-07 14:26:50 +0100 0ead71df8c83a2f9eae1220544ec84dcf38a0326 doc: update and link for JSON-RPC 2.0 +v 2024-06-07 14:26:55 +0100 391843b0297db03d71a8d88ab77609e2ad230bf2 bitcoin-cli: use json-rpc 2.0 +v 2024-06-07 14:26:55 +0100 b22529529823c0cb5916ac318c8536e9107b7e78 test: use json-rpc 2.0 in all functional tests by default +v 2024-06-07 14:26:55 +0100 d39bdf339772166a5545ae811e58b7764af093a8 test: remove unused variable in interface_rpc.py +pr 2024-06-07 14:32:13 +0100 feab35189bc00bc4cf15e9dcb5cf6b34ff3a1e91 Merge bitcoin/bitcoin#30161: util: add VecDeque +cr 2024-06-07 15:47:24 +0100 1f6ab1215bbb1f8a5f1743c3c413b95ad08090df minor: remove unnecessary semicolons from RPC content type examples +v 2024-06-07 16:30:38 +0100 fa9cb101cf33b57b2c043b29f1f3d55b990ba4c6 refactor: Add explicit cast to expected_last_page to silence fuzz ISan +pr 2024-06-07 17:30:46 +0100 6e4d18f37f42894fe9a0d7948c1da3f061fc6b60 Merge bitcoin/bitcoin#29496: policy: bump TX_MAX_STANDARD_VERSION to 3 +cr 2024-06-07 17:40:21 +0100 27e70f1f5be1f536f2314cd2ea42b4f80d927fbd consensus: Store transaction nVersion as uint32_t +v 2024-06-07 18:17:11 +0100 804f09dfa116300914e2aeef05ed9710dd504e8c kernel: Add less confusing reindex options +v 2024-06-07 18:17:19 +0100 201c1a92824c71ae646d5bba9963871b1d704cc1 indexes: Don't wipe indexes again when already reindexing +cr 2024-06-07 18:17:21 +0100 1b1c6dcca0cc891bd35d29b61628c39098cd94ce test: Add functional test for continuing a reindex +v 2024-06-07 18:18:46 +0100 f68cba29b3be0dec7877022b18a193a3b78c1099 blockman: Replace m_reindexing with m_blockfiles_indexed +cr 2024-06-07 18:55:23 +0100 429ec1aaaaafab150f11e27fcf132a99b57c4fc7 refactor: Rename CTransaction::nVersion to version +pr 2024-06-08 09:29:39 +0100 2ad6e8efa3b4bc828ecca982e5a9f0e4470b5098 Merge bitcoin/bitcoin#30231: guix: bump time-machine to f0bb724211872cd6158fce6162e0b8c73efed126 +pr 2024-06-08 09:33:49 +0100 a44b0f771f2130b89b608f39055a355693c91a8c Merge bitcoin/bitcoin#30238: json-rpc 2.0 followups: docs, tests, cli +v 2024-06-08 17:09:33 +0100 4b527fa93b9763a33842069bc07446313cbf5e0f ci: add IPV6 network to ci container +v 2024-06-09 12:07:35 +0100 fab01b5220c28a334b451ed9625bd3914c48e6af refactor: performance-for-range-copy in psbt.h +v 2024-06-09 12:55:28 +0100 d1581c6048478cf70c5fb9ec5ebc178f16b376b8 test: doc: fix units in tx size standardness test (s/vbytes/weight units) +v 2024-06-09 21:45:29 +0100 fa780e1c25e8e98253e32d93db65f78a0092433f build: Remove --enable-gprof +v 2024-06-10 06:58:10 +0100 0000276b31cea5e443a59d94a98c569293ada951 test: Remove redundant verack check +pr 2024-06-10 09:21:19 +0100 ea88a7596e37c41ad5c3c73265eb9c54ae211da5 Merge bitcoin/bitcoin#30253: refactor: performance-for-range-copy in psbt.h +pr 2024-06-10 09:36:07 +0100 7fd4905c403ccb233f489e2f6a6aa3cd53b033ed Merge bitcoin/bitcoin#30235: build: warn on self-assignment +pr 2024-06-10 10:49:53 +0100 dc4eca407330b93d45f42437325342835f9cc114 Merge bitcoin/bitcoin#30242: ci: Native Windows CI job cleanup +pr 2024-06-10 10:51:11 +0100 bd642ee15bda313bcf801cf63e4428c7a7d252c8 Merge bitcoin/bitcoin#30227: doc: fixup deps doc after #30198 +pr 2024-06-10 12:01:19 +0100 cad127235e307d7de0e9cc04708dbd31aa6c24b0 Merge bitcoin/bitcoin#30257: build: Remove --enable-gprof +v 2024-06-10 12:46:56 +0100 fae3a1f0065064d80ab4c0375a9eaeb666c5dd55 log: use error level for critical log messages +v 2024-06-10 12:54:48 +0100 47f705b33fc1381d96c99038e2110e6fe2b2f883 tests: add fuzz tests for BitSet +v 2024-06-10 12:54:48 +0100 59a6df6bd584701f820ad60a10d9d477bf0236b5 util: add BitSet +v 2024-06-10 13:15:22 +0100 9946618f6174422d9ba93bf96c278269bebacf39 guix: use clang-toolchain-18 for macOS build +v 2024-06-10 13:15:23 +0100 9043f12425d869d8bf7f2be1bb12368e41d09c5d depends: no-longer pass -B to clang in macOS cross-compile +v 2024-06-10 13:15:23 +0100 9ebdd5e9e04be3355309d3096da00db37b4d540c depends: update install docs for macOS cross compilation +v 2024-06-10 13:15:23 +0100 d851451705aa67175cbafb06f455e6969131f90f ci: update deps for macOS cross build +v 2024-06-10 13:15:23 +0100 e9a44faf14854c5b05a297df182d10706f438a83 depends: remove FORCE_USE_SYSTEM_CLANG +v 2024-06-10 13:15:23 +0100 f9994b025e1d72b4c0f5267de54caa2bfae136a3 depends: remove native LLVM package +v 2024-06-10 13:15:23 +0100 fb74fd66cb2b016f07e47dc58d81b33034ce851b depends: remove no-longer used llvm_* vars from macOS build +v 2024-06-10 13:20:54 +0100 7cbfd7a7ce45ac68d6041f42f468862f5c193d8c refactor: rename (macho) ld64 to lld +v 2024-06-10 14:25:08 +0100 3d4ca62d883b17d983d6f62cdacbd67a483f7d64 doc: add release note for 29091 and 29165 +pr 2024-06-10 15:12:30 +0100 b1ba1b178f501daa1afdd91f9efec34e5ec1e294 Merge bitcoin/bitcoin#30132: indexes: Don't wipe indexes again when continuing a prior reindex +v 2024-06-10 18:17:04 +0100 5da396781589177d4ceb3b4b59c9f309a5e4d029 PackageV3Checks: Relax assumptions +cr 2024-06-10 19:19:24 +0100 ab98e6fd03970d6b5a593674c84e762a47b90ea6 test: add coverage for errors for `combinerawtransaction` RPC +pr 2024-06-11 11:42:50 +0100 ba5dd96298559d1f078c397048ce6703b90c067c Merge bitcoin/bitcoin#30254: test: doc: fix units in tx-size standardness test (s/vbytes/weight units) +pr 2024-06-11 13:02:03 +0100 e6e4c18a9be21c6bad78778ed919299617d40f7a Merge bitcoin/bitcoin#30162: test: MiniWallet: respect passed feerate for padded txs (using `target_weight`) +pr 2024-06-11 14:11:34 +0100 0fbb8043ce0d6a931d5ce4bc877b6b596976a908 Merge bitcoin/bitcoin#30252: test: Remove redundant verack check +pr 2024-06-11 15:29:18 +0100 5bc9b644a4b6af15a10ebd791c11d9340d01957f Merge bitcoin/bitcoin#30264: test: add coverage for errors for `combinerawtransaction` +pr 2024-06-11 16:40:43 +0100 337f9d44c28b1d3563a0063a8805b418d506698d Merge bitcoin/bitcoin#30201: depends: remove `FORCE_USE_SYSTEM_CLANG` +v 2024-06-11 17:28:11 +0100 f51da34ec1a806d321a468691fa66082eef10ad9 utils: add missing include +pr 2024-06-11 20:24:49 +0100 2251460f3efc68af9891505757280b773db68a09 Merge bitcoin/bitcoin#28830: [refactor] Check CTxMemPool options in ctor +pr 2024-06-11 20:55:18 +0100 1bcc91a52c61c4235766f71a21383d00b8f4955e Merge bitcoin/bitcoin#29521: cli: Detect port errors in rpcconnect and rpcport +pr 2024-06-11 21:41:44 +0100 891e4bf3740774485c40d1c1a54075a1b69d6dde Merge bitcoin/bitcoin#28339: validation: improve performance of CheckBlockIndex +pr 2024-06-11 22:28:51 +0100 91e0beede2859dea987ba6db746e95dca0ceb024 Merge bitcoin/bitcoin#30160: util: add BitSet +pr 2024-06-12 10:23:28 +0100 416e26c1db7769e5de05fae1c07c47991a3447c2 Merge bitcoin/bitcoin#30261: doc: add release note for 29091 and 29165 +pr 2024-06-12 10:32:31 +0100 5ee6b76c69d51158c13f6ad9ea1b264372e58d4d Merge bitcoin/bitcoin#29325: consensus: Store transaction nVersion as uint32_t +cr 2024-06-12 10:33:17 +0100 b5fc6d46a3854c18f6e8dfc89540d24ef778caa2 guix: use glibc 2.31 +pr 2024-06-12 12:54:28 +0100 aa6b876e010ef90bf15c63a8f754e91a64b230cd Merge bitcoin/bitcoin#30268: util: add missing VecDeque include +cr 2024-06-12 14:20:25 +0100 9eea51d9058ad638861aa4b94c1c6e71caeb8765 ci: move Asan / LSan / USDT job to Github Actions +v 2024-06-12 14:21:31 +0100 faa41e29d5b90e62179d651f4010272dae685621 fuzz: Use std::span in FuzzBufferType +ff 2024-06-12 14:38:39 +0100 89464ad59cf11f68315ea3104236989e5b429d15 Update minisketch subtree to latest master +cr 2024-06-12 14:38:39 +0100 cb59af38e72ab189b052ec84e2d1027473235ba4 Squashed 'src/minisketch/' changes from 3472e2f5ec..eb37a9b8e7 +v 2024-06-12 16:58:24 +0100 e71a21b641541f4751ac1ea7fd7d33f20a629636 doc: archive release notes for v27.1 +pr 2024-06-12 17:59:59 +0100 d0cb5167d6d85ebc5b3123ee7902d3b1dc095e49 Merge bitcoin/bitcoin#30230: fuzz: add I2P harness +pr 2024-06-12 18:16:07 +0100 a7bc9b76e73f04dfe4d6ba42033fe38659090e8b Merge bitcoin/bitcoin#30229: fuzz: Use std::span in FuzzBufferType +cr 2024-06-12 20:19:50 +0100 3d3a83fab2bcc5750e5c5854d121e943922fefd8 i2p: log errors properly according to their severity +v 2024-06-12 20:40:42 +0100 7d3662fbe35032178c5a5e27e73c592268f6e41b i2p: fix log when an interruption happens during `Accept` +v 2024-06-12 21:07:16 +0100 e2779ce98b39e14cada08a654928e798436f5a46 test: cover more errors for `signrawtransactionwithkey` RPC +pr 2024-06-12 22:12:54 +0100 011a895a82df8971b7fed4fcd090afb638c4c0d7 Merge bitcoin/bitcoin#29015: kernel: Streamline util library +pr 2024-06-12 22:19:48 +0100 ff21eb2def701585fb1c286d8aef6dee86be48c3 Merge bitcoin/bitcoin#30219: Lint: Support running individual lint checks +v 2024-06-13 11:20:44 +0100 bed29c481aebeb2b0160450c63c03cc68fb89bc6 refactor: remove unnecessary AppendWarning helper function +cr 2024-06-13 11:20:47 +0100 20e616f86444d00712ac7eb840666e2b0378af4a move-only: move warnings from common to node +cr 2024-06-13 11:20:48 +0100 9c4b0b7ce459765fa1a63b410c3423b90f0d2a5f node: update uiInterface whenever warnings updated +cr 2024-06-13 11:20:48 +0100 b071ad9770b7ae7fc718dcbfdc8f62dffbf6cfee introduce and use the generalized `node::Warnings` interface +cr 2024-06-13 11:20:49 +0100 260f8da71a35232d859d7705861fc1a88bfbbe81 refactor: remove warnings globals +pr 2024-06-13 12:30:38 +0100 080a47cb8a8db27328bbdf57aa80cc4b4127a370 Merge bitcoin/bitcoin#30270: Update minisketch subtree to eb37a9b8e79f9e49d73b96a49bf97a96d9eb676c +ff 2024-06-13 13:17:57 +0100 95812d912b6335caa7af2a084d84447fb4aad156 Update leveldb-subtree subtree to latest upstream +v 2024-06-13 13:17:57 +0100 a37778d4d32b4ddeff96f68a130dc8da3a84b278 Squashed 'src/leveldb/' changes from e2f10b4e47..688561cba8 +v 2024-06-13 13:48:26 +0100 b03a45b13e4e33b044cae6c97a6d608f6f3d43f3 Revert "contrib: macdeploy: monkey-patch gen-sdk to be deterministic" +v 2024-06-13 14:52:59 +0100 316d7b63c97144ba3e21201315c784852210f8ff Fuzz: pass mempool to CheckPackageMempoolAcceptResult +cr 2024-06-13 14:52:59 +0100 4d15bcf448eb3c4451b63e8f78cc61f3f9f9b639 [test] package rbf +v 2024-06-13 14:52:59 +0100 6e3c4394cfadf32c06c8c4732d136ca10c316721 mempool: Improve logging of replaced transactions +v 2024-06-13 14:52:59 +0100 94ed4fbf8e1a396c650b5134d396d6c0be35ce10 Add release note for size 2 package rbf +v 2024-06-13 14:52:59 +0100 afd52d8e63ed323a159ea49fd1f10542abeacb97 doc: update package RBF comment +v 2024-06-13 14:52:59 +0100 d3466e4cc5051c314873dd14ec8f7a88494c0780 CheckPackageMempoolAcceptResult: Check package rbf invariants +cr 2024-06-13 14:52:59 +0100 dc21f61c72e5a97d974ca2c5cb70b8328f4fab2a [policy] package rbf +pr 2024-06-13 17:18:49 +0100 fcc3b653dc2bd5683193a836556de07bea4d1b11 Merge bitcoin/bitcoin#29607: refactor: Reduce memory copying operations in bech32 encoding +pr 2024-06-14 09:42:20 +0100 8efc346e3b9f90ac389ba0cb9b803c80d9472251 Merge bitcoin/bitcoin#30278: test: cover more errors for `signrawtransactionwithkey` RPC +cr 2024-06-14 09:43:36 +0100 7c298fe0df38696f60e981469422315c03a722da doc: rewrite some of the macdeploy docs +v 2024-06-14 09:43:36 +0100 d042230f7a7ada03f85cc392b8f2c4b56e779d61 depends: swap mmacosx-version-min for mmacos-version-min +pr 2024-06-14 11:17:12 +0100 54c5f67c38ea1195b9a5de11707fde2c4adfb0e4 Merge bitcoin/bitcoin#30276: doc: archive release notes for v27.1 +pr 2024-06-14 11:26:02 +0100 0b94fb87206616e475566c3667cbaad0e9faa5b0 Merge bitcoin/bitcoin#30281: Update leveldb subtree to latest upstream +v 2024-06-14 11:27:03 +0100 26a7f70b5d2b1cbfbf03e0b57b9b5ea92dafbb19 ci: enable self-assignment clang-tidy check +v 2024-06-14 11:27:03 +0100 32b1d1379258aa57c2a7e278f60d1117fcf17953 refactor: add self-assign checks to classes which violate the clang-tidy check +v 2024-06-14 13:23:50 +0100 1245d1388b003c46092937def7041917aecec8de netbase: extend CreateSock() to support creating arbitrary sockets +v 2024-06-14 13:44:26 +0100 b51d75ea97ee0d01ee586e40a30cb68c0bf7ffd3 fuzz: simplify FuzzedSock::m_peek_data +cr 2024-06-14 13:56:17 +0100 4d81b4de339efbbb68c9785203b699e6e12ecd83 fuzz: FuzzedSock::Recv() don't lose bytes from MSG_PEEK read +pr 2024-06-14 19:34:48 +0100 538497ba27f58549876830189346e5b76bd55517 Merge bitcoin/bitcoin#30255: log: use error level for critical log messages +pr 2024-06-14 19:46:04 +0100 2c79abc7ad4850e9e3ba32a04c530155cda7f980 Merge bitcoin/bitcoin#27969: bumpfee: ignore WALLET_INCREMENTAL_RELAY_FEE when user specifies fee_rate +v 2024-06-16 18:30:56 +0100 881724d443d11f984a721ef1edd5777c24d1ed29 test: Added test coverage to listsinceblock rpc +cr 2024-06-17 03:51:12 +0100 ad06e68399da71c615db0dbf5304d0cd46bc1f40 test: write functional test results to csv +cr 2024-06-17 05:29:54 +0100 e075fd131d668d9d1ba3c8566624481c4a57032d test: Introduce test types and modify v2 handshake function accordingly +v 2024-06-17 19:25:03 +0100 adc6ab25bba42ce9e7ed6bd7599aabb6dead6987 wallet: use CRecipient instead of CTxOut +v 2024-06-17 19:25:27 +0100 a9c7300135f0188daa5bce5491e2daf2dd8da8ae move-only: refactor CreateTransactionInternal +pr 2024-06-17 19:54:08 +0100 808898fddf413dc680fa8cc7d7a2cc906098ebe3 Merge bitcoin/bitcoin#30291: test: write functional test results to csv +pr 2024-06-17 20:18:08 +0100 4bcef32a937a57280afe5e601bb90121725aca72 Merge bitcoin/bitcoin#28312: test: fix `keys_to_multisig_script` (P2MS) helper for n/k > 16 +pr 2024-06-17 20:35:49 +0100 f011022d53b193a7c7eee76fc4246ffe337eb712 Merge bitcoin/bitcoin#30195: test: Added test coverage to listsinceblock rpc +pr 2024-06-17 20:49:43 +0100 d97ddbe797f5b8b3bca0ee71b692e542b8990195 Merge bitcoin/bitcoin#30193: ci: move ASan job to GitHub Actions from Cirrus CI +pr 2024-06-17 22:09:18 +0100 ddf2ebd4659e926c5c6ee6726511b0b88bf7c2e0 Merge bitcoin/bitcoin#30058: Encapsulate warnings in generalized node::Warnings and remove globals +pr 2024-06-17 22:22:43 +0100 41544b8f96dbc9c6b8998acd6522200d67cdc16d Merge bitcoin/bitcoin#28984: Cluster size 2 package rbf +v 2024-06-17 22:26:23 +0100 de669a883bf65c576cc596b20a576d7bb1618182 doc: replace mention of V3 with TRUC +v 2024-06-18 10:16:30 +0100 518b06c4b889d71a3fdd61f8fe38d519ea5e4a1b ci: remove unused bcc variable from workflow +pr 2024-06-18 10:26:11 +0100 a1537ba1a394ad2791865705a07f622120d893f2 Merge bitcoin/bitcoin#30282: Revert "contrib: macdeploy: monkey-patch gen-sdk to be deterministic" +pr 2024-06-18 10:55:16 +0100 5fbdfe7104ee5d371071cc7447ace7008378962a Merge bitcoin/bitcoin#30299: ci: remove unused bcc variable from workflow +pr 2024-06-18 10:55:46 +0100 9c5cdf07f30f816cd134e2cd2dca9c27ef7067a5 Merge bitcoin/bitcoin#30287: macOS: rewrite some docs & swap `mmacosx-version-min` for `mmacos-version-min` +v 2024-06-18 13:06:36 +0100 f543852a89d93441645250c40c3980aeb0c3b664 rename policy/v3_policy.* to policy/truc_policy.* +v 2024-06-18 13:24:48 +0100 8acdf66540834b9f9cf28f16d389e8b6a48516d5 upnp: add compatibility for miniupnpc 2.2.8 +v 2024-06-18 14:30:30 +0100 ff4558d441f377a372647972d35b5476b94579c9 doc: reword package RBF documentation +v 2024-06-18 15:19:41 +0100 4ccb3d6d0d576d32da8a1b9c6e70962cbd0f19fe fuzz: have package_rbf always make small txns +cr 2024-06-18 17:47:51 +0100 404b01c436122b951e9e06ed26d79dba4651685e rpc: getblocktemplate getTipHash() via Miner interface +v 2024-06-18 17:47:51 +0100 4bf2e361da1964f7c278b4939967a0e5afde20b0 rpc: call CreateNewBlock via miner interface +cr 2024-06-18 17:47:51 +0100 64ebb0f97178687517c2060bf6b9931064607888 Always pass options to BlockAssembler constructor +cr 2024-06-18 17:47:51 +0100 8ecb6816781c7c7f423b501cbb2de3abd7250119 Introduce Mining interface +cr 2024-06-18 17:47:51 +0100 d8a3496b5ad27bea4c79ea0344f595cc1b95f0d3 rpc: call TestBlockValidity via miner interface +cr 2024-06-18 17:47:52 +0100 7b4d3249ced93ec5986500e43b324005ed89502f rpc: call processNewBlock via miner interface +cr 2024-06-18 17:47:52 +0100 9e228351e761d8d24413bbc4ac1610b4f3dec2bf rpc: getTransactionsUpdated via miner interface +cr 2024-06-18 17:47:52 +0100 dda0b0834faf7be7e8938bf63e7bb01cd54a416a rpc: minize getTipHash() calls in gbt +v 2024-06-18 18:43:33 +0100 1984187840972a455f4c210f0cb576633ef5bddb Validate transaction without inputs +v 2024-06-18 18:43:33 +0100 327a31d1a4f0e9c7b22063bc725bbd160092c552 Validate oversized transaction +v 2024-06-18 18:43:33 +0100 969e047cfbab86e5819a2c9056e8d2dab17513a8 Replace hard-coded constant in test +v 2024-06-18 18:43:33 +0100 c3a884318981c7ebabd0b8e8023a14519e26c72b Use SCRIPT_VERIFY_NONE instead of hard-coded 0 in transaction_tests +v 2024-06-18 20:07:51 +0100 a9716c53f05082d6d89ebea51a46d4404efb12d7 rpc: call IsInitialBlockDownload via miner interface +pr 2024-06-19 10:06:59 +0100 ac4ea782af20720eea8ce67eb7fa00ce1e19e513 Merge bitcoin/bitcoin#30283: upnp: fix build with miniupnpc 2.2.8 +v 2024-06-19 10:14:31 +0100 e009bf681c0e38a6451afa594ba3c7c8861f61c3 Don't use iterator addresses in IteratorComparator +v 2024-06-19 12:39:43 +0100 fa7bc9bbca9348cf31b97bee0789ea7caeec635c fuzz: Fix wallet_bdb_parser 32-bit unhandled fseek error +pr 2024-06-19 12:40:46 +0100 2d21060af831fa8f8f1791b4464961d5f28a88cb Merge bitcoin/bitcoin#30300: fuzz: have package_rbf always make small txns +cr 2024-06-19 15:59:31 +0100 197b5404b0f4a1d6e989000845b45c8bd24e0bc6 QA: Expect PACKAGE_NAME rather than constant "Bitcoin Core" +cr 2024-06-19 21:32:33 +0100 80315c011863d69e7785673283e4c9033fbcd5ac refactor: Move early loadtxoutset checks into ActiveSnapshot +v 2024-06-19 22:56:30 +0100 55eea003af24169c883e1761beb997e151845225 test: Make blockencodings_tests deterministic +pr 2024-06-20 09:43:26 +0100 c6de072a215e8f893098abbab74e0ac1267c3f8b Merge bitcoin/bitcoin#30248: refactor: Add explicit cast to expected_last_page to silence fuzz ISan +pr 2024-06-20 09:52:57 +0100 aa2ce2d64696c030fb39f4e63b12271bb700eb28 Merge bitcoin/bitcoin#30307: fuzz: Fix wallet_bdb_parser 32-bit unhandled fseek error +v 2024-06-20 12:32:07 +0100 4289dd02cce688a69c596f7cd5e47f831b00aa1b contrib: add R(UN)PATH check to ELF symbol-check +v 2024-06-20 16:43:37 +0100 bbde6ffefea9587b07a9f8d4043b2dd23ef8c3c5 add node interface method for getting maximum mempool size +v 2024-06-20 17:01:58 +0100 4a028cf54c0502bc9ba0804bf1ae413b20a007cb gui: show maximum mempool size in information window +v 2024-06-20 17:42:28 +0100 4ecbbd9b7fa6f30e1d297cd26b112d3148744f58 ci: add option for running tests without volume +pr 2024-06-20 18:28:38 +0100 a52837b9e9692e7e1e8f3a5fd510aca8ef8a5ac4 Merge bitcoin/bitcoin#29575: net_processing: make any misbehavior trigger immediate discouragement +pr 2024-06-20 18:36:55 +0100 21656e99b5f489c881f9fe90b28edc4aac870ab0 Merge bitcoin/bitcoin#29862: test: Validate oversized transactions or without inputs +pr 2024-06-20 18:44:56 +0100 a961ad1bebc54912b88d072abf22ab7d3cf46bf1 Merge bitcoin/bitcoin#30202: netbase: extend CreateSock() to support creating arbitrary sockets +v 2024-06-20 19:45:32 +0100 5729dbbb7424d02c5e5bc4f2eb340fdc1c0100b4 refactor: remove extraneous lock annotations from function definitions +v 2024-06-21 07:58:59 +0100 c67f215ea5fd57cd05e5346b8cd292dd879303ff ci: clarify Cirrus self-hosted workers setup +cr 2024-06-21 09:39:35 +0100 19ce3d407ef546fa50d18b2ffbd67b7417797064 assumeutxo: Check snapshot base block is not marked invalid +v 2024-06-21 09:39:39 +0100 2f9bde69f45c7a9fdcf0c65f9e1305391a6f1f28 test: Remove unnecessary restart in assumeutxo test +v 2024-06-21 09:42:32 +0100 40cd7585a042938937b5964c9c264e2bf4a80742 randomenv: use ifdef over if +v 2024-06-21 09:42:32 +0100 7839503b309c107e8229475a8fbf66601b0e7e8e zmq: use #ifdef ENABLE_ZMQ +cr 2024-06-21 09:42:32 +0100 79e197b17536b52647599ad9b3f09d2556f14385 build: Suppress warnings from boost and capnproto in multiprocess code +v 2024-06-21 09:43:46 +0100 82b43955f7948b225bebd08851a616d17f70a926 refactor: use #ifdef HAVE_SOCKADDR_UN +v 2024-06-21 09:43:48 +0100 e3dc64f4990a15df3fd6147831f66fc2a31c71ad build: add -Wundef +pr 2024-06-21 11:20:46 +0100 a19563ac86de04f3da18fd50bfb8b69ab4dc1e61 Merge bitcoin/bitcoin#30316: refactor: remove extraneous lock annotations from function definitions +pr 2024-06-21 13:54:53 +0100 538363738e9e30813cf3e76ca4f71c1aaff349e7 Merge bitcoin/bitcoin#30314: doc: clarify Cirrus self-hosted workers setup +cr 2024-06-21 14:00:16 +0100 96b4facc912927305b06a233cb8b36e7e5964c08 refactor, blockstorage: Generalize GetFirstStoredBlock +cr 2024-06-21 15:07:13 +0100 e351576862471fc77b1e798a16833439e23ff0b4 test: Check that disconnection happens when >4095 garbage bytes is sent +cr 2024-06-21 15:08:51 +0100 ad1482d5a20e6b155184a43d0724d2dcd950ce52 test: Check that disconnection happens when wrong garbage terminator is sent +v 2024-06-21 15:09:52 +0100 b5e6238fdbba5c777a5adfa4477dac51a82f4448 test: Check that disconnection happens when garbage sent/received are different +v 2024-06-21 15:10:58 +0100 997cc00b950a7d1b7f2a3971282685f4e81d87d2 test: Check that disconnection happens when AAD isn't filled +v 2024-06-21 15:11:00 +0100 c9dacd958d7c1e98b08a7083c299d981e4c11193 test: Check that non empty version packet is ignored and no disconnection happens +v 2024-06-21 16:33:01 +0100 da205dda14d7e71fe0567944117362c1b820ba8f ci: increase available ccache size to 300MB +v 2024-06-21 22:13:22 +0100 72b226882fe2348a9a66aee1d8d21b4e2d275e68 wallet: notify when preset + automatic inputs exceed max weight +v 2024-06-22 23:15:24 +0100 4a1975008b602aeacdad9a74d1837a7455148074 rpc: Make pruneheight also reflect undo data presence +v 2024-06-22 23:15:28 +0100 8789dc8f315a9d9ad7142d831bc9412f780248e7 doc: Add note to getblockfrompeer on missing undo data +pr 2024-06-24 14:12:34 +0100 cf44adfd9f585eced46ef1e9e36fd7bf05b7edef Merge bitcoin/bitcoin#30310: ci: add option for running tests without volume +cr 2024-06-24 14:28:23 +0100 c0b5ea5901d0ed005bca345e5b2de8a502f6af75 build: Drop redundant `sys/sysctl.h` header check +pr 2024-06-24 15:15:34 +0100 aef5ac7f2c4e160c0bdea89fee1cc70131d83eb8 Merge bitcoin/bitcoin#29876: build: add `-Wundef` +pr 2024-06-24 15:17:27 +0100 a57da5e01402fe143c8cd74e0e6ef15bbf85e641 Merge bitcoin/bitcoin#30308: QA: Expect PACKAGE_NAME rather than constant "Bitcoin Core" +pr 2024-06-25 00:29:48 +0100 323b0acfcb9380ce4b3c12a3d0b341d7bb3bfe08 Merge bitcoin/bitcoin#30200: Introduce Mining interface +cr 2024-06-25 15:01:00 +0100 1408944d2ec9f78e62bf91a5e5a50317ba3060c5 Squashed 'src/secp256k1/' changes from 06bff6dec8..4af241b320 +ff 2024-06-25 15:01:00 +0100 cc58e958f341d2759fbabe5c9d8cc557e17d587f Update secp256k1 subtree to latest master +cr 2024-06-25 16:05:40 +0100 f59e9057e2aa596b54cf9e85bab35c3ead137547 depends: switch libevent to CMake +cr 2024-06-25 16:58:00 +0100 f170fe04ca03fe4021cbff7c5450ce3cc7fda17f depends: update doc in Qt pwd patch +v 2024-06-25 17:32:56 +0100 3ab25201909bece9066ac6191670bcee09791d54 contrib: Fixup verify-binaries OS platform parsing +v 2024-06-25 19:03:44 +0100 576828e732bacb61b608cd89f669a2936d3e8d00 ci: test-each-commit merge base optional +cr 2024-06-25 19:03:44 +0100 e9bfbb5414ab14ca14d8edcfdf77f28c9ed67c33 ci: forks can opt-out of CI branch push (Cirrus only) +v 2024-06-26 04:47:30 +0100 1556d21599a250297d5f20e5249c970340ab08bc rest: don't copy data when sending binary response +cr 2024-06-26 10:16:17 +0100 c838e3b6106adfe3fe3173aaf5b0a7dee023adce test: add coverage for `node` field of `getaddednodeinfo` RPC +v 2024-06-26 10:22:05 +0100 e38eadb2c2d93d2ee3c9accb649b2de144b3732e test: change comments to `self.log.info` for `test_addnode_getaddednodeinfo` +pr 2024-06-26 10:27:44 +0100 be4df59696a41cec5a33383524313a17e1c5e4da Merge bitcoin/bitcoin#30312: contrib: add R(UN)PATH check to ELF symbol-check +pr 2024-06-26 10:28:44 +0100 2cd7c6bd939e4e37b00b5b822b62eb933f720dc6 Merge bitcoin/bitcoin#30147: contrib: Fixup verify-binaries OS platform parsing +v 2024-06-26 11:24:47 +0100 83a9bef0e2acad7655e23d30e1c52412f380d93d Add missing include for mining interface +v 2024-06-26 11:24:48 +0100 75ce7637ad75af890581660c0bb3565c3c03bd6c refactor: testBlockValidity make out argument last +pr 2024-06-26 11:42:06 +0100 b4b98543945ed5d595c8fc994b561ec08527f302 Merge bitcoin/bitcoin#30321: rest: don't copy data when sending binary response +pr 2024-06-26 11:43:58 +0100 3f0ee7655b5cced47780507aa8e1654bcc8c16e5 Merge bitcoin/bitcoin#30007: chainparams: Add achow101 DNS seeder +pr 2024-06-26 15:21:44 +0100 0c57a798b50bf03a0b69f632c691932d608254ef Merge bitcoin/bitcoin#29987: guix: build with glibc 2.31 +pr 2024-06-26 15:25:46 +0100 d3d2bbf576d07f729dbb5eafce4ae6d4cc7dd763 Merge bitcoin/bitcoin#30327: build: Drop redundant `sys/sysctl.h` header check +pr 2024-06-26 17:16:16 +0100 1d00601b9b559b305e75830121dd30e207ef0d08 Merge bitcoin/bitcoin#30309: wallet: notify when preset + automatic inputs exceed max weight +pr 2024-06-26 17:37:28 +0100 9ac4f69ec24b66b75507f21591161ea8731d69fe Merge bitcoin/bitcoin#30334: Update libsecp256k1 subtree to latest master +cr 2024-06-26 17:48:05 +0100 fa7462c67ab9b6d45484ce92b44d03f812627d6e build: Bump clang minimum supported version to 16 +v 2024-06-26 17:48:27 +0100 9999dbc1bd171931f02266d7c1a5cfd39f49238e fuzz: Clarify Apple-Clang-16 workaround +v 2024-06-26 17:50:20 +0100 fa8f53273c7e5965620d31a8c3fe5f223cb76888 refactor: Remove no longer needed clang-15 workaround for std::span +v 2024-06-26 19:58:54 +0100 6d242ff1e9ca02fd8f5cb3ffe82dfb48a52366cc kernel: remove mempool_persist.cpp +pr 2024-06-26 20:28:26 +0100 b27afb7fb774809c9c075d56e44657e0b607a00c Merge bitcoin/bitcoin#29833: i2p: fix and improve logs +v 2024-06-26 21:38:56 +0100 517e204bacd9dcea6612aae57d5a2813b89cd01d Change MigrateLegacyToDescriptor to reopen wallet as BERKELEY_RO +cr 2024-06-26 23:47:09 +0100 f1478c05458562a9bef5c2ba43959d758e7b4745 mempool: move LoadMempool/DumpMempool to node +cr 2024-06-27 07:56:20 +0100 5fb2b704897fe10b5bd5ed754a5afd2ddc4a9e1d Drop unneeded lock from createNewBlock +v 2024-06-27 07:58:24 +0100 f6dc6db44ddc22ade96a69a02908f14cfb279a37 refactor: use CHECK_NONFATAL to avoid single-use symbol +v 2024-06-27 07:58:25 +0100 a74b0f93efa1d9eaf5abc2f6591c44a632aec6ed Have testBlockValidity hold cs_main instead of caller +v 2024-06-27 14:55:10 +0100 7df03f1a923e239cea8c9b0d603a9eb00863a40c util: add perm string helper functions +v 2024-06-27 15:08:19 +0100 f467aede78533dac60a118e1566138d65522c213 init: add option for rpccookie permissions +v 2024-06-27 15:08:23 +0100 d2afa2690cceb0012b2aa1960e1cfa497f3103fa test: add rpccookieperms test +v 2024-06-27 15:08:27 +0100 73f0a6cbd0b628675028fbd5a37eff8115e7ccfe doc: detail -rpccookieperms option +pr 2024-06-27 18:59:46 +0100 f0745d028e42486fb346015cfc481923739c479e Merge bitcoin/bitcoin#30050: refactor, wallet: get serialized size of `CRecipient`s directly +pr 2024-06-27 22:35:08 +0100 d38dbaad98c441e4b55174ab5343fc605abe90c3 Merge bitcoin/bitcoin#28167: init: Add option for rpccookie permissions (replace 26088) +pr 2024-06-27 23:16:27 +0100 2f6dca4d1c01ee47275a4292f128d714736837a1 Merge bitcoin/bitcoin#30335: Mining interface followups, reduce cs_main locking, test rpc bug fix +v 2024-06-28 08:41:52 +0100 46819f5df6de2a860c3ec87d55527b617a3b128f wallet: use LogTrace for walletdb log messages at trace level +v 2024-06-28 16:37:58 +0100 fafb7875e1e3b61e978f77d56b8e73ffdb520c22 doc: Fix outdated dev comment about logging +v 2024-06-28 16:46:00 +0100 fa1bc7c88bb720f02955dbe4e2a174b5a52f3af8 scripted-diff: Log parameter interaction not thrice +v 2024-06-28 23:30:14 +0100 5d2fb14bafe4e80c0a482d99e5ebde07c477f000 test: p2p: check that connecting to ourself leads to disconnect +v 2024-06-29 13:07:34 +0100 d35efe1efc0dbeae0667baade2a40be08511c13e p2p: Start downloading historical blocks from common ancestor +v 2024-06-30 15:46:33 +0100 8ec24bdad89e2a72c394060ba5661a91f374b874 test: Added coverage to Block not found error using gettxoutsetinfo +v 2024-06-30 22:00:13 +0100 323ce303086d42292ed9fe7c98e8b459bdf6d1a6 Moved the repeated -printpriority fetching out of AddToBlock + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/dependencies.md b/doc/dependencies.md index d3afd98e88..7b6c640442 100644 --- a/doc/dependencies.md +++ b/doc/dependencies.md @@ -8,7 +8,7 @@ You can find installation instructions in the `build-*.md` file for your platfor | --- | --- | | [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) | | [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) | -| [Clang](https://clang.llvm.org) | [14.0](https://github.com/bitcoin/bitcoin/pull/29208) | +| [Clang](https://clang.llvm.org) | [16.0](https://github.com/bitcoin/bitcoin/pull/30263) | | [GCC](https://gcc.gnu.org) | [11.1](https://github.com/bitcoin/bitcoin/pull/29091) | | [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) | | [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A | @@ -19,7 +19,7 @@ You can find installation instructions in the `build-*.md` file for your platfor | --- | --- | --- | --- | --- | | [Boost](../depends/packages/boost.mk) | [link](https://www.boost.org/users/download/) | [1.81.0](https://github.com/bitcoin/bitcoin/pull/26557) | [1.73.0](https://github.com/bitcoin/bitcoin/pull/29066) | No | | [libevent](../depends/packages/libevent.mk) | [link](https://github.com/libevent/libevent/releases) | [2.1.12-stable](https://github.com/bitcoin/bitcoin/pull/21991) | [2.1.8](https://github.com/bitcoin/bitcoin/pull/24681) | No | -| glibc | [link](https://www.gnu.org/software/libc/) | N/A | [2.27](https://github.com/bitcoin/bitcoin/pull/27029) | Yes | +| glibc | [link](https://www.gnu.org/software/libc/) | N/A | [2.31](https://github.com/bitcoin/bitcoin/pull/29987) | Yes | | Linux Kernel | [link](https://www.kernel.org/) | N/A | [3.17.0](https://github.com/bitcoin/bitcoin/pull/27699) | Yes | ## Optional @@ -30,13 +30,13 @@ You can find installation instructions in the `build-*.md` file for your platfor | [Fontconfig](../depends/packages/fontconfig.mk) | [link](https://www.freedesktop.org/wiki/Software/fontconfig/) | [2.12.6](https://github.com/bitcoin/bitcoin/pull/23495) | 2.6 | Yes | | [FreeType](../depends/packages/freetype.mk) | [link](https://freetype.org) | [2.11.0](https://github.com/bitcoin/bitcoin/commit/01544dd78ccc0b0474571da854e27adef97137fb) | 2.3.0 | Yes | | [qrencode](../depends/packages/qrencode.mk) | [link](https://fukuchi.org/works/qrencode/) | [4.1.1](https://github.com/bitcoin/bitcoin/pull/27312) | | No | -| [Qt](../depends/packages/qt.mk) | [link](https://download.qt.io/official_releases/qt/) | [5.15.13](https://github.com/bitcoin/bitcoin/pull/29732) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No | +| [Qt](../depends/packages/qt.mk) | [link](https://download.qt.io/official_releases/qt/) | [5.15.14](https://github.com/bitcoin/bitcoin/pull/30198) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No | ### Networking | Dependency | Releases | Version used | Minimum required | Runtime | | --- | --- | --- | --- | --- | -| [libnatpmp](../depends/packages/libnatpmp.mk) | [link](https://github.com/miniupnp/libnatpmp/) | commit [07004b9...](https://github.com/bitcoin/bitcoin/pull/25917) | | No | -| [MiniUPnPc](../depends/packages/miniupnpc.mk) | [link](https://miniupnp.tuxfamily.org/) | [2.2.2](https://github.com/bitcoin/bitcoin/pull/20421) | 2.1 | No | +| [libnatpmp](../depends/packages/libnatpmp.mk) | [link](https://github.com/miniupnp/libnatpmp/) | commit [f2433be...](https://github.com/bitcoin/bitcoin/pull/29708) | | No | +| [MiniUPnPc](../depends/packages/miniupnpc.mk) | [link](https://miniupnp.tuxfamily.org/) | [2.2.7](https://github.com/bitcoin/bitcoin/pull/29707) | 2.1 | No | ### Notifications | Dependency | Releases | Version used | Minimum required | Runtime | diff --git a/doc/design/libraries.md b/doc/design/libraries.md index 7cda64e713..619652cd2b 100644 --- a/doc/design/libraries.md +++ b/doc/design/libraries.md @@ -96,7 +96,7 @@ class bitcoin-qt,bitcoind,bitcoin-cli,bitcoin-wallet bold - The only thing that should depend on *libbitcoin_kernel* internally should be *libbitcoin_node*. GUI and wallet libraries *libbitcoinqt* and *libbitcoin_wallet* in particular should not depend on *libbitcoin_kernel* and the unneeded functionality it would pull in, like block validation. To the extent that GUI and wallet code need scripting and signing functionality, they should be get able it from *libbitcoin_consensus*, *libbitcoin_common*, and *libbitcoin_util*, instead of *libbitcoin_kernel*. -- GUI, node, and wallet code internal implementations should all be independent of each other, and the *libbitcoinqt*, *libbitcoin_node*, *libbitcoin_wallet* libraries should never reference each other's symbols. They should only call each other through [`src/interfaces/`](`../../src/interfaces/`) abstract interfaces. +- GUI, node, and wallet code internal implementations should all be independent of each other, and the *libbitcoinqt*, *libbitcoin_node*, *libbitcoin_wallet* libraries should never reference each other's symbols. They should only call each other through [`src/interfaces/`](../../src/interfaces/) abstract interfaces. ## Work in progress diff --git a/doc/design/multiprocess.md b/doc/design/multiprocess.md index 636d78d905..49410a4213 100644 --- a/doc/design/multiprocess.md +++ b/doc/design/multiprocess.md @@ -142,7 +142,7 @@ In the current design, class names, method names, and parameter names are duplic An alternate approach could use custom [C++ Attributes](https://en.cppreference.com/w/cpp/language/attributes) embedded in interface declarations to automatically generate `.capnp` files from C++ headers. This has not been pursued because parsing C++ headers is more complicated than parsing Cap’n Proto interface definitions, especially portably on multiple platforms. -In the meantime, the developer guide [Internal interface guidelines](developer-notes.md#internal-interface-guidelines) can provide guidance on keeping interfaces consistent and functional and avoiding compile errors. +In the meantime, the developer guide [Internal interface guidelines](../developer-notes.md#internal-interface-guidelines) can provide guidance on keeping interfaces consistent and functional and avoiding compile errors. ### Interface Stability diff --git a/doc/developer-notes.md b/doc/developer-notes.md index 497a09e36e..654380a2ce 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -13,7 +13,6 @@ Developer Notes - [Development tips and tricks](#development-tips-and-tricks) - [Compiling for debugging](#compiling-for-debugging) - [Show sources in debugging](#show-sources-in-debugging) - - [Compiling for gprof profiling](#compiling-for-gprof-profiling) - [`debug.log`](#debuglog) - [Signet, testnet, and regtest modes](#signet-testnet-and-regtest-modes) - [DEBUG_LOCKORDER](#debug_lockorder) @@ -115,6 +114,8 @@ code. Use `reinterpret_cast` and `const_cast` as appropriate. - Prefer [`list initialization ({})`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-list) where possible. For example `int x{0};` instead of `int x = 0;` or `int x(0);` + - Recursion is checked by clang-tidy and thus must be made explicit. Use + `NOLINTNEXTLINE(misc-no-recursion)` to suppress the check. For function calls a namespace should be specified explicitly, unless such functions have been declared within it. Otherwise, [argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl), also known as ADL, could be @@ -332,7 +333,7 @@ Recommendations: - Avoid linking to external documentation; links can break. - Javadoc and all valid Doxygen comments are stripped from Doxygen source code - previews (`STRIP_CODE_COMMENTS = YES` in [Doxyfile.in](doc/Doxyfile.in)). If + previews (`STRIP_CODE_COMMENTS = YES` in [Doxyfile.in](/doc/Doxyfile.in)). If you want a comment to be preserved, it must instead use `//` or `/* */`. ### Generating Documentation @@ -384,10 +385,6 @@ ln -s /path/to/project/root/src src 3. Use `debugedit` to modify debug information in the binary. -### Compiling for gprof profiling - -Run configure with the `--enable-gprof` option, then make. - ### `debug.log` If the code is behaving strangely, take a look in the `debug.log` file in the data directory; @@ -495,6 +492,10 @@ make cov # unit and functional tests. ``` +Additional LCOV options can be specified using `LCOV_OPTS`, but may be dependant +on the version of LCOV. For example, when using LCOV `2.x`, branch coverage can be +enabled by setting `LCOV_OPTS="--rc branch_coverage=1"`, when configuring. + ### Performance profiling with perf Profiling is a good way to get a precise idea of where time is being spent in @@ -1331,8 +1332,7 @@ Release notes should be written for any PR that: Release notes should be added to a PR-specific release note file at `/doc/release-notes-.md` to avoid conflicts between multiple PRs. -All `release-notes*` files are merged into a single -[/doc/release-notes.md](/doc/release-notes.md) file prior to the release. +All `release-notes*` files are merged into a single `release-notes-.md` file prior to the release. RPC interface guidelines -------------------------- @@ -1455,8 +1455,9 @@ independent (node, wallet, GUI), are defined in there are [`interfaces::Chain`](../src/interfaces/chain.h), used by wallet to access the node's latest chain state, [`interfaces::Node`](../src/interfaces/node.h), used by the GUI to control the -node, and [`interfaces::Wallet`](../src/interfaces/wallet.h), used by the GUI -to control an individual wallet. There are also more specialized interface +node, [`interfaces::Wallet`](../src/interfaces/wallet.h), used by the GUI +to control an individual wallet and [`interfaces::Mining`](../src/interfaces/mining.h), +used by RPC to generate block templates. There are also more specialized interface types like [`interfaces::Handler`](../src/interfaces/handler.h) [`interfaces::ChainClient`](../src/interfaces/chain.h) passed to and from various interface methods. diff --git a/doc/external-signer.md b/doc/external-signer.md index de44cdd880..1468e852ef 100644 --- a/doc/external-signer.md +++ b/doc/external-signer.md @@ -150,6 +150,9 @@ Example, display the first native SegWit receive address on Testnet: The command MUST be able to figure out the address type from the descriptor. +The command MUST return an object containing `{"address": "[the address]"}`. +As a sanity check, for devices that support this, it SHOULD ask the device to derive the address. + If contains a master key fingerprint, the command MUST fail if it does not match the fingerprint known by the device. If contains an xpub, the command MUST fail if it does not match the xpub known by the device. diff --git a/doc/files.md b/doc/files.md index ba03ede282..d47b8d46dc 100644 --- a/doc/files.md +++ b/doc/files.md @@ -28,7 +28,7 @@ Platform | Data directory path ---------|-------------------- Linux | `$HOME/.BGL/` macOS | `$HOME/Library/Application Support/BGL/` -Windows | `%APPDATA%\BGL\` [\[1\]](#note1) +Windows | `%LOCALAPPDATA%\BGL\` [\[1\]](#note1) 2. A custom data directory path can be specified with the `-datadir` option. diff --git a/doc/i2p.md b/doc/i2p.md index b6c07388b7..b769a74df4 100644 --- a/doc/i2p.md +++ b/doc/i2p.md @@ -79,8 +79,8 @@ one of the networks has issues. ## Persistent vs transient I2P addresses The first time Bitcoin Core connects to the I2P router, it automatically -generates a persistent I2P address and its corresponding private key by default -or if `-i2pacceptincoming=1` is set. The private key is saved in a file named +generates a persistent I2P address and its corresponding private key by default, +unless `-i2pacceptincoming=0` is set. The private key is saved in a file named `i2p_private_key` in the Bitcoin Core data directory. The persistent I2P address is used for making outbound connections and accepting inbound connections. diff --git a/doc/init.md b/doc/init.md index ab39371223..b476365434 100644 --- a/doc/init.md +++ b/doc/init.md @@ -35,8 +35,10 @@ it will use a special cookie file for authentication. The cookie is generated wi content when the daemon starts, and deleted when it exits. Read access to this file controls who can access it through RPC. -By default the cookie is stored in the data directory, but it's location can be overridden -with the option '-rpccookiefile'. +By default the cookie is stored in the data directory, but its location can be +overridden with the option `-rpccookiefile`. Default file permissions for the +cookie are "owner" (i.e. user read/writeable) via default application-wide file +umask of `0077`, but these can be overridden with the `-rpccookieperms` option. This allows for running BGLd without having to do any manual configuration. diff --git a/doc/man/Makefile b/doc/man/Makefile index e97ad8c39e..a951fa47af 100644 --- a/doc/man/Makefile +++ b/doc/man/Makefile @@ -69,10 +69,10 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/bitcoin -pkgincludedir = $(includedir)/bitcoin -pkglibdir = $(libdir)/bitcoin -pkglibexecdir = $(libexecdir)/bitcoin +pkgdatadir = $(datadir)/BGL +pkgincludedir = $(includedir)/BGL +pkglibdir = $(libdir)/BGL +pkglibexecdir = $(libexecdir)/BGL am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -97,7 +97,6 @@ subdir = doc/man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build-aux/m4/BGL_find_bdb48.m4 \ $(top_srcdir)/build-aux/m4/BGL_qt.m4 \ - $(top_srcdir)/build-aux/m4/BGL_runtime_lib.m4 \ $(top_srcdir)/build-aux/m4/BGL_subdir_to_include.m4 \ $(top_srcdir)/build-aux/m4/ax_boost_base.m4 \ $(top_srcdir)/build-aux/m4/ax_check_compile_flag.m4 \ @@ -176,7 +175,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/emeka/buildtool/job/amhello/gitcoin/fn/bitgesell/build-aux/missing aclocal-1.16 AMTAR = $${TAR-tar} AM_DEFAULT_VERBOSITY = 0 -ANDROID_ARCH = AR = /usr/bin/ar ARFLAGS = cr ARM_CRC_CXXFLAGS = @@ -202,30 +200,30 @@ BGL_UTIL_NAME = BGL-util BGL_WALLET_TOOL_NAME = BGL-wallet BOOST_CPPFLAGS = -I/usr/include -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DBOOST_NO_CXX98_FUNCTION_BASE BREW = -CC = /usr/local/bin/ccache gcc +CC = /usr/local/bin/ccache clang CCACHE = /usr/local/bin/ccache CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -CLIENT_VERSION_BUILD = 0 +CLIENT_VERSION_BUILD = 13 CLIENT_VERSION_IS_RELEASE = false -CLIENT_VERSION_MAJOR = 1 -CLIENT_VERSION_MINOR = 12 +CLIENT_VERSION_MAJOR = 0 +CLIENT_VERSION_MINOR = 1 CLMUL_CXXFLAGS = -mpclmul COPYRIGHT_HOLDERS = The %s developers COPYRIGHT_HOLDERS_FINAL = The Bitgesell Core developers COPYRIGHT_HOLDERS_SUBSTITUTION = Bitgesell Core -COPYRIGHT_YEAR = 2023 +COPYRIGHT_YEAR = 2024 CORE_CPPFLAGS = -DHAVE_BUILD_INFO -DPROVIDE_FUZZ_MAIN_FUNCTION -CORE_CXXFLAGS = -fno-extended-identifiers +CORE_CXXFLAGS = -g -O2 CORE_LDFLAGS = COV_TOOL = COV_TOOL_WRAPPER = -CPP = gcc -E +CPP = clang -E CPPFLAGS = -CXX = /usr/local/bin/ccache g++ -std=c++17 -CXXCPP = g++ -std=c++17 -E +CXX = /usr/local/bin/ccache clang++-17 -std=c++20 +CXXCPP = clang++-17 -std=c++20 -E CXXDEPMODE = depmode=gcc3 -CXXFLAGS = -g -O2 +CXXFLAGS = CYGPATH_W = echo DEBUG_CPPFLAGS = -fmacro-prefix-map=$(abs_top_srcdir)=. DEBUG_CXXFLAGS = -fdebug-prefix-map=$(abs_top_srcdir)=. @@ -251,26 +249,21 @@ FGREP = /bin/grep -F GCOV = /usr/bin/gcov GENHTML = GIT = /usr/bin/git -GPROF_CXXFLAGS = -GPROF_LDFLAGS = GREP = /bin/grep HARDENED_CPPFLAGS = -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -HARDENED_CXXFLAGS = -fstack-reuse=none -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection +HARDENED_CXXFLAGS = -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection HARDENED_LDFLAGS = -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -pie HAVE_BUILTIN_PREFETCH = 1 -HAVE_CXX17 = 1 -HAVE_CXX20 = +HAVE_CXX20 = 1 HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR = HAVE_FDATASYNC = 1 HAVE_FULLFSYNC = 0 -HAVE_GMTIME_R = HAVE_MM_PREFETCH = 1 HAVE_O_CLOEXEC = 1 HAVE_STRONG_GETAUXVAL = 1 HEXDUMP = /usr/bin/hexdump INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_NAME_TOOL = INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s @@ -290,8 +283,6 @@ LLVM_COV = /usr/bin/llvm-cov LN_S = ln -s LRELEASE = /usr/lib/x86_64-linux-gnu/qt5/bin/lrelease LTLIBOBJS = -LTO_CXXFLAGS = -LTO_LDFLAGS = LT_SYS_LIBRARY_PATH = LUPDATE = /usr/lib/x86_64-linux-gnu/qt5/bin/lupdate MAINT = @@ -302,7 +293,7 @@ MINIUPNPC_CPPFLAGS = MINIUPNPC_LIBS = MKDIR_P = /bin/mkdir -p MOC = /usr/lib/x86_64-linux-gnu/qt5/bin/moc -MOC_DEFS = -DHAVE_CONFIG_H -I$(srcdir) +MOC_DEFS = -I$(srcdir) MPGEN_PREFIX = NATPMP_CPPFLAGS = NATPMP_LIBS = @@ -310,32 +301,31 @@ NM = /usr/bin/nm -B NMEDIT = NOWARN_CXXFLAGS = -Wno-unused-parameter OBJCOPY = /usr/bin/objcopy -OBJCXX = g++ -std=c++17 +OBJCXX = clang++-17 -std=c++20 OBJCXXDEPMODE = depmode=gcc3 -OBJCXXFLAGS = -OBJDUMP = objdump +OBJCXXFLAGS = -g -O2 +OBJDUMP = /usr/bin/objdump OBJEXT = o OTOOL = OTOOL64 = -PACKAGE = bitgesell +PACKAGE = BGL PACKAGE_BUGREPORT = https://github.com/BitgesellOfficial/bitgesell/issues PACKAGE_NAME = Bitgesell Core -PACKAGE_STRING = Bitgesell Core 0.1.12 +PACKAGE_STRING = Bitgesell Core 0.1.11 PACKAGE_TARNAME = BGL PACKAGE_URL = https://bitgesell.ca/ -PACKAGE_VERSION = 0.1.12 +PACKAGE_VERSION = 0.1.11 PATH_SEPARATOR = : PIC_FLAGS = -fPIC PIE_FLAGS = -fPIE PKG_CONFIG = env PKG_CONFIG_PATH=/usr/local/lib/pkgconfig: /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = /usr/local/lib/pkgconfig: -PTHREAD_CC = gcc +PTHREAD_CC = clang PTHREAD_CFLAGS = -pthread -PTHREAD_CXX = g++ -std=c++17 +PTHREAD_CXX = clang++-17 -std=c++20 PTHREAD_LIBS = -lpthread -PYTHON = /home/emeka/.pyenv/shims/python3.8 -PYTHONPATH = +PYTHON = /home/emeka/.pyenv/shims/python3.9 QR_CFLAGS = QR_LIBS = -lqrencode QT_ACCESSIBILITY_CFLAGS = @@ -351,8 +341,6 @@ QT_DEVICEDISCOVERY_CFLAGS = QT_DEVICEDISCOVERY_LIBS = QT_EDID_CFLAGS = QT_EDID_LIBS = -QT_EGL_CFLAGS = -QT_EGL_LIBS = QT_EVENTDISPATCHER_CFLAGS = QT_EVENTDISPATCHER_LIBS = QT_FB_CFLAGS = @@ -389,7 +377,6 @@ QT_XCBQPA_LIBS = RANLIB = ranlib RCC = /usr/lib/x86_64-linux-gnu/qt5/bin/rcc RELDFLAGS = -RUNTIME_LDFLAGS = SANITIZER_CXXFLAGS = SANITIZER_LDFLAGS = SED = /bin/sed @@ -406,12 +393,12 @@ USE_BDB = USE_QRCODE = USE_SQLITE = USE_UPNP = -VERSION = 0.1.12 -WARN_CXXFLAGS = -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough +VERSION = 0.1.11 +WARN_CXXFLAGS = -Wall -Wextra -Wgnu -Wformat -Wformat-security -Wvla -Wshadow-field -Wthread-safety -Wloop-analysis -Wredundant-decls -Wunused-member-function -Wdate-time -Wconditional-uninitialized -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wdocumentation -Wself-assign WINDRES = X86_SHANI_CXXFLAGS = -msse4 -msha XGETTEXT = /usr/bin/xgettext -XORRISOFS = +ZIP = ZMQ_CFLAGS = -isystem /usr/include/mit-krb5 -I/usr/local/include -I/usr/include/pgm-5.2 ZMQ_LIBS = -lzmq abs_builddir = /home/emeka/buildtool/job/amhello/gitcoin/fn/bitgesell/doc/man @@ -419,8 +406,8 @@ abs_srcdir = /home/emeka/buildtool/job/amhello/gitcoin/fn/bitgesell/doc/man abs_top_builddir = /home/emeka/buildtool/job/amhello/gitcoin/fn/bitgesell abs_top_srcdir = /home/emeka/buildtool/job/amhello/gitcoin/fn/bitgesell ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_CXX = g++ +ac_ct_CC = clang +ac_ct_CXX = ac_ct_DUMPBIN = ac_ct_OBJCXX = am__include = include diff --git a/doc/managing-wallets.md b/doc/managing-wallets.md index 22e006c963..1cfd2e5123 100644 --- a/doc/managing-wallets.md +++ b/doc/managing-wallets.md @@ -20,7 +20,7 @@ By default, wallets are created in the `wallets` folder of the data directory, w | Operating System | Default wallet directory | | -----------------|:------------------------------------------------------------| | Linux | `/home//.bitcoin/wallets` | -| Windows | `C:\Users\\AppData\Roaming\Bitcoin\wallets` | +| Windows | `C:\Users\\AppData\Local\Bitcoin\wallets` | | macOS | `/Users//Library/Application Support/Bitcoin/wallets` | ### 1.2 Encrypting the Wallet @@ -122,6 +122,22 @@ $ bitcoin-cli -rpcwallet="restored-wallet" getwalletinfo The restored wallet can also be loaded in the GUI via `File` ->`Open wallet`. +## Wallet Passphrase + +Understanding wallet security is crucial for safely storing your Bitcoin. A key aspect is the wallet passphrase, used for encryption. Let's explore its nuances, role, encryption process, and limitations. + +- **Not the Seed:** +The wallet passphrase and the seed are two separate components in wallet security. The seed, or HD seed, functions as a master key for deriving private and public keys in a hierarchical deterministic (HD) wallet. In contrast, the passphrase serves as an additional layer of security specifically designed to secure the private keys within the wallet. The passphrase serves as a safeguard, demanding an additional layer of authentication to access funds in the wallet. + +- **Protection Against Unauthorized Access:** +The passphrase serves as a protective measure, securing your funds in situations where an unauthorized user gains access to your unlocked computer or device while your wallet application is active. Without the passphrase, they would be unable to access your wallet's funds or execute transactions. However, it's essential to be aware that someone with access can potentially compromise the security of your passphrase by installing a keylogger. + +- **Doesn't Encrypt Metadata or Public Keys:** +It's important to note that the passphrase primarily secures the private keys and access to funds within the wallet. It does not encrypt metadata associated with transactions or public keys. Information about your transaction history and the public keys involved may still be visible. + +- **Risk of Fund Loss if Forgotten or Lost:** +If the wallet passphrase is too complex and is subsequently forgotten or lost, there is a risk of losing access to the funds permanently. A forgotten passphrase will result in the inability to unlock the wallet and access the funds. + ## Migrating Legacy Wallets to Descriptor Wallets Legacy wallets (traditional non-descriptor wallets) can be migrated to become Descriptor wallets diff --git a/doc/policy/mempool-replacements.md b/doc/policy/mempool-replacements.md index 3fd7ff2ad2..d5642eaccc 100644 --- a/doc/policy/mempool-replacements.md +++ b/doc/policy/mempool-replacements.md @@ -12,7 +12,7 @@ other consensus and policy rules, each of the following conditions are met: 1. The directly conflicting transactions all signal replaceability explicitly. A transaction is signaling BIP125 replaceability if any of its inputs have an nSequence number less than (0xffffffff - 1). - A transaction also signals replaceability if its nVersion field is set to 3. + A transaction also signals replaceability if its version field is set to 3. *Rationale*: See [BIP125 explanation](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki#motivation). diff --git a/doc/policy/packages.md b/doc/policy/packages.md index dba270e494..9b321799f1 100644 --- a/doc/policy/packages.md +++ b/doc/policy/packages.md @@ -36,10 +36,29 @@ The following rules are enforced for all packages: * Packages cannot have conflicting transactions, i.e. no two transactions in a package can spend the same inputs. Packages cannot have duplicate transactions. (#20833) -* No transaction in a package can conflict with a mempool transaction. Replace By Fee is - currently disabled for packages. (#20833) +* Only limited package replacements are currently considered. (#28984) - - Package RBF may be enabled in the future. + - All direct conflicts must signal replacement (or the node must have `-mempoolfullrbf=1` set). + + - Packages are 1-parent-1-child, with no in-mempool ancestors of the package. + + - All conflicting clusters (connected components of mempool transactions) must be clusters of up to size 2. + + - No more than MAX_REPLACEMENT_CANDIDATES transactions can be replaced, analogous to + regular [replacement rule](./mempool-replacements.md) 5). + + - Replacements must pay more total total fees at the incremental relay fee (analogous to + regular [replacement rules](./mempool-replacements.md) 3 and 4). + + - Parent feerate must be lower than package feerate. + + - Must improve [feerate diagram](https://delvingbitcoin.org/t/mempool-incentive-compatibility/553). (#29242) + + - *Rationale*: Basic support for package RBF can be used by wallets + by making chains of no longer than two, then directly conflicting + those chains when needed. Combined with TRUC transactions this can + result in more robust fee bumping. More general package RBF may be + enabled in the future. * When packages are evaluated against ancestor/descendant limits, the union of all transactions' descendants and ancestors is considered. (#21800) @@ -48,8 +67,13 @@ The following rules are enforced for all packages: heavily connected, i.e. some transaction in the package is the ancestor or descendant of all the other transactions. -The following rules are only enforced for packages to be submitted to the mempool (not enforced for -test accepts): +* [CPFP Carve Out](./mempool-limits.md#CPFP-Carve-Out) is disabled in packaged contexts. (#21800) + + - *Rationale*: This carve out cannot be accurately applied when there are multiple transactions' + ancestors and descendants being considered at the same time. + +The following rules are only enforced for packages to be submitted to the mempool (not +enforced for test accepts): * Packages must be child-with-unconfirmed-parents packages. This also means packages must contain at least 2 transactions. (#22674) diff --git a/doc/release-28984.md b/doc/release-28984.md new file mode 100644 index 0000000000..3da64f6578 --- /dev/null +++ b/doc/release-28984.md @@ -0,0 +1,6 @@ +P2P and network changes +----------------------- + +- Limited package RBF is now enabled, where the proposed conflicting package would result in + a connected component, aka cluster, of size 2 in the mempool. All clusters being conflicted + against must be of size 2 or lower. diff --git a/doc/release-notes-27101.md b/doc/release-notes-27101.md new file mode 100644 index 0000000000..7ce1e9a8c1 --- /dev/null +++ b/doc/release-notes-27101.md @@ -0,0 +1,6 @@ +JSON-RPC +-------- + +The JSON-RPC server now recognizes JSON-RPC 2.0 requests and responds with +strict adherence to the [specification](https://www.jsonrpc.org/specification). +See [JSON-RPC-interface.md](/doc/JSON-RPC-interface.md#json-rpc-11-vs-20) for details. \ No newline at end of file diff --git a/doc/release-notes-27679.md b/doc/release-notes-27679.md new file mode 100644 index 0000000000..dbbb30428c --- /dev/null +++ b/doc/release-notes-27679.md @@ -0,0 +1,2 @@ +- unix socket paths are now accepted for `-zmqpubrawblock` and `-zmqpubrawtx` with +the format `-zmqpubrawtx=unix:/path/to/file` \ No newline at end of file diff --git a/doc/release-notes-29091-29165.md b/doc/release-notes-29091-29165.md new file mode 100644 index 0000000000..e13d29adc6 --- /dev/null +++ b/doc/release-notes-29091-29165.md @@ -0,0 +1,5 @@ +Build +----- + +GCC 11.1 or later, or Clang 16.0 or later, +are now required to compile Bitcoin Core. diff --git a/doc/release-notes-29612.md b/doc/release-notes-29612.md new file mode 100644 index 0000000000..31af3cab09 --- /dev/null +++ b/doc/release-notes-29612.md @@ -0,0 +1,8 @@ +RPC +--- + +- The `dumptxoutset` RPC now returns the UTXO set dump in a new and + improved format. At the same time the `loadtxoutset` RPC now + expects this new format in dumps it tries to load. Dumps with the + old format are no longer supported and need to be recreated using + the new format in order to be usable. diff --git a/doc/release-notes-29845.md b/doc/release-notes-29845.md new file mode 100644 index 0000000000..4994d0a34d --- /dev/null +++ b/doc/release-notes-29845.md @@ -0,0 +1,8 @@ +RPC +--- + +- the `warnings` field in `getblockchaininfo`, `getmininginfo` and + `getnetworkinfo` now returns all the active node warnings as an array + of strings, instead of just a single warning. The current behaviour + can temporarily be restored by running bitcoind with configuration + option `-deprecatedrpc=warnings`. \ No newline at end of file diff --git a/doc/release-notes-29987.md b/doc/release-notes-29987.md new file mode 100644 index 0000000000..4d4c2358d1 --- /dev/null +++ b/doc/release-notes-29987.md @@ -0,0 +1,6 @@ +Compatibility +============= + +The minimum required glibc to run Bitcoin Core is now +2.31. This means that RHEL 8 and Ubuntu 18.04 (Bionic) +are no-longer supported. (#29987) \ No newline at end of file diff --git a/doc/release-notes-30058.md b/doc/release-notes-30058.md new file mode 100644 index 0000000000..47e7ae704e --- /dev/null +++ b/doc/release-notes-30058.md @@ -0,0 +1,7 @@ +- When running with -alertnotify, an alert can now be raised multiple +times instead of just once. Previously, it was only raised when unknown +new consensus rules were activated, whereas the scope has now been +increased to include all kernel warnings. Specifically, alerts will now +also be raised when an invalid chain with a large amount of work has +been detected. Additional warnings may be added in the future. +(#30058) diff --git a/doc/release-notes-30192.md b/doc/release-notes-30192.md new file mode 100644 index 0000000000..2a6c17d455 --- /dev/null +++ b/doc/release-notes-30192.md @@ -0,0 +1,6 @@ +Build +----- + +`--enable-lcov-branch-coverage` has been removed, given +incompatibilities between lcov version 1 & 2. `LCOV_OPTS` +should be used to set any options instead. diff --git a/doc/release-notes/release-notes-25.2.md b/doc/release-notes/release-notes-25.2.md new file mode 100644 index 0000000000..3f050ebaef --- /dev/null +++ b/doc/release-notes/release-notes-25.2.md @@ -0,0 +1,74 @@ +25.2 Release Notes +================== + +Bitcoin Core version 25.2 is now available from: + + + +This release includes various bug fixes and performance +improvements, as well as updated translations. + +Please report bugs using the issue tracker at GitHub: + + + +To receive security and update notifications, please subscribe to: + + + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes in some cases), then run the +installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS) +or `bitcoind`/`bitcoin-qt` (on Linux). + +Upgrading directly from a version of Bitcoin Core that has reached its EOL is +possible, but it might take some time if the data directory needs to be migrated. Old +wallet versions of Bitcoin Core are generally supported. + +Compatibility +============== + +Bitcoin Core is supported and extensively tested on operating systems +using the Linux kernel, macOS 10.15+, and Windows 7 and newer. Bitcoin +Core should also work on most other Unix-like systems but is not as +frequently tested on them. It is not recommended to use Bitcoin Core on +unsupported systems. + +Notable changes +=============== + +### Gui + +- gui#774 Fix crash on selecting "Mask values" in transaction view + +### RPC + +- #29003 rpc: fix getrawtransaction segfault + +### Wallet + +- #29176 wallet: Fix use-after-free in WalletBatch::EraseRecords +- #29510 wallet: `getrawchangeaddress` and `getnewaddress` failures should not affect keypools for descriptor wallets + +### P2P and network changes + +- #29412 p2p: Don't process mutated blocks +- #29524 p2p: Don't consider blocks mutated if they don't connect to known prev block + +Credits +======= + +Thanks to everyone who directly contributed to this release: + +- Martin Zumsande +- Sebastian Falbesoner +- MarcoFalke +- UdjinM6 +- dergoegge +- Greg Sanders + +As well as to everyone that helped with translations on +[Transifex](https://www.transifex.com/bitcoin/bitcoin/). diff --git a/doc/release-notes/release-notes-26.1.md b/doc/release-notes/release-notes-26.1.md new file mode 100644 index 0000000000..b5c6e63007 --- /dev/null +++ b/doc/release-notes/release-notes-26.1.md @@ -0,0 +1,106 @@ +26.1 Release Notes +================== + +Bitcoin Core version 26.1 is now available from: + + + +This release includes various bug fixes and performance +improvements, as well as updated translations. + +Please report bugs using the issue tracker at GitHub: + + + +To receive security and update notifications, please subscribe to: + + + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes in some cases), then run the +installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS) +or `bitcoind`/`bitcoin-qt` (on Linux). + +Upgrading directly from a version of Bitcoin Core that has reached its EOL is +possible, but it might take some time if the data directory needs to be migrated. Old +wallet versions of Bitcoin Core are generally supported. + +Compatibility +============== + +Bitcoin Core is supported and extensively tested on operating systems +using the Linux kernel, macOS 11.0+, and Windows 7 and newer. Bitcoin +Core should also work on most other Unix-like systems but is not as +frequently tested on them. It is not recommended to use Bitcoin Core on +unsupported systems. + +Notable changes +=============== + +### Wallet + +- #28994 wallet: skip BnB when SFFO is enabled +- #28920 wallet: birth time update during tx scanning +- #29176 wallet: Fix use-after-free in WalletBatch::EraseRecords +- #29510 wallet: getrawchangeaddress and getnewaddress failures should not affect keypools for descriptor wallets + +### RPC + +- #29003 rpc: fix getrawtransaction segfault +- #28784 rpc: keep .cookie file if it was not generated + +### Logs + +- #29227 log mempool loading progress + +### P2P and network changes + +- #29200 net: create I2P sessions using both ECIES-X25519 and ElGamal encryption +- #29412 p2p: Don't process mutated blocks +- #29524 p2p: Don't consider blocks mutated if they don't connect to known prev block + +### Build + +- #29127 Use hardened runtime on macOS release builds. +- #29195 build: Fix -Xclang -internal-isystem option + +### CI + +- #28992 ci: Use Ubuntu 24.04 Noble for asan,tsan,tidy,fuzz +- #29080 ci: Set HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK to avoid unrelated failures +- #29610 ci: Fix "macOS native" job + +### Miscellaneous + +- #28391 refactor: Simplify CTxMempool/BlockAssembler fields, remove some external mapTx access +- #29179 test: wallet rescan with reorged parent + IsFromMe child in mempool +- #28791 snapshots: don't core dump when running -checkblockindex after loadtxoutset +- #29357 test: Drop x modifier in fsbridge::fopen call for MinGW builds +- #29529 fuzz: restrict fopencookie usage to Linux & FreeBSD + +Credits +======= + +Thanks to everyone who directly contributed to this release: + +- dergoegge +- fanquake +- furszy +- glozow +- Greg Sanders +- Hennadii Stepanov +- Jon Atack +- MarcoFalke +- Mark Friedenbach +- Martin Zumsande +- Murch +- Roman Zeyde +- stickies-v +- UdjinM6 + +As well as to everyone that helped with translations on +[Transifex](https://www.transifex.com/bitcoin/bitcoin/). + diff --git a/doc/release-notes/release-notes-27.0.md b/doc/release-notes/release-notes-27.0.md new file mode 100644 index 0000000000..5060068328 --- /dev/null +++ b/doc/release-notes/release-notes-27.0.md @@ -0,0 +1,217 @@ +Bitcoin Core version 27.0 is now available from: + + + +This release includes new features, various bug fixes and performance +improvements, as well as updated translations. + +Please report bugs using the issue tracker at GitHub: + + + +To receive security and update notifications, please subscribe to: + + + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes in some cases), then run the +installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS) +or `bitcoind`/`bitcoin-qt` (on Linux). + +Upgrading directly from a version of Bitcoin Core that has reached its EOL is +possible, but it might take some time if the data directory needs to be migrated. Old +wallet versions of Bitcoin Core are generally supported. + +Compatibility +============== + +Bitcoin Core is supported and extensively tested on operating systems +using the Linux Kernel 3.17+, macOS 11.0+, and Windows 7 and newer. Bitcoin +Core should also work on most other Unix-like systems but is not as +frequently tested on them. It is not recommended to use Bitcoin Core on +unsupported systems. + +Notable changes +=============== + +libbitcoinconsensus +------------------- + +- libbitcoinconsensus is deprecated and will be removed for v28. This library 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 Taproot is its final consensus update. + + In the future, libbitcoinkernel will provide a much more useful API that is + aware of the UTXO set, and therefore be able to fully validate transactions and + blocks. (#29189) + +mempool.dat compatibility +------------------------- + +- The `mempool.dat` file created by -persistmempool or the savemempool RPC will + be written in a new format. This new format includes the XOR'ing of transaction + contents to mitigate issues where external programs (such as anti-virus) attempt + to interpret and potentially modify the file. + + This new format can not be read by previous software releases. To allow for a + downgrade, a temporary setting `-persistmempoolv1` has been added to fall back + to the legacy format. (#28207) + +P2P and network changes +----------------------- + +- BIP324 v2 transport is now enabled by default. It remains possible to disable v2 + by running with `-v2transport=0`. (#29347) +- Manual connection options (`-connect`, `-addnode` and `-seednode`) will + now follow `-v2transport` to connect with v2 by default. They will retry with + v1 on failure. (#29058) + +- Network-adjusted time has been removed from consensus code. It is replaced + with (unadjusted) system time. The warning for a large median time offset + (70 minutes or more) is kept. This removes the implicit security assumption of + requiring an honest majority of outbound peers, and increases the importance + of the node operator ensuring their system time is (and stays) correct to not + fall out of consensus with the network. (#28956) + +Mempool Policy Changes +---------------------- + +- Opt-in Topologically Restricted Until Confirmation (TRUC) Transactions policy + (aka v3 transaction policy) is available for use on test networks when + `-acceptnonstdtxn=1` is set. By setting the transaction version number to 3, TRUC transactions + request the application of limits on spending of their unconfirmed outputs. These + restrictions simplify the assessment of incentive compatibility of accepting or + replacing TRUC transactions, thus ensuring any replacements are more profitable for + the node and making fee-bumping more reliable. TRUC transactions are currently + nonstandard and can only be used on test networks where the standardness rules are + relaxed or disabled (e.g. with `-acceptnonstdtxn=1`). (#28948) + +External Signing +---------------- + +- Support for external signing on Windows has been disabled. It will be re-enabled + once the underlying dependency (Boost Process), has been replaced with a different + library. (#28967) + +Updated RPCs +------------ + +- The addnode RPC now follows the `-v2transport` option (now on by default, see above) for making connections. + It remains possible to specify the transport type manually with the v2transport argument of addnode. (#29239) + +Build System +------------ + +- A C++20 capable compiler is now required to build Bitcoin Core. (#28349) +- MacOS releases are configured to use the hardened runtime libraries (#29127) + +Wallet +------ + +- The CoinGrinder coin selection algorithm has been introduced to mitigate unnecessary + large input sets and lower transaction costs at high feerates. CoinGrinder + searches for the input set with minimal weight. Solutions found by + CoinGrinder will produce a change output. CoinGrinder is only active at + elevated feerates (default: 30+ sat/vB, based on `-consolidatefeerate`×3). (#27877) +- The Branch And Bound coin selection algorithm will be disabled when the subtract fee + from outputs feature is used. (#28994) +- If the birth time of a descriptor is detected to be later than the first transaction + involving that descriptor, the birth time will be reset to the earlier time. (#28920) + +Low-level changes +================= + +Pruning +------- + +- When pruning during initial block download, more blocks will be pruned at each + flush in order to speed up the syncing of such nodes. (#20827) + +Init +---- + +- Various fixes to prevent issues where subsequent instances of Bitcoin Core would + result in deletion of files in use by an existing instance. (#28784, #28946) +- Improved handling of empty `settings.json` files. (#29144) + +Credits +======= + +Thanks to everyone who directly contributed to this release: + +- 22388o⚡️ +- Aaron Clauson +- Amiti Uttarwar +- Andrew Toth +- Anthony Towns +- Antoine Poinsot +- Ava Chow +- Brandon Odiwuor +- brunoerg +- Chris Stewart +- Cory Fields +- dergoegge +- djschnei21 +- Fabian Jahr +- fanquake +- furszy +- Gloria Zhao +- Greg Sanders +- Hennadii Stepanov +- Hernan Marino +- iamcarlos94 +- ismaelsadeeq +- Jameson Lopp +- Jesse Barton +- John Moffett +- Jon Atack +- josibake +- jrakibi +- Justin Dhillon +- Kashif Smith +- kevkevin +- Kristaps Kaupe +- L0la L33tz +- Luke Dashjr +- Lőrinc +- marco +- MarcoFalke +- Mark Friedenbach +- Marnix +- Martin Leitner-Ankerl +- Martin Zumsande +- Max Edwards +- Murch +- muxator +- naiyoma +- Nikodemas Tuckus +- ns-xvrn +- pablomartin4btc +- Peter Todd +- Pieter Wuille +- Richard Myers +- Roman Zeyde +- Russell Yanofsky +- Ryan Ofsky +- Sebastian Falbesoner +- Sergi Delgado Segura +- Sjors Provoost +- stickies-v +- stratospher +- Supachai Kheawjuy +- TheCharlatan +- UdjinM6 +- Vasil Dimov +- w0xlt +- willcl-ark + + +As well as to everyone that helped with translations on +[Transifex](https://www.transifex.com/bitcoin/bitcoin/). diff --git a/doc/release-notes/release-notes-27.1.md b/doc/release-notes/release-notes-27.1.md new file mode 100644 index 0000000000..b19d70da33 --- /dev/null +++ b/doc/release-notes/release-notes-27.1.md @@ -0,0 +1,114 @@ +27.1 Release Notes +===================== + +Bitcoin Core version 27.1 is now available from: + + + +This release includes various bug fixes and performance +improvements, as well as updated translations. + +Please report bugs using the issue tracker at GitHub: + + + +To receive security and update notifications, please subscribe to: + + + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes in some cases), then run the +installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS) +or `bitcoind`/`bitcoin-qt` (on Linux). + +Upgrading directly from a version of Bitcoin Core that has reached its EOL is +possible, but it might take some time if the data directory needs to be migrated. Old +wallet versions of Bitcoin Core are generally supported. + +Compatibility +============== + +Bitcoin Core is supported and extensively tested on operating systems +using the Linux Kernel 3.17+, macOS 11.0+, and Windows 7 and newer. Bitcoin +Core should also work on most other Unix-like systems but is not as +frequently tested on them. It is not recommended to use Bitcoin Core on +unsupported systems. + +Notable changes +=============== + +### Miniscript + +- #29853 sign: don't assume we are parsing a sane TapMiniscript + +### RPC + +- #29869 rpc, bugfix: Enforce maximum value for setmocktime +- #29870 rpc: Reword SighashFromStr error message +- #30094 rpc: move UniValue in blockToJSON + +### Index + +- #29776 Fix #29767, set m_synced = true after Commit() + +### Gui + +- #gui812 Fix create unsigned transaction fee bump +- #gui813 Don't permit port in proxy IP option + +### Test + +- #29892 test: Fix failing univalue float test + +### P2P + +- #30085 p2p: detect addnode cjdns peers in GetAddedNodeInfo() + +### Build + +- #29747 depends: fix mingw-w64 Qt DEBUG=1 build +- #29859 build: Fix false positive CHECK_ATOMIC test +- #29985 depends: Fix build of Qt for 32-bit platforms with recent glibc +- #30097 crypto: disable asan for sha256_sse4 with clang and -O0 +- #30151 depends: Fetch miniupnpc sources from an alternative website +- #30216 build: Fix building fuzz binary on on SunOS / illumos +- #30217 depends: Update Boost download link + +### Doc + +- #29934 doc: add LLVM instruction for macOS < 13 + +### CI + +- #29856 ci: Bump s390x to ubuntu:24.04 + +### Misc + +- #29691 Change Luke Dashjr seed to dashjr-list-of-p2p-nodes.us +- #30149 contrib: Renew Windows code signing certificate + +Credits +======= + +Thanks to everyone who directly contributed to this release: + +- Antoine Poinsot +- Ava Chow +- Cory Fields +- dergoegge +- fanquake +- furszy +- Hennadii Stepanov +- Jon Atack +- laanwj +- Luke Dashjr +- MarcoFalke +- nanlour +- Sjors Provoost +- willcl-ark + +As well as to everyone that helped with translations on +[Transifex](https://www.transifex.com/bitcoin/bitcoin/). diff --git a/doc/release-notes/release-notes-27064.md b/doc/release-notes/release-notes-27064.md new file mode 100644 index 0000000000..be3ecee1b8 --- /dev/null +++ b/doc/release-notes/release-notes-27064.md @@ -0,0 +1,7 @@ +Files +----- + +The default data directory on Windows has been moved from `C:\Users\Username\AppData\Roaming\Bitcoin` +to `C:\Users\Username\AppData\Local\Bitcoin`. Bitcoin Core will check the existence +of the old directory first and continue to use that directory for backwards +compatibility if it is present. \ No newline at end of file diff --git a/doc/release-process.md b/doc/release-process.md index bf7e2de070..b4dd7f29ee 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -1,4 +1,4 @@ -# Release Process +# Release process This document outlines the process for releasing versions of the form `$MAJOR.$MINOR.$PATCH`. @@ -6,19 +6,21 @@ We distinguish between two types of releases: *regular* and *maintenance* releas Regular releases are releases of a new major or minor version as well as patches of the most recent release. Maintenance releases, on the other hand, are required for patches of older releases. -You should coordinate with the other maintainers on the release date, if possible. -This date will be part of the release entry in [CHANGELOG.md](../CHANGELOG.md) and it should match the dates of the remaining steps in the release process (including the date of the tag and the GitHub release). -It is best if the maintainers are present during the release, so they can help ensure that the process is followed correctly and, in the case of a regular release, they are aware that they should not modify the master branch between merging the PR in step 1 and the PR in step 3. +* Update release candidate version in `configure.ac` (`CLIENT_VERSION_RC`). +* Update manpages (after rebuilding the binaries), see [gen-manpages.py](https://github.com/bitcoin/bitcoin/blob/master/contrib/devtools/README.md#gen-manpagespy). +* Update bitcoin.conf and commit changes if they exist, see [gen-bitcoin-conf.sh](https://github.com/bitcoin/bitcoin/blob/master/contrib/devtools/README.md#gen-bitcoin-confsh). This process also assumes that there will be no minor releases for old major releases. * Update [bips.md](bips.md) to account for changes since the last release. * Update version in `configure.ac` (don't forget to set `CLIENT_VERSION_RC` to `0`). * Update manpages (see previous section) -* Write release notes (see "Write the release notes" below). +* Write release notes (see "Write the release notes" below) in doc/release-notes.md. If necessary, + archive the previous release notes as doc/release-notes/release-notes-${VERSION}.md. + +## Sanity checks +Perform these checks when reviewing the release PR (see below): -## Sanity Checks -Perform these checks before creating a release: * On both the master branch and the new release branch: - update `CLIENT_VERSION_MAJOR` in [`configure.ac`](../configure.ac) @@ -29,6 +31,7 @@ Perform these checks before creating a release: #### Before branch-off +* Update translations see [translation_process.md](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#synchronising-translations). * Update hardcoded [seeds](/contrib/seeds/README.md), see [this pull request](https://github.com/bitcoin/bitcoin/pull/27488) for an example. * Update the following variables in [`src/kernel/chainparams.cpp`](/src/kernel/chainparams.cpp) for mainnet, testnet, and signet: - `m_assumed_blockchain_size` and `m_assumed_chain_state_size` with the current size plus some overhead (see @@ -121,7 +124,7 @@ git fetch origin "v${VERSION}" git checkout "v${VERSION}" popd ``` -<<<<<<< HEAD + Ensure your guix.sigs are up-to-date if you wish to `guix-verify` your builds against other `guix-attest` signatures. @@ -153,34 +156,38 @@ pushd ./guix.sigs git add "${VERSION}/${SIGNER}"/noncodesigned.SHA256SUMS{,.asc} git commit -m "Add attestations by ${SIGNER} for ${VERSION} non-codesigned" popd -======= + +1. Ensure `make distcheck` doesn't fail. + ```shell + ./autogen.sh && ./configure --enable-dev-mode && make distcheck + ``` + 2. Check installation with autotools: -```shell -dir=$(mktemp -d) -./autogen.sh && ./configure --prefix=$dir && make clean && make install && ls -RlAh $dir -gcc -o ecdsa examples/ecdsa.c $(PKG_CONFIG_PATH=$dir/lib/pkgconfig pkg-config --cflags --libs libsecp256k1) -Wl,-rpath,"$dir/lib" && ./ecdsa -``` + ```shell + dir=$(mktemp -d) + ./autogen.sh && ./configure --prefix=$dir && make clean && make install && ls -RlAh $dir + gcc -o ecdsa examples/ecdsa.c $(PKG_CONFIG_PATH=$dir/lib/pkgconfig pkg-config --cflags --libs libsecp256k1) -Wl,-rpath,"$dir/lib" && ./ecdsa + ``` 3. Check installation with CMake: -```shell -dir=$(mktemp -d) -build=$(mktemp -d) -cmake -B $build -DCMAKE_INSTALL_PREFIX=$dir && cmake --build $build --target install && ls -RlAh $dir -gcc -o ecdsa examples/ecdsa.c -I $dir/include -L $dir/lib*/ -l secp256k1 -Wl,-rpath,"$dir/lib",-rpath,"$dir/lib64" && ./ecdsa ->>>>>>> 29fde0223a... Squashed 'src/secp256k1/' changes from 199d27cea3..efe85c70a2 -``` -4. Use the [`check-abi.sh`](/tools/check-abi.sh) tool to ensure there are no unexpected ABI incompatibilities and that the version number and release notes accurately reflect all potential ABI changes. To run this tool, the `abi-dumper` and `abi-compliance-checker` packages are required. - -```shell -tools/check-abi.sh -``` + ```shell + dir=$(mktemp -d) + build=$(mktemp -d) + cmake -B $build -DCMAKE_INSTALL_PREFIX=$dir && cmake --build $build --target install && ls -RlAh $dir + gcc -o ecdsa examples/ecdsa.c -I $dir/include -L $dir/lib*/ -l secp256k1 -Wl,-rpath,"$dir/lib",-rpath,"$dir/lib64" && ./ecdsa + ``` +4. Use the [`check-abi.sh`](/tools/check-abi.sh) tool to verify that there are no unexpected ABI incompatibilities and that the version number and the release notes accurately reflect all potential ABI changes. To run this tool, the `abi-dumper` and `abi-compliance-checker` packages are required. + ```shell + tools/check-abi.sh + ``` -<<<<<<< HEAD Then open a Pull Request to the [guix.sigs repository](https://github.com/bitcoin-core/guix.sigs). ## Codesigning ### macOS codesigner only: Create detached macOS signatures (assuming [signapple](https://github.com/achow101/signapple/) is installed and up to date with master branch) +In the `guix-build-${VERSION}/output/x86_64-apple-darwin` and `guix-build-${VERSION}/output/arm64-apple-darwin` directories: + tar xf bitcoin-osx-unsigned.tar.gz ./detached-sig-create.sh /path/to/codesign.p12 Enter the keychain password and authorize the signature @@ -188,6 +195,8 @@ Then open a Pull Request to the [guix.sigs repository](https://github.com/bitcoi ### Windows codesigner only: Create detached Windows signatures +In the `guix-build-${VERSION}/output/x86_64-w64-mingw32` directory: + tar xf bitcoin-win-unsigned.tar.gz ./detached-sig-create.sh -key /path/to/codesign.key Enter the passphrase for the key when prompted @@ -195,18 +204,22 @@ Then open a Pull Request to the [guix.sigs repository](https://github.com/bitcoi ### Windows and macOS codesigners only: test code signatures It is advised to test that the code signature attaches properly prior to tagging by performing the `guix-codesign` step. -However if this is done, once the release has been tagged in the bitcoin-detached-sigs repo, the `guix-codesign` step must be performed again in order for the guix attestation to be valid when compared against the attestations of non-codesigner builds. +However if this is done, once the release has been tagged in the bitcoin-detached-sigs repo, the `guix-codesign` step must be performed again in order for the guix attestation to be valid when compared against the attestations of non-codesigner builds. The directories created by `guix-codesign` will need to be cleared prior to running `guix-codesign` again. ### Windows and macOS codesigners only: Commit the detached codesign payloads ```sh pushd ./bitcoin-detached-sigs -# checkout the appropriate branch for this release series -rm -rf ./* +# checkout or create the appropriate branch for this release series +git checkout --orphan +# if you are the macOS codesigner +rm -rf osx tar xf signature-osx.tar.gz +# if you are the windows codesigner +rm -rf win tar xf signature-win.tar.gz git add -A -git commit -m "point to ${VERSION}" +git commit -m ": {osx,win} signature for {rc,final}" git tag -s "v${VERSION}" HEAD git push the current branch and new tag popd @@ -236,45 +249,36 @@ popd Then open a Pull Request to the [guix.sigs repository](https://github.com/bitcoin-core/guix.sigs). -## After 3 or more people have guix-built and their results match +## After 6 or more people have guix-built and their results match -Combine the `all.SHA256SUMS.asc` file from all signers into `SHA256SUMS.asc`: +After verifying signatures, combine the `all.SHA256SUMS.asc` file from all signers into `SHA256SUMS.asc`: ```bash cat "$VERSION"/*/all.SHA256SUMS.asc > SHA256SUMS.asc ``` -- Upload to the bitcoincore.org server (`/var/www/bin/bitcoin-core-${VERSION}/`): - 1. The contents of each `./bitcoin/guix-build-${VERSION}/output/${HOST}/` directory, except for - `*-debug*` files. +- Upload to the bitcoincore.org server: + 1. The contents of each `./bitcoin/guix-build-${VERSION}/output/${HOST}/` directory. Guix will output all of the results into host subdirectories, but the SHA256SUMS file does not include these subdirectories. In order for downloads via torrent to verify without directory structure modification, all of the uploaded files need to be in the same directory as the SHA256SUMS file. - The `*-debug*` files generated by the guix build contain debug symbols - for troubleshooting by developers. It is assumed that anyone that is - interested in debugging can run guix to generate the files for - themselves. To avoid end-user confusion about which file to pick, as well - as save storage space *do not upload these to the bitcoincore.org server, - nor put them in the torrent*. - - ```sh - find guix-build-${VERSION}/output/ -maxdepth 2 -type f -not -name "SHA256SUMS.part" -and -not -name "*debug*" -exec scp {} user@bitcoincore.org:/var/www/bin/bitcoin-core-${VERSION} \; - ``` + Wait until all of these files have finished uploading before uploading the SHA256SUMS(.asc) files. 2. The `SHA256SUMS` file - 3. The `SHA256SUMS.asc` combined signature file you just created + 3. The `SHA256SUMS.asc` combined signature file you just created. -- Create a torrent of the `/var/www/bin/bitcoin-core-${VERSION}` directory such - that at the top level there is only one file: the `bitcoin-core-${VERSION}` - directory containing everything else. Name the torrent - `bitcoin-${VERSION}.torrent` (note that there is no `-core-` in this name). +- After uploading release candidate binaries, notify the bitcoin-core-dev mailing list and + bitcoin-dev group that a release candidate is available for testing. Include a link to the release + notes draft. - Optionally help seed this torrent. To get the `magnet:` URI use: +- The server will automatically create an OpenTimestamps file and torrent of the directory. + +- Optionally help seed this torrent. To get the `magnet:` URI use: ```sh transmission-show -m @@ -285,40 +289,41 @@ cat "$VERSION"/*/all.SHA256SUMS.asc > SHA256SUMS.asc Also put it into the `optional_magnetlink:` slot in the YAML file for bitcoincore.org. -- Update other repositories and websites for new version - - - bitcoincore.org blog post +- Archive the release notes for the new version to `doc/release-notes/release-notes-${VERSION}.md` + (branch `master` and branch of the release). - - bitcoincore.org maintained versions update: - [table](https://github.com/bitcoin-core/bitcoincore.org/commits/master/_includes/posts/maintenance-table.md) +- Update the bitcoincore.org website - - Delete post-EOL [release branches](https://github.com/bitcoin/bitcoin/branches/all) and create a tag `v${branch_name}-final`. + - blog post - - Delete ["Needs backport" labels](https://github.com/bitcoin/bitcoin/labels?q=backport) for non-existing branches. + - maintained versions [table](https://github.com/bitcoin-core/bitcoincore.org/commits/master/_includes/posts/maintenance-table.md) - - bitcoincore.org RPC documentation update + - RPC documentation update - See https://github.com/bitcoin-core/bitcoincore.org/blob/master/contrib/doc-gen/ + +- Update repositories + + - Delete post-EOL [release branches](https://github.com/bitcoin/bitcoin/branches/all) and create a tag `v${branch_name}-final`. + + - Delete ["Needs backport" labels](https://github.com/bitcoin/bitcoin/labels?q=backport) for non-existing branches. + - Update packaging repo - Push the flatpak to flathub, e.g. https://github.com/flathub/org.bitcoincore.bitcoin-qt/pull/2 - Push the snap, see https://github.com/bitcoin-core/packaging/blob/main/snap/local/build.md - - This repo - - - Archive the release notes for the new version to `doc/release-notes/` (branch `master` and branch of the release) - - - Create a [new GitHub release](https://github.com/BitgesellOfficial/bitgesell/releases/new) with a link to the archived release notes + - Create a [new GitHub release](https://github.com/bitcoin/bitcoin/releases/new) with a link to the archived release notes - Announce the release: - - bitcoin-dev and bitcoin-core-dev mailing list + - BGL-dev and BGL-core-dev mailing list - BGL Core announcements list https://bitgesell.ca/en/list/announcements/join/ - - Bitcoin Core Twitter https://twitter.com/bitcoincoreorg + - BGL Core Twitter https://twitter.com/bitgesell - Celebrate @@ -350,27 +355,29 @@ Notes: * adding a section for the release (make sure that the version number is a link to a diff between the previous and new version), * removing the `[Unreleased]` section header, and * including an entry for `### ABI Compatibility` if it doesn't exist, - * sets `_PKG_VERSION_IS_RELEASE` to `true` in `configure.ac`, and - * if this is not a patch release - * updates `_PKG_VERSION_*` and `_LIB_VERSION_*` in `configure.ac` and + * sets `_PKG_VERSION_IS_RELEASE` to `true` in `configure.ac`, and, + * if this is not a patch release, + * updates `_PKG_VERSION_*` and `_LIB_VERSION_*` in `configure.ac`, and * updates `project(libsecp256k1 VERSION ...)` and `${PROJECT_NAME}_LIB_VERSION_*` in `CMakeLists.txt`. -2. After the PR is merged, tag the commit and push it: +2. Perform the [sanity checks](#sanity-checks) on the PR branch. +3. After the PR is merged, tag the commit, and push the tag: ``` RELEASE_COMMIT= git tag -s v$MAJOR.$MINOR.$PATCH -m "libsecp256k1 $MAJOR.$MINOR.$PATCH" $RELEASE_COMMIT git push git@github.com:bitcoin-core/secp256k1.git v$MAJOR.$MINOR.$PATCH ``` -3. Open a PR to the master branch with a commit (using message `"release cleanup: bump version after $MAJOR.$MINOR.$PATCH"`, for example) that +4. Open a PR to the master branch with a commit (using message `"release cleanup: bump version after $MAJOR.$MINOR.$PATCH"`, for example) that * sets `_PKG_VERSION_IS_RELEASE` to `false` and increments `_PKG_VERSION_PATCH` and `_LIB_VERSION_REVISION` in `configure.ac`, * increments the `$PATCH` component of `project(libsecp256k1 VERSION ...)` and `${PROJECT_NAME}_LIB_VERSION_REVISION` in `CMakeLists.txt`, and * adds an `[Unreleased]` section header to the [CHANGELOG.md](../CHANGELOG.md). If other maintainers are not present to approve the PR, it can be merged without ACKs. -4. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). +5. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). +6. Send an announcement email to the bitcoin-dev mailing list. ## Maintenance release -Note that bugfixes only need to be backported to releases for which no compatible release without the bug exists. +Note that bug fixes need to be backported only to releases for which no compatible release without the bug exists. 1. If there's no maintenance branch `$MAJOR.$MINOR`, create one: ``` @@ -378,20 +385,18 @@ Note that bugfixes only need to be backported to releases for which no compatibl git push git@github.com:bitcoin-core/secp256k1.git $MAJOR.$MINOR ``` 2. Open a pull request to the `$MAJOR.$MINOR` branch that - * includes the bugfixes, + * includes the bug fixes, * finalizes the release notes similar to a regular release, * increments `_PKG_VERSION_PATCH` and `_LIB_VERSION_REVISION` in `configure.ac` and the `$PATCH` component of `project(libsecp256k1 VERSION ...)` and `${PROJECT_NAME}_LIB_VERSION_REVISION` in `CMakeLists.txt` (with commit message `"release: bump versions for $MAJOR.$MINOR.$PATCH"`, for example). -3. After the PRs are merged, update the release branch and tag the commit: +3. Perform the [sanity checks](#sanity-checks) on the PR branch. +4. After the PRs are merged, update the release branch, tag the commit, and push the tag: ``` git checkout $MAJOR.$MINOR && git pull git tag -s v$MAJOR.$MINOR.$PATCH -m "libsecp256k1 $MAJOR.$MINOR.$PATCH" - ``` -4. Push tag: - ``` git push git@github.com:bitcoin-core/secp256k1.git v$MAJOR.$MINOR.$PATCH ``` -5. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). -6. Open PR to the master branch that includes a commit (with commit message `"release notes: add $MAJOR.$MINOR.$PATCH"`, for example) that adds release notes to [CHANGELOG.md](../CHANGELOG.md). ->>>>>>> 29fde0223a... Squashed 'src/secp256k1/' changes from 199d27cea3..efe85c70a2 +6. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). +7. Send an announcement email to the bitcoin-dev mailing list. +8. Open PR to the master branch that includes a commit (with commit message `"release notes: add $MAJOR.$MINOR.$PATCH"`, for example) that adds release notes to [CHANGELOG.md](../CHANGELOG.md). diff --git a/share/qt/Info.plist b/share/qt/Info.plist index cadb13949a..5e3c43eee2 100644 --- a/share/qt/Info.plist +++ b/share/qt/Info.plist @@ -22,13 +22,13 @@ NSHumanReadableCopyright - 0.1.12, Copyright © 2009-2024 The Bitgesell Core developers + 0.1.13, Copyright © 2009-2024 The Bitgesell Core developers CFBundleShortVersionString - 0.1.12 + 0.1.13 CFBundleVersion - 0.1.12 + 0.1.13 CFBundleSignature ???? diff --git a/share/rpcauth/README.md b/share/rpcauth/README.md index 6f627b867b..1b3acb1dac 100644 --- a/share/rpcauth/README.md +++ b/share/rpcauth/README.md @@ -15,4 +15,5 @@ positional arguments: optional arguments: -h, --help show this help message and exit + -j, --json output data in json format ``` diff --git a/share/rpcauth/rpcauth.py b/share/rpcauth/rpcauth.py index 0b5d45918a..8eb1c943c3 100755 --- a/share/rpcauth/rpcauth.py +++ b/share/rpcauth/rpcauth.py @@ -7,6 +7,7 @@ from getpass import getpass from secrets import token_hex, token_urlsafe import hmac +import json def generate_salt(size): """Create size byte hex salt""" @@ -24,6 +25,7 @@ def main(): parser = ArgumentParser(description='Create login credentials for a JSON-RPC user') parser.add_argument('username', help='the username for authentication') parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?') + parser.add_argument("-j", "--json", help="output to json instead of plain-text", action='store_true') args = parser.parse_args() if not args.password: @@ -35,9 +37,13 @@ def main(): salt = generate_salt(16) password_hmac = password_to_hmac(salt, args.password) - print('String to be appended to BGL.conf:') - print(f'rpcauth={args.username}:{salt}${password_hmac}') - print(f'Your password:\n{args.password}') + if args.json: + odict={'username':args.username, 'password':args.password, 'rpcauth':f'{args.username}:{salt}${password_hmac}'} + print(json.dumps(odict)) + else: + print('String to be appended to BGL.conf:') + print(f'rpcauth={args.username}:{salt}${password_hmac}') + print(f'Your password:\n{args.password}') if __name__ == '__main__': main() diff --git a/share/setup-BGL-win.nsi b/share/setup-BGL-win.nsi index 0abfad0706..d5c9c80439 100644 --- a/share/setup-BGL-win.nsi +++ b/share/setup-BGL-win.nsi @@ -46,18 +46,18 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile ..\BGL-0.1.12.0-win64-setup.exe +OutFile ..\BGL-0.1.13.0-win64-setup.exe InstallDir $PROGRAMFILES64\BGL CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.1.12.0 +VIProductVersion 0.1.13.0 VIAddVersionKey ProductName "BGL Core" -VIAddVersionKey ProductVersion "0.1.12" +VIAddVersionKey ProductVersion "0.1.13" VIAddVersionKey CompanyName "${COMPANY}" VIAddVersionKey CompanyWebsite "${URL}" -VIAddVersionKey FileVersion "0.1.12" +VIAddVersionKey FileVersion "0.1.13" VIAddVersionKey FileDescription "" VIAddVersionKey LegalCopyright "" InstallDirRegKey HKCU "${REGKEY}" Path @@ -92,7 +92,7 @@ Section -post SEC0001 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe !insertmacro MUI_STARTMENU_WRITE_END WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" - WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "0.1.12" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "0.1.13" WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\BGL-qt.exe diff --git a/share/setup.nsi b/share/setup.nsi index 8745ac0e01..47fb69582e 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -57,12 +57,12 @@ CRCCheck force XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.1.12.0 +VIProductVersion 0.1.13.0 VIAddVersionKey ProductName "Bitgesell Core" -VIAddVersionKey ProductVersion "0.1.12" +VIAddVersionKey ProductVersion "0.1.13" VIAddVersionKey CompanyName "${COMPANY}" VIAddVersionKey CompanyWebsite "${URL}" -VIAddVersionKey FileVersion "0.1.12" +VIAddVersionKey FileVersion "0.1.13" VIAddVersionKey FileDescription "Installer for Bitgesell Core" VIAddVersionKey LegalCopyright "Copyright (C) 2009-2024 The Bitgesell Core developers" InstallDirRegKey HKCU "${REGKEY}" Path @@ -99,7 +99,7 @@ Section -post SEC0001 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe !insertmacro MUI_STARTMENU_WRITE_END WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" - WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "0.1.12" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "0.1.13" WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\BGL-qt.exe diff --git a/src/.clang-tidy b/src/.clang-tidy index e4b789dcaa..8e511480ef 100644 --- a/src/.clang-tidy +++ b/src/.clang-tidy @@ -2,10 +2,13 @@ Checks: ' -*, bitcoin-*, bugprone-argument-comment, +bugprone-move-forwarding-reference, bugprone-string-constructor, bugprone-use-after-move, bugprone-lambda-function-name, +bugprone-unhandled-self-assignment, misc-unused-using-decls, +misc-no-recursion, modernize-use-default-member-init, modernize-use-emplace, modernize-use-noexcept, @@ -21,8 +24,10 @@ readability-const-return-type, readability-redundant-declaration, readability-redundant-string-init, ' +HeaderFilterRegex: '.' WarningsAsErrors: '*' CheckOptions: - key: performance-move-const-arg.CheckTriviallyCopyableMove value: false -HeaderFilterRegex: '.' + - key: bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField + value: false diff --git a/src/BGL-chainstate.cpp b/src/BGL-chainstate.cpp index 642af06e82..ecbdcd48bb 100644 --- a/src/BGL-chainstate.cpp +++ b/src/BGL-chainstate.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -26,7 +27,9 @@ #include