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