Nixpkgs: Significant number of Haskell packages unnecessarily marked as broken in 19.03

Created on 13 Apr 2019  路  10Comments  路  Source: NixOS/nixpkgs

Issue description

For some reason https://github.com/NixOS/nixpkgs/commit/9e7acf8b255fb4aa36d4539f49ecd5d3cca17c7b added broken=true to many packages in the default haskellPackages package set. haskellPackages.threadscope is one example, although there are many others.

Steps to reproduce

nix run nixpkgs.haskellPackages.threadscope

Technical details

 - system: `"x86_64-linux"`
 - host os: `Linux 4.19.34, NixOS, 19.03.172138.5c52b25283a (Koi)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.2`
 - channels(root): `"nixos-19.03.172138.5c52b25283a, nixpkgs-19.03"`
 - channels(ben): `"nixpkgs-19.03.172138.5c52b25283a, nixpkgs-unstable-19.09pre174594.0c0954781e2"`
 - nixpkgs: `/home/ben/.nix-defexpr/channels/nixpkgs`
haskell

Most helpful comment

Thanks @peti! I really appreciate all the work you've done for the community.

All 10 comments

In the case of threadscope this may be due to unsolvable version constraints:

$ nix run '(with (import <nixpkgs> {}); haskellPackages.callHackage "threadscope" "0.2.11.1" {})'
error: build of '/nix/store/z33jk3ddk150fvlblnfggys56c92w146-threadscope-0.2.11.1.drv' on 'ssh://[email protected]' failed: builder for '/nix/store/z33jk3ddk150fvlblnfggys56c92w146-threadscope-0.2.11.1.drv' failed with exit code 1
builder for '/nix/store/z33jk3ddk150fvlblnfggys56c92w146-threadscope-0.2.11.1.drv' failed with exit code 1; last 10 log lines:
    configureFinalizedPackage, called at libraries/Cabal/Cabal/Distribution/Simple/Configure.hs:460:12 in Cabal-2.4.0.1:Distribution.Simple.Configure
    configure, called at libraries/Cabal/Cabal/Distribution/Simple.hs:596:20 in Cabal-2.4.0.1:Distribution.Simple
    confHook, called at libraries/Cabal/Cabal/Distribution/Simple/UserHooks.hs:67:5 in Cabal-2.4.0.1:Distribution.Simple.UserHooks
    configureAction, called at libraries/Cabal/Cabal/Distribution/Simple.hs:178:19 in Cabal-2.4.0.1:Distribution.Simple
    defaultMainHelper, called at libraries/Cabal/Cabal/Distribution/Simple.hs:115:27 in Cabal-2.4.0.1:Distribution.Simple
    defaultMain, called at Setup.hs:2:8 in main:Main
  Setup: Encountered missing dependencies:
  gtk >=0.12 && <0.15, template-haskell <2.14

However, I don't recall such cases being marked as broken in the past. In any event, doJailbreaking threadscope works fine so marking it as broken seems rather harsh.

@peti, do you know what is going on here?

It would be good to get these resolved on hackage first before we add doJailbreak arbitrarily. Hackage trustees can make these changes IIRC.

What do you mean those builds are marked broken "unnecessarily"? Those builds that are marked as broken fail.

I suppose a more correct way of phasing this would have been rather "newly marked as broken". The point being that this seems to be a change and one that makes it a fair bit harder to use Haskell packages on a one-off basis. Previously it was very easy to apply haskell.lib.doJailbreak and the result would usually work. As far as I know there is no analogous combinator to unmark a package as broken. Perhaps we should add one.

I suppose a more correct way of phasing this would have been rather "newly marked as broken". The point being that this seems to be a change and one that makes it a fair bit harder to use Haskell packages on a one-off basis.

The change prevents people from wasting half an hour of their lives trying to compile a package that we already know will not succeed.

Previously it was very easy to apply haskell.lib.doJailbreak and the result would usually work. As far as I know there is no analogous combinator to unmark a package as broken. Perhaps we should add one.

There is always overrideCabal, which allows you to modify the any attribute you see fit. Having a special unmarkBroken helper certainly wouldn't hurt, though. Would you like to suggest a PR?

@peti How do patches get created? I think they may be causing some of the packages to get marked as broken when they are not.

For example, in unstable, beam-core-0.8.0.0 is marked as broken. However if you override it and set broken=true; patches=[]; it builds just fine.

@peti How do patches get created? I think they may be causing some of the packages to get marked as broken when they are not.

For example, in unstable, beam-core-0.8.0.0 is marked as broken. However if you override it and set broken=true; patches=[]; it builds just fine.

These patches were added by @endgame in https://github.com/NixOS/nixpkgs/pull/53680.

Thanks @peti! I really appreciate all the work you've done for the community.

@pjones, thank you very much. :-)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

domenkozar picture domenkozar  路  3Comments

sid-kap picture sid-kap  路  3Comments

rzetterberg picture rzetterberg  路  3Comments

vaibhavsagar picture vaibhavsagar  路  3Comments

matthiasbeyer picture matthiasbeyer  路  3Comments