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

Re: Build errors

There are two ways to run Javascript code:

- browser (the default js_of_ocaml usecase), where access to storage is 
away through a k/v interface, and networking via websockets.  So only the higher
level modules would have any meaning there.

- node.js, which has full system bindings and can access tuntap and mmap. There 
lots of bindings for visualisation of systems stuff using node, such as:

The latter requires some changes to the js_of_ocaml runtime to work properly 
although if we can make it work, it's a really nice *development* environment 
for OCaml
code, as you can visualise and track objects dynamically, and then recompile to 
code for high-speed execution.


On 12 Apr 2012, at 14:29, Haris Rotsos wrote:

> just out of curiosity for the node.js and unix backend, how do they
> handle the OS.Netif module since they don't expose raw socket
> functionality?
> On 12 April 2012 14:17, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote:
>> Ha! This fails for a fun reason.
>> The master/ branch still has the work-in-progress Javascript backend, but it
>> is only activated when js_of_ocaml is installed (and it is not currently
>> installed on my test machines).  In the Node case, we need bindings for the
>> OS.* modules (specifically, Netif for Openflow), and hence the build
>> failure.  In order for Node to work correctly, we need:
>> - To patch js_of_ocaml to support Javascript Buffers as present in Node.js.
>> Raphael had a few patches, but not finished.  This is because Javascript
>> strings are immutable, whereas OCaml strings and buffers are mutable (and so
>> wrapped as JS objects).
>> - Figure out the latest Websocket story (I have avsm/ocaml-socketio on
>> Github which started implementing it).
>> - Look at how WebStorage works these days (SQL? Key/Value?)
>> I'm actually working in the slim/ branch of the tree as part of a
>> benchmarking effort at the moment, where I have removed all of the Node
>> code, and several of the higher-level protocols such as HTTP, leaving just
>> the bare-bones network stack up to TCP.  The plan is to use this as a
>> baseline, and add external library support for stuff like DNS, XMPP, HTTP
>> and so forth.  I've got some interesting early benchmark results which I'll
>> send to the list separately later.
>> For master/, you can edit lib/Makefile to turn off Node (I've just pushed a
>> change to do this to my tree)
>> -anil
>> On 12 Apr 2012, at 13:53, Sebastian Probst Eide wrote:
>> I am trying to build mirage on my xen box.
>> I am on Ubuntu 11.10, kernel 3.something
>> I have OCaml version 3.12.1 installed from source.
>> I am using mirage from avsm/mirage
>> When running my friend make, I get:
>> ...
>> cp openflow/openflow.mli std/openflow.mli
>> /usr/local/bin/ocamldep.opt -pp 'camlp4o.opt -I ../../../syntax/_build
>> str.cmxs pa_mirage.cmxs -cow-no-open -lwt-debug' -modules std/openflow.mli >
>> std/openflow.mli.depends
>> /usr/local/bin/ocamlc.opt -c -nostdlib -annot -g -pp 'camlp4o.opt -I
>> ../../../syntax/_build str.cmxs pa_mirage.cmxs -cow-no-open -lwt-debug' -I
>> std -o std/openflow.cmi std/openflow.mli
>> + /usr/local/bin/ocamlc.opt -c -nostdlib -annot -g -pp 'camlp4o.opt -I
>> ../../../syntax/_build str.cmxs pa_mirage.cmxs -cow-no-open -lwt-debug' -I
>> std -o std/openflow.cmi std/openflow.mli
>> File "openflow/switch.mli", line 711, characters 23-34:
>> Error: Unbound module OS.Netif
>> Command exited with code 2.
>> make[1]: *** [node] Error 10
>> make[1]: Leaving directory `/home/xen/code/mirage/lib'
>> make: *** [all] Error 2
>> Any ideas?
>> Thanks!
>> All the best,
>> Sebastian
>> --------------------
>> Things I have installed:
>> findlib-1.2.8
>> js_of_ocaml-1.1.1
>> lwt-2.3.2
>> ocaml-3.12.1
> -- 
> Charalampos Rotsos
> PhD student
> The University of Cambridge
> Computer Laboratory
> William Gates Building
> JJ Thomson Avenue
> Cambridge
> CB3 0FD
> Phone: +44-(0) 1223 767032
> Email: cr409@xxxxxxxxxxxx



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