Skip to content

v26.06 source install flattens bwatch plugin path, but lightningd expects plugins/bwatch/bwatch #9193

@marimes

Description

@marimes
## Summary

After building and installing Core Lightning v26.06 from source on Ubuntu, `lightningd` failed during startup while registering the new `bwatch` plugin.

The installed file layout was:

```text
/usr/local/libexec/c-lightning/plugins/bwatch

but lightningd tried to register:

/usr/local/libexec/c-lightning/plugins/bwatch/bwatch

This caused:

UNUSUAL plugin-manager: failed to register plugin /usr/local/bin/../libexec/c-lightning/plugins/bwatch/bwatch

Build/install steps

Followed the documented Ubuntu source install flow:

uv sync --all-extras --all-groups --frozen
./configure
RUST_PROFILE=release uv run make
sudo RUST_PROFILE=release make install

Version:

v26.06

git describe showed:

v26.06-dirty

The dirty state appeared to be generated/vendor build artifacts, not a local source patch.

Observed install rule behavior

make -n install showed:

install ... plugins/bwatch/bwatch ... /usr/local/libexec/c-lightning/plugins

Since the destination is a directory, install flattened the source path and created:

/usr/local/libexec/c-lightning/plugins/bwatch

as a file.

However, at runtime CLN looked for:

/usr/local/libexec/c-lightning/plugins/bwatch/bwatch

Local workaround

This fixed startup:

sudo mv /usr/local/libexec/c-lightning/plugins/bwatch \
  /usr/local/libexec/c-lightning/plugins/bwatch.flat-installed

sudo install -d -m 755 /usr/local/libexec/c-lightning/plugins/bwatch

sudo install -m 755 /home/cln/lightning/plugins/bwatch/bwatch \
  /usr/local/libexec/c-lightning/plugins/bwatch/bwatch

After that:

lightningd --version

returned:

v26.06

without the plugin registration error.

Expected behavior

Either:

  1. make install should preserve the nested plugin path for plugins/bwatch/bwatch, or
  2. runtime plugin lookup should expect the flattened installed path /usr/local/libexec/c-lightning/plugins/bwatch.

Given the source tree defines bwatch as plugins/bwatch/bwatch, preserving the nested install directory seems likely to be the intended behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions