caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] parmap package broken in opam switch 4.03.0
@ 2016-04-26 14:35 Sébastien Hinderer
  2016-04-26 16:21 ` Roberto Di Cosmo
  0 siblings, 1 reply; 5+ messages in thread
From: Sébastien Hinderer @ 2016-04-26 14:35 UTC (permalink / raw)
  To: caml-list

Hi,

It seems the Setcore module is not correctly included in the parmap
library in opam's 4.03.0 switch:

~$ ocamlobjinfo .opam/4.03.0/lib/parmap/parmap.cmxa | grep -i setcore
        7d7337fa605045f3c5ec064376ede776        Setcore
        --------------------------------        Setcore

(where the first line corresponds to the Interfaces imported by the
Parmap module and the second line to the Implementations imported by that
same module)

Practically, when one tries to compile a program using parmap, one gets
an error while trying to link parmap.cmxa about the Setcore symbol which
is not found.

Sébastien.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Caml-list] parmap package broken in opam switch 4.03.0
  2016-04-26 14:35 [Caml-list] parmap package broken in opam switch 4.03.0 Sébastien Hinderer
@ 2016-04-26 16:21 ` Roberto Di Cosmo
  2016-04-26 17:16   ` Leo White
  0 siblings, 1 reply; 5+ messages in thread
From: Roberto Di Cosmo @ 2016-04-26 16:21 UTC (permalink / raw)
  To: caml-list

Hi Sebastien,
   thanks for reporting this; in principle, it would be better to just open an
issue on https://github.com/rdicosmo/parmap but this seems indeed to be an issue
with 4.03, that may hit other people, so I'm following up here.

The problem is related to setcore.mli, which is just the interface for some C
code, so there is no setcore.ml, hence no setcore.cmx either; compilation of
such cases ran along just fine via ocamlbuild up to 4.02

It seems that in 4.03 one needs to add the -opaque flag when compiling
such stubs, otherwise things go astray, and it seems ocamlbuild does not
detect automatically such situations, so one needs to explicitly pass
the -opaque option when compiling setcore.mli (and only it).

If people on the list can confirm this, we'll then need to adapt parmap's
autoconf / makefile with code that spots whether we are using 4.03+.

If some kind soul wants to lend a hand, it would be much
appreciated... otherwise I'll try to do it in a moment of spare time

all the best

--
Roberto



On Tue, Apr 26, 2016 at 04:35:41PM +0200, Sébastien Hinderer wrote:
> Hi,
> 
> It seems the Setcore module is not correctly included in the parmap
> library in opam's 4.03.0 switch:
> 
> ~$ ocamlobjinfo .opam/4.03.0/lib/parmap/parmap.cmxa | grep -i setcore
>         7d7337fa605045f3c5ec064376ede776        Setcore
>         --------------------------------        Setcore
> 
> (where the first line corresponds to the Interfaces imported by the
> Parmap module and the second line to the Implementations imported by that
> same module)
> 
> Practically, when one tries to compile a program using parmap, one gets
> an error while trying to link parmap.cmxa about the Setcore symbol which
> is not found.
> 
> Sébastien.
> 
> -- 
> Caml-list mailing list.  Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs

-- 
Roberto Di Cosmo
 
------------------------------------------------------------------
Professeur (on leave at/detache a INRIA Roquencourt)
IRIF                          E-mail : roberto@dicosmo.org
Universite Paris Diderot         Web : http://www.dicosmo.org
Case 7014                    Twitter : http://twitter.com/rdicosmo         
5, Rue Thomas Mann       
F-75205 Paris Cedex 13 France  
------------------------------------------------------------------
Office location:

Paris Diderot	 		    INRIA
 
Bureau 3020 (3rd floor)             Bureau C123
Batiment Sophie Germain             Batiment C
8 place Aurélie Nemours             2, Rue Simone Iff
Tel: +33 1 57 27 92 20              Tel: +33 1 80 49 44 42 

Metro
  Bibliotheque F. Mitterrand        Ligne 6: Dugommier
  ligne 14/RER C                    Ligne 14/RER A: Gare de Lyon
------------------------------------------------------------------                                                 
GPG fingerprint 2931 20CE 3A5A 5390 98EC 8BFC FCCA C3BE 39CB 12D3                        

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Caml-list] parmap package broken in opam switch 4.03.0
  2016-04-26 16:21 ` Roberto Di Cosmo
@ 2016-04-26 17:16   ` Leo White
  2016-04-27  9:49     ` Roberto Di Cosmo
  0 siblings, 1 reply; 5+ messages in thread
From: Leo White @ 2016-04-26 17:16 UTC (permalink / raw)
  To: caml-list

> It seems that in 4.03 one needs to add the -opaque flag when compiling
> such stubs, otherwise things go astray, and it seems ocamlbuild does not
> detect automatically such situations, so one needs to explicitly pass
> the -opaque option when compiling setcore.mli (and only it).

I would not have thought that adding `-opaque` would be sufficient. It should get you
past the compilation of modules which depend on `setcore.mli`, but I would expect
linking to fail still. If that is not the case I guess it should be considered a bug because
in 4.03 referencing an `external` is supposed to force linking of the containing module.
The change was made because the existing behaviour was said to confuse people --
using a normal value from a module caused it to get linked whilst using an external value
didn't.

Regards,

Leo

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Caml-list] parmap package broken in opam switch 4.03.0
  2016-04-26 17:16   ` Leo White
@ 2016-04-27  9:49     ` Roberto Di Cosmo
  2016-04-27 11:24       ` Sébastien Hinderer
  0 siblings, 1 reply; 5+ messages in thread
From: Roberto Di Cosmo @ 2016-04-27  9:49 UTC (permalink / raw)
  To: Leo White; +Cc: caml-list

[-- Attachment #1: Type: text/plain, Size: 2972 bytes --]

Indeed, after some more investigation (thanks to Francois Berenger), it
seems that in 4.03 we can no longer just use a bare .mli file with the
interface to some external code, as it was possible before.

Now, we need to provide also an .ml file, in any case.

The fix in parmap is underway, and it was a simple matter of moving
setcore.mli to setcore.ml, without touching anything else.

For the curious, the content of setcore.ml (ex setcore.mli) is the
following:

(* uses the native affinity interface to
  declare that the current process should be
  attached to core number n *)

external numcores: unit -> int = "numcores"
external setcore: int -> unit = "setcore"

If you have similar patterns in your projects, take due notice :-)

--
Roberto


2016-04-26 19:16 GMT+02:00 Leo White <leo@lpw25.net>:

> > It seems that in 4.03 one needs to add the -opaque flag when compiling
> > such stubs, otherwise things go astray, and it seems ocamlbuild does not
> > detect automatically such situations, so one needs to explicitly pass
> > the -opaque option when compiling setcore.mli (and only it).
>
> I would not have thought that adding `-opaque` would be sufficient. It
> should get you
> past the compilation of modules which depend on `setcore.mli`, but I would
> expect
> linking to fail still. If that is not the case I guess it should be
> considered a bug because
> in 4.03 referencing an `external` is supposed to force linking of the
> containing module.
> The change was made because the existing behaviour was said to confuse
> people --
> using a normal value from a module caused it to get linked whilst using an
> external value
> didn't.
>
> Regards,
>
> Leo
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>



-- 
Roberto Di Cosmo

------------------------------------------------------------------
Professeur (on leave at/detache a INRIA Roquencourt)
IRIF                           email : roberto@dicosmo.org
Universite Paris Diderot         web : http://www.dicosmo.org
Case 7014                    Twitter : http://twitter.com/rdicosmo
5, Rue Thomas Mann
F-75205 Paris Cedex 13 FRANCE
------------------------------------------------------------------
Office location:

Paris Diderot                       INRIA

Bureau 3020 (3rd floor)             Bureau C123
Batiment Sophie Germain             Batiment C
8 place Aurélie Nemours             2, Rue Simone Iff
Tel: +33 1 57 27 92 20              Tel: +33 1 80 49 44 42

Metro
 Bibliotheque F. Mitterrand        Ligne 6: Dugommier
 ligne 14/RER C                    Ligne 14/RER A: Gare de Lyon
------------------------------------------------------------------
GPG fingerprint 2931 20CE 3A5A 5390 98EC 8BFC FCCA C3BE 39CB 12D3

[-- Attachment #2: Type: text/html, Size: 4892 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Caml-list] parmap package broken in opam switch 4.03.0
  2016-04-27  9:49     ` Roberto Di Cosmo
@ 2016-04-27 11:24       ` Sébastien Hinderer
  0 siblings, 0 replies; 5+ messages in thread
From: Sébastien Hinderer @ 2016-04-27 11:24 UTC (permalink / raw)
  To: caml-list

Thanks a lot Roberto and François for your help with all this and for
the clear feedback!

Sébastien.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-04-27 11:24 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-26 14:35 [Caml-list] parmap package broken in opam switch 4.03.0 Sébastien Hinderer
2016-04-26 16:21 ` Roberto Di Cosmo
2016-04-26 17:16   ` Leo White
2016-04-27  9:49     ` Roberto Di Cosmo
2016-04-27 11:24       ` Sébastien Hinderer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).