← Back to issue list

pip fails when project requirement result binary already exists

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1861638
Type
issue
State
open
Author
~daveparrish
Labels
pip plugin
Created
Updated
Closed

Current evaluation

Snapcraft python plugin pip download fails on rebuild when a result binary already exists, because pip lacks --exists-action. Reporter included a patch and error trace; no maintainer response, no labels, 0 comments, ~6.5 years old.

Suggested action: needs triage

Reason: No labels, no maintainer comments, no assignee, and 0 comments in ~6.5 years indicate the issue was never triaged. The reporter supplied a patch and full error trace (EOFError from pip's ask_path_exists during pip download), so it is a real bug, not a support request, but it has received no maintainer acknowledgement.

Impact: 40 Quick Win: 26.0 Staleness: 95 Complexity: 35 Confidence: 55 Support Request: 10

Issue body

When trying to Snap the JoinMarket project on Github. I noticed that when running snapcraft for the second time, would fail because a result binary already exists, and pip didn't have a `--exists-action` set. In the patch, I'm not sure if it would be better to (i)gnore or (w)ipe for the default action. I've included a patch which fixes the issue for me. I also have included the error message I am getting, along with my snapcraft.yml. Error message: ``` Updating pull step for joinmarket (source changed) Obtaining file:///root/project/jmbase (from -r /root/parts/joinmarket/build/requirements/base.txt (line 1)) The file /root/parts/joinmarket/python-packages/joinmarketbase-0.6.1.zip exists. (i)gnore, (w)ipe, (b)ackup, (a)bort ERROR: Exception: Traceback (most recent call last):   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 186, in _main     status = self.run(options, args)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/commands/download.py", line 135, in run     resolver.resolve(requirement_set)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 177, in resolve     discovered_reqs.extend(self._resolve_one(requirement_set, req))   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 333, in _resolve_one     abstract_dist = self._get_abstract_dist_for(req_to_install)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 265, in _get_abstract_dist_for     return self.preparer.prepare_editable_requirement(req)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 559, in prepare_editable_requirement     req.archive(self.download_dir)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/req/req_install.py", line 721, in archive     display_path(archive_path), ('i', 'w', 'b', 'a'))   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/utils/misc.py", line 223, in ask_path_exists     return ask(message, options)   File "/root/parts/joinmarket/install/lib/python3.6/site-packages/pip/_internal/utils/misc.py", line 241, in ask     response = input(message) EOFError: EOF when reading a line Failed to run '/root/stage/usr/bin/python3 -m pip download --disable-pip-version-check --dest /root/parts/joinmarket/python-packages --requirement /root/parts/joinmarket/build/requirements/gui.txt': Exited with code 2. ``` snapcraft.yaml ``` name: joinmarket base: core18 version: master summary: Software to assist in creating bitcoin CoinJoin transactions description: |   JoinMarket is software to create a special kind of bitcoin transaction called a CoinJoin transaction. It's aim is to improve the confidentiality and privacy of bitcoin transactions. confinement: devmode grade: devel #icon: icon.png apps:   joinmarket-qt:     extensions:       - kde-neon     command: usr/bin/jm     plugs:       - network       - network-bind       - desktop       - desktop-legacy       - x11       - wayland       - home parts:   joinmarket:     plugin: python     source: .     requirements:       - requirements/gui.txt     override-build: |       snapcraftctl build       pwd       ls -alh       #cd ../install       mkdir -p /root/parts/joinmarket/install/opt       cp -rp /root/parts/joinmarket/build /root/parts/joinmarket/install/opt       mv /root/parts/joinmarket/install/opt/build /root/parts/joinmarket/install/opt/joinmarket   # Install desktop launcher   launchers:     plugin: dump     source: .     organize:       'snap/jm': usr/bin/jm     after:       - joinmarket ```

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.8-27b
Impact: 40
Quick Win: 26.0
Staleness: 95
Complexity: 35
Confidence: 55
Support Request: 10
needs triage Snapcraft python plugin pip download fails on rebuild when a result binary already exists, because pip lacks --exists-action. Reporter included a patch and error trace; no maintainer response, no labels, 0 comments, ~6.5 years old.
qwen/qwen3.6-35b-a3b
Staleness: 95
Complexity: 25
Confidence: 90
Support Request: 0
close stale snapcraft Python plugin fails on rebuilds when pip prompts for existing files, causing an EOFError. Reported 6+ years ago with no maintainer response.
qwen/qwen3.6-35b-a3b
Staleness: 98
Complexity: 20
Confidence: 90
Support Request: 10
close stale Snapcraft's Python plugin fails on re-runs when pip encounters an existing requirement archive, prompting interactively and causing an EOFError. The report includes a patch and error logs but has seen no maintainer activity in over six years.
qwen3.6-35b-a3b-mtp-q6
Staleness: 95
Complexity: 15
Confidence: 85
Support Request: 10
close stale snapcraft python plugin fails on second build when pip prompts for existing archives in non-interactive mode. Filed over six years ago with zero maintainer interaction.
qwen3.6-35b-a3b-mtp-q6
Staleness: 95
Complexity: 15
Confidence: 90
Support Request: 10
close stale Bug report where snapcraft fails on re-runs because pip prompts for existing files in non-interactive mode. Issue is 6+ years old, has no maintainer response, and references outdated pip internals no longer present in modern versions.

Update history

No update history recorded yet.

Related issues

No related issues found above the similarity threshold.