← Back to issue list

oci: fix handling of subdirs in usrmerge

View original Github issue

Metadata

Project
rockcraft
Number
#200
Type
pull request
State
merged
Author
tigarmo
Labels
—
Created
Updated
Closed

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.
85%
#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.
84%
#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.
83%
#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.
78%