@@ -4,6 +4,7 @@ module Cabal2Nix.PostProcess ( postProcess ) where
44
55import Data.List
66import Distribution.NixOS.Derivation.Cabal
7+import Distribution.Text ( display )
78
89postProcess :: Derivation -> Derivation
910postProcess deriv@(MkDerivation {..})
@@ -23,7 +24,7 @@ postProcess deriv@(MkDerivation {..})
2324 = deriv { phaseOverrides = cabalInstallPostInstall }
2425 | pname == "cairo" = deriv { extraLibs = "pkgconfig":"libc":"cairo":"zlib":extraLibs }
2526 | pname == "cookie" = deriv { phaseOverrides = cookieDoCheckHook }
26− | pname == "cuda" = deriv { phaseOverrides = cudaConfigurePhase, extraLibs = "cudatoolkit":"nvidia_x11":"self.stdenv.cc":extraLibs }
27+ | pname == "cuda" = deriv { phaseOverrides = cudaConfigurePhase, extraLibs = "cudatoolkit":"nvidia_x11":"stdenv.cc":extraLibs }
2728 | pname == "darcs" = deriv { phaseOverrides = darcsInstallPostInstall }
2829 | pname == "dns" = deriv { testTarget = "spec" }
2930 | pname == "doctest" = deriv { runHaddock = True, phaseOverrides = doctestNoHaddock }
@@ -31,7 +32,7 @@ postProcess deriv@(MkDerivation {..})
3132 | pname == "epic" = deriv { extraLibs = "gmp":"boehmgc":extraLibs, buildTools = "happy":buildTools }
3233 | pname == "either" = deriv { runHaddock = True, phaseOverrides = eitherNoHaddock }
3334 | pname == "ghc-heap-view" = deriv { phaseOverrides = ghciPostInstall }
34− | pname == "ghc-mod" = deriv { phaseOverrides = ghcModPostInstall, buildTools = "emacs":"makeWrapper":buildTools }
35+ | pname == "ghc-mod" = deriv { phaseOverrides = ghcModPostInstall pname version, buildTools = "emacs":"makeWrapper":buildTools }
3536 | pname == "ghc-parser" = deriv { buildTools = "cpphs":"happy":buildTools, phaseOverrides = ghcParserPatchPhase }
3637 | pname == "ghc-paths" = deriv { phaseOverrides = ghcPathsPatches }
3738 | pname == "ghc-vis" = deriv { phaseOverrides = ghciPostInstall }
@@ -114,8 +115,8 @@ postProcess deriv@(MkDerivation {..})
114115 = deriv { runHaddock = True, phaseOverrides = transformersNoHaddock }
115116 | pname == "tz" = deriv { extraFunctionArgs = ["pkgs_tzdata"], phaseOverrides = "preConfigure = \"export TZDIR=${pkgs_tzdata}/share/zoneinfo\";" }
116117 | pname == "vacuum" = deriv { extraLibs = "ghcPaths":extraLibs }
117− | pname == "vector" = deriv { configureFlags = "${self.stdenv.lib.optionalString self.stdenv.isi686 \"--ghc-options=-msse2\"}":configureFlags }
118− | pname == "wxc" = deriv { extraLibs = "wxGTK":"mesa":"libX11":extraLibs, phaseOverrides = wxcPostInstall }
118+ | pname == "vector" = deriv { configureFlags = "${stdenv.lib.optionalString stdenv.isi686 \"--ghc-options=-msse2\"}":configureFlags }
119+ | pname == "wxc" = deriv { extraLibs = "wxGTK":"mesa":"libX11":extraLibs, phaseOverrides = wxcPostInstall version }
119120 | pname == "wxcore" = deriv { extraLibs = "wxGTK":"mesa":"libX11":extraLibs }
120121 | pname == "X11" && version >= Version [1,6] []
121122 = deriv { extraLibs = "libXinerama":"libXext":"libXrender":extraLibs }
@@ -135,7 +136,7 @@ cudaConfigurePhase = unlines
135136 , "# library. GHC's linker fails if the wrong version is found first."
136137 , "# We solve this by eliminating lib64 from the path on 32-bit"
137138 , "# platforms and putting lib64 first on 64-bit platforms."
138− , "libPaths = if self.stdenv.is64bit then \"lib64 lib\" else \"lib\";"
139+ , "libPaths = if stdenv.is64bit then \"lib64 lib\" else \"lib\";"
139140 , "configurePhase = ''"
140141 , " for i in Setup.hs Setup.lhs; do"
141142 , " test -f $i && ghc --make $i"
@@ -154,9 +155,9 @@ cudaConfigurePhase = unlines
154155 , "'';"
155156 ]
156157
157−ghcModPostInstall :: String
158−ghcModPostInstall = unlines
159− [ "configureFlags = \"--datasubdir=${self.pname}-${self.version}\";"
158+ghcModPostInstall :: String -> Version -> String
159+ghcModPostInstall pname version = unlines
160+ [ "configureFlags = \"--datasubdir=" ++ pname ++ "-" ++ display version ++ "\";"
160161 , "postInstall = ''"
161162 , " cd $out/share/$pname-$version"
162163 , " make"
@@ -165,16 +166,16 @@ ghcModPostInstall = unlines
165166 , " ensureDir \"$out/share/emacs\""
166167 , " mv $pname-$version emacs/site-lisp"
167168 , " wrapProgram $out/bin/ghc-mod --add-flags \\"
168− , " \"\\$(${self.ghc.GHCGetPackages} ${self.ghc.version} \\\"\\$(dirname \\$0)\\\" \\\"-g -package-db -g\\\")\""
169+ , " \"\\$(${ghc.GHCGetPackages} ${ghc.version} \\\"\\$(dirname \\$0)\\\" \\\"-g -package-db -g\\\")\""
169170 , " wrapProgram $out/bin/ghc-modi --add-flags \\"
170− , " \"\\$(${self.ghc.GHCGetPackages} ${self.ghc.version} \\\"\\$(dirname \\$0)\\\" \\\"-g -package-db -g\\\")\""
171+ , " \"\\$(${ghc.GHCGetPackages} ${ghc.version} \\\"\\$(dirname \\$0)\\\" \\\"-g -package-db -g\\\")\""
171172 , "'';"
172173 ]
173174
174−wxcPostInstall :: String
175−wxcPostInstall = unlines
175+wxcPostInstall :: Version -> String
176+wxcPostInstall version = unlines
176177 [ "postInstall = ''"
177− , " cp -v dist/build/libwxc.so.${self.version} $out/lib/libwxc.so"
178+ , " cp -v dist/build/libwxc.so." ++ display version ++ " $out/lib/libwxc.so"
178179 , "'';"
179180 ]
180181
@@ -214,7 +215,7 @@ xmonadPostInstall = unlines
214215 ]
215216
216217yiFixHaddock :: String
217−yiFixHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"7.8\";"
218+yiFixHaddock = "noHaddock = stdenv.lib.versionOlder ghc.version \"7.8\";"
218219
219220gitAnnexOverrides :: String
220221gitAnnexOverrides = unlines
@@ -258,20 +259,20 @@ ncursesPatchPhase :: String
258259ncursesPatchPhase = "patchPhase = \"find . -type f -exec sed -i -e 's|ncursesw/||' {} \\\\;\";"
259260
260261doctestNoHaddock, markdownUnlitNoHaddock :: String
261−markdownUnlitNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"7.4\";"
262+markdownUnlitNoHaddock = "noHaddock = stdenv.lib.versionOlder ghc.version \"7.4\";"
262263doctestNoHaddock = markdownUnlitNoHaddock
263264
264265cabal2nixDoCheckHook :: String
265−cabal2nixDoCheckHook = "doCheck = self.stdenv.lib.versionOlder \"7.8\" self.ghc.version;"
266+cabal2nixDoCheckHook = "doCheck = stdenv.lib.versionOlder \"7.8\" ghc.version;"
266267
267268cookieDoCheckHook :: String
268−cookieDoCheckHook = "doCheck = self.stdenv.lib.versionOlder \"7.8\" self.ghc.version;"
269+cookieDoCheckHook = "doCheck = stdenv.lib.versionOlder \"7.8\" ghc.version;"
269270
270271eitherNoHaddock :: String
271−eitherNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"7.6\";"
272+eitherNoHaddock = "noHaddock = stdenv.lib.versionOlder ghc.version \"7.6\";"
272273
273274httpNoHaddock, quickCheckNoHaddock, tarNoHaddock, transformersNoHaddock, hsyslogNoHaddock :: String
274−httpNoHaddock = "noHaddock = self.stdenv.lib.versionOlder self.ghc.version \"6.11\";"
275+httpNoHaddock = "noHaddock = stdenv.lib.versionOlder ghc.version \"6.11\";"
275276quickCheckNoHaddock = httpNoHaddock
276277tarNoHaddock = httpNoHaddock
277278transformersNoHaddock = httpNoHaddock
@@ -308,7 +309,7 @@ mimeMailConfigureFlags = unlines
308309 ]
309310
310311sybDoCheck, splitDoCheck :: String
311−sybDoCheck = "doCheck = self.stdenv.lib.versionOlder self.ghc.version \"7.9\";"
312+sybDoCheck = "doCheck = stdenv.lib.versionOlder ghc.version \"7.9\";"
312313splitDoCheck = sybDoCheck
313314
314315haddockPreCheck :: String