Commit Graph

255 Commits

Author SHA1 Message Date
Christian Decker
82b7b39d86 CI: add artifact upload for pytest JUnit XML reports.
Adds upload-artifact steps after each test run to preserve test
results as GitHub artifacts. Each job uploads its report.xml with
a unique name based on the job and matrix configuration.

Artifacts are uploaded even when tests fail (if: always()) to
ensure test results are available for debugging.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-16 13:04:33 +01:00
Christian Decker
bca2db632c CI: consolidate GLOBAL_PYTEST_OPTS into PYTEST_OPTS_BASE.
Replaces GLOBAL_PYTEST_OPTS with PYTEST_OPTS_BASE that includes all
common pytest options: --reruns=10, -vvv, --junit-xml=report.xml,
--timeout=1800, and --durations=10.

Removes redundant option specifications from individual jobs and
simplifies pytest command invocations by removing direct references
to GLOBAL_PYTEST_OPTS (now inherited via PYTEST_OPTS).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Changelog-None
2025-12-16 13:04:33 +01:00
Christian Decker
8db09f6d11 Add GitHub Pages documentation site with orchestrated workflows
This commit creates a comprehensive documentation publishing system that
combines coverage reports, Python API docs, and project documentation into
a unified GitHub Pages site.

Changes:
- Update coverage-nightly.yaml to support workflow_call trigger
- Update python-docs-nightly.yaml to support workflow_call trigger
- Add docs-nightly.yaml workflow for project documentation
- Add publish-site.yaml orchestrator workflow

The publish-site workflow:
- Triggers all three documentation workflows in parallel
- Collects artifacts from each workflow
- Organizes them into a unified site structure:
  - / (root) - Beautiful landing page with navigation
  - /docs/ - Project documentation
  - /python/ - Python API reference (pdoc3)
  - /coverage/ - Code coverage reports
- Deploys to GitHub Pages with proper permissions
- Runs nightly at 5 AM UTC, after all other workflows complete

Each workflow can be:
- Triggered manually via workflow_dispatch
- Called from other workflows via workflow_call
- Run on schedule (coverage: 2 AM, python-docs: 3 AM, docs: 4 AM)

The site includes:
- Modern, responsive landing page with gradient design
- Navigation cards for each documentation section
- 404 error page
- .nojekyll file to prevent Jekyll processing
- Automatic timestamp updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Changelog-None
2025-12-08 16:37:02 +01:00
Christian Decker
5c9d3884bb Add Python API documentation generation with pdoc3
This commit adds automated Python API documentation generation for all
workspace packages using pdoc3:

- Add contrib/api/generate-python-docs.py script to generate docs
- Add Makefile targets: python-docs and python-docs-clean
- Add GitHub Actions workflow for nightly documentation generation
- Documents 5 packages: pyln.client, pyln.proto, pyln.grpc, pyln.testing, pyln.spec.bolt7
- Creates beautiful index page with cards linking to each package
- Stores generated docs as artifacts with 90-day retention
- Add pdoc3 and markdown to dev dependencies

Bug fix:
- Fix pyln-client version.py: __all__ must contain strings, not class objects
  This was causing "TypeError: attribute name must be string, not 'type'" in pdoc3

Documentation is generated to docs/python/ which is excluded from version control.
Run 'make python-docs' to generate locally, or download from nightly workflow artifacts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:37:02 +01:00
Christian Decker
4b9cffe183 Add comprehensive coverage infrastructure with clang source-based coverage
This commit introduces a modern coverage infrastructure for Core Lightning:

- Migrate from ad-hoc coverage script to integrated Makefile targets
- Add LLVM source-based coverage support with per-test profraw organization
- Integrate coverage collection into pytest framework via TailableProc
- Add GitHub Actions workflow for nightly coverage reports
- Add Taskfile.yml for convenient task automation
- Add codecov.yml for Codecov integration
- Add comprehensive coverage documentation in COVERAGE.md
- Update contributor workflow docs with new coverage script path
- Add coverage data files to .gitignore (*.profraw, *.profdata)
- Remove obsolete contrib/clang-coverage-report.sh
- Remove obsolete tests/conftest.py (now using pyln-testing markers)
- Update pyproject.toml to include pyln-testing in main dependencies

The new infrastructure automatically collects coverage data when CLN_COVERAGE_DIR
is set, organizing profraw files by test name for granular analysis.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:37:02 +01:00
Christian Decker
5c0827e417 ci: Add 2 shards to the UBSAN / ASAN runs 2025-12-06 12:32:38 +01:00
Christian Decker
2a2def32ab ci: Remove nix check from the critical path in ci.yaml 2025-12-06 12:32:38 +01:00
Christian Decker
7c28fdb689 ci: Run with rerunfailures rather than flaky 2025-12-06 12:32:38 +01:00
ShahanaFarooqui
a5268e5780 ci: Add new version-vls tag for Docker image
Changelog-Added: Added a new `version-vls` tag with includes  VLS's `remote_hsmd_socket` binary with the Core Lightning image.
2025-12-05 10:25:19 -08:00
ShahanaFarooqui
534e3ae8f8 ci: Remove lowdown and configure from the sign release job step
Changelog-None: Fixes draft release job creation in CI.
2025-11-28 20:27:02 +10:30
Rusty Russell
640888aa91 CI: add test that we can downgrade the node and run it under v25.09.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-28 09:16:53 +10:30
ShahanaFarooqui
4a67100c34 ci: Add skip_validation option to test the release on non-tagged commit
Changelog-None: Improved release action CI testing
2025-11-27 14:04:48 +10:30
Rusty Russell
9627bf9ba1 CI: don't run configure on *host* for release.
It breaks, but more importantly we don't need to install lowdown any more,
since the check in build-release.sh has been removed.

```
Run sudo apt-get install -y lowdown
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  lowdown
0 upgraded, 1 newly installed, 0 to remove and 21 not upgraded.
Need to get 129 kB of archives.
After this operation, 314 kB of additional disk space will be used.
Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [144 B]
Get:2 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 lowdown amd64 1.1.0-1 [129 kB]
Fetched 129 kB in 0s (2971 kB/s)
Selecting previously unselected package lowdown.
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 216225 files and directories currently installed.)
Preparing to unpack .../lowdown_1.1.0-1_amd64.deb ...
Unpacking lowdown (1.1.0-1) ...
Setting up lowdown (1.1.0-1) ...
Processing triggers for man-db (2.12.0-4build2) ...
Not building database; man-db/auto-update is not 'true'.

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.
checking for getpagesize() in <unistd.h>... yes
checking for isblank() in <ctype.h>... yes
checking for little endian... yes
checking for memmem in <string.h>... yes
checking for memrchr in <string.h>... yes
checking for mmap() declaration... yes
checking for /proc/self/maps exists... yes
checking for qsort_r cmp takes trailing arg... yes
checking for __attribute__((section)) and __start/__stop... yes
checking for stack grows upwards... no
checking for statement expression support... yes
checking for <sys/filio.h>... no
checking for <sys/termios.h>... yes
checking for <sys/unistd.h>... yes
checking for __typeof__ support... yes
checking for unaligned access to int... yes
checking for utime() declaration... yes
checking for __attribute__((warn_unused_result))... yes
checking for #pragma omp and -fopenmp support... yes
checking for <valgrind/memcheck.h>... no
checking for working <ucontext.h... yes
checking for passing pointers via makecontext()... yes
checking for __builtin_cpu_supports()... yes
checking for closefrom() offered by system... yes
checking for F_CLOSEM defined for fctnl.... no
checking for close_range syscall available as __NR_close_range.... yes
checking for F_MAXFD defined for fcntl.... no
checking for zlib support... yes
checking for libsodium with IETF chacha20 variants... no
checking for sqlite3... yes
checking for postgres... yes
checking for User Statically-Defined Tracing (USDT)... no
checking for compiler is GCC... yes
checking for GCC version is 7 or above... yes
Writing variables to config.vars.2200... yes
Writing header to ccan/config.h.2200... yes
checking for python3-mako... not found
checking for lowdown... found
checking for sha256sum... found
checking for jq... found
Setting PREFIX... /usr/local
Setting CC... cc
Setting CONFIGURATOR_CC... cc
Setting CWARNFLAGS... -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition -Werror -Wno-maybe-uninitialized -Wshadow=local
Setting CDEBUGFLAGS... -std=gnu11 -g -fstack-protector-strong
Setting COPTFLAGS... -Og
CSANFLAGS not found
FUZZFLAGS not found
FUZZER_LIB not found
LLVM_LDFLAGS not found
SQLITE3_CFLAGS not found
Setting SQLITE3_LDLIBS... -lsqlite3
Setting POSTGRES_INCLUDE... -I/usr/include/postgresql
Setting POSTGRES_LDLIBS... -L/usr/lib/x86_64-linux-gnu -lpq
SODIUM_CFLAGS not found
SODIUM_LDLIBS not found
Setting VALGRIND... 0
Setting DEBUGBUILD... 0
Setting COMPAT... 1
Setting PYTEST... python3 -m pytest
Setting STATIC... 0
Setting CLANG_COVERAGE... 0
Setting ASAN... 0
Setting UBSAN... 0
Setting TEST_NETWORK... regtest
Setting HAVE_PYTHON3_MAKO... 0
Setting SHA256SUM... sha256sum
Setting FUZZING... 0
Setting RUST... 1
Setting PYTHON... python3
Setting SED... sed
*** We need a libsodium >= 1.0.4 (released 2015-06-11).
Error: Process completed with exit code 1.
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-24 16:55:46 +10:30
daywalker90
838909634e ci: add workflow to create a PR for crate bumps
Changelog-None
2025-11-14 09:02:35 +10:30
Joseph Goulden
1ead6791fd chore: nix flake update
Switched to nixpkgs-unstable
Replaced postgresql dependency with much smaller libpq.
Utilise new inputs.self.submodules feature to simplify flake use
Moved apps to a separate file
Changelog-None
2025-11-13 15:35:51 +10:30
Rusty Russell
f58079e559 CI: Remove non-working FreeBSD test.
It takes over an hour to run, because there's no FreeBSD wheel for the cryptography Python
package, and it builds it, in Rust, from scratch.

And eventually, takes over 125 minutes and times out.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-13 15:33:02 +10:30
ShahanaFarooqui
061182876f docs: Upgrade rdme from v8 to v10 2025-11-13 15:07:00 +10:30
ShahanaFarooqui
5733046617 docker: Fix missing CLN version in docker image
Changelog-Fixed: Core lightning version in Docker image will not be missing.
2025-11-13 12:04:08 +10:30
ShahanaFarooqui
31035077fa ci: Fix Release action failure due to change in .asc suffix
Reference commit: ea2f7607b8

Changelog-None.
2025-11-13 12:02:34 +10:30
Rusty Russell
4f9e13c000 GitHub: add --durations=10 to pytest runs.
This allows us to show what tests are slowest, by showing the duration for anything
which took 10 seconds or longer.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-10-28 11:03:33 +10:30
Rusty Russell
f3b227f8af external/libsodium: remove
We shipped our own because Ubuntu xenial (16.4) had an ancient one.

Changelog-Changed: Build: libsodium version >= 1.0.4 now required (released 2015-06-11)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-10-26 20:31:45 +10:30
Rusty Russell
226533958a external/lowdown: remove.
Every distribution we have packages this now.

Changelog-Changed: Build: lowdown is now required (we no longer bundle our own).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-10-26 20:31:45 +10:30
ShahanaFarooqui
3af8a028ef workflow: Add uv installation step
RPC documentation is not syncing on readme server with error `uv: command not found`.

Changelog-None.
2025-10-01 15:41:02 +09:30
ShahanaFarooqui
2e2a085942 ci: Add a new step to update pyln versions out of WORKDIR
The Publish distribution stage was failing because it executed the update-pyln-versions script from within the WORKDIR, which created an invalid context. To resolve this, we have decoupled the process, separating the updating of version state into its own step that runs from the root directory before the publish operation.

Changelog-None.
2025-09-19 10:44:20 +09:30
Rusty Russell
b77d648630 tools/build-release.sh: always append version to SHA256SUMS file.
Telling users to rename it is a poor idea, and if you have multiple releases in your release/ dir
it will get confusing.  So always append -v25.09 and update docs accordingly.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-09-10 12:38:12 +05:30
Sangbida Chaudhuri
f7f018fea9 ci: Retry CI workflow with changelog
Imagine you've burned the midnight oil trying to get your feature into this latest release that was due yesterday. Sweat is dripping off your brow, but you're proud, you're finally ready to push all your changes and merge!
.
.
.
Only for Github Gandalf the Grey to go "YOU SHALL NOT PASS". Why? Because you did not add a "Changelog-None" to any of commit messages. So you have to go back and try add a full stop here or a new line there and wait for the CI overlords to bless your PR. :'(

Well now, you can just add a Changelog-None to your PR description and github hopefully will take mercy on you and run your CI workflow again :)
2025-09-04 13:28:28 +09:30
ShahanaFarooqui
5bdf6f4cfc ci: make and publish fixes after uv migration
Changelog-None.
2025-09-02 13:41:44 +09:30
ShahanaFarooqui
6f45b47e44 ci: remove fetch-tags from checkout
Fixes conflict error in Release action when trying to fetch the commit and tag both together. Like
```
fatal: Cannot fetch both da7d3057ed and refs/tags/v25.09rc1 to refs/tags/v25.09rc1
```

Changelog-None.
2025-08-20 08:46:43 +09:30
Christian Decker
40ded45a85 ci: Remove nix check
It was breaking a lot, due to Cargo dependencies not being published,
no surprise there, we are just publishing them with the changes it is
complaining about.
2025-08-19 15:47:58 +09:30
Christian Decker
8f67da33b5 nix: Upgrade channel and flake checker actions 2025-08-19 15:47:58 +09:30
Lakshya Singh
b0360eac21 chore: add libffi
missing libffi fails coincurve installation
2025-08-11 11:06:22 +09:30
Lakshya Singh
570c631b7a feat: update release pipeline
add documentation for release pipeline changes
2025-08-11 11:06:22 +09:30
Lakshya Singh
4afa5f71ae fix: macOS for grpico-tools
add openssl installation and flags to install grpcio-tools
2025-08-11 11:06:22 +09:30
Lakshya Singh
69102c62a3 feat: replace poetry with uv for dependency management
Replace poetry with uv for managing Python dependencies and running
commands across CI workflow.

- Add astral-sh/setup-uv@v5 action to install uv
- Replace all poetry run commands with uv run
- Remove poetry-specific installation steps
- Update Python setup in multiple jobs
2025-08-11 11:06:22 +09:30
daywalker90
40d319b7be python: raise minimum supported python version to 3.9
Changelog-None
2025-06-12 13:51:18 +02:00
ShahanaFarooqui
ae320cd8d2 CI: Update Ubuntu version from 20 to 22 for Github Actions
Ubuntu 20.04 reached its end-of-life (EOL) on April 15, 2025, and GitHub Actions subsequently removed the Ubuntu 20.04 LTS runner. As a result, we must upgrade all workflow runners to at least Ubuntu 22.04. Currently, this update has only been applied to pypi.yml for core-lightning.

Changelog-None.
2025-06-09 14:24:53 -05:00
Rusty Russell
a97527212c GitHub: fix "Automerge" button to *actually* depend on tests passing.
I've been bitten by this several times: skipping the test seems to make it OK
for GH!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-11 11:25:40 +09:30
Rusty Russell
1521b92e41 CI: Use eatmydata to speed up test runs.
We don't care about data persistence, and this suppresses all sync calls (speeding
sqlite3 specifically).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-08 14:01:38 +09:30
Rusty Russell
b472baeab5 CI: don't wait on update-docs-examples
It's disabled.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-08 14:01:38 +09:30
Rusty Russell
1125130db0 CI: don't abandon other runs just because one fails.
This significantly slows down the cycle when we have flakes (it's good if
the tree is completely broken though!).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-08 14:01:38 +09:30
Rusty Russell
5778083cbd CI: disable the doc check for now.
It's not completely stable, which is OK, and we will solve this next release.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-02 13:25:11 -07:00
Rusty Russell
675ac14986 CI: Install protobuf on FreeBSD
```
cargo build --quiet --example cln-plugin-startup
  error: failed to run custom build command for `cln-grpc v0.4.0 (/home/runner/work/lightning/lightning/cln-grpc)`

  Caused by:
    process didn't exit successfully: `/home/runner/work/lightning/lightning/target/debug/build/cln-grpc-1c0900b8d6f448d4/build-script-build` (exit status: 101)
    --- stdout
    cargo:rerun-if-changed=proto/node.proto
    cargo:rerun-if-changed=proto

    --- stderr

    thread 'main' panicked at cln-grpc/build.rs:7:10:
    called `Result::unwrap()` on an `Err` value: Custom { kind: NotFound, error: "Could not find `protoc`. If `protoc` is installed, try setting the `PROTOC` environment variable to the path of the `protoc` binary. Try installing `protobuf-compiler` or `protobuf` using your package manager. It is also available at https://github.com/protocolbuffers/protobuf/releases  For more information: https://docs.rs/prost-build/#sourcing-protoc" }
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
  gmake: *** [cln-rpc/Makefile:15: target/debug/examples/cln-plugin-startup] Error 101
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
fe3ee1e4e6 CI: mark external subdirs safe for FreeBSD build
```
fatal: detected dubious ownership in repository at '/home/runner/work/lightning/lightning/external/libwally-core'
  To add an exception for this directory, call:

  	git config --global --add safe.directory /home/runner/work/lightning/lightning/external/libwally-core
  Reinitializing submodules src/secp256k1 ...
  fatal: detected dubious ownership in repository at '/home/runner/work/lightning/lightning/external/libwally-core'
  To add an exception for this directory, call:

  	git config --global --add safe.directory /home/runner/work/lightning/lightning/external/libwally-core
  fatal: detected dubious ownership in repository at '/home/runner/work/lightning/lightning/external/libwally-core'
  To add an exception for this directory, call:

  	git config --global --add safe.directory /home/runner/work/lightning/lightning/external/libwally-core
  gmake: *** [external/Makefile:65: submodcheck] Error 128
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
afe911173a CI: install jq for FreeBSD build.
```
  checking for jq... not found
  *** We need jq!
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
d201bdacea ci: install pkg-config for FreeBSD.
```
      | -- Found Python: /tmp/tmpyjjd1wyq/.venv/bin/python (found suitable version "3.11.11", minimum required is "3") found components: Interpreter Development.Module Development.SABIModule
      | CMake Error at /tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/cmake/data/share/cmake-4.0/Modules/FindPackageHandleStandardArgs.cmake:227 (message):
      |   Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
      | Call Stack (most recent call first):
      |   /tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/cmake/data/share/cmake-4.0/Modules/FindPackageHandleStandardArgs.cmake:591 (_FPHSA_FAILURE_MESSAGE)
      |   /tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/cmake/data/share/cmake-4.0/Modules/FindPkgConfig.cmake:110 (find_package_handle_standard_args)
      |   CMakeLists.txt:35 (find_package)
      |
      |
      | -- Configuring incomplete, errors occurred!
      | Traceback (most recent call last):
      |   File "/root/.local/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
      |     main()
      |   File "/root/.local/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 373, in main
      |     json_out["return_val"] = hook(**hook_input["kwargs"])
      |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      |   File "/root/.local/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 280, in build_wheel
      |     return _build_backend().build_wheel(
      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      |   File "/tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/hatchling/build.py", line 58, in build_wheel
      |     return os.path.basename(next(builder.build(directory=wheel_directory, versions=['standard'])))
      |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      |   File "/tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/hatchling/builders/plugin/interface.py", line 147, in build
      |     build_hook.initialize(version, build_data)
      |   File "/tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/scikit_build_core/hatch/plugin.py", line 125, in initialize
      |     self._initialize(build_data=build_data)
      |   File "/tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/scikit_build_core/hatch/plugin.py", line 228, in _initialize
      |     builder.configure(
      |   File "/tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/scikit_build_core/builder/builder.py", line 283, in configure
      |     self.config.configure(
      |   File "/tmp/tmpyjjd1wyq/.venv/lib/python3.11/site-packages/scikit_build_core/cmake.py", line 254, in configure
      |     raise FailedLiveProcessError(msg) from None
      | scikit_build_core.errors.FailedLiveProcessError: CMake configuration failed

  Note: This error originates from the build backend, and is likely not a problem with poetry but one of the following issues with coincurve (20.0.0)

    - not supporting PEP 517 builds
    - not specifying PEP 517 build requirements correctly
    - the build requirements are incompatible with your operating system or Python version
    - the build requirements are missing system dependencies (eg: compilers, libraries, headers).

  You can verify this by running pip wheel --no-cache-dir --use-pep517 "coincurve (==20.0.0)".
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
e320c21948 CI: Try to ensure that poetry can find rust to build packages.
No, really:

```
IsolatedBuildInstallError
    Failed to install maturin>=1.2,<2.0.

    Output:
    Updating dependencies
    Resolving dependencies...

    Package operations: 1 install, 0 updates, 0 removals

      - Installing maturin (1.8.3)

    PEP517 build of a dependency failed

    Backend subprocess exited when trying to invoke build_wheel

        | Command '['/tmp/tmp0qxx7olq/.venv/bin/python', '/root/.local/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py', 'build_wheel', '/tmp/tmpu1wwwrff']' returned non-zero exit status 1.
        |
        | /tmp/tmp0qxx7olq/.venv/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
        | !!
        |
        |         ********************************************************************************
        |         Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).
        |
        |         By 2026-Feb-18, you need to update your project and remove deprecated calls
        |         or your builds will no longer be supported.
        |
        |         See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        |         ********************************************************************************
        |
        | !!
        |   corresp(dist, value, root_dir)
        | running bdist_wheel
        | running build
        | running build_py
        | creating build/lib.freebsd-14.2-RELEASE-amd64-cpython-311/maturin
        | copying maturin/__init__.py -> build/lib.freebsd-14.2-RELEASE-amd64-cpython-311/maturin
        | copying maturin/__main__.py -> build/lib.freebsd-14.2-RELEASE-amd64-cpython-311/maturin
        | running egg_info
        | writing maturin.egg-info/PKG-INFO
        | writing dependency_links to maturin.egg-info/dependency_links.txt
        | writing requirements to maturin.egg-info/requires.txt
        | writing top-level names to maturin.egg-info/top_level.txt
        | reading manifest file 'maturin.egg-info/SOURCES.txt'
        | reading manifest template 'MANIFEST.in'
        | warning: no files found matching '*.json' under directory 'src/python_interpreter'
        | writing manifest file 'maturin.egg-info/SOURCES.txt'
        | running build_ext
        | running build_rust
        | error: can't find Rust compiler
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
0aa0efc989 CI: fix FreeBSD to use poetry to build.
Did this ever work?

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
e63dca5078 CI: don't try to copy files out of FreeBSD VM
```
...
  skipping non-regular file "lightning/lightning/ccan/ccan/short_types/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/str/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/str/base32/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/str/hex/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/strmap/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/structeq/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/take/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/tal/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/tal/grab_file/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/tal/link/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/tal/path/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/tal/str/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/tcon/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/time/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/timer/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/typesafe_cb/LICENSE"
  skipping non-regular file "lightning/lightning/ccan/ccan/utf8/LICENSE"
  skipping non-regular file "lightning/lightning/doc/CHANGELOG.md"
  skipping non-regular file "lightning/lightning/doc/LICENSE.md"

  sent 583 bytes  received 1,319,490 bytes  880,048.67 bytes/sec
  total size is 62,270,071  speedup is 47.17
Error: The process '/usr/bin/bash' failed with exit code 1
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
730697ef07 CI: don't download bitcoind for FreeBSD build.
It didn't work, and it was downloading the Linux binary anyway!

```
  2025-04-11 02:37:12 (1.61 MB/s) - ‘bitcoin-27.1-x86_64-linux-gnu.tar.gz’ saved [48920073/48920073]

  tar: Error opening archive: Failed to open 'bitcoin-27.1-x86_64-linux-gnu.tar.bz2'
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30
Rusty Russell
36cbdae608 CI: update freebsd test to python 3.10.
```
 12 MiB to be downloaded.
  [1/1] Fetching pkg-2.1.0.pkg: .......... done
  Checking integrity... done (0 conflicting)
  [1/1] Upgrading pkg from 1.21.3 to 2.1.0...
  [1/1] Extracting pkg-2.1.0: .......... done
  Updating FreeBSD repository catalogue...
  FreeBSD repository is up to date.
  All repositories are up to date.
  pkg: No packages available to install matching 'python38' have been found in the repositories
  Error: The process '/usr/bin/bash' failed with exit code 1
```

Changelog-None: CI only
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-04-23 09:21:43 +09:30