Commits

Oliver Gu committed cd49204

Updated oasis setup

  • Participants
  • Parent commits 0789ce0

Comments (0)

Files changed (6)

 (* OASIS_START *)
-(* DO NOT EDIT (digest: d563d9a4d83bcc53e3fbd2e02e5ba741) *)
-Authors of libsvm-ocaml
+(* DO NOT EDIT (digest: 1dd4204bc56cc4c9c7a17ed36cc08f21) *)
+Authors of libsvm
 Oliver Gu <gu.oliver@yahoo.com>
 Dominik Brugger <dominikbrugger@fastmail.fm>
 (* OASIS_STOP *)
 (* OASIS_START *)
-(* DO NOT EDIT (digest: 0da94f6a806e2169c92934136b9aa7e7) *)
-This is the INSTALL file for the libsvm-ocaml distribution.
+(* DO NOT EDIT (digest: 50e87c2b6e1e6a4f0370292db6bfbb84) *)
+This is the INSTALL file for the libsvm distribution.
 
 This package uses OASIS to generate its build system. See section OASIS for
 full information. 
 In order to compile this package, you will need:
 * ocaml (>= 3.12) for all, test libsvm, doc API
 * findlib (>= 1.3.1)
-* core for library svm
+* core (>= 108.08.00) for library svm
 * lacaml for library svm
 * sexplib for executable svm_cli
 
 OASISFormat:       0.3
-Name:              libsvm-ocaml
+Name:              libsvm
 Version:           0.9.2
-Synopsis:          libsvm-ocaml - OCaml bindings to the LIBSVM library
-Description:       libsvm-ocaml offers an OCaml-interface to the LIBSVM library
-Authors:           Oliver Gu <gu.oliver@yahoo.com>
+Synopsis:          LIBSVM bindings for OCaml
+Description:       LIBSVM-OCaml is an OCaml library with bindings to the LIBSVM
+                   library, which is a library for Support Vector Machines.
+                   Support Vector Machines are used to create supervised
+                   learning models for classification and regression problems
+                   in machine learning.
+Authors:           Oliver Gu <gu.oliver@yahoo.com>,
                    Dominik Brugger <dominikbrugger@fastmail.fm>
 License:           LGPL-2.1+ with OCaml linking exception
 OCamlVersion:      >= 3.12
   CSources:       libsvm_stubs.c
   CCOpt:          -g -O2 -fPIC -DPIC
   CCLib:          -lsvm
-  BuildDepends:   threads,core,lacaml
+  BuildDepends:   threads,
+                  core (>= 108.08.00),
+                  lacaml
 
 # Examples
 
 # OASIS_START
-# DO NOT EDIT (digest: b4e3db362137bcb87aa5a7549155e7d7)
+# DO NOT EDIT (digest: 909bcc7545db5d32657446e53264116a)
 version = "0.9.2"
-description = "libsvm-ocaml - OCaml bindings to the LIBSVM library"
+description = "LIBSVM bindings for OCaml"
 requires = "threads core lacaml"
 archive(byte) = "svm.cma"
 archive(byte, plugin) = "svm.cma"

File myocamlbuild.ml

 (* OASIS_START *)
-(* DO NOT EDIT (digest: a8225caa7721fbf7ad603ce6f9619518) *)
+(* DO NOT EDIT (digest: ee7041c4c51364a1942095a929bb851a) *)
 module OASISGettext = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISGettext.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISGettext.ml"
+  
   let ns_ str =
     str
-
+  
   let s_ str =
     str
-
+  
   let f_ (str : ('a, 'b, 'c, 'd) format4) =
     str
-
+  
   let fn_ fmt1 fmt2 n =
     if n = 1 then
       fmt1^^""
     else
       fmt2^^""
-
+  
   let init =
     []
-
+  
 end
 
 module OASISExpr = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISExpr.ml"
-
-
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISExpr.ml"
+  
+  
+  
   open OASISGettext
-
+  
   type test = string 
-
+  
   type flag = string 
-
+  
   type t =
     | EBool of bool
     | ENot of t
     | EFlag of flag
     | ETest of test * string
     
-
+  
   type 'a choices = (t * 'a) list 
-
+  
   let eval var_get t =
     let rec eval' =
       function
         | EBool b ->
             b
-
+  
         | ENot e ->
             not (eval' e)
-
+  
         | EAnd (e1, e2) ->
             (eval' e1) && (eval' e2)
-
+  
         | EOr (e1, e2) ->
             (eval' e1) || (eval' e2)
-
+  
         | EFlag nm ->
             let v =
               var_get nm
             in
               assert(v = "true" || v = "false");
               (v = "true")
-
+  
         | ETest (nm, vl) ->
             let v =
               var_get nm
               (v = vl)
     in
       eval' t
-
+  
   let choose ?printer ?name var_get lst =
     let rec choose_aux =
       function
                          str_lst)
     in
       choose_aux (List.rev lst)
-
+  
 end
 
 
 # 117 "myocamlbuild.ml"
 module BaseEnvLight = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/base/BaseEnvLight.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/base/BaseEnvLight.ml"
+  
   module MapString = Map.Make(String)
-
+  
   type t = string MapString.t
-
+  
   let default_filename =
     Filename.concat
       (Sys.getcwd ())
       "setup.data"
-
+  
   let load ?(allow_empty=false) ?(filename=default_filename) () =
     if Sys.file_exists filename then
       begin
              "Unable to load environment, the file '%s' doesn't exist."
              filename)
       end
-
+  
   let var_get name env =
     let rec var_expand str =
       let buff =
         Buffer.contents buff
     in
       var_expand (MapString.find name env)
-
+  
   let var_choose lst env =
     OASISExpr.choose
       (fun nm -> var_get nm env)
 
 # 215 "myocamlbuild.ml"
 module MyOCamlbuildFindlib = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml"
+  
   (** OCamlbuild extension, copied from 
     * http://brion.inria.fr/gallium/index.php/Using_ocamlfind_with_ocamlbuild
     * by N. Pouillard and others
     * Modified by Sylvain Le Gall 
     *)
   open Ocamlbuild_plugin
-
+  
   (* these functions are not really officially exported *)
   let run_and_read = 
     Ocamlbuild_pack.My_unix.run_and_read
-
+  
   let blank_sep_strings = 
     Ocamlbuild_pack.Lexers.blank_sep_strings
-
+  
   let split s ch =
     let x = 
       ref [] 
       try
         go s
       with Not_found -> !x
-
+  
   let split_nl s = split s '\n'
-
+  
   let before_space s =
     try
       String.before s (String.index s ' ')
     with Not_found -> s
-
+  
   (* this lists all supported packages *)
   let find_packages () =
     List.map before_space (split_nl & run_and_read "ocamlfind list")
-
+  
   (* this is supposed to list available syntaxes, but I don't know how to do it. *)
   let find_syntaxes () = ["camlp4o"; "camlp4r"]
-
+  
   (* ocamlfind command *)
   let ocamlfind x = S[A"ocamlfind"; x]
-
+  
   let dispatch =
     function
       | Before_options ->
               flag ["ocaml"; "infer_interface"; "pkg_"^pkg] & S[A"-package"; A pkg];
             end 
             (find_packages ());
-
+  
           (* Like -package but for extensions syntax. Morover -syntax is useless
            * when linking. *)
           List.iter begin fun syntax ->
           flag ["ocaml"; "doc";      "syntax_"^syntax] & S[A"-syntax"; A syntax];
           flag ["ocaml"; "infer_interface"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
           end (find_syntaxes ());
-
+  
           (* The default "thread" tag is not compatible with ocamlfind.
            * Indeed, the default rules add the "threads.cma" or "threads.cmxa"
            * options when using this tag. When using the "-linkpkg" option with
           flag ["ocaml"; "pkg_threads"; "doc"] (S[A "-I"; A "+threads"]);
           flag ["ocaml"; "pkg_threads"; "link"] (S[A "-thread"]);
           flag ["ocaml"; "pkg_threads"; "infer_interface"] (S[A "-thread"])
-
+  
       | _ -> 
           ()
-
+  
 end
 
 module MyOCamlbuildBase = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/plugins/ocamlbuild/MyOCamlbuildBase.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/plugins/ocamlbuild/MyOCamlbuildBase.ml"
+  
   (** Base functions for writing myocamlbuild.ml
       @author Sylvain Le Gall
     *)
-
-
-
+  
+  
+  
   open Ocamlbuild_plugin
   module OC = Ocamlbuild_pack.Ocaml_compiler
-
+  
   type dir = string 
   type file = string 
   type name = string 
   type tag = string 
-
-# 56 "/home/ogu/src/ocaml/oasis-0.3.0/src/plugins/ocamlbuild/MyOCamlbuildBase.ml"
-
+  
+# 56 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/plugins/ocamlbuild/MyOCamlbuildBase.ml"
+  
   type t =
       {
         lib_ocaml: (name * dir list) list;
          *)
         includes:  (dir * dir list) list; 
       } 
-
+  
   let env_filename =
     Pathname.basename 
       BaseEnvLight.default_filename
-
+  
   let dispatch_combine lst =
     fun e ->
       List.iter 
         (fun dispatch -> dispatch e)
         lst 
-
+  
   let tag_libstubs nm =
     "use_lib"^nm^"_stubs"
-
+  
   let nm_libstubs nm =
     nm^"_stubs"
-
+  
   let dispatch t e = 
     let env = 
       BaseEnvLight.load 
                   Options.ext_lib, "ext_lib";
                   Options.ext_dll, "ext_dll";
                 ]
-
+  
+        | Before_rules ->
+          (* TODO: move this into its own file and conditionnaly include it, if
+           * needed.
+           *)
+          (* OCaml cmxs rules: cmxs available in ocamlopt but not ocamlbuild.
+             Copied from ocaml_specific.ml in ocamlbuild sources. *)
+          let has_native_dynlink =
+            try
+              bool_of_string (BaseEnvLight.var_get "native_dynlink" env)
+            with Not_found ->
+              false
+          in
+          if has_native_dynlink && String.sub Sys.ocaml_version 0 4 = "3.11" then
+            begin
+              let ext_lib = !Options.ext_lib in
+              let ext_obj = !Options.ext_obj in
+              let ext_dll = !Options.ext_dll in
+              let x_o = "%"-.-ext_obj in
+              let x_a = "%"-.-ext_lib in
+              let x_dll = "%"-.-ext_dll in
+              let x_p_o = "%.p"-.-ext_obj in
+              let x_p_a = "%.p"-.-ext_lib in
+              let x_p_dll = "%.p"-.-ext_dll in
+  
+              rule "ocaml: mldylib & p.cmx* & p.o* -> p.cmxs & p.so"
+                   ~tags:["ocaml"; "native"; "profile"; "shared"; "library"]
+                   ~prods:["%.p.cmxs"; x_p_dll]
+                   ~dep:"%.mldylib"
+                   (OC.native_profile_shared_library_link_mldylib
+                      "%.mldylib" "%.p.cmxs");
+  
+              rule "ocaml: mldylib & cmx* & o* -> cmxs & so"
+                   ~tags:["ocaml"; "native"; "shared"; "library"]
+                   ~prods:["%.cmxs"; x_dll]
+                   ~dep:"%.mldylib"
+                   (OC.native_shared_library_link_mldylib
+                      "%.mldylib" "%.cmxs");
+  
+              rule "ocaml: p.cmx & p.o -> p.cmxs & p.so"
+                   ~tags:["ocaml"; "native"; "profile"; "shared"; "library"]
+                   ~prods:["%.p.cmxs"; x_p_dll]
+                   ~deps:["%.p.cmx"; x_p_o]
+                   (OC.native_shared_library_link ~tags:["profile"]
+                                                  "%.p.cmx" "%.p.cmxs");
+  
+              rule "ocaml: p.cmxa & p.a -> p.cmxs & p.so"
+                   ~tags:["ocaml"; "native"; "profile"; "shared"; "library"]
+                   ~prods:["%.p.cmxs"; x_p_dll]
+                   ~deps:["%.p.cmxa"; x_p_a]
+                   (OC.native_shared_library_link ~tags:["profile"; "linkall"]
+                                                  "%.p.cmxa" "%.p.cmxs");
+  
+              rule "ocaml: cmx & o -> cmxs"
+                   ~tags:["ocaml"; "native"; "shared"; "library"]
+                   ~prods:["%.cmxs"]
+                   ~deps:["%.cmx"; x_o]
+                   (OC.native_shared_library_link "%.cmx" "%.cmxs");
+  
+              rule "ocaml: cmx & o -> cmxs & so"
+                   ~tags:["ocaml"; "native"; "shared"; "library"]
+                   ~prods:["%.cmxs"; x_dll]
+                   ~deps:["%.cmx"; x_o]
+                   (OC.native_shared_library_link "%.cmx" "%.cmxs");
+  
+              rule "ocaml: cmxa & a -> cmxs & so"
+                   ~tags:["ocaml"; "native"; "shared"; "library"]
+                   ~prods:["%.cmxs"; x_dll]
+                   ~deps:["%.cmxa"; x_a]
+                   (OC.native_shared_library_link ~tags:["linkall"]
+                                                  "%.cmxa" "%.cmxs");
+            end
+  
         | After_rules -> 
             (* Declare OCaml libraries *)
             List.iter 
                             ["compile"; "infer_interface"; "doc"])
                        tl)
               t.lib_ocaml;
-
+  
             (* Declare directories dependencies, replace "include" in _tags. *)
             List.iter 
               (fun (dir, include_dirs) ->
                  Pathname.define_context dir include_dirs)
               t.includes;
-
+  
             (* Declare C libraries *)
             List.iter
               (fun (lib, dir, headers) ->
                    flag ["link"; "library"; "ocaml"; "byte"; tag_libstubs lib]
                      (S[A"-dllib"; A("-l"^(nm_libstubs lib)); A"-cclib";
                         A("-l"^(nm_libstubs lib))]);
-
+  
                    flag ["link"; "library"; "ocaml"; "native"; tag_libstubs lib]
                      (S[A"-cclib"; A("-l"^(nm_libstubs lib))]);
                         
                    flag ["link"; "program"; "ocaml"; "byte"; tag_libstubs lib]
                      (S[A"-dllib"; A("dll"^(nm_libstubs lib))]);
-
+  
                    (* When ocaml link something that use the C library, then one
                       need that file to be up to date.
                     *)
-                   dep ["link"; "ocaml"; "program"; tag_libstubs lib]
+                   dep  ["link"; "ocaml"; "program"; tag_libstubs lib]
                      [dir/"lib"^(nm_libstubs lib)^"."^(!Options.ext_lib)];
-
+  
                    dep  ["compile"; "ocaml"; "program"; tag_libstubs lib]
                      [dir/"lib"^(nm_libstubs lib)^"."^(!Options.ext_lib)];
-
+  
                    (* TODO: be more specific about what depends on headers *)
                    (* Depends on .h files *)
                    dep ["compile"; "c"] 
                      headers;
-
+  
                    (* Setup search path for lib *)
                    flag ["link"; "ocaml"; "use_"^lib] 
                      (S[A"-I"; P(dir)]);
               )
               t.lib_c;
-
+  
               (* Add flags *)
               List.iter
               (fun (tags, cond_specs) ->
               t.flags
         | _ -> 
             ()
-
+  
   let dispatch_default t =
     dispatch_combine 
       [
         dispatch t;
         MyOCamlbuildFindlib.dispatch;
       ]
-
+  
 end
 
 
-# 476 "myocamlbuild.ml"
+# 548 "myocamlbuild.ml"
 open Ocamlbuild_plugin;;
 let package_default =
   {
 
 let dispatch_default = MyOCamlbuildBase.dispatch_default package_default;;
 
-# 511 "myocamlbuild.ml"
+# 583 "myocamlbuild.ml"
 (* OASIS_STOP *)
 Ocamlbuild_plugin.dispatch dispatch_default;;
 (* setup.ml generated for the first time by OASIS v0.2.0 *)
 
 (* OASIS_START *)
-(* DO NOT EDIT (digest: 70aa54ceea747a13c0fb157cb43d7e38) *)
+(* DO NOT EDIT (digest: 7d85d376d466506e95e8ec9a7b527e13) *)
 (*
-   Regenerated by OASIS v0.3.0
+   Regenerated by OASIS v0.3.0~rc6
    Visit http://oasis.forge.ocamlcore.org for more information and
    documentation about functions used in this file.
 *)
 module OASISGettext = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISGettext.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISGettext.ml"
+  
   let ns_ str =
     str
-
+  
   let s_ str =
     str
-
+  
   let f_ (str : ('a, 'b, 'c, 'd) format4) =
     str
-
+  
   let fn_ fmt1 fmt2 n =
     if n = 1 then
       fmt1^^""
     else
       fmt2^^""
-
+  
   let init =
     []
-
+  
 end
 
 module OASISContext = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISContext.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISContext.ml"
+  
   open OASISGettext
-
+  
   type level =
     [ `Debug
     | `Info
     | `Warning
     | `Error]
-
+  
   type t =
     {
       quiet:                 bool;
       ignore_unknown_fields: bool;
       printf:                level -> string -> unit;
     }
-
+  
   let printf lvl str =
     let beg =
       match lvl with
         | `Debug -> s_ "D: "
     in
       prerr_endline (beg^str)
-
+  
   let default =
     ref
       {
         ignore_unknown_fields = false;
         printf                = printf;
       }
-
+  
   let quiet =
     {!default with quiet = true}
-
-
+  
+  
   let args () =
     ["-quiet",
      Arg.Unit (fun () -> default := {!default with quiet = true}),
      (s_ " Run quietly");
-
+  
      "-info",
      Arg.Unit (fun () -> default := {!default with info = true}),
      (s_ " Display information message");
-
-
+  
+  
      "-debug",
      Arg.Unit (fun () -> default := {!default with debug = true}),
      (s_ " Output debug message")]
 end
 
 module OASISString = struct
-# 1 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISString.ml"
-
-
-
+# 1 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISString.ml"
+  
+  
+  
   (** Various string utilities.
      
       Mostly inspired by extlib and batteries ExtString and BatString libraries.
-
+  
       @author Sylvain Le Gall
     *)
-
+  
   let nsplitf str f =
     if str = "" then
       []
         done;
         push ();
         List.rev !lst
-
+  
   (** [nsplit c s] Split the string [s] at char [c]. It doesn't include the
       separator.
     *)
   let nsplit str c =
     nsplitf str ((=) c)
-
+  
   let find ~what ?(offset=0) str =
     let what_idx = ref 0 in
     let str_idx = ref offset in 
         raise Not_found
       else 
         !str_idx - !what_idx
-
+  
   let sub_start str len = 
     let str_len = String.length str in
     if len >= str_len then
       ""
     else
       String.sub str len (str_len - len)
-
+  
   let sub_end ?(offset=0) str len =
     let str_len = String.length str in
     if len >= str_len then
       ""
     else
       String.sub str 0 (str_len - len)
-
+  
   let starts_with ~what ?(offset=0) str =
     let what_idx = ref 0 in
     let str_idx = ref offset in
         true
       else 
         false
-
+  
   let strip_starts_with ~what str =
     if starts_with ~what str then
       sub_start str (String.length what)
     else
       raise Not_found
-
+  
   let ends_with ~what ?(offset=0) str =
     let what_idx = ref ((String.length what) - 1) in
     let str_idx = ref ((String.length str) - 1) in
         true
       else 
         false
-
+  
   let strip_ends_with ~what str =
     if ends_with ~what str then
       sub_end str (String.length what)
     else
       raise Not_found
-
+  
   let replace_chars f s =
     let buf = String.make (String.length s) 'X' in
       for i = 0 to String.length s - 1 do
         buf.[i] <- f s.[i]
       done;
       buf
-
+  
 end
 
 module OASISUtils = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISUtils.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISUtils.ml"
+  
   open OASISGettext
-
+  
   module MapString = Map.Make(String)
-
+  
   let map_string_of_assoc assoc =
     List.fold_left
       (fun acc (k, v) -> MapString.add k v acc)
       MapString.empty
       assoc
-
+  
   module SetString = Set.Make(String)
-
+  
   let set_string_add_list st lst =
     List.fold_left
       (fun acc e -> SetString.add e acc)
       st
       lst
-
+  
   let set_string_of_list =
     set_string_add_list
       SetString.empty
-
-
+  
+  
   let compare_csl s1 s2 =
     String.compare (String.lowercase s1) (String.lowercase s2)
-
+  
   module HashStringCsl =
     Hashtbl.Make
       (struct
          type t = string
-
+  
          let equal s1 s2 =
              (String.lowercase s1) = (String.lowercase s2)
-
+  
          let hash s =
            Hashtbl.hash (String.lowercase s)
        end)
-
+  
   let varname_of_string ?(hyphen='_') s =
     if String.length s = 0 then
       begin
         in
           String.lowercase buf
       end
-
+  
   let varname_concat ?(hyphen='_') p s =
     let what = String.make 1 hyphen in
     let p =
         s
     in
       p^what^s
-
-
+  
+  
   let is_varname str =
     str = varname_of_string str
-
+  
   let failwithf fmt = Printf.ksprintf failwith fmt
-
+  
 end
 
 module PropList = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/PropList.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/PropList.ml"
+  
   open OASISGettext
-
+  
   type name = string
-
+  
   exception Not_set of name * string option
   exception No_printer of name
   exception Unknown_field of name * name
-
+  
   let () =
     Printexc.register_printer
       (function
                (Printf.sprintf (f_ "Field %s is not defined in schema %s") nm schm)
          | _ ->
              None)
-
+  
   module Data =
   struct
-
+  
     type t =
         (name, unit -> unit) Hashtbl.t
-
+  
     let create () =
       Hashtbl.create 13
-
+  
     let clear t =
       Hashtbl.clear t
-
-# 71 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/PropList.ml"
+  
+# 71 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/PropList.ml"
   end
-
+  
   module Schema =
   struct
-
+  
     type ('ctxt, 'extra) value =
         {
           get:   Data.t -> string;
           help:  (unit -> string) option;
           extra: 'extra;
         }
-
+  
     type ('ctxt, 'extra) t =
         {
           name:      name;
           order:     name Queue.t;
           name_norm: string -> string;
         }
-
+  
     let create ?(case_insensitive=false) nm =
       {
         name      = nm;
            else
              fun s -> s);
       }
-
+  
     let add t nm set get extra help =
       let key =
         t.name_norm nm
       in
-
+  
         if Hashtbl.mem t.fields key then
           failwith
             (Printf.sprintf
             extra = extra;
           };
         Queue.add nm t.order
-
+  
     let mem t nm =
       Hashtbl.mem t.fields nm
-
+  
     let find t nm =
       try
         Hashtbl.find t.fields (t.name_norm nm)
       with Not_found ->
         raise (Unknown_field (nm, t.name))
-
+  
     let get t data nm =
       (find t nm).get data
-
+  
     let set t data nm ?context x =
       (find t nm).set
         data
         ?context
         x
-
+  
     let fold f acc t =
       Queue.fold
         (fun acc k ->
              f acc k v.extra v.help)
         acc
         t.order
-
+  
     let iter f t =
       fold
         (fun () -> f)
         ()
         t
-
+  
     let name t =
       t.name
   end
-
+  
   module Field =
   struct
-
+  
     type ('ctxt, 'value, 'extra) t =
         {
           set:    Data.t -> ?context:'ctxt -> 'value -> unit;
           help:   (unit -> string) option;
           extra:  'extra;
         }
-
+  
     let new_id =
       let last_id =
         ref 0
       in
         fun () -> incr last_id; !last_id
-
+  
     let create ?schema ?name ?parse ?print ?default ?update ?help extra =
       (* Default value container *)
       let v =
         ref None
       in
-
+  
       (* If name is not given, create unique one *)
       let nm =
         match name with
           | Some s -> s
           | None -> Printf.sprintf "_anon_%d" (new_id ())
       in
-
+  
       (* Last chance to get a value: the default *)
       let default () =
         match default with
           | Some d -> d
           | None -> raise (Not_set (nm, Some (s_ "no default value")))
       in
-
+  
       (* Get data *)
       let get data =
         (* Get value *)
         with Not_found ->
           default ()
       in
-
+  
       (* Set data *)
       let set data ?context x =
         let x =
             nm
             (fun () -> v := Some x)
       in
-
+  
       (* Parse string value, if possible *)
       let parse =
         match parse with
                      nm
                      s)
       in
-
+  
       (* Set data, from string *)
       let sets data ?context s =
         set ?context data (parse ?context s)
       in
-
+  
       (* Output value as string, if possible *)
       let print =
         match print with
           | None ->
               fun _ -> raise (No_printer nm)
       in
-
+  
       (* Get data, as a string *)
       let gets data =
         print (get data)
       in
-
+  
         begin
           match schema with
             | Some t ->
             | None ->
                 ()
         end;
-
+  
         {
           set   = set;
           get   = get;
           help  = help;
           extra = extra;
         }
-
+  
     let fset data t ?context x =
       t.set data ?context x
-
+  
     let fget data t =
       t.get data
-
+  
     let fsets data t ?context s =
       t.sets data ?context s
-
+  
     let fgets data t =
       t.gets data
-
+  
   end
-
+  
   module FieldRO =
   struct
-
+  
     let create ?schema ?name ?parse ?print ?default ?update ?help extra =
       let fld =
         Field.create ?schema ?name ?parse ?print ?default ?update ?help extra
       in
         fun data -> Field.fget data fld
-
+  
   end
 end
 
 module OASISMessage = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISMessage.ml"
-
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISMessage.ml"
+  
+  
   open OASISGettext
   open OASISContext
-
+  
   let generic_message ~ctxt lvl fmt =
     let cond =
       if ctxt.quiet then
                ctxt.printf lvl str
              end)
         fmt
-
+  
   let debug ~ctxt fmt =
     generic_message ~ctxt `Debug fmt
-
+  
   let info ~ctxt fmt =
     generic_message ~ctxt `Info fmt
-
+  
   let warning ~ctxt fmt =
     generic_message ~ctxt `Warning fmt
-
+  
   let error ~ctxt fmt =
     generic_message ~ctxt `Error fmt
-
+  
 end
 
 module OASISVersion = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISVersion.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISVersion.ml"
+  
   open OASISGettext
-
-
-
+  
+  
+  
   type s = string
-
+  
   type t = string 
-
+  
   type comparator =
     | VGreater of t
     | VGreaterEqual of t
     | VOr of  comparator * comparator
     | VAnd of comparator * comparator
     
-
+  
   (* Range of allowed characters *)
   let is_digit c =
     '0' <= c && c <= '9'
-
+  
   let is_alpha c =
     ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')
-
+  
   let is_special =
     function
       | '.' | '+' | '-' | '~' -> true
       | _ -> false
-
+  
   let rec version_compare v1 v2 =
     if v1 <> "" || v2 <> "" then
       begin
           else if is_alpha c then Char.code c
           else (Char.code c) + 256
         in
-
+  
         let len1 = String.length v1 in
         let len2 = String.length v2 in
-
+  
         let p = ref 0 in
-
+  
         (** Compare ascii part *)
         let compare_vascii () =
           let cmp = ref 0 in
           else
             !cmp
         in
-
+  
         (** Compare digit part *)
         let compare_digit () =
           let extract_int v p =
           let i2, tl2 = extract_int v2 (ref !p) in
             i1 - i2, tl1, tl2
         in
-
+  
           match compare_vascii () with
             | 0 ->
                 begin
       begin
         0
       end
-
-
+  
+  
   let version_of_string str = str
-
+  
   let string_of_version t = t
-
+  
   let chop t =
     try
       let pos =
         String.sub t 0 pos
     with Not_found ->
       t
-
+  
   let rec comparator_apply v op =
     match op with
       | VGreater cv ->
           (comparator_apply v op1) || (comparator_apply v op2)
       | VAnd (op1, op2) ->
           (comparator_apply v op1) && (comparator_apply v op2)
-
+  
   let rec string_of_comparator =
     function
       | VGreater v  -> "> "^(string_of_version v)
           (string_of_comparator c1)^" || "^(string_of_comparator c2)
       | VAnd (c1, c2) ->
           (string_of_comparator c1)^" && "^(string_of_comparator c2)
-
+  
   let rec varname_of_comparator =
     let concat p v =
       OASISUtils.varname_concat
             (varname_of_comparator c1)^"_or_"^(varname_of_comparator c2)
         | VAnd (c1, c2) ->
             (varname_of_comparator c1)^"_and_"^(varname_of_comparator c2)
-
+  
   let version_0_3_or_after t =
     comparator_apply t (VGreaterEqual (string_of_version "0.3"))
-
+  
 end
 
 module OASISLicense = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISLicense.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISLicense.ml"
+  
   (** License for _oasis fields
       @author Sylvain Le Gall
     *)
-
-
-
+  
+  
+  
   type license = string 
-
+  
   type license_exception = string 
-
+  
   type license_version =
     | Version of OASISVersion.t
     | VersionOrLater of OASISVersion.t
     | NoVersion
     
-
+  
   type license_dep_5_unit =
     {
       license:   license;
       version:   license_version;
     }
     
-
+  
   type license_dep_5 =
     | DEP5Unit of license_dep_5_unit
     | DEP5Or of license_dep_5 list
     | DEP5And of license_dep_5 list
     
-
+  
   type t =
     | DEP5License of license_dep_5
     | OtherLicense of string (* URL *)
     
-
+  
 end
 
 module OASISExpr = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISExpr.ml"
-
-
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISExpr.ml"
+  
+  
+  
   open OASISGettext
-
+  
   type test = string 
-
+  
   type flag = string 
-
+  
   type t =
     | EBool of bool
     | ENot of t
     | EFlag of flag
     | ETest of test * string
     
-
+  
   type 'a choices = (t * 'a) list 
-
+  
   let eval var_get t =
     let rec eval' =
       function
         | EBool b ->
             b
-
+  
         | ENot e ->
             not (eval' e)
-
+  
         | EAnd (e1, e2) ->
             (eval' e1) && (eval' e2)
-
+  
         | EOr (e1, e2) ->
             (eval' e1) || (eval' e2)
-
+  
         | EFlag nm ->
             let v =
               var_get nm
             in
               assert(v = "true" || v = "false");
               (v = "true")
-
+  
         | ETest (nm, vl) ->
             let v =
               var_get nm
               (v = vl)
     in
       eval' t
-
+  
   let choose ?printer ?name var_get lst =
     let rec choose_aux =
       function
                          str_lst)
     in
       choose_aux (List.rev lst)
-
+  
 end
 
 module OASISTypes = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISTypes.ml"
-
-
-
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISTypes.ml"
+  
+  
+  
+  
   type name          = string 
   type package_name  = string 
   type url           = string 
   type arg           = string 
   type args          = string list 
   type command_line  = (prog * arg list) 
-
+  
   type findlib_name = string 
   type findlib_full = string 
-
+  
   type compiled_object =
     | Byte
     | Native
     | Best
     
-
+  
   type dependency =
     | FindlibPackage of findlib_full * OASISVersion.comparator option
     | InternalLibrary of name
     
-
+  
   type tool =
     | ExternalTool of name
     | InternalExecutable of name
     
-
+  
   type vcs =
     | Darcs
     | Git
     | Monotone
     | OtherVCS of url
     
-
+  
   type plugin_kind =
       [  `Configure
        | `Build
        | `Install
        | `Extra
       ]
-
+  
   type plugin_data_purpose =
       [  `Configure
        | `Build
        | `Extra
        | `Other of string
       ]
-
+  
   type 'a plugin = 'a * name * OASISVersion.t option 
-
+  
   type all_plugin = plugin_kind plugin
-
+  
   type plugin_data = (all_plugin * plugin_data_purpose * (unit -> unit)) list
-
-# 102 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISTypes.ml"
-
+  
+# 102 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISTypes.ml"
+  
   type 'a conditional = 'a OASISExpr.choices 
-
+  
   type custom =
       {
         pre_command:  (command_line option) conditional;
         post_command: (command_line option) conditional;
       }
       
-
+  
   type common_section =
       {
         cs_name: name;
         cs_plugin_data: plugin_data;
       }
       
-
+  
   type build_section =
       {
         bs_build:           bool conditional;
         bs_nativeopt:       args conditional;
       }
       
-
+  
   type library =
       {
         lib_modules:            string list;
         lib_findlib_name:       findlib_name option;
         lib_findlib_containers: findlib_name list;
       } 
-
+  
   type executable =
       {
         exec_custom:          bool;
         exec_main_is:         unix_filename;
       } 
-
+  
   type flag =
       {
         flag_description:  string option;
         flag_default:      bool conditional;
       } 
-
+  
   type source_repository =
       {
         src_repo_type:        vcs;
         src_repo_tag:         string option;
         src_repo_subdir:      unix_filename option;
       } 
-
+  
   type test =
       {
         test_type:               [`Test] plugin;
         test_run:                bool conditional;
         test_tools:              tool list;
       } 
-
+  
   type doc_format =
     | HTML of unix_filename
     | DocText
     | DVI
     | OtherDoc
     
-
+  
   type doc =
       {
         doc_type:        [`Doc] plugin;
         doc_data_files:  (unix_filename * unix_filename option) list;
         doc_build_tools: tool list;
       } 
-
+  
   type section =
     | Library    of common_section * build_section * library
     | Executable of common_section * build_section * executable
     | Test       of common_section * test
     | Doc        of common_section * doc
     
-
+  
   type section_kind =
       [ `Library | `Executable | `Flag | `SrcRepo | `Test | `Doc ]
-
+  
   type package = 
       {
         oasis_version:    OASISVersion.t;
         synopsis:         string;
         description:      string option;
         categories:       url list;
-
+  
         conf_type:        [`Configure] plugin;
         conf_custom:      custom;
-
+  
         build_type:       [`Build] plugin;
         build_custom:     custom;
-
+  
         install_type:     [`Install] plugin;
         install_custom:   custom;
         uninstall_custom: custom;
-
+  
         clean_custom:     custom;
         distclean_custom: custom;
-
+  
         files_ab:         unix_filename list;
         sections:         section list;
         plugins:          [`Extra] plugin list;
         schema_data:      PropList.Data.t;
         plugin_data:      plugin_data;
       } 
-
+  
 end
 
 module OASISUnixPath = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISUnixPath.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISUnixPath.ml"
+  
   type unix_filename = string
   type unix_dirname = string
-
+  
   type host_filename = string
   type host_dirname = string
-
+  
   let current_dir_name = "."
-
+  
   let parent_dir_name = ".."
-
-  let is_current_dir fn =
-    fn = current_dir_name || fn = ""
-
+  
   let concat f1 f2 =
-    if is_current_dir f1 then
+    if f1 = current_dir_name || f1 = "" then
       f2
     else
       let f1' =
         try OASISString.strip_ends_with ~what:"/" f1 with Not_found -> f1
       in
         f1'^"/"^f2
-
+  
   let make =
     function
       | hd :: tl ->
             tl
       | [] ->
           invalid_arg "OASISUnixPath.make"
-
+  
   let dirname f =
     try
       String.sub f 0 (String.rindex f '/')
     with Not_found ->
       current_dir_name
-
+  
   let basename f =
     try
       let pos_start =
         String.sub f pos_start ((String.length f) - pos_start)
     with Not_found ->
       f
-
+  
   let chop_extension f =
     try
       let last_dot =
               f
         with Not_found ->
           sub
-
+  
     with Not_found ->
       f
-
+  
   let capitalize_file f =
     let dir = dirname f in
     let base = basename f in
     concat dir (String.capitalize base)
-
+  
   let uncapitalize_file f =
     let dir = dirname f in
     let base = basename f in
     concat dir (String.uncapitalize base)
-
+  
 end
 
 module OASISHostPath = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISHostPath.ml"
-
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISHostPath.ml"
+  
+  
   open Filename
-
+  
   module Unix = OASISUnixPath
-
+  
   let make =
     function
       | [] ->
           invalid_arg "OASISHostPath.make"
       | hd :: tl ->
           List.fold_left Filename.concat hd tl
-
+  
   let of_unix ufn =
     if Sys.os_type = "Unix" then
       ufn
               else
                 p)
            (OASISString.nsplit ufn '/'))
-
-
+  
+  
 end
 
 module OASISSection = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISSection.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISSection.ml"
+  
   open OASISTypes
-
+  
   let section_kind_common = 
     function
       | Library (cs, _, _) -> 
           `Test, cs
       | Doc (cs, _) ->
           `Doc, cs
-
+  
   let section_common sct =
     snd (section_kind_common sct)
-
+  
   let section_common_set cs =
     function
       | Library (_, bs, lib)     -> Library (cs, bs, lib)
       | SrcRepo (_, src_repo)    -> SrcRepo (cs, src_repo)
       | Test (_, tst)            -> Test (cs, tst)
       | Doc (_, doc)             -> Doc (cs, doc)
-
+  
   (** Key used to identify section
     *)
   let section_id sct = 
       section_kind_common sct
     in
       k, cs.cs_name
-
+  
   let string_of_section sct =
     let k, nm =
       section_id sct
          | `Test       -> "test"
          | `Doc        -> "doc")
       ^" "^nm
-
+  
   let section_find id scts =
     List.find
       (fun sct -> id = section_id sct)
       scts
-
+  
   module CSection =
   struct
     type t = section
-
+  
     let id = section_id
-
+  
     let compare t1 t2 = 
       compare (id t1) (id t2)
       
     let equal t1 t2 =
       (id t1) = (id t2)
-
+  
     let hash t =
       Hashtbl.hash (id t)
   end
-
+  
   module MapSection = Map.Make(CSection)
   module SetSection = Set.Make(CSection)
-
+  
 end
 
 module OASISBuildSection = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISBuildSection.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISBuildSection.ml"
+  
 end
 
 module OASISExecutable = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISExecutable.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISExecutable.ml"
+  
   open OASISTypes
-
+  
   let unix_exec_is (cs, bs, exec) is_native ext_dll suffix_program = 
     let dir = 
       OASISUnixPath.concat
         | Best -> is_native ()
         | Byte -> false
     in
-
+  
       OASISUnixPath.concat
         dir
         (cs.cs_name^(suffix_program ())),
-
+  
       if not is_native_exec && 
          not exec.exec_custom && 
          bs.bs_c_sources <> [] then
         Some (dir^"/dll"^cs.cs_name^"_stubs"^(ext_dll ()))
       else
         None
-
+  
 end
 
 module OASISLibrary = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISLibrary.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISLibrary.ml"
+  
   open OASISTypes
   open OASISUtils
   open OASISGettext
   open OASISSection
-
+  
   type library_name = name
   type findlib_part_name = name
   type 'a map_of_findlib_part_name = 'a OASISUtils.MapString.t
-
+  
   exception InternalLibraryNotFound of library_name
   exception FindlibPackageNotFound of findlib_name
-
+  
   type group_t =
     | Container of findlib_name * group_t list
     | Package of (findlib_name *
                   build_section *
                   library *
                   group_t list)
-
+  
   (* Look for a module file, considering capitalization or not. *)
   let find_module source_file_exists (cs, bs, lib) modul =
     let possible_base_fn =
                  acc)
         (`No_sources possible_base_fn)
         possible_base_fn
-
+  
   let source_unix_files ~ctxt (cs, bs, lib) source_file_exists =
     List.fold_left
       (fun acc modul ->
                acc)
       []
       (lib.lib_modules @ lib.lib_internal_modules)
-
+  
   let generated_unix_files
         ~ctxt
         ~is_native
         ~ext_dll
         ~source_file_exists
         (cs, bs, lib) =
-
+  
     let find_modules lst ext = 
       let find_module modul =
         match find_module source_file_exists (cs, bs, lib) modul with
              (find_module nm))
         lst
     in
-
+  
     (* The headers that should be compiled along *)
     let headers =
       if lib.lib_pack then
           lib.lib_modules
           "cmi"
     in
-
+  
     (* The .cmx that be compiled along *)
     let cmxs =
       let should_be_built =
         else
           []
     in
-
+  
     let acc_nopath =
       []
     in
-
+  
     (* Compute what libraries should be built *)
     let acc_nopath =
       (* Add the packed header file if required *)
         add_pack_header ([cs.cs_name^".cma"] :: acc)
       in
       let native acc =
-        let acc = 
-          add_pack_header
-            (if has_native_dynlink then
-               [cs.cs_name^".cmxs"] :: acc
-             else acc)
-        in
-          [cs.cs_name^".cmxa"] :: [cs.cs_name^ext_lib] :: acc
+        let acc = [cs.cs_name^".cmxa"] :: [cs.cs_name^ext_lib] :: acc in
+        add_pack_header
+          (if has_native_dynlink then
+             [cs.cs_name^".cmxs"] :: acc
+           else acc)
       in
         match bs.bs_compiled_object with
           | Native ->
           | Byte | Best ->
               byte acc_nopath
     in
-
+  
     (* Add C library to be built *)
     let acc_nopath =
       if bs.bs_c_sources <> [] then
       else
         acc_nopath
     in
-
+  
       (* All the files generated *)
       List.rev_append
         (List.rev_map
               (OASISUnixPath.concat bs.bs_path))
            acc_nopath)
         (headers @ cmxs)
-
+  
   type data = common_section * build_section * library
   type tree =
     | Node of (data option) * (tree MapString.t)
     | Leaf of data
-
+  
   let findlib_mapping pkg =
     (* Map from library name to either full findlib name or parts + parent. *)
     let fndlb_parts_of_lib_name =
                                (`Solved fndlb_parts)
                                mp
                    end
-
+  
                | Executable _ | Test _ | Flag _ | SrcRepo _ | Doc _ ->
                    mp)
           MapString.empty
           pkg.sections
     in
-
+  
     (* Solve the above graph to be only library name to full findlib name. *)
     let fndlb_name_of_lib_name =
       let rec solve visited mp lib_name lib_name_child =
              | `Unsolved _ -> assert false)
           mp
     in
-
+  
     (* Convert an internal library name to a findlib name. *)
     let findlib_name_of_library_name lib_nm =
       try
       with Not_found ->
         raise (InternalLibraryNotFound lib_nm)
     in
-
+  
     (* Add a library to the tree.
      *)
     let add sct mp =
       in
         add_children (OASISString.nsplit fndlb_fullname '.') mp
     in
-
+  
     let rec group_of_tree mp =
       MapString.fold
         (fun nm node acc ->
              cur :: acc)
         mp []
     in
-
+  
     let group_mp =
       List.fold_left
         (fun mp ->
         MapString.empty
         pkg.sections
     in
-
+  
     let groups =
       group_of_tree group_mp
     in
-
+  
     let library_name_of_findlib_name =
       Lazy.lazy_from_fun
         (fun () ->
       with Not_found ->
         raise (FindlibPackageNotFound fndlb_nm)
     in
-
+  
       groups,
       findlib_name_of_library_name,
       library_name_of_findlib_name
-
+  
   let findlib_of_group =
     function
       | Container (fndlb_nm, _)
       | Package (fndlb_nm, _, _, _, _) -> fndlb_nm
-
+  
   let root_of_group grp =
     let rec root_lib_aux =
       (* We do a DFS in the group. *)
             failwithf
               (f_ "Unable to determine root library of findlib library '%s'")
               (findlib_of_group grp)
-
+  
 end
 
 module OASISFlag = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISFlag.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISFlag.ml"
+  
 end
 
 module OASISPackage = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISPackage.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISPackage.ml"
+  
 end
 
 module OASISSourceRepository = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISSourceRepository.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISSourceRepository.ml"
+  
 end
 
 module OASISTest = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISTest.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISTest.ml"
+  
 end
 
 module OASISDocument = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISDocument.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISDocument.ml"
+  
 end
 
 module OASISExec = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISExec.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISExec.ml"
+  
   open OASISGettext
   open OASISUtils
   open OASISMessage
-
-  (* TODO: I don't like this quote, it is there because $(rm) foo expands to
-   * 'rm -f' foo...
-   *)
-  let run ~ctxt ?f_exit_code ?(quote=true) cmd args =
-    let cmd =
-      if quote then
-        if Sys.os_type = "Win32" then
-          if String.contains cmd ' ' then
-            (* Double the 1st double quote... win32... sigh *)
-            "\""^(Filename.quote cmd)
-          else
-            cmd
-        else
-          Filename.quote cmd
-      else
-        cmd
-    in
+  
+  let run ~ctxt ?f_exit_code cmd args =
     let cmdline =
       String.concat " " (cmd :: args)
     in
               cmdline i
         | Some f, i ->
             f i
-
+  
   let run_read_output ~ctxt ?f_exit_code cmd args =
     let fn =
       Filename.temp_file "oasis-" ".txt"
       with e ->
         (try Sys.remove fn with _ -> ());
         raise e
-
+  
   let run_read_one_line ~ctxt ?f_exit_code cmd args =
     match run_read_output ~ctxt ?f_exit_code cmd args with
       | [fst] ->
 end
 
 module OASISFileUtil = struct
-# 21 "/home/ogu/src/ocaml/oasis-0.3.0/src/oasis/OASISFileUtil.ml"
-
+# 21 "/home/ogu/src/ocaml/oasis-0.3.0~rc6/src/oasis/OASISFileUtil.ml"
+  
   open OASISGettext
-
+  
   let file_exists_case fn =
     let dirname = Filename.dirname fn in
     let basename = Filename.basename fn in
             (Array.to_list (Sys.readdir dirname))
       else
         false
-
+  
   let find_file ?(case_sensitive=true) paths exts =
-
+  
     (* Cardinal product of two list *)
     let ( * ) lst1 lst2 =
       List.flatten
                 lst2)
            lst1)
     in
-
+  
     let rec combined_paths lst =
       match lst with
         | p1 :: p2 :: tl ->
         | [] ->
             []
     in
-
+  
     let alternatives =
       List.map
         (fun (p,e) ->
          else
            Sys.file_exists)
         alternatives
-
+  
   let which ~ctxt prg =
     let path_sep =
       match Sys.os_type with
             [""]
     in
       find_file ~case_sensitive:false [path_lst; [prg]] exec_ext
-
+  
   (**/**)
   let rec fix_dir dn =
     (* Windows hack because Sys.file_exists "src\\" = false when
         fix_dir (String.sub dn 0 (ln - 1))
       else
         dn
-
+  
   let q = Filename.quote
   (**/**)
-
+  
   let cp ~ctxt ?(recurse=false) src tgt =
     if recurse then
       match Sys.os_type with
          | "Win32" -> "copy"
          | _ -> "cp")
         [q src; q tgt]
-
+  
   let mkdir ~ctxt tgt =
     OASISExec.run ~ctxt
       (match Sys.os_type with
          | "Win32" -> "md"
          | _ -> "mkdir")
       [q tgt]
-
+