Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Tuareg mode under Cygwin...
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2006-02-21 (14:38)
From: Igor Peshansky <pechtcha@c...>
Subject: Re: [Caml-list] Tuareg mode under Cygwin...
On Mon, 20 Feb 2006, Jeremy Shute wrote:

> > Ok, so that confirms it.
> >
> > > I do this because MinGW Caml seems to be using "ar" instructions that
> > > are meant for the Cygwin version of "ar" (meaning they have an ampersand
> > > preceding the DOS path of the temporary file, which MinGW's "ar" doesn't
> > > understand).
> >
> > Huh?  Neither does Cygwin's ar, AFAIK.  Something may be screwed up with
> > the MinGW build.
> ocamlopt -a

I wasn't disputing that MinGW's ocamlopt produces these instructions, I
was saying they are not meant for Cygwin's ar (as Cygwin's "ocamlopt -a
-verbose" will show).

> > It looks to me as if MinGW Caml is actually built with Cygwin, using
> > > "gcc -mno-cygwin".  Maybe I'm mistaken?  So, I use MinGW Caml with
> > > Cygwin.
> >
> > "gcc -mno-cygwin" is a MinGW cross-compiler.  It does not produce Cygwin
> > binaries, it does not use Cygwin headers.
> Yeah, I know.
> > It's the same as the MinGW compiler, except for the little detail of
> > understanding Cygwin paths to source and library files.  There is no
> > difference between the binaries produced by Cygwin's "gcc -mno-cygwin"
> > and MinGW's gcc.
> Actually, there is a difference, but it's very minute.  The headers are
> the same but the compiler structure is different, as far as I remember.
> A hint as to why that might be:
> x=`which gcc` pushd `dirname "$x"` && nm gcc.exe | grep cygwin && popd

Well, obviously the Cygwin gcc will need to use Cygwin functionality under
the covers -- it's a *cross*-compiler, after all, with host=cygwin.  But
the MinGW binaries produced with the -mno-cygwin flag should be the same.

> > That aside, I'm confused.  Didn't you just say that you use a native
> > O'Caml build because the MinGW one is broken?
> I use the MinGW build from the Cygwin terminal.


> > > Apparently, there is an issue in the ptys.  I would say that's an
> > > apt description.  I'll have to try the "ocamlmktop -custom".
> >
> > Can you first try to run your version of ocaml in Cygwin's rxvt and
> > let me know if you observe the same problematic behavior?
> No, the problem is not present in rxvt.  Caml pops up as usual.

Then there's a problem with Cygwin emacs.

> However, C-c in the process will ruin your rxvt, meaning it will escape
> to the shell but be generally unresponsive to keyboard events AND you
> can't close the window with the close button in the upper-right.  Which
> I consider a problem.  C-c is ingrained (it's like C-w closing my
> windows, another PITA).

Again, something that should be reported to the Cygwin list so that it can
be fixed.  FWIW, that may actually be related to Cygwin's signal handling
code, which got a major work-over recently.  See if a developer snapshot
of Cygwin fixes your rxvt problem...  I suspect this is getting off-topic
for this list.

> > I really don't want to use a Cygwin version of Caml.  I don't like it
> > > when projects (Cygwin, Berkeley DB) tell me that I have to license
> > > my source code a certain way when I link to their libraries.
> >
> > AFAIK, Cygwin does not impose any restrictions on the O'Caml bytecode
> > beyond what the O'Caml license has (unless you use native code, in
> > which case you do link with Cygwin).
> Hmmm, interesting.  So, O'Caml compiled binaries from Cygwin's O'Caml do
> not use the cygwin DLL for their libc functions?

The binaries do.  The bytecode doesn't (what the interpreter uses doesn't

> > Otherwise, Cygwin simply provides the toolset, and the O'Caml code is
> > yours.  And even in that case, you simply cannot distribute the
> > *Cygwin* versions of your binaries without open-sourcing them (since
> > they'd need the Cygwin DLLs to work).  And even that can be worked
> > around, AFAIK, by using the Red Hat buyout license.
> This "Red Hat buyout license" is news to me, even though I know Redhat
> bought out Cygwin quite some time ago.  I know what is currently said
> at:
> ...could be paraphrased, "Buy the rights to distribute the cygwin1.dll
> or open your source to everyone you distribute your binaries to."
> Which means I don't want to link against it, which in turn means that I
> don't want to develop under that environment and deal with porting
> incompatible features should I ever want to incorporate my library code
> in a distributed binary.

Fair enough.

> > If there's sufficient interest in helping me add a "-mno-cygwin"-like
> > option to Cygwin's ocaml (so that it produces MinGW binaries using
> > "gcc -mno-cygwin"), that would be another alternative for you.
> Yes, there is interest.  Actually, I think the best option is to just
> fix the problem with the MinGW ar, such that ``ocamlopt -a'' does not
> barf on the temporary filenames.

Well, I'm not working on the MinGW version, but I do maintain the Cygwin
O'Caml version.  If you are willing to build from source and find all the
places where invocations of "gcc" by ocaml tools need to be replaced by
"gcc -mno-cygwin", that would be very helpful.

> > > I aknowledge and respect their wishes, but I'm also free not to use
> > > those projects (and therefore, not to contribute my bugfixes and
> > > experience to their product).
> >
> > Indeed.
> >
> > > I'm happy to use the shell and the tools, but I want my binaries to
> > > be unmistakenly mine.
> >
> > Well, I'm sorry to say that it is unlikely that Cygwin emacs will ever
> > work seamlessly with native Windows binaries (e.g., those that spawn a
> > console unless they detect one -- like ocaml -- since the whole point
> > of inferior mode in emacs, as I understand it, is to work without a
> > console). By mixing and matching various tools not designed to work
> > together, you are bound to run into incompatibilities -- this is one
> > of them.
> Yes, I was wondering if perhaps there was a terminal incantation that would
> work.  I did try ``sh -c ocaml'' with no success.

Again, I don't use emacs and won't be able to help you here.

> > Since this isn't a problem with the Cygwin version of O'Caml (and,
> > FWIW, you're likely to have the same problem with most Windows console
> > applications), I'd suggest either requesting this as a Cygwin emacs
> > feature (on the main Cygwin list) or using a non-Cygwin version of
> > emacs. At the very least, you'll find a lot more expertise on the main
> > Cygwin list on how to make Cygwin emacs work with Windows native
> > programs than you'll find here.
> Yes, yes.  Will do.
> > If you plan to post there, what I said earlier about the problem
> > reporting guidelines still applies.
> Thank you!

Glad I could help.
      |\      _,,,---,,_ |
ZZZzz /,`.-'`'    -.  ;-;;,_		Igor Peshansky, Ph.D. (name changed!)
     |,4-  ) )-,_. ,\ (  `'-'		old name: Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Las! je suis sot... -Mais non, tu ne l'es pas, puisque tu t'en rends compte."
"But no -- you are no fool; you call yourself a fool, there's proof enough in
that!" -- Rostand, "Cyrano de Bergerac"