Unable to import rock into the docker daemon when packing with python plugin and staging python3-dev
Metadata
Current evaluation
Fixed by PR #200 (commit 3f43e30e), which corrected OCI handling of subdirectories under usrmerge and prevented conflicting Python symlinks from corrupting the rock.
Resolution: closed resolved
Reason: The problem was traced to Rockcraft's usrmerge handling colliding with symlinks created by the Python plugin. PR #200, commit 3f43e30e, fixed handling of usrmerge subdirectories and resolved the import failure.
Evaluated by: mr-cal-bot
No scores available.
Issue body
Hi!
I've just noticed `skopeo` fails to import the resulting rock when packing with the python plugin:
```
name: indico
summary: Indico rock
description: Indico OCI image for the Indico charm
version: "1.0"
base: ubuntu:22.04
build-base: ubuntu:22.04
license: Apache-2.0
platforms:
amd64:
parts:
indico:
stage-packages:
- python3-dev
- python3-venv
source: plugins
plugin: python
```
`skopeo --insecure-policy copy oci-archive:indico_1.0_amd64.rock docker-daemon:localhost:32000/indico:latest` seems to execute successfully but when I run `docker image ls` there are no results. However, it works if I change the plugin:
```
name: indico
summary: Indico rock
description: Indico OCI image for the Indico charm
version: "1.0"
base: ubuntu:22.04
build-base: ubuntu:22.04
license: Apache-2.0
platforms:
amd64:
parts:
indico:
stage-packages:
- python3-dev
- python3-venv
source: plugins
plugin: nil
```
After some changes in my rockcraft.yaml to provide a narrower use case, I noticed the following does work with the python plugin, so this likely has to do with the staged packages, either python3-dev or pythone-venv:
```
name: indico
summary: Indico rock
description: Indico OCI image for the Indico charm
version: "1.0"
base: ubuntu:22.04
build-base: ubuntu:22.04
license: Apache-2.0
platforms:
amd64:
parts:
indico:
stage-packages:
- build-essential
source: plugins
plugin: python
```
Let me know if there's anything else you'd like me to provide in order to pinpoint the issue.
Thank you
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Fixed by PR #200 (commit 3f43e30e), which corrected OCI handling of subdirectories under usrmerge and prevented conflicting Python symlinks from corrupting the rock. | |
| stealth/space-bunny-alpha | — | closed stale | Closed after diagnosis of duplicate layer paths caused by usrmerge/Python virtualenv symlink conflicts; no resolving PR or release was identified. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed after identifying the root cause: duplicate file paths caused by a conflict between Rockcraft's usrmerge handling and the Python plugin's virtual environment symlinks. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed after identifying a symlink conflict between usrmerge and the Python plugin that creates duplicate paths in image layers, blocking Docker import. Resolution requires updating Rockcraft's staging logic to avoid overwriting existing base paths. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed without a fix. Root cause identified as symlink conflicts between the Python plugin and base image usrmerge handling, which create duplicate paths and break skopeo imports. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed after root cause analysis identified a usrmerge and Python plugin symlink conflict causing duplicate tar paths, blocking skopeo imports. Requires a fix to rockcraft's staging path deduplication logic. |
Update history
No update history recorded yet.
Related work
-
Likely Fixed By:
canonical/rockcraft#200
(confidence 99%)
Merged commit 3f43e30e fixes OCI handling of subdirectories in usrmerge, matching the diagnosed cause.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #228 Conflicting files when packing a ROCK with overlay-packages on an ubuntu base | rockcraft | closed | Usrmerge file collisions between overlay-packages and stage-packages on an Ubuntu base broke `rockcraft pack`. Fixed by merged PR #231 (commit 5ec8b09f), which allows identical files at colliding OCI paths. |