@@ -20,20 +20,21 @@ module Distribution.NixOS.Derivation.Cabal
2020 )
2121 where
2222
23+import Control.DeepSeq
24+import Data.Char
25+import Data.Function
26+import Data.List
27+import Data.Version
2328import Distribution.NixOS.Derivation.Meta
2429import Distribution.NixOS.Fetch
2530import Distribution.NixOS.PrettyPrinting
2631import Distribution.NixOS.Regex hiding ( empty )
2732import Distribution.Package
28−import Distribution.Text
2933#ifdef __HADDOCK__
3034import Distribution.PackageDescription ( PackageDescription )
3135#endif
3236import Distribution.PackageDescription ( FlagAssignment, FlagName(..) )
33−import Data.Version
34−import Data.List
35−import Data.Char
36−import Data.Function
37+import Distribution.Text
3738
3839-- | A represtation of Nix expressions for building Haskell packages.
3940-- The data type correspond closely to the definition of
@@ -73,6 +74,17 @@ instance Text Derivation where
7374instance Package Derivation where
7475 packageId deriv = PackageIdentifier (PackageName (pname deriv)) (version deriv)
7576
77+instance 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) =
79+ 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+
83+-- FlagName has no NFData instance in old version of Cabal.
84+deepseqFlagAssignment :: FlagAssignment -> a -> a
85+deepseqFlagAssignment [] b = b
86+deepseqFlagAssignment ((FlagName n, v):as) b = n `deepseq` v `deepseq` as `deepseqFlagAssignment` b
87+
7688renderDerivation :: Derivation -> Doc
7789renderDerivation deriv =
7890 text "# This file was auto-generated by cabal2nix. Please do NOT edit manually!" $$