I've got some
code here and
here in OCaml & Java, that I have been tasked with running, testing
and fixing. I've already taken a look at the basic syntax but now its
time to get to grips with some the libraries and related packages
that Signposts makes use off.
THE SERVER IN OCAML
The first thing that
took me by surprise was the number of files in the repo, considering
that this is suppose to be a fairly straight forward project.
Oasis
The repo contains a
file called “_oasis”, which on closer inspection includes a
collection of metadata on the project. OASIS is a tools to integrate
a configure, build and install system into an OCaml project. The
_oasis files tells me that the entry point for the program is
“server.ml” and the build dependences are the findlib packages
lwt.syntax, lwt.unix, re, re.str.
The creater of the
program will have ran “
oasis setup”, which
has generated setup.ml, _tags and myocamlbiuld.ml.
According
to the instructions for OASIS you can configure, build and install
the Ocaml program using:
ocaml setup.ml -configure
ocaml setup.ml -build
ocaml setup.ml -install
Re_str
The server.ml file
makes use of Re_str and two of the biuld dependences are the findlib
packages re and re.str. I have found the packages here on github. Re stands for Regular expression and ocaml-re is a regular
expression library doe Ocaml (that is still under development). This
project has also made use of OASIS and installs without a problem
Compiling the Code
I cd into the directory
and run
ocaml setup.ml -configure, ocaml
setup.ml -build and ocaml setup.ml -install. This generates a new
dirctory “_biuld” and a new link to an executable in _biuld
Running the Code
I run a link to the
execuated in _biuld and it return the following error:
Fatal error: exception
Unix.Unix_error(50, "bind", "")
This means that the
socked that the code is try to bind to is already in use. I inspected
the code, identified the ports that were being used and ran “sudo
netstat -ap | grep ':<portnumber>' “. This identified a
process already using the port, the process was in fact an earlier
attempt to run the project. I identified the process ID and killed
the process, re-running “sudo netstat -ap | grep ':<portnumber>'
“ showed that the port was now free. I can now happily run the
executable in the _build directory. As this is a client-server
implementation, I now need to move my attention to the client code
No comments:
Post a Comment