@@ -45,6 +45,7 @@ import Distribution.Text
4545data Derivation = MkDerivation
4646 { pname :: String
4747 , version :: Version
48+ , revision :: Int
4849 , src :: DerivationSource
4950 , isLibrary :: Bool
5051 , isExecutable :: Bool
@@ -63,6 +64,7 @@ data Derivation = MkDerivation
6364 , hyperlinkSource :: Bool
6465 , enableSplitObjs :: Bool
6566 , phaseOverrides :: String
67+ , editedCabalFile :: String
6668 , metaSection :: Meta
6769 }
6870 deriving (Show, Eq, Ord)
@@ -75,10 +77,11 @@ instance Package Derivation where
7577 packageId deriv = PackageIdentifier (PackageName (pname deriv)) (version deriv)
7678
7779instance NFData Derivation where
78− rnf (MkDerivation a b c d e f g h i j k l m n o p q r t u v) =
80+ rnf (MkDerivation a b c d e f g h i j k l m n o p q r t u v w x) =
7981 a `deepseq` b `deepseq` c `deepseq` d `deepseq` e `deepseq` f `deepseq` g `deepseq`
80− h `deepseq` i `deepseq` j `deepseq` k `deepseq` l `deepseq` m `deepseqFlagAssignment` n `deepseq`
81− o `deepseq` p `deepseq` q `deepseq` r `deepseq` t `deepseq` u `deepseq` v `deepseq` ()
82+ h `deepseq` i `deepseq` j `deepseq` k `deepseq` l `deepseq` m `deepseq` n `deepseqFlagAssignment`
83+ o `deepseq` p `deepseq` q `deepseq` r `deepseq` t `deepseq` u `deepseq` v `deepseq`
84+ w `deepseq` x `deepseq` ()
8285
8386-- FlagName has no NFData instance in old version of Cabal.
8487deepseqFlagAssignment :: FlagAssignment -> a -> a
@@ -93,6 +96,7 @@ renderDerivation deriv =
9396 [ attr "pname" $ string (pname deriv)
9497 , attr "version" $ doubleQuotes (disp (version deriv))
9598 , sourceAttr (src deriv)
99+ , onlyIf (not (null (editedCabalFile deriv))) $ attr "editedCabalFile" $ string (editedCabalFile deriv)
96100 , boolattr "isLibrary" (not (isLibrary deriv) || isExecutable deriv) (isLibrary deriv)
97101 , boolattr "isExecutable" (not (isLibrary deriv) || isExecutable deriv) (isExecutable deriv)
98102 , listattr "buildDepends" empty (buildDepends deriv)
@@ -153,9 +157,11 @@ parseDerivation buf
153157 , docheck <- buf `regsubmatch` "doCheck *= *(true|false) *;"
154158 , hyperlSrc <- buf `regsubmatch` "hyperlinkSource *= *(true|false) *;"
155159 , splitObj <- buf `regsubmatch` "enableSplitObjs *= *(true|false) *;"
160+ , edtdCabal <- buf `regsubmatch` "editedCabalFile *= *\"([^\"]+)\""
156161 = Just MkDerivation
157162 { pname = name
158163 , version = vers
164+ , revision = 0
159165 , src = case (sr,url) of
160166 ([] , _ ) -> DerivationSource "url" ("mirror://hackage/" ++ name ++ "-" ++ vers' ++ ".tar.gz") "" $ head sha
161167 (sr':_, [] ) -> DerivationSource "" sr' "" ""
@@ -179,6 +185,7 @@ parseDerivation buf
179185 , hyperlinkSource = hyperlSrc == ["true"] || null hyperlSrc
180186 , enableSplitObjs = splitObj /= ["false"]
181187 , phaseOverrides = ""
188+ , editedCabalFile = if null edtdCabal then [] else head edtdCabal
182189 , metaSection = Meta
183190 { homepage = ""
184191 , description = ""