Browse thread
Controlling module loading order.
- Guillaume Yziquel
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2010-01-08 (20:55) |
From: | Guillaume Yziquel <guillaume.yziquel@c...> |
Subject: | Controlling module loading order. |
Hi. I've been reimpleminting the OCaml-R binding, and implemented a simple wrapper around the Quantmod package in R: http://yziquel.homelinux.org/gitweb/?p=ocaml-r.git;a=tree http://yziquel.homelinux.org/gitweb/?p=ocamlr-quantmod.git;a=tree Testing these modules from the toplevel is quite fine. However, when compiling stuff using these pieces of code, I have issues with the way the modules are loaded, since the order in which they are loaded has side-effects: Initialisation of the R interpreter in the good case, segfaults in the bad case... For instance, the META file of OCaml-R: > 1 name = "R" > 2 version = "0.2" > 3 description = "R bindings for OCaml" > 4 requires = "unix" > 5 archive(byte) = "r.cma" > 6 archive(native) = "r.cmxa" > 7 > 8 package "interpreter" ( > 9 version = "0.2" > 10 description = "Embedded R interpreter" > 11 requires = "R" > 12 archive(byte) = "oCamlR.cma" > 13 archive(native) = "oCamlR.cmxa" > 14 ) The stub functions are in package "R", and package "R.interpreter" contains a module with and empty signature, whose side-effects are to initialise the R interpreter through an application of the functor > 19 module Interpreter (Env : Environment) : Interpreter = struct > 20 > 21 let () = init ~name: Env.name > 22 ~argv: Env.options > 23 ~env: Env.env > 24 ~sigs: Env.signal_handlers > 25 () > 26 > 27 end My issue concerns the Quantmod wrapper: How can I make sure that when the Quantmod module is loaded, the OCamlR module of the "R.interpreter" findlib package gets loaded before? Currently the ocamlbuild _tags file for ocamlr-quantmod is > 1 <quantmod.ml>: pkg_R.interpreter, pkg_CRAN-zoo But that doesn't seem to do the trick... My question is: do I have to put a line like "module X = OCamlR" in quantmod.ml, or is there a way to load OCamlR beforehand just by tweaking the build process, order of modules when linking, etc... All the best, -- Guillaume Yziquel http://yziquel.homelinux.org/