* Re: How to make sure ghc uses installed packages?
2019-09-17 0:00 ` John Soo
@ 2019-09-17 1:28 ` Jesse Gibbons
2019-09-17 5:27 ` John Soo
0 siblings, 1 reply; 8+ messages in thread
From: Jesse Gibbons @ 2019-09-17 1:28 UTC (permalink / raw)
To: John Soo; +Cc: help-guix mailing list
[-- Attachment #1: Type: text/plain, Size: 1122 bytes --]
On Mon, 2019-09-16 at 17:00 -0700, John Soo wrote:
> Hi Jesse,
>
> > Can somebody help me out please?
>
> I can try!
>
> Can get the contents of $GHC_PACKAGE_PATH please? Guix uses this
> environment variable that is recognized by the ghc toolchain to tell
> ghc where packages are installed.
>
> What happens if you try to load your file in ghci instead of using
> runhaskell?
>
> Good luck,
>
> - John
I wrote a script to do that (attached with output), then for each each
of the available versions, removed all ghc, logged into a virtual
terminal, ran the script, then logged out of the virtual terminal. I
did the log in/out because I previously noticed GHC_PACKAGE_PATH did
not change, even when I uninstalled everything, so I suspected it was
linked to a login script.
It appears the required modules were in GHC_PACKAGE_PATH and the
program did not have an error when I used ghc version 8.4.3
I noticed when I installed each successive version of GHC it suggests I
run a script to update the environment variables. I usually ignored it
because I did not have a problem like this before.
Case closed I guess.
[-- Attachment #2: output.txt --]
[-- Type: text/plain, Size: 6523 bytes --]
GHC_PACKAGE_PATH=/home/jesse/.guix-profile/lib/ghc-8.6.5/package.conf.d
runhaskell:
tutorial.hs:2:1: error:
Could not find module ‘Text.Regex’
Perhaps you meant Text.Read (from base-4.12.0.0)
Use -v to see a list of the files searched for.
|
2 | import Text.Regex
| ^^^^^^^^^^^^^^^^^
tutorial.hs:3:1: error:
Could not find module ‘System.Random’
Use -v to see a list of the files searched for.
|
3 | import System.Random
| ^^^^^^^^^^^^^^^^^^^^
ghci:
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
Prelude> Prelude Data.List>
<no location info>: error:
Could not find module ‘Text.Regex’
Perhaps you meant Text.Read (from base-4.12.0.0)
Prelude Data.List>
<no location info>: error:
Could not find module ‘System.Random’
It is not a module in the current program, or in any known package.
Prelude Data.List> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord>
<interactive>:16:38: error:
Not in scope: type constructor or class ‘StdGen’
<interactive>:16:54: error:
Not in scope: type constructor or class ‘StdGen’
Prelude Data.List Data.Ord> Prelude Data.List Data.Ord>
<interactive>:18:8: error: Empty 'do' block
Prelude Data.List Data.Ord>
<interactive>:19:2: error:
• Variable not in scope: putstr :: [Char] -> t
• Perhaps you meant ‘putStr’ (imported from Prelude)
Prelude Data.List Data.Ord> Leaving GHCi.
GHC_PACKAGE_PATH=/home/jesse/.guix-profile/lib/ghc-8.4.3/ghc-random-1.1.conf.d:/home/jesse/.guix-profile/lib/ghc-8.4.3/ghc-regex-compat-0.95.1.conf.d:/home/jesse/.guix-profile/lib/ghc-8.4.3/package.conf.d
runhaskell:
tutorial.hs:19:2: error:
• Variable not in scope: putstr :: [Char] -> t
• Perhaps you meant ‘putStr’ (imported from Prelude)
|
19 | putstr "Hello World! Let's have a picnic! \n"
| ^^^^^^
ghci:
GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help
Prelude> Prelude Data.List> Prelude Data.List Text.Regex> Prelude Data.List Text.Regex System.Random> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord> Prelude Data.List Text.Regex System.Random Data.Ord>
<interactive>:18:8: error: Empty 'do' block
Prelude Data.List Text.Regex System.Random Data.Ord>
<interactive>:19:2: error:
• Variable not in scope: putstr :: [Char] -> t
• Perhaps you meant ‘putStr’ (imported from Prelude)
Prelude Data.List Text.Regex System.Random Data.Ord> Leaving GHCi.
GHC_PACKAGE_PATH=/home/jesse/.guix-profile/lib/ghc-8.0.2/package.conf.d
runhaskell:
tutorial.hs:2:1: error:
Failed to load interface for ‘Text.Regex’
Perhaps you meant Text.Read (from base-4.9.1.0)
Use -v to see a list of the files searched for.
tutorial.hs:3:1: error:
Failed to load interface for ‘System.Random’
Use -v to see a list of the files searched for.
ghci:
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Prelude> Prelude Data.List>
<no location info>: error:
Could not find module ‘Text.Regex’
Perhaps you meant Text.Read (from base-4.9.1.0)
Prelude Data.List>
<no location info>: error:
Could not find module ‘System.Random’
It is not a module in the current program, or in any known package.
Prelude Data.List> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord>
<interactive>:16:38: error:
Not in scope: type constructor or class ‘StdGen’
<interactive>:16:54: error:
Not in scope: type constructor or class ‘StdGen’
Prelude Data.List Data.Ord> Prelude Data.List Data.Ord>
<interactive>:18:8: error: Empty 'do' block
Prelude Data.List Data.Ord>
<interactive>:19:2: error:
• Variable not in scope: putstr :: [Char] -> t
• Perhaps you meant ‘putStr’ (imported from Prelude)
Prelude Data.List Data.Ord> Leaving GHCi.
GHC_PACKAGE_PATH=/home/jesse/.guix-profile/lib/ghc-7.10.2/package.conf.d
runhaskell:
tutorial.hs:2:8:
Could not find module ‘Text.Regex’
Perhaps you meant Text.Read (from base-4.8.1.0)
Use -v to see a list of the files searched for.
tutorial.hs:3:8:
Could not find module ‘System.Random’
Use -v to see a list of the files searched for.
ghci:
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude> Prelude Data.List>
<no location info>:
Could not find module ‘Text.Regex’
Perhaps you meant Text.Read (from base-4.8.1.0)
Prelude Data.List>
<no location info>:
Could not find module ‘System.Random’
It is not a module in the current program, or in any known package.
Prelude Data.List> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord> Prelude Data.List Data.Ord>
<interactive>:17:38:
Not in scope: type constructor or class ‘StdGen’
<interactive>:17:54:
Not in scope: type constructor or class ‘StdGen’
Prelude Data.List Data.Ord> Prelude Data.List Data.Ord>
<interactive>:19:6: parse error on input ‘=’
Prelude Data.List Data.Ord>
<interactive>:20:2:
Not in scope: ‘putstr’
Perhaps you meant ‘putStr’ (imported from Prelude)
Prelude Data.List Data.Ord> Leaving GHCi.
[-- Attachment #3: record-ghc-package-path --]
[-- Type: text/plain, Size: 187 bytes --]
OUT=output.txt
echo 'GHC_PACKAGE_PATH='$GHC_PACKAGE_PATH >> $OUT
echo "runhaskell: " >> $OUT
runhaskell tutorial.hs |& cat >> $OUT
echo "ghci: " >> $OUT
ghci < tutorial.hs |& cat >> $OUT
[-- Attachment #4: tutorial.hs --]
[-- Type: text/x-haskell, Size: 514 bytes --]
import Data.List
import Text.Regex
import System.Random
import Data.Ord
type Point = (Float,Float)
type Color = (Int,Int,Int)
type Polygon = [Point]
type Person = [Int]
type Link =[Point]
type Placement = [(Person,Person)]
type EnergyFunction a = a -> Int
type TemperatureFunction = Int -> Int -> Float
type TransitionProbabilityFunction = Int -> Int -> Float -> Float
type MotionFunction a = StdGen -> a -> (StdGen,a)
main = do
putstr "Hello World! Let's have a picnic! \n"
^ permalink raw reply [flat|nested] 8+ messages in thread