You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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.
The text was updated successfully, but these errors were encountered:
Special case certain values so os(dragonfly) -> system.isDragonFly
Make a list of attrs that are known to exist on the system in the Nix code, and for those keep the current behavior (modulo the name remapping in 1.). For unrecognized attrs, emit a Nix check that's more conservative, like
(hasAttr"isBluebeard"system&&system.isBluebeard)
or even emit a warning:
(ifhasAttr"isBluebeard"systemthensystem.isBluebeardelsebuiltins.trace"Warning: system.isBluebeard from os() condition was not defined"false)
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 ofsystem.isDragonfly
.This fails for me, and I get an error like this:
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 generateshackage.nix
is following a simple procedure where it capitalizes the word and adds "is," soos(windows)
->system.isWindows
and so on.The text was updated successfully, but these errors were encountered: