Skip to content

isDragonfly instead of isDragonFly causes vty-crossplatform to fail to build #2312

Open
@thomasjm

Description

@thomasjm

Describe the bug

I'm trying to cross-compile an application to Windows. The application depends on vty-crossplatform, which has some interesting conditionals in its cabal file:

https://github.com/jtdaugherty/vty-crossplatform/blob/9ed037f0420460c04ecd3e1f07fa5ad9e7ed5eec/vty-crossplatform.cabal#L33-L44

As you can see, it includes a cabal conditional test of os(dragonfly).

Now, look at the code generated in hackage.nix for this package:

https://github.com/input-output-hk/hackage.nix/blob/5adaa9f1550f8cf5b6ae2c9183dd5ac197f5620c/hackage/vty-crossplatform-0.4.0.0-r0-50593f91ad16777d921138475a8d2784d538fd206addd30664c620278d6c8544.nix#L38

As you can see, the generated Nix in hackage.nix has mapped this to a test of system.isDragonfly.

This fails for me, and I get an error like this:

error: attribute 'isDragonfly' missing 
...
Did you mean isDragonFly?

Additional context

This error is difficult to trigger, since if you're building on Linux or macOS you short-circuit before hitting this test. It only came up when trying to cross-compile.

I couldn't figure out where these system.* properties are defined. But it appears that the code that generates hackage.nix is following a simple procedure where it capitalizes the word and adds "is," so os(windows) -> system.isWindows and so on.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions