Request for Review: Add hotspot support for building with mingw/msys on build-infra (the new build)

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Fri Oct 26 08:04:44 UTC 2012


On 2012-10-26 03:24, Kelly O'Hair wrote:
> It has been my experience that using cygpath -w created problems with shell escape logic,
> and that is why cygpath -m with a make level subst change is done, it was less problematic.
It think it would work, but I understand why you are cautious. I can 
revert that part.
> I don't understand why you would even want to change the cygwin logic at all, if it isn't broken why mess with it?
It turned out that it was indeed broken, but I had forgot what I fixed. 
:-) The current code works if CC is defined like
CC=/path/to/compiler
but it will not work if CC is defined like
CC=/path/to/compiler -extra -compiler -options
That is what the $(firstword) stuff is about, just converting the 
compiler path.

This would be just a complaint in general that it broke expectations on 
how to setup CC, if not this turned out to be a problem for the latest 
changes in build-infra.

In older build-infra, we send in
CC=/path/to/fixpath /path/to/compiler
and by a lucky co-incidence, this will actually work, altough not as 
expected. (As far as I can understand, the hotspot makefile cygpath 
rewrite will change both paths.)

However, when I added support for msys in build-infra, I changed the 
syntax for fixpath (formerly uncygdrive). It now requires an switch 
telling it to work in cygwin or msys mode, so we send in:
CC=/path/to/fixpath -c /path/to/compiler
which will make the hotspot rewrite code break. (My guess is that 
cygpath converts /path/to/fixpath but ignores everything from -c and 
forward).

Since fixpath actually isn't technically needed when building hotspot, 
we can work around this differently in Hotspot. Maybe that is the 
pragmatic way. But I still believe it's theoretically wrong with not 
handling a CC= which contains more than a path to an executable. :-)


> So my suggestion would be to add the msys logic, and leave the old cygwin logic alone.
>
> I could have sworn that Tim Bell already did this change, and yes, if I look at:
>
>      http://hg.openjdk.java.net/jdk8/build/hotspot/file/dccd40de8db1/make/windows/makefiles/defs.make
>
> These changes are there already, or something equivalent.
>
> Have you talked with Tim Bell about this change?

Not specifically about this change, but we communicated a lot while I 
was developing msys support for build-infra.

I'm not sure what you want to tell me by the link. There was a change 
(7181175: Enable builds on Windows with MinGW/MSYS),
http://hg.openjdk.java.net/jdk8/build/hotspot/rev/0d8e265ba727
which added the USING_MINGW variable that I need to check. However I 
can't see anything in this file that would fix the CXX etc variables for 
msys, the way my patch is doing it.

But then again, we can probably do without this patch, if we make things 
differently in build-infra. We're already doing some weird special stuff 
for Hotspot builds that I guess adding another exception won't be that 
different. I'll look into it.

/Magnus



More information about the build-dev mailing list