shellFor: Fix bug where packages were not excluded from the env (#285)

* tests: Add regression test for shellFor build-tools bug

* tests: Fix regen script

* Regenerate nix expressions for tests

* tests: ghc 8.4.4 -> 8.6.5

* shellFor: Fix bug where packages were not excluded from the env

If a multi-package project had an build-tools dependency between
packages, they would not be correctly removed from the shell's inputs.
This commit is contained in:
Rodney Lorrimar 2019-11-01 20:08:31 +10:00 committed by GitHub
parent 01bc2e2ddf
commit 686fa37877
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 704 additions and 211 deletions

View File

@ -20,11 +20,13 @@ let
then "ghc-shell-for-${(lib.head selected).identifier.name}"
else "ghc-shell-for-packages";
# Removes the selected packages from a list of packages.
# If `packages = [ a b ]` and `a` depends on `b`, don't build `b`,
# because cabal will end up ignoring that built version, assuming
# new-style commands.
packageInputs = lib.filter
(input: lib.all (cfg: input.identifier != cfg.identifier) selected)
# because cabal will end up ignoring that built version;
removeSelected = lib.filter
(input: lib.all (cfg: (input.identifier or null) != cfg.identifier) selected);
packageInputs = removeSelected
(lib.concatMap (cfg: cfg.depends) selectedConfigs
++ additionalSelected
++ lib.concatMap (cfg: cfg.setup.config.depends or []) selected
@ -33,7 +35,8 @@ let
# Add the system libraries and build tools of the selected haskell
# packages to the shell.
systemInputs = lib.concatMap (p: p.components.all.buildInputs) selected;
nativeBuildInputs = lib.concatMap (p: p.components.all.executableToolDepends) selected;
nativeBuildInputs = removeSelected
(lib.concatMap (p: p.components.all.executableToolDepends) selected);
# Set up a "dummy" component to use with ghcForComponent.
component = {

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
{
flags = {};
package = {
@ -13,6 +52,15 @@
synopsis = "";
description = "";
buildType = "Simple";
isLocal = true;
};
components = {
"library" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."stm" or (buildDepError "stm"))
];
buildable = true;
};
};
components = { "library" = { depends = [ (hsPkgs.base) (hsPkgs.stm) ]; }; };
} // rec { src = (pkgs.lib).mkDefault ../.; }

View File

@ -2,26 +2,30 @@
pkgs = hackage:
{
packages = {
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
"stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
"stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
"rts".revision = (((hackage."rts")."1.0").revisions).default;
"base".revision = (((hackage."base")."4.11.1.0").revisions).default;
"array".revision = (((hackage."array")."0.5.2.0").revisions).default;
"base".revision = (((hackage."base")."4.12.0.0").revisions).default;
"array".revision = (((hackage."array")."0.5.3.0").revisions).default;
"integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
};
compiler = {
version = "8.4.4";
nix-name = "ghc844";
version = "8.6.5";
nix-name = "ghc865";
packages = {
"ghc-prim" = "0.5.2.0";
"stm" = "2.4.5.1";
"ghc-prim" = "0.5.3";
"stm" = "2.5.0.0";
"rts" = "1.0";
"base" = "4.11.1.0";
"array" = "0.5.2.0";
"base" = "4.12.0.0";
"array" = "0.5.3.0";
"integer-gmp" = "1.0.2.0";
};
};
};
extras = hackage:
{ packages = { test-haddock = ./.plan.nix/test-haddock.nix; }; };
modules = [
({ lib, ... }:
{ packages = { "test-haddock" = { flags = {}; }; }; })
];
}

View File

@ -9,7 +9,7 @@ library
exposed-modules: TestHaddock
other-modules: Paths_test_haddock
-- other-extensions:
build-depends: base ^>=4.11.1.0
build-depends: base >=4.11.1.0
, stm
-- hs-source-dirs:
default-language: Haskell2010

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
{
flags = {};
package = {
@ -14,5 +53,13 @@
description = "";
buildType = "Simple";
};
components = { "library" = { depends = [ (hsPkgs.base) (hsPkgs.stm) ]; }; };
components = {
"library" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."stm" or (buildDepError "stm"))
];
buildable = true;
};
};
} // rec { src = (pkgs.lib).mkDefault ./.; }

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
{
flags = {};
package = {
@ -13,20 +52,43 @@
synopsis = "";
description = "";
buildType = "Simple";
isLocal = true;
};
components = {
"library" = { depends = [ (hsPkgs.base) ]; };
exes = { "project" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; }; };
"library" = {
depends = [ (hsPkgs."base" or (buildDepError "base")) ];
buildable = true;
};
exes = {
"project" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."project" or (buildDepError "project"))
];
buildable = true;
};
};
tests = {
"unit" = {
depends = [ (hsPkgs.base) (hsPkgs.project) (hsPkgs.hspec) ];
build-tools = [
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover))
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."project" or (buildDepError "project"))
(hsPkgs."hspec" or (buildDepError "hspec"))
];
build-tools = [
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (buildToolDepError "hspec-discover")))
];
buildable = true;
};
};
benchmarks = {
"project-bench" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; };
"project-bench" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."project" or (buildDepError "project"))
];
buildable = true;
};
};
};
} // rec { src = (pkgs.lib).mkDefault ../.; }

View File

@ -3,65 +3,72 @@
{
packages = {
"tf-random".revision = (((hackage."tf-random")."0.5").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
"stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
"stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
"unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
"rts".revision = (((hackage."rts")."1.0").revisions).default;
"clock".revision = (((hackage."clock")."0.8").revisions).default;
"clock".flags.llvm = false;
"QuickCheck".revision = (((hackage."QuickCheck")."2.13.1").revisions).default;
"QuickCheck".revision = (((hackage."QuickCheck")."2.13.2").revisions).default;
"QuickCheck".flags.templatehaskell = true;
"hspec-discover".revision = (((hackage."hspec-discover")."2.7.1").revisions).default;
"deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
"deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
"random".revision = (((hackage."random")."1.1").revisions).default;
"splitmix".revision = (((hackage."splitmix")."0.0.2").revisions).default;
"splitmix".revision = (((hackage."splitmix")."0.0.3").revisions).default;
"splitmix".flags.optimised-mixer = false;
"splitmix".flags.random = true;
"HUnit".revision = (((hackage."HUnit")."1.6.0.0").revisions).default;
"directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
"template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
"directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
"template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
"hspec-expectations".revision = (((hackage."hspec-expectations")."0.8.2").revisions).default;
"call-stack".revision = (((hackage."call-stack")."0.1.0").revisions).default;
"call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
"primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
"ansi-terminal".flags.example = false;
"containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
"containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
"bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
"setenv".revision = (((hackage."setenv")."0.1.1.3").revisions).default;
"base".revision = (((hackage."base")."4.11.1.0").revisions).default;
"base".revision = (((hackage."base")."4.12.0.0").revisions).default;
"hspec".revision = (((hackage."hspec")."2.7.1").revisions).default;
"time".revision = (((hackage."time")."1.8.0.2").revisions).default;
"transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
"quickcheck-io".revision = (((hackage."quickcheck-io")."0.2.0").revisions).default;
"colour".revision = (((hackage."colour")."2.3.5").revisions).default;
"filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
"filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
"hspec-core".revision = (((hackage."hspec-core")."2.7.1").revisions).default;
"pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
"array".revision = (((hackage."array")."0.5.2.0").revisions).default;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
"array".revision = (((hackage."array")."0.5.3.0").revisions).default;
"integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
};
compiler = {
version = "8.4.4";
nix-name = "ghc844";
version = "8.6.5";
nix-name = "ghc865";
packages = {
"ghc-prim" = "0.5.2.0";
"stm" = "2.4.5.1";
"ghc-prim" = "0.5.3";
"stm" = "2.5.0.0";
"unix" = "2.7.2.2";
"rts" = "1.0";
"deepseq" = "1.4.3.0";
"directory" = "1.3.1.5";
"template-haskell" = "2.13.0.0";
"containers" = "0.5.11.0";
"deepseq" = "1.4.4.0";
"directory" = "1.3.3.0";
"template-haskell" = "2.14.0.0";
"containers" = "0.6.0.1";
"bytestring" = "0.10.8.2";
"base" = "4.11.1.0";
"base" = "4.12.0.0";
"time" = "1.8.0.2";
"filepath" = "1.4.2";
"transformers" = "0.5.6.2";
"filepath" = "1.4.2.1";
"pretty" = "1.1.3.6";
"ghc-boot-th" = "8.4.4";
"array" = "0.5.2.0";
"ghc-boot-th" = "8.6.5";
"array" = "0.5.3.0";
"integer-gmp" = "1.0.2.0";
};
};
};
extras = hackage:
{ packages = { project = ./.plan.nix/project.nix; }; };
modules = [
({ lib, ... }:
{ packages = { "project" = { flags = {}; }; }; })
];
}

View File

@ -15,20 +15,20 @@ maintainer: rodney.lorrimar@iohk.io
library
exposed-modules: Lib
build-depends: base ^>=4.11.1.0
build-depends: base >=4.11.1.0
hs-source-dirs: lib
default-language: Haskell2010
executable project
main-is: Main.hs
build-depends: base ^>=4.11.1.0
build-depends: base >=4.11.1.0
, project
default-language: Haskell2010
benchmark project-bench
type: exitcode-stdio-1.0
main-is: Main.hs
build-depends: base ^>=4.11.1.0
build-depends: base >=4.11.1.0
, project
default-language: Haskell2010
ghc-options: -threaded -rtsopts -Wall -O2
@ -36,7 +36,7 @@ benchmark project-bench
test-suite unit
type: exitcode-stdio-1.0
main-is: Main.hs
build-depends: base ^>=4.11.1.0
build-depends: base >=4.11.1.0
, project
, hspec
build-tools: hspec-discover

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
{
flags = {};
package = {
@ -15,18 +54,40 @@
buildType = "Simple";
};
components = {
"library" = { depends = [ (hsPkgs.base) ]; };
exes = { "project" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; }; };
"library" = {
depends = [ (hsPkgs."base" or (buildDepError "base")) ];
buildable = true;
};
exes = {
"project" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."project" or (buildDepError "project"))
];
buildable = true;
};
};
tests = {
"unit" = {
depends = [ (hsPkgs.base) (hsPkgs.project) (hsPkgs.hspec) ];
build-tools = [
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover))
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."project" or (buildDepError "project"))
(hsPkgs."hspec" or (buildDepError "hspec"))
];
build-tools = [
(hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover or (buildToolDepError "hspec-discover")))
];
buildable = true;
};
};
benchmarks = {
"project-bench" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; };
"project-bench" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."project" or (buildDepError "project"))
];
buildable = true;
};
};
};
} // rec { src = (pkgs.lib).mkDefault ./.; }

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
{
flags = {};
package = {
@ -13,19 +52,27 @@
synopsis = "";
description = "";
buildType = "Simple";
isLocal = true;
};
components = {
"library" = {
depends = [ (hsPkgs.base) (hsPkgs.extra) (hsPkgs.safe) (hsPkgs.aeson) ];
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."extra" or (buildDepError "extra"))
(hsPkgs."safe" or (buildDepError "safe"))
(hsPkgs."aeson" or (buildDepError "aeson"))
];
buildable = true;
};
exes = {
"cabal-simple" = {
depends = [
(hsPkgs.base)
(hsPkgs.cabal-simple)
(hsPkgs.extra)
(hsPkgs.optparse-applicative)
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."cabal-simple" or (buildDepError "cabal-simple"))
(hsPkgs."extra" or (buildDepError "extra"))
(hsPkgs."optparse-applicative" or (buildDepError "optparse-applicative"))
];
buildable = true;
};
};
};

View File

@ -2,10 +2,9 @@
pkgs = hackage:
{
packages = {
"binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
"extra".revision = (((hackage."extra")."1.6.17").revisions).default;
"stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
"binary".revision = (((hackage."binary")."0.8.6.0").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
"extra".revision = (((hackage."extra")."1.6.18").revisions).default;
"unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
"rts".revision = (((hackage."rts")."1.0").revisions).default;
"clock".revision = (((hackage."clock")."0.8").revisions).default;
@ -13,12 +12,12 @@
"scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
"scientific".flags.integer-simple = false;
"scientific".flags.bytestring-builder = false;
"deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
"deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
"random".revision = (((hackage."random")."1.1").revisions).default;
"uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default;
"optparse-applicative".revision = (((hackage."optparse-applicative")."0.14.3.0").revisions).default;
"dlist".revision = (((hackage."dlist")."0.8.0.6").revisions).default;
"semigroups".revision = (((hackage."semigroups")."0.19").revisions).default;
"optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
"dlist".revision = (((hackage."dlist")."0.8.0.7").revisions).default;
"semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
"semigroups".flags.bytestring = true;
"semigroups".flags.unordered-containers = true;
"semigroups".flags.text = true;
@ -30,7 +29,7 @@
"semigroups".flags.deepseq = true;
"semigroups".flags.bytestring-builder = false;
"semigroups".flags.template-haskell = true;
"directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
"directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
"transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
"transformers-compat".flags.five = false;
"transformers-compat".flags.generic-deriving = true;
@ -39,7 +38,7 @@
"transformers-compat".flags.mtl = true;
"transformers-compat".flags.four = false;
"transformers-compat".flags.three = false;
"template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
"template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
"vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
"vector".flags.unsafechecks = false;
"vector".flags.internalchecks = false;
@ -47,30 +46,25 @@
"vector".flags.boundschecks = true;
"primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
"safe".revision = (((hackage."safe")."0.3.17").revisions).default;
"base-compat".revision = (((hackage."base-compat")."0.10.5").revisions).default;
"base-compat".revision = (((hackage."base-compat")."0.11.0").revisions).default;
"time-compat".revision = (((hackage."time-compat")."1.9.2.2").revisions).default;
"time-compat".flags.old-locale = false;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
"ansi-terminal".flags.example = false;
"tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
"tagged".flags.transformers = true;
"tagged".flags.deepseq = true;
"containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
"containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
"integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
"integer-logarithms".flags.check-bounds = false;
"integer-logarithms".flags.integer-gmp = true;
"bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
"ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
"ansi-wl-pprint".flags.example = false;
"StateVar".revision = (((hackage."StateVar")."1.2").revisions).default;
"contravariant".revision = (((hackage."contravariant")."1.5.2").revisions).default;
"contravariant".flags.semigroups = true;
"contravariant".flags.tagged = true;
"contravariant".flags.statevar = true;
"text".revision = (((hackage."text")."1.2.3.1").revisions).default;
"unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
"unordered-containers".flags.debug = false;
"base".revision = (((hackage."base")."4.11.1.0").revisions).default;
"base".revision = (((hackage."base")."4.12.0.0").revisions).default;
"time".revision = (((hackage."time")."1.8.0.2").revisions).default;
"transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
"hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
@ -78,48 +72,53 @@
"hashable".flags.integer-gmp = true;
"hashable".flags.sse41 = false;
"hashable".flags.examples = false;
"attoparsec".revision = (((hackage."attoparsec")."0.13.2.2").revisions).default;
"attoparsec".revision = (((hackage."attoparsec")."0.13.2.3").revisions).default;
"attoparsec".flags.developer = false;
"colour".revision = (((hackage."colour")."2.3.5").revisions).default;
"filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
"filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
"process".revision = (((hackage."process")."1.6.5.0").revisions).default;
"pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
"aeson".revision = (((hackage."aeson")."1.4.4.0").revisions).default;
"aeson".revision = (((hackage."aeson")."1.4.5.0").revisions).default;
"aeson".flags.cffi = false;
"aeson".flags.fast = false;
"aeson".flags.bytestring-builder = false;
"aeson".flags.developer = false;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
"base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
"th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
"array".revision = (((hackage."array")."0.5.2.0").revisions).default;
"array".revision = (((hackage."array")."0.5.3.0").revisions).default;
"integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
};
compiler = {
version = "8.4.4";
nix-name = "ghc844";
version = "8.6.5";
nix-name = "ghc865";
packages = {
"binary" = "0.8.5.1";
"ghc-prim" = "0.5.2.0";
"stm" = "2.4.5.1";
"binary" = "0.8.6.0";
"ghc-prim" = "0.5.3";
"unix" = "2.7.2.2";
"rts" = "1.0";
"deepseq" = "1.4.3.0";
"directory" = "1.3.1.5";
"template-haskell" = "2.13.0.0";
"containers" = "0.5.11.0";
"deepseq" = "1.4.4.0";
"directory" = "1.3.3.0";
"template-haskell" = "2.14.0.0";
"containers" = "0.6.0.1";
"bytestring" = "0.10.8.2";
"text" = "1.2.3.1";
"base" = "4.11.1.0";
"base" = "4.12.0.0";
"time" = "1.8.0.2";
"filepath" = "1.4.2";
"transformers" = "0.5.6.2";
"filepath" = "1.4.2.1";
"process" = "1.6.5.0";
"pretty" = "1.1.3.6";
"ghc-boot-th" = "8.4.4";
"array" = "0.5.2.0";
"ghc-boot-th" = "8.6.5";
"array" = "0.5.3.0";
"integer-gmp" = "1.0.2.0";
};
};
};
extras = hackage:
{ packages = { cabal-simple = ./.plan.nix/cabal-simple.nix; }; };
modules = [
({ lib, ... }:
{ packages = { "cabal-simple" = { flags = {}; }; }; })
];
}

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
{
flags = {};
package = {
@ -13,20 +52,35 @@
synopsis = "";
description = "";
buildType = "Simple";
isLocal = true;
};
components = {
"library" = { depends = [ (hsPkgs.base) (hsPkgs.slib) ]; };
"library" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."slib" or (buildDepError "slib"))
];
buildable = true;
};
sublibs = {
"slib" = { depends = [ (hsPkgs.extra) (hsPkgs.safe) (hsPkgs.aeson) ]; };
"slib" = {
depends = [
(hsPkgs."extra" or (buildDepError "extra"))
(hsPkgs."safe" or (buildDepError "safe"))
(hsPkgs."aeson" or (buildDepError "aeson"))
];
buildable = true;
};
};
exes = {
"cabal-sublib" = {
depends = [
(hsPkgs.base)
(hsPkgs.cabal-sublib)
(hsPkgs.extra)
(hsPkgs.optparse-applicative)
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."cabal-sublib" or (buildDepError "cabal-sublib"))
(hsPkgs."extra" or (buildDepError "extra"))
(hsPkgs."optparse-applicative" or (buildDepError "optparse-applicative"))
];
buildable = true;
};
};
};

View File

@ -2,10 +2,9 @@
pkgs = hackage:
{
packages = {
"binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
"extra".revision = (((hackage."extra")."1.6.17").revisions).default;
"stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
"binary".revision = (((hackage."binary")."0.8.6.0").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
"extra".revision = (((hackage."extra")."1.6.18").revisions).default;
"unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
"rts".revision = (((hackage."rts")."1.0").revisions).default;
"clock".revision = (((hackage."clock")."0.8").revisions).default;
@ -13,12 +12,12 @@
"scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default;
"scientific".flags.integer-simple = false;
"scientific".flags.bytestring-builder = false;
"deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
"deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
"random".revision = (((hackage."random")."1.1").revisions).default;
"uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default;
"optparse-applicative".revision = (((hackage."optparse-applicative")."0.14.3.0").revisions).default;
"dlist".revision = (((hackage."dlist")."0.8.0.6").revisions).default;
"semigroups".revision = (((hackage."semigroups")."0.19").revisions).default;
"optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
"dlist".revision = (((hackage."dlist")."0.8.0.7").revisions).default;
"semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
"semigroups".flags.bytestring = true;
"semigroups".flags.unordered-containers = true;
"semigroups".flags.text = true;
@ -30,7 +29,7 @@
"semigroups".flags.deepseq = true;
"semigroups".flags.bytestring-builder = false;
"semigroups".flags.template-haskell = true;
"directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
"directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
"transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
"transformers-compat".flags.five = false;
"transformers-compat".flags.generic-deriving = true;
@ -39,7 +38,7 @@
"transformers-compat".flags.mtl = true;
"transformers-compat".flags.four = false;
"transformers-compat".flags.three = false;
"template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
"template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
"vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
"vector".flags.unsafechecks = false;
"vector".flags.internalchecks = false;
@ -47,30 +46,25 @@
"vector".flags.boundschecks = true;
"primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
"safe".revision = (((hackage."safe")."0.3.17").revisions).default;
"base-compat".revision = (((hackage."base-compat")."0.10.5").revisions).default;
"base-compat".revision = (((hackage."base-compat")."0.11.0").revisions).default;
"time-compat".revision = (((hackage."time-compat")."1.9.2.2").revisions).default;
"time-compat".flags.old-locale = false;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
"ansi-terminal".flags.example = false;
"tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
"tagged".flags.transformers = true;
"tagged".flags.deepseq = true;
"containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
"containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
"integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3").revisions).default;
"integer-logarithms".flags.check-bounds = false;
"integer-logarithms".flags.integer-gmp = true;
"bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
"ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default;
"ansi-wl-pprint".flags.example = false;
"StateVar".revision = (((hackage."StateVar")."1.2").revisions).default;
"contravariant".revision = (((hackage."contravariant")."1.5.2").revisions).default;
"contravariant".flags.semigroups = true;
"contravariant".flags.tagged = true;
"contravariant".flags.statevar = true;
"text".revision = (((hackage."text")."1.2.3.1").revisions).default;
"unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
"unordered-containers".flags.debug = false;
"base".revision = (((hackage."base")."4.11.1.0").revisions).default;
"base".revision = (((hackage."base")."4.12.0.0").revisions).default;
"time".revision = (((hackage."time")."1.8.0.2").revisions).default;
"transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
"hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default;
@ -78,48 +72,53 @@
"hashable".flags.integer-gmp = true;
"hashable".flags.sse41 = false;
"hashable".flags.examples = false;
"attoparsec".revision = (((hackage."attoparsec")."0.13.2.2").revisions).default;
"attoparsec".revision = (((hackage."attoparsec")."0.13.2.3").revisions).default;
"attoparsec".flags.developer = false;
"colour".revision = (((hackage."colour")."2.3.5").revisions).default;
"filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
"filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
"process".revision = (((hackage."process")."1.6.5.0").revisions).default;
"pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
"aeson".revision = (((hackage."aeson")."1.4.4.0").revisions).default;
"aeson".revision = (((hackage."aeson")."1.4.5.0").revisions).default;
"aeson".flags.cffi = false;
"aeson".flags.fast = false;
"aeson".flags.bytestring-builder = false;
"aeson".flags.developer = false;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
"base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
"th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
"array".revision = (((hackage."array")."0.5.2.0").revisions).default;
"array".revision = (((hackage."array")."0.5.3.0").revisions).default;
"integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
};
compiler = {
version = "8.4.4";
nix-name = "ghc844";
version = "8.6.5";
nix-name = "ghc865";
packages = {
"binary" = "0.8.5.1";
"ghc-prim" = "0.5.2.0";
"stm" = "2.4.5.1";
"binary" = "0.8.6.0";
"ghc-prim" = "0.5.3";
"unix" = "2.7.2.2";
"rts" = "1.0";
"deepseq" = "1.4.3.0";
"directory" = "1.3.1.5";
"template-haskell" = "2.13.0.0";
"containers" = "0.5.11.0";
"deepseq" = "1.4.4.0";
"directory" = "1.3.3.0";
"template-haskell" = "2.14.0.0";
"containers" = "0.6.0.1";
"bytestring" = "0.10.8.2";
"text" = "1.2.3.1";
"base" = "4.11.1.0";
"base" = "4.12.0.0";
"time" = "1.8.0.2";
"filepath" = "1.4.2";
"transformers" = "0.5.6.2";
"filepath" = "1.4.2.1";
"process" = "1.6.5.0";
"pretty" = "1.1.3.6";
"ghc-boot-th" = "8.4.4";
"array" = "0.5.2.0";
"ghc-boot-th" = "8.6.5";
"array" = "0.5.3.0";
"integer-gmp" = "1.0.2.0";
};
};
};
extras = hackage:
{ packages = { cabal-sublib = ./.plan.nix/cabal-sublib.nix; }; };
modules = [
({ lib, ... }:
{ packages = { "cabal-sublib" = { flags = {}; }; }; })
];
}

View File

@ -1,21 +1,21 @@
# A script for regenerating nix for tests
{ pkgs ? import nixpkgs {}
{ pkgs ? import nixpkgs ((import ../.) // nixpkgsArgs)
, nixpkgs ? ../nixpkgs
, haskell ? pkgs.callPackage ../. { }
, nixpkgsArgs ? { }
}:
with pkgs;
writeScript "regen-tests.sh" ''
#!${pkgs.stdenv.shell}
#!${pkgs.runtimeShell}
set -euo pipefail
export PATH="${lib.makeBinPath [ coreutils glibc haskell.nix-tools cabal-install pkgs.haskell.compiler.ghc844 ]}"
export PATH="${lib.makeBinPath [ coreutils glibc haskell-nix.nix-tools cabal-install haskell.compiler.ghc865 ]}"
cabal_configure() {
cabal new-configure \
--with-compiler ghc-8.4.4 \
--with-compiler ghc-8.6.5 \
--constraint 'transformers == 0.5.6.2' \
--constraint 'process == 1.6.5.0'
}

View File

@ -63,5 +63,11 @@ in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
];
buildable = true;
};
exes = {
"pkga-exe" = {
depends = [ (hsPkgs."base" or (buildDepError "base")) ];
buildable = true;
};
};
};
} // rec { src = (pkgs.lib).mkDefault ../pkga; }

View File

@ -77,5 +77,18 @@ in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
buildable = true;
};
};
tests = {
"tests" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."pkgb" or (buildDepError "pkgb"))
(hsPkgs."process" or (buildDepError "process"))
];
build-tools = [
(hsPkgs.buildPackages.pkga or (pkgs.buildPackages.pkga or (buildToolDepError "pkga")))
];
buildable = true;
};
};
};
} // rec { src = (pkgs.lib).mkDefault ../pkgb; }

View File

@ -0,0 +1,4 @@
module Main where
main :: IO ()
main = putStrLn "This is MainA"

View File

@ -18,3 +18,9 @@ library
, lens
, text
default-language: Haskell2010
executable pkga-exe
main-is: MainA.hs
build-depends: base
hs-source-dirs: .
default-language: Haskell2010

View File

@ -0,0 +1,6 @@
module Main where
import System.Process
main :: IO ()
main = callProcess "pkga-exe" []

View File

@ -26,11 +26,18 @@ library
executable pkgb
main-is: Main.hs
-- other-modules:
-- other-extensions:
build-depends: base
, pkgb
, optparse-applicative
, text
hs-source-dirs: app
default-language: Haskell2010
test-suite tests
type: exitcode-stdio-1.0
main-is: tests.hs
hs-source-dirs: app
build-depends: base
, pkgb
, process
build-tools: pkga

View File

@ -39,7 +39,7 @@
"deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
"random".revision = (((hackage."random")."1.1").revisions).default;
"optparse-applicative".revision = (((hackage."optparse-applicative")."0.15.1.0").revisions).default;
"network".revision = (((hackage."network")."3.1.0.1").revisions).default;
"network".revision = (((hackage."network")."3.1.1.0").revisions).default;
"async".revision = (((hackage."async")."2.2.2").revisions).default;
"async".flags.bench = false;
"conduit".revision = (((hackage."conduit")."1.3.1.1").revisions).default;
@ -68,7 +68,7 @@
"transformers-compat".flags.four = false;
"transformers-compat".flags.three = false;
"template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
"mono-traversable".revision = (((hackage."mono-traversable")."1.0.12.0").revisions).default;
"mono-traversable".revision = (((hackage."mono-traversable")."1.0.13.0").revisions).default;
"vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
"vector".flags.unsafechecks = false;
"vector".flags.internalchecks = false;
@ -77,7 +77,7 @@
"call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
"primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
"profunctors".revision = (((hackage."profunctors")."5.5").revisions).default;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.10").revisions).default;
"ansi-terminal".revision = (((hackage."ansi-terminal")."0.10.1").revisions).default;
"ansi-terminal".flags.example = false;
"tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
"tagged".flags.transformers = true;
@ -147,7 +147,7 @@
"kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
"resourcet".revision = (((hackage."resourcet")."1.2.2").revisions).default;
"pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
"cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.7").revisions).default;
"cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.8").revisions).default;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
"base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
"th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
@ -189,4 +189,8 @@
{
packages = { pkga = ./.plan.nix/pkga.nix; pkgb = ./.plan.nix/pkgb.nix; };
};
}
modules = [
({ lib, ... }:
{ packages = { "pkga" = { flags = {}; }; "pkgb" = { flags = {}; }; }; })
];
}

View File

@ -4,7 +4,9 @@
packages = {
"transformers" = (((hackage.transformers)."0.5.6.2").revisions).default;
"process" = (((hackage.process)."1.6.5.0").revisions).default;
} // { stack-simple = ./stack-simple.nix; };
stack-simple = ./stack-simple.nix;
};
};
resolver = "lts-13.26";
modules = [ ({ lib, ... }: { packages = {}; }) { packages = {}; } ];
}

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
({
flags = {};
package = {
@ -13,17 +52,29 @@
synopsis = "";
description = "Please see the README on GitHub at <https://github.com/githubuser/stack-simple#readme>";
buildType = "Simple";
isLocal = true;
};
components = {
"library" = { depends = [ (hsPkgs.base) ]; };
"library" = {
depends = [ (hsPkgs."base" or (buildDepError "base")) ];
buildable = true;
};
exes = {
"stack-simple-exe" = {
depends = [ (hsPkgs.base) (hsPkgs.stack-simple) ];
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."stack-simple" or (buildDepError "stack-simple"))
];
buildable = true;
};
};
tests = {
"stack-simple-test" = {
depends = [ (hsPkgs.base) (hsPkgs.stack-simple) ];
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."stack-simple" or (buildDepError "stack-simple"))
];
buildable = true;
};
};
};

View File

@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p bash jq nix
#! nix-shell -i bash -p bash jq nix gnused
set -euo pipefail
@ -88,6 +88,18 @@ nix-shell $NIX_BUILD_ARGS \
--run 'hoogle ConduitT | grep Data.Conduit'
echo >& 2
printf "*** Checking shellFor does not depend on given packages...\n" >& 2
drva=$(nix-instantiate ./default.nix -A shell-for.env)
echo "-- hello" >> shell-for/pkga/PkgA.hs
drvb=$(nix-instantiate ./default.nix -A shell-for.env)
sed -i -e '/-- hello/d' shell-for/pkga/PkgA.hs
if [ "$drva" != "$drvb" ]; then
printf "FAIL\nShell derivations\n$drva\n$drvb\n are not identical.\n" >& 2
exit 1
else
printf "PASS\n" >& 2
fi
printf "*** Checking the maintainer scripts...\n" >& 2
nix build $NIX_BUILD_ARGS --no-link --keep-going -f ../build.nix maintainer-scripts
echo >& 2

View File

@ -1,4 +1,43 @@
{ system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
let
buildDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (build dependency).
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.
'';
sysDepError = pkg:
builtins.throw ''
The Nixpkgs package set does not contain the package: ${pkg} (system dependency).
You may need to augment the system package mapping in haskell.nix so that it can be found.
'';
pkgConfDepError = pkg:
builtins.throw ''
The pkg-conf packages does not contain the package: ${pkg} (pkg-conf dependency).
You may need to augment the pkg-conf package mapping in haskell.nix so that it can be found.
'';
exeDepError = pkg:
builtins.throw ''
The local executable components do not include the component: ${pkg} (executable dependency).
'';
legacyExeDepError = pkg:
builtins.throw ''
The Haskell package set does not contain the package: ${pkg} (executable dependency).
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.
'';
buildToolDepError = pkg:
builtins.throw ''
Neither the Haskell package set or the Nixpkgs package set contain the package: ${pkg} (build tool dependency).
If this is a system dependency:
You may need to augment the system package mapping in haskell.nix so that it can be found.
If this is a Haskell dependency:
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.
'';
in { system, compiler, flags, pkgs, hsPkgs, pkgconfPkgs, ... }:
{
flags = {};
package = {
@ -13,8 +52,15 @@
synopsis = "";
description = "";
buildType = "Simple";
isLocal = true;
};
components = {
"library" = { depends = [ (hsPkgs.base) (hsPkgs.lens) ]; };
"library" = {
depends = [
(hsPkgs."base" or (buildDepError "base"))
(hsPkgs."lens" or (buildDepError "lens"))
];
buildable = true;
};
};
} // rec { src = (pkgs.lib).mkDefault ../.; }

View File

@ -4,7 +4,7 @@
packages = {
"void".revision = (((hackage."void")."0.7.3").revisions).default;
"void".flags.safe = false;
"semigroupoids".revision = (((hackage."semigroupoids")."5.3.2").revisions).default;
"semigroupoids".revision = (((hackage."semigroupoids")."5.3.3").revisions).default;
"semigroupoids".flags.comonad = true;
"semigroupoids".flags.doctests = true;
"semigroupoids".flags.unordered-containers = true;
@ -12,25 +12,25 @@
"semigroupoids".flags.tagged = true;
"semigroupoids".flags.containers = true;
"semigroupoids".flags.contravariant = true;
"free".revision = (((hackage."free")."5.1.1").revisions).default;
"exceptions".revision = (((hackage."exceptions")."0.10.2").revisions).default;
"binary".revision = (((hackage."binary")."0.8.5.1").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
"bifunctors".revision = (((hackage."bifunctors")."5.5.4").revisions).default;
"free".revision = (((hackage."free")."5.1.2").revisions).default;
"exceptions".revision = (((hackage."exceptions")."0.10.3").revisions).default;
"binary".revision = (((hackage."binary")."0.8.6.0").revisions).default;
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
"bifunctors".revision = (((hackage."bifunctors")."5.5.5").revisions).default;
"bifunctors".flags.semigroups = true;
"bifunctors".flags.tagged = true;
"stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
"stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
"unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
"mtl".revision = (((hackage."mtl")."2.2.2").revisions).default;
"rts".revision = (((hackage."rts")."1.0").revisions).default;
"adjunctions".revision = (((hackage."adjunctions")."4.4").revisions).default;
"invariant".revision = (((hackage."invariant")."0.5.3").revisions).default;
"distributive".revision = (((hackage."distributive")."0.6").revisions).default;
"distributive".revision = (((hackage."distributive")."0.6.1").revisions).default;
"distributive".flags.semigroups = true;
"distributive".flags.tagged = true;
"parallel".revision = (((hackage."parallel")."3.2.2.0").revisions).default;
"deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
"semigroups".revision = (((hackage."semigroups")."0.19").revisions).default;
"deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default;
"semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default;
"semigroups".flags.bytestring = true;
"semigroups".flags.unordered-containers = true;
"semigroups".flags.text = true;
@ -43,7 +43,7 @@
"semigroups".flags.bytestring-builder = false;
"semigroups".flags.template-haskell = true;
"parsec".revision = (((hackage."parsec")."3.1.13.0").revisions).default;
"directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
"directory".revision = (((hackage."directory")."1.3.3.0").revisions).default;
"transformers-compat".revision = (((hackage."transformers-compat")."0.6.5").revisions).default;
"transformers-compat".flags.five = false;
"transformers-compat".flags.generic-deriving = true;
@ -52,19 +52,19 @@
"transformers-compat".flags.mtl = true;
"transformers-compat".flags.four = false;
"transformers-compat".flags.three = false;
"template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
"template-haskell".revision = (((hackage."template-haskell")."2.14.0.0").revisions).default;
"vector".revision = (((hackage."vector")."0.12.0.3").revisions).default;
"vector".flags.unsafechecks = false;
"vector".flags.internalchecks = false;
"vector".flags.wall = false;
"vector".flags.boundschecks = true;
"call-stack".revision = (((hackage."call-stack")."0.1.0").revisions).default;
"call-stack".revision = (((hackage."call-stack")."0.2.0").revisions).default;
"primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
"profunctors".revision = (((hackage."profunctors")."5.4").revisions).default;
"profunctors".revision = (((hackage."profunctors")."5.5").revisions).default;
"tagged".revision = (((hackage."tagged")."0.8.6").revisions).default;
"tagged".flags.transformers = true;
"tagged".flags.deepseq = true;
"lens".revision = (((hackage."lens")."4.17.1").revisions).default;
"lens".revision = (((hackage."lens")."4.18.1").revisions).default;
"lens".flags.j = false;
"lens".flags.test-properties = true;
"lens".flags.old-inline-pragmas = false;
@ -76,8 +76,8 @@
"lens".flags.dump-splices = false;
"lens".flags.test-hunit = true;
"lens".flags.safe = false;
"containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
"reflection".revision = (((hackage."reflection")."2.1.4").revisions).default;
"containers".revision = (((hackage."containers")."0.6.0.1").revisions).default;
"reflection".revision = (((hackage."reflection")."2.1.5").revisions).default;
"reflection".flags.slow = false;
"reflection".flags.template-haskell = true;
"bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
@ -86,11 +86,12 @@
"contravariant".flags.semigroups = true;
"contravariant".flags.tagged = true;
"contravariant".flags.statevar = true;
"type-equality".revision = (((hackage."type-equality")."1").revisions).default;
"text".revision = (((hackage."text")."1.2.3.1").revisions).default;
"Cabal".revision = (((hackage."Cabal")."2.2.0.1").revisions).default;
"Cabal".revision = (((hackage."Cabal")."2.4.0.1").revisions).default;
"unordered-containers".revision = (((hackage."unordered-containers")."0.2.10.0").revisions).default;
"unordered-containers".flags.debug = false;
"base".revision = (((hackage."base")."4.11.1.0").revisions).default;
"base".revision = (((hackage."base")."4.12.0.0").revisions).default;
"comonad".revision = (((hackage."comonad")."5.0.5").revisions).default;
"comonad".flags.distributive = true;
"comonad".flags.test-doctests = true;
@ -104,43 +105,43 @@
"hashable".flags.examples = false;
"transformers-base".revision = (((hackage."transformers-base")."0.4.5.2").revisions).default;
"transformers-base".flags.orphaninstances = true;
"filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
"process".revision = (((hackage."process")."1.6.3.0").revisions).default;
"filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default;
"process".revision = (((hackage."process")."1.6.5.0").revisions).default;
"kan-extensions".revision = (((hackage."kan-extensions")."5.2").revisions).default;
"pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
"cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.6").revisions).default;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
"cabal-doctest".revision = (((hackage."cabal-doctest")."1.0.8").revisions).default;
"ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.6.5").revisions).default;
"base-orphans".revision = (((hackage."base-orphans")."0.8.1").revisions).default;
"th-abstraction".revision = (((hackage."th-abstraction")."0.3.1.0").revisions).default;
"array".revision = (((hackage."array")."0.5.2.0").revisions).default;
"array".revision = (((hackage."array")."0.5.3.0").revisions).default;
"integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
};
compiler = {
version = "8.4.4";
nix-name = "ghc844";
version = "8.6.5";
nix-name = "ghc865";
packages = {
"binary" = "0.8.5.1";
"ghc-prim" = "0.5.2.0";
"stm" = "2.4.5.1";
"binary" = "0.8.6.0";
"ghc-prim" = "0.5.3";
"stm" = "2.5.0.0";
"unix" = "2.7.2.2";
"mtl" = "2.2.2";
"rts" = "1.0";
"deepseq" = "1.4.3.0";
"deepseq" = "1.4.4.0";
"parsec" = "3.1.13.0";
"directory" = "1.3.1.5";
"template-haskell" = "2.13.0.0";
"containers" = "0.5.11.0";
"directory" = "1.3.3.0";
"template-haskell" = "2.14.0.0";
"containers" = "0.6.0.1";
"bytestring" = "0.10.8.2";
"text" = "1.2.3.1";
"Cabal" = "2.2.0.1";
"base" = "4.11.1.0";
"Cabal" = "2.4.0.1";
"base" = "4.12.0.0";
"time" = "1.8.0.2";
"transformers" = "0.5.5.0";
"filepath" = "1.4.2";
"process" = "1.6.3.0";
"transformers" = "0.5.6.2";
"filepath" = "1.4.2.1";
"process" = "1.6.5.0";
"pretty" = "1.1.3.6";
"ghc-boot-th" = "8.4.4";
"array" = "0.5.2.0";
"ghc-boot-th" = "8.6.5";
"array" = "0.5.3.0";
"integer-gmp" = "1.0.2.0";
};
};
@ -149,4 +150,8 @@
{
packages = { test-with-packages = ./.plan.nix/test-with-packages.nix; };
};
modules = [
({ lib, ... }:
{ packages = { "test-with-packages" = { flags = {}; }; }; })
];
}