← Back to issue list

Provision built hooks before declared hook stubs

View original Github issue

Metadata

Project
snapcraft
Number
#6435
Type
pull request
State
closed
Author
copilot-swe-agent
Labels
—
Created
Updated
Closed

Current evaluation

Closed unmerged; the hook-ordering fix and regression tests passed CI, but the PR remained unreviewed and received no maintainer feedback.

Resolution: closed stale

Reason: PR #6435 was closed with review still pending, no comments, and all listed CI checks passing. No merge commit, closing rationale, or superseding reference was identified.

Evaluated by: mr-cal-bot

No scores available.

Issue body

Declared hooks could end up shipping the `#!/bin/true` placeholder even when a part had already generated a real hook in `snap/hooks/<name>`. The regression came from creating fallback hook files before built hooks were materialized into `meta/hooks`. - **What changed** - `Package.write_metadata()` now provisions built hooks into each prime directory before `setup_assets(..., copy_hooks_and_gui=False)` runs. - This keeps declared hook metadata intact while ensuring `_ensure_hook()` sees the real hook file and does not create a stub over that path. - **Why this fixes the bug** - The previous order was: 1. declare hooks 2. create stub in `meta/hooks/<name>` 3. try to provision built hook with `overwrite=False` - Because the stub already existed, the built hook was skipped. - The new order makes the real built hook exist first, so the fallback stub path is never taken for that hook. - **Regression coverage** - Added service-level coverage for the `write_metadata()` ordering in both snap and component flows. - Added a hook-level regression showing that a provisioned built hook prevents placeholder creation for a declared hook. ```python # Before setup_assets(..., copy_hooks_and_gui=False) provision_hooks(prime_dir, overwrite=False) # After provision_hooks(prime_dir, overwrite=False) setup_assets(..., copy_hooks_and_gui=False) ```

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed stale Closed unmerged; the hook-ordering fix and regression tests passed CI, but the PR remained unreviewed and received no maintainer feedback.
stealth/space-bunny-alpha — closed resolved Reordered hook provisioning so built hooks are installed before declared-hook stubs, with regression coverage; all listed CI checks passed.
qwen/qwen3.6-35b-a3b
Impact: 65
Quick Win: 37
Complexity: 25
Confidence: 80
Actionability: 75
needs review Fixes regression where declared hooks shipped #!/bin/true stubs instead of real built hooks by reordering write_metadata() to provision built hooks before creating stubs. CI passing, awaiting review.

Update history

Date Change
closed
updated
created

Related issues

Issue Project State Summary Similarity
#6434 Replace generated hook stubs with built hooks when hooks are declared snapcraft closed Closed unmerged; the generated-hook regression was fixed separately by commit 271462658 and released in Snapcraft 9.1.3.
71%