oci: fix handling of subdirs in usrmerge
Metadata
Current evaluation
Merged in PR #200 as commit 3f43e30e, fixing OCI usrmerge so subdirectories beneath base-layer symlinks are written to the symlink target.
Resolution: closed resolved
Reason: PR #200 was approved and merged as commit 3f43e30e. It corrects payload paths such as bin/dir1/dir2 when bin is a lower-layer symlink.
Evaluated by: mr-cal-bot
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 |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Merged in PR #200 as commit 3f43e30e, fixing OCI usrmerge so subdirectories beneath base-layer symlinks are written to the symlink target. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged in rockcraft#200; fixed OCI usrmerge handling so payload subdirectories beneath base-layer symlinks are written to the symlink target instead of inside the symlink directory. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged an OCI usrmerge fix so payload subdirectories beneath base-layer symlinks, such as bin/dir1/dir2, are placed in the symlink target instead of inside bin. | |
| 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/. |
Update history
No update history recorded yet.
Related work
-
Related To:
canonical/rockcraft#154
(confidence 88%)
Earlier work introduced handling for usrmerged bases and base-layer symlinks.
-
Related To:
canonical/rockcraft#163
(confidence 84%)
Follow-on OCI usrmerge handling covered base-layer symlinks with opaque whiteouts.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #187 usrmerge handling is not dealing with subdirectories | rockcraft | closed | Fixed by PR #200 (commit 3f43e30e, "oci: fix handling of subdirs in usrmerge"); files and subdirs under base-layer usrmerge symlinks (e.g. lib) are now archived at the symlink target path. Closed by maintainer tigarmo. | |
| #204 oci: handle duplicate directories because of usrmerge | rockcraft | merged | Merged #204 as c3382fc2, fixing OCI failures from usrmerge-aliased duplicate directories with matching attributes; mismatched attributes and file conflicts still error. | |
| #211 oci: fix handling of symlink subdirs | rockcraft | merged | Merged PR #211 in commit 1783fa2a, fixing OCI archive creation to include symlinked subdirectories and resolving #208. | |
| #154 first pass at handling usrmerge | rockcraft | merged | Merged PR #154 (commit 607d934f, "oci: handle symlinks in base layer (usrmerge)"). add_layer() now takes the extracted base, so files primed under /lib or /bin are written to the usrmerge symlink target (/usr/lib, /usr/bin) instead of breaking Ubuntu-based rocks; lifecycle passes the base forward. |