Merge pull request #121407 from sternenseemann/haskell-hydra
This commit is contained in:
commit
7a353215dc
|
@ -84,6 +84,7 @@
|
|||
/pkgs/development/compilers/ghc @cdepillabout @sternenseemann @maralorn
|
||||
/pkgs/development/haskell-modules @cdepillabout @sternenseemann @maralorn
|
||||
/pkgs/test/haskell @cdepillabout @sternenseemann @maralorn
|
||||
/pkgs/top-level/release-haskell.nix @cdepillabout @sternenseemann @maralorn
|
||||
/pkgs/top-level/haskell-packages.nix @cdepillabout @sternenseemann @maralorn
|
||||
|
||||
# Perl
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
- pkgs/development/tools/haskell/**/*
|
||||
- pkgs/test/haskell/**/*
|
||||
- pkgs/top-level/haskell-packages.nix
|
||||
- pkgs/top-level/release-haskell.nix
|
||||
|
||||
"6.topic: kernel":
|
||||
- pkgs/build-support/kernel/**/*
|
||||
|
|
|
@ -0,0 +1,218 @@
|
|||
/*
|
||||
To debug this expression you can use `hydra-eval-jobs` from
|
||||
`pkgs.hydra-unstable` which prints the jobset description
|
||||
to `stdout`:
|
||||
|
||||
$ hydra-eval-jobs -I . pkgs/top-level/release-haskell.nix
|
||||
*/
|
||||
{ supportedSystems ? [ "x86_64-linux" ] }:
|
||||
|
||||
let
|
||||
|
||||
releaseLib = import ./release-lib.nix {
|
||||
inherit supportedSystems;
|
||||
};
|
||||
|
||||
inherit (releaseLib)
|
||||
pkgs
|
||||
packagePlatforms
|
||||
mapTestOn
|
||||
aggregate
|
||||
;
|
||||
|
||||
inherit (pkgs) lib;
|
||||
|
||||
# helper function which traverses a (nested) set
|
||||
# of derivations produced by mapTestOn and flattens
|
||||
# it to a list of derivations suitable to be passed
|
||||
# to `releaseTools.aggregate` as constituents.
|
||||
accumulateDerivations = jobList:
|
||||
lib.concatMap (
|
||||
attrs:
|
||||
if lib.isDerivation attrs
|
||||
then [ attrs ]
|
||||
else if lib.isAttrs attrs
|
||||
then accumulateDerivations (lib.attrValues attrs)
|
||||
else []
|
||||
) jobList;
|
||||
|
||||
# names of all subsets of `pkgs.haskell.packages`
|
||||
compilerNames = lib.mapAttrs (name: _: name) pkgs.haskell.packages;
|
||||
|
||||
# list of all compilers to test specific packages on
|
||||
all = with compilerNames; [
|
||||
ghc884
|
||||
ghc8104
|
||||
ghc901
|
||||
];
|
||||
|
||||
# packagePlatforms applied to `haskell.packages.*`
|
||||
compilerPlatforms = lib.mapAttrs
|
||||
(_: v: packagePlatforms v)
|
||||
pkgs.haskell.packages;
|
||||
|
||||
# This function lets you specify specific packages
|
||||
# which are to be tested on a list of specific GHC
|
||||
# versions and returns a job set for all specified
|
||||
# combinations. See `jobs` below for an example.
|
||||
versionedCompilerJobs = config: mapTestOn {
|
||||
haskell.packages =
|
||||
(lib.mapAttrs (
|
||||
ghc: jobs:
|
||||
lib.filterAttrs (
|
||||
jobName: platforms:
|
||||
lib.elem ghc (config."${jobName}" or [])
|
||||
) jobs
|
||||
) compilerPlatforms);
|
||||
};
|
||||
|
||||
# hydra jobs for `pkgs` of which we import a subset of
|
||||
pkgsPlatforms = packagePlatforms pkgs // {
|
||||
gitAndTools = packagePlatforms pkgs.gitAndTools;
|
||||
};
|
||||
|
||||
# names of packages in an attribute set that are maintained
|
||||
maintainedPkgNames = set: builtins.attrNames
|
||||
(lib.filterAttrs (
|
||||
_: v: builtins.length (v.meta.maintainers or []) > 0
|
||||
) set);
|
||||
|
||||
jobs = mapTestOn {
|
||||
haskellPackages = packagePlatforms pkgs.haskellPackages;
|
||||
haskell.compiler = packagePlatforms pkgs.haskell.compiler;
|
||||
|
||||
tests.haskell = packagePlatforms pkgs.tests.haskell;
|
||||
|
||||
# top-level haskell packages
|
||||
inherit (pkgsPlatforms)
|
||||
bench
|
||||
cabal-install
|
||||
cabal2nix
|
||||
cachix
|
||||
darcs
|
||||
dhall
|
||||
dhall-bash
|
||||
dhall-docs
|
||||
dhall-lsp-server
|
||||
dhall-json
|
||||
dhall-nix
|
||||
dhall-text
|
||||
elm2nix
|
||||
fffuu
|
||||
futhark
|
||||
glirc
|
||||
hadolint
|
||||
haskell-ci
|
||||
haskell-language-server
|
||||
hasura-graphql-engine
|
||||
hinit
|
||||
hledger
|
||||
hledger-iadd
|
||||
hledger-interest
|
||||
hledger-ui
|
||||
hledger-web
|
||||
hlint
|
||||
hpack
|
||||
icepeak
|
||||
koka
|
||||
krank
|
||||
madlang
|
||||
matterhorn
|
||||
neuron-notes
|
||||
niv
|
||||
nix-delegate
|
||||
nix-deploy
|
||||
nix-diff
|
||||
nix-linter
|
||||
nix-output-monitor
|
||||
nix-tree
|
||||
nixfmt
|
||||
pandoc
|
||||
place-cursor-at
|
||||
shake
|
||||
shellcheck
|
||||
spacecookie
|
||||
splot
|
||||
stack
|
||||
stack2nix
|
||||
stutter
|
||||
stylish-haskell
|
||||
taskell
|
||||
tweet-hs
|
||||
update-nix-fetchgit
|
||||
uuagc
|
||||
wstunnel
|
||||
;
|
||||
|
||||
gitAndTools.git-annex = pkgsPlatforms.gitAndTools.git-annex;
|
||||
} // versionedCompilerJobs {
|
||||
# Packages which should be checked on more than the
|
||||
# default GHC version. This list can be used to test
|
||||
# the state of the package set with newer compilers
|
||||
# and to confirm that critical packages for the
|
||||
# package sets (like Cabal, jailbreak-cabal) are
|
||||
# working as expected.
|
||||
cabal-install = all;
|
||||
Cabal_3_4_0_0 = with compilerNames; [ ghc884 ghc8104 ];
|
||||
funcmp = all;
|
||||
haskell-language-server = all;
|
||||
hoogle = all;
|
||||
hsdns = all;
|
||||
jailbreak-cabal = all;
|
||||
language-nix = all;
|
||||
nix-paths = all;
|
||||
titlecase = all;
|
||||
} // {
|
||||
mergeable = pkgs.releaseTools.aggregate {
|
||||
name = "haskell-updates-mergeable";
|
||||
meta = {
|
||||
description = ''
|
||||
Critical haskell packages that should work at all times,
|
||||
serves as minimum requirement for an update merge
|
||||
'';
|
||||
maintainers = lib.teams.haskell.members;
|
||||
};
|
||||
constituents = accumulateDerivations [
|
||||
# haskell specific tests
|
||||
jobs.tests.haskell
|
||||
# important top-level packages
|
||||
jobs.cabal-install
|
||||
jobs.cabal2nix
|
||||
jobs.cachix
|
||||
jobs.darcs
|
||||
jobs.haskell-language-server
|
||||
jobs.hledger
|
||||
jobs.hledger-ui
|
||||
jobs.hpack
|
||||
jobs.niv
|
||||
jobs.pandoc
|
||||
jobs.stack
|
||||
jobs.stylish-haskell
|
||||
# important haskell (library) packages
|
||||
jobs.haskellPackages.cabal-plan
|
||||
jobs.haskellPackages.distribution-nixpkgs
|
||||
jobs.haskellPackages.hackage-db
|
||||
jobs.haskellPackages.policeman
|
||||
jobs.haskellPackages.xmonad
|
||||
jobs.haskellPackages.xmonad-contrib
|
||||
# haskell packages maintained by @peti
|
||||
# imported from the old hydra jobset
|
||||
jobs.haskellPackages.hopenssl
|
||||
jobs.haskellPackages.hsemail
|
||||
jobs.haskellPackages.hsyslog
|
||||
];
|
||||
};
|
||||
maintained = pkgs.releaseTools.aggregate {
|
||||
name = "maintained-haskell-packages";
|
||||
meta = {
|
||||
description = "Aggregate jobset of all haskell packages with a maintainer";
|
||||
maintainers = lib.teams.haskell.members;
|
||||
};
|
||||
constituents = accumulateDerivations
|
||||
(builtins.map
|
||||
(name: jobs.haskellPackages."${name}")
|
||||
(maintainedPkgNames pkgs.haskellPackages));
|
||||
};
|
||||
};
|
||||
|
||||
in jobs
|
Loading…
Reference in New Issue