| 23 Apr 2025 |
alexfmpe | Me neither | 11:46:15 |
alexfmpe | Getting it mainlined and cached removes the main obstacle | 11:47:03 |
alexfmpe | By the time anyone is using it and wants to upstream some override we'd probably have it merged into haskell-updates | 11:47:41 |
sterni (he/him) | Just cherry pick I have a feeling we may doing that a fair bit for 24.11 stuff | 11:54:52 |
maralorn | 24.11? | 12:33:40 |
| 24 Apr 2025 |
| @jktr:0x16.de left the room. | 01:16:55 |
| Leon Vatthauer set a profile picture. | 12:50:31 |
| Peter Dragos joined the room. | 14:13:49 |
Peter Dragos | Hey folks, I'm working on getting haskellPackages.accelerate building. I've gotten it building locally against 24.11.
I'd like to make a PR for nixpkgs, so I've checked out nixpkgs/haskell-updates and am editing common-configuration.nix with
accelerate = overrideSrc {
src = pkgs.fetchFromGitHub {
owner = "AccelerateHS";
repo = "accelerate";
rev = "3f681a5091eddf5a3b97f4cd0de32adc830e1117";
sha256 = "sha256-tCcl7wAls+5cBSrqbxfEAJngbV43OJcLJdaC4qqkBxc=";
};
} super.accelerate;
But when I do this, I get
double-conversion >=2.0, formatting >=7.0, microlens >=0.4
if I go into the nix repl, :lf, and inspect nix-repl> legacyPackages.x86_64-linux.haskellPackages.microlens.version I get "0.4.13.1" which should be compatible; and this is the same for double-conversion and formatting as well. Do I need to do something different to get the dependencies picked up properly?
| 14:14:29 |
| TuXic joined the room. | 14:21:59 |
maralorn | Peter Dragos: Its likely that those dependencies were not present in the version of accelerate which is in that nixpkgs checkout. You are reusing the derivation for another version of the package there, just swapping the src. | 14:37:35 |
maralorn | Is there no newer release of accelerate? | 14:38:10 |
maralorn | A possible solution is to manually add the missing dependencies with further overrides on the package. | 14:39:43 |
Peter Dragos | I far as I can tell, the latest version of accelerate on hackage has the same base constraints | 14:43:58 |
Peter Dragos | I'll give this a shot, thanks | 14:44:06 |
maralorn | Why are you mentioning base constraints? They don’t appear in your error message. | 14:44:58 |
maralorn | Huh, I see your point. Last release 5 years ago. Unclear whether you can compile this against a current ghc. | 14:47:56 |
Peter Dragos | Sorry, I originally asked over in the Haskell matrix and then realized it was better off here.
The relevant info is that the version in release-24.11 gives
> Error: Setup: Encountered missing or private dependencies:
> base >=4.12 && <4.15
>
| 14:48:28 |
maralorn | Well then first you try doJailbreak. | 14:49:12 |
maralorn | If it works it’s the easiest solution. But it probably doesn’t … | 14:49:39 |
Peter Dragos | But the repository itself (link] is active. Jailbreaking didn't work, so someone suggested pulling directly from the repo. I got that to build on 24.11 with one other dontCheck on a dependency, but haskell-updates has the issue mentioned above | 14:50:07 |
Peter Dragos | * But the repository itself (link) is active. Jailbreaking didn't work, so someone suggested pulling directly from the repo. I got that to build on 24.11 with one other dontCheck on a dependency, but haskell-updates has the issue mentioned above | 14:50:19 |
maralorn | Huh, then I am confused. | 14:50:50 |
maralorn | Because my explanation should also mean that it doesn’t work on 24.11. Since the derivation clearly hasn’t changed for years. | 14:51:20 |
maralorn | Just to be sure: The error message appears in the build of accelerate and not in one of its dependencies? | 14:52:02 |
maralorn | Huh, you used callCabal2nix or something similar on 24.11, right? Because the accelerate derivation in nixpkgs indeed does not mention mircolens, formatting or double-conversion. | 14:53:35 |
Peter Dragos | I did, yes.
My complete overlay was
hs-overlay = final: prev: {
haskell = prev.haskell // {
packageOverrides = hfinal: hprev:
prev.haskell.packageOverrides hfinal hprev // {
parconc-examples = hfinal.callCabal2nix "parconc-examples" ./. { };
accelerate = hfinal.callCabal2nix "accelerate"
(final.fetchFromGitHub {
owner = "AccelerateHS";
repo = "accelerate";
rev = "3f681a5091eddf5a3b97f4cd0de32adc830e1117";
sha256 = "sha256-tCcl7wAls+5cBSrqbxfEAJngbV43OJcLJdaC4qqkBxc=";
}
)
{ };
distributed-process-simplelocalnet =
final.haskell.lib.dontCheck hprev.distributed-process-simplelocalnet;
};
};
parconc-examples = final.haskell.lib.compose.justStaticExecutables final.haskellPackages.parconc-examples;
};
| 14:54:53 |
Peter Dragos | and the command I'm using to try the build is √ nixpkgs % nix build .#haskellPackages.accelerate --impure, which gives
> Using Parsec parser
> Configuring accelerate-1.3.0.0...
> CallStack (from HasCallStack):
> withMetadata, called at libraries/Cabal/Cabal/src/Distribution/Simple/Utils.hs:368:14 in Cabal-3.10.3.0-inplace:Distribution.Simple.Utils
> Error: Setup: Encountered missing or private dependencies:
> double-conversion >=2.0, formatting >=7.0, microlens >=0.4
| 14:56:16 |
maralorn | I guess at this point the cleanest solution would be a) get upstream to make a release or b) create a new accelerate-unstable derivation with cabal2nix in nixpkgs and use it to completely replace the existing derivation. cachix does it like that, iirc. | 14:56:47 |
Peter Dragos | which aligns with what you're finding. So i guess I'd need to do a slightly more involved override for the derivation to add those dependencies (and possibly other fix-ups)? | 14:56:58 |