commercialhaskell / stack

The Haskell Tool Stack
http://haskellstack.org
BSD 3-Clause "New" or "Revised" License
3.98k stars 842 forks source link

Error when running stack once, but not twice while statically linking #1603

Closed tgdavies closed 8 years ago

tgdavies commented 8 years ago

I am using stack to build a statically linked Haskell executable on an EC2 instance. See http://stackoverflow.com/questions/34601661/statically-linking-haskell-program-using-stack-on-amazon-linux/34602069#34602069

I get an error the first time I run 'stack build', but not the second time.

The result of running, stack clean, stack build, stack build is:

[ec2-user@ip-172-31-0-238 lambdatest]$ stack clean [ec2-user@ip-172-31-0-238 lambdatest]$ stack build -v Version 1.0.0, Git revision 3bc26237b5b3c387b8fd564459ea4dd88fd58b30 (2939 commits) x86_64 2016-01-05 00:09:29.401618: [debug] Checking for project config at: /home/ec2-user/lambda-test/lambdatest/stack.yaml @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Config src/Stack/Config.hs:577:9) 2016-01-05 00:09:29.401890: [debug] Loading project config file stack.yaml @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Config src/Stack/Config.hs:600:13) 2016-01-05 00:09:29.402636: [debug] Run process: ldd /usr/bin/stack @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.407408: [debug] Trying to decode /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:29.415054: [debug] Success decoding /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:29.415160: [debug] Trying to decode /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:29.556853: [debug] Success decoding /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:29.602607: [debug] Run process: ghc --info @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.609535: [debug] Run process: ghc --numeric-version @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.627486: [debug] Run process: ghc-pkg --no-user-package-db field --simple-output Cabal version @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.645199: [debug] Run process: ghc-pkg --no-user-package-db list --global @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.663889: [debug] Checking resolver: lts-3.20 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Source src/Stack/Build/Source.hs:164:17) 2016-01-05 00:09:29.664016: [debug] Trying to decode /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:29.669945: [debug] Success decoding /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:29.671521: [debug] Run process: ghc-pkg --global --no-user-package-db dump --expand-pkgroot @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.704680: [debug] Ignoring package haskeline due to wanting version 0.7.2.2 instead of 0.7.2.1 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Installed src/Stack/Build/Installed.hs:189:5) 2016-01-05 00:09:29.704823: [debug] Ignoring package terminfo due to wanting version 0.4.0.2 instead of 0.4.0.1 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Installed src/Stack/Build/Installed.hs:189:5) 2016-01-05 00:09:29.704915: [debug] Ignoring package Cabal due to wanting version 1.22.6.0 instead of 1.22.4.0 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Installed src/Stack/Build/Installed.hs:189:5) 2016-01-05 00:09:29.705072: [debug] Run process: ghc-pkg --user --no-user-package-db --package-db /home/ec2-user/.stack/snapshots/x86_64-linux/lts-3.20/7.10.2/pkgdb dump --expand-pkgroot @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.722766: [debug] Run process: ghc-pkg --user --no-user-package-db --package-db /home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/pkgdb dump --expand-pkgroot @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:29.739802: [debug] Trying to decode /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:29.866799: [debug] Success decoding /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:30.004223: [debug] Run process: ghc-pkg --no-user-package-db list --global @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:30.022875: [info] lambdatest-0.1.0.0: configure @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:668:23) 2016-01-05 00:09:30.023243: [debug] Run process: /home/ec2-user/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.4.0-ghc-7.10.2 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.4.0 configure --with-ghc=/home/ec2-user/.stack/programs/x86_64-linux/ghc-7.10.2/bin/ghc --with-ghc-pkg=/home/ec2-user/.stack/programs/x86_64-linux/ghc-7.10.2/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/home/ec2-user/.stack/snapshots/x86_64-linux/lts-3.20/7.10.2/pkgdb --package-db=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/pkgdb --libdir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/lib --bindir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/bin --datadir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/share --libexecdir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/libexec --sysconfdir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/etc --docdir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/doc/lambdatest-0.1.0.0 --htmldir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/doc/lambdatest-0.1.0.0 --haddockdir=/home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/doc/lambdatest-0.1.0.0 --dependency=base=base-4.8.1.0-4f7206fd964c629946bb89db72c80011 --ghc-options -static --ghc-options -optc-static --ghc-options -optl-static --ghc-options -optl-pthread --enable-tests --enable-benchmarks @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:812:21) 2016-01-05 00:09:30.292030: [info] Configuring lambdatest-0.1.0.0... @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) 2016-01-05 00:09:30.393032: [info] lambdatest-0.1.0.0: build @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:668:23) 2016-01-05 00:09:30.393140: [debug] Run process: /home/ec2-user/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.4.0-ghc-7.10.2 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.4.0 build exe:lambdatest --ghc-options " -ddump-hi -ddump-to-file" @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:812:21) 2016-01-05 00:09:30.411643: [info] Preprocessing executable 'lambdatest' for lambdatest-0.1.0.0... @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) 2016-01-05 00:09:30.453400: [info] [1 of 1] Compiling Main ( src/Main.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/lambdatest/lambdatest-tmp/Main.o ) @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) 2016-01-05 00:09:30.639086: [info] Linking .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/lambdatest/lambdatest ... @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) 2016-01-05 00:09:30.895321: [warn] /home/ec2-user/.stack/programs/x86_64-linux/ghc-7.10.2/lib/ghc-7.10.2/rts/libHSrts.a(Linker.o): In function `internal_dlopen': @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) 2016-01-05 00:09:30.895465: [warn] @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) Could not resolve file /home/ben/ghc-7.10.2/rts/Linker.c [ec2-user@ip-172-31-0-238 lambdatest]$ stack build -v Version 1.0.0, Git revision 3bc26237b5b3c387b8fd564459ea4dd88fd58b30 (2939 commits) x86_64 2016-01-05 00:09:38.402832: [debug] Checking for project config at: /home/ec2-user/lambda-test/lambdatest/stack.yaml @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Config src/Stack/Config.hs:577:9) 2016-01-05 00:09:38.403066: [debug] Loading project config file stack.yaml @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Config src/Stack/Config.hs:600:13) 2016-01-05 00:09:38.403851: [debug] Run process: ldd /usr/bin/stack @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.408647: [debug] Trying to decode /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:38.415971: [debug] Success decoding /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:38.416067: [debug] Trying to decode /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:38.555340: [debug] Success decoding /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:38.601205: [debug] Run process: ghc --info @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.608253: [debug] Run process: ghc --numeric-version @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.626245: [debug] Run process: ghc-pkg --no-user-package-db field --simple-output Cabal version @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.643716: [debug] Run process: ghc-pkg --no-user-package-db list --global @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.662433: [debug] Checking resolver: lts-3.20 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Source src/Stack/Build/Source.hs:164:17) 2016-01-05 00:09:38.662554: [debug] Trying to decode /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:38.668248: [debug] Success decoding /home/ec2-user/.stack/build-plan-cache/x86_64-linux/lts-3.20.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:38.670066: [debug] Run process: ghc-pkg --global --no-user-package-db dump --expand-pkgroot @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.702306: [debug] Ignoring package haskeline due to wanting version 0.7.2.2 instead of 0.7.2.1 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Installed src/Stack/Build/Installed.hs:189:5) 2016-01-05 00:09:38.702468: [debug] Ignoring package terminfo due to wanting version 0.4.0.2 instead of 0.4.0.1 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Installed src/Stack/Build/Installed.hs:189:5) 2016-01-05 00:09:38.702552: [debug] Ignoring package Cabal due to wanting version 1.22.6.0 instead of 1.22.4.0 @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Installed src/Stack/Build/Installed.hs:189:5) 2016-01-05 00:09:38.702978: [debug] Run process: ghc-pkg --user --no-user-package-db --package-db /home/ec2-user/.stack/snapshots/x86_64-linux/lts-3.20/7.10.2/pkgdb dump --expand-pkgroot @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.720764: [debug] Run process: ghc-pkg --user --no-user-package-db --package-db /home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/pkgdb dump --expand-pkgroot @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:38.737645: [debug] Trying to decode /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:55:5) 2016-01-05 00:09:38.862532: [debug] Success decoding /home/ec2-user/.stack/indices/Hackage/00-index.cache @(stack_03v8PatSPAPLwmtfdY8jsA:Data.Binary.VersionTagged src/Data/Binary/VersionTagged.hs:64:13) 2016-01-05 00:09:39.000069: [debug] Run process: ghc-pkg --no-user-package-db list --global @(stack_03v8PatSPAPLwmtfdY8jsA:System.Process.Read src/System/Process/Read.hs:267:3) 2016-01-05 00:09:39.019040: [info] lambdatest-0.1.0.0: build @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:668:23) 2016-01-05 00:09:39.019138: [debug] Run process: /home/ec2-user/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.4.0-ghc-7.10.2 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.4.0 build exe:lambdatest --ghc-options " -ddump-hi -ddump-to-file" @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:812:21) 2016-01-05 00:09:39.036917: [info] Preprocessing executable 'lambdatest' for lambdatest-0.1.0.0... @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) 2016-01-05 00:09:39.169493: [info] lambdatest-0.1.0.0: copy/register @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:668:23) 2016-01-05 00:09:39.169618: [debug] Run process: /home/ec2-user/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.4.0-ghc-7.10.2 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.4.0 copy @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:812:21) 2016-01-05 00:09:39.180853: [info] Installing executable(s) in @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) 2016-01-05 00:09:39.180955: [info] /home/ec2-user/lambda-test/lambdatest/.stack-work/install/x86_64-linux/lts-3.20/7.10.2/bin @(stack_03v8PatSPAPLwmtfdY8jsA:Stack.Build.Execute src/Stack/Build/Execute.hs:1338:35) [ec2-user@ip-172-31-0-238 lambdatest]$

mgsloan commented 8 years ago

I'm not sure what the issue here is, but it could be an issue with the ghc installation at /home/ben/ghc-7.10.2. Are you intending to use this ghc? Does the issue still happen if you do a stack setup, to have stack install ghc?

tgdavies commented 8 years ago

/home/ben doesn't exist -- I did use stack setup, apologies for missing that step out.

mgsloan commented 8 years ago

Interesting! Something seems to think that /home/ben exists, because of the error Could not resolve file /home/ben/ghc-7.10.2/rts/Linker.c.

luispedro commented 8 years ago

I also see this on my system, where there is no user ben. I shows up if I try to statically link. I assume ben is the developer that built the stack distribution :)

(The exact commands work without a hitch on another machine which runs NixOS and uses the nix/stack integration)

borsboom commented 8 years ago

It looks like the /home/ben/ghc-7.10.2 path is hard-coded somewhere in the GHC installation and comes from the GHC bindist. I guess it's missing adjusting a path somewhere in the ./configure --prefix=<path> && make install installation process that stack setup uses.

That said, the "Could not resolve file" message is emitted by Stack, so something is causing it to look for that file. I wonder if it might appear somewhere in the GHC/linker output. stack-1.0.2 has a fix for an issue where it wasn't gracefully handling a case of a file that doesn't exist in GHC error/warning messages, it that same code might be getting tripped here. Can you try stack-1.0.2 and let us know if that works better?

sjakobi commented 8 years ago

It looks like the /home/ben/ghc-7.10.2 path is hard-coded somewhere in the GHC installation and comes from the GHC bindist.

Spot on! :)

$ strings ~/.stack/programs/x86_64-linux/ghc-7.10.2/lib/ghc-7.10.2/bin/ghc | grep ben | tr ',' '\n' | grep ben
["-L/home/ben/ghc-7.10.2/libraries/haskeline/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/terminfo/dist-install/build"
"-L/home/ben/ghc-7.10.2/compiler/stage2/build"
"-L/home/ben/ghc-7.10.2/libraries/transformers/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/template-haskell/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/pretty/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/process/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/hpc/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/hoopl/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/bin-package-db/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/directory/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/unix/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/time/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/filepath/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/binary/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/containers/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/bytestring/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/deepseq/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/array/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/base/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/integer-gmp2/dist-install/build"
"-L/home/ben/ghc-7.10.2/libraries/ghc-prim/dist-install/build"
"-L/home/ben/ghc-7.10.2/rts/dist/build"
s1ben_info

Pinging @bgamari on a hunch. :)

mgsloan commented 8 years ago

Closing since it seems like this was diagnosed. Feel free to ping the issue if it should be re-opened