perl6 / Pugs.hs

(ARCHIVE) Raku User's Golfing System in Haskell
84 stars 17 forks source link

Pugs build fails on GHC 7.4.1/Windows #25

Open ghost opened 11 years ago

ghost commented 11 years ago

Pugs.hs build fails on latest haskell platform (2012.2.0.0 with GHC 7.4.1). The OS is windows 7 64 bit.

C:\>cabal update
Downloading the latest package list from hackage.haskell.org

C:\>cabal install Pugs
Resolving dependencies...
Configuring pugs-compat-0.0.6.20120717.204800...
Building pugs-compat-0.0.6.20120717.204800...
Preprocessing library pugs-compat-0.0.6.20120717.204800...

src\Pugs\Compat\Posix.hs:134:8:
    Could not find module `IO'
    It is a member of the hidden package `haskell98-2.0.0.1'.
    Perhaps you need to add `haskell98' to the build-depends in your .cabal file
.
    Use -v to see a list of the files searched for.
cabal: Error: some packages failed to install:
Pugs-6.2.13.20120717 depends on pugs-compat-0.0.6.20120717.204800 which failed
to install.
pugs-compat-0.0.6.20120717.204800 failed during the building phase. The
exception was:
ExitFailure 1

C:\>ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.4.1

A more verbose output can be found here: https://gist.github.com/3810975#file_cabal.issue_verbose.txt

I tried to fix that with moving IO to System.IO - admittedly, it seems to be more involved than that. Unless I'm very much mistaken, this would involve moving any dependencies from haskell98 to base (that's bundled along with GHC, as is the case since GHC 7.0.1)

mathw commented 11 years ago

It's probably to do with base now being Haskell 2010, and thus not having Haskell 98's library set visible. There's a way to get GHC to use the Haskell 98 set, which is more of a stopgap but might help get things up and running for a while (i.e. until they stop shipping Haskell 98's core libraries). As http://stackoverflow.com/questions/9555671/ghc-7-4-update-breaks-haskell98 answers explain:

ghc -package haskell98 -hide-package base

Because base is now Haskell 2012, you have to hide it and bring Haskell 98 in instead.

ghost commented 11 years ago

Right, since we mostly rely on haskell98 for base packages, is it time to switch to ghc's base?

Feel free to contact me over email and I'm willing to help out. On Oct 1, 2012 7:14 PM, "Matthew Walton" notifications@github.com wrote:

It's probably to do with base now being Haskell 2010, and thus not having Haskell 98's library set visible. There's a way to get GHC to use the Haskell 98 set, which is more of a stopgap but might help get things up and running for a while (i.e. until they stop shipping Haskell 98's core libraries). As http://stackoverflow.com/questions/9555671/ghc-7-4-update-breaks-haskell98answers explain:

ghc -package haskell98 -hide-package base

Because base is now Haskell 2012, you have to hide it and bring Haskell 98 in instead.

— Reply to this email directly or view it on GitHubhttps://github.com/perl6/Pugs.hs/issues/25#issuecomment-9032316.

ghost commented 11 years ago

Hiding base package doesn't quite seem to be the right solution, since Compat.hs in pugs-compat uses System.Mem.Weak which is part of base. Using both haskell98 and base doesn't cut it either, since it leads to ambiguous Prelude errors.

Is there a better way of specifiying exact modules on a per-file basis?