Snapcraft saves the fact that parts need to be rebuilt rather than discovering them
Metadata
Current evaluation
Closed without implementation. The dynamic dependency discovery approach for build caching was abandoned and superseded by later Snapcraft caching architecture updates.
Suggested action: —
No scores available.
Issue body
Say you have the following parts:
parts:
main:
plugin: nil
dependent:
plugin: nil
after: [main]
`main` always needs to be staged before `dependent` is even pulled, which means if `main` ends up cleaning or re-running the stage step, `dependent`'s pull step is now dirty. Today this logic happens when cleaning the stage step of `main`: the snapcraft CLI knows `dependent` depends upon it, and actually loads up the pull state for `dependent`, modifies it saying that a dependency has changed, and then saves it. Then the next time `dependent` runs, it sees that its pull state is dirty.
This works, to an extent, but quickly gets complicated once more reasons for needing to rebuild are introduced (e.g. detecting local source changes). It's also error-prone: if an error occurs when saving `dependent`s state, then it doesn't consider itself out of date even though a dependency change took place.
Rather than manually handling dependency changes, the snapcraft CLI should actually check to see if dependencies have updated (or _should_ update) for a given part.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Closed without implementation. The dynamic dependency discovery approach for build caching was abandoned and superseded by later Snapcraft caching architecture updates. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed without resolution. The proposed dynamic dependency discovery for build caching was abandoned or superseded by later Snapcraft caching improvements. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed without resolution or comments. The issue outlines Snapcraft's manual rebuild state management as error-prone, recommending dynamic dependency checking instead. No fix or merge details were provided. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed without resolution. The proposed dynamic dependency discovery for Snapcraft build caching remains unimplemented, likely abandoned or superseded by newer caching architectures. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #1531481 snapcraft should setup search paths/flags for parts built after parts | snapcraft (launchpad) | closed | Closed without resolution. The request to auto-configure search paths for dependent parts was abandoned. Later snapcraft updates added native environment propagation and part dependency handling, rendering the feature obsolete. | |
| #1794497 Snapcraft can't re-use build VM if anything went wrong with the initial setup | snapcraft (launchpad) | closed | Closed and likely abandoned. Snapcraft lacks automatic recovery for failed VM setups, forcing manual cleanup. No resolution was provided, suggesting the issue was superseded by updated build environment handling. | |
| #1583718 snapcraft command doesn't include expected changes | snapcraft (launchpad) | closed | Closed without resolution or comments. The build caching bug was abandoned or superseded by later improvements, requiring manual cache cleaning as a workaround. | |
| #1789206 cannot rebuild snapcraft | snapcraft (launchpad) | closed | Closed without resolution. The request to enable snapcraft self-rebuilding via build caching was abandoned due to prolonged inactivity and lack of implementation. | |
| #1660696 Snapcraft is testing file collisions on unbuilt parts | snapcraft (launchpad) | closed | Closed without a merged fix. Snapcraft incorrectly checked file collisions on unbuilt parts, causing file not found errors. The author verified a local workaround, but the report was closed without upstream resolution or discussion. | |
| #1746612 Snapcraft cleanbuild doesn't work if you're not using the LXD snap | snapcraft (launchpad) | closed | Closed without resolution. Snapcraft hardcodes the LXD snap path during cleanbuild, causing failures with deb-installed LXD. The report appears abandoned or superseded by updated Snapcraft versions that dynamically detect LXD installations. | |
| #1659085 snapcraft needs to migrate to a snap directory | snapcraft (launchpad) | closed | Closed without resolution. The proposed migration of snapcraft to a snap directory, including build artifact relocation and plugin updates, was abandoned or superseded by subsequent architecture changes. | |
| #1677974 snap build dependencies | snapcraft (launchpad) | closed | Closed without resolution. The request to specify snap packages as build dependencies in snapcraft.yaml appears abandoned or superseded by upstream Snapcraft updates that later added native build dependency support. | |
| #1670100 Snapcraft includes files from installed snaps in new snap | snapcraft (launchpad) | closed | Abandoned due to inactivity. Snapcraft incorrectly bundled files from previously installed snaps into new builds, but no fix or follow-up was provided. | |
| #1799925 snapcraft gives conflicting advice for cleaning parts | snapcraft (launchpad) | closed | Closed without a fix. Snapcraft incorrectly advised running snapcraft clean with part and step flags, which were unsupported. The author worked around it with a full clean. The report appears abandoned or superseded by later updates. |