2016-12-12 19:40:23 +01:00
|
|
|
# If you would like to test and build changes quickly using `cabal`, run:
|
2016-08-01 19:02:23 +02:00
|
|
|
#
|
2021-01-11 18:24:25 +01:00
|
|
|
# $ nix-shell
|
2022-07-29 13:27:54 +02:00
|
|
|
# [nix-shell]$ cabal configure --enable-tests && cabal build && cabal test
|
2016-08-01 19:02:23 +02:00
|
|
|
#
|
2016-12-12 19:40:23 +01:00
|
|
|
# This will open up a Nix shell where all of your Haskell tools will work like
|
|
|
|
# normal, except that all dependencies (including C libraries) are managed by
|
|
|
|
# Nix. The only thing that won't work is running tests inside this shell
|
|
|
|
# (although you can still build them). Fixing the test suite requires
|
|
|
|
# extensive patching of the test scripts (see `postPatch` below)
|
2016-08-01 19:02:23 +02:00
|
|
|
#
|
2016-12-12 19:40:23 +01:00
|
|
|
# Note that this will compile the library once without tests using Nix. This
|
|
|
|
# is due to the fact that `grpc-haskell`'s test suite cannot test code
|
|
|
|
# generation without the library being built at least once.
|
|
|
|
#
|
|
|
|
# If you want to build and test this repository using `nix`, you can run the
|
|
|
|
# following command:
|
|
|
|
#
|
2021-01-14 00:56:23 +01:00
|
|
|
# $ nix-build --attr grpc-haskell release.nix
|
2016-12-12 19:40:23 +01:00
|
|
|
#
|
|
|
|
# ... but this is not recommended for normal development because this will
|
|
|
|
# rebuild the repository from scratch every time, which is extremely slow. Only
|
|
|
|
# do this if you want to exactly reproduce our continuous integration build.
|
|
|
|
#
|
|
|
|
# By default, Nix will pick a version for each one of your Haskell dependencies.
|
|
|
|
# If you would like to select a different version then, run:
|
2016-08-01 19:02:23 +02:00
|
|
|
#
|
2016-12-12 19:40:23 +01:00
|
|
|
# $ cabal2nix cabal://${package-name}-${version} > nix/${package-name}.nix
|
2016-08-01 19:02:23 +02:00
|
|
|
#
|
2016-12-12 19:40:23 +01:00
|
|
|
# ... and then add this line below in the Haskell package overrides section:
|
2016-08-01 19:02:23 +02:00
|
|
|
#
|
2016-12-12 19:40:23 +01:00
|
|
|
# ${package-name} =
|
2022-07-29 01:47:27 +02:00
|
|
|
# hsPkgsSelf.callPackage ./nix/${package-name}.nix { };
|
2016-08-01 19:02:23 +02:00
|
|
|
#
|
2016-12-12 19:40:23 +01:00
|
|
|
# ... replacing `${package-name}` with the name of the package that you would
|
|
|
|
# like to upgrade and `${version}` with the version you want to upgrade to.
|
|
|
|
#
|
|
|
|
# You can also add private Git dependencies in the same way, except supplying
|
|
|
|
# the `git` URL to clone:
|
|
|
|
#
|
2017-03-16 00:02:26 +01:00
|
|
|
# $ cabal2nix <your private git url>/${package-name}.git > ./nix/${package-name}.nix
|
2016-12-12 19:40:23 +01:00
|
|
|
#
|
2017-03-16 00:02:26 +01:00
|
|
|
# ...but also be sure to supply `fetchgit = pkgs.fetchgitPrivate` in the
|
2022-07-29 01:47:27 +02:00
|
|
|
# `hsPkgsSelf.callPackage` invocation for your private package.
|
2016-12-12 19:40:23 +01:00
|
|
|
#
|
2017-03-16 00:02:26 +01:00
|
|
|
# Note that `cabal2nix` also takes an optional `--revision` flag if you want to
|
|
|
|
# pick a revision other than the latest to depend on.
|
|
|
|
#
|
2021-04-26 19:24:33 +02:00
|
|
|
# If you want to test a local source checkout of a dependency, then run:
|
2016-12-12 19:40:23 +01:00
|
|
|
#
|
|
|
|
# $ cabal2nix path/to/dependency/repo > nix/${package-name}.nix
|
2021-04-26 19:24:33 +02:00
|
|
|
#
|
|
|
|
# Finally, if you want to add grpc-haskell to your own package set, you can
|
|
|
|
# setup the overlay with:
|
|
|
|
#
|
|
|
|
# grpc-nixpkgs = import path/to/gRPC-haskell/nixpkgs.nix;
|
|
|
|
# grpc-overlay = (import path/to/gRPC-haskell/release.nix).overlay;
|
|
|
|
# # optionally use the same nixpkgs source
|
|
|
|
# pkgs = grpc-nixpkgs { overlays = [ grpc-overlay ]; };
|
|
|
|
#
|
|
|
|
# ... and use the extend function to setup haskell package override:
|
|
|
|
#
|
|
|
|
# # see https://github.com/NixOS/nixpkgs/issues/25887
|
|
|
|
# haskellPackages = pkgs.haskellPackages.extend (self: super: {
|
|
|
|
# your-package = self.callCabal2nix "your-package" ./. { };
|
|
|
|
# };);
|
|
|
|
|
2016-08-01 19:02:23 +02:00
|
|
|
let
|
2022-07-29 02:13:05 +02:00
|
|
|
# Taking specific Python version.
|
|
|
|
#
|
|
|
|
# N.B. Mind that some of the dependencies of gRPC Python packages
|
|
|
|
# (“grpcio-status” and “grpcio-tools”) do not support Python 2 anymore:
|
|
|
|
# “error: mox-0.7.8 not supported for interpreter python2.7”.
|
|
|
|
# So do not use “python” as a value since it defaults to Python 2.
|
|
|
|
pythonVer = "python3";
|
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
overlay = pkgsSelf: pkgsSuper: {
|
|
|
|
|
2022-07-29 02:13:05 +02:00
|
|
|
# “grpc-haskell” is made for specific version of gRPC library.
|
|
|
|
# So this override makes sure it would still work against another nixpkgs
|
|
|
|
# pin where gRPC can have different version.
|
|
|
|
grpc = pkgsSelf.callPackage nix/grpc-pin/grpc.nix {
|
|
|
|
# grpc builds with c++14 so abseil must also be built that way
|
|
|
|
abseil-cpp = pkgsSelf.abseil-cpp_202111.override {
|
|
|
|
cxxStandard = "14";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
# As recommended for “grpc” derivation also overriding
|
|
|
|
# “grpcio-status” and “grpcio-tools” to the same version.
|
|
|
|
${pythonVer} = pkgsSuper.${pythonVer}.override {
|
|
|
|
packageOverrides = pySelf: pySuper: {
|
|
|
|
grpcio-status = pySelf.callPackage nix/grpc-pin/grpcio-status.nix {};
|
|
|
|
grpcio-tools = pySelf.callPackage nix/grpc-pin/grpcio-tools.nix {};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
haskellPackages = (hsPkgsOverridden pkgsSuper).extend (hsSelf: hsSuper: {
|
|
|
|
|
|
|
|
grpc-haskell-core =
|
|
|
|
pkgsSelf.lib.pipe (
|
|
|
|
hsSelf.callCabal2nix "grpc-haskell-core" ./core {
|
|
|
|
gpr = pkgsSelf.grpc;
|
|
|
|
}
|
|
|
|
) [
|
|
|
|
pkgsSelf.usesGRPC
|
|
|
|
pkgsSelf.haskell.lib.buildFromSdist
|
|
|
|
];
|
2020-09-04 20:02:41 +02:00
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
grpc-haskell-no-tests =
|
|
|
|
pkgsSelf.lib.pipe (hsSelf.callCabal2nix "grpc-haskell" ./. { }) [
|
|
|
|
pkgsSelf.haskell.lib.dontCheck
|
|
|
|
pkgsSelf.usesGRPC
|
|
|
|
pkgsSelf.haskell.lib.buildFromSdist
|
|
|
|
];
|
2020-09-04 20:02:41 +02:00
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
grpc-haskell =
|
|
|
|
let
|
|
|
|
ghc =
|
|
|
|
hsSelf.ghcWithPackages (pkgs: [
|
|
|
|
pkgs.grpc-haskell-no-tests
|
|
|
|
# Include some additional packages in this custom ghc for
|
|
|
|
# running tests in the nix-shell environment.
|
2022-07-29 13:27:54 +02:00
|
|
|
pkgs.pipes
|
|
|
|
pkgs.tasty-hunit
|
2022-07-29 01:47:27 +02:00
|
|
|
pkgs.tasty-quickcheck
|
|
|
|
pkgs.turtle
|
|
|
|
]);
|
|
|
|
|
2022-07-29 02:13:05 +02:00
|
|
|
python = pkgsSelf.${pythonVer}.withPackages (pkgs: [
|
2022-07-29 01:47:27 +02:00
|
|
|
pkgs.grpcio-tools
|
|
|
|
]);
|
|
|
|
|
|
|
|
override = old: {
|
|
|
|
configureFlags = (old.configureFlags or []) ++ [
|
|
|
|
"--flags=with-examples"
|
|
|
|
];
|
|
|
|
|
|
|
|
buildDepends = (old.buildDepends or [ ]) ++ [
|
|
|
|
pkgsSelf.makeWrapper
|
2022-07-29 13:27:54 +02:00
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
# Give our nix-shell its own cabal so we don't pick up one
|
|
|
|
# from the user's environment by accident.
|
|
|
|
hsSelf.cabal-install
|
|
|
|
|
|
|
|
# And likewise for c2hs
|
|
|
|
hsSelf.c2hs
|
|
|
|
];
|
|
|
|
|
|
|
|
patches =
|
|
|
|
(old.patches or [ ]) ++ [ ./tests/tests.patch ];
|
|
|
|
|
|
|
|
postPatch = (old.postPatch or "") + ''
|
|
|
|
patchShebangs tests
|
|
|
|
substituteInPlace tests/simple-client.sh \
|
|
|
|
--replace @makeWrapper@ ${pkgsSelf.makeWrapper} \
|
|
|
|
--replace @grpc@ ${pkgsSelf.grpc}
|
|
|
|
substituteInPlace tests/simple-server.sh \
|
|
|
|
--replace @makeWrapper@ ${pkgsSelf.makeWrapper} \
|
|
|
|
--replace @grpc@ ${pkgsSelf.grpc}
|
|
|
|
wrapProgram tests/protoc.sh \
|
|
|
|
--prefix PATH : ${python}/bin
|
|
|
|
wrapProgram tests/test-client.sh \
|
|
|
|
--prefix PATH : ${python}/bin
|
|
|
|
wrapProgram tests/test-server.sh \
|
|
|
|
--prefix PATH : ${python}/bin
|
|
|
|
wrapProgram tests/simple-client.sh \
|
|
|
|
--prefix PATH : ${ghc}/bin
|
|
|
|
wrapProgram tests/simple-server.sh \
|
|
|
|
--prefix PATH : ${ghc}/bin
|
|
|
|
'';
|
2020-09-04 20:02:41 +02:00
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
shellHook = (old.shellHook or "") + ''
|
|
|
|
# This lets us use our custom ghc and python environments in the shell.
|
|
|
|
export PATH=${ghc}/bin:${python}/bin''${PATH:+:}$PATH
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
in
|
|
|
|
pkgsSelf.lib.pipe (hsSelf.callCabal2nix "grpc-haskell" ./. { }) [
|
|
|
|
pkgsSelf.haskell.lib.buildFromSdist
|
|
|
|
(pkgsSelf.lib.flip pkgsSelf.haskell.lib.overrideCabal override)
|
|
|
|
pkgsSelf.usesGRPC
|
2022-07-28 03:17:53 +02:00
|
|
|
];
|
2020-09-04 20:02:41 +02:00
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
});
|
2016-08-01 19:02:23 +02:00
|
|
|
|
2020-09-04 20:02:41 +02:00
|
|
|
test-grpc-haskell =
|
2022-07-29 01:47:27 +02:00
|
|
|
pkgsSelf.mkShell {
|
2020-09-04 20:02:41 +02:00
|
|
|
nativeBuildInputs = [
|
2022-07-29 01:47:27 +02:00
|
|
|
(pkgsSelf.haskellPackages.ghcWithPackages (pkgs: [
|
|
|
|
pkgs.grpc-haskell
|
|
|
|
]))
|
2020-09-04 20:02:41 +02:00
|
|
|
];
|
|
|
|
};
|
2020-11-16 18:43:28 +01:00
|
|
|
|
|
|
|
usesGRPC = haskellPackage:
|
grpc-haskell{-core} -> 0.2.0: Fix MetadataMap duplicate-key ordering (#132)
* Put LD_LIBRARY_PATH set back into Linux `nix-shell`
...as we need it for `ghci` workflows inside the shell(s).
* Add (failing) test case to check MetadataMap ordering
* Remove SortedList value-component from MetadataMap
...which fixes the failing test case introduced by `85a2d13`.
This is a potentially breaking change that warrants a library rev bump.
I'm not sure what the original reason was for the sorted list component of
`MetadataMap` (i.e., header values), but that implementation choice makes it so
that determining the "last provided" header value associated with a duplicate
key cannot be recovered. That is, it is in violation of this requirement from
the [spec](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md):
```
Custom-Metadata header order is not guaranteed to be preserved except for values
with duplicate header names.
```
I'm guessing that the original motivation might have been to ensure that the Eq
instance was not sensitive to ordering of values for duplicate keys.
I think we can drop the existing `Eq` assumption about order-insensitive values
for duplicate keys (there is order sensitivity after all), and if we end up
discovering a common use case for an order-insensitive equality on values, we
should address that via a utility function (instead via the type's `Eq`
instance).
So, this commit changes the value component of the `MetadataMap` type to be a
list of `ByteString` values instead of `SortedList ByteString`, and removes the
`sorted-list` package as a dependency, as it has no other uses in the library.
Note that this commit is not claiming we are now spec-compliant w.r.t. header
treatment after this change. In particular (and at least),
1. We do not yet support base64-encoded binary data via the special `-bin` key
suffix.
2. As far as I am aware, we do not (yet) interpret comma-separated header values
the same as duplicate header keys for each of those values.
3. As far as I am aware, we do not (yet) do any validation of header names nor
whitespace handling as per the request grammar from the spec.
* Extend Arbitrary MetadataMap to explicitly encode key duplication
Duplicate keys were allowed by the previous implementation, but this commit
makes key duplication more explicit and more frequent.
* Add metadata map ordering QC prop
* Drop qualified use of @?= since it's so common in this module
* Extend checkMetadataOrdering to check instance Eq MetadataMap
...and use the appropriate bracketing wrapper.
* Relocate MetadataMap type to its own module
* Add some helper functions for MetadataMap lookup; documentation
* Extend testMetadataOrdering w/ use of lookup{All,Last}
* Bump grpc-haskell{,-core} -> 0.2.0
2021-07-01 03:32:33 +02:00
|
|
|
# On Linux, LD_LIBRARY_PATH needs to be set for loading
|
|
|
|
# grpc-haskell{-,core} code into `ghci` from within `nix-shell`
|
|
|
|
# environments.
|
|
|
|
#
|
2022-07-29 01:47:27 +02:00
|
|
|
# TODO: We might try using pkgsSelf.fixDarwinDylibNames (see PR#129)
|
grpc-haskell{-core} -> 0.2.0: Fix MetadataMap duplicate-key ordering (#132)
* Put LD_LIBRARY_PATH set back into Linux `nix-shell`
...as we need it for `ghci` workflows inside the shell(s).
* Add (failing) test case to check MetadataMap ordering
* Remove SortedList value-component from MetadataMap
...which fixes the failing test case introduced by `85a2d13`.
This is a potentially breaking change that warrants a library rev bump.
I'm not sure what the original reason was for the sorted list component of
`MetadataMap` (i.e., header values), but that implementation choice makes it so
that determining the "last provided" header value associated with a duplicate
key cannot be recovered. That is, it is in violation of this requirement from
the [spec](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md):
```
Custom-Metadata header order is not guaranteed to be preserved except for values
with duplicate header names.
```
I'm guessing that the original motivation might have been to ensure that the Eq
instance was not sensitive to ordering of values for duplicate keys.
I think we can drop the existing `Eq` assumption about order-insensitive values
for duplicate keys (there is order sensitivity after all), and if we end up
discovering a common use case for an order-insensitive equality on values, we
should address that via a utility function (instead via the type's `Eq`
instance).
So, this commit changes the value component of the `MetadataMap` type to be a
list of `ByteString` values instead of `SortedList ByteString`, and removes the
`sorted-list` package as a dependency, as it has no other uses in the library.
Note that this commit is not claiming we are now spec-compliant w.r.t. header
treatment after this change. In particular (and at least),
1. We do not yet support base64-encoded binary data via the special `-bin` key
suffix.
2. As far as I am aware, we do not (yet) interpret comma-separated header values
the same as duplicate header keys for each of those values.
3. As far as I am aware, we do not (yet) do any validation of header names nor
whitespace handling as per the request grammar from the spec.
* Extend Arbitrary MetadataMap to explicitly encode key duplication
Duplicate keys were allowed by the previous implementation, but this commit
makes key duplication more explicit and more frequent.
* Add metadata map ordering QC prop
* Drop qualified use of @?= since it's so common in this module
* Extend checkMetadataOrdering to check instance Eq MetadataMap
...and use the appropriate bracketing wrapper.
* Relocate MetadataMap type to its own module
* Add some helper functions for MetadataMap lookup; documentation
* Extend testMetadataOrdering w/ use of lookup{All,Last}
* Bump grpc-haskell{,-core} -> 0.2.0
2021-07-01 03:32:33 +02:00
|
|
|
# instead of setting DYLD_LIBRARY_PATH, but we might still need them
|
|
|
|
# around for `ghci` as on Linux.
|
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
pkgsSelf.haskell.lib.overrideCabal haskellPackage (oldAttributes: {
|
|
|
|
preBuild = (oldAttributes.preBuild or "") +
|
|
|
|
pkgsSelf.lib.optionalString pkgsSelf.stdenv.isDarwin ''
|
|
|
|
export DYLD_LIBRARY_PATH=${pkgsSelf.grpc}/lib''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH
|
|
|
|
'';
|
|
|
|
|
|
|
|
shellHook = (oldAttributes.shellHook or "") +
|
|
|
|
pkgsSelf.lib.optionalString pkgsSelf.stdenv.isDarwin ''
|
|
|
|
export DYLD_LIBRARY_PATH=${pkgsSelf.grpc}/lib''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH
|
|
|
|
'' +
|
|
|
|
pkgsSelf.lib.optionalString pkgsSelf.stdenv.isLinux ''
|
|
|
|
export LD_LIBRARY_PATH=${pkgsSelf.grpc}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
|
|
|
|
'';
|
|
|
|
});
|
2016-08-01 19:02:23 +02:00
|
|
|
};
|
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
hsAddPatch = pkgs: patchFile:
|
2022-07-28 03:17:53 +02:00
|
|
|
pkgs.lib.flip pkgs.haskell.lib.overrideCabal (old: {
|
|
|
|
patches = (old.patches or [ ]) ++ [ patchFile ];
|
|
|
|
});
|
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
hsMarkUnbroken = pkgs:
|
2022-07-28 03:17:53 +02:00
|
|
|
pkgs.lib.flip pkgs.haskell.lib.overrideCabal (old: { broken = false; });
|
|
|
|
|
2022-07-29 01:47:27 +02:00
|
|
|
# Overrides for Haskell packages this library depends on
|
|
|
|
hsPkgsOverridden = pkgs:
|
|
|
|
pkgs.haskellPackages.extend (self: super: {
|
|
|
|
data-diverse =
|
2022-07-29 02:33:55 +02:00
|
|
|
pkgs.lib.pipe (self.callPackage nix/data-diverse.nix {}) [
|
2022-07-29 01:47:27 +02:00
|
|
|
# Patch for GHC 9.x support
|
|
|
|
(hsAddPatch pkgs (pkgs.fetchpatch {
|
|
|
|
url = "https://github.com/louispan/data-diverse/commit/4033c90c44dab5824f76d64b7128bb6dea2b5dc7.patch";
|
|
|
|
sha256 = "sha256-d6bC1Z7uCLtYF3FXGzo3XNdRPQgeAUjL1RW1Tiv7MnM=";
|
|
|
|
}))
|
|
|
|
|
|
|
|
# The patch above makes it not to be broken anymore
|
|
|
|
(hsMarkUnbroken pkgs)
|
|
|
|
];
|
|
|
|
|
|
|
|
proto3-wire =
|
2022-07-29 02:33:55 +02:00
|
|
|
pkgs.lib.pipe (self.callPackage nix/proto3-wire.nix {}) [
|
|
|
|
(hsAddPatch pkgs nix/proto3-wire.patch)
|
2022-07-29 01:47:27 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
proto3-suite =
|
2022-07-29 02:33:55 +02:00
|
|
|
pkgs.lib.pipe (self.callPackage nix/proto3-suite.nix {}) [
|
|
|
|
(hsAddPatch pkgs nix/proto3-suite.patch)
|
2022-07-29 01:47:27 +02:00
|
|
|
pkgs.haskell.lib.dontCheck # 4 out of 74 tests failed
|
|
|
|
];
|
|
|
|
});
|
|
|
|
|
2020-09-04 20:02:41 +02:00
|
|
|
overlays = [ overlay ];
|
|
|
|
|
2021-07-01 00:19:02 +02:00
|
|
|
config = { };
|
2016-12-12 19:40:23 +01:00
|
|
|
|
2021-03-08 22:44:36 +01:00
|
|
|
nixpkgs = import ./nixpkgs.nix;
|
|
|
|
linuxPkgs = nixpkgs { inherit config overlays; system = "x86_64-linux" ; };
|
|
|
|
darwinPkgs = nixpkgs { inherit config overlays; system = "x86_64-darwin"; };
|
|
|
|
pkgs = nixpkgs { inherit config overlays; };
|
2016-12-12 19:40:23 +01:00
|
|
|
|
2022-07-28 03:17:53 +02:00
|
|
|
shell = pkgs.haskellPackages.shellFor {
|
|
|
|
name = "gRPC-haskell-shell";
|
|
|
|
withHoogle = true;
|
|
|
|
|
|
|
|
packages = p: [
|
|
|
|
p.grpc-haskell-core
|
|
|
|
p.grpc-haskell
|
|
|
|
];
|
|
|
|
|
|
|
|
buildInputs = [
|
|
|
|
pkgs.cabal-install
|
|
|
|
pkgs.grpc
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-07-28 22:22:14 +02:00
|
|
|
# Stack build using Nix requires also “gmp” and “zlib”
|
|
|
|
stack-env =
|
|
|
|
pkgs.haskellPackages.grpc-haskell.env.overrideAttrs (old: {
|
|
|
|
propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [
|
|
|
|
pkgs.gmp
|
|
|
|
pkgs.zlib
|
|
|
|
pkgs.grpc
|
|
|
|
];
|
|
|
|
});
|
|
|
|
|
2016-12-12 19:40:23 +01:00
|
|
|
in
|
2018-10-15 00:52:59 +02:00
|
|
|
{
|
|
|
|
grpc-haskell-core-linux = linuxPkgs.haskellPackages.grpc-haskell-core;
|
|
|
|
grpc-haskell-core-darwin = darwinPkgs.haskellPackages.grpc-haskell-core;
|
|
|
|
grpc-haskell-core = pkgs.haskellPackages.grpc-haskell-core;
|
|
|
|
|
|
|
|
grpc-haskell-linux = linuxPkgs.haskellPackages.grpc-haskell;
|
|
|
|
grpc-haskell-darwin = darwinPkgs.haskellPackages.grpc-haskell;
|
|
|
|
grpc-haskell = pkgs.haskellPackages.grpc-haskell;
|
|
|
|
grpc-haskell-no-tests = pkgs.haskellPackages.grpc-haskell-no-tests;
|
|
|
|
|
|
|
|
grpc-linux = linuxPkgs.grpc;
|
|
|
|
grpc-darwin = darwinPkgs.grpc;
|
|
|
|
|
|
|
|
grpc = pkgs.grpc;
|
2020-09-04 20:02:41 +02:00
|
|
|
|
2022-07-28 22:22:14 +02:00
|
|
|
inherit pkgs config overlay shell stack-env;
|
2020-09-04 20:02:41 +02:00
|
|
|
inherit (pkgs) test-grpc-haskell;
|
2022-07-29 01:47:27 +02:00
|
|
|
|
|
|
|
inherit hsPkgsOverridden; # Function :: nixpkgs -> new haskellPackages
|
|
|
|
inherit (hsPkgsOverridden (nixpkgs {})) data-diverse proto3-wire proto3-suite;
|
2016-12-12 19:40:23 +01:00
|
|
|
}
|