unikernel fails to build for non-unix targets
RyanGibb opened this issue · comments
Ryan Gibb commented
File "duniverse/Zarith/dune", line 22, characters 12-16:
22 | (libraries unix)
^^^^
Error: Library "unix" in
/home/ryan/.opam/default/solo5-sysroot/lib/ocaml
is hidden (unsatisfied 'exist_if').
-> required by _build/solo5/duniverse/Zarith/discover.exe
-> required by _build/solo5/duniverse/Zarith/gmp.env
-> required by _build/solo5/duniverse/Zarith/Makefile
-> required by _build/solo5/duniverse/Zarith/libs.sexp
-> required by _build/solo5/duniverse/Zarith/zarith.cmxa
-> required by _build/solo5/mirage/main.exe
-> required by _build/solo5/mirage/www.hvt
-> required by _build/solo5/mirage/dist/www.hvt
-> required by alias mirage/dist/all (context solo5)
-> required by alias mirage/dist/default (context solo5)
This is caused by Zarith=1.12+dune depending on unix:
https://github.com/dune-universe/Zarith/blob/512da67bd11f41f7c51c846e971de7bcac3ab9b7/dune#L22
Calascibetta Romain commented
You shouldn't take the Zarith+dune
version but the Zarith+dune+mirage1
version. What is your workflow? Did you invoke opam monorepo
with --require-cross-compile
?
Ryan Gibb commented
Yes I've just realized this! I'm using nix to build mirage-www with this project: https://github.com/RyanGibb/hillingar. The problem was I wasn't using mirage-opam-overlays. This commit fixes the issue.