/usr/lib/ocaml/oasis/OASISDynRun.ml is in liboasis-ocaml-dev 0.3.0-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | (* Dynamic runtime for building setup.ml.
We use this to reduce setup.ml replaceable section to a few lines
everything else is dynamically generated.
*)
let () = OASISBuiltinPlugins.init ()
open OASISTypes
open BaseSetup
let oasis_fn = "_oasis"
let setup_t =
let pkg = OASISParse.from_file ~ctxt:!BaseContext.default oasis_fn in
let _, setup_t = BaseSetup.of_package ~setup_update:false pkg in
setup_t
let setup () =
let tmp_setup_fn = Filename.temp_file (setup_t.package.name^"-setup") ".ml" in
let restored = ref false in
let cleanup () =
if not !restored then begin
restored := true;
BaseGenerate.restore ();
if Sys.file_exists tmp_setup_fn then
Sys.remove tmp_setup_fn
end
in
try
let _lst: 'a list =
BaseGenerate.generate
~backup:true
~setup_fn:tmp_setup_fn
~restore:true
BaseGenerate.NoUpdate
(OASISParse.from_file
~ctxt:!BaseContext.default oasis_fn)
in
at_exit cleanup;
let setup_t =
(* Override distclean, because it remove setup.log and we need it for
* BaseGenerate.restore
*)
{setup_t with distclean = setup_t.distclean @ [fun _ _ -> cleanup ()]}
in
BaseSetup.setup setup_t;
cleanup ()
with e ->
cleanup ();
raise e
|