I don't have a general answer for finding such dependencies, but in the list you have it seems there is at least batteries that depends on Unix. Le 13 juin 2015 09:22:28 UTC+02:00, Tim Cuthbertson a écrit : >Hi all, > >I'm attempting to convert an existing (reasonably small) HTTP server >written in OCaml to run on mirage's xen backend. I've gotten the >compiler >reasonably happy by replacing uses of Unix / Lwt_unix with appropriate >mirage-compatible modules. But when it comes to link time, it seems >that my >application is still indirectly depending on Unix: > >+ ocamlbuild -quiet -cflag -warn-error -cflag +a-3 -build-dir >[...]/_build/mirage-xen -use-ocamlfind -lflags >-g,-linkpkg,-dontlink,unix >main.native.o >+ ocamlfind ocamlopt -g -linkpkg -dontlink unix -output-obj -syntax >camlp4o >-package 'fat-filesystem, io-page, mirage-block-xen.front, batteries, >yojson, safepass, sha, lwt, lwt.syntax, mirage-console.xen, >mirage-types, >mirage-types.lwt, mirage-net-xen, mirage-types,cohttp,cohttp.lwt, >mirage-http, lwt, mirage.runtime, >tcpip.stack-direct,tcpip.stack-socket,mirage-clock-xen,conduit.mirage' >src/passe.cmx src/passe_server.cmx src/unikernel.cmx main.cmx -o >main.native.o >File "_none_", line 1: >Error: No implementations provided for the following modules: > Unix referenced from >/home/tim/.opam/mirage_4_01_0/lib/lwt/lwt-unix.cmxa(Lwt_engine), > /home/tim/.opam/mirage_4_01_0/lib/lwt/lwt-unix.cmxa(Lwt_unix), > >/home/tim/.opam/mirage_4_01_0/lib/ipaddr/ipaddr_unix.cmxa(Ipaddr_unix) >Command exited with code 2. > >I can't figure out why those modules are being linked in, though. I >have >grepped all files in _build/mirage-xen/**/*.ml.depends (as well as my >own >source code), and nothing in there matches "unix", nor mentions any of >the >modules listed above. The only lwt_* matches are: > >Cohttp_lwt_body >Lwt_mutex >Lwt_stream > >Which all seem like they shouldn't depend on unix either directly or >indirectly. > >Is there some way to see a tree / list of "what module in my source >code is >transitively depending on Unix, and via what modules is that dependency >inherited?" Or even if there's no way to see a tree, is there a way to >do >it one step at a time (e.g "what is depending directly on Lwt_unix", >then >repeat the process for those modules listed until I see something that >surprises me) > >Failing that, does anyone have tricks for weeding indirect `Unix` usage >out >of a codebase which is not directly using it? > >Thanks, > - Tim Cuthbertson > >-- >Caml-list mailing list. Subscription management and archives: >https://sympa.inria.fr/sympa/arc/caml-list >Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >Bug reports: http://caml.inria.fr/bin/caml-bugs -- Simon