Haskeline throws linking error in stack build - haskell

I'm trying to build haskell project via stack build command, but it throws excepton:
-- While building package %some secret project name%-0.1.0.0 (scroll up to its section to see the error) using:
/home/%some secret username%/.stack/setup-exe-cache/x86_64-linux-tinfo6/Cabal-simple_mPHDZzAJ_3.2.1.0_ghc-8.10.7 --builddir=.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.2.1.0 build lib:%some secret project name% exe:%exe name% --ghc-options " -fdiagnostics-color=always"
Process exited with code: ExitFailure 1
Also it outputs following error in log file:
Linking .stack-work/dist/x86_64-linux-tinfo6/Cabal-3.2.1.0/build/%secret name%/%secret name% ...
/usr/bin/ld.gold: error: cannot find -ltinfo
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/haskeline-0.8.2/libHShaskeline-0.8.2.a(Terminfo.o)(.text..LsmG9_info+0x76): error: undefined reference to 'set_curterm'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/haskeline-0.8.2/libHShaskeline-0.8.2.a(Terminfo.o)(.text..LsmG9_info+0xcc): error: undefined reference to 'set_curterm'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/haskeline-0.8.2/libHShaskeline-0.8.2.a(Terminfo.o)(.text..LsmG9_info+0x147): error: undefined reference to 'set_curterm'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/haskeline-0.8.2/libHShaskeline-0.8.2.a(Terminfo.o)(.text..LsmG9_info+0x1bb): error: undefined reference to 'set_curterm'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/terminfo-0.4.1.4/libHSterminfo-0.4.1.4.a(Base.o)(.text..Lr5WM_info+0xb2): error: undefined reference to 'tigetnum'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/terminfo-0.4.1.4/libHSterminfo-0.4.1.4.a(Base.o)(.text..Lr5WN_info+0xb2): error: undefined reference to 'tigetflag'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/terminfo-0.4.1.4/libHSterminfo-0.4.1.4.a(Base.o)(.text..Lr5WO_info+0xb2): error: undefined reference to 'tigetstr'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/terminfo-0.4.1.4/libHSterminfo-0.4.1.4.a(Base.o)(.text..Ls64w_info+0x354): error: undefined reference to 'tparm'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/terminfo-0.4.1.4/libHSterminfo-0.4.1.4.a(Base.o)(.text..Ls66r_info+0x129): error: undefined reference to 'setupterm'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/terminfo-0.4.1.4/libHSterminfo-0.4.1.4.a(Base.o)(.text..Ls66r_info+0x22a): error: undefined reference to 'del_curterm'
/home/messieurme/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7/lib/ghc-8.10.7/terminfo-0.4.1.4/libHSterminfo-0.4.1.4.a(Base.o)(.text..Ls68h_info+0x141): error: undefined reference to 'tputs'
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)
My code haven't any errors in .hs files. Also I can invoke any function (even main) via stack ghciand it works fine.
After some researches I found that if I'll remove haskeline from dependencies in %project name%.cabal file, stack build will execute witout any problems.
I use haskeline only in app/main.hs and my code is from this site. Here it is
import System.Console.Haskeline
main :: IO ()
main = runInputT defaultSettings loop
where
loop :: InputT IO ()
loop = do
minput <- getInputLine "% "
case minput of
Nothing -> return ()
Just "quit" -> return ()
Just input -> do outputStrLn $ "Input was: " ++ input
loop
Here is part of .cabal file where I'm adding haskeline:
executable hi
hs-source-dirs: app
main-is: %Some secret main name%.hs
ghc-options: -Wall -Werror -threaded -rtsopts -with-rtsopts=-N
build-depends: base >= 4.9 && < 5
, %extra deps%
, haskeline
default-language: Haskell2010
Version of haskeline doesn't matter. I tried to set previous versions and error occured with each of them.
I tried to google problem, but it seems that nobody faced it before or it's too trivial to ask about.
I'm using linux mint, maybe it impacts somehow.
I fully reinstalled stack but problem is still with me. Deleting temporary files like .stack-work within project also didn't help

The problem were due to the missing libtinfo-dev. Once I had library installed the problem disappeared. Thanks to the answer in comments

Related

Undefined references and gcc error when building Haskell executable with cabal?

I set up a simple cabal project to try and acquaint myself with it better, and I have a very simple Main.hs file:
main :: IO ()
main = putStrLn "Hello, World!"
So then I try to build it, using cabal new-configure and then cabal new-build. There's no problems for the configure command, but building it gives this:
[1 of 1] Compiling Main ( Main.hs, /home/redacted/Documents/Haskell/nixtut/dist-newstyle/build/x86_64-linux/ghc-8.0.1/newp-0.1.0.0/x/newp/build/newp/newp-tmp/Main.o )
Linking /home/daniel/Documents/Haskell/nixtut/dist-newstyle/build/x86_64-linux/ghc-8.0.1/newp-0.1.0.0/x/newp/build/newp/newp ...
/nix/store/6yjpyqkx6d9k5f2s2g8h9kz40q6rz1yx-binutils-2.31.1/bin/ld: //nix/store/siks2gcfwx6qwh27m7c5r5lixcr621bd-glibc-2.27/lib/libpthread.so.0: undefined reference to `_IO_enable_locks#GLIBC_PRIVATE'
/nix/store/6yjpyqkx6d9k5f2s2g8h9kz40q6rz1yx-binutils-2.31.1/bin/ld: //nix/store/siks2gcfwx6qwh27m7c5r5lixcr621bd-glibc-2.27/lib/libpthread.so.0: undefined reference to `__mmap#GLIBC_PRIVATE'
/nix/store/6yjpyqkx6d9k5f2s2g8h9kz40q6rz1yx-binutils-2.31.1/bin/ld: //nix/store/siks2gcfwx6qwh27m7c5r5lixcr621bd-glibc-2.27/lib/libpthread.so.0: undefined reference to `__munmap#GLIBC_PRIVATE'
/nix/store/6yjpyqkx6d9k5f2s2g8h9kz40q6rz1yx-binutils-2.31.1/bin/ld: //nix/store/siks2gcfwx6qwh27m7c5r5lixcr621bd-glibc-2.27/lib/libpthread.so.0: undefined reference to `__mprotect#GLIBC_PRIVATE'
/nix/store/6yjpyqkx6d9k5f2s2g8h9kz40q6rz1yx-binutils-2.31.1/bin/ld: //nix/store/siks2gcfwx6qwh27m7c5r5lixcr621bd-glibc-2.27/lib/libpthread.so.0: undefined reference to `__tunable_get_val#GLIBC_PRIVATE'
/nix/store/6yjpyqkx6d9k5f2s2g8h9kz40q6rz1yx-binutils-2.31.1/bin/ld: //nix/store/siks2gcfwx6qwh27m7c5r5lixcr621bd-glibc-2.27/lib/libpthread.so.0: undefined reference to `__sigtimedwait#GLIBC_PRIVATE'
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)
Here is my .cabal file:
name: newp
version: 0.1.0.0
synopsis: toying around
-- description:
homepage: none
-- bug-reports:
license: BSD-3-Clause
license-file: LICENSE
author: redacted
maintainer: none
-- copyright:
category: practice
extra-source-files: CHANGELOG.md
executable newp
main-is: Main.hs
--other-modules:
-- other-extensions:
build-depends: base ^>=4.9.0.0
-- hs-source-dirs:
default-language: Haskell2010
I can't seem to understand what's wrong. GCC is installed, I'm not trying to link any external library, I'm not using any other modules, I have no idea know what these references allude to.
Any help is appreciated, because frankly, I don't know where to begin with this. I've tried looking online, but all the situations are different and the solutions don't seem to apply to me. I noticed that for others a similar error occurs when there's an issue with linking or not including modules in the cabal file, but I'm not sure how or if that applies here.
While I don't have a definitive answer as to why the error occurred, after reinstalling nix I could finally build the project. So the issue was not with cabal.

Compile only one target from a stack project with multiple targets in the cabal file

I have a similar setup like this SO question.
However I'm working with stack and not directoly with cabal:
stack.yaml
Test.cabal
src/FirstExe
src/SecondExe
The stack file is minimal
resolver: lts-8.17
packages:
- '.'
The file Test.cabal has 2 executables:
name: Test
version: 0.1.0.0
build-type: Simple
cabal-version: >=1.8
executable FirstExe
hs-source-dirs: src
main-is: FirstExe.hs
build-depends: base >=4.8 && <4.10
executable SecondExe
hs-source-dirs: src
main-is: SecondExe.hs
build-depends: base >=4.8 && <4.10
The src/FirstExe.hs compiles successfully:
main :: IO ()
main = putStrLn "FirstExe compiles nicely"
The src/SecondExe.hs has an error:
main :: IO ()
main = "SecondExe gives compiler error" -- putStrLn is missing ...
(Note: The goal of this error is to see, when stack builds the SecondExe.)
When I do a stack ide targets I get
Test:exe:FirstExe
Test:exe:SecondExe
Now I want to compile only the first target FirstExe without compiling the second and without changing
the Test.cabal file. In reallity I will switch between the 2 executables.
According to the Haskell Tool Stack documentation it should
be possible
I tried two possibilies:
stack build :FirstExe
stack build Test:exe:FirstExe
In both cases it compiles the second executable too!
Test-0.1.0.0: configure (exe)
Configuring Test-0.1.0.0...
Test-0.1.0.0: build (exe)
Preprocessing executable 'FirstExe' for Test-0.1.0.0...
Preprocessing executable 'SecondExe' for Test-0.1.0.0...
[1 of 1] Compiling Main ( src/SecondExe.hs, .stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0/build/SecondExe/SecondExe-tmp/Main.o )
/home/roland/Projekte/HaskellTutorials/Test/src/SecondExe.hs:2:8: error:
* Couldn't match expected type `IO ()' with actual type `[Char]'
* In the expression: "SecondExe gives compiler error"
In an equation for `main': main = "SecondExe gives compiler error"
-- While building package Test-0.1.0.0 using:
/home/roland/.stack/setup-exe-cache/x86_64-linux-nopie/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0 build exe:FirstExe exe:SecondExe --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
What am I doing wrong?

Unable to runhaskell my wxHaskell program that works in GHCI

I am trying to create a HelloWorld.exe on Windows 7 that demonstrates a very simple wxHaskell program I have found online. The code is below:
module HelloWorldWX where
import Graphics.UI.WX
main :: IO ()
main
= start hello
hello :: IO ()
hello = do
f <- frame [text := "Hello!"]
quit <- button f [text := "Quit", on command := close f]
set f [layout := widget quit]
in a file called HelloWorldWX.hs. I downloaded the binary distribution of wxHaskell (wxInstall-Achelanne-64-0.1). After running Install.bat I noticed it used Cabal to set up a new package location where it installed wx-0.92.0.1 and all of its depedencies. The first time it ran it failed for some non-specified reason. I ran ghc-pkg list and found all of the packages were listed in the new cabal package location. I decided to unregister all of the packages and try again. This second time it was successful and prompted me to include the following directories in my search path which I did:
C:\Users...\Downloads\wxInstall-Achelanne-64-0.1\DLLs;C:\Users...\Downloads\wxInstall-Achelanne-64-0.1\wxWidgets\lib\gcc_dll
At this point when I loaded HelloWorldWX.hs into GHCI and ran main, I got the window frame with the Quit button like I expect.
I then compiled the .hs file into a .o file. I then attempted to create an executable with the following command:
ghc -v -o HelloWorldWX HelloWorldWX.o
Glasgow Haskell Compiler, Version 7.10.3, stage 2 booted by GHC version 7.10.2
Using binary package database: C:\Users\...\Haskell Platform\7.10.3\lib\pack
age.conf.d\package.cache
Using binary package database: C:\Users\...\AppData\Roaming\ghc\x86_64-mingw
32-7.10.3\package.conf.d\package.cache
wired-in package ghc-prim mapped to ghc-prim-0.4.0.0-428c198583a031a3ea42dd32ae6
f9bab
wired-in package integer-gmp mapped to integer-gmp-1.0.0.0-3c8c40657a9870f5c33be
17496806d8d
wired-in package base mapped to base-4.8.2.0-14035a44a8b95c6832da6dae1420f59e
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-haskell-2.10.0.0-bcb07fec12
f32563bb45d7fb009640b1
wired-in package ghc mapped to ghc-7.10.3-7a0d3c701e4b1d1f2c3f3bd2deae9bed
wired-in package dph-seq not found.
wired-in package dph-par not found.
Hsc static flags:
Created temporary directory: C:\Users\...\AppData\Local\Temp\1\ghc13152_0
*** C Compiler:
"C:\Users\...\Haskell Platform\7.10.3\lib/../mingw/bin/gcc.exe" "-fno-stack-
protector" "-DTABLES_NEXT_TO_CODE" "-c" "C:\Users\...\AppData\Local\Temp\1\g
hc13152_0\ghc_1.c" "-o" "C:\Users\...\AppData\Local\Temp\1\ghc13152_0\ghc_2.
o" "-IC:\Users\...\Haskell Platform\7.10.3\lib/include"
*** Windres:
"C:\Users\...\Haskell Platform\7.10.3\lib/../mingw/bin/windres.exe" "--prepr
ocessor=\"C:\Users\...\Haskell Platform\7.10.3\lib/../mingw/bin/gcc.exe\" \"
-fno-stack-protector\" \"-DTABLES_NEXT_TO_CODE\" \"-E\" \"-xc\" \"-DRC_INVOKED\"
" "--use-temp-file" "--input=C:\Users\...\AppData\Local\Temp\1\ghc13152_0\gh
c_4.rc" "--output=C:\Users\...\AppData\Local\Temp\1\ghc13152_0\ghc_5.o" "--o
utput-format=coff"
*** Linker:
"C:\Users\...\Haskell Platform\7.10.3\lib/../mingw/bin/gcc.exe" "-fno-stack-
protector" "-DTABLES_NEXT_TO_CODE" "-Wl,--hash-size=31" "-Wl,--reduce-memory-ove
rheads" "-Xlinker" "--stack=0x800000,0x800000" "-static-libgcc" "-o" "HelloWorld
WX.exe" "-Wl,--enable-auto-import" "HelloWorldWX.o" "C:\Users\...\AppData\Lo
cal\Temp\1\ghc13152_0\ghc_5.o" "-LC:\Users\...\Haskell Platform\7.10.3\lib\b
ase_HQfYBxpPvuw8OunzQu6JGM" "-LC:\Users\...\Haskell Platform\7.10.3\lib\inte
g_2aU3IZNMF9a7mQ0OzsZ0dS" "-LC:\Users\...\Haskell Platform\7.10.3\lib\ghcpr_
8TmvWUcS1U1IKHT0levwg3" "-LC:\Users\...\Haskell Platform\7.10.3\lib/rts" "C:
\Users\...\AppData\Local\Temp\1\ghc13152_0\ghc_2.o" "-Wl,-u,ghczmprim_GHCziT
ypes_Izh_static_info" "-Wl,-u,ghczmprim_GHCziTypes_Czh_static_info" "-Wl,-u,ghcz
mprim_GHCziTypes_Fzh_static_info" "-Wl,-u,ghczmprim_GHCziTypes_Dzh_static_info"
"-Wl,-u,base_GHCziPtr_Ptr_static_info" "-Wl,-u,ghczmprim_GHCziTypes_Wzh_static_i
nfo" "-Wl,-u,base_GHCziInt_I8zh_static_info" "-Wl,-u,base_GHCziInt_I16zh_static_
info" "-Wl,-u,base_GHCziInt_I32zh_static_info" "-Wl,-u,base_GHCziInt_I64zh_stati
c_info" "-Wl,-u,base_GHCziWord_W8zh_static_info" "-Wl,-u,base_GHCziWord_W16zh_st
atic_info" "-Wl,-u,base_GHCziWord_W32zh_static_info" "-Wl,-u,base_GHCziWord_W64z
h_static_info" "-Wl,-u,base_GHCziStable_StablePtr_static_info" "-Wl,-u,ghczmprim
_GHCziTypes_Izh_con_info" "-Wl,-u,ghczmprim_GHCziTypes_Czh_con_info" "-Wl,-u,ghc
zmprim_GHCziTypes_Fzh_con_info" "-Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info" "-Wl,
-u,base_GHCziPtr_Ptr_con_info" "-Wl,-u,base_GHCziPtr_FunPtr_con_info" "-Wl,-u,ba
se_GHCziStable_StablePtr_con_info" "-Wl,-u,ghczmprim_GHCziTypes_False_closure" "
-Wl,-u,ghczmprim_GHCziTypes_True_closure" "-Wl,-u,base_GHCziPack_unpackCString_c
losure" "-Wl,-u,base_GHCziIOziException_stackOverflow_closure" "-Wl,-u,base_GHCz
iIOziException_heapOverflow_closure" "-Wl,-u,base_ControlziExceptionziBase_nonTe
rmination_closure" "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_clo
sure" "-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure" "-Wl,-u,
base_GHCziIOziException_allocationLimitExceeded_closure" "-Wl,-u,base_ControlziE
xceptionziBase_nestedAtomically_closure" "-Wl,-u,base_GHCziEventziThread_blocked
OnBadFD_closure" "-Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure" "-Wl,-u,base
_GHCziTopHandler_flushStdHandles_closure" "-Wl,-u,base_GHCziTopHandler_runIO_clo
sure" "-Wl,-u,base_GHCziTopHandler_runNonIO_closure" "-Wl,-u,base_GHCziConcziIO_
ensureIOManagerIsRunning_closure" "-Wl,-u,base_GHCziConcziIO_ioManagerCapabiliti
esChanged_closure" "-Wl,-u,base_GHCziConcziSync_runSparks_closure" "-Wl,-u,base_
GHCziConcziSignal_runHandlersPtr_closure" "-lHSbase-4.8.2.0-HQfYBxpPvuw8OunzQu6J
GM" "-lHSinteger-gmp-1.0.0.0-2aU3IZNMF9a7mQ0OzsZ0dS" "-lHSghc-prim-0.4.0.0-8TmvW
UcS1U1IKHT0levwg3" "-lHSrts" "-lCffi-6" "-lwsock32" "-luser32" "-lshell32" "-lm"
"-lwsock32" "-lgdi32" "-lwinmm"
HelloWorldWX.o:fake:(.text+0x35): undefined reference to `wxcorzuLc8buVrXMQOAAoN
jm2eSy1_GraphicsziUIziWXCoreziLayout_zdfWidgetObject_closure'
HelloWorldWX.o:fake:(.text+0x91): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziAttributes_ZCze_con_info'
HelloWorldWX.o:fake:(.text+0x9a): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziTopLevelWindow_zdfFormObject_closure'
HelloWorldWX.o:fake:(.text+0xca): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziAttributes_set_closure'
HelloWorldWX.o:fake:(.text+0x11d): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziTopLevelWindow_zdfCloseableObject_closure'
HelloWorldWX.o:fake:(.text+0x15f): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziControls_zdfCommandingObject4_closure'
HelloWorldWX.o:fake:(.text+0x164): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziEvents_on_closure'
HelloWorldWX.o:fake:(.text+0x1ef): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziWindow_zdfTextualObject_closure'
HelloWorldWX.o:fake:(.text+0x27e): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziAttributes_ZCze_con_info'
HelloWorldWX.o:fake:(.text+0x2ce): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziAttributes_ZCze_con_info'
HelloWorldWX.o:fake:(.text+0x2ff): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziControls_button_closure'
HelloWorldWX.o:fake:(.text+0x427): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziWindow_zdfTextualObject_closure'
HelloWorldWX.o:fake:(.text+0x4b9): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziAttributes_ZCze_con_info'
HelloWorldWX.o:fake:(.text+0x4eb): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziFrame_frame_closure'
HelloWorldWX.o:fake:(.text+0x5da): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWX_start_closure'
HelloWorldWX.o:fake:(.text+0x1f8): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziClasses_text_info'
HelloWorldWX.o:fake:(.text+0x430): undefined reference to `wxzu6QQu5v1wfyA22ZZSl
eeGHgzz_GraphicsziUIziWXziClasses_text_info'
HelloWorldWX.o:fake:(.data+0x70): undefined reference to `wxcorzuLc8buVrXMQOAAoN
jm2eSy1_GraphicsziUIziWXCoreziLayout_zdfWidgetObject_closure'
HelloWorldWX.o:fake:(.data+0x78): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziAttributes_set_closure'
HelloWorldWX.o:fake:(.data+0x80): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziTopLevelWindow_zdfFormObject_closure'
HelloWorldWX.o:fake:(.data+0x88): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziTopLevelWindow_zdfCloseableObject_closure'
HelloWorldWX.o:fake:(.data+0x90): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziEvents_on_closure'
HelloWorldWX.o:fake:(.data+0x98): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziControls_zdfCommandingObject4_closure'
HelloWorldWX.o:fake:(.data+0xa8): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziWindow_zdfTextualObject_closure'
HelloWorldWX.o:fake:(.data+0xb0): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziControls_button_closure'
HelloWorldWX.o:fake:(.data+0xc8): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWXziFrame_frame_closure'
HelloWorldWX.o:fake:(.data+0xd8): undefined reference to `wxzu6QQu5v1wfyA22ZZSle
eGHgzz_GraphicsziUIziWX_start_closure'
C:\Users\...\AppData\Local\Temp\1\ghc13152_0\ghc_2.o:ghc_1.c:(.rdata$.refptr
.ZCMain_main_closure[.refptr.ZCMain_main_closure]+0x0): undefined reference to `
ZCMain_main_closure'
collect2.exe: error: ld returned 1 exit status
*** Deleting temp files:
Deleting: C:\Users\...\AppData\Local\Temp\1\ghc13152_0\ghc_6.rsp C:\Users\pp
77316\AppData\Local\Temp\1\ghc13152_0\ghc_5.o C:\Users\...\AppData\Local\Tem
p\1\ghc13152_0\ghc_4.rc C:\Users\...\AppData\Local\Temp\1\ghc13152_0\ghc_3.r
sp C:\Users\...\AppData\Local\Temp\1\ghc13152_0\ghc_2.o C:\Users\...\App
Data\Local\Temp\1\ghc13152_0\ghc_1.c
*** Deleting temp dirs:
Deleting: C:\Users\...\AppData\Local\Temp\1\ghc13152_0
I am not really sure why it is having problems finding these references.
I tried executing then with
runhaskell HelloWorldWX.hs
and received the following error popup from ghc:
The Verbose flag being set here gives a bunch of information that doesn't really elaborate on any specific problems.
I am running Haskell GHC 7.10.3 full package from Windows Installer to a local Users directory. I do not have Local Administrator privileges on this workstation but I could try on another machine.
Any clues? I imagine the first failed install of wxHaskell has corrupted something or I am running into a privilege issue.
I figured out what the problem was. I forgot that for GHC to create an executable that you need to explicitly specify Cabal packages that you wish to include. Commenter Tomasz Lewowski was partially correct. The -L option for linking libraries was required by gcc, however the ghc application intelligently adds ALL the required library paths for a given Cabal package by using the -package option.
The second part of making this work was that I needed to compile the .o file specifying -main-is for the main method. I wrote up the simple batch file and got it working.
ghc -v -main-is HelloWorld.main HelloWorld.hs
ghc -v -o HelloWorld HelloWorld.o -package strict-0.3.2 -package wx-0.92.2.0 -package wxc-0.92.2.0 -package wxcore-0.92.2.0 -package wxdirect-0.92.2.0
This created the Windows executable just fine and it works like a charm.

Haskell stack fails with error message "unsatisfied constraints"

When building my project, I'm receiving a cryptic error
C:\Users\T60\Dropbox\note-build>stack build
note-build-0.1.0.0: build
Preprocessing library note-build-0.1.0.0...
setup-Simple-Cabal-1.22.5.0-ghc-7.10.3.exe: unsatisfied constraints
-- While building package note-build-0.1.0.0 using:
C:\stack_root\setup-exe-cache\i386-windows\setup-Simple-Cabal-1.22.5.0-ghc-7.10.3.exe --builddir=.stack-work\dist\95439361 build lib:note-build exe:note-build --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
It seems to be caused by adding filepath to the executable depends section of my cabal file. My Main.hs file uses System.FilePath, and without the line in my cabal file it fails, but adding it gives me this error. Prior to trying to use the filepath module, the project would build.
executable note-build
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base
, filepath
, directory
, note-build
default-language: Haskell2010
What does this error mean, and am I putting the dependency in the wrong place in my cabal file?
Update: I ran the build using the -v flag, and it revealed that I'd absentmindedly substituted + for ++.
C:\Users\T60\Dropbox\note-build\app\Main.hs:20:31: #(stack_9kewhubnl5WIl89fhd1ea2:Stack.Build.Execute src/Stack\Build\Execute.hs:911:67)
2016-07-07 22:08:24.020516: [warn] No instance for (Num FilePath) arising from a use of `+' #(stack_9kewhubnl5WIl89fhd1ea2:Stack.Build.Execute src/Stack\Build\Execute.hs:911:67)
2016-07-07 22:08:24.051760: [warn] In the first argument of `normalise', namely `(y + "/")' #(stack_9kewhubnl5WIl89fhd1ea2:Stack.Build.Execute src/Stack\Build\Execute.hs:911:67)
2016-07-07 22:08:24.067386: [warn] In the expression: normalise (y + "/") #(stack_9kewhubnl5WIl89fhd1ea2:Stack.Build.Execute src/Stack\Build\Execute.hs:911:67)
2016-07-07 22:08:24.129886: [warn] In an equation for `y_norm': y_norm = normalise (y + "/").
So the fix was easy enough, but should I consider this a potential issue with stack that I had to use verbose output to see what seems like a simple type error?

An error in "stack build" of haskell which doesn't make sense

So far, for weeks, everything has been ok. But all of a sudden "stack build" has begun returning this (obfuscated a bit):
$ stack build
MyLib-0.1.0.1: build
Preprocessing library MyLib-0.1.0.1...
[53 of 55] Compiling Web.MyLib.SomeFile.MyFile ( src/Web/MyLib/SomeFile/MyFile.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Web/MyLib/SomeFile/MyFile.o )
In-place registering MyLib-0.1.0.1...
Preprocessing executable 'MyLib-exe' for MyLib-0.1.0.1...
Linking .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/MyLib-exe/MyLib-exe ...
.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/MyLib-exe/MyLib-exe-tmp/Main.o:(.text+0xf6): undefined reference to `fdsfdzuC6HIw1NjUcr0zzrqlCnCP5y_WebziMyLibziSomeFileziMyFile_MyFileGetSingle1_info'
.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/MyLib-exe/MyLib-exe-tmp/Main.o: In function `S6VL_srt':
(.data+0xe8): undefined reference to `fdsfdzuC6HIw1NjUcr0zzrqlCnCP5y_WebziMyLibziSomeFileziMyFile_MyFileGetSingle1_closure'
collect2: error: ld returned 1 exit status
-- While building package MyLib-0.1.0.1 using:
/home/me123/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.5.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0 build lib:MyLib exe:MyLib-exe --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
I've done "stack update, upgrade" but it's not helped.

Resources