opam icon indicating copy to clipboard operation
opam copied to clipboard

pin-depends system tries to remove part of the content

Open kit-ty-kate opened this issue 9 months ago • 2 comments

Issue encounted by @leostera during the mirageOS retreat

Reproducible minimal test case:

cd /tmp
mkdir srv
mkdir blah
mkdir blah/blah
echo 'opam-version: "2.0"' > blah/blah.opam
tar cvzf srv/blah blah/
cd srv
python3 -m http.server
$ cat test.opam
opam-version: "2.0"
pin-depends: [
  ["blah.dev" "http://localhost:8000/blah"]
]
$ opam pin .
Package test does not exist, create as a NEW package? [y/n] y
The following additional pinnings are required by test.dev:
  - blah.dev at http://localhost:8000/blah
Pin and install them? [y/n] y
Package blah does not exist, create as a NEW package? [y/n] y
[blah.dev] fetching sources failed: Download failed
[ERROR] Error getting source from http://localhost:8000/blah:
          - http://localhost:8000/blah (download failed)

using debug-level=3 you can see what actually fail:

error: Cannot remove ~/.opam/trunk/.opam-switch/sources/blah/blah (opam: "unlink" failed on ~/.opam/trunk/.opam-switch/sources/blah/blah: Is a directory).

It turns-out the pin-depends system seems to be downloading and extracting the pin-depends twice or something and failing because it's trying to remove a file that is currently a directory

Tested with both opam 2.1.5 and 2.2.0~beta2

kit-ty-kate avatar Apr 25 '24 22:04 kit-ty-kate