@@ -48,9 +48,10 @@ data Src
48
48
| Git String String (Maybe String ) (Maybe String )
49
49
deriving Show
50
50
51
- pkgs , hsPkgs , pkgconfPkgs , flags :: Text
51
+ pkgs , hsPkgs , errorHandler , pkgconfPkgs , flags :: Text
52
52
pkgs = " pkgs"
53
53
hsPkgs = " hsPkgs"
54
+ errorHandler = " errorHandler"
54
55
pkgconfPkgs = " pkgconfPkgs"
55
56
flags = " flags"
56
57
@@ -99,7 +100,7 @@ cabal2nix isLocal fileDetails src = \case
99
100
100
101
gpd2nix :: Bool -> CabalDetailLevel -> Maybe Src -> Maybe NExpr -> GenericPackageDescription -> NExpr
101
102
gpd2nix isLocal fileDetails src extra gpd =
102
- mkLets errorFunctions $ mkFunction args $ toNixGenericPackageDescription isLocal fileDetails gpd
103
+ mkFunction args $ toNixGenericPackageDescription isLocal fileDetails gpd
103
104
$//? (srcToNix (package $ packageDescription gpd) <$> src)
104
105
$//? extra
105
106
where args :: Params NExpr
@@ -109,61 +110,10 @@ gpd2nix isLocal fileDetails src extra gpd =
109
110
, (pkgs, Nothing )
110
111
, (hsPkgs, Nothing )
111
112
, (pkgconfPkgs, Nothing )
113
+ , (errorHandler, Nothing )
112
114
, (" config" , Nothing )]
113
115
True
114
116
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
-
167
117
class IsComponent a where
168
118
getBuildInfo :: a -> BuildInfo
169
119
getMainPath :: a -> Maybe FilePath
@@ -344,22 +294,22 @@ toNixGenericPackageDescription isLocal detailLevel gpd = mkNonRecSet
344
294
-- WARNING: these use functions bound at he top level in the GPD expression, they won't work outside it
345
295
346
296
instance 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)
348
298
where
349
299
pkg = fromString . show . pretty . depPkgName $ d
350
300
351
301
instance 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)
353
303
where
354
304
pkg = fromString . unSysDependency $ d
355
305
356
306
instance 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)
358
308
where
359
309
pkg = fromString . unPkgconfigName $ name
360
310
361
311
instance 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)
363
313
where
364
314
pkg = fromString . show . pretty $ pkgName'
365
315
@@ -369,13 +319,13 @@ instance ToNixExpr BuildToolDependency where
369
319
-- is reolved use something like:
370
320
-- [nix| hsPkgs.buildPackages.$((pkgName)) or pkgs.buildPackages.$((pkgName)) ]
371
321
selectOr (mkSym hsPkgs) buildPackagesDotName
372
- (selectOr (mkSym pkgs) buildPackagesDotName (mkSym buildToolDepError @@ mkStr pkg))
322
+ (selectOr (mkSym pkgs) buildPackagesDotName (mkSym errorHandler @. buildToolDepError @@ mkStr pkg))
373
323
where
374
324
pkg = fromString . show . pretty $ pkgName'
375
325
buildPackagesDotName = mkSelector " buildPackages" <> mkSelector pkg
376
326
377
327
instance 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)
379
329
where
380
330
pkg = fromString name
381
331
@@ -440,5 +390,3 @@ boolTreeToNix (CondNode True _c bs) =
440
390
441
391
instance ToNixBinding Flag where
442
392
toNixBinding (MkFlag name _desc def _manual) = (fromString . show . pretty $ name) $= mkBool def
443
-
444
-
0 commit comments