git.iko.soy/typeable/cabal2nix
on master help sign in
Implement support for dependencies of Setup.hs.
commit90ca02318304e67d01b8e6cb0c779aaf342e66d6 authorPeter Simons <simons@cryp.to> dateThu 9 Jun 2016, 18:46 (10 years ago) parent579e959
2 files changed+10−2
distribution-nixpkgs/src/Distribution/Nixpkgs/Haskell/Derivation.hs+5−2 distribution-nixpkgs/src/Distribution/Nixpkgs/Haskell/FromCabal.hs+5
distribution-nixpkgs/src/Distribution/Nixpkgs/Haskell/Derivation.hs+5−2
@@ -8,7 +8,7 @@ module Distribution.Nixpkgs.Haskell.Derivation
88 , extraFunctionArgs, libraryDepends, executableDepends, testDepends, configureFlags
99 , cabalFlags, runHaddock, jailbreak, doCheck, testTarget, hyperlinkSource, enableSplitObjs
1010 , enableLibraryProfiling, enableExecutableProfiling, phaseOverrides, editedCabalFile, metaSection
11− , dependencies
11+ , dependencies, setupDepends
1212 )
1313 where
1414
@@ -40,6 +40,7 @@ data Derivation = MkDerivation
4040 , _isLibrary :: Bool
4141 , _isExecutable :: Bool
4242 , _extraFunctionArgs :: Set Identifier
43+ , _setupDepends :: BuildInfo
4344 , _libraryDepends :: BuildInfo
4445 , _executableDepends :: BuildInfo
4546 , _testDepends :: BuildInfo
@@ -67,6 +68,7 @@ nullDerivation = MkDerivation
6768 , _isLibrary = error "undefined Derivation.isLibrary"
6869 , _isExecutable = error "undefined Derivation.isExecutable"
6970 , _extraFunctionArgs = error "undefined Derivation.extraFunctionArgs"
71+ , _setupDepends = error "undefined Derivation.setupDepends"
7072 , _libraryDepends = error "undefined Derivation.libraryDepends"
7173 , _executableDepends = error "undefined Derivation.executableDepends"
7274 , _testDepends = error "undefined Derivation.testDepends"
@@ -87,7 +89,7 @@ nullDerivation = MkDerivation
8789
8890makeLenses ''Derivation
8991
90−makeLensesFor [("_libraryDepends", "dependencies"), ("_executableDepends", "dependencies"), ("_testDepends", "dependencies")] ''Derivation
92+makeLensesFor [("_setupDepends", "dependencies"), ("_libraryDepends", "dependencies"), ("_executableDepends", "dependencies"), ("_testDepends", "dependencies")] ''Derivation
9193
9294instance Package Derivation where
9395 packageId = view pkgid
@@ -106,6 +108,7 @@ instance Pretty Derivation where
106108 , listattr "configureFlags" empty (map (show . show) renderedFlags)
107109 , boolattr "isLibrary" (not _isLibrary || _isExecutable) _isLibrary
108110 , boolattr "isExecutable" (not _isLibrary || _isExecutable) _isExecutable
111+ , onlyIf (_setupDepends /= mempty) $ pPrintBuildInfo "setup" _setupDepends
109112 , onlyIf (_libraryDepends /= mempty) $ pPrintBuildInfo "library" _libraryDepends
110113 , onlyIf (_executableDepends /= mempty) $ pPrintBuildInfo "executable" _executableDepends
111114 , onlyIf (_testDepends /= mempty) $ pPrintBuildInfo "test" _testDepends
distribution-nixpkgs/src/Distribution/Nixpkgs/Haskell/FromCabal.hs+5
@@ -75,6 +75,7 @@ fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDep
7575 & libraryDepends .~ maybe mempty (convertBuildInfo . libBuildInfo) library
7676 & executableDepends .~ mconcat (map (convertBuildInfo . buildInfo) executables)
7777 & testDepends .~ mconcat (map (convertBuildInfo . testBuildInfo) testSuites)
78+ & Nix.setupDepends .~ maybe mempty convertSetupBuildInfo setupBuildInfo
7879 & configureFlags .~ mempty
7980 & cabalFlags .~ flags
8081 & runHaddock .~ maybe True (not . null . exposedModules) library
@@ -126,5 +127,9 @@ fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDep
126127 & pkgconfig .~ Set.fromList [ resolveInNixpkgs y | Dependency (PackageName x) _ <- pkgconfigDepends, y <- libNixName x ]
127128 & tool .~ Set.fromList [ resolveInHackageThenNixpkgs y | Dependency (PackageName x) _ <- buildTools, y <- buildToolNixName x ]
128129
130+ convertSetupBuildInfo :: Cabal.SetupBuildInfo -> Nix.BuildInfo
131+ convertSetupBuildInfo bi = mempty
132+ & haskell .~ Set.fromList [ resolveInHackage (toNixName x) | (Dependency x _) <- Cabal.setupDepends bi ]
133+
129134bindNull :: Identifier -> Binding
130135bindNull i = binding # (i, path # ["null"])