* 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
* Remove unnecessary self-dependency
* Regenerate core/default.nix and build -core via callCabal2nix
* grpc-haskell-core: -Wall -Werror and fix warnings
* grpc-haskell: -Wall -Werror and fix warnings
* Update documentation
* Remove LD_LIBRARY_PATH sets from usesGRPC
...as they no longer seem to be needed.
* Remove dead code
* Remove core/default.nix
...as suggested by @evanrelf.
A bunch of files have been missing from the tarballs created by `cabal
sdist`. I’ve changed the nix config to check for this and also found
some examples that I forgot to update in a previous PR (sorry about
that).
This is a "shallow" update, meaning that there are still several dependencies
(such as `grpc` or Haskell packages) that are still pinned and those pins might
not be necessary any longer after this change.
* Squash merge from branch `joel-fix-build-issues-and-broken-tests`
* Update `proto3-wire` and `proto3-suite` refs in `stack.yaml`
* Update `proto3-wire` and `proto3-suite` refs via `cabal2nix` for `nix` builds
* Remove `compile-proto-file` from the repo, as it is now available via `proto3-suite`
* Update `proto3-suite` ref in `stack.yaml`
* Update `proto3-suite` ref via `cabal2nix` for `nix` builds
* Update `proto3-suite` and `proto3-wire` gitrevs
* Regenerate Echo and Arithmetic example modules from their respective .protos
* Fix typo
We no longer require the `--with-gcc=clang` flag and it can cause
failed builds such as the one described in #19. I tested that the
`cabal` workflow works on OS X and NixOS without this flag
* update for reorganized headers in gRPC v1.1: https://github.com/grpc/grpc/pull/7559
* update nix files
* rename all gpr_slice to grpc_slice since we can't be backwards compatible anyway
* use gRPC 1.1.4
* now compatible with gRPC 1.2.0
* use nixpkgs 17.03 to get protobuf3_2, newer proto3-* deps, fix some warnings
* another warning
* Pin nixpkgs to `7ae9da426924537755ce9164fd5b5f81ce16a1c3`; minor documentation tweaks
* Remove use of `fetchgitPrivate` from `proto3-suite` toplevel pkg override attr def
* Update tests.patch
* release.nix fixes for building and running cabal test suite from inside the nix-shell environment
* Update build instructions
* More README updates
* Fix stack tooling and improve documentation
* Update grpc sha256, cleanup build instructions
* Whups, DYLD_LIBRARY_PATH and substituteInPlace is still needed for hydra / macos builds with no brew-installed grpc!
* PR feedback tweaks
This updates the `release.nix` to now correctly run the test suite. You can
now build and test `grpc-haskell` by running:
```
$ nix-build -A grpc-haskell release.nix
```
... and `nix-shell` has been updated, too, so that you can do `cabal`
development inside of a `nix-shell` by running:
```
$ nix-shell -A grpc-haskell.env release.nix
```
For people who prefer to use `stack` you can still just build the `grpc`
library by running:
```
$ nix-build -A grpc release.nix
```
... then pass that library as input to `stack`
* update channel arg names, add compression level arg support, add compression level arg test
* switch to temp test demonstrating bug in grpc 0.15.0
* memset op array to 0
* switch examples back
* Switch to newer `grpc` and enable tests in `release.nix`
* Split out `simple-server` test into separate shell script
* Fix bash invocation
* Add intermediate `./default-tests.nix` build
* Add `tests.patch` to version control
* Split `python` command into separate script
* Provide `python` via `nix`
We now have Jenkins enabled for `gRPC-haskell` which verifies that
`nix-build release.nix` passes for each pull request.
`master` currently doesn't build, and this is the first pull request to fix the
build by adding the recently introduced `sorted-list` dependency to the `nix`
build. This was done by running `cabal2nix . > default.nix` and also adding a
newer version of `sorted-list` to the `release.nix` file. `nixos-16.03`
uses an older version of `sorted-list` which doesn't have an `IsList` instance for
`SortedList`.
The purpose of this is two-fold:
* To demonstrate an example of how to build the repository (which is non-trivial
due to the `grpc` dependency)
* To eventually be used within CI (via `nix-build release.nix`)