git.iko.soy/typeable/cabal2nix
on master help sign in
Moved hpack logic from Derivation
commitd3a536b9b2e448a26aa1762290ea0e2aea0e5b9a authorTom Smalley <tfsmalley@gmail.com> dateWed 20 Sep 2017, 08:21 (9 years ago) parent8abf395
4 files changed+11−10
src/Cabal2nix.hs+8−2 src/Distribution/Nixpkgs/Haskell/Derivation.hs+1−5 src/Distribution/Nixpkgs/Haskell/FromCabal.hs+1−2 src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs+1−1
src/Cabal2nix.hs+8−2
@@ -17,6 +17,7 @@ import Distribution.Compiler
1717import Distribution.Nixpkgs.Fetch
1818import Distribution.Nixpkgs.Haskell
1919import Distribution.Nixpkgs.Haskell.FromCabal
20+import qualified Distribution.Nixpkgs.Haskell.FromCabal.PostProcess as PP (pkg)
2021import Distribution.Nixpkgs.Haskell.PackageSourceSpec
2122import Distribution.Nixpkgs.Meta
2223import Distribution.PackageDescription ( mkFlagName, FlagAssignment )
@@ -120,6 +121,10 @@ main :: IO ()
120121main = bracket (return ()) (\() -> hFlush stdout >> hFlush stderr) $ \() ->
121122 cabal2nix =<< getArgs
122123
124+hpackOverrides :: Derivation -> Derivation
125+hpackOverrides = over phaseOverrides (++ "preConfigure = \"${hpack}/bin/hpack;\";")
126+ . set (libraryDepends . pkgconfig . contains (PP.pkg "hpack")) True
127+
123128cabal2nix' :: [String] -> IO (Either Doc Derivation)
124129cabal2nix' args = do
125130 Options {..} <- handleParseResult $ execParserPure defaultPrefs pinfo args
@@ -127,8 +132,10 @@ cabal2nix' args = do
127132 pkg <- getPackage optHpack optHackageDb $ Source optUrl (fromMaybe "" optRevision) (maybe UnknownHash Guess optSha256) (fromMaybe "" optSubpath)
128133
129134 let
135+ withHpackOverrides :: Derivation -> Derivation
136+ withHpackOverrides = if pkgRanHpack pkg then hpackOverrides else id
130137 deriv :: Derivation
131− deriv = fromGenericPackageDescription (const True)
138+ deriv = withHpackOverrides $ fromGenericPackageDescription (const True)
132139 (\i -> Just (binding # (i, path # [i])))
133140 optSystem
134141 (unknownCompilerInfo optCompiler NoAbiTag)
@@ -138,7 +145,6 @@ cabal2nix' args = do
138145 & src .~ pkgSource pkg
139146 & subpath .~ (fromMaybe "." optSubpath)
140147 & runHaddock .~ optHaddock
141− & runHpack .~ pkgRanHpack pkg
142148 & jailbreak .~ optJailbreak
143149 & hyperlinkSource .~ optHyperlinkSource
144150 & enableLibraryProfiling .~ (fromMaybe False optEnableProfiling || optEnableLibraryProfiling)
src/Distribution/Nixpkgs/Haskell/Derivation.hs+1−5
@@ -6,7 +6,7 @@
66module Distribution.Nixpkgs.Haskell.Derivation
77 ( Derivation, nullDerivation, pkgid, revision, src, subpath, isLibrary, isExecutable
88 , extraFunctionArgs, libraryDepends, executableDepends, testDepends, configureFlags
9− , cabalFlags, runHaddock, runHpack, jailbreak, doCheck, testTarget, hyperlinkSource, enableSplitObjs
9+ , cabalFlags, runHaddock, jailbreak, doCheck, testTarget, hyperlinkSource, enableSplitObjs
1010 , enableLibraryProfiling, enableExecutableProfiling, phaseOverrides, editedCabalFile, metaSection
1111 , dependencies, setupDepends, benchmarkDepends, enableSeparateDataOutput
1212 )
@@ -59,7 +59,6 @@ data Derivation = MkDerivation
5959 , _editedCabalFile :: String
6060 , _enableSeparateDataOutput :: Bool
6161 , _metaSection :: Meta
62− , _runHpack :: Bool
6362 }
6463 deriving (Show, Eq, Generic)
6564
@@ -91,7 +90,6 @@ nullDerivation = MkDerivation
9190 , _editedCabalFile = error "undefined Derivation.editedCabalFile"
9291 , _enableSeparateDataOutput = error "undefined Derivation.enableSeparateDataOutput"
9392 , _metaSection = error "undefined Derivation.metaSection"
94− , _runHpack = error "undefined Derivation.runHpack"
9593 }
9694
9795makeLenses ''Derivation
@@ -132,7 +130,6 @@ instance Pretty Derivation where
132130 , boolattr "hyperlinkSource" (not _hyperlinkSource) _hyperlinkSource
133131 , onlyIf (not (null _phaseOverrides)) $ vcat ((map text . lines) _phaseOverrides)
134132 , pPrint _metaSection
135− , onlyIf _runHpack $ attr "preConfigure" $ string "${hpack}/bin/hpack"
136133 ]
137134 , rbrace
138135 ]
@@ -141,7 +138,6 @@ instance Pretty Derivation where
141138 inputs = Set.unions [ Set.map (view (localName . ident)) _extraFunctionArgs
142139 , setOf (dependencies . each . folded . localName . ident) drv
143140 , Set.fromList ["fetch" ++ derivKind _src | derivKind _src /= "" && not isHackagePackage]
144− , if _runHpack then Set.singleton "hpack" else Set.empty
145141 ]
146142
147143 renderedFlags = [ text "-f" <> (if enable then empty else char '-') <> text (unFlagName f) | (f, enable) <- _cabalFlags ]
src/Distribution/Nixpkgs/Haskell/FromCabal.hs+1−2
@@ -17,7 +17,7 @@ import Distribution.Nixpkgs.Haskell.Constraint
1717import Distribution.Nixpkgs.Haskell.FromCabal.License
1818import Distribution.Nixpkgs.Haskell.FromCabal.Name
1919import Distribution.Nixpkgs.Haskell.FromCabal.Normalize
20−import Distribution.Nixpkgs.Haskell.FromCabal.PostProcess
20+import Distribution.Nixpkgs.Haskell.FromCabal.PostProcess (postProcess)
2121import qualified Distribution.Nixpkgs.Meta as Nix
2222import Distribution.Package
2323import Distribution.PackageDescription
@@ -79,7 +79,6 @@ fromPackageDescription haskellResolver nixpkgsResolver missingDeps flags (Packag
7979 & configureFlags .~ mempty
8080 & cabalFlags .~ flags
8181 & runHaddock .~ maybe True (not . null . exposedModules) library
82− & runHpack .~ False
8382 & jailbreak .~ False
8483 & doCheck .~ True
8584 & testTarget .~ mempty
src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs+1−1
@@ -1,6 +1,6 @@
11{-# LANGUAGE OverloadedStrings #-}
22
3−module Distribution.Nixpkgs.Haskell.FromCabal.PostProcess ( postProcess ) where
3+module Distribution.Nixpkgs.Haskell.FromCabal.PostProcess ( postProcess, pkg ) where
44
55import Control.Lens
66import Data.List.Split