Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding pkgconfig-depends: hdf5 pulls in Haskell's hdf5, not system hdf5 #626

Open
pmiddend opened this issue Jul 10, 2024 · 6 comments
Open

Comments

@pmiddend
Copy link

pmiddend commented Jul 10, 2024

I have basically the following in my .cabal file (full repo):

executable bla
  main-is: Main.hs
  hs-source-dirs:
      app
  build-depends:
      base >=4.7 && <5

  pkgconfig-depends: hdf5

Note I don't want to have hs-hdf5 in my package, because that's broken in nixpkgs. I want to use nixpkgs.hdf5 and build the bindings myself.

However, the derivation cabal2nix generates includes hdf5 as an input argument, and that resolves to haskellPackages.hdf5.

I was able to fix this weird situation by doing:

          haskellPackages = pkgs.haskellPackages.override
            {
                hdf5 = super.text;
              };
            };

But for hopefully obvious reasons, this is not a good solution.

Any way out of this?

@maralorn
Copy link
Member

Just add inherit (pkgs) hdf5; to the attrSet your passing to callCabal2nix in line 68.

@pmiddend
Copy link
Author

Just add inherit (pkgs) hdf5; to the attrSet your passing to callCabal2nix in line 68.

Ah, thanks, that works!

But I'm not sure if we should close the issue now. I do see this as a bug. Specifying pkgconfig-depends should not lead to any Haskell packages being included suddenly.

@maralorn
Copy link
Member

This falls certainly into the "works as intended category".

I think everyone who learns about this is annoyed by it (at least in the beginning.)

This is caused by conventions in nixpkgs which have to do with making overriding and cross-compilation work.

It seems like a reasonable feature request to make this better, but I don’t see a solution without breaking other things.

@pmiddend
Copy link
Author

And something along the lines of "don't take haskellLib, mylib as derivation parameter", but just haskellPackages and mylib and then getting the Haskell dependencies from haskellPackages.foobar doesn't work?

@maralorn
Copy link
Member

It would break overriding of haskell packages.

@pmiddend
Copy link
Author

I see. Thanks for your responses, that has been very helpful. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants