git.iko.soy/typeable/cabal2nix
on master help sign in
Distribution.NixOS: simplified and re-factored the data types
commit2d57f9844e81298fb6b456d64817f991d7a34a76 authorPeter Simons <simons@cryp.to> dateMon 15 Aug 2011, 10:54 (15 years ago) parent4ab76a9
4 files changed+51−10
src/Distribution/NixOS/Derivation/Cabal.hs+18−7 src/Distribution/NixOS/Derivation/License.hs+10 src/Distribution/NixOS/Derivation/Meta.hs+11−2 src/Distribution/NixOS/Derivation/PrettyPrinting.hs → src/Distribution/NixOS/PrettyPrinting.hs+12−1
src/Distribution/NixOS/Derivation/Cabal.hs+18−7
@@ -1,26 +1,34 @@
11{-# LANGUAGE PatternGuards #-}
2+{- |
3+ Module : Distribution.NixOS.Derivation.Cabal
4+ Copyright : Peter Simons, Andres Loeh
5+ License : BSD3
6+
7+ Maintainer : nix-dev@cs.uu.nl
8+ Stability : provisional
9+ Portability : portable
10+-}
211
312module Distribution.NixOS.Derivation.Cabal
413 ( Derivation(..)
514 , parseDerivation
615 , module Distribution.NixOS.Derivation.Meta
7− , Version(..), PackageName(..)
16+ , Version(..)
817 )
918 where
1019
11−import Distribution.NixOS.Derivation.PrettyPrinting
1220import Distribution.NixOS.Derivation.Meta
13−import Distribution.Package
21+import Distribution.NixOS.PrettyPrinting
1422import Distribution.Text
23+import Distribution.Package
1524import Data.Version
1625import Data.List
1726import Data.Char
18−import Text.PrettyPrint
1927import Text.ParserCombinators.ReadP ( readP_to_S )
2028import Text.Regex.Posix
2129
2230data Derivation = MkDerivation
23− { pname :: PackageName
31+ { pname :: String
2432 , version :: Version
2533 , sha256 :: String
2634 , isLibrary :: Bool
@@ -38,12 +46,15 @@ instance Text Derivation where
3846 disp = renderDerivation
3947 parse = error "parsing Distribution.NixOS.Derivation.Cabal.Derivation is not supported yet"
4048
49+instance Package Derivation where
50+ packageId deriv = PackageIdentifier (PackageName (pname deriv)) (version deriv)
51+
4152renderDerivation :: Derivation -> Doc
4253renderDerivation deriv = funargs (map text ("cabal" : inputs)) $$ vcat
4354 [ text ""
4455 , text "cabal.mkDerivation" <+> lparen <> text "self" <> colon <+> lbrace
4556 , nest 2 $ vcat
46− [ attr "pname" $ doubleQuotes (disp (pname deriv))
57+ [ attr "pname" $ string (pname deriv)
4758 , attr "version" $ doubleQuotes (disp (version deriv))
4859 , attr "sha256" $ string (sha256 deriv)
4960 , boolattr "isLibrary" (not (isLibrary deriv) || (isExecutable deriv)) (isLibrary deriv)
@@ -73,7 +84,7 @@ parseDerivation buf
7384 , maint <- buf `regsubmatch` "maintainers *= *\\[([^\"]+)]"
7485 , noHaddock <- buf `regsubmatch` "noHaddock *= *(true|false) *;"
7586 = Just $ MkDerivation
76− { pname = PackageName name
87+ { pname = name
7788 , version = readVersion vers
7889 , sha256 = sha
7990 , isLibrary = False
src/Distribution/NixOS/Derivation/License.hs+10
@@ -1,3 +1,13 @@
1+{- |
2+ Module : Distribution.NixOS.Derivation.License
3+ Copyright : Peter Simons, Andres Loeh
4+ License : BSD3
5+
6+ Maintainer : nix-dev@cs.uu.nl
7+ Stability : provisional
8+ Portability : portable
9+-}
10+
111module Distribution.NixOS.Derivation.License
212 ( License(..)
313 , fromCabalLicense
src/Distribution/NixOS/Derivation/Meta.hs+11−2
@@ -1,13 +1,22 @@
1+{- |
2+ Module : Distribution.NixOS.Derivation.Meta
3+ Copyright : Peter Simons, Andres Loeh
4+ License : BSD3
5+
6+ Maintainer : nix-dev@cs.uu.nl
7+ Stability : provisional
8+ Portability : portable
9+-}
10+
111module Distribution.NixOS.Derivation.Meta
212 ( Meta(..)
313 , module Distribution.NixOS.Derivation.License
414 )
515 where
616
7−import Distribution.NixOS.Derivation.PrettyPrinting
17+import Distribution.NixOS.PrettyPrinting
818import Distribution.NixOS.Derivation.License
919import Distribution.Text
10−import Text.PrettyPrint
1120
1221data Meta = Meta
1322 { homepage :: String
src/Distribution/NixOS/Derivation/PrettyPrinting.hs → src/Distribution/NixOS/PrettyPrinting.hsrenamed+12−1
@@ -1,10 +1,21 @@
1−module Distribution.NixOS.Derivation.PrettyPrinting
1+{- |
2+ Module : Distribution.NixOS.PrettyPrinting
3+ Copyright : Peter Simons, Andres Loeh
4+ License : BSD3
5+
6+ Maintainer : nix-dev@cs.uu.nl
7+ Stability : provisional
8+ Portability : portable
9+-}
10+
11+module Distribution.NixOS.PrettyPrinting
212 ( onlyIf
313 , listattr
414 , boolattr
515 , attr
616 , string
717 , funargs
18+ , module Text.PrettyPrint
819 )
920 where
1021