Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xmonad can't find module XMonad (or any other)

Whenever xmonad starts, restarts, or is recompiled, I get an xmessage:

xmonad.hs:1:8:
Could not find module `XMonad'
 Perhaps you meant
    Monad (needs flag -package haskell98-2.0.0.2)
    CgMonad (needs flag -package ghc-7.6.3)
    DsMonad (needs flag -package ghc-7.6.3)
 Use -v to see a list of the files searched for

This doesn't stop it from starting, but I only see updates to xmonad or xmobar settings on system reboot. My current xmonad.hs is just

import XMonad

main = xmonad defaultConfig

and it still produces the error. Any attempts to import other modules give similar results. I have both xmonad and xmonad-contrib installed from the Arch repositories, so the modules should be properly in the ghc search path, right? I've tried reinstalling the packages from Cabal like some other sources have suggested, but it turned into a complete snafu, so I went back to the Arch repos, which ought to work. Kind of at a loss for where to go from here; any help would be greatly appreciated.

EDIT: ghc-pkg list xmonad returns

/usr/lib/ghc-7.6.3/packag.conf.d
    xmonad-0.11
/home/decalis/.ghc/x86_64-linux-7.6.3/package.conf.d

and ghc-pkg check output is here: http://pastebin.com/BsCPMn8M. The issue is a little clearer after seeing that, but I still don't get why it's looking in ~/.cabal when all of the packages and their dependencies were resolved from the Arch repos by pacman.

like image 855
Decalis Avatar asked Mar 13 '14 21:03

Decalis


2 Answers

For me the solution was to run ghc-pkg recache since the ghc cache was just out of sync for some reason. It's worth trying before wiping the whole ghc database.

like image 115
André Laszlo Avatar answered Oct 02 '22 22:10

André Laszlo


In cases like this one of the first things to try is to "start from scratch", i.e. forget about all the local packages that you might have installed in the past.

To do this, wipe (or rename/move) ghc's package database, which is under ~/.ghc/$arch-$os-$ghcver (such as ~/.ghc/i386-linux-7.6.3). Or just remove ~/.ghc altogether.

like image 29
Roman Cheplyaka Avatar answered Oct 02 '22 23:10

Roman Cheplyaka