on master help sign in
Test a few Hackage packages on CI
commitd900f4efaf587d34cab7893c3feb6f62ddde5bdd authorUtku Demir <me@utdemir.com> dateFri 30 Aug 2019, 14:43 (7 years ago) parent9dd08ee
3 files changed+67−8
.circleci/config.yml+1−1 default.nix+55−3 nix/ormolize/default.nix+11−4
.circleci/config.yml+1−1
@@ -28,7 +28,7 @@ jobs:
2828 fi
2929 - run:
3030 name: Build the package (includes running the tests)
31− command: nix-build
31+ command: nix-build --keep-going
3232 - run:
3333 name: Generate Haddocks
3434 command: nix-build --attr ormolu.doc
default.nix+55−3
@@ -14,12 +14,14 @@ let
1414 overrides = ormoluOverlay;
1515 };
1616 ormoluOverlay = self: super: {
17− "ormolu" = super.callCabal2nix "ormolu" source { };
18− };
17+ "ormolu" = super.callCabal2nix "ormolu" source { };
18+ };
1919 ormolize = import ./nix/ormolize {
2020 inherit pkgs;
2121 inherit haskellPackages;
2222 };
23+ ormolizedPackages = doCheck:
24+ pkgs.lib.mapAttrs (_: v: ormolize { package = v; inherit doCheck; }) haskellPackages;
2325in {
2426 ormolu = haskellPackages.ormolu;
2527 ormoluShell = haskellPackages.shellFor {
@@ -27,5 +29,55 @@ in {
2729 buildInputs = [ haskellPackages.cabal-install haskellPackages.ghcid ];
2830 };
2931 inherit ormoluOverlay ormoluCompiler;
30− hackage = pkgs.lib.mapAttrs ormolize haskellPackages;
32+ hackage = ormolizedPackages false;
33+ hackageTests = with pkgs.lib; pkgs.recurseIntoAttrs (
34+ let ps = [
35+ "QuickCheck"
36+ "ShellCheck"
37+ "aeson"
38+ "attoparsec"
39+ "cassava"
40+ "conduit"
41+ "cryptonite"
42+ "diagrams-core"
43+ "distributed-process"
44+ "esqueleto"
45+ "fay"
46+ "hedgehog"
47+ "hlint"
48+ "megaparsec"
49+ "postgrest"
50+ "servant"
51+ "servant-server"
52+ "tensorflow"
53+
54+ # Comment idempotence issue
55+
56+ # "Agda"
57+ # "aws"
58+ # "brick"
59+ # "hakyll"
60+ # "haxl"
61+ # "hledger"
62+ # "http-client"
63+ # "idris"
64+ # "intero"
65+ # "leksah"
66+ # "lens"
67+ # "ormolu"
68+ # "pandoc"
69+ # "pipes"
70+ # "purescript"
71+ # "stack"
72+ # "tls"
73+ # "yesod-core"
74+
75+ # Missing language extension
76+
77+ # "lens" #fixed in master
78+ # "purescript"
79+
80+ ];
81+ in listToAttrs (map (p: nameValuePair p (ormolizedPackages true).${p}) ps)
82+ );
3183}
nix/ormolize/default.nix+11−4
@@ -1,15 +1,22 @@
1−{ pkgs, haskellPackages }: _: p:
1+{ pkgs, haskellPackages }: { package, doCheck ? false }:
22 pkgs.stdenv.mkDerivation {
3− name = p.name + "-ormolized";
4− src = p.src;
3+ name = package.name + "-ormolized";
4+ src = package.src;
55 buildInputs = [
66 haskellPackages.cpphs
7− (pkgs.haskell.lib.dontCheck haskellPackages.ormolu)
7+ (if doCheck
8+ then haskellPackages.ormolu
9+ else pkgs.haskell.lib.dontCheck haskellPackages.ormolu)
810 pkgs.glibcLocales
911 ];
1012 LANG = "en_US.UTF-8";
1113 buildPhase = ''
1214 find . -name '*.hs' -exec bash ${./ormolize.sh} {} \; 2> log.txt
15+ cat log.txt
16+ '';
17+ inherit doCheck;
18+ checkPhase = ''
19+ if [[ -s log.txt ]]; then exit 1; fi
1320 '';
1421 installPhase = ''
1522 mkdir "$out"