[ITA] ocaml 4.14.0

David Allsopp David.Allsopp@cl.cam.ac.uk
Tue Aug 23 20:00:34 GMT 2022


Jon Turney wrote:
> On 13/07/2022 16:41, David Allsopp wrote:
> >
> >> 3) Interesting - on my machine, the camlheader[di] files had the .exe
> >> extensions. I did some digging around and found the files are *built*
> >> without  the .exe suffix, and even *initially installed* without the
> >> .exe suffix, but  ultimately come out with the .exe suffix. I ran
> >> cyport in debug mode and apparently the files are being renamed with
> >> the suffix
> >> post-install:
> >>
> >> + case "${exe##*/}" in
> >> + mv usr/lib/ocaml/camlheaderd usr/lib/ocaml/camlheaderd.exe
> >> + exe+=.exe
> >>
> >> and did a little more digging and I think these lines in cygport are
> >> the
> >> cause:
> >> https://github.com/cygwin/cygport/blob/096f27644bd3b28f29d7522e816beb
> >> d327c
> >> f24cb/lib/src_postinst.cygpart#L1010
> 
> Yeah, that seems plausible, but I'm not clear why we are seeing different
> behaviour...
> 
> >> On the topic of "testing more thoroughly", I attempted to use ocamlc
> >> to compile a simple program and it fails with "Cannot find file
> >> camlheader" but works when I remove the ".exe", so it seems that the
> >> presence of the .exe suffixes breaks the compiler. Is there a way to
> >> prevent cygport from adding it?
> >
> > The camlheader files are data files and definitely mustn't be
> > installed with a .exe extension (nor do they need to be executable).
> 
> I'm confused here: /usr/lib/ocaml/camlheaderd[di] look like executables
> (according to file etc.)
> 
> If they genuinely aren't, then perhaps they shouldn't have execute
> permission (which is I think what is causing them to be caught by that
> piece of code in cygport...)

ocamlc won't care about the executable bit, but these files are _data_ and so it will care if they end up with a .exe extension, because they are open'd not exec'd.

The files themselves form the start of executables produced by ocamlc. For both Cygwin and native Windows, it's a tiny C program responsible for locating ocamlrun (on Unix, it's just a shebang line) and the bytecode itself gets appended.

All best,


David


More information about the Cygwin-apps mailing list