Skip to content

validators: resolve UCI installs by exact source path - #122

Open
ZyPulse-zy wants to merge 1 commit into
openwrt:mainfrom
ZyPulse-zy:fix/uci-source-path
Open

ZyPulse-zy wants to merge 1 commit into
openwrt:mainfrom
ZyPulse-zy:fix/uci-source-path

Conversation

@ZyPulse-zy

Copy link
Copy Markdown

The UCI check rejects net/mwan3/files/usr/share/rpcd/ucode/mwan3 in openwrt/packages#30800 even though the package installs it to /usr/share/rpcd/ucode/. Its basename also matches the sibling UCI configuration and /etc/config/mwan3 conffiles entry.

The exact-file guard introduced in #105 still searches by basename, and the real install command puts its destination on a continued line. Match the complete package-relative source token in explicit install/copy commands and join continued recipe lines before inspecting their literal package-root destination. Unknown destinations retain the existing fallback; a source also installed into /etc/config is still validated.

Validation:

  • Replaying the actual mwan3 Makefile and rpcd script reproduces the reported error before this change and yields no UCI finding afterward.
  • Ten regression cases cover extensionless siblings, continuations, quoted/bare sources, regex characters, source-token boundaries, brace-form roots, unresolved destinations and genuine config installations. The final UCI suite fails 5 of 22 tests before the fix and passes afterward.
  • Full suite: 753 tests passed. Independent fork CI also passes the complete suite on Node 24 and wrangler deploy --dry-run.

AI assistance was used for implementation and test development.

An extensionless rpcd payload and its UCI configuration can share the
same basename. Matching all lines containing that basename includes
the sibling's conffiles entry and falsely rejects the payload as UCI.

Resolve explicit install commands by the package-relative source
path, joining continued recipe lines before inspecting their literal
package-root destination. Keep the existing fallback when the
destination cannot be resolved, and retain validation when a source
also installs into etc/config.

Reproduces the false positive on openwrt/packages#30800. Add ten
regression cases for same-name siblings, continuations, quoting,
source boundaries, unknown destinations and config installations.

Signed-off-by: Yuen Su <zypulsecore@gmail.com>
Copilot AI balanced review requested due to automatic review settings October 17, 2026 15:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

This branch has not been deployed

No deployments
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.

2 participants