On 2017-10-26 10:09, Erik Joelsson wrote:
I see why this huge check becomes necessary for a valid comparison, but it's quite a bit of extra complexity added as well. I was worried about the extra overhead on an already slow platform so I took the time to measure. While it's certainly measurable it's hardly noticeable. On a fast machine, the difference is around 50-100ms on repeated make invocations (baseline 1.85s). On my slow laptop it's 300-400ms, but the baseline is already over 7 seconds so as said, hardly noticeable.
The alternative is to drop the check entirely. I did some source control archeology now, to figure out the origin of this check. It has grown a bit over the years to handle more complex cases, but the original test was introduced by me in JDK-8076060, which was the big rewrite that created Init.gmk and the current "bootstrapping" process of the build.

I can't, at least now, figure out what was the driving need behind that check. It might been that I had collected some complaints about odd broken setups that "the build system should check for that!!! i've wasted hours!!!" but never got a separate bug. Or I might have encountered issues myself while developing the patch. Or I just thought it was prudent to check.

In any case, I think it's fully viable by now to remove the check in its entirety. Do you agree?


That said, line 392 is easily expressible using the make filter function instead of going to the shell. All the other shell calls seem to be necessary however.

Just thinking some more. Would it be possible to do something like "cd DIR && pwd" for both dirs and just compare the output of that instead? If that works it would seem like way fewer shell calls and simpler logic.
Unfortunately, that will not present a canonical representation of the directory. In cygwin, both /cygdrive/c/cygwin/home/user and /home/user is the same directory, but cygwin will not rewrite the path of any of them using that formula. :-( So for better or for worse, I think the method that has hardened over the years in our configure script is a battle-proven way to create a canonical path representation on all platforms.

/Magnus


/Erik


On 2017-10-25 17:03, Magnus Ihse Bursie wrote:
We are validating that the topdir we're using when running make is the same as when we were running configure.

For some circumstances, most typically when using a subdirectory in the user's home directory (e.g. ~/jdk10) on Cygwin, this check fails.

Bug: https://bugs.openjdk.java.net/browse/JDK-8189955
WebRev: http://cr.openjdk.java.net/~ihse/JDK-8189955-configuration-validation-is-broken-for-some-paths/webrev.01

/Magnus



Reply via email to