on master help sign in
Refactor targets to be used in test driver as well

And some other cleanups.

commit326bcda0d692ffa783701b14b19d8ff3e3c6c58e authorHarendra Kumar <harendra@composewell.com> dateTue 26 Apr 2022, 19:48 (4 years ago) parent693f5f5
11 files changed+250−54
.packcheck.ignore+4 benchmark/report/Main.hs+5−50 benchmark/report/cabal.project+1 benchmark/report/default.nix+2−1 benchmark/report/report.cabal+2 cabal.project.report+1 streamly.cabal+4−3 targets/Targets.hs+55 targets/cabal.project+1 targets/default.nix+163 targets/streamly-targets.cabal+12
.packcheck.ignore+4
@@ -9,6 +9,7 @@
99appveyor.yml
1010benchmark/bench-report/default.nix
1111benchmark/report/default.nix
12+benchmark/report/cabal.project
1213bin/ghc.sh
1314bin/run-ci.sh
1415bin/run-repl-quick.sh
@@ -18,9 +19,12 @@ cabal.project.doctest
1819cabal.project.ghc-head
1920cabal.project.hpc-coveralls
2021cabal.project.O0
22+cabal.project.report
2123cabal.project.Werror
2224cabal.project.Werror-nocode
2325default.nix
2426examples/README.md
2527hie.yaml
2628stack.yaml
29+targets/default.nix
30+targets/cabal.project
benchmark/report/Main.hs+5−50
@@ -1,4 +1,4 @@
1−module Main where
1+module Main (main) where
22
33import BenchRunner (mainWith)
44import BuildLib (Quickness(..))
@@ -7,52 +7,7 @@ import Data.List (isInfixOf, isPrefixOf, isSuffixOf)
77import Data.Map (Map)
88
99import qualified Data.Map as Map
10−
11−groupTargets :: Map String [String]
12−groupTargets =
13− Map.fromList
14− [ ( "base_stream_grp"
15− , [ "Data.Stream.StreamD"
16− , "Data.Stream.StreamK"
17− , "Data.Stream.StreamDK"
18− ])
19− , ("prelude_serial_grp", preludeSerialGrp)
20− , ("prelude_concurrent_grp", preludeConcurrentGrp)
21− , ( "prelude_other_grp"
22− , ["Prelude.Rate", "Prelude.Concurrent", "Prelude.Adaptive"])
23− , ( "array_grp"
24− , [ "Data.Array"
25− , "Data.Array.Foreign"
26− , "Data.Array.Prim"
27− , "Data.SmallArray"
28− , "Data.Array.Prim.Pinned"
29− ])
30− , ("base_parser_grp", ["Data.Parser.ParserD", "Data.Parser.ParserK"])
31− , ("parser_grp", ["Data.Fold", "Data.Parser"])
32− , ("list_grp ", [])
33− , ( "infinite_grp"
34− , preludeSerialGrp ++ preludeConcurrentGrp ++ ["Prelude.Rate"])
35− ]
36−
37− where
38−
39− preludeSerialGrp = ["Prelude.Serial", "Prelude.WSerial", "Prelude.ZipSerial"]
40− preludeConcurrentGrp =
41− [ "Prelude.Async"
42− , "Prelude.WAsync"
43− , "Prelude.Ahead"
44− , "Prelude.Parallel"
45− , "Prelude.ZipAsync"
46− ]
47−
48−individualTargets :: [String]
49−individualTargets =
50− [ "Data.Unfold"
51− , "Unicode.Stream"
52− , "Unicode.Char"
53− , "Unicode.Utf8"
54− , "FileSystem.Handle"
55− ]
10+import Targets
5611
5712comparisons :: Map String [String]
5813comparisons =
@@ -156,9 +111,9 @@ speedOpts exeName benchName0 = exeSpecific <|> benchSpecific
156111
157112 where
158113
159− slowestOf Quicker _ = Quicker
160− slowestOf _ Quicker = Quicker
161− slowestOf _ _ = SuperQuick
114+ -- slowestOf Quicker _ = Quicker
115+ -- slowestOf _ Quicker = Quicker
116+ -- slowestOf _ _ = SuperQuick
162117
163118 -- Drop All.
164119 benchName = drop 4 benchName0
benchmark/report/cabal.projectnew file+1
@@ -0,0 +1 @@
1+packages: ., ../../targets
benchmark/report/default.nix+2−1
@@ -43,12 +43,13 @@ let haskellPackages =
4343 with nixpkgs.haskell.lib;
4444 {
4545 report = mkPackage super "report" ./. "" inShell;
46+ streamly-targets = mkPackage super "streamly-targets" ../../targets "" false;
4647
4748 bench-report =
4849 nixpkgs.haskell.lib.overrideCabal
4950 (let src = fetchGit {
5051 url = "git@github.com:composewell/bench-report.git";
51− rev = "c11f79b202d812efe4d1785e0537f1ad4d947bfe";
52+ rev = "57d0ad221c74cdb2ce81646ab18300e8bb8e716b";
5253 }; in super.callCabal2nix "bench-report" src {})
5354 (old:
5455 { enableLibraryProfiling = false;
benchmark/report/report.cabal+2
@@ -26,6 +26,7 @@ version: 0.1.0.0
2626-- extra-source-files: CHANGELOG.md
2727
2828executable report
29+ ghc-options: -Wall
2930 main-is: Main.hs
3031
3132 -- Modules included in this executable, other than Main.
@@ -36,5 +37,6 @@ executable report
3637 build-depends: base
3738 , bench-report
3839 , containers
40+ , streamly-targets
3941 hs-source-dirs: .
4042 default-language: Haskell2010
cabal.project.report+1
@@ -1,4 +1,5 @@
11packages:
2+ targets/streamly-targets.cabal
23 benchmark/report/report.cabal
34 streamly.cabal
45 core/streamly-core.cabal
streamly.cabal+4−3
@@ -54,6 +54,8 @@ extra-source-files:
5454 benchmark/bench-report/bin/bench-runner.sh
5555 benchmark/bench-report/bin/build-lib.sh
5656 benchmark/bench-report/cabal.project
57+ benchmark/report/Main.hs
58+ benchmark/report/report.cabal
5759 benchmark/Streamly/Benchmark/Data/*.hs
5860 benchmark/Streamly/Benchmark/Data/Array/Common.hs
5961 benchmark/Streamly/Benchmark/Data/Array/CommonImports.hs
@@ -84,6 +86,8 @@ extra-source-files:
8486 configure.ac
8587 docs/*.hs
8688 docs/streamly-docs.cabal
89+ targets/streamly-targets.cabal
90+ targets/Targets.hs
8791
8892 -- This is duplicated
8993 src/Streamly/Internal/Data/Stream/Instances.hs
@@ -214,9 +218,6 @@ extra-source-files:
214218 core/streamly-core.cabal
215219 core/jsbits/clock.js
216220 core/Setup.hs
217− benchmark/report/Main.hs
218− benchmark/report/report.cabal
219− cabal.project.report
220221
221222extra-doc-files:
222223 CONTRIBUTING.md
targets/Targets.hsnew file+55
@@ -0,0 +1,55 @@
1+module Targets
2+ ( groupTargets
3+ , individualTargets
4+ )
5+where
6+
7+import Data.Map (Map)
8+
9+import qualified Data.Map as Map
10+
11+groupTargets :: Map String [String]
12+groupTargets =
13+ Map.fromList
14+ [ ( "base_stream_grp"
15+ , [ "Data.Stream.StreamD"
16+ , "Data.Stream.StreamK"
17+ , "Data.Stream.StreamDK"
18+ ])
19+ , ("prelude_serial_grp", preludeSerialGrp)
20+ , ("prelude_concurrent_grp", preludeConcurrentGrp)
21+ , ( "prelude_other_grp"
22+ , ["Prelude.Rate", "Prelude.Concurrent", "Prelude.Adaptive"])
23+ , ( "array_grp"
24+ , [ "Data.Array"
25+ , "Data.Array.Foreign"
26+ , "Data.Array.Prim"
27+ , "Data.SmallArray"
28+ , "Data.Array.Prim.Pinned"
29+ ])
30+ , ("base_parser_grp", ["Data.Parser.ParserD", "Data.Parser.ParserK"])
31+ , ("parser_grp", ["Data.Fold", "Data.Parser"])
32+ , ("list_grp ", [])
33+ , ( "infinite_grp"
34+ , preludeSerialGrp ++ preludeConcurrentGrp ++ ["Prelude.Rate"])
35+ ]
36+
37+ where
38+
39+ preludeSerialGrp = ["Prelude.Serial", "Prelude.WSerial", "Prelude.ZipSerial"]
40+ preludeConcurrentGrp =
41+ [ "Prelude.Async"
42+ , "Prelude.WAsync"
43+ , "Prelude.Ahead"
44+ , "Prelude.Parallel"
45+ , "Prelude.ZipAsync"
46+ ]
47+
48+individualTargets :: [String]
49+individualTargets =
50+ [ "Data.Unfold"
51+ , "Unicode.Stream"
52+ , "Unicode.Char"
53+ , "Unicode.Utf8"
54+ , "FileSystem.Handle"
55+ ]
targets/cabal.projectnew file+1
@@ -0,0 +1 @@
1+packages: .
targets/default.nixnew file+163
@@ -0,0 +1,163 @@
1+let
2+ nixpkgsPath_21_11 =
3+ "https://github.com/NixOS/nixpkgs/archive/refs/tags/21.11.tar.gz";
4+ nixpkgsDefault = import (builtins.fetchTarball nixpkgsPath_21_11) { };
5+in
6+{
7+ nixpkgs ? nixpkgsDefault
8+, compiler ? "default"
9+}:
10+let haskellPackages =
11+ if compiler == "default"
12+ then nixpkgs.haskellPackages
13+ else nixpkgs.haskell.packages.${compiler};
14+
15+ mkPackage = super: pkg: path: opts: inShell:
16+ let orig = super.callCabal2nixWithOptions pkg path opts {};
17+ in if inShell
18+ # Avoid copying the source directory to nix store by using
19+ # src = null.
20+ then orig.overrideAttrs (oldAttrs: { src = null; })
21+ else orig;
22+
23+ mkPkgGit = super: gitSrc: rev: name:
24+ let
25+ src = builtins.fetchGit {
26+ url = gitSrc;
27+ rev = rev;
28+ };
29+ in super.callCabal2nix name src { };
30+
31+ mkPkgGitRef = super: gitSrc: rev: ref: name:
32+ let
33+ src = builtins.fetchGit {
34+ url = gitSrc;
35+ rev = rev;
36+ ref = ref;
37+ };
38+ in super.callCabal2nix name src { };
39+
40+ mkHaskellPackages = inShell:
41+ haskellPackages.override {
42+ overrides = self: super:
43+ with nixpkgs.haskell.lib;
44+ {
45+ report = mkPackage super "streamly-targets" ./. "" inShell;
46+
47+ bench-report =
48+ nixpkgs.haskell.lib.overrideCabal
49+ (let src = fetchGit {
50+ url = "git@github.com:composewell/bench-report.git";
51+ rev = "57d0ad221c74cdb2ce81646ab18300e8bb8e716b";
52+ }; in super.callCabal2nix "bench-report" src {})
53+ (old:
54+ { enableLibraryProfiling = false;
55+ doHaddock = false;
56+ });
57+
58+ bench-show = super.callHackageDirect {
59+ pkg = "bench-show";
60+ ver = "0.3.2";
61+ sha256 = "16b8vyzdp9b5bh34kqmbfwjsyv8wgnxxwl8kjcpgxjsh52xzyaa0";
62+ } { };
63+
64+# streamly-coreutils = let
65+# src = "git@github.com:composewell/streamly-coreutils.git";
66+# rev = "a12756efe24bbf303f2f6d66a95426c7657d297b";
67+# in mkPkgGit super src rev "streamly-coreutils";
68+
69+ streamly-coreutils =
70+ nixpkgs.haskell.lib.overrideCabal
71+ (let src = fetchGit {
72+ url = "git@github.com:composewell/streamly-coreutils.git";
73+ rev = "8fa4a3ebedb3f970f64b7d78d8ab340b0f771abe";
74+ }; in super.callCabal2nix "streamly-coreutils" src {})
75+ (old:
76+ { librarySystemDepends =
77+ if builtins.currentSystem == "x86_64-darwin"
78+ then [nixpkgs.darwin.apple_sdk.frameworks.Cocoa]
79+ else [];
80+ #enableLibraryProfiling = false;
81+ doHaddock = false;
82+ doCheck = false;
83+ });
84+
85+ streamly-shell = let
86+ src = "https://github.com/composewell/streamly-shell.git";
87+ rev = "7d77ddc0c06aec21fbbfd1b920ec4f58da654a1b";
88+ in mkPkgGit super src rev "streamly-shell";
89+
90+ streamly-process = let
91+ src = "https://github.com/composewell/streamly-process.git";
92+ rev = "a56ef61c1208c2d564a526eba315d903c0b4af2c";
93+ in nixpkgs.haskell.lib.dontCheck
94+ (mkPkgGit super src rev "streamly-process");
95+
96+ #streamly-process = nixpkgs.haskell.lib.dontCheck
97+ # (super.callHackageDirect {
98+ # pkg = "streamly-process";
99+ # ver = "0.1.0";
100+ # sha256 = "01nxisqfmn29fbirdsx71sfjp2rdqwrf469qyjcql2d11i1bxn94";
101+ # } { });
102+
103+ # streamly = super.callHackageDirect {
104+ # pkg = "streamly";
105+ # ver = "0.8.0";
106+ # sha256 = "0vy2lkljizlhpbpbybmg9jcmj2g4s1aaqd2dzy5c0y0n4rgwxask";
107+ # } { };
108+ streamly =
109+ nixpkgs.haskell.lib.overrideCabal
110+ #(super.callHackageDirect
111+ # { pkg = "streamly";
112+ # ver = "0.8.2";
113+ # sha256 = "sha256-CjFq9SCdbgLZa7NqOE4OtC8OaFg4vK8VmIDjGU5rGko=";
114+ # } {})
115+ (let src = fetchGit {
116+ url = "git@github.com:composewell/streamly.git";
117+ rev = "a849812d9960d5b7868e770156ab774ee8f70157";
118+ }; in super.callCabal2nix "streamly" src {})
119+ (old:
120+ { librarySystemDepends =
121+ if builtins.currentSystem == "x86_64-darwin"
122+ then [nixpkgs.darwin.apple_sdk.frameworks.Cocoa]
123+ else [];
124+ #enableLibraryProfiling = false;
125+ doHaddock = false;
126+ });
127+
128+ streamly-core =
129+ nixpkgs.haskell.lib.overrideCabal
130+ (let src = fetchGit {
131+ url = "git@github.com:composewell/streamly.git";
132+ rev = "a849812d9960d5b7868e770156ab774ee8f70157";
133+ }; in super.callCabal2nix "streamly-core" "${src}/core" {})
134+ (old:
135+ { librarySystemDepends =
136+ if builtins.currentSystem == "x86_64-darwin"
137+ then [nixpkgs.darwin.apple_sdk.frameworks.Cocoa]
138+ else [];
139+ #enableLibraryProfiling = false;
140+ doHaddock = false;
141+ });
142+
143+ };
144+ };
145+
146+ drv = mkHaskellPackages true;
147+
148+ shell = drv.shellFor {
149+ packages = p:
150+ [ p.report
151+ ];
152+ # Use a better prompt
153+ shellHook = ''
154+ export CABAL_DIR="$(pwd)/.cabal.nix"
155+ if test -n "$PS_SHELL"
156+ then
157+ export PS1="$PS_SHELL\[$bldred\](nix)\[$txtrst\] "
158+ fi
159+ '';
160+ };
161+in if nixpkgs.lib.inNixShell
162+ then shell
163+ else (mkHaskellPackages false).streamly-targets
targets/streamly-targets.cabalnew file+12
@@ -0,0 +1,12 @@
1+cabal-version: 2.4
2+name: streamly-targets
3+version: 0.1.0.0
4+
5+library
6+ hs-source-dirs: .
7+ exposed-modules: Targets
8+ ghc-options: -Wall
9+ build-depends: base
10+ , bench-report
11+ , containers
12+ default-language: Haskell2010