fix(overlay): detect conflicts between overlay and install
Metadata
Current evaluation
Merged fix enhancing Stage step collision detection to account for overlay contents, preventing conflicts with install directories. Includes integration tests, passed all CI checks, and received approval from three reviewers.
Suggested action: —
No scores available.
Issue body
This commit enhances the collision detection in the Stage step to also take into account contents coming from the overlay. The standard collision detection was done by comparing the contents of the install directories for the existing parts - this behavior persists, but now we *also* take into account the contents of each overlay-enabled part's layer directory, considering the layer stack to only report collisions between items that would *actually* be staged.
To validate the implementation, this commit adds extensive integration tests for scenarios that *must* collide, plus scenarios that *must not*.
- [ ] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [ ] Have you added an entry to the changelog (`docs/reference/changelog.rst`)?
-----
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged fix enhancing Stage step collision detection to account for overlay contents, preventing conflicts with install directories. Includes integration tests, passed all CI checks, and received approval from three reviewers. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged a fix enhancing Stage step collision detection to include overlay contents alongside install directories. Prevents overlay-install conflicts and adds integration tests for colliding and non-colliding scenarios. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #1618 fix: handle dependencies when organizing to overlay | craft-parts | merged | Merged following approval and successful CI checks. Resolves dependency ordering during overlay organization by prioritizing BUILD steps over dependency STAGE steps, fixing issue #1611. Code was rebased on main prior to integration. | |
| #406 steps: handle overlay feature in step lists | craft-parts | merged | Merged after reviewer approval and passing CI. The change updates step list logic to exclude the overlay step when the feature is disabled, modifying 10 files with 184 additions and 13 deletions. | |
| #1314 fix: do not collide on "similar" symlinks between overlay and install dir | craft-parts | merged | Merged a fix for symlink collisions between overlay and install directories. The author refactored paths_collide for Rockcraft compatibility. All CI checks passed, reviews were approved, and the change resolved issue #1293. | |
| #127 overlay: add overlay manager mount operations (CRAFT-80) | craft-parts | merged | Merged implementation of mount operations for the overlay manager, enabling overlay stack mounting during build steps. Approved by two reviewers, passed CI, and added 265 lines across three files. Package installation is deferred to a future commit. | |
| #1579 fix(state): track override-overlay changes | craft-parts | merged | Merged fix for #1566 that tracks override-overlay changes in OverlayState.properties_of_interest() for consistent dirty checks. Approved by two reviewers, passed CI except unrelated OSV-scanner warnings, and includes focused unit tests. | |
| #1617 fix: migrate overlay files before running stage or prime | craft-parts | merged | Merged fix that migrates overlay files before stage or prime steps. Resolves a state tracking bug causing priming failures with symlinks. Approved by reviewers and passed all CI checks. | |
| #119 overlay: add overlay hash to build and stage states (CRAFT-489) | craft-parts | merged | Merged pull request implementing overlay verification hashes in build and stage states to ensure proper step invalidation. Approved by two reviewers, passed CI checks, and successfully integrated. | |
| #121 overlay: migrate overlay data to stage and prime (CRAFT-468, CRAFT-82) | craft-parts | merged | Merged after two approvals and CI. Migrates overlay data to stage and prime, translates overlayfs whiteouts and opaque directories to OCI, and cleans shared areas. Collision detection is deferred. | |
| #1619 fix: migrate overlay files before running stage or prime (#1617) | craft-parts | merged | Merged cherry-pick of canonical/craft-parts#1617. Resolves changelog conflicts and migrates overlay files before stage or prime execution. Approved by two reviewers and merged following CI validation. | |
| #667 fix: make overlay and partition features mutually exclusive | craft-parts | merged | Merged a fix enforcing mutual exclusivity between overlay and partitions features, as they are orthogonal. Approved by two reviewers, passed CI, and resolves issue #632. |