From 006dbd38d58e87751faa965877af1e07bcbf7f63 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Thu, 8 Aug 2019 03:31:19 +0100 Subject: [PATCH 01/24] WIP: nix derivation --- default.nix | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 default.nix diff --git a/default.nix b/default.nix new file mode 100644 index 00000000..9d675382 --- /dev/null +++ b/default.nix @@ -0,0 +1,68 @@ +{ }: +let + pkgs = import (builtins.fetchTarball { + name = "nixos-master-2019-06-19"; + url = https://github.com/nixos/nixpkgs/archive/7a569985214906d618ed4b2ad4f0629842cc2ec2.tar.gz; + sha256 = "0laddzjvzbgdwxbvvpk98plwchyi6ymnypb7ymr50d2bwjw6r4qc"; + }) { inherit config; }; + + packages = { + hs-abci-example = ./hs-abci-example; + hs-abci-extra = ./hs-abci-extra; + hs-abci-server = ./hs-abci-server; + hs-abci-types = ./hs-abci-types; + hs-tendermint-client = ./hs-tendermint-client; + }; + + repos = { + avl-auth = pkgs.fetchFromGitHub { + owner = "oscoin"; + repo = "avl-auth"; + rev = "dfc468845a82cdd7d759943b20853999bc026505"; + sha256 = "005j98hmzzh9ybd8wb073i47nwvv1hfh844vv4kflba3m8d75d80"; + }; + }; + + repoPackages = { + inherit (repos) avl-auth; + }; + + extra-build-inputs = with pkgs; { + hs-abci-types = [protobuf]; + }; + + addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; + + config = { + packageOverrides = pkgs: { + haskellPackages = pkgs.haskellPackages.override { + overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ + (self: super: builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) (repoPackages // packages)) + (self: super: builtins.mapAttrs (name: deps: super.${name}.overrideAttrs (addBuildInputs deps)) extra-build-inputs) + (self: super: { + proto-lens = super.proto-lens_0_5_0_1; + proto-lens-protoc = super.proto-lens-protoc_0_5_0_0; + proto-lens-runtime = super.proto-lens-runtime_0_5_0_0; + + # dependency of avl-auth + # marked as broken, fails with some `ld` error + xxhash = + let + # from recent nixpkgs + unmarkBroken = drv: pkgs.haskell.lib.overrideCabal drv (drv: { broken = false; }); + in + unmarkBroken super.xxhash; + }) + ]; + }; + }; + }; + +in { inherit (pkgs.haskellPackages) + #hs-abci-example + hs-abci-extra + hs-abci-server + hs-abci-types + hs-tendermint-client + ; + } From cfa3d6d419ff962470be1131206ac0e60acee343 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Wed, 14 Aug 2019 19:29:37 +0100 Subject: [PATCH 02/24] Expose overrides for compatibility with older nixpkgs/ghc --- default.nix | 81 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 59 insertions(+), 22 deletions(-) diff --git a/default.nix b/default.nix index 9d675382..f70b33a5 100644 --- a/default.nix +++ b/default.nix @@ -33,36 +33,73 @@ let addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; + overrides = self: super: + let + callHackageDirect = {pkg, ver, sha256}@args: + let pkgver = "${pkg}-${ver}"; + in self.callCabal2nix pkg (pkgs.fetchzip { + url = "http://hackage.haskell.org/package/${pkgver}/${pkgver}.tar.gz"; + inherit sha256; + }) {}; + in { + proto-lens = callHackageDirect { + pkg = "proto-lens"; + ver = "0.5.0.1"; + sha256 = "1730b7p7yhp60spbmgflikkx98smfarz7h7wzrpric5pj7si6x44"; + }; + proto-lens-protoc = callHackageDirect { + pkg = "proto-lens-protoc"; + ver = "0.5.0.0"; + sha256 = "05g9kdmwcv216l90w6r47hbmn0yx35w7lbj41gxrnha8axjzrxrq"; + }; + proto-lens-runtime = callHackageDirect { + pkg = "proto-lens-runtime"; + ver = "0.5.0.0"; + sha256 = "15prbfk10xkb2q5ij5dajbcjwgbkw26h34i330kf3867h0mprs08"; + }; + proto-lens-setup = callHackageDirect { + pkg = "proto-lens-setup"; + ver = "0.4.0.2"; + sha256 = "17lhdp6pcpk2ifcmnafr39150740ayjnyfbwvjc8wvbmlrd47d1n"; + }; + proto-lens-arbitrary = callHackageDirect { + pkg = "proto-lens-arbitrary"; + ver = "0.1.2.6"; + sha256 = "17hksng65gdyg0rabv5xnfgwdv1vsq7sph3fwyq9wmgfk4dzxf3r"; + }; + + # dependency of avl-auth + # marked as broken, fails with some `ld` error + xxhash = + let + # from recent nixpkgs + unmarkBroken = drv: pkgs.haskell.lib.overrideCabal drv (drv: { broken = false; }); + in + unmarkBroken super.xxhash; + }; + config = { packageOverrides = pkgs: { haskellPackages = pkgs.haskellPackages.override { overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ + overrides (self: super: builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) (repoPackages // packages)) (self: super: builtins.mapAttrs (name: deps: super.${name}.overrideAttrs (addBuildInputs deps)) extra-build-inputs) - (self: super: { - proto-lens = super.proto-lens_0_5_0_1; - proto-lens-protoc = super.proto-lens-protoc_0_5_0_0; - proto-lens-runtime = super.proto-lens-runtime_0_5_0_0; - - # dependency of avl-auth - # marked as broken, fails with some `ld` error - xxhash = - let - # from recent nixpkgs - unmarkBroken = drv: pkgs.haskell.lib.overrideCabal drv (drv: { broken = false; }); - in - unmarkBroken super.xxhash; - }) ]; }; }; }; -in { inherit (pkgs.haskellPackages) - #hs-abci-example - hs-abci-extra - hs-abci-server - hs-abci-types - hs-tendermint-client - ; - } +in { + inherit overrides; + + packages = { + inherit (pkgs.haskellPackages) + #hs-abci-example + hs-abci-extra + hs-abci-server + hs-abci-types + hs-tendermint-client + ; + }; +} From 9632a93d0941c79a9cfcf2ab6e8806c4375a538d Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Wed, 14 Aug 2019 19:31:25 +0100 Subject: [PATCH 03/24] Update gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index f8da4173..0f9b1a9d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .stack-work/ *.cabal *~ + +# nix +result-* \ No newline at end of file From d244ffdbaa42436299de772606db99421ccff50a Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Mon, 19 Aug 2019 18:10:21 +0100 Subject: [PATCH 04/24] Expose all overrides --- default.nix | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/default.nix b/default.nix index f70b33a5..89929ed1 100644 --- a/default.nix +++ b/default.nix @@ -33,7 +33,7 @@ let addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; - overrides = self: super: + hackageOverrides = self: super: let callHackageDirect = {pkg, ver, sha256}@args: let pkgver = "${pkg}-${ver}"; @@ -78,13 +78,25 @@ let unmarkBroken super.xxhash; }; + localOverrides = self: super: + builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) packages; + + repoOverrides = self: super: + builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) repoPackages; + + overrides = self: super: + let allOverrides = + hackageOverrides self super + // repoOverrides self super + // localOverrides self super; + in + builtins.mapAttrs (name: pkg: pkg.overrideAttrs (addBuildInputs (extra-build-inputs.${name} or []))) allOverrides; + config = { packageOverrides = pkgs: { haskellPackages = pkgs.haskellPackages.override { overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ overrides - (self: super: builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) (repoPackages // packages)) - (self: super: builtins.mapAttrs (name: deps: super.${name}.overrideAttrs (addBuildInputs deps)) extra-build-inputs) ]; }; }; From 035e22a323ee996d62e8d852a2950dbcbda72084 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Mon, 21 Oct 2019 00:37:37 +0100 Subject: [PATCH 05/24] Specify hpack version --- default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/default.nix b/default.nix index 89929ed1..7549da7e 100644 --- a/default.nix +++ b/default.nix @@ -42,6 +42,11 @@ let inherit sha256; }) {}; in { + hpack = callHackageDirect { + pkg = "hpack"; + ver = "0.32.0"; + sha256 = "0c01mrq6b48c5f0vmbir0m9xzwb8nn0rwcq556nx3dg3wpnzw4z6"; + }; proto-lens = callHackageDirect { pkg = "proto-lens"; ver = "0.5.0.1"; From 081ae2573d6fce3339b5b09583d5ddfefd19e9a0 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Mon, 21 Oct 2019 00:45:12 +0100 Subject: [PATCH 06/24] Use upstream 'callHackageDirect' --- default.nix | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/default.nix b/default.nix index 7549da7e..c737aa17 100644 --- a/default.nix +++ b/default.nix @@ -33,45 +33,37 @@ let addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; - hackageOverrides = self: super: - let - callHackageDirect = {pkg, ver, sha256}@args: - let pkgver = "${pkg}-${ver}"; - in self.callCabal2nix pkg (pkgs.fetchzip { - url = "http://hackage.haskell.org/package/${pkgver}/${pkgver}.tar.gz"; - inherit sha256; - }) {}; - in { - hpack = callHackageDirect { + hackageOverrides = self: super: { + hpack = self.callHackageDirect { pkg = "hpack"; ver = "0.32.0"; sha256 = "0c01mrq6b48c5f0vmbir0m9xzwb8nn0rwcq556nx3dg3wpnzw4z6"; - }; - proto-lens = callHackageDirect { + } {}; + proto-lens = self.callHackageDirect { pkg = "proto-lens"; ver = "0.5.0.1"; sha256 = "1730b7p7yhp60spbmgflikkx98smfarz7h7wzrpric5pj7si6x44"; - }; - proto-lens-protoc = callHackageDirect { + } {}; + proto-lens-protoc = self.callHackageDirect { pkg = "proto-lens-protoc"; ver = "0.5.0.0"; sha256 = "05g9kdmwcv216l90w6r47hbmn0yx35w7lbj41gxrnha8axjzrxrq"; - }; - proto-lens-runtime = callHackageDirect { + } {}; + proto-lens-runtime = self.callHackageDirect { pkg = "proto-lens-runtime"; ver = "0.5.0.0"; sha256 = "15prbfk10xkb2q5ij5dajbcjwgbkw26h34i330kf3867h0mprs08"; - }; - proto-lens-setup = callHackageDirect { + } {}; + proto-lens-setup = self.callHackageDirect { pkg = "proto-lens-setup"; ver = "0.4.0.2"; sha256 = "17lhdp6pcpk2ifcmnafr39150740ayjnyfbwvjc8wvbmlrd47d1n"; - }; - proto-lens-arbitrary = callHackageDirect { + } {}; + proto-lens-arbitrary = self.callHackageDirect { pkg = "proto-lens-arbitrary"; ver = "0.1.2.6"; sha256 = "17hksng65gdyg0rabv5xnfgwdv1vsq7sph3fwyq9wmgfk4dzxf3r"; - }; + } {}; # dependency of avl-auth # marked as broken, fails with some `ld` error From f28509b78f20184ad5482e240d4715990de68eba Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Mon, 21 Oct 2019 02:34:32 +0100 Subject: [PATCH 07/24] Fix indentation --- default.nix | 78 ++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/default.nix b/default.nix index c737aa17..4beb5b5d 100644 --- a/default.nix +++ b/default.nix @@ -34,46 +34,46 @@ let addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; hackageOverrides = self: super: { - hpack = self.callHackageDirect { - pkg = "hpack"; - ver = "0.32.0"; - sha256 = "0c01mrq6b48c5f0vmbir0m9xzwb8nn0rwcq556nx3dg3wpnzw4z6"; - } {}; - proto-lens = self.callHackageDirect { - pkg = "proto-lens"; - ver = "0.5.0.1"; - sha256 = "1730b7p7yhp60spbmgflikkx98smfarz7h7wzrpric5pj7si6x44"; - } {}; - proto-lens-protoc = self.callHackageDirect { - pkg = "proto-lens-protoc"; - ver = "0.5.0.0"; - sha256 = "05g9kdmwcv216l90w6r47hbmn0yx35w7lbj41gxrnha8axjzrxrq"; - } {}; - proto-lens-runtime = self.callHackageDirect { - pkg = "proto-lens-runtime"; - ver = "0.5.0.0"; - sha256 = "15prbfk10xkb2q5ij5dajbcjwgbkw26h34i330kf3867h0mprs08"; - } {}; - proto-lens-setup = self.callHackageDirect { - pkg = "proto-lens-setup"; - ver = "0.4.0.2"; - sha256 = "17lhdp6pcpk2ifcmnafr39150740ayjnyfbwvjc8wvbmlrd47d1n"; - } {}; - proto-lens-arbitrary = self.callHackageDirect { - pkg = "proto-lens-arbitrary"; - ver = "0.1.2.6"; - sha256 = "17hksng65gdyg0rabv5xnfgwdv1vsq7sph3fwyq9wmgfk4dzxf3r"; - } {}; + hpack = self.callHackageDirect { + pkg = "hpack"; + ver = "0.32.0"; + sha256 = "0c01mrq6b48c5f0vmbir0m9xzwb8nn0rwcq556nx3dg3wpnzw4z6"; + } {}; + proto-lens = self.callHackageDirect { + pkg = "proto-lens"; + ver = "0.5.0.1"; + sha256 = "1730b7p7yhp60spbmgflikkx98smfarz7h7wzrpric5pj7si6x44"; + } {}; + proto-lens-protoc = self.callHackageDirect { + pkg = "proto-lens-protoc"; + ver = "0.5.0.0"; + sha256 = "05g9kdmwcv216l90w6r47hbmn0yx35w7lbj41gxrnha8axjzrxrq"; + } {}; + proto-lens-runtime = self.callHackageDirect { + pkg = "proto-lens-runtime"; + ver = "0.5.0.0"; + sha256 = "15prbfk10xkb2q5ij5dajbcjwgbkw26h34i330kf3867h0mprs08"; + } {}; + proto-lens-setup = self.callHackageDirect { + pkg = "proto-lens-setup"; + ver = "0.4.0.2"; + sha256 = "17lhdp6pcpk2ifcmnafr39150740ayjnyfbwvjc8wvbmlrd47d1n"; + } {}; + proto-lens-arbitrary = self.callHackageDirect { + pkg = "proto-lens-arbitrary"; + ver = "0.1.2.6"; + sha256 = "17hksng65gdyg0rabv5xnfgwdv1vsq7sph3fwyq9wmgfk4dzxf3r"; + } {}; - # dependency of avl-auth - # marked as broken, fails with some `ld` error - xxhash = - let - # from recent nixpkgs - unmarkBroken = drv: pkgs.haskell.lib.overrideCabal drv (drv: { broken = false; }); - in - unmarkBroken super.xxhash; - }; + # dependency of avl-auth + # marked as broken, fails with some `ld` error + xxhash = + let + # from recent nixpkgs + unmarkBroken = drv: pkgs.haskell.lib.overrideCabal drv (drv: { broken = false; }); + in + unmarkBroken super.xxhash; + }; localOverrides = self: super: builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) packages; From ec5ccb60e4d1fe00e826d04a529efbd99e5a347c Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 9 Nov 2019 01:18:18 +0000 Subject: [PATCH 08/24] Bump nixpkgs --- default.nix | 43 ++++--------------------------------------- 1 file changed, 4 insertions(+), 39 deletions(-) diff --git a/default.nix b/default.nix index 4beb5b5d..a52410f9 100644 --- a/default.nix +++ b/default.nix @@ -1,9 +1,9 @@ { }: let pkgs = import (builtins.fetchTarball { - name = "nixos-master-2019-06-19"; - url = https://github.com/nixos/nixpkgs/archive/7a569985214906d618ed4b2ad4f0629842cc2ec2.tar.gz; - sha256 = "0laddzjvzbgdwxbvvpk98plwchyi6ymnypb7ymr50d2bwjw6r4qc"; + name = "nixpkgs-PR-71165"; + url = https://github.com/nixos/nixpkgs/archive/e3b740516f05307b55bcdb7e46c5d55da5fe0443.tar.gz; + sha256 = "0ssl12nl3n5bp23yng3naji0yw012a12xb2sa8kwdp2ln0qf8mcy"; }) { inherit config; }; packages = { @@ -34,45 +34,10 @@ let addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; hackageOverrides = self: super: { - hpack = self.callHackageDirect { - pkg = "hpack"; - ver = "0.32.0"; - sha256 = "0c01mrq6b48c5f0vmbir0m9xzwb8nn0rwcq556nx3dg3wpnzw4z6"; - } {}; - proto-lens = self.callHackageDirect { - pkg = "proto-lens"; - ver = "0.5.0.1"; - sha256 = "1730b7p7yhp60spbmgflikkx98smfarz7h7wzrpric5pj7si6x44"; - } {}; - proto-lens-protoc = self.callHackageDirect { - pkg = "proto-lens-protoc"; - ver = "0.5.0.0"; - sha256 = "05g9kdmwcv216l90w6r47hbmn0yx35w7lbj41gxrnha8axjzrxrq"; - } {}; - proto-lens-runtime = self.callHackageDirect { - pkg = "proto-lens-runtime"; - ver = "0.5.0.0"; - sha256 = "15prbfk10xkb2q5ij5dajbcjwgbkw26h34i330kf3867h0mprs08"; - } {}; - proto-lens-setup = self.callHackageDirect { - pkg = "proto-lens-setup"; - ver = "0.4.0.2"; - sha256 = "17lhdp6pcpk2ifcmnafr39150740ayjnyfbwvjc8wvbmlrd47d1n"; - } {}; - proto-lens-arbitrary = self.callHackageDirect { - pkg = "proto-lens-arbitrary"; - ver = "0.1.2.6"; - sha256 = "17hksng65gdyg0rabv5xnfgwdv1vsq7sph3fwyq9wmgfk4dzxf3r"; - } {}; # dependency of avl-auth # marked as broken, fails with some `ld` error - xxhash = - let - # from recent nixpkgs - unmarkBroken = drv: pkgs.haskell.lib.overrideCabal drv (drv: { broken = false; }); - in - unmarkBroken super.xxhash; + xxhash = self.unmarkBroken super.xxhash; }; localOverrides = self: super: From fb785576e5d0254510fb5fcfd9bd1240d3534974 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 9 Nov 2019 01:34:09 +0000 Subject: [PATCH 09/24] Fix attribute --- default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.nix b/default.nix index a52410f9..bf40091b 100644 --- a/default.nix +++ b/default.nix @@ -37,7 +37,7 @@ let # dependency of avl-auth # marked as broken, fails with some `ld` error - xxhash = self.unmarkBroken super.xxhash; + xxhash = pkgs.haskell.lib.unmarkBroken super.xxhash; }; localOverrides = self: super: From 7e26dc9fc138a0eee0054dd0e92594fae48960af Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 9 Nov 2019 02:18:44 +0000 Subject: [PATCH 10/24] Fix build --- default.nix | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/default.nix b/default.nix index bf40091b..0cfc9e76 100644 --- a/default.nix +++ b/default.nix @@ -7,11 +7,13 @@ let }) { inherit config; }; packages = { - hs-abci-example = ./hs-abci-example; hs-abci-extra = ./hs-abci-extra; + hs-abci-sdk = ./hs-abci-sdk; hs-abci-server = ./hs-abci-server; hs-abci-types = ./hs-abci-types; hs-tendermint-client = ./hs-tendermint-client; + nameservice = ./hs-abci-examples/nameservice; + simple-storage = ./hs-abci-examples/simple-storage; }; repos = { @@ -29,15 +31,22 @@ let extra-build-inputs = with pkgs; { hs-abci-types = [protobuf]; + simple-storage = [protobuf]; }; addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; hackageOverrides = self: super: { - - # dependency of avl-auth - # marked as broken, fails with some `ld` error - xxhash = pkgs.haskell.lib.unmarkBroken super.xxhash; + polysemy-plugin = self.callHackageDirect { + pkg = "polysemy-plugin"; + ver = "0.2.4.0"; + sha256 = "1bjngyns49j76hgvw3220l9sns554jkqqc9y00dc3pfnik7hva56"; + } {}; + polysemy = self.callHackageDirect { + pkg = "polysemy"; + ver = "1.2.0.0"; + sha256 = "1ih4n468h9g2pdiqg292g20r43a6z1qsbnbvi1hns6nbhwddibzd"; + } {}; }; localOverrides = self: super: @@ -59,6 +68,12 @@ let haskellPackages = pkgs.haskellPackages.override { overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ overrides + (self: super: { + # https://github.com/haskell-haskey/xxhash-ffi/issues/2 + avl-auth = pkgs.haskell.lib.dontCheck super.avl-auth; + hs-tendermint-client = pkgs.haskell.lib.dontCheck super.hs-tendermint-client; + simple-storage = pkgs.haskell.lib.dontCheck super.simple-storage; + }) ]; }; }; @@ -69,11 +84,13 @@ in { packages = { inherit (pkgs.haskellPackages) - #hs-abci-example hs-abci-extra + hs-abci-sdk hs-abci-server hs-abci-types hs-tendermint-client + nameservice + simple-storage ; }; } From 7a1358ea4dc2a28e52022bf4f1f12cb7e40ebfbc Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 4 Apr 2020 22:01:32 +0100 Subject: [PATCH 11/24] Update --- .gitignore | 4 ++ default.nix | 108 +++++++++++++++++++++++++++++++++++++++++-------- iavl.nix | 15 +++++++ tendermint.nix | 15 +++++++ 4 files changed, 126 insertions(+), 16 deletions(-) create mode 100644 iavl.nix create mode 100644 tendermint.nix diff --git a/.gitignore b/.gitignore index a34344d7..3fcd391a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,9 @@ .ci-bins/ *.dump-hi +# cabal +dist-newstyle + # nix +result* result-* diff --git a/default.nix b/default.nix index 0cfc9e76..b00d5352 100644 --- a/default.nix +++ b/default.nix @@ -1,19 +1,24 @@ { }: let pkgs = import (builtins.fetchTarball { - name = "nixpkgs-PR-71165"; - url = https://github.com/nixos/nixpkgs/archive/e3b740516f05307b55bcdb7e46c5d55da5fe0443.tar.gz; - sha256 = "0ssl12nl3n5bp23yng3naji0yw012a12xb2sa8kwdp2ln0qf8mcy"; + name = "release-19.09"; + url = https://github.com/nixos/nixpkgs/archive/64a3ccb852d4f34abb015503affd845ef03cc0d9.tar.gz; + sha256 = "0jigsyxlwl5hmsls4bqib0rva41biki6mwnswgmigwq41v6q7k94"; }) { inherit config; }; + iavl = pkgs.callPackage ./iavl.nix {}; + tendermint = pkgs.callPackage ./tendermint.nix {}; + packages = { hs-abci-extra = ./hs-abci-extra; hs-abci-sdk = ./hs-abci-sdk; hs-abci-server = ./hs-abci-server; + hs-abci-test-utils = ./hs-abci-test-utils; hs-abci-types = ./hs-abci-types; + hs-iavl-client = ./hs-iavl-client; hs-tendermint-client = ./hs-tendermint-client; - nameservice = ./hs-abci-examples/nameservice; - simple-storage = ./hs-abci-examples/simple-storage; + nameservice = ./hs-abci-docs/nameservice; + simple-storage = ./hs-abci-docs/simple-storage; }; repos = { @@ -23,29 +28,64 @@ let rev = "dfc468845a82cdd7d759943b20853999bc026505"; sha256 = "005j98hmzzh9ybd8wb073i47nwvv1hfh844vv4kflba3m8d75d80"; }; + http2-client-grpc = pkgs.fetchFromGitHub { + owner = "lucasdicioccio"; + repo = "http2-client-grpc"; + rev = "6a1aacfc18e312ef57552133f13dd1024c178706"; + sha256 = "0zqzxd6x3hlhhhq24pybjy18m0r66d9rddl9f2zk4g5k5g0zl906"; + }; }; repoPackages = { - inherit (repos) avl-auth; + inherit (repos) avl-auth http2-client-grpc; }; extra-build-inputs = with pkgs; { + hs-abci-sdk = [protobuf iavl]; hs-abci-types = [protobuf]; - simple-storage = [protobuf]; + hs-iavl-client = [protobuf iavl]; + simple-storage = [protobuf iavl tendermint]; + hs-tendermint-client = [tendermint]; }; addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; hackageOverrides = self: super: { + polysemy = self.callHackageDirect { + pkg = "polysemy"; + ver = "1.2.3.0"; + sha256 = "1smqaj57hkz5ldv5mr636lw6kxxsfn1yq0mbf8cy2c4417d6hyhm"; + } {}; + + # polysemy-plugin 0.2.3.0 has doctest errors polysemy-plugin = self.callHackageDirect { pkg = "polysemy-plugin"; ver = "0.2.4.0"; sha256 = "1bjngyns49j76hgvw3220l9sns554jkqqc9y00dc3pfnik7hva56"; } {}; - polysemy = self.callHackageDirect { - pkg = "polysemy"; - ver = "1.2.0.0"; - sha256 = "1ih4n468h9g2pdiqg292g20r43a6z1qsbnbvi1hns6nbhwddibzd"; + + polysemy-zoo = self.callHackageDirect { + pkg = "polysemy-zoo"; + ver = "0.6.0.0"; + sha256 = "1p0qd1zgnvx7l5m6bjhy9qn6dqdyyfz6c1zb79jggp4lrmjplp7j"; + } {}; + + prometheus = self.callHackageDirect { + pkg = "prometheus"; + ver = "2.1.3"; + sha256 = "04w3cm6r6dh284mg1lpzj4sl6d30ap3idkkdjzck3vcy5p788554"; + } {}; + + proto3-suite = self.callHackageDirect { + pkg = "proto3-suite"; + ver = "0.4.0.0"; + sha256 = "1s2n9h28j8rk9h041pkl4snkrx1ir7d9f3zwnj25an2xmhg5l0fj"; + } {}; + + proto3-wire = self.callHackageDirect { + pkg = "proto3-wire"; + ver = "1.1.0"; + sha256 = "0z8ifpl9vxngd2qaqj6bgg68z52m5i1shhd6j072g3mfdmiin0kv"; } {}; }; @@ -63,16 +103,50 @@ let in builtins.mapAttrs (name: pkg: pkg.overrideAttrs (addBuildInputs (extra-build-inputs.${name} or []))) allOverrides; + keplerTests = pkg: { runIavl ? false, runABCI ? null, runTendermint ? null}: pkgs.lib.overrideDerivation pkg (drv: + let + iavl = '' + iavlserver -db-name "test" -datadir "." -grpc-endpoint "0.0.0.0:8090" -gateway-endpoint "0.0.0.0:8091" & + sleep 3 + ''; + abci = '' + ${runABCI} & + sleep 3 + ''; + tendermint = '' + tendermint init --home $TMPDIR + tendermint node --home $TMPDIR --proxy_app=${runTendermint} & + sleep 3 + ''; + in { + checkPhase = pkgs.lib.concatStrings [ + (pkgs.lib.optionalString runIavl iavl) + (pkgs.lib.optionalString (runABCI != null) abci) + (pkgs.lib.optionalString (runTendermint != null) tendermint) + drv.checkPhase + ]; + }); + config = { packageOverrides = pkgs: { haskellPackages = pkgs.haskellPackages.override { overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ overrides (self: super: { - # https://github.com/haskell-haskey/xxhash-ffi/issues/2 - avl-auth = pkgs.haskell.lib.dontCheck super.avl-auth; - hs-tendermint-client = pkgs.haskell.lib.dontCheck super.hs-tendermint-client; - simple-storage = pkgs.haskell.lib.dontCheck super.simple-storage; + avl-auth = pkgs.haskell.lib.dontCheck super.avl-auth; # https://github.com/haskell-haskey/xxhash-ffi/issues/2 + bloodhound = pkgs.haskell.lib.doJailbreak (pkgs.haskell.lib.unmarkBroken super.bloodhound); # tight bounds + katip-elasticsearch = pkgs.haskell.lib.dontCheck (pkgs.haskell.lib.unmarkBroken super.katip-elasticsearch); # needs elastic-search for tests + proto3-suite = pkgs.haskell.lib.dontCheck super.proto3-suite; # needs old 'tasty' + + hs-tendermint-client = keplerTests super.hs-tendermint-client { runTendermint = "kvstore"; }; + hs-iavl-client = keplerTests super.hs-iavl-client { runIavl = true; }; + hs-abci-sdk = keplerTests super.hs-abci-sdk { runIavl = true; }; + simple-storage = keplerTests super.simple-storage { + runIavl = true; + runABCI = "IAVL_HOST=localhost IAVL_PORT=8090 dist/build/simple-storage/simple-storage"; + runTendermint= "tcp://localhost:26658"; + }; + nameservice = pkgs.haskell.lib.dontCheck super.nameservice; # TODO }) ]; }; @@ -80,14 +154,16 @@ let }; in { - inherit overrides; + inherit pkgs overrides; packages = { inherit (pkgs.haskellPackages) hs-abci-extra hs-abci-sdk hs-abci-server + hs-abci-test-utils hs-abci-types + hs-iavl-client hs-tendermint-client nameservice simple-storage diff --git a/iavl.nix b/iavl.nix new file mode 100644 index 00000000..8ade04f7 --- /dev/null +++ b/iavl.nix @@ -0,0 +1,15 @@ +{ stdenv, fetchFromGitHub, buildGoModule }: + +buildGoModule rec { + pname = "iavl"; + version = "0.12.4"; + + src = fetchFromGitHub { + owner = "tendermint"; + repo = pname; + rev = "de73d47fa87401bd935dffe3eca93ddaf0e3e105"; + sha256 = "1phf9jacgh30n4vgm5grncmk1yn80x32l7gpnlbscimmizyhrdl5"; + }; + + modSha256 = "1czpf180drwi7i3v8n6kwbx7sm68nbyjm09x73ddfj7wk0dyqw1q"; +} diff --git a/tendermint.nix b/tendermint.nix new file mode 100644 index 00000000..4d26b8c3 --- /dev/null +++ b/tendermint.nix @@ -0,0 +1,15 @@ +{ stdenv, fetchFromGitHub, buildGoModule }: + +buildGoModule rec { + pname = "tendermint"; + version = "0.32.8"; + + src = fetchFromGitHub { + owner = "tendermint"; + repo = pname; + rev = "v${version}"; + sha256 = "1bk9hb8whvlvxn8ijrp7rg6m83wxj4ipp5v36yr47ibqirbngh5s"; + }; + + modSha256 = "08f03haxzpi57gaxymsbzs0nbbgnf6z4gmpal476xy3gvc0dyi3r"; +} From c126a21ef19450ccc87f0cdfc9340740cfa2f0f4 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 4 Apr 2020 22:14:23 +0100 Subject: [PATCH 12/24] Make things a bit less fragile --- default.nix | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/default.nix b/default.nix index b00d5352..06710a4e 100644 --- a/default.nix +++ b/default.nix @@ -41,11 +41,10 @@ let }; extra-build-inputs = with pkgs; { - hs-abci-sdk = [protobuf iavl]; + hs-abci-sdk = [protobuf]; hs-abci-types = [protobuf]; - hs-iavl-client = [protobuf iavl]; - simple-storage = [protobuf iavl tendermint]; - hs-tendermint-client = [tendermint]; + hs-iavl-client = [protobuf]; + simple-storage = [protobuf]; }; addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; @@ -105,24 +104,24 @@ let keplerTests = pkg: { runIavl ? false, runABCI ? null, runTendermint ? null}: pkgs.lib.overrideDerivation pkg (drv: let - iavl = '' - iavlserver -db-name "test" -datadir "." -grpc-endpoint "0.0.0.0:8090" -gateway-endpoint "0.0.0.0:8091" & + iavlScript = '' + ${iavl}/bin/iavlserver -db-name "test" -datadir "." -grpc-endpoint "0.0.0.0:8090" -gateway-endpoint "0.0.0.0:8091" & sleep 3 ''; - abci = '' + abciScript = '' ${runABCI} & sleep 3 ''; - tendermint = '' - tendermint init --home $TMPDIR - tendermint node --home $TMPDIR --proxy_app=${runTendermint} & + tendermintScript = '' + ${tendermint}/bin/tendermint init --home $TMPDIR + ${tendermint}/bin/tendermint node --home $TMPDIR --proxy_app=${runTendermint} & sleep 3 ''; in { checkPhase = pkgs.lib.concatStrings [ - (pkgs.lib.optionalString runIavl iavl) - (pkgs.lib.optionalString (runABCI != null) abci) - (pkgs.lib.optionalString (runTendermint != null) tendermint) + (pkgs.lib.optionalString runIavl iavlScript) + (pkgs.lib.optionalString (runABCI != null) abciScript) + (pkgs.lib.optionalString (runTendermint != null) tendermintScript) drv.checkPhase ]; }); @@ -138,7 +137,7 @@ let katip-elasticsearch = pkgs.haskell.lib.dontCheck (pkgs.haskell.lib.unmarkBroken super.katip-elasticsearch); # needs elastic-search for tests proto3-suite = pkgs.haskell.lib.dontCheck super.proto3-suite; # needs old 'tasty' - hs-tendermint-client = keplerTests super.hs-tendermint-client { runTendermint = "kvstore"; }; + hs-tendermint-client = pkgs.haskell.lib.dontCheck super.hs-tendermint-client; # last test fails frequently hs-iavl-client = keplerTests super.hs-iavl-client { runIavl = true; }; hs-abci-sdk = keplerTests super.hs-abci-sdk { runIavl = true; }; simple-storage = keplerTests super.simple-storage { From a0f0d487e1d3be63dea737c6a62c934d35260f0d Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 4 Apr 2020 22:31:19 +0100 Subject: [PATCH 13/24] Expose nixpkgs overlay --- default.nix | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/default.nix b/default.nix index 06710a4e..65df90c2 100644 --- a/default.nix +++ b/default.nix @@ -4,7 +4,7 @@ let name = "release-19.09"; url = https://github.com/nixos/nixpkgs/archive/64a3ccb852d4f34abb015503affd845ef03cc0d9.tar.gz; sha256 = "0jigsyxlwl5hmsls4bqib0rva41biki6mwnswgmigwq41v6q7k94"; - }) { inherit config; }; + }) { inherit overlays; }; iavl = pkgs.callPackage ./iavl.nix {}; tendermint = pkgs.callPackage ./tendermint.nix {}; @@ -102,7 +102,7 @@ let in builtins.mapAttrs (name: pkg: pkg.overrideAttrs (addBuildInputs (extra-build-inputs.${name} or []))) allOverrides; - keplerTests = pkg: { runIavl ? false, runABCI ? null, runTendermint ? null}: pkgs.lib.overrideDerivation pkg (drv: + keplerTests = pkg: { runIavl ? false, runABCI ? null, runTendermint ? null }: pkgs.lib.overrideDerivation pkg (drv: let iavlScript = '' ${iavl}/bin/iavlserver -db-name "test" -datadir "." -grpc-endpoint "0.0.0.0:8090" -gateway-endpoint "0.0.0.0:8091" & @@ -126,9 +126,9 @@ let ]; }); - config = { - packageOverrides = pkgs: { - haskellPackages = pkgs.haskellPackages.override { + overlay = self: super: { + haskellPackages = + super.haskellPackages.override (old: { overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ overrides (self: super: { @@ -146,14 +146,16 @@ let runTendermint= "tcp://localhost:26658"; }; nameservice = pkgs.haskell.lib.dontCheck super.nameservice; # TODO - }) - ]; - }; - }; + } + ) + ]; + }); }; + overlays = [overlay]; + in { - inherit pkgs overrides; + inherit pkgs overlays; packages = { inherit (pkgs.haskellPackages) From 31400578beff4a30d015bb08cedff2385c05ea4a Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 4 Apr 2020 22:34:35 +0100 Subject: [PATCH 14/24] Cleanup --- default.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/default.nix b/default.nix index 65df90c2..099c49cf 100644 --- a/default.nix +++ b/default.nix @@ -131,13 +131,13 @@ let super.haskellPackages.override (old: { overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ overrides - (self: super: { - avl-auth = pkgs.haskell.lib.dontCheck super.avl-auth; # https://github.com/haskell-haskey/xxhash-ffi/issues/2 - bloodhound = pkgs.haskell.lib.doJailbreak (pkgs.haskell.lib.unmarkBroken super.bloodhound); # tight bounds - katip-elasticsearch = pkgs.haskell.lib.dontCheck (pkgs.haskell.lib.unmarkBroken super.katip-elasticsearch); # needs elastic-search for tests - proto3-suite = pkgs.haskell.lib.dontCheck super.proto3-suite; # needs old 'tasty' + (self: super: with pkgs.haskell.lib; { + avl-auth = dontCheck super.avl-auth; # https://github.com/haskell-haskey/xxhash-ffi/issues/2 + bloodhound = doJailbreak (unmarkBroken super.bloodhound); # tight bounds + katip-elasticsearch = dontCheck (unmarkBroken super.katip-elasticsearch); # needs elastic-search for tests + proto3-suite = dontCheck super.proto3-suite; # needs old 'tasty' - hs-tendermint-client = pkgs.haskell.lib.dontCheck super.hs-tendermint-client; # last test fails frequently + hs-tendermint-client = dontCheck super.hs-tendermint-client; # last test fails frequently hs-iavl-client = keplerTests super.hs-iavl-client { runIavl = true; }; hs-abci-sdk = keplerTests super.hs-abci-sdk { runIavl = true; }; simple-storage = keplerTests super.simple-storage { @@ -145,7 +145,7 @@ let runABCI = "IAVL_HOST=localhost IAVL_PORT=8090 dist/build/simple-storage/simple-storage"; runTendermint= "tcp://localhost:26658"; }; - nameservice = pkgs.haskell.lib.dontCheck super.nameservice; # TODO + nameservice = dontCheck super.nameservice; # TODO } ) ]; From fa0a058540c070bc5906d6428bb00a6f34df23fc Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 4 Apr 2020 22:35:49 +0100 Subject: [PATCH 15/24] Don't ignore other overlays --- default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 099c49cf..fedf8e2c 100644 --- a/default.nix +++ b/default.nix @@ -129,7 +129,7 @@ let overlay = self: super: { haskellPackages = super.haskellPackages.override (old: { - overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (_: _: {}) [ + overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (old.overrides or (_: _: {})) [ overrides (self: super: with pkgs.haskell.lib; { avl-auth = dontCheck super.avl-auth; # https://github.com/haskell-haskey/xxhash-ffi/issues/2 From d042c3a780a75d67e5b42fbc3b56a8992443b998 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sat, 4 Apr 2020 22:56:58 +0100 Subject: [PATCH 16/24] Add iavl and tendermint to overlay --- default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/default.nix b/default.nix index fedf8e2c..48f5ce09 100644 --- a/default.nix +++ b/default.nix @@ -127,6 +127,8 @@ let }); overlay = self: super: { + inherit iavl tendermint; + haskellPackages = super.haskellPackages.override (old: { overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (old.overrides or (_: _: {})) [ From ba5500b8170dbdc10995f658ac2ee0228fc2fde4 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Fri, 17 Apr 2020 01:34:49 +0100 Subject: [PATCH 17/24] Add 'nix' directory --- iavl.nix => nix/iavl.nix | 0 shell-stack.nix => nix/stack.nix | 0 tendermint.nix => nix/tendermint.nix | 0 stack.yaml | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) rename iavl.nix => nix/iavl.nix (100%) rename shell-stack.nix => nix/stack.nix (100%) rename tendermint.nix => nix/tendermint.nix (100%) diff --git a/iavl.nix b/nix/iavl.nix similarity index 100% rename from iavl.nix rename to nix/iavl.nix diff --git a/shell-stack.nix b/nix/stack.nix similarity index 100% rename from shell-stack.nix rename to nix/stack.nix diff --git a/tendermint.nix b/nix/tendermint.nix similarity index 100% rename from tendermint.nix rename to nix/tendermint.nix diff --git a/stack.yaml b/stack.yaml index 921ef17e..44c8ec4b 100644 --- a/stack.yaml +++ b/stack.yaml @@ -3,7 +3,7 @@ resolver: lts-14.11 nix: #enabled: bool # defaults to true on nixos, false everywhere else - shell-file: shell-stack.nix + shell-file: nix/stack.nix packages: - ./hs-abci-types From 002a02c798762fc0feb81afdee916cb64f3712f7 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Fri, 17 Apr 2020 01:43:42 +0100 Subject: [PATCH 18/24] Fix stack's nix integration --- nix/stack.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/stack.nix b/nix/stack.nix index d20eb9c9..2d737535 100644 --- a/nix/stack.nix +++ b/nix/stack.nix @@ -10,5 +10,5 @@ with nixpkgs; haskell.lib.buildStackProject { inherit ghc; name = "hs-abci"; - buildInputs = [ git hlint protobuf haskellPackages.stylish-haskell zlib ]; + buildInputs = [ git hlint protobuf secp256k1 haskellPackages.stylish-haskell zlib ]; } From 2a25c61562d4ab3b6018c72651e8fc702f5b8e4c Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Fri, 17 Apr 2020 01:57:33 +0100 Subject: [PATCH 19/24] Rename file --- default.nix => nix/project.nix | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename default.nix => nix/project.nix (93%) diff --git a/default.nix b/nix/project.nix similarity index 93% rename from default.nix rename to nix/project.nix index 48f5ce09..22552138 100644 --- a/default.nix +++ b/nix/project.nix @@ -10,15 +10,15 @@ let tendermint = pkgs.callPackage ./tendermint.nix {}; packages = { - hs-abci-extra = ./hs-abci-extra; - hs-abci-sdk = ./hs-abci-sdk; - hs-abci-server = ./hs-abci-server; - hs-abci-test-utils = ./hs-abci-test-utils; - hs-abci-types = ./hs-abci-types; - hs-iavl-client = ./hs-iavl-client; - hs-tendermint-client = ./hs-tendermint-client; - nameservice = ./hs-abci-docs/nameservice; - simple-storage = ./hs-abci-docs/simple-storage; + hs-abci-extra = ../hs-abci-extra; + hs-abci-sdk = ../hs-abci-sdk; + hs-abci-server = ../hs-abci-server; + hs-abci-test-utils = ../hs-abci-test-utils; + hs-abci-types = ../hs-abci-types; + hs-iavl-client = ../hs-iavl-client; + hs-tendermint-client = ../hs-tendermint-client; + nameservice = ../hs-abci-docs/nameservice; + simple-storage = ../hs-abci-docs/simple-storage; }; repos = { From d9cba01ae36059e5addb6c6dca8efd911108367e Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Fri, 17 Apr 2020 04:05:38 +0100 Subject: [PATCH 20/24] Add nix dev shell --- cabal.project | 2 ++ nix/default.nix | 1 + nix/project.nix | 12 +++++++++--- nix/shell.nix | 7 +++++++ nix/stack.nix | 17 +++++------------ 5 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 cabal.project create mode 100644 nix/default.nix create mode 100644 nix/shell.nix diff --git a/cabal.project b/cabal.project new file mode 100644 index 00000000..01a2635f --- /dev/null +++ b/cabal.project @@ -0,0 +1,2 @@ +packages: + */* \ No newline at end of file diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 00000000..385607d7 --- /dev/null +++ b/nix/default.nix @@ -0,0 +1 @@ +{}: (import ./project.nix {}).keplerPackages diff --git a/nix/project.nix b/nix/project.nix index 22552138..c77c47fd 100644 --- a/nix/project.nix +++ b/nix/project.nix @@ -156,11 +156,17 @@ let overlays = [overlay]; -in { +in rec { inherit pkgs overlays; - packages = { - inherit (pkgs.haskellPackages) + buildInputs = { + inherit (pkgs) iavl protobuf tendermint; + inherit (pkgs.haskellPackages) cabal-install ghcid hlint stack stylish-haskell weeder; + }; + + keplerPackages = keplerPackages' pkgs.haskellPackages; + keplerPackages' = p: with p; { + inherit hs-abci-extra hs-abci-sdk hs-abci-server diff --git a/nix/shell.nix b/nix/shell.nix new file mode 100644 index 00000000..7c22f052 --- /dev/null +++ b/nix/shell.nix @@ -0,0 +1,7 @@ +{}: +let project = (import ./project.nix {}); +in project.pkgs.haskellPackages.shellFor { + withHoogle = true; + packages = p: builtins.attrValues (project.keplerPackages' p); + nativeBuildInputs = builtins.attrValues project.buildInputs; +} diff --git a/nix/stack.nix b/nix/stack.nix index 2d737535..f028607f 100644 --- a/nix/stack.nix +++ b/nix/stack.nix @@ -1,14 +1,7 @@ -{ ghc -, nixpkgs ? import (builtins.fetchTarball { - name = "nixpkgs-PR-71165"; - url = https://github.com/nixos/nixpkgs/archive/e3b740516f05307b55bcdb7e46c5d55da5fe0443.tar.gz; - sha256 = "0ssl12nl3n5bp23yng3naji0yw012a12xb2sa8kwdp2ln0qf8mcy"; - }) {} -}: -with nixpkgs; - -haskell.lib.buildStackProject { +{ ghc }: +let project = import ./project.nix {}; +in with project.pkgs; haskell.lib.buildStackProject { inherit ghc; - name = "hs-abci"; - buildInputs = [ git hlint protobuf secp256k1 haskellPackages.stylish-haskell zlib ]; + name = "kepler"; + buildInputs = [ git secp256k1 zlib ] ++ builtins.attrValues project.buildInputs; } From 53c61d96e915ad43a9216e84a852f9cb88e642a6 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Fri, 17 Apr 2020 04:13:05 +0100 Subject: [PATCH 21/24] Hide gitignored files from nix --- nix/project.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/nix/project.nix b/nix/project.nix index c77c47fd..6f48112d 100644 --- a/nix/project.nix +++ b/nix/project.nix @@ -6,6 +6,14 @@ let sha256 = "0jigsyxlwl5hmsls4bqib0rva41biki6mwnswgmigwq41v6q7k94"; }) { inherit overlays; }; + gitignore = pkgs.fetchFromGitHub { + owner = "hercules-ci"; + repo = "gitignore"; + rev = "f9e996052b5af4032fe6150bba4a6fe4f7b9d698"; + sha256 = "0jrh5ghisaqdd0vldbywags20m2cxpkbbk5jjjmwaw0gr8nhsafv"; + }; + gitignoreSource = (import gitignore {}).gitignoreSource; + iavl = pkgs.callPackage ./iavl.nix {}; tendermint = pkgs.callPackage ./tendermint.nix {}; @@ -89,7 +97,7 @@ let }; localOverrides = self: super: - builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) packages; + builtins.mapAttrs (name: path: (self.callCabal2nix name (gitignoreSource path) {})) packages; repoOverrides = self: super: builtins.mapAttrs (name: path: (self.callCabal2nix name path {})) repoPackages; From c72f16901459c24e5854a955df78ce15e66f009a Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sun, 10 May 2020 19:54:27 +0100 Subject: [PATCH 22/24] Disable tests on darwin --- nix/project.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nix/project.nix b/nix/project.nix index 6f48112d..4b0bfd68 100644 --- a/nix/project.nix +++ b/nix/project.nix @@ -110,7 +110,10 @@ let in builtins.mapAttrs (name: pkg: pkg.overrideAttrs (addBuildInputs (extra-build-inputs.${name} or []))) allOverrides; - keplerTests = pkg: { runIavl ? false, runABCI ? null, runTendermint ? null }: pkgs.lib.overrideDerivation pkg (drv: + # TODO: figure out why running tests on mac causes builds to hang _after_ running the tests + keplerTests = pkg: args: if pkgs.stdenv.isDarwin then pkgs.haskell.lib.dontCheck pkg else keplerTests' pkg args; + + keplerTests' = pkg: { runIavl ? false, runABCI ? null, runTendermint ? null }: pkgs.lib.overrideDerivation pkg (drv: let iavlScript = '' ${iavl}/bin/iavlserver -db-name "test" -datadir "." -grpc-endpoint "0.0.0.0:8090" -gateway-endpoint "0.0.0.0:8091" & From 66ea59381ce228dc4ea7621400cf5b95a64e74a7 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Wed, 29 Jul 2020 03:14:25 +0100 Subject: [PATCH 23/24] Fix github fields --- hs-abci-extra/package.yaml | 2 +- hs-abci-types/package.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hs-abci-extra/package.yaml b/hs-abci-extra/package.yaml index 48c320e6..c76e26b3 100644 --- a/hs-abci-extra/package.yaml +++ b/hs-abci-extra/package.yaml @@ -1,6 +1,6 @@ name: hs-abci-extra version: 0.1.0.0 -github: "https://github.com/f-o-a-m/kepler/hs-abci-server" +github: "f-o-a-m/kepler/hs-abci-extra" license: Apache author: "Martin Allen" maintainer: "martin@foam.space" diff --git a/hs-abci-types/package.yaml b/hs-abci-types/package.yaml index 30c30874..998b7dca 100644 --- a/hs-abci-types/package.yaml +++ b/hs-abci-types/package.yaml @@ -1,6 +1,6 @@ name: hs-abci-types version: 0.1.0.0 -github: "f-o-a-m/kepler//hs-abci-types" +github: "f-o-a-m/kepler/hs-abci-types" license: Apache author: "Martin Allen" maintainer: "martin@foam.space" From cd297356d246ec6f1ea92a69c196342984bafac3 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Sun, 16 Aug 2020 00:26:22 +0100 Subject: [PATCH 24/24] Fix build --- hs-abci-docs/nameservice/package.yaml | 2 +- hs-abci-docs/simple-storage/package.yaml | 2 +- nix/iavl.nix | 2 +- nix/project.nix | 96 ++++++++++++------------ nix/tendermint.nix | 2 +- 5 files changed, 53 insertions(+), 51 deletions(-) diff --git a/hs-abci-docs/nameservice/package.yaml b/hs-abci-docs/nameservice/package.yaml index 5ef40654..22d283ab 100644 --- a/hs-abci-docs/nameservice/package.yaml +++ b/hs-abci-docs/nameservice/package.yaml @@ -1,6 +1,6 @@ name: nameservice version: 0.1.0.0 -github: "f-o-a-m/kepler/hs-abci-docs/nameservice" +# github: "f-o-a-m/kepler/hs-abci-docs/nameservice" license: Apache author: "Martin Allen" maintainer: "martin@foam.space" diff --git a/hs-abci-docs/simple-storage/package.yaml b/hs-abci-docs/simple-storage/package.yaml index e351c13c..853eabd0 100644 --- a/hs-abci-docs/simple-storage/package.yaml +++ b/hs-abci-docs/simple-storage/package.yaml @@ -1,6 +1,6 @@ name: simple-storage version: 0.1.0.0 -github: "f-o-a-m/kepler/hs-abci-docs/simple-storage" +# github: "f-o-a-m/kepler/hs-abci-docs/simple-storage" license: Apache author: Martin Allen maintainer: "martin@foam.space" diff --git a/nix/iavl.nix b/nix/iavl.nix index 8ade04f7..baebd58f 100644 --- a/nix/iavl.nix +++ b/nix/iavl.nix @@ -11,5 +11,5 @@ buildGoModule rec { sha256 = "1phf9jacgh30n4vgm5grncmk1yn80x32l7gpnlbscimmizyhrdl5"; }; - modSha256 = "1czpf180drwi7i3v8n6kwbx7sm68nbyjm09x73ddfj7wk0dyqw1q"; + vendorSha256 = "1ra1v9x53f1rc9zsz42x0x5gqf7z5qccg71xp8prpjjzkzwh4cy1"; } diff --git a/nix/project.nix b/nix/project.nix index 4b0bfd68..fe4b751d 100644 --- a/nix/project.nix +++ b/nix/project.nix @@ -1,9 +1,9 @@ { }: let pkgs = import (builtins.fetchTarball { - name = "release-19.09"; - url = https://github.com/nixos/nixpkgs/archive/64a3ccb852d4f34abb015503affd845ef03cc0d9.tar.gz; - sha256 = "0jigsyxlwl5hmsls4bqib0rva41biki6mwnswgmigwq41v6q7k94"; + name = "master"; + url = https://github.com/nixos/nixpkgs/archive/7fd5059f58dd5c50975579e2e87ca1294bbc845a.tar.gz; + sha256 = "0b4q30vrzmh40w3k37yzdiyl9fmh40qfjfa922mv9lfv1rmcbdrv"; }) { inherit overlays; }; gitignore = pkgs.fetchFromGitHub { @@ -17,16 +17,18 @@ let iavl = pkgs.callPackage ./iavl.nix {}; tendermint = pkgs.callPackage ./tendermint.nix {}; + root = ../.; + packages = { - hs-abci-extra = ../hs-abci-extra; - hs-abci-sdk = ../hs-abci-sdk; - hs-abci-server = ../hs-abci-server; - hs-abci-test-utils = ../hs-abci-test-utils; - hs-abci-types = ../hs-abci-types; - hs-iavl-client = ../hs-iavl-client; - hs-tendermint-client = ../hs-tendermint-client; - nameservice = ../hs-abci-docs/nameservice; - simple-storage = ../hs-abci-docs/simple-storage; + hs-abci-extra = root + /hs-abci-extra; + hs-abci-sdk = root + /hs-abci-sdk; + hs-abci-server = root + /hs-abci-server; + hs-abci-test-utils = root + /hs-abci-test-utils; + hs-abci-types = root + /hs-abci-types; + hs-iavl-client = root + /hs-iavl-client; + hs-tendermint-client = root + /hs-tendermint-client; + nameservice = root + /hs-abci-docs/nameservice; + simple-storage = root + /hs-abci-docs/simple-storage; }; repos = { @@ -36,16 +38,28 @@ let rev = "dfc468845a82cdd7d759943b20853999bc026505"; sha256 = "005j98hmzzh9ybd8wb073i47nwvv1hfh844vv4kflba3m8d75d80"; }; - http2-client-grpc = pkgs.fetchFromGitHub { - owner = "lucasdicioccio"; - repo = "http2-client-grpc"; - rev = "6a1aacfc18e312ef57552133f13dd1024c178706"; - sha256 = "0zqzxd6x3hlhhhq24pybjy18m0r66d9rddl9f2zk4g5k5g0zl906"; + http2-grpc-haskell = pkgs.fetchFromGitHub { + owner = "haskell-grpc-native"; + repo = "http2-grpc-haskell"; + rev = "496e92bc967eff02ac3698ba12ba2dfe38bc8b74"; + sha256 = "199nz6dpqlzg9jyc0kq1har0l2zididpi2wkriai6cn91s7fc3my"; + }; + proto3-suite = pkgs.fetchFromGitHub { + owner = "awakesecurity"; + repo = "proto3-suite"; + rev = "45950a3860cbcb3f3177e9725dbdf460d6da9d45"; + sha256 = "1fm0a5i9q9p393c9if6n6nz0q7di0p1fjx262fyj7j20nnl3f9i3"; + }; + proto3-wire = pkgs.fetchFromGitHub { + owner = "awakesecurity"; + repo = "proto3-wire"; + rev = "5df56fe1ad26a18b1dfbb2a5b8d35b4c1ad63f53"; + sha256 = "1d2ir9ds4vawrn6lkxqgyw9zg8h2l4d6m8ihhy6znjllh12fmjyp"; }; }; repoPackages = { - inherit (repos) avl-auth http2-client-grpc; + inherit (repos) avl-auth proto3-suite proto3-wire; }; extra-build-inputs = with pkgs; { @@ -58,42 +72,21 @@ let addBuildInputs = inputs: { buildInputs ? [], ... }: { buildInputs = inputs ++ buildInputs; }; hackageOverrides = self: super: { - polysemy = self.callHackageDirect { - pkg = "polysemy"; - ver = "1.2.3.0"; - sha256 = "1smqaj57hkz5ldv5mr636lw6kxxsfn1yq0mbf8cy2c4417d6hyhm"; - } {}; + ghc-tcplugins-extra = self.callHackage "ghc-tcplugins-extra" "0.3.2" {}; - # polysemy-plugin 0.2.3.0 has doctest errors - polysemy-plugin = self.callHackageDirect { - pkg = "polysemy-plugin"; - ver = "0.2.4.0"; - sha256 = "1bjngyns49j76hgvw3220l9sns554jkqqc9y00dc3pfnik7hva56"; - } {}; + http2-client = pkgs.haskell.lib.doJailbreak super.http2-client; + http2-client-grpc = self.callCabal2nix "http2-client-grpc" (repos.http2-grpc-haskell + /http2-client-grpc) {}; + http2-grpc-proto-lens = self.callCabal2nix "http2-grpc-proto-lens" (repos.http2-grpc-haskell + /http2-grpc-proto-lens) {}; - polysemy-zoo = self.callHackageDirect { - pkg = "polysemy-zoo"; - ver = "0.6.0.0"; - sha256 = "1p0qd1zgnvx7l5m6bjhy9qn6dqdyyfz6c1zb79jggp4lrmjplp7j"; - } {}; + polysemy = self.callHackage "polysemy" "1.3.0.0" {}; + polysemy-plugin = self.callHackage "polysemy-plugin" "0.2.5.0" {}; + polysemy-zoo = self.callHackage "polysemy-zoo" "0.7.0.0" {}; prometheus = self.callHackageDirect { pkg = "prometheus"; ver = "2.1.3"; sha256 = "04w3cm6r6dh284mg1lpzj4sl6d30ap3idkkdjzck3vcy5p788554"; } {}; - - proto3-suite = self.callHackageDirect { - pkg = "proto3-suite"; - ver = "0.4.0.0"; - sha256 = "1s2n9h28j8rk9h041pkl4snkrx1ir7d9f3zwnj25an2xmhg5l0fj"; - } {}; - - proto3-wire = self.callHackageDirect { - pkg = "proto3-wire"; - ver = "1.1.0"; - sha256 = "0z8ifpl9vxngd2qaqj6bgg68z52m5i1shhd6j072g3mfdmiin0kv"; - } {}; }; localOverrides = self: super: @@ -145,6 +138,13 @@ let overrides = pkgs.lib.foldr pkgs.lib.composeExtensions (old.overrides or (_: _: {})) [ overrides (self: super: with pkgs.haskell.lib; { + http2-client = unmarkBroken super.http2-client; + parameterized = dontCheck (unmarkBroken super.parameterized); + + # https://github.com/NixOS/nixpkgs/pull/82562 + secp256k1 = null; + secp256k1-haskell = addPkgconfigDepend (self.callHackage "secp256k1-haskell" "0.1.8" {}) pkgs.secp256k1; + avl-auth = dontCheck super.avl-auth; # https://github.com/haskell-haskey/xxhash-ffi/issues/2 bloodhound = doJailbreak (unmarkBroken super.bloodhound); # tight bounds katip-elasticsearch = dontCheck (unmarkBroken super.katip-elasticsearch); # needs elastic-search for tests @@ -153,12 +153,14 @@ let hs-tendermint-client = dontCheck super.hs-tendermint-client; # last test fails frequently hs-iavl-client = keplerTests super.hs-iavl-client { runIavl = true; }; hs-abci-sdk = keplerTests super.hs-abci-sdk { runIavl = true; }; + simple-storage = keplerTests super.simple-storage { runIavl = true; runABCI = "IAVL_HOST=localhost IAVL_PORT=8090 dist/build/simple-storage/simple-storage"; runTendermint= "tcp://localhost:26658"; }; - nameservice = dontCheck super.nameservice; # TODO + + nameservice = dontCheck super.nameservice; } ) ]; diff --git a/nix/tendermint.nix b/nix/tendermint.nix index 4d26b8c3..8705735d 100644 --- a/nix/tendermint.nix +++ b/nix/tendermint.nix @@ -11,5 +11,5 @@ buildGoModule rec { sha256 = "1bk9hb8whvlvxn8ijrp7rg6m83wxj4ipp5v36yr47ibqirbngh5s"; }; - modSha256 = "08f03haxzpi57gaxymsbzs0nbbgnf6z4gmpal476xy3gvc0dyi3r"; + vendorSha256 = "1vhd3s6yxfhirgipxcy0rh8sk55cdzirr8n8r31sijgyak92mq0l"; }