3
0
Fork 0
forked from mirrors/nixpkgs

update ghc stuff (hsp is now supported as well except hsp-xml)

svn path=/nixpkgs/trunk/; revision=12509
This commit is contained in:
Marc Weber 2008-08-06 11:41:17 +00:00
parent cc44e2bb54
commit 7608d6f063
20 changed files with 310 additions and 21 deletions

View file

@ -36,6 +36,8 @@ args:
nix_repository_manager = { type = "darcs"; url = "http://mawercer.de/~marc/repos/nix-repository-manager"; };
plugins = { type = "darcs"; url="http://code.haskell.org/~dons/code/hs-plugins/"; groups="haskell"; };
# darcs repositories haskell
http = { type= "darcs"; url="http://darcs.haskell.org/http/"; groups="happs"; };
syb_with_class = { type="darcs"; url="http://happs.org/HAppS/syb-with-class"; groups="happs"; };
@ -45,8 +47,20 @@ args:
happs_plugins = { type="darcs"; url=http://happs.org/repos/HAppS-Plugins; groups="happs"; };
happs_ixset = { type="darcs"; url=http://happs.org/repos/HAppS-IxSet; groups="happs"; };
happs_server = { type="darcs"; url=http://happs.org/repos/HAppS-Server; groups="happs"; };
happs_hsp = { type="darcs"; url="http://code.haskell.org/HSP/happs-hsp"; groups="happs haskell hsp"; };
happs_hsp_template = { type="darcs"; url="http://code.haskell.org/HSP/happs-hsp-template"; groups="happs haskell hsp"; };
# haskell_src_exts_metaquote = { type="darcs"; url=http://code.haskell.org/~morrow/code/haskell/haskell-src-exts-metaquote; groups="happs haskell hsp"; };
haskell_src_exts = { type="darcs"; url=http://code.haskell.org/HSP/haskell-src-exts/; groups="happs haskell hsp"; };
hsp = { type="darcs"; url="http://code.haskell.org/HSP/hsp"; groups="happs haskell hsp"; };
hsp_xml = { type="darcs"; url="http://code.haskell.org/HSP/hsp-xml"; groups="happs haskell hsp"; };
hspCgi = { type="darcs"; url="http://code.haskell.org/HSP/hsp-cgi"; groups="happs haskell hsp"; };
hjscript = { type="darcs"; url="http://code.haskell.org/HSP/hjscript"; groups="happs haskell hsp"; };
hjquery = { type="darcs"; url="http://code.haskell.org/HSP/hjquery"; groups="happs haskell hsp"; };
hjavascript = { type="darcs"; url="http://code.haskell.org/HSP/hjavascript"; groups="happs haskell hsp"; };
takusen = { type="darcs"; url=http://darcs.haskell.org/takusen/; };
cabal = { type="darcs"; url=http://darcs.haskell.org/cabal; };
haxml = { type="darcs"; url=http://www.cs.york.ac.uk/fp/darcs/HaXml; groups = "pg_haskell"; };
# git repositories

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/happs_hsp.tar.gz;
sha256 = "cc4df8509468ec83e3f448bb1e1fe5cb7e1f2408851861df31f139778e3c8cc8";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/happs_hsp_template.tar.gz;
sha256 = "b41336352ab878c1342c872e82354de1853366ddaf3abeb213ccad073052c9ac";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/haskell_src_exts.tar.gz;
sha256 = "6cb2214ee3a62083325c907e47979b5fdf6809ce0ef2cd400fba0219b3f42090";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/hjavascript.tar.gz;
sha256 = "fcf76a344eda3afca9b87f8e8ae1d343953b1bdda5da062f887a47f7d5a3c0da";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/hjquery.tar.gz;
sha256 = "32691467d83acd73f733c695266fbeeb4978ee43f4380d3b3554350bfb7cbb0e";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/hjscript.tar.gz;
sha256 = "fba290645b5ada63030143137d653d34ca5874660e8ab31072a76a57933dfce2";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/hsp.tar.gz;
sha256 = "bfaf83e5eff20226f9602c7889462f86d176b673b1cf677c280aeabb6dd560a3";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/hspCgi.tar.gz;
sha256 = "87bd8cb7e3ccad0147c36ce7af0f3089684b739f4149376821e258445b83f7b6";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/hsp_xml.tar.gz;
sha256 = "203efdd5ec3784be0b1580569e56f278e102c2275350934a3b2ee4850b7ee34f";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/libnih.tar.gz;
sha256 = "443c7af0363d1fb3b040d1903ff28cbd520c9f32634bff639263b8315b293acc";}

View file

@ -1,3 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/nix_repository_manager.tar.gz;
sha256 = "6422ef73ea0efceed6ee8e0c6349826813a921ef6f15f68eacc11a3cf1304b37";}
sha256 = "449065f8411c5628b9fe88445601558dfd9a5f87b1703df9465838ef0afb9d34";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/plugins.tar.gz;
sha256 = "33206e33258b64fbb077291cd1f5f20629c6129c5541c177e51074a3082f59fa";}

View file

@ -0,0 +1,3 @@
args: with args; fetchurl {
url = http://mawercer.de/~nix/repos/upstart.tar.gz;
sha256 = "3243857ce4e0cd0d6fe28dbdcaa294b5590befed79b54a306b40cb5c65b381db";}

View file

@ -53,4 +53,15 @@
Extensions: ForeignFunctionInterface
Exposed-Modules:
WASH.CGI.AbstractSelector
--- a/Setup.lhs
+++ b/Setup.lhs
@@ -5,7 +5,7 @@ arch-tag: Main setup script
> import Distribution.Simple.Configure
> import Distribution.Simple.LocalBuildInfo
> import Distribution.Simple.Program
-> import Distribution.Setup
+> import Distribution.Simple.Setup
> import Distribution.Text
> import Distribution.Verbosity
> import Distribution.PackageDescription

View file

@ -52,6 +52,16 @@ path is /nix/store/ikrbg8w0xxnbnggbvld5af2ib1bdpcfn-hexpat-0.2.tar.gz
*/
# plugins doesn't compile with recent cabal
# plugins = { name="plugins-1.2"; src = fetchurl { url = http://hackage.haskell.org/packages/archive/plugins/1.2/plugins-1.2.tar.gz; sha256 = "1v2b3p3d2d3ab8zlzad4i6yy3zmarvkd09r71yc237xx66s7i9s5"; }; p_deps = [ x.array x.base x.cabal_darcs x.containers x.directory x.ghc x.haskellSrc x.process x.random ]; };
plugins_darcs = { name="plugins-darcs"; src = sourceByName "plugins"; p_deps = [ x.array x.base x.cabal_darcs x.containers x.directory x.ghc x.haskellSrc x.process x.random ];
pass = { patches = ./plugins-darcs-patches; };
};
hinotify = { name="hinitofy-0.2"; src = fetchurl{ url = http://hackage.haskell.org/packages/archive/hinotify/0.2/hinotify-0.2.tar.gz; sha256 = "1x9mnlqy8lsq3qy9d559kxwqlj32smr9an76nf5i4hj67vicw1al"; }; p_deps = [ x.base x.containers x.directory x.unix ]; };
harp = { name="harp-0.2.1"; src = fetchurl{ url = http://hackage.haskell.org/packages/archive/harp/0.2.1/harp-0.2.1.tar.gz; sha256 = "865e8c229e1ff89297b4348be95d93c10e373b63b7910da1e6b3330b48b96b87"; }; p_deps = [x.base]; };
hsx = { name="hsx-0.4.4"; src = fetchurl{ url = http://hackage.haskell.org/packages/archive/hsx/0.4.4/hsx-0.4.4.tar.gz; sha256 = "1wr70h1r8vmzs1xsiiq89h0k3gips8krp5p4s4f6vjglg3w27q7h"; }; p_deps = [x.base x.haskellSrcExt x.mtl x.haskellSrcExtDarcs]; };
# TODO remove
# haskell_src_exts_metaquote = { name = "haskell_src_exts_metaquote-darcs"; src = sourceByName "haskell_src_exts_metaquote"; p_deps = [ x.base x.mtl x.containers x.array x.pretty x.binary x.packaged_string ]; };
# hint = { name="hint-0.1"; src = fetchurl { url = "http://hackage.haskell.org/packages/archive/hint/0.1/hint-0.1.tar.gz"; sha256 = "1adydl2la4lxxl6zz24lm4vbdrsi4bkpppzxhpkkmzsjhhkpf2f9"; }; p_deps = [ x.base x.ghc x.haskellSrc x.mtl ]; };
pcreLight = { name="pcre-light-0.3.1"; src= fetchurl { url = http://hackage.haskell.org/packages/archive/pcre-light/0.3.1/pcre-light-0.3.1.tar.gz; sha256 = "1h0qhfvqjcx59zkqhvsy7vw23l4444czg2z7b2lndy6cmkqc719m"; }; p_deps = [x.base x.bytestring pcre x.haskell98 ];
@ -68,6 +78,7 @@ path is /nix/store/ikrbg8w0xxnbnggbvld5af2ib1bdpcfn-hexpat-0.2.tar.gz
};
};
# hint = { name="hint-0.1"; src = fetchurl { url = "http://hackage.haskell.org/packages/archive/hint/0.1/hint-0.1.tar.gz"; sha256 = "1adydl2la4lxxl6zz24lm4vbdrsi4bkpppzxhpkkmzsjhhkpf2f9"; }; p_deps = [ x.base x.ghc x.haskellSrc x.mtl ]; };
bloomfilter = { name = "bloomfilter-1.2.1"; src = fetchurl { url = http://hackage.haskell.org/packages/archive/bloomfilter/1.2.1/bloomfilter-1.2.1.tar.gz; sha256 = "1d2m0w8lgpdpykdgp08bmy5jb1c89by4xnkfy2bnh8f02nb1zlsm"; }; p_deps = [ x.base x.bytestring x.containers ]; };
timeout = { name="timeout-0.1.2"; src = fetchurl{ url = http://hackage.haskell.org/packages/archive/control-timeout/0.1.2/control-timeout-0.1.2.tar.gz; sha256 = "1g1x6c4dafckwcw48v83f3nm2sxv8kynwv8ib236ay913ycgayvg";}; p_deps = [ x.base x.time x.stm ]; };
parsec3 = { name="parsec-3.0.0"; p_deps=[ x.base x.mtl x.bytestring ]; src = fetchurl { url = "http://hackage.haskell.org/packages/archive/parsec/3.0.0/parsec-3.0.0.tar.gz"; sha256 = "0fqryy09y8h7z0hlayg5gpavghgwa0g3bldynwl17ks8l87ykj7a"; }; };
@ -155,21 +166,21 @@ path is /nix/store/ikrbg8w0xxnbnggbvld5af2ib1bdpcfn-hexpat-0.2.tar.gz
# "; };
# };
# I'm getting a glibc error when compiling - where does it come from ?
takusen = rec { name = "takusen-0.8"; p_deps = [ x.base x.mtl x.haskell98 x.time postgresql sqlite ];
src = sourceByName "takusen";
pass = {
inherit postgresql sqlite;
patch = ./takusen_setup_patch;
# no ODBC, Oracle support in nix
patchPhase = "patch -p1 Setup.hs < \$patch
sed -e '/ODBC/d' -i Takusen.cabal
sed -e '/Oracle/d' -i Takusen.cabal
sed -e \"s=pg_path=\$postgresql=\" -e \"s=sqlite_path=\$sqlite=\" -i Setup.hs
sed -e \"s=configVerbose=configVerbosity=\" -e \"s=sqlite_path=\$sqlite=\" -i Setup.hs
sed -e \"s=regVerbose=regVerbosity=\" -e \"s=sqlite_path=\$sqlite=\" -i Setup.hs
";
};
};
#takusen = rec { name = "takusen-0.8"; p_deps = [ x.base x.mtl x.haskell98 x.time postgresql sqlite ];
# src = sourceByName "takusen";
# pass = {
# inherit postgresql sqlite;
# patch = ./takusen_setup_patch;
# [> no ODBC, Oracle support in nix
# patchPhase = "patch -p1 Setup.hs < \$patch
# sed -e '/ODBC/d' -i Takusen.cabal
# sed -e '/Oracle/d' -i Takusen.cabal
# sed -e \"s=pg_path=\$postgresql=\" -e \"s=sqlite_path=\$sqlite=\" -i Setup.hs
# sed -e \"s=configVerbose=configVerbosity=\" -e \"s=sqlite_path=\$sqlite=\" -i Setup.hs
# sed -e \"s=regVerbose=regVerbosity=\" -e \"s=sqlite_path=\$sqlite=\" -i Setup.hs
# ";
# };
# };
hdbc = rec { name = "hdbc-1.1.4.0"; p_deps = [ x.base x.mtl x.haskell98 x.time x.bytestring postgresql sqlite ];
src = fetchurl {
url = http://software.complete.org/hdbc/static/download_area/1.1.4.0/hdbc_1.1.4.0.tar.gz;
@ -266,6 +277,9 @@ path is /nix/store/ikrbg8w0xxnbnggbvld5af2ib1bdpcfn-hexpat-0.2.tar.gz
haskellSrcExt = { name = "haskell-src-exts-0.3.3.tar.gz"; src = fetchurl { url = "http://hackage.haskell.org/packages/archive/haskell-src-exts/0.3.3/haskell-src-exts-0.3.3.tar.gz"; sha256 = "0g9ibjj1k5k3mqfx5mp8pqr0zx53pp9dkf52r8cdv18bl8xhzbpx"; }; p_deps = [ x.base x.base x.array x.pretty ];
pass = { buildInputs = (with executables; [ happy alex ] ); };
};
haskellSrcExtDarcs = { name = "haskell-src-exts-darcs"; src = sourceByName "haskell_src_exts"; p_deps = [ x.base x.base x.array x.pretty ];
pass = { buildInputs = (with executables; [ happy alex ] ); };
};
# haskelldb
haskelldb = { name = "haskelldb-0.10"; src = fetchurl { url = "http://hackage.haskell.org/packages/archive/haskelldb/0.10/haskelldb-0.10.tar.gz"; sha256 = "1i4kgsgajr9cijg0a2c04rn1zqwiasfvdbvs8c5qm49vkbdzm7l5"; }; p_deps = [ x.base x.haskell98 x.mtl x.pretty x.old_time x.directory x.old_locale];
@ -301,6 +315,9 @@ path is /nix/store/ikrbg8w0xxnbnggbvld5af2ib1bdpcfn-hexpat-0.2.tar.gz
src = fetchurl { url = "http://www.haskell.org/HaXml/${name}.tar.gz";
sha256 = "08d9wy0rg9m66dd10x0zvkl74l25vxdakz7xp3j88s2gd31jp1v0"; };
};
haxml_darcs = { name = "HaXml-darcs"; p_deps = [ x.base x.rts x.directory x.process x.pretty x.containers x.filepath x.haskell98 x.polyparse x.bytestring ];
src = sourceByName "haxml";
};
xhtml = rec { name = "xhtml-3000.0.2.2"; p_deps = [ x.base ];
src = fetchurl { url = "http://hackage.haskell.org/packages/archive/xhtml/3000.0.2.2/xhtml-3000.0.2.2.tar.gz";
sha256 = "112mbq26ksh7r22y09h0xvm347kba3p4ns12vj5498fqqj333878"; };
@ -384,10 +401,28 @@ path is /nix/store/ikrbg8w0xxnbnggbvld5af2ib1bdpcfn-hexpat-0.2.tar.gz
# md5 = "956e5c293b60f4a98148fedc5fa38acc";
# };
};
# happs_plugins_darcs = { name="HAppS-plugins-darcs"; p_deps=[ x.base x.mtl x.hslogger x.happs_util_darcs x.happs_data_darcs x.happs_state_darcs x.containers ];
#[>src = fetchdarcs { url = "http://happs.org/repos/HAppS-Plugins"; md5 = "693cb79017e522031c307ee5e59fc250"; };
# src = bleedingEdgeRepos.sourceByName "happs_plugins";
# };
happs_hsp_darcs = { name="happs-hsp-darcs"; src=sourceByName "happs_hsp"; p_deps=[x.base x.mtl x.bytestring x.plugins_darcs x.happs_server_darcs x.hsp_darcs x.containers x.rjson x.directory x.hinotify x.filepath];
pass = { patches = ./hsp-darcs-patch; };
};
happs_hsp_template_darcs = { name="happs-hsp-template-darcs"; src=sourceByName "happs_hsp_template"; p_deps=[ x.base x.bytestring x.filepath x.directory x.mtl x.containers x.network x.hinotify x.plugins_darcs x.rjson x.happs_server_darcs x.hsp_darcs]; };
hsp_darcs = { name="hsp-darcs"; src=sourceByName "hsp"; p_deps=[x.base x.mtl x.harp x.hsx x.hjscript_darcs];
pass = { inherit (x) hsx; postUnpack=''PATH=$PATH:$hsx/usr/local/bin''; };
};
#hsp_xml_darcs = { name="hsp-xml-darcs"; src=sourceByName "hsp_xml"; p_deps=[x.base x.haskell98 x.hsp_darcs x.hsx x.mtl x.harp x.haxml_darcs];
# pass = { inherit (x) hsx; postUnpack=''PATH=$PATH:$hsx/usr/local/bin''; };
# };
hspCgi_darcs = { name="hsp-cgi-darcs"; src=sourceByName "hspCgi"; p_deps=[x.base x.hsp_darcs x.network x.containers x.harp];
pass = { inherit (x) hsx; postUnpack=''PATH=$PATH:$hsx/usr/local/bin''; };
};
hjscript_darcs = { name="hjscript-darcs"; src=sourceByName "hjscript"; p_deps=[x.base x.hjavascript_darcs x.mtl x.hsx]; };
hjquery_darcs = { name="hjquery-darcs"; src=sourceByName "hjquery"; p_deps=[x.base x.hjscript_darcs ]; };
hjavascript_darcs = { name="darcs"; src=sourceByName "hjavascript"; p_deps=[x.base x.pretty]; };
#happs_plugins_darcs = { name="HAppS-plugins-darcs"; p_deps=[ x.base x.mtl x.hslogger x.happs_util_darcs x.happs_data_darcs x.happs_state_darcs x.containers ];
#src = bleedingEdgeRepos.sourceByName "happs_plugins";
#};
# there is no .cabal yet
#happs_smtp_darcs = { name="HAppS-smtp-darcs"; p_deps=[];
#src = fetchdarcs { url = "http://happs.org/repos/HAppS-smtp"; md5 = "5316917e271ea1ed8ad261080bcb47db"; };
@ -416,7 +451,7 @@ path is /nix/store/ikrbg8w0xxnbnggbvld5af2ib1bdpcfn-hexpat-0.2.tar.gz
cabal_darcs =
{ name=cabal_darcs_name; p_deps = with ghc.core_libs; [base rts directory process pretty containers filepath];
src = sourceByName "cabal";
pass = { dummy = 1; };
pass = { dummy = 2; };
};
} // (getConfig [ "ghc68CustomLibs" ] ( args: x : {} ) ) args x;
#srcs_only = let x = pkgs; in map (y : y.src ) [ x.happs_util_darcs x.happs_data_darcs x.syb_with_class_darcs x.http_darcs

View file

@ -0,0 +1,13 @@
diff --git a/happs-hsp.cabal b/happs-hsp.cabal
index 9669b43..d41c7ac 100644
--- a/happs-hsp.cabal
+++ b/happs-hsp.cabal
@@ -1,7 +1,7 @@
Name: happs-hsp
Version: 0.1
Build-Type: Simple
-Build-Depends: base, mtl, bytestring, plugins, HAppS-Server, hsp
+Build-Depends: base, mtl, bytestring, plugins, HAppS-Server, hsp, containers, RJson, directory, hinotify, filepath
LICENSE: BSD3
Hs-Source-Dirs: src

View file

@ -0,0 +1,10 @@
-- - a/hsx-0.4.4/src/HSX/Transform.hs
+++ b/hsx-0.4.4/src/HSX/Transform.hs
@@ -17,6 +17,7 @@ module HSX.Transform (
transform -- :: HsModule -> HsModule
) where
+import Language.Haskell.Meta.Exts.Syntax
import Language.Haskell.Exts.Syntax
import Language.Haskell.Exts.Build
import Data.List (union)

View file

@ -0,0 +1,166 @@
diff --git a/src/System/Plugins/Env.hs b/src/System/Plugins/Env.hs
index 64a840c..8bb0e8d 100644
--- a/src/System/Plugins/Env.hs
+++ b/src/System/Plugins/Env.hs
@@ -73,7 +73,9 @@ import System.IO.Error ( catch, ioError, isDoesNotExistError )
import Control.Concurrent.MVar ( MVar(), newMVar, withMVar )
-import Distribution.Package
+import Distribution.Package hiding (PackageName, packageName, depends)
+import Distribution.Text (display, simpleParse)
+
import Text.ParserCombinators.ReadP
import qualified Data.Map as M
@@ -284,9 +286,9 @@ addPkgConf f = do
union :: PkgEnvs -> [PackageConfig] -> PkgEnvs
union ls ps' =
let fm = emptyFM -- new FM for this package.conf
- in foldr (\p fm' -> if packageName_ p == "base" -- ghc doesn't supply a version with 'base'
+ in foldr (\p fm' -> if display (packageName_ p) == "base" -- ghc doesn't supply a version with 'base'
-- for some reason.
- then addToFM (addToFM fm' (packageName_ p) p) (packageName p) p
+ then addToFM (addToFM fm' (packageName p) p) (packageName p) p
else addToFM fm' (packageName p) p) fm ps' : ls
--
@@ -330,7 +332,7 @@ addStaticPkg pkg = modifyStaticPkgEnv env $ \set -> return $ S.insert pkg set
isStaticPkg :: PackageName -> IO Bool
isStaticPkg pkg
- = case readP_to_S parsePackageName pkg of
+ = case reads pkg of
((pkgName,_):_) -> withStaticPkgEnv env $ \set -> return $ S.member pkgName set
[] -> return False
@@ -513,4 +515,3 @@ addMerge a b z = modifyMerged env $ \fm -> return $ addToFM fm (a,b) z
--
(</>) :: FilePath -> FilePath -> FilePath
[] </> b = b
-a </> b = a ++ "/" ++ b
diff --git a/src/System/Plugins/PackageAPI.hs b/src/System/Plugins/PackageAPI.hs
index 7ac4201..ba8db23 100644
--- a/src/System/Plugins/PackageAPI.hs
+++ b/src/System/Plugins/PackageAPI.hs
@@ -40,7 +40,8 @@ module System.Plugins.PackageAPI (
#if CABAL == 1 || __GLASGOW_HASKELL__ >= 604
import Distribution.InstalledPackageInfo
-import Distribution.Package
+import Distribution.Package hiding (PackageName, packageName, depends)
+import Distribution.Text (display)
#else
import System.Plugins.Package
#endif
@@ -57,9 +58,9 @@ type PackageName = String
type PackageConfig = InstalledPackageInfo
-packageName = showPackageId . package
+packageName = display . package
packageName_ = pkgName . package
-packageDeps = (map showPackageId) . depends
+packageDeps = (map display) . depends
updImportDirs f pk@(InstalledPackageInfo { importDirs = idirs }) =
pk { importDirs = f idirs }
diff --git a/src/System/Plugins/ParsePkgConfCabal.hs b/src/System/Plugins/ParsePkgConfCabal.hs
index eba427e..2f7c13b 100644
--- a/src/System/Plugins/ParsePkgConfCabal.hs
+++ b/src/System/Plugins/ParsePkgConfCabal.hs
@@ -6,18 +6,27 @@ module System.Plugins.ParsePkgConfCabal (
) where
import Distribution.InstalledPackageInfo
-import Distribution.Package
+import Distribution.Package hiding (depends)
+import Distribution.ModuleName (components, ModuleName)
+import Distribution.Text (simpleParse)
+
import Distribution.Version
import Data.Char ( isSpace, isAlpha, isAlphaNum, isUpper, isDigit )
-import Data.List ( break )
+import Data.List ( break, intercalate )
+import Data.Maybe ( fromJust )
import Data.Array
+
#if __GLASGOW_HASKELL__ >= 503
import GHC.Exts
#else
import GlaExts
#endif
+moduleName :: [String] -> [ModuleName]
+moduleName = map (sParse "module name")
+sParse what = (\s -> maybe (error ("couldn't parse " ++ what ++ ", string: " ++ s)) id (simpleParse s))
+
-- parser produced by Happy Version 1.15
newtype HappyAbsSyn = HappyAbsSyn (() -> ())
@@ -269,8 +278,8 @@ happyReduction_13 happy_x_3
case happyOut16 happy_x_3 of { happy_var_3 ->
happyIn9
(\p -> case happy_var_1 of
- "exposedModules" -> p{exposedModules = happy_var_3}
- "hiddenModules" -> p{hiddenModules = happy_var_3}
+ "exposedModules" -> p{exposedModules = moduleName happy_var_3 }
+ "hiddenModules" -> p{hiddenModules = moduleName happy_var_3}
"importDirs" -> p{importDirs = happy_var_3}
"libraryDirs" -> p{libraryDirs = happy_var_3}
"hsLibraries" -> p{hsLibraries = happy_var_3}
@@ -316,7 +325,7 @@ happyReduction_15 (happy_x_10 `HappyStk`
= case happyOutTok happy_x_5 of { (ITstring happy_var_5) ->
case happyOut11 happy_x_9 of { happy_var_9 ->
happyIn10
- (PackageIdentifier{ pkgName = happy_var_5,
+ (PackageIdentifier{ pkgName = sParse "package name" happy_var_5,
pkgVersion = happy_var_9 }
) `HappyStk` happyRest}}
diff --git a/src/System/Plugins/ParsePkgConfCabal.y_in b/src/System/Plugins/ParsePkgConfCabal.y_in
index ddd4516..38bb068 100644
--- a/src/System/Plugins/ParsePkgConfCabal.y_in
+++ b/src/System/Plugins/ParsePkgConfCabal.y_in
@@ -36,12 +36,18 @@ module System.Plugins.ParsePkgConfCabal (
) where
import Distribution.InstalledPackageInfo
-import Distribution.Package
+import Distribution.Package hiding (depends)
import Distribution.Version
+import Distribution.ModuleName (components, ModuleName)
+import Distribution.Text (simpleParse)
import Data.Char ( isSpace, isAlpha, isAlphaNum, isUpper, isDigit )
-import Data.List ( break )
+import Data.List ( break, intercalate )
+import Data.Maybe ( fromJust )
+moduleName :: [String] -> [ModuleName]
+moduleName = map (sParse "module name")
+sParse what = (\s -> maybe (error ("couldn't parse " ++ what ++ ", string: " ++ s)) id (simpleParse s))
}
%token
@@ -102,8 +108,8 @@ field :: { PackageConfig -> PackageConfig }
| VARID '=' strlist
{\p -> case $1 of
- "exposedModules" -> p{exposedModules = $3}
- "hiddenModules" -> p{hiddenModules = $3}
+ "exposedModules" -> p{exposedModules = moduleName $3}
+ "hiddenModules" -> p{hiddenModules = moduleName $3}
"importDirs" -> p{importDirs = $3}
"libraryDirs" -> p{libraryDirs = $3}
"hsLibraries" -> p{hsLibraries = $3}
@@ -130,7 +136,7 @@ field :: { PackageConfig -> PackageConfig }
pkgid :: { PackageIdentifier }
: CONID '{' VARID '=' STRING ',' VARID '=' version '}'
- { PackageIdentifier{ pkgName = $5,
+ { PackageIdentifier{ pkgName = sParse "package name" $5,
pkgVersion = $9 } }
version :: { Version }

View file

@ -1452,6 +1452,10 @@ let pkgs = rec {
# classic expression style.. seems to work fine
# used now
# srcDir contains source directory (containing the .cabal file)
# TODO: set --bindir=/usr/local or such (executables are installed to
# /usr/local/bin which is not added to path when building other packages
# hsp needs trhsx from hsx
# TODO add eval "$preBuild" phase
ghcCabalDerivation = args : with args;
let buildInputs = (if (args ? buildInputs) then args.buildInputs else [])
++ [ ghcPkgUtil ] ++ ( if args ? pass && args.pass ? buildInputs then args.pass.buildInputs else []);