← Back to issue list

Overlay directory is not removed on a clean

View original Github issue

Metadata

Project
craft-parts
Number
#1207
Type
issue
State
closed
Author
lengau
Labels
Status: Triaged Type: Bug
Created
Updated
Closed

Current evaluation

Fixed in merged PR #1208 (commit bea8d2dc), which removes executor overlay directories during cleanup.

Resolution: closed resolved

Reason: PR #1208 was merged as commit bea8d2dc and explicitly fixes #1207 by cleaning executor overlay directories; all CI checks passed.

Evaluated by: mr-cal-bot

No scores available.

Issue body

### Bug Description The overlay directory isn't being removed on a clean. See: https://github.com/canonical/craft-application/actions/runs/16998219062/job/48193970471?pr=860#step:4:124 ### To Reproduce Run the craft-application `test_run_and_clean_all_parts` integration test. ### part yaml ```shell ``` ### Relevant log output ```shell DEBUG craft_parts.executor.executor:executor.py:289 verify plugin environment for part 'my-part' DEBUG craft_parts.executor.executor:executor.py:289 verify plugin environment for part 'your-part' DEBUG craft_parts.executor.executor:executor.py:207 execute action my-part:Action(part_name='my-part', step=Step.PULL, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.executor.executor:executor.py:207 execute action your-part:Action(part_name='your-part', step=Step.PULL, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.executor.executor:executor.py:207 execute action my-part:Action(part_name='my-part', step=Step.BUILD, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/state/pull DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/build DEBUG craft_parts.executor.step_handler:step_handler.py:562 Executing PosixPath('/tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/run/build.sh') DEBUG craft_parts.executor.executor:executor.py:207 execute action your-part:Action(part_name='your-part', step=Step.BUILD, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/state/pull DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/build DEBUG craft_parts.executor.step_handler:step_handler.py:562 Executing PosixPath('/tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/run/build.sh') DEBUG craft_parts.executor.executor:executor.py:207 execute action my-part:Action(part_name='my-part', step=Step.STAGE, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.executor.executor:executor.py:207 execute action your-part:Action(part_name='your-part', step=Step.STAGE, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.executor.executor:executor.py:207 execute action my-part:Action(part_name='my-part', step=Step.PRIME, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.executor.executor:executor.py:207 execute action your-part:Action(part_name='your-part', step=Step.PRIME, action_type=ActionType.RUN, reason=None, project_vars=None, properties=ActionProperties(changed_files=None, changed_dirs=None)) DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean my-part:5 DEBUG craft_parts.executor.part_handler:part_handler.py:1111 clean shared dir: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/prime for step: 5 for partition None DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/state/prime DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/state/prime DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean my-part:4 DEBUG craft_parts.executor.part_handler:part_handler.py:1111 clean shared dir: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/stage for step: 4 for partition None DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/state/stage DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/state/stage DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/state/stage DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/state/stage DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean my-part:3 DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/build DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/install DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/export DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean my-part:1 DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/my-part/src DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean your-part:5 DEBUG craft_parts.executor.part_handler:part_handler.py:1111 clean shared dir: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/prime for step: 5 for partition None DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/state/prime DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean your-part:4 DEBUG craft_parts.executor.part_handler:part_handler.py:1111 clean shared dir: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/stage for step: 4 for partition None DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/state/stage DEBUG craft_parts.state_manager.states:states.py:53 load state file: /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/state/stage DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean your-part:3 DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/build DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/install DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/export DEBUG craft_parts.executor.part_handler:part_handler.py:1034 clean your-part:1 DEBUG craft_parts.executor.part_handler:part_handler.py:1305 remove directory /tmp/pytest-of-runner/pytest-0/test_run_and_clean_all_parts_t0/work/parts/your-part/src ```

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Fixed in merged PR #1208 (commit bea8d2dc), which removes executor overlay directories during cleanup.
stealth/space-bunny-alpha — closed resolved Overlay cleanup was fixed by merged PR canonical/craft-parts#1208 (commit bea8d2dc), which now removes overlay directories during executor cleanup.
stealth/space-bunny-alpha — closed resolved Overlay cleanup was fixed by merged PR canonical/craft-parts#1208 (commit bea8d2dc), which removes overlay directories during executor cleanup.
stealth/space-bunny-alpha — closed resolved Fixed by merged PR #1208 (commit bea8d2dc), which now removes overlay directories during executor cleanup.
qwen/qwen3.6-35b-a3b — — Closed without a documented fix. The report was synced to internal Jira ticket CRAFT-4697, indicating it was moved for internal tracking rather than resolved on GitHub.
qwen/qwen3.6-35b-a3b — — Closed and synced to internal Jira ticket CRAFT-4697. No public fix or pull request was merged to resolve the overlay directory cleanup bug.
qwen/qwen3.6-35b-a3b — — Overlay directory not removed on clean was not fixed. The report was closed without a merge. An internal Jira ticket (CRAFT-4697) was created to track the bug.
qwen/qwen3.6-35b-a3b — — Closed and synced to internal Jira ticket CRAFT-4697. No fix or pull request was merged on GitHub. The bug was triaged and moved to internal tracking.
qwen3.6-35b-a3b-mtp-q6 — — Abandoned in the repository and synced to internal Jira ticket CRAFT-4697 for tracking. No fix or pull request was merged to resolve the overlay directory cleanup bug.

Update history

No update history recorded yet.

Related work

Related issues

Issue Project State Summary Similarity
#1208 fix(executor): clean overlay directories craft-parts merged Merged into main as commit bea8d2dc, fixing #1207/CRAFT-4697 by removing overlay directories during executor cleanup; all CI checks passed.
80%
#1222 Clean doesn't remove the overlay directory craft-parts closed Fixed in 2.20.1 by merged PR #1208 (bea8d2dc); PR #1223 merged the release branch into main (30ea3701), restoring overlay-directory cleanup.
79%
#345 executor: fix directory cleaning craft-parts merged Merged PR #345 fixed executor cleanup logic in commit b0086bbe, preventing lifecycle directories from unexpectedly remaining and resolving #329.
72%