[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] Cross-compiling OCaml, Mirage OS for rumprun, OPAM integration





LeÂmer. 20 mai 2015 ÃÂ12:02, Martin Lucina <martin@xxxxxxxxxx> a ÃcritÂ:
On Tuesday, 19.05.2015 atÂ15:58, Martin Lucina wrote:
> > >E: Failure("Expected built file '_build/src/unix/dlllwt-unix_stubs.so'
> > >doesn't exist.")
> > >
> > >This is expected; the rumprun toolchain does not support dynamic
> > >linking
> > >and I have configured the ocaml-rumprun compiler with
> > >-no-shared-libs. Is
> > >there some way to tell OASIS to not expect any shared libraries to be
> > >built?
> >
> > Nope. OASIS is painfully inflexible, especially when cross-compiling.
> > You can probably patch setup.ml so that it thinks that the current
> > OCaml is built without dynlink, but this is package-specific.
>
> Turns out it's a two-line patch, at least in the case of Lwt:
>
> https://github.com/mato/opam-rumprun/commit/3d3a9f0b46a21370c7b619e14cbfddec90acf433

Getting further through the list of Mirage dependencies, trying to get
sexplib building for rumprun hits another different problem with OASIS:

I use the following commands to build sexplib-rumprun, similar to what the
android build does:

 ["ocaml" "setup.ml" "-configure" "--prefix" "${prefix}/x86_64-rumprun-netbsd" "--disable-syntax"]
 ["ocamlbuild" "-use-ocamlfind" "-just-plugin"]
 ["env" "OCAMLFIND_TOOLCHAIN=rumprun" "ocaml" "setup.ml" "-build"]
 ["env" "OCAMLFIND_TOOLCHAIN=rumprun" "ocaml" "setup.ml" "-install"]
 ["find" sexplib:lib "-name" "pa_sexp_conv.*" "-exec" "ln" "-sf" "{}" "%{prefix}%/x86_64-rumprun-netbsd/lib/sexplib/" ";"] { type_conv-rumprun:installed }

Now, sexplib tries to build a .cmxs which won't work with the rumprun
toolchain, so I've patched its setup.ml to force native_dynlink to be
false:

https://github.com/mato/opam-rumprun/blob/master/packages/sexplib-rumprun.112.24.01/files/patches/oasis-disable-dynlink.patch


I think it would be far easier to add '--override native_dynlink false' to the configure step.
Â
The problem I'm seeing is that if I run "opam install sexplib-rumprun
--verbose", it fails in the setup.ml -install setup with a stack overflow:

- Installed /home/mato/.opam/system/x86_64-rumprun-netbsd/lib/sexplib_unix/sexplib_unix.cmx
- Installed /home/mato/.opam/system/x86_64-rumprun-netbsd/lib/sexplib_unix/META
- E: Stack overflow
[ERROR] The compilation of sexplib-rumprun failed at "env
    OCAMLFIND_TOOLCHAIN=rumprun ocaml setup.ml -install".

However: If I run the OPAM build commands from a shell in the build
directory for sexplib, the install step works fine.

Any ideas?

Martin
_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.