Closed silky closed 8 years ago
Good point, fixed!
Then again, perhaps the root issue is not addressed - why are these SHAs missing?
i'm not too sure about that one.
let me know if you want more information from me.
Oh yeah, to be clear that wasn't a request for more information. More like "this needs further investigation" :)
The failure case here is just a fallback to the old behavior where cabal metadata wasn't fixed to a particular revision. So thankfully this shouldn't be very problematic in practice. Good to fix, though!
I seem to be running into a similar issue, though the output is a bit different - notably the "Left ..." result:
> stack --version
Version 1.1.2, Git revision cebe10e845fed4420b6224d97dcabf20477bbd4b (3646 commits) x86_64 hpack-0.14.0
> stack build
Downloading nightly-2016-05-20 build plan ... Downloaded nightly-2016-05-20 build plan.
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz) ... Downloading package index from https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz) ...
Populating index cache ... Populated index cache.
Did not find .cabal file for zot-0.0.3 with Git SHA of f9092bae03d0044d2b4e3f33609c9544e8c46b19
Left /root/.stack/indices/Hackage/git-update/all-cabal-hashes/.git/objects/pack: listDirectory: does not exist (No such file or directory)
Did not find .cabal file for zlib-lens-0.1.2.1 with Git SHA of b5797267b30c16afcccbd42fa0ce4b9fa58a7ca9
Left /root/.stack/indices/Hackage/git-update/all-cabal-hashes/.git/objects/pack: listDirectory: does not exist (No such file or directory)
Did not find .cabal file for zlib-enum-0.2.3.1 with Git SHA of 5bb46141c62ea8a473a2cfac9293a018c804189a
...
I'm using stack on bitbucket's new "pipelines" feature which executes stack from the haskell:7.10.3 docker image.
The result of using lts-5.2 is similar but different:
stack build
Downloading lts-5.2 build plan ... Downloaded lts-5.2 build plan.
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz) ... Downloading package index from https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz) ... Populating index cache ... Populated index cache.
/opt/atlassian/bitbucketci/agent/build/.stack-work/downloaded/NC9VHrq5ky0p/: getDirectoryContents: does not exist (No such file or directory)
Another data point: I saw a bunch of these messages after upgrading stack (from 1.1.0 x86_64 hpack-0.13.0 to 1.1.2 x86_64 hpack-0.14.0) and running stack install. I did stack clean and they went away.
I see the Did not find .cabal file
messages every time I build a project with a different (dev) version of stack.
Edit: I actually see these messages also for other commands, like stack path
.
I've seen these messages lately as well, seemingly related to using the latest stack
in environments that don't have a ~/.stack
directory yet. For example:
(Modified instructions from trying to reproduce this bug)
docker run -it danburton/stackage-build-server:2016-07-11
cd ~
stack unpack gi-gtk-3.0.4
cd gi-gtk-3.0.4
stack init --resolver nightly-2016-06-08
Right Nothing
Did not find .cabal file for text-show-3.2.2 with Git SHA of dd7d87942bbe93e92db8be47a37172ac12be63fa
Right Nothing
Did not find .cabal file for socks-0.5.5 with Git SHA of a4fe3dade53c652f5ef4d04218d17a989e8414e1
Right Nothing
Did not find .cabal file for servant-yaml-0.1.0.0 with Git SHA of 2ef4721a30ef0c982f26f67688cfa09a307a62fc
Right Nothing
Did not find .cabal file for servant-swagger-1.1 with Git SHA of a35531ce5ae19faf483b4a7c5ceb73b67b0612e6
Right Nothing
Did not find .cabal file for servant-lucid-0.7.1 with Git SHA of cf726c02fbee0a185c0b861fcd8cbf1863c7b414
Last month when I ran this with snoyberg/stackage:nightly
, these things were not printed to the console.
I still experience the same bug.
I'm experiencing the same issue inside a docker container:
When I run the cmd
stack install --stack-root $PWD/.stack-root/ --work-dir .stack-work-docker/ --local-bin-path artifacts/
It shows this
Downloading lts-6.10 build plan ...
Downloaded lts-6.10 build plan.
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz) ...
Downloading package index from https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz
Populating index cache ...
Populated index cache.
Did not find .cabal file for zot-0.0.3 with Git SHA of f9092bae03d0044d2b4e3f33609c9544e8c46b19
Left /src/.stack-root/indices/Hackage/git-update/all-cabal-hashes/.git/objects/pack: listDirectory: does not exist (No such file or directory)
Did not find .cabal file for zlib-lens-0.1.2.1 with Git SHA of b5797267b30c16afcccbd42fa0ce4b9fa58a7ca9
Left /src/.stack-root/indices/Hackage/git-update/all-cabal-hashes/.git/objects/pack: listDirectory: does not exist (No such file or directory)
And after various similar lines, I get
Left /src/.stack-root/indices/Hackage/git-update/all-cabal-hashes/.git/objects/pack: listDirectory: does not exist (No such file or directory)
Did not find .cabal file for AC-Vector-2.3.2 with Git SHA of 32d97a60969fe6912b33597e7399c407b5f2e39a
Left /src/.stack-root/indices/Hackage/git-update/all-cabal-hashes/.git/objects/pack: listDirectory: does not exist (No such file or directory)
/src/.stack-work-docker/downloaded/9rVosC0PeQVv/: getDirectoryContents: does not exist (No such file or directory)
I am new to Haskell and today I attempted to install Haskell for Windows using Stack. However, I get similar errors as in this issue. Number of errors is too long to be copied here, so I provide you with a link instead.
While I have clearly run stack install outside a project, I get same errors on the first time I run stack setup.
Version 1.1.2, Git revision c6dac65e3174dea79df54ce6d56f3e98bc060ecc (3647 commits) x86_64 hpack-0.14.0 Downloaded from https://www.stackage.org/stack/windows-x86_64-installer
I was working on getting https://github.com/lukexi/rumpus built on windows yesterday, and also ran into this. I think it just happens when you don't have git. We need to identify when we shouldn't expect to find any SHAs for snapshot packages.
What I got from looking at the code and hadn't got from reading here: master
won't print Right Nothing
or Left ...
, but that fix is not yet released.
The "Did not find .cabal file" message is still there and not fully explained.
Another observation is that when I use Stack to download contents of stack_root, mirror is https://s3.amazonaws.com/hackage.fpcomplete.com, size ends up being 262MB. But when someone else in another country uses Stack, download mirror is Github and contents end up being 451MB. Is the size difference explained by missing cabal/SHA files, or is there something else amiss?
@KeeperB5 interesting catch! Do you have the two actual URLs for one to look at? If mirrors aren't mirrors, debugging this issue isn't going to be fun.
Well, my index is fetched from https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz, but I believe the GitHub mirror had https://github.com/commercialhaskell/all-cabal-hashes.
How does Stack pick a mirror and do we have any way to manually select a mirror?
I've had the "Did not find .cabal file" message pop up in the middle of a build while trying to reproduce https://github.com/commercialhaskell/stack/issues/2422:
~/t/postgres-tmp> stack build --trace
...
attoparsec-0.13.0.2: copy/register
Did not find .cabal file for aeson-0.11.2.0 with Git SHA of 2057e715a488cd9d2456fdb1c6c4b0d6142c539e
aeson-0.11.2.0: configure
aeson-0.11.2.0: build
aeson-0.11.2.0: copy/register
...
I can't rule out that I had just started using another stack
version in another thread.
@mgsloan:
I was working on getting https://github.com/lukexi/rumpus built on windows yesterday, and also ran into this. I think it just happens when you don't have git.
Are you saying you got the "Right Nothing" lines with stack-HEAD
? Or do you only see the "Did not find .cabal file" lines?
The "Did not find .cabal file" lines certainly appear on Linux with git installed.
BTW I currently think this issue – while not a dangerous bug – is sufficiently widespread and irritating that it should be fixed before a new release.
@sjakobi Is this issue in part expected when mixing stack versions? I see more messages when I ran stack exec -- stack foo
, where the outer stack
is 1.1.2. I'd really wish for RTFM as an answer, but I haven't seen the manual I'd need and get too little of the architecture ;-).
I don't think this is windows-specific. I've seen it many times and have been using only gnu/linux and mac.
Windows-label removed.
Is this issue in part expected when mixing stack versions?
I can reproduce it reliably by switching between stack-1.1.2 and stack-HEAD between rebuilds:
~/t/postgres-tmp> /usr/bin/stack build -v
Version 1.1.2, Git revision cebe10e845fed4420b6224d97dcabf20477bbd4b (3646 commits) x86_64 hpack-0.14.0
...
2016-08-09 15:57:00.072316: [debug] Checking for project config at: /home/simon/tmp/postgres-tmp/stack.yaml @(stack_K1e6VSKnzs1HNYmTJGAgTQ:Stack.Config src/Stack/Config.hs:811:9)
2016-08-09 15:57:02.076435: [debug] Trying to decode /home/simon/.stack/indices/Hackage/00-index.cache @(stack_K1e6VSKnzs1HNYmTJGAgTQ:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5)
2016-08-09 15:57:02.076750: [debug] Failure decoding /home/simon/.stack/indices/Hackage/00-index.cache @(stack_K1e6VSKnzs1HNYmTJGAgTQ:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:59:13)
Populated index cache.
2016-08-09 15:57:09.196985: [warn] Did not find .cabal file for servant-blaze-0.7.1 with Git SHA of a611898708511c515ae69860506efb2da87bbfc9
Right Nothing @(stack_K1e6VSKnzs1HNYmTJGAgTQ:Stack.Fetch src/Stack/Fetch.hs:289:17)
2016-08-09 15:57:11.214682: [warn] Did not find .cabal file for diagrams-lib-1.3.1.3 with Git SHA of e47d8a2b5f237ed5da84b35290640587d43bbccf
Right Nothing @(stack_K1e6VSKnzs1HNYmTJGAgTQ:Stack.Fetch src/Stack/Fetch.hs:289:17)
2016-08-09 15:57:12.216469: [warn] Did not find .cabal file for aeson-0.11.2.0 with Git SHA of 2057e715a488cd9d2456fdb1c6c4b0d6142c539e
Right Nothing @(stack_K1e6VSKnzs1HNYmTJGAgTQ:Stack.Fetch src/Stack/Fetch.hs:289:17)
...
~/t/postgres-tmp> stack build -v
Version 1.1.3, Git revision 49d96c9cbbd34ab33af02f3957b33fdd9575a7f8 (dirty) (3945 commits) x86_64 hpack-0.14.0
...
2016-08-09 15:57:20.471192: [debug] Trying to decode /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:68:5)
2016-08-09 15:57:20.480004: [debug] Error while decoding /home/simon/.stack/indices/Hackage/00-index.cache: PeekException {peekExBytesFromEnd = 21369809, peekExMessage = "Attempted to read too many bytes for Data.ByteString.ByteString. Needed -5665116520842264576, but only 21369809 remain."} (this might not be an error, when switching between stack versions) @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:96:18)
2016-08-09 15:57:20.480258: [debug] Failure decoding /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:75:13)
Populated index cache.
2016-08-09 15:57:29.767894: [debug] Encoding /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:51:5)
2016-08-09 15:57:30.705207: [debug] Finished writing /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:55:5)
2016-08-09 15:57:31.552932: [warn] Did not find .cabal file for servant-blaze-0.7.1 with Git SHA of a611898708511c515ae69860506efb2da87bbfc9 @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:295:17)
2016-08-09 15:57:31.553089: [debug] Right Nothing @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:301:17)
2016-08-09 15:57:33.686882: [warn] Did not find .cabal file for diagrams-lib-1.3.1.3 with Git SHA of e47d8a2b5f237ed5da84b35290640587d43bbccf @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:295:17)
2016-08-09 15:57:33.687049: [debug] Right Nothing @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:301:17)
2016-08-09 15:57:34.721612: [warn] Did not find .cabal file for aeson-0.11.2.0 with Git SHA of 2057e715a488cd9d2456fdb1c6c4b0d6142c539e @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:295:17)
2016-08-09 15:57:34.721781: [debug] Right Nothing @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:301:17)
...
Deleting the build plan cache and and the index cache also triggers it reliably:
~/t/postgres-tmp> rm /home/simon/.stack/build-plan-cache/x86_64-linux/nightly-2016-07-30.cache
~/t/postgres-tmp> rm /home/simon/.stack/indices/Hackage/00-index.cache
~/t/postgres-tmp> stack build -v
Version 1.1.3, Git revision 49d96c9cbbd34ab33af02f3957b33fdd9575a7f8 (dirty) (3945 commits) x86_64 hpack-0.14.0
...
2016-08-09 16:06:02.438975: [debug] Stack was not built with libgmp4 @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Config src/Stack/Config.hs:338:14)
2016-08-09 16:06:02.439148: [debug] Trying to decode /home/simon/.stack/build-plan-cache/x86_64-linux/nightly-2016-07-30.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:68:5)
2016-08-09 16:06:02.439289: [debug] Exception ignored when attempting to load /home/simon/.stack/build-plan-cache/x86_64-linux/nightly-2016-07-30.cache: /home/simon/.stack/build-plan-cache/x86_64-linux/nightly-2016-07-30.cache: openBinaryFile: does not exist (No such file or directory) @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:86:9)
2016-08-09 16:06:02.439415: [debug] Failure decoding /home/simon/.stack/build-plan-cache/x86_64-linux/nightly-2016-07-30.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:75:13)
2016-08-09 16:06:02.439699: [debug] Decoding build plan from: /home/simon/.stack/build-plan/nightly-2016-07-30.yaml @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.BuildPlan src/Stack/BuildPlan.hs:499:5)
2016-08-09 16:06:04.474490: [debug] Trying to decode /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:68:5)
2016-08-09 16:06:04.474691: [debug] Exception ignored when attempting to load /home/simon/.stack/indices/Hackage/00-index.cache: /home/simon/.stack/indices/Hackage/00-index.cache: openBinaryFile: does not exist (No such file or directory) @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:86:9)
2016-08-09 16:06:04.474906: [debug] Failure decoding /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:75:13)
Populated index cache.
2016-08-09 16:06:14.096936: [debug] Encoding /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:51:5)
2016-08-09 16:06:15.267244: [debug] Finished writing /home/simon/.stack/indices/Hackage/00-index.cache @(stack_BSx6FTAIDJFC2EPDshToqJ:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:55:5)
2016-08-09 16:06:16.121019: [warn] Did not find .cabal file for servant-blaze-0.7.1 with Git SHA of a611898708511c515ae69860506efb2da87bbfc9 @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:295:17)
2016-08-09 16:06:16.121174: [debug] Right Nothing @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:301:17)
2016-08-09 16:06:18.133818: [warn] Did not find .cabal file for diagrams-lib-1.3.1.3 with Git SHA of e47d8a2b5f237ed5da84b35290640587d43bbccf @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:295:17)
2016-08-09 16:06:18.133983: [debug] Right Nothing @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:301:17)
2016-08-09 16:06:19.132195: [warn] Did not find .cabal file for aeson-0.11.2.0 with Git SHA of 2057e715a488cd9d2456fdb1c6c4b0d6142c539e @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:295:17)
2016-08-09 16:06:19.132364: [debug] Right Nothing @(stack_BSx6FTAIDJFC2EPDshToqJ:Stack.Fetch src/Stack/Fetch.hs:301:17)
...
I've figured out something, though on one example.
First, the issue with Left path
from @schell appears something else and should be filed as a separate issue — the repository there is probably corrupted somehow. I'll focus on the rest here.
Regarding the architecture, I've got some basics from docs at https://github.com/commercialhaskell/all-cabal-hashes and sources. Basically stack expects not only to find cabal files from there, but also to find them with specific hashes. The files are there, but the hashes do not exist in the repo as checked out.
However, they do exist if you check out the full repo without --depth 1
, and are variants of the files that are actually there.
If the hashes come (for instance) from some snapshot package set (I don't know yet), this suggests an architectural conflict between "assuming the Git repo is a persistent data structure and old hashes stay available" and "fetch only the latest version, making the repo ephemeral".
There seems also to be also something else—stack looks for SHA for updated cabal files, but they're not in the main history of the repo (not sure where they're linked in). This appears a potential issue in the generation of all-cabal-hashes.
Consider the first message in this issue.
Did not find .cabal file for servant-yaml-0.1.0.0 with Git SHA of d7c8a8eaf9e7c215433f8f39daac7fc6cf116325
The file is there:
https://github.com/commercialhaskell/all-cabal-hashes/blob/hackage/servant-yaml/0.1.0.0/servant-yaml.json
but has hash 2ba4ac33ef38ad300eae27a6474612f7f43c052c. The version that stack is looking for has x-revision: 6
and wider bounds. The version on Hackage has yet wider bounds AFAICS for base
and servant
(I can't compare the testsuite bounds though).
http://hackage.haskell.org/package/servant-yaml
$ diff -u -i <(git show 2ba4ac33ef38ad300eae27a6474612f7f43c052c|dos2unix) <(git show d7c8a8eaf9e7c215433f8f39daac7fc6cf116325|dos2unix)
--- /dev/fd/63 2016-08-09 16:09:03.000000000 +0200
+++ /dev/fd/62 2016-08-09 16:09:03.000000000 +0200
@@ -4,6 +4,7 @@
name: servant-yaml
version: 0.1.0.0
+x-revision: 6
synopsis: Servant support for yaml
description: Servant support for yaml
category: Web
@@ -32,7 +33,7 @@
base >=4.7 && <4.9
, bytestring >=0.10.4.0 && <0.11
, http-media >=0.6.2 && <0.7
- , servant >=0.4.4.5 && <0.5
+ , servant >=0.4.4.5 && <0.8
, yaml >=0.8.12 && <0.9
exposed-modules:
Servant.Yaml
@@ -48,12 +49,12 @@
base >=4.7 && <4.9
, bytestring >=0.10.4.0 && <0.11
, http-media >=0.6.2 && <0.7
- , servant >=0.4.4.5 && <0.5
+ , servant >=0.4.4.5 && <0.7
, yaml >=0.8.12 && <0.9
, servant-yaml
- , servant-server >=0.4.4.5 && <0.5
- , base-compat >=0.6.0 && <0.9
- , aeson >=0.8.0.2 && <0.11
- , wai >=3.0.3.0 && <3.1
- , warp >=3.0.13.1 && <3.2
+ , servant-server >=0.4.4.5 && <0.8
+ , base-compat >=0.6.0 && <0.10
+ , aeson >=0.8.0.2 && <0.12
+ , wai >=3.0.3.0 && <3.3
+ , warp >=3.0.13.1 && <3.3
default-language: Haskell2010
To be sure: is x-revision
a marker for updates of Cabal files on Hackage directly? I've heard about the feature and I assume this is what's going on, but I'm not 100% positive.
EDIT: yes, there are references in https://github.com/haskell/hackage-server/issues/316, which also explains why I needed dos2unix
to get the above diff.
The repo is generated by https://github.com/commercialhaskell/all-cabal-hashes/blob/hackage/update.sh https://github.com/commercialhaskell/all-cabal-hashes-tool/blob/master/all-cabal-hashes-tool.hs. I'm also hunting down the commit mentioning d7c8a8eaf9e7c215433f8f39daac7fc6cf116325 using the Perl script in this StackOverflow answer, but this will take a while.
Great work, @Blaisorblade! :+1:
Here's an older issue pointing out that we need to handle hackage revisions: https://github.com/commercialhaskell/stack/issues/2217
@sjakobi Thanks! New findings:
Inside a fresh checkout of all-cabal-hashes (not stack's one with --depth 1
), we can see all the revisions (for the first example) with
git log --stat origin/hackage -- servant-yaml/0.1.0.0/servant-yaml.cabal servant-yaml/0.1.0.0/servant-yaml.json
The message
2016-08-09 21:54:32.627326: [debug] Failure decoding /Users/pgiarrusso/.stack/indices/Hackage/00-index.cache @(stack_K6bD2zvmjMRCxJO1RtHorG:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:75:13)
Populated index cache.
2016-08-09 21:54:36.495092: [debug] Encoding /Users/pgiarrusso/.stack/indices/Hackage/00-index.cache @(stack_K6bD2zvmjMRCxJO1RtHorG:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:51:5)
2016-08-09 21:54:36.676968: [debug] Finished writing /Users/pgiarrusso/.stack/indices/Hackage/00-index.cache @(stack_K6bD2zvmjMRCxJO1RtHorG:Data.Store.VersionTagged src/Data/Store/VersionTagged.hs:55:5)
2016-08-09 21:54:36.863792: [warn] Did not find .cabal file for yesod-core-1.4.20.2 with Git SHA of 5350ec333aa9ed6ae24e46142e33d2f851ace553 @(stack_K6bD2zvmjMRCxJO1RtHorG:Stack.Fetch src/Stack/Fetch.hs:295:17)
@Blaisorblade, as I've commented before, I'm experiencing the Left path
issue when running stack install
inside a docker container, should I report this as a new issue then?
I've seen that behaviour in one of my projects: https://github.com/rainbyte/openwhisk-wrapper
Edit: the issue appears also in an internal project, but I cannot expose the code
@rainbyte please do report a new issue; I currently assume my investigation doesn't apply to your scenario.
Further experiments (below) suggest the hashes are part of the snapshot, which makes sense to ensure reproducibility. Hence, we get a log entry for each cabal file in the snapshot considered which was updated since then. Furthermore, I understand the fallback uses a newer cabal file, limiting build reproducibility in the sense of #2217.
Under these circumstances, I'd propose to clone the entirety of all-cabal-hashes as a quick fix (currently 215M). This is not fine long-term since bandwidth is limited and since the repo will grow indefinitely, but a better fix wouldn't be immediate.
I imagine one could add tags for each snapshot, and stack could fetch those tags when needed, but the tags would be needed remotely.
Using lts-6.0, we request for instance a package at revision 5, while git log
reveals we're at revision 7.
Trying out the snapshot in the OP shows the same hash (revision 6) for servant-yaml
, while we're now at revision 8. Generally, all old messages reappear, and there are new ones.
Did not find .cabal file for opaleye-0.4.2.0 with Git SHA of 9b5608ac701b60a82f5cf985887d0d1450757864
Right Nothing
$ git show 9b5608ac701b60a82f5cf985887d0d1450757864|grep x-revi
x-revision: 5
$ git log -p current-hackage -- opaleye/0.4.2.0/opaleye.cabal
[...]
-x-revision: 6
+x-revision: 7
@rainbyte In your new issue, can you also add whether stack update
fixes it?
I've just gotten that after rm -rf ~/.stack/indices/Hackage/git-update
—somehow, stack did not figure out it needed to refetch the repo.
@KeeperB5: mirroring turns out to not be the problem, but here are some answers. But since you were installing from scratch on Windows, here's the short of it: TL;DR.: Install Git and ensure it is on the PATH so Stack can use it to update the index faster. Otherwise, Stack will fall back to downloading an index snapshot via HTTP from scratch each time.
Below's more info than you'd want, saving it for me.
Well, my index is fetched from https://s3.amazonaws.com/hackage.fpcomplete.com/00-index.tar.gz, but I believe the GitHub mirror had https://github.com/commercialhaskell/all-cabal-hashes.
Those are the correct URLs, and they're related but not exactly mirrors, so the size difference is expected. https://github.com/commercialhaskell/all-cabal-hashes has extra metadata on top of https://github.com/commercialhaskell/all-cabal-files, which is a mirror in Git format of the tarball (which is a mirror of the Hackage index on the Amazon cloud).
How does Stack pick a mirror and do we have any way to manually select a mirror?
Basically, mirroring is not geographically based (except whatever optimizations Amazon does internally in S3). Make sure your stack can find your Git and you don't change your config, and stack will use git to update the index incrementally and faster (since you can download only the changes rather than a new snapshot), as described in these docs.
The relevant config is described here, https://docs.haskellstack.org/en/latest/yaml_configuration/#package-indices, but I'd avoid changing it usually.
With the default config, on both master and 1.1.2, the HTTP download (which is slower) is not used and the Git one is preferred, as long as Git is installed. So either stack doesn't find your Git or you changed your config.
Updating logic: https://github.com/commercialhaskell/stack/blob/aac2c81dd020e399b49894c566075a495240baaf/src/Stack/PackageIndex.hs#L214-L223
Default config (matching docs): https://github.com/commercialhaskell/stack/blob/aac2c81dd020e399b49894c566075a495240baaf/src/Stack/Config.hs#L219-L228
I've been using Visual Studio and SourceTree which don't need Git to be installed separately. Anyhow, I installed Git for Windows, deleted my stack_root directory, ran stack setup. Now it seems to work as intended, no more errors.
Perhaps install documentation should mention requirement for Git?
Perhaps install documentation should mention requirement for Git?
I've been using Visual Studio and SourceTree which don't need Git to be installed separately. Anyhow, I installed Git for Windows, deleted my stack_root directory, ran stack setup. Now it seems to work as intended, no more errors.
Note these were warnings. Should you get further warnings of this kind, you can mostly ignore them—and we'll have a fix by next release. The real advantage with Git is that index updates will be much faster.
Noted. :) But the log does not really specify either way, Usually "The system cannot find the path specified." is treated as an error, so I just followed the suit since I didn't know better.
Receiving objects: 0% (3467/576096), 1.97 MiB | 19.00 KiB/s
Ouch! I never experienced the problems that prompted this fix but can't proceed now.
You'd better add something like --do-no-harm
or --fix-2175
next time. Until then, gotta return to previous stack... :pensive:
@wiz Is that your usual connection speed?
I hope not. It downloaded eventually, but in a pinch that got me nervous.
Now there's real pain. My CI have this restricted uplink and should start from scratch each time :pensive:
@wiz: Can't you cache the ~/.stack
directory?
with
when i attempt a setup i see:
it's mildly unfortunate that
Right Nothing
is printed here.introduced a few weeks ago by https://github.com/commercialhaskell/stack/commit/f483e820d23707ec4ddd3fcdf38385e36f769203#diff-2068556e565acc62de252ac25ed550c4R288