Skip to content

Commit 2d817aa

Browse files
jbgiangerman
andauthored
externalize errors msg functions to hsPkgs provided by haskell.nix (input-output-hk#88)
* externalize errors msg function to hsPkgs to hopefully save some disk/memory. Co-authored-by: Moritz Angermann <[email protected]>
1 parent e04dbd4 commit 2d817aa

File tree

2 files changed

+12
-64
lines changed

2 files changed

+12
-64
lines changed

default.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{ haskellNixSrc ? builtins.fetchTarball {
2-
url = "https://github.com/input-output-hk/haskell.nix/archive/f78841c2d05c6c686d3888131104360944464dc2.tar.gz";
3-
sha256 = "1zwhskx9drd0266kcrxf5vzcgs9vfiiibzkc2h3yarfb2xl7185q";
2+
url = "https://github.com/input-output-hk/haskell.nix/archive/3178c84e162dadc6e740eef3d56391d3a0f1c228.tar.gz";
3+
sha256 = "0bwgibp8vaavnqxzw6iphhzrcr7mr59fgm9pa05csbx1paxzirim";
44
}
55
, nixpkgs ? (import haskellNixSrc {}).sources.nixpkgs-default
66
, pkgs ? import nixpkgs (import haskellNixSrc {}).nixpkgsArgs

lib/Cabal2Nix.hs

Lines changed: 10 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -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
5252
pkgs = "pkgs"
5353
hsPkgs = "hsPkgs"
54+
errorHandler = "errorHandler"
5455
pkgconfPkgs = "pkgconfPkgs"
5556
flags = "flags"
5657

@@ -99,7 +100,7 @@ cabal2nix isLocal fileDetails src = \case
99100

100101
gpd2nix :: Bool -> CabalDetailLevel -> Maybe Src -> Maybe NExpr -> GenericPackageDescription -> NExpr
101102
gpd2nix 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-
167117
class 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

346296
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)
348298
where
349299
pkg = fromString . show . pretty . depPkgName $ d
350300

351301
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)
353303
where
354304
pkg = fromString . unSysDependency $ d
355305

356306
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)
358308
where
359309
pkg = fromString . unPkgconfigName $ name
360310

361311
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)
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

377327
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)
379329
where
380330
pkg = fromString name
381331

@@ -440,5 +390,3 @@ boolTreeToNix (CondNode True _c bs) =
440390

441391
instance ToNixBinding Flag where
442392
toNixBinding (MkFlag name _desc def _manual) = (fromString . show . pretty $ name) $= mkBool def
443-
444-

0 commit comments

Comments
 (0)