Skip to content

Conversation

@kwvg
Copy link
Collaborator

@kwvg kwvg commented Nov 18, 2025

Additional Information

Breaking Changes

None expected.

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

@kwvg kwvg added this to the 23.1 milestone Nov 18, 2025
@github-actions
Copy link

github-actions bot commented Nov 18, 2025

⚠️ Potential Merge Conflicts Detected

This PR has potential conflicts with the following open PRs:

Please coordinate with the authors of these PRs to avoid merge conflicts.

@kwvg kwvg force-pushed the nix_ci branch 2 times, most recently from ca69460 to 55493d8 Compare November 19, 2025 14:08
@kwvg kwvg changed the title ci: merge bitcoin#31529, #30730, partial bitcoin#33185, switch CI container from Ubuntu 22.04 (noble) to Debian 13 (trixie), use Guix to source non-default GCC, bump to Clang 19, GCC 15 ci: merge bitcoin#31529, #30730, partial bitcoin#33185, use Guix for sourcing non-default GCC, bump to Clang 19, GCC 15 Nov 19, 2025
@kwvg
Copy link
Collaborator Author

kwvg commented Nov 19, 2025

Build for 55493d8, https://github.com/kwvg/dash/actions/runs/19504138158

Note: Work on container size reduction is ongoing.

@kwvg kwvg mentioned this pull request Nov 20, 2025
5 tasks
PastaPastaPasta added a commit that referenced this pull request Nov 21, 2025
…in#26257, bump to Python 3.10, mypy 0.981, fix Docker group assignment, minor housekeeping (misc. changes: part 2)

82723dc fix: don't forget to assign user to group if group exists (Kittywhiskers Van Gogh)
066d409 chore: remove outdated `boot2docker` comment (Kittywhiskers Van Gogh)
29e98e3 chore: document `USER_ID` and `GROUP_ID` in `docker-compose.yml` (Kittywhiskers Van Gogh)
6ea897a chore: drop unmaintained Guix container (Kittywhiskers Van Gogh)
6a1786c fix: resolve `test: =: unary operator expected` error (Kittywhiskers Van Gogh)
d6489f0 fix: make copy of `skip` in `GetStackFrames` to avoid clobbering (Kittywhiskers Van Gogh)
4110ff3 lint: mypy 0.981 (Kittywhiskers Van Gogh)
80a44e9 partial bitcoin#26257: python linter flake8 E275 fixup, update dependencies (Kittywhiskers Van Gogh)
7b80dfb merge bitcoin#28347: replace deprecated pkg_resources with importlib.metadata (Kittywhiskers Van Gogh)
04ac20a partial bitcoin#30527: Bump python minimum supported version to 3.10 (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Dependency for #6988

  * Python 3.9's security support elapsed on 31st Oct '25 ([source](https://endoflife.date/python)), in response to that we are switching over to Python 3.10.
    * Due to [python/mypy#13627](python/mypy#13627) arising as a result of this bump, we also had to upgrade `mypy` to 0.981. Note that this is a divergence from upstream as they opted to upgrade to `mypy` 1.x (see [bitcoin#28009](bitcoin#28009)) but the changes needed to do so are too disruptive given this PR's larger context.

      Future backports should feel free to overwrite the mypy version and realign with upstream.

  * CI identified potential clobbering ([build](https://github.com/kwvg/dash/actions/runs/19434684086/job/55606106842#step:8:1804)) in Windows stacktraces code that started to build after [dash#6966](#6966) (see below). Additionally, C++20 has deprecated certain operators like {in,de}crementation courtesy of [P1152](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1152r3.html), which required additional adaptation.

    <details>

    <summary>Build error:</summary>

    ```
    stacktraces.cpp: In function ‘std::vector<long long unsigned int> GetStackFrames(size_t, size_t, const CONTEXT*)’:
    stacktraces.cpp:167:56: error: variable ‘skip’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered]
      167 | static __attribute__((noinline)) std::vector<uint64_t> GetStackFrames(size_t skip, size_t max_frames, const CONTEXT* pContext = nullptr)
          |                                                        ^~~~~~~~~~~~~~
    cc1plus: all warnings being treated as errors
    ```

    </details>

  * The `AM_CONDITIONAL` for `CRASH_HOOKS_WRAPPED_CXX_ABI` wasn't evaluated due to missing quotations (see below), this has been resolved.

    <details>

    <summary>Configure:</summary>

    ```
    checking whether the linker accepts -Wl,-export-dynamic... no
    checking whether the linker accepts -rdynamic... yes
    checking whether C++ compiler accepts -gdwarf-4... yes
    checking whether C++ compiler accepts -fno-standalone-debug... yes
    checking whether the linker accepts -Wl,-wrap=__cxa_allocate_exception... no
    ./configure: line 30603: test: =: unary operator expected
    checking for Linux getrandom syscall... no
    checking for getentropy via random.h... yes
    checking for sysctl... yes
    checking for sysctl KERN_ARND... no
    checking for fdatasync... no
    ```

    </details>

  * Currently we offer two containers for Guix builds meant for developers who aren't on Linux, one was introduced by [dash#5285](#5285) (based on [fanquake/core-review](https://github.com/fanquake/core-review)'s container, [source](https://github.com/fanquake/core-review/blob/d8cf188214879ea1b095e2ba34ca5c23dbc3ebd2/guix/imagefile)) and the other introduced by [dash#5449](#5449), the former does not seem to get much use and has been out of sync with its upstream source for a while.

    As the second container is used by some developers and is updated and maintained to fit Dash's specific needs, the first container has been dropped and documentation has been updated to reflect the same.

  * As Docker has matured with the WSL2 backend on Windows and the Apple Virtualization framework on macOS, boot2docker has been deprecated (see [boot2docker/boot2docker#1408](boot2docker/boot2docker#1408)) and the comment referencing it has been dropped.

  * To avoid permissions issues with mounting directories, containers come with `USER_ID` and `GROUP_ID` args ([source](https://github.com/dashpay/dash/blob/23de96916a8b8f97a2c408bb76da1d2149d7227c/contrib/containers/ci/ci-slim.Dockerfile#L123-L131)) that need to be specified at build time if the mount needs different permissions (as is often the case on macOS).

    To make that option more explicitly clear, it has been specified in `docker-compose.yml` with default values filled in.

  * [dash#6929](#6929) introduced a fix to prevent unexpected container build failure due to conflicting groups (most commonly GID 20 that on macOS is `staff` but on Linux is `dialout`) but the fix did _not_ assign the default user to that group, that has been resolved here.

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 82723dc ~with one nit~

Tree-SHA512: 0e906d1a7fea9edc52a40a6a6971fa6b2599674e97e99c65a220f99cc44be78f4290be8fb9af7782cac416bcdd2338b7f17a5c50b5fdcf727b1cf84fe44c8686
@github-actions
Copy link

This pull request has conflicts, please rebase.

PastaPastaPasta added a commit that referenced this pull request Nov 21, 2025
c359fb2 ci: bump to Clang 19 (Kittywhiskers Van Gogh)
9c9e876 partial bitcoin#33185: update time-machine to 5cb84f2013c5b1e48a7d0e617032266f1e6059e2 (Kittywhiskers Van Gogh)
7fef63d merge bitcoin#31529: latest 2.31 glibc (Kittywhiskers Van Gogh)
de1b467 merge bitcoin#30730: Bump time machine to 53396a22afc04536ddf75d8f82ad2eafa5082725 (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  Spun-off from [dash#6998](#6988) to remedy CI failures. Potential alternative to [dash#6991](#6991) as Clang 19 does not seem to exhibit failures observed with Clang 18 ([comment](#6991 (comment))) caused by change in compile flags in [dash#6966](#6966).

  **Note:** ~~The base of this pull request does not use latest `develop` (86e84d7) due to build issues potentially related to [dash#6971](#6971) (see below) and uses a slightly out-of-date base to sidestep the issue. The build issue was found to be present independent of this PR using the Guix container.~~ Fixed with [dash#6997](#6997).

  <details>

  <summary>Build error:</summary>

  ```
  make[2]: Nothing to be done for 'install-exec-am'.
   /home/ubuntu/.guix-profile/bin/mkdir -p '/distsrc-base/distsrc-23.0.0-rc.3-453-g86e84d701641-x86_64-linux-gnu/installed/dashcore-23.0.0-rc.3-453-g86e84d701641//lib/pkgconfig'
   /home/ubuntu/.guix-profile/bin/install -c -m 644 libdashconsensus.pc '/distsrc-base/distsrc-23.0.0-rc.3-453-g86e84d701641-x86_64-linux-gnu/installed/dashcore-23.0.0-rc.3-453-g86e84d701641//lib/pkgconfig'
  make[2]: Leaving directory '/distsrc-base/distsrc-23.0.0-rc.3-453-g86e84d701641-x86_64-linux-gnu'
  make[1]: Leaving directory '/distsrc-base/distsrc-23.0.0-rc.3-453-g86e84d701641-x86_64-linux-gnu'
  objcopy: Unable to recognise the format of the input file `dashcore-23.0.0-rc.3-453-g86e84d701641/bin/dash-tx.dbg'
  objcopy: Unable to recognise the format of the input file `dashcore-23.0.0-rc.3-453-g86e84d701641/lib/libdashconsensus.so.0.0.0.dbg'
  objcopy: Unable to recognise the format of the input file `dashcore-23.0.0-rc.3-453-g86e84d701641/bin/dash-cli.dbg'
  objcopy: Unable to recognise the format of the input file `dashcore-23.0.0-rc.3-453-g86e84d701641/bin/dash-wallet.dbg'
  objcopy: Unable to recognise the format of the input file `dashcore-23.0.0-rc.3-453-g86e84d701641/bin/dash-qt.dbg'
  objcopy: Unable to recognise the format of the input file `dashcore-23.0.0-rc.3-453-g86e84d701641/bin/test_dash.dbg'
  objcopy: Unable to recognise the format of the input file `dashcore-23.0.0-rc.3-453-g86e84d701641/bin/dashd.dbg'
  ```

  </details>

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK c359fb2

Tree-SHA512: 69576f6e6c0c101be434b273e9a84d1ab9f9341734241e794585615f194b453d2983dce077f9a2efa04b93bfba2374274aad0f90a1a07aed4ef87ff3f22ddd59
@kwvg kwvg changed the title ci: merge bitcoin#31529, #30730, partial bitcoin#33185, use Guix for sourcing non-default GCC, bump to Clang 19, GCC 15 ci: merge bitcoin#31529, #30730, partial bitcoin#33185, use Guix for sourcing non-default GCC, bump to GCC 15 Nov 21, 2025
kwvg added 5 commits November 22, 2025 04:54
GCC 14 is available in 25.05 but we will be bumping to GCC 15 soon which
isn't, so we will be using unstable instead.
Since we're using Nix supplied GCC, they don't share the same standard
libraries, they are forwards compatible, not back, so compile against
oldest tested version to avoid breakage.
Nix expects everything to work in Nix-land, we don't. Maybe some day we
will, until then, we need to manually intervene.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant