Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754/* This is the Hydra jobset for the `haskell-updates` branch in Nixpkgs. You can see the status of this jobset at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates.
To debug this expression you can use `hydra-eval-jobs` from `pkgs.hydra` which prints the jobset description to `stdout`:
$ hydra-eval-jobs -I . pkgs/top-level/release-haskell.nix*/{ supportedSystems ? builtins.fromJSON (builtins.readFile ../../ci/supportedSystems.json),}:
let
releaseLib = import ./release-lib.nix { inherit supportedSystems; };
inherit (releaseLib) lib mapTestOn packagePlatforms pkgs ;
# 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. # Removes all non derivations from the input jobList. # # accumulateDerivations :: [ Either Derivation AttrSet ] -> [ Derivation ] # # > accumulateDerivations [ drv1 "string" { foo = drv2; bar = { baz = drv3; }; } ] # [ drv1 drv2 drv3 ] accumulateDerivations = jobList: lib.concatMap ( attrs: if lib.isDerivation attrs then [ attrs ] else lib.optionals (lib.isAttrs attrs) (accumulateDerivations (lib.attrValues attrs)) ) jobList;
# names of all subsets of `pkgs.haskell.packages` # # compilerNames looks like the following: # # ``` # { # ghc810 = "ghc810"; # ghc8107Binary = "ghc8107Binary"; # ghc8107 = "ghc8107"; # ghc924 = "ghc924"; # ... # } # ``` compilerNames = lib.mapAttrs (name: _: name) pkgs.haskell.packages;
# list of all compilers to test specific packages on released = with compilerNames; [ ghc8107 ghc902 ghc928 ghc947 ghc948 ghc963 ghc964 ghc965 ghc966 ghc967 ghc981 ghc982 ghc983 ghc984 ghc9101 ghc9102 # exclude ghc9121 due to severe miscompilation bug ghc9122 ];
# packagePlatforms applied to `haskell.packages.*` # # This returns an attr set that looks like the following, where each Haskell # package in the compiler attr set has its list of supported platforms as its # value. # # ``` # { # ghc810 = { # conduit = [ ... ]; # lens = [ "i686-cygwin" "x86_64-cygwin" ... "x86_64-windows" "i686-windows" ] # ... # }; # ghc902 = { ... }; # ... # } # ``` 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. # # You can call versionedCompilerJobs like the following: # # ``` # versionedCompilerJobs { # ghc-tags = ["ghc902" "ghc924"]; # } # ``` # # This would produce an output like the following: # # ``` # { # haskell.packages = { # ghc884 = {}; # ghc810 = {}; # ghc902 = { # ghc-tags = { # aarch64-darwin = <derivation...>; # aarch64-linux = <derivation...>; # ... # }; # }; # ghc924 = { # ghc-tags = { ... }; # }; # ... # }; # } # ``` versionedCompilerJobs = config: mapTestOn { haskell.packages = let # Mapping function that takes an attrset of jobs, and # removes all jobs that are not specified in config. # # For example, imagine a call to onlyConfigJobs like: # # ``` # onlyConfigJobs # "ghc902" # { # conduit = [ ... ]; # lens = [ "i686-cygwin" "x86_64-cygwin" ... "x86_64-windows" "i686-windows" ]; # } # ``` # # onlyConfigJobs pulls out only those jobs that are specified in config. # # For instance, if config is `{ lens = [ "ghc902" ]; }`, then the above # example call to onlyConfigJobs will return: # # ``` # { lens = [ "i686-cygwin" "x86_64-cygwin" ... "x86_64-windows" "i686-windows" ]; } # ``` # # If config is `{ lens = [ "ghc8107" ]; }`, then the above example call # to onlyConfigJobs returns `{}`. # # onlyConfigJobs will also remove all platforms from a job that are not # supported by the GHC it is compiled with. onlyConfigJobs = ghc: jobs: let configFilteredJobset = lib.filterAttrs ( jobName: platforms: lib.elem ghc (config."${jobName}" or [ ]) ) jobs;
# Remove platforms from each job that are not supported by GHC. # This is important so that we don't build jobs for platforms # where GHC can't be compiled. jobsetWithGHCPlatforms = lib.mapAttrs ( _: platforms: lib.intersectLists jobs.ghc platforms ) configFilteredJobset; in jobsetWithGHCPlatforms; in lib.mapAttrs onlyConfigJobs compilerPlatforms; };
# hydra jobs for `pkgs` of which we import a subset of pkgsPlatforms = packagePlatforms pkgs;
# 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);
recursiveUpdateMany = builtins.foldl' lib.recursiveUpdate { };
# Remove multiple elements from a list at once. # # removeMany # :: [a] -- list of elements to remove # -> [a] -- list of elements from which to remove # -> [a] # # > removeMany ["aarch64-linux" "x86_64-darwin"] ["aarch64-linux" "x86_64-darwin" "x86_64-linux"] # ["x86_64-linux"] removeMany = itemsToRemove: list: lib.foldr lib.remove list itemsToRemove;
# Recursively remove platforms from the values in an attribute set. # # removePlatforms # :: [String] # -> AttrSet # -> AttrSet # # > attrSet = { # foo = ["aarch64-linux" "x86_64-darwin" "x86_64-linux"]; # bar.baz = ["aarch64-linux" "x86_64-linux"]; # bar.quux = ["aarch64-linux" "x86_64-darwin"]; # } # > removePlatforms ["aarch64-linux" "x86_64-darwin"] attrSet # { # foo = ["x86_64-linux"]; # bar = { # baz = ["x86_64-linux"]; # quux = []; # }; # } removePlatforms = platformsToRemove: packageSet: lib.mapAttrsRecursive ( _: val: if lib.isList val then removeMany platformsToRemove val else val ) packageSet;
jobs = recursiveUpdateMany [ (mapTestOn { haskellPackages = packagePlatforms pkgs.haskellPackages; haskell.compiler = packagePlatforms pkgs.haskell.compiler // (lib.genAttrs [ "ghcjs" "ghcjs810" ] (ghcjsName: { # We can't build ghcjs itself, since it exceeds 3GB (Hydra's output limit) due # to the size of its bundled libs. We can however save users a bit of compile # time by building the bootstrap ghcjs on Hydra. For this reason, we overwrite # the ghcjs attributes in haskell.compiler with a reference to the bootstrap # ghcjs attribute in their bootstrap package set (exposed via passthru) which # would otherwise be ignored by Hydra. bootGhcjs = (packagePlatforms pkgs.haskell.compiler.${ghcjsName}.passthru).bootGhcjs; }) );
tests.haskell = packagePlatforms pkgs.tests.haskell;
nixosTests = { inherit (packagePlatforms pkgs.nixosTests) agda kmonad xmonad xmonad-xdg-autostart ; };
agdaPackages = packagePlatforms pkgs.agdaPackages;
# top-level packages that depend on haskellPackages inherit (pkgsPlatforms) agda alex arion aws-spend-summary bench blucontrol cabal-install cabal2nix cachix # carp broken on 2024-04-09 changelog-d cornelis cedille client-ip-echo darcs dconf2nix dhall dhall-bash dhall-docs dhall-lsp-server dhall-json dhall-nix dhall-nixpkgs dhall-yaml diagrams-builder echidna elm2nix emanote fffuu futhark ghcid git-annex git-brunch gitit glirc hadolint happy haskell-ci haskell-language-server hci hercules-ci-agent hinit hedgewars hledger hledger-check-fancyassertions hledger-iadd hledger-interest hledger-ui hledger-web hlint hpack hscolour icepeak ihaskell jacinda jl json2yaml koka krank lambdabot lhs2tex madlang matterhorn mkjson mueval naproche niv nix-delegate nix-deploy nix-diff nix-linter nix-output-monitor nix-script nix-tree nixfmt-classic nixfmt nota nvfetcher oama ormolu pakcs pandoc place-cursor-at pinboard-notes-backup pretty-simple purenix shake shellcheck shellcheck-minimal sourceAndTags spacecookie spago specup splot stack stack2nix stutter stylish-haskell taffybar tamarin-prover termonad tldr-hs tweet-hs update-nix-fetchgit uusi uqm uuagc # vaultenv: broken by connection on 2024-03-16 wstunnel xmobar xmonadctl xmonad-with-packages yi zsh-git-prompt ;
# Members of the elmPackages set that are Haskell derivations elmPackages = { inherit (pkgsPlatforms.elmPackages) elm elm-format ; };
# GHCs linked to musl. pkgsMusl = removePlatforms [ # pkgsMusl is compiled natively with musl. It is not # cross-compiled (unlike pkgsStatic). We can only # natively bootstrap GHC with musl on x86_64-linux because # upstream doesn't provide a musl bindist for aarch64. "aarch64-linux"
# musl only supports linux, not darwin. "x86_64-darwin" "aarch64-darwin" ] { haskell.compiler = lib.recursiveUpdate (packagePlatforms pkgs.pkgsMusl.haskell.compiler) { # remove musl ghc865Binary since it is known to be broken and # causes an evaluation error on darwin. ghc865Binary = { };
ghcjs = { }; ghcjs810 = { }; };
# Get some cache going for MUSL-enabled GHC. haskellPackages = { inherit (packagePlatforms pkgs.pkgsMusl.haskellPackages) hello lens random ; }; };
# Test some statically linked packages to catch regressions # and get some cache going for static compilation with GHC. # Use native-bignum to avoid GMP linking problems (LGPL) pkgsStatic = removePlatforms [ "aarch64-linux" # times out on Hydra
# Static doesn't work on darwin "x86_64-darwin" "aarch64-darwin" ] { haskellPackages = { inherit (packagePlatforms pkgs.pkgsStatic.haskellPackages) hello lens random QuickCheck cabal2nix terminfo # isn't bundled for cross xhtml # isn't bundled for cross postgrest ; };
haskell.packages.native-bignum.ghc948 = { inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc948) hello lens random QuickCheck cabal2nix terminfo # isn't bundled for cross xhtml # isn't bundled for cross postgrest ; };
haskell.packages.native-bignum.ghc984 = { inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc984) hello random QuickCheck terminfo # isn't bundled for cross ; }; };
pkgsCross = { aarch64-android-prebuilt.pkgsStatic = removePlatforms [ # Android NDK package doesn't support building on "aarch64-darwin" "aarch64-linux"
"x86_64-darwin" ] { haskell.packages.ghc912 = { inherit (packagePlatforms pkgs.pkgsCross.aarch64-android-prebuilt.pkgsStatic.haskell.packages.ghc912) ghc hello microlens ; }; };
ghcjs = removePlatforms [ # Hydra output size of 3GB is exceeded "aarch64-linux" ] { haskellPackages = { inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskellPackages) ghc hello microlens ; };
haskell.packages.ghc98 = { inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghc98) ghc hello microlens ; };
haskell.packages.ghc912 = { inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghc912) ghc hello microlens miso reflex-dom ; };
haskell.packages.ghcHEAD = { inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghcHEAD) ghc hello microlens ; }; };
ucrt64.haskell.packages.ghc912 = { inherit (packagePlatforms pkgs.pkgsCross.ucrt64.haskell.packages.ghc912) ghc # hello # executables don't build yet microlens ; };
riscv64 = { # Cross compilation of GHC haskell.compiler = { inherit (packagePlatforms pkgs.pkgsCross.riscv64.haskell.compiler) # Our oldest GHC which still uses its own expression. 8.10.7 can # theoretically be used to chain bootstrap all GHCs on riscv64 # which doesn't have official bindists. ghc8107 # Latest GHC we are able to cross-compile. ghc948 ; }; };
aarch64-multiplatform = { # Cross compilation of GHC haskell.compiler = { inherit (packagePlatforms pkgs.pkgsCross.aarch64-multiplatform.haskell.compiler) # Uses a separate expression and LLVM backend for aarch64. ghc8107 # Latest GHC we are able to cross-compile. Uses NCG backend. ghc948 ; }; }; }; }) (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 = lib.subtractLists [ # It is recommended to use pkgs.cabal-install instead of cabal-install # from the package sets. Due to (transitively) requiring recent versions # of core packages, it is not always reasonable to get cabal-install to # work with older compilers. compilerNames.ghc8107 compilerNames.ghc902 compilerNames.ghc928 compilerNames.ghc947 compilerNames.ghc948 ] released; Cabal_3_10_3_0 = lib.subtractLists [ # time < 1.13 conflicts with time == 1.14.* compilerNames.ghc9121 compilerNames.ghc9122 ] released; Cabal_3_12_1_0 = released; Cabal_3_14_2_0 = released; cabal2nix = released; cabal2nix-unstable = released; funcmp = released; git-annex = [ # for 9.10, test that using filepath (instead of filepath-bytestring) works. compilerNames.ghc9101 compilerNames.ghc9102 ]; haskell-language-server = lib.subtractLists [ # Support ceased as of 2.3.0.0 compilerNames.ghc8107 # Support ceased as of 2.5.0.0 compilerNames.ghc902 # Support ceased as of 2.10.0.0 compilerNames.ghc928 ] released; hoogle = released; hlint = lib.subtractLists [ compilerNames.ghc902 compilerNames.ghc9101 compilerNames.ghc9102 compilerNames.ghc9122 ] released; hpack = released; hsdns = released; jailbreak-cabal = released; language-nix = released; nix-paths = released; titlecase = released; ghc-api-compat = [ compilerNames.ghc8107 compilerNames.ghc902 ]; ghc-bignum = [ compilerNames.ghc8107 ]; ghc-lib = released; ghc-lib-parser = released; ghc-lib-parser-ex = released; ghc-source-gen = lib.subtractLists [ compilerNames.ghc9122 ] released; ghc-tags = lib.subtractLists [ compilerNames.ghc9122 ] released; hashable = released; primitive = released; semaphore-compat = [ # Compiler < 9.8 don't have the semaphore-compat core package, but # requires unix >= 2.8.1.0 which implies GHC >= 9.6 for us. compilerNames.ghc966 ]; weeder = lib.subtractLists [ compilerNames.ghc9101 compilerNames.ghc9102 compilerNames.ghc9122 ] released; }) { 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 ''; teams = [ lib.teams.haskell ]; }; 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 jobs.shellcheck # important haskell (library) packages jobs.haskellPackages.cabal-plan jobs.haskellPackages.distribution-nixpkgs jobs.haskellPackages.hackage-db 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"; teams = [ lib.teams.haskell ]; }; constituents = accumulateDerivations ( builtins.map (name: jobs.haskellPackages."${name}") (maintainedPkgNames pkgs.haskellPackages) ); };
muslGHCs = pkgs.releaseTools.aggregate { name = "haskell-pkgsMusl-ghcs"; meta = { description = "GHCs built with musl"; maintainers = with lib.maintainers; [ nh2 ]; }; constituents = accumulateDerivations [ jobs.pkgsMusl.haskell.compiler.ghc8107Binary jobs.pkgsMusl.haskell.compiler.ghc8107 jobs.pkgsMusl.haskell.compiler.ghc902 jobs.pkgsMusl.haskell.compiler.ghc928 jobs.pkgsMusl.haskell.compiler.ghcHEAD jobs.pkgsMusl.haskell.compiler.integer-simple.ghc8107 jobs.pkgsMusl.haskell.compiler.native-bignum.ghc902 jobs.pkgsMusl.haskell.compiler.native-bignum.ghc928 jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD ]; };
staticHaskellPackages = pkgs.releaseTools.aggregate { name = "static-haskell-packages"; meta = { description = "Static haskell builds using the pkgsStatic infrastructure"; maintainers = [ lib.maintainers.sternenseemann lib.maintainers.rnhmjoj ]; }; constituents = accumulateDerivations [ jobs.pkgsStatic.haskell.packages.native-bignum.ghc948 # non-hadrian jobs.pkgsStatic.haskellPackages jobs.pkgsStatic.haskell.packages.native-bignum.ghc984 ]; }; } ];
injobs