Version française
Home     About     Download     Resources     Contact us    
Browse thread
Controlling module loading order.
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
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/