@@ -48,9 +48,10 @@ data Src
4848 | Git String String (Maybe String ) (Maybe String )
4949 deriving Show
5050
51- pkgs , hsPkgs , pkgconfPkgs , flags :: Text
51+ pkgs , hsPkgs , errorHandler , pkgconfPkgs , flags :: Text
5252pkgs = " pkgs"
5353hsPkgs = " hsPkgs"
54+ errorHandler = " errorHandler"
5455pkgconfPkgs = " pkgconfPkgs"
5556flags = " flags"
5657
@@ -99,7 +100,7 @@ cabal2nix isLocal fileDetails src = \case
99100
100101gpd2nix :: Bool -> CabalDetailLevel -> Maybe Src -> Maybe NExpr -> GenericPackageDescription -> NExpr
101102gpd2nix isLocal fileDetails src extra gpd =
102- mkLets errorFunctions $ mkFunction args $ toNixGenericPackageDescription isLocal fileDetails gpd
103+ mkFunction args $ toNixGenericPackageDescription isLocal fileDetails gpd
103104 $//? (srcToNix (package $ packageDescription gpd) <$> src)
104105 $//? extra
105106 where args :: Params NExpr
@@ -109,61 +110,10 @@ gpd2nix isLocal fileDetails src extra gpd =
109110 , (pkgs, Nothing )
110111 , (hsPkgs, Nothing )
111112 , (pkgconfPkgs, Nothing )
113+ , (errorHandler, Nothing )
112114 , (" config" , Nothing )]
113115 True
114116
115- errorFunctions :: [Binding NExpr ]
116- errorFunctions =
117- [ buildDepError $= mkFunction " pkg" (mkThrow $
118- Fix $ NStr $ Indented 0
119- [ Plain " The Haskell package set does not contain the package: "
120- , Antiquoted " pkg"
121- , Plain " (build dependency).\n\n "
122- , Plain haskellUpdateSnippet
123- ])
124- , sysDepError $= mkFunction " pkg" (mkThrow $
125- Fix $ NStr $ Indented 0
126- [ Plain " The Nixpkgs package set does not contain the package: "
127- , Antiquoted " pkg"
128- , Plain " (system dependency).\n\n "
129- , Plain systemUpdateSnippet
130- ])
131- , pkgConfDepError $= mkFunction " pkg" (mkThrow $
132- Fix $ NStr $ Indented 0
133- [ Plain " The pkg-conf packages does not contain the package: "
134- , Antiquoted " pkg"
135- , Plain " (pkg-conf dependency).\n\n "
136- , Plain " You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found."
137- ])
138- , exeDepError $= mkFunction " pkg" (mkThrow $
139- Fix $ NStr $ Indented 0
140- [ Plain " The local executable components do not include the component: "
141- , Antiquoted " pkg"
142- , Plain " (executable dependency)."
143- ])
144- , legacyExeDepError $= mkFunction " pkg" (mkThrow $
145- Fix $ NStr $ Indented 0
146- [ Plain " The Haskell package set does not contain the package: "
147- , Antiquoted " pkg"
148- , Plain " (executable dependency).\n\n "
149- , Plain haskellUpdateSnippet
150- ])
151- , buildToolDepError $= mkFunction " pkg" (mkThrow $
152- Fix $ NStr $ Indented 0
153- [ Plain " Neither the Haskell package set or the Nixpkgs package set contain the package: "
154- , Antiquoted " pkg"
155- , Plain " (build tool dependency).\n\n "
156- , Plain " If this is a system dependency:\n "
157- , Plain systemUpdateSnippet
158- , Plain " \n\n "
159- , Plain " If this is a Haskell dependency:\n "
160- , Plain haskellUpdateSnippet
161- ])
162- ]
163- where
164- systemUpdateSnippet = " You may need to augment the system package mapping in haskell.nix so that it can be found."
165- haskellUpdateSnippet = " If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix."
166-
167117class IsComponent a where
168118 getBuildInfo :: a -> BuildInfo
169119 getMainPath :: a -> Maybe FilePath
@@ -344,22 +294,22 @@ toNixGenericPackageDescription isLocal detailLevel gpd = mkNonRecSet
344294-- WARNING: these use functions bound at he top level in the GPD expression, they won't work outside it
345295
346296instance ToNixExpr Dependency where
347- toNix d = selectOr (mkSym hsPkgs) (mkSelector $ quoted pkg) (mkSym buildDepError @@ mkStr pkg)
297+ toNix d = selectOr (mkSym hsPkgs) (mkSelector $ quoted pkg) (mkSym errorHandler @. buildDepError @@ mkStr pkg)
348298 where
349299 pkg = fromString . show . pretty . depPkgName $ d
350300
351301instance ToNixExpr SysDependency where
352- toNix d = selectOr (mkSym pkgs) (mkSelector $ quoted pkg) (mkSym sysDepError @@ mkStr pkg)
302+ toNix d = selectOr (mkSym pkgs) (mkSelector $ quoted pkg) (mkSym errorHandler @. sysDepError @@ mkStr pkg)
353303 where
354304 pkg = fromString . unSysDependency $ d
355305
356306instance ToNixExpr PkgconfigDependency where
357- toNix (PkgconfigDependency name _versionRange) = selectOr (mkSym pkgconfPkgs) (mkSelector $ quoted pkg) (mkSym pkgConfDepError @@ mkStr pkg)
307+ toNix (PkgconfigDependency name _versionRange) = selectOr (mkSym pkgconfPkgs) (mkSelector $ quoted pkg) (mkSym errorHandler @. pkgConfDepError @@ mkStr pkg)
358308 where
359309 pkg = fromString . unPkgconfigName $ name
360310
361311instance ToNixExpr ExeDependency where
362- toNix (ExeDependency pkgName' _unqualCompName _versionRange) = selectOr (mkSym " exes" ) (mkSelector $ pkg) (mkSym exeDepError @@ mkStr pkg)
312+ toNix (ExeDependency pkgName' _unqualCompName _versionRange) = selectOr (mkSym " exes" ) (mkSelector $ pkg) (mkSym errorHandler @. exeDepError @@ mkStr pkg)
363313 where
364314 pkg = fromString . show . pretty $ pkgName'
365315
@@ -369,13 +319,13 @@ instance ToNixExpr BuildToolDependency where
369319 -- is reolved use something like:
370320 -- [nix| hsPkgs.buildPackages.$((pkgName)) or pkgs.buildPackages.$((pkgName)) ]
371321 selectOr (mkSym hsPkgs) buildPackagesDotName
372- (selectOr (mkSym pkgs) buildPackagesDotName (mkSym buildToolDepError @@ mkStr pkg))
322+ (selectOr (mkSym pkgs) buildPackagesDotName (mkSym errorHandler @. buildToolDepError @@ mkStr pkg))
373323 where
374324 pkg = fromString . show . pretty $ pkgName'
375325 buildPackagesDotName = mkSelector " buildPackages" <> mkSelector pkg
376326
377327instance ToNixExpr LegacyExeDependency where
378- toNix (LegacyExeDependency name _versionRange) = selectOr (mkSym hsPkgs) (mkSelector $ quoted pkg) (mkSym legacyExeDepError @@ mkStr pkg)
328+ toNix (LegacyExeDependency name _versionRange) = selectOr (mkSym hsPkgs) (mkSelector $ quoted pkg) (mkSym errorHandler @. legacyExeDepError @@ mkStr pkg)
379329 where
380330 pkg = fromString name
381331
@@ -440,5 +390,3 @@ boolTreeToNix (CondNode True _c bs) =
440390
441391instance ToNixBinding Flag where
442392 toNixBinding (MkFlag name _desc def _manual) = (fromString . show . pretty $ name) $= mkBool def
443-
444-
0 commit comments