oci: fix handling of subdirs in usrmerge
Metadata
Current evaluation
Merged fix for OCI payload handling where subdirectories were incorrectly placed in symlinked parent directories instead of their targets. Resolved plugin failures for directories like lib/. Approved by reviewers and passed CI checks.
Suggested action: —
No scores available.
Issue body
The scenario that was broken was: a payload like "bin/dir1/dir2" where "bin" is a symlink to somewhere on the lower (base) layer. The subdirs "dir1" and "dir2" were being incorrectly placed in "bin" instead of in the symlink target.
This broke quite a few plugins that place file trees in places like "lib/".
- [ ] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
-----
CRAFT-1605
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged fix for OCI payload handling where subdirectories were incorrectly placed in symlinked parent directories instead of their targets. Resolved plugin failures for directories like lib/. Approved by reviewers and passed CI checks. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged fix for OCI usrmerge handling. Corrected incorrect placement of subdirectories when parent paths are symlinks to lower layers, resolving plugin failures for paths like lib/. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged fix for OCI usrmerge handling that incorrectly placed subdirectories in symlinked parent paths instead of their actual targets. Resolves plugin failures for paths like lib/ and addresses CRAFT-1605. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #204 oci: handle duplicate directories because of usrmerge | rockcraft | merged | Merged. Resolves CRAFT-1634 and issue #203 by handling usrmerge duplicate directories in OCI payloads. The fix verifies matching attributes before merging directories into a single layer entry and raises errors for conflicts. Approved, passed CI, and modified six files. | |
| #211 oci: fix handling of symlink subdirs | rockcraft | merged | Merged fix to correctly include symlinked subdirectories in Rockcraft OCI tar archives. Contributor implemented the change, reviewer added tests, and the pull request was approved and merged, resolving issue #208. | |
| #231 oci: support file collisions if the files match | rockcraft | merged | Merged changes handle file collisions in OCI payload layers when files match in attributes and contents, resolving issue #228. Approved by two reviewers and passing CI, enabling Ubuntu packages to serve as both overlay and stage packages. | |
| #154 first pass at handling usrmerge | rockcraft | merged | Merged. Fixes rock packing breakage from usrmerge symlinks by redirecting files to their target directories. Updates oci.Image.add_layer() and lifecycle packing, adds a Jammy CI runner. Approved by three reviewers. |