[PPL-devel] Bugs in OCaml interface

Enea Zaffanella zaffanella at cs.unipr.it
Thu Apr 2 19:04:06 CEST 2009


Kenneth MacKenzie wrote:
> Enea Zaffanella writes:
>  > 
>  > The snapshot with the corrections is now ready:
>  >    ftp://ftp.cs.unipr.it/pub/ppl/snapshots/
> 
> Hi Enea,
> 
>    The problems with the OCaml interface have now gone away (thanks!),
> and I can confirm that my problem with the
> ppl_Polyhedron_BHRZ03_widening_assign function has nothing to do with
> the OCaml interface.  I extracted the polyhedra that were causing
> problems (they have 60 and 81 constraints) and fed them to the C++
> version of the widening function.  It's now been running for 14 hours
> without terminating.  However, your suggestion of using a timer to
> escape and use the H79 widening instead seems to work well.

This is good news.

> I did have a couple of problems with the snapshot.  I changed to the
> ppl/doc directory and tried 
> 
> [5~    make ppl-user-configured-ocaml-interface-0.10.1pre10-html
> 
> but it failed because it couldn't find something it needed from gmp.
> This is due to the fact that I had to install gmp in a subdirectory of
> my home directory,  but the makefile was looking in one of the
> standard directories:
> 
> OCAMLDOC_HTML_OPTIONS = \
> -I +gmp -I $(top_builddir)/interfaces/OCaml -html
> 
> OCAMLDOC_LATEX_OPTIONS = \
> -I +gmp -I $(top_builddir)/interfaces/OCaml \
> -latex -noheader -notrailer -notoc
>
> I changed the +gmp to the location of my version of gmp and it worked
> properly.   I had other problems for the same reason a while ago and
> someone added --with-libgmp and --with-libgmpxx-prefix options to the
> top-level configure script, so presumably these should also be used
> here.

You are right: we should have used -I @mlgmp_dir@
This is already corrected in the git master branch.

The commit info is available at:
http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=3b959163da9e982568db53698e377a72c1f95da7


> I also ran "make check", and it failed after 4 hours with
> 
>   make  check-TESTS
>   make[6]: Entering directory
>   `/disk/scratch/ppl-0.10.1pre10/interfaces/OCaml/tests'
>   ./test1: error while loading shared libraries: libgmpxx.so.4: cannot
>   open shared object file: No such file or directory
>   FAIL: test1
>   ./ppl_ocaml_generated_test: error while loading shared libraries:
>   libgmpxx.so.4: cannot open shared object file: No such file or
>   directory
>   FAIL: ppl_ocaml_generated_test
>   ./test1_opt: error while loading shared libraries: libgmpxx.so.4:
>   cannot open shared object file: No such file or directory
>   FAIL: test1_opt
>   ./ppl_ocaml_generated_test_opt: error while loading shared libraries:
>   libgmpxx.so.4: cannot open shared object file: No such file or
>   directory
>   FAIL: ppl_ocaml_generated_test_opt
>   ======================================
>   4 of 4 tests failed
>   Please report to ppl-devel at cs.unipr.it
>   ======================================
>   make[6]: *** [check-TESTS] Error 1
>   make[6]: Leaving directory
>   `/disk/scratch/ppl-0.10.1pre10/interfaces/OCaml/tests'
>   make[5]: *** [check-am] Error 2
>   make[5]: Leaving directory
>   `/disk/scratch/ppl-0.10.1pre10/interfaces/OCaml/tests'
>   make[4]: *** [check-recursive] Error 1
>   make[4]: Leaving directory
>   `/disk/scratch/ppl-0.10.1pre10/interfaces/OCaml'
>   make[3]: *** [check] Error 2
>   make[3]: Leaving directory
>   `/disk/scratch/ppl-0.10.1pre10/interfaces/OCaml'
>   make[2]: *** [check-recursive] Error 1
>   make[2]: Leaving directory `/disk/scratch/ppl-0.10.1pre10/interfaces'
>   make[1]: *** [check] Error 2
>   make[1]: Leaving directory `/disk/scratch/ppl-0.10.1pre10/interfaces'
>   make: *** [check-recursive] Error 1
> 
> Again, it appears that it's not looking in the right place.

This looks strange to me: the message seems to suggest that the system 
finds the OCaml mlgmp wrapper, but it does not find the C++ wrapper 
libgmpxx.

I am definitely not an expert of OCaml related builds, but I think that 
I have read somewhere that OCaml native library wrappers were encoding 
in their inside the right link options, so that one should not need to 
issue them each time.

I will need to investigate further, but for the immediate I can imagine 
two possible explanations :

a) Maybe you did something wrong when compiling the mlgmp wrapper.
As said in file interfaces/Ocaml/README.ocaml:
===========
In order to install MLGMP you should make sure that GMP_INCLUDES and
GMP_LIBDIR are correctly set (these variables are defined at the
beginning of Makefile in the MLGMP's root directory).
===========
Could it be the case that you did something wrong here?

b) What is the output of the command
    echo $LD_LIBRARY_PATH
on your machine? Does it include the path to your installation place, 
that is /afs/inf.ed.ac.uk/user/k/kwxm/libraries/lib ?

Let us know if either a) or b) solves the problem.

Cheers,
Enea.


> Here's my config.log if you need it:
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> 
> Best wishes,
> 
> Kenneth



More information about the PPL-devel mailing list