Great, thanks!
On Mon, May 7, 2018 at 5:41 PM, Erik Joelsson <erik.joels...@oracle.com> wrote: > Yes, sure, I'm working on a different fix in the same area now anyway so can > sneak this fix in there. Will get done this week. > > /Erik > > > > On 2018-05-07 07:37, Thomas Stüfe wrote: >> >> Hi Erik, >> >> since your proposal worked, will you do a fix? >> >> Thanks, Thomas >> >> On Fri, May 4, 2018 at 8:30 AM, Thomas Stüfe <thomas.stu...@gmail.com> >> wrote: >>> >>> Hi Erik, >>> >>> that worked on both machines for all builds. >>> >>> Thanks, Thomas >>> >>> On Thu, May 3, 2018 at 10:13 PM, Erik Joelsson <erik.joels...@oracle.com> >>> wrote: >>>> >>>> Hello, >>>> >>>> In my case, VCINSTALLDIR is in short form already. Could you try >>>> changing >>>> line 543 from BASIC_WINDOWS_REWRITE_AS_UNIX_PATH to BASIC_FIXUP_PATH? >>>> >>>> /Erik >>>> >>>> >>>> >>>> On 2018-05-03 11:17, Thomas Stüfe wrote: >>>>> >>>>> Hi Erik, >>>>> >>>>> I see the error on two very different machines. One is my private >>>>> machine - windows 7, VS2013 and VS2017 installed. The second one is my >>>>> corporate Laptop, Windows 10 and only VS2013. >>>>> >>>>> In both cases I use a very recent cygwin64 installation. >>>>> >>>>> Both cases run in TOOLCHAIN_SETUP_MSVC_DLL into the "# Probe: Using >>>>> well-known location from Visual Studio 12.0 and older" case, and in >>>>> the for loop at line 559 attempt to tokenize the POSSIBLE_MSVC_DLL >>>>> variable content. Here the 64bit build on my corporate laptop: >>>>> >>>>> checking if fixpath.exe works... yes >>>>> POSSIBLE_MSVC_DLL /cygdrive/c/Program >>>>> POSSIBLE_MSVC_DLL Files >>>>> POSSIBLE_MSVC_DLL (x86)/Microsoft >>>>> POSSIBLE_MSVC_DLL Visual >>>>> POSSIBLE_MSVC_DLL Studio >>>>> POSSIBLE_MSVC_DLL 12.0/VC/redist/x64/Microsoft.VC120.CRT/msvcr120.dll >>>>> configure: Found msvcr120.dll at >>>>> /cygdrive/c/WINDOWS/system32/msvcr120.dll using well-known location in >>>>> SYSTEMROOT >>>>> checking found msvcr120.dll architecture... ok >>>>> checking for msvcr120.dll... /cygdrive/c/WINDOWS/system32/msvcr120.dll >>>>> POSSIBLE_MSVC_DLL /cygdrive/c/Program >>>>> POSSIBLE_MSVC_DLL Files >>>>> POSSIBLE_MSVC_DLL (x86)/Microsoft >>>>> POSSIBLE_MSVC_DLL Visual >>>>> POSSIBLE_MSVC_DLL Studio >>>>> POSSIBLE_MSVC_DLL 12.0/VC/redist/x64/Microsoft.VC120.CRT/msvcp120.dll >>>>> configure: Found msvcp120.dll at >>>>> /cygdrive/c/WINDOWS/system32/msvcp120.dll using well-known location in >>>>> SYSTEMROOT >>>>> >>>>> As you can see, we fall back to the default in windows/system32, which >>>>> happens to be working for 64bit. On 32bit, we get this error: >>>>> >>>>> checking if fixpath.exe works... yes >>>>> POSSIBLE_MSVC_DLL /cygdrive/c/Program >>>>> POSSIBLE_MSVC_DLL Files >>>>> POSSIBLE_MSVC_DLL (x86)/Microsoft >>>>> POSSIBLE_MSVC_DLL Visual >>>>> POSSIBLE_MSVC_DLL Studio >>>>> POSSIBLE_MSVC_DLL 12.0/VC/redist/x86/Microsoft.VC120.CRT/msvcr120.dll >>>>> configure: Found msvcr120.dll at >>>>> /cygdrive/c/WINDOWS/system32/msvcr120.dll using well-known location in >>>>> SYSTEMROOT >>>>> checking found msvcr120.dll architecture... incorrect, ignoring >>>>> configure: The file type of the located msvcr120.dll is PE32+ >>>>> executable (DLL) (GUI) x86-64, for MS Windows >>>>> configure: Found msvcr120.dll at /cygdrive/c/Program Files >>>>> (x86)/Microsoft Visual Studio >>>>> 12.0/VC/redist/arm/Microsoft.VC120.CRT/msvcr120.dll using search of >>>>> VCINSTALLDIR >>>>> checking found msvcr120.dll architecture... incorrect, ignoring >>>>> configure: The file type of the located msvcr120.dll is PE32 >>>>> executable (DLL) (GUI) ARMv7 Thumb, for MS Windows >>>>> checking for msvcr120.dll... no >>>>> configure: error: Could not find msvcr120.dll. Please specify using >>>>> --with-msvcr-dll. >>>>> configure exiting with result code 1 >>>>> >>>>> Best Regards, Thomas >>>>> >>>>> On Thu, May 3, 2018 at 7:18 PM, Erik Joelsson >>>>> <erik.joels...@oracle.com> >>>>> wrote: >>>>>> >>>>>> Also, on my windows system, if I try using my local Visual Studio, >>>>>> both >>>>>> MSVC >>>>>> dll's are found in the Visual Studio dir, and the spaces are all >>>>>> cleaned >>>>>> up. >>>>>> I wonder what's different about your setup, Thomas. >>>>>> >>>>>> /Erik >>>>>> >>>>>> >>>>>> >>>>>> On 2018-05-03 10:13, Erik Joelsson wrote: >>>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> On 2018-05-03 03:41, Magnus Ihse Bursie wrote: >>>>>>>> >>>>>>>> I think the main issue here is that BASIC_FIXUP_PATH should be >>>>>>>> called >>>>>>>> for >>>>>>>> the located msvcr*.dll files. I don't have time to look at it now, >>>>>>>> but >>>>>>>> see >>>>>>>> if you can do a rewrite using BASIC_FIXUP_PATH when the potential >>>>>>>> file >>>>>>>> is >>>>>>>> located. This should remove all spaces from the path. >>>>>>>> >>>>>>> No, that is not a good solution. I intentionally removed that >>>>>>> BASIC_FIXUP_PATH because in VS2017, one of the files has a file name >>>>>>> longer >>>>>>> than 8 characters and BASIC_FIXUP_PATH rewrites that filename to >>>>>>> short >>>>>>> style. This in turn has weird consequences in make when we copy that >>>>>>> file >>>>>>> using generated copy rules. The target file then gets the short style >>>>>>> name >>>>>>> literally. >>>>>>> >>>>>>> When I made that change, I looked at all the calls for potential >>>>>>> locations >>>>>>> and thought all of them had the directory prepared properly already. >>>>>>> It >>>>>>> seems I was wrong. I think the correct solution is to either get rid >>>>>>> of >>>>>>> spaces earlier for all the input directories we search, or maybe >>>>>>> tweak >>>>>>> BASIC_FIXUP_PATH to not touch the actual filename. >>>>>>> >>>>>>> /Erik >>>>>>>> >>>>>>>> /Magnus >>>>>>>> >>>>>>>> On 2018-05-02 20:46, Thomas Stüfe wrote: >>>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> My 32bit builds on Windows were failing since quite a while and I >>>>>>>>> finally had some minutes to look into that. >>>>>>>>> >>>>>>>>> See prior discussion here: >>>>>>>>> >>>>>>>>> >>>>>>>>> http://mail.openjdk.java.net/pipermail/build-dev/2018-March/021150.html >>>>>>>>> >>>>>>>>> My output used to look like this: >>>>>>>>> >>>>>>>>> checking if fixpath.exe works... yes >>>>>>>>> POSSIBLE_MSVC_DLL /cygdrive/c/Program >>>>>>>>> POSSIBLE_MSVC_DLL Files >>>>>>>>> POSSIBLE_MSVC_DLL (x86)/Microsoft >>>>>>>>> POSSIBLE_MSVC_DLL Visual >>>>>>>>> POSSIBLE_MSVC_DLL Studio >>>>>>>>> POSSIBLE_MSVC_DLL >>>>>>>>> 12.0/VC/redist/x64/Microsoft.VC120.CRT/msvcr120.dll >>>>>>>>> configure: Found msvcr120.dll at >>>>>>>>> /cygdrive/c/Windows/system32/msvcr120.dll using well-known location >>>>>>>>> in >>>>>>>>> SYSTEMROOT >>>>>>>>> >>>>>>>>> So basically, build does not correctly search for msvcr120.dll in >>>>>>>>> "/cygdrive/c/Program Files (x86)/Microsoft Visual Studio >>>>>>>>> 12.0/VC/redist/x86/Microsoft.VC120.CRT/msvcr120.dll" - instead, it >>>>>>>>> fails and falls back to the system default >>>>>>>>> "/cygdrive/c/Windows/system32/msvcr120.dll". That dll is a 64bit >>>>>>>>> dll, >>>>>>>>> and so configure fails. >>>>>>>>> >>>>>>>>> Note that 64bit build shows exactly the same behaviour! Only there >>>>>>>>> it >>>>>>>>> works by accident, since the default >>>>>>>>> /cygdrive/c/Windows/system32/msvcr120.dll it finds happens to be a >>>>>>>>> 64bit library too, so configure succeeds. >>>>>>>>> >>>>>>>>> Part of the problem is TOOLCHAIN_SETUP_MSVC_DLL in >>>>>>>>> toolchain_windows.m4. We use a bash for loop to iterate thru a list >>>>>>>>> of >>>>>>>>> one or more files, but that for expression should be quoted. >>>>>>>>> >>>>>>>>> If I make this fix: >>>>>>>>> >>>>>>>>> --- a/make/autoconf/toolchain_windows.m4 Mon Apr 23 18:04:17 >>>>>>>>> 2018 >>>>>>>>> -0700 >>>>>>>>> +++ b/make/autoconf/toolchain_windows.m4 Wed May 02 18:38:04 >>>>>>>>> 2018 >>>>>>>>> +0200 >>>>>>>>> @@ -556,7 +556,7 @@ >>>>>>>>> fi >>>>>>>>> fi >>>>>>>>> # In case any of the above finds more than one file, loop >>>>>>>>> over >>>>>>>>> them. >>>>>>>>> - for possible_msvc_dll in $POSSIBLE_MSVC_DLL; do >>>>>>>>> + for possible_msvc_dll in "$POSSIBLE_MSVC_DLL"; do >>>>>>>>> $ECHO "POSSIBLE_MSVC_DLL $possible_msvc_dll" >>>>>>>>> TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], >>>>>>>>> [$possible_msvc_dll], >>>>>>>>> [well-known location in VCINSTALLDIR]) >>>>>>>>> >>>>>>>>> >>>>>>>>> the 32bit configure correctly sets the msvcrt dll: >>>>>>>>> >>>>>>>>> POSSIBLE_MSVC_DLL /cygdrive/c/Program Files (x86)/Microsoft Visual >>>>>>>>> Studio 12.0/VC/redist/x86/Microsoft.VC120.CRT/msvcr120.dll >>>>>>>>> configure: Found msvcr120.dll at /cygdrive/c/Program Files >>>>>>>>> (x86)/Microsoft Visual Studio >>>>>>>>> 12.0/VC/redist/x86/Microsoft.VC120.CRT/msvcr120.dll using >>>>>>>>> well-known >>>>>>>>> location in VCINSTALLDIR >>>>>>>>> checking found msvcr120.dll architecture... ok >>>>>>>>> >>>>>>>>> and I can start the build, but I get follow up errors: >>>>>>>>> >>>>>>>>> ... >>>>>>>>> Creating hotspot/variant-server/tools/adlc/adlc.exe from 13 file(s) >>>>>>>>> Compiling 2 files for BUILD_JVMTI_TOOLS >>>>>>>>> make[3]: *** No rule to make target '/cygdrive/c/Program', needed >>>>>>>>> by >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> '/cygdrive/c/mine/projects/openjdk/jdk-jdk/output-fastdebug-32/support/modules_libs/java.base/Program'. >>>>>>>>> Stop. >>>>>>>>> make[3]: *** Waiting for unfinished jobs.... >>>>>>>>> make[2]: *** [make/Main.gmk:165: java.base-copy] Error 2 >>>>>>>>> make[2]: *** Waiting for unfinished jobs.... >>>>>>>>> >>>>>>>>> I stopped looking at that point, but to me it looks like the build >>>>>>>>> cannot survive msvcrt.dll locations with spaces in them. >>>>>>>>> >>>>>>>>> Kind Regards, Thomas >>>>>>>> >>>>>>>> >