This is good stuff. Back in 2010 I got OpenJDK compiled and running on the Microsoft Toolchain. I never ran the jtreg tests, but, the binaries worked for running basic Tomcat but definitely not for trying to run Eclipse.
These days I am a pretty big fan of MSYS2. In my personal experiences with building a PostgreSQL Windoze distribution, the MSYS2 binaries run a little faster than using the old MS Toolchain. https://www.openscg.com/2016/02/building-postgresql-on-windows-for-performance/ --Luss On Wed, Nov 22, 2017 at 4:28 PM, Jonathan Gibbons < jonathan.gibb...@oracle.com> wrote: > Peter, > > With over 120 :tier1 test failures, it would be worth understanding the > test failures as part of moving forward. There should normally be no :tier1 > test failures. > > -- Jon > > > > > On 11/22/2017 01:10 PM, Peter Budai wrote: > >> Let me give an update on the current status: >> >> * I have managed to build both the 64 and the 32-bit version. >> * The 64-bit version seems reasonable: >> >> >> >> ============================== >> >> Test summary - w64-bit >> >> ============================== >> >> TEST TOTAL PASS FAIL >> ERROR >> >> jtreg:jdk/test:tier1 1645 1610 34 1 >>>> << >>>> jtreg:langtools/test:tier1 3907 3819 79 >>>> 9 << >>>> >>> jtreg:nashorn/test:tier1 0 0 0 >> 0 >> >> jtreg:jaxp/test:tier1 0 0 0 >> 0 >> >> ============================== >> >> * However the 32-bit version of hotspot contains a bunch of inline >> assembly pieces which uses an MSC specific syntax, and my ASM knowledge is >> really limited. I have managed to get a many inline assembly codes from the >> Linux version, but there are few pieces where I was not able to find a good >> solution yet, so although the 32-bit version compiles, unfortunately it is >> not working >> * I have installed VS Express 2013 and made sure that the >> “traditional” Microsoft toolchain is still working with the changes >> * My OCA has been processed >> >> I have a changeset which cleanly applies to JDK9 v181, but I recall you >> have mentioned earlier that you would like to consider this to JDK10 >> >> So what is the best way to open a PR for review? This page: >> http://openjdk.java.net/contribute/ says I should send the changeset as >> attachment, but earlier somebody mentioned here that attachments are >> removed from the developer mailing lists. >> >> Best regards, >> >> Peter >> >> From: Erik Joelsson<mailto:erik.joels...@oracle.com> >> Sent: Thursday, November 2, 2017 1:07 AM >> To: Peter Budai<mailto:peterbu...@hotmail.com>; Magnus Ihse >> Bursie<mailto:magnus.ihse.bur...@oracle.com> >> Cc: build-dev@openjdk.java.net<mailto:build-dev@openjdk.java.net> >> Subject: Re: Building OpenJDK9 on MSYS2 >> >> I would say a few hours is way too long for tier1, but it of course >> depends on the hardware used. We typically run it on windows in less >> than 30 minutes with concurrency set to 6. Not sure what concurrency you >> used by default. >> >> /Erik >> >> >> On 2017-10-27 04:33, Peter Budai wrote: >> >>> Hi Magnus, after a little poking I managed to install and use jtreg, >>> thanks for the guidance. >>> >>> Make run-test-tier1 resulted a pretty OK result for a first try, at >>> least for run-test-jdk: >>> Test results: passed: 1,610; failed: 34; error: 1 >>> It took a few hors to run – is that normal? >>> >>> I’ll review the patchset, and then share that with you. >>> >>> P. >>> >>> From: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com> >>> Sent: Thursday, October 26, 2017 11:00 AM >>> To: Peter Budai<mailto:peterbu...@hotmail.com> >>> Cc: build-dev@openjdk.java.net<mailto:build-dev@openjdk.java.net> >>> Subject: Re: Building OpenJDK9 on MSYS2 >>> >>> >>> On 2017-10-26 00:01, Peter Budai wrote: >>> OK, I have found what was missing, it was actually my fault with a >>> missing exception handler. >>> >>> So finally OpenJDK build has finished on Windows using gcc toolchain >>> running in MSYS2/MINGW64 shell. I ran hotspot unit tests, and it looks >>> promising: >>> ./build/windows-x86_64-normal-server-fastdebug/hotspot/varia >>> nt-server/libjvm/gtest/gtestLauncher.exe --jdk=/home/peterbud/jdk9/buil >>> d/windows-x86_64-normal-server-fastdebug/jdk >>> …. >>> …. >>> …. >>> >>> [----------] Global test environment tear-down >>> [==========] 346 tests from 54 test cases ran. (3859 ms total) >>> [ PASSED ] 346 tests. >>> I'm impressed! :-) >>> >>> Would you care to share your current patchset, just to still my >>> curiosity? :-) >>> >>> >>> >>> What is the best way to test the current build more thoroughly? >>> "make run-test-tier1". As Erik says, you'll need jtreg, and call >>> "configure --with-jtreg=...". You can get it from the Adopt OpenJDK group >>> here: https://adopt-openjdk.ci.cloudbees.com/job/jtreg/lastSuccess >>> fulBuild/artifact/ >>> >>> /Magnus >>> >>> >>> P. >>> >>> From: Bob Vandette<mailto:bob.vande...@oracle.com> >>> Sent: Tuesday, October 24, 2017 8:10 PM >>> To: Peter Budai<mailto:peterbu...@hotmail.com> >>> Cc: David Holmes<mailto:david.hol...@oracle.com>; Erik Joelsson<mailto: >>> erik.joels...@oracle.com>; Magnus Ihse Bursie<mailto:magnus.ihse.burs >>> i...@oracle.com>; build-dev@openjdk.java.net<mailto: >>> build-dev@openjdk.java.net> >>> Subject: Re: Building OpenJDK9 on MSYS2 >>> >>> Can you provide some details about your toolchain, processor and os plus >>> a dump of the native instructions around the SEGV. This might give us >>> enough info to be able to figure out what’s going on. >>> >>> Bob. >>> >>> On Oct 24, 2017, at 1:21 PM, Peter Budai <peterbu...@hotmail.com<mailto: >>> peterbu...@hotmail.com>> wrote: >>> >>> I get that error running in the debugger but also running >>> without/outside of the debugger as well. >>> >>> I saw the comment in the code about generating SEGV in function >>> generate_get_cpu_info(), however the debugger can execute that, and the >>> SEGV I experience is coming later in the >>> VM_Version::get_processor_features() >>> function >>> >>> Peter >>> >>> From: Bob Vandette<mailto:bob.vande...@oracle.com> >>> Sent: Tuesday, October 24, 2017 6:28 PM >>> To: Peter Budai<mailto:peterbu...@hotmail.com> >>> Cc: David Holmes<mailto:david.hol...@oracle.com>; Erik Joelsson<mailto: >>> erik.joels...@oracle.com>; Magnus Ihse Bursie<mailto:magnus.ihse.burs >>> i...@oracle.com>; build-dev@openjdk.java.net<mailto: >>> build-dev@openjdk.java.net> >>> Subject: Re: Building OpenJDK9 on MSYS2 >>> >>> Was this a SEGV while you were running the debugger? >>> >>> There is an intentional SEGV generated. This is used to determine if we >>> can use some of newer >>> CPU features. Try to allow the SEGV to continue to see if you run >>> normally. >>> >>> Bob. >>> >>> >>> On Oct 24, 2017, at 11:37 AM, Peter Budai <peterbu...@hotmail.com<mailto >>>> :peterbu...@hotmail.com>> wrote: >>>> >>>> It seems that the compile is progressing well, I have 49 >>>> executables/tools and 38 compiled shared libraries already in the JDK >>>> folder. >>>> >>>> I have tried to run the product with the simplest ‘java -version’ >>>> command, however I get a SIGSEGV at get_cpu_info_stub() in >>>> vm_version_x86.cpp, VM_Version::get_processor_features() >>>> >>>> get_cpu_info_stub(&_cpuid_info); >>>> >>>> Thread 5 received signal SIGSEGV, Segmentation fault. >>>> 0x000000002d9a072f in ?? () >>>> >>>> I can debug using gdb, but unfortunately this is pure ASM, and my >>>> knowledge on this is close to 0. >>>> >>>> Any idea help or pointer how could I tackle this? >>>> >>>> Peter >>>> >>>> From: David Holmes<mailto:david.hol...@oracle.com> >>>> Sent: Sunday, October 15, 2017 10:37 PM >>>> To: Peter Budai<mailto:peterbu...@hotmail.com>; Erik Joelsson<mailto: >>>> erik.joels...@oracle.com>; Magnus Ihse Bursie<mailto:magnus.ihse.burs >>>> i...@oracle.com> >>>> Cc: build-dev@openjdk.java.net<mailto:build-dev@openjdk.java.net >>>> ><mailto:build-dev@openjdk.java.net> >>>> Subject: Re: Building OpenJDK9 on MSYS2 >>>> >>>> On 16/10/2017 12:41 AM, Peter Budai wrote: >>>> >>>>> A quick status update: >>>>> >>>>> * Hotspot successfully compiled without warnings >>>>> * I’d like to run the unit tests, but as I see ‘make check’ does >>>>> not work, and gtestlauncher expects a command line parameter jdk. Tried to >>>>> look up some documentation on this, but have not found. So the question >>>>> is: >>>>> how can I run unit tests for hotspot? Do I need also JDK compiled for >>>>> that? >>>>> Or the bootJDK is good enough? Any help would be appreciated. >>>>> >>>> Hotspot has to be tested as part of a full JDK - you can't load the JVM >>>> without having the "J" part :) >>>> >>>> You should be able to drop your built dll into an existing JDK 9 windows >>>> JDK and test it that way. >>>> >>>> David >>>> ----- >>>> >>>> * Also I’m making progress on compiling jdk, but there are some >>>>> very interesting solutions on windows linking which makes a bit more >>>>> difficult to compile with gcc: LIBS_windows contains sometimes simple >>>>> library names (which I believe is correct) and other times library names >>>>> with full path (which I believe is not the best solution). I’m trying to >>>>> rework those places and use simple library names and passing search path >>>>> for libraries -L<path> (for gcc toolchain) and /LIBPATH:<path> (for >>>>> Microsoft toolchain). Also I was surprised by a few manual function name >>>>> exports… >>>>> * jdk code base contains apparently more MSVC specific part, >>>>> many places casts/lack of casts are generating errors, static attributes >>>>> were missing etc. a bit tedious work. >>>>> >>>>> P. >>>>> >>>>> From: Erik Joelsson<mailto:erik.joels...@oracle.com> >>>>> Sent: Wednesday, October 11, 2017 4:16 PM >>>>> To: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com>; Peter >>>>> Budai<mailto:peterbu...@hotmail.com> >>>>> Cc: build-dev@openjdk.java.net<mailto:build-dev@openjdk.java.net >>>>> ><mailto:build-dev@openjdk.java.net> >>>>> Subject: Re: Building OpenJDK9 on MSYS2 >>>>> >>>>> Hello, >>>>> >>>>> On 2017-10-11 15:48, Magnus Ihse Bursie wrote: >>>>> >>>>> For gcc, we let the compiler generate the .d file. For the Microsoft >>>>> tool chain, we use a clever sed script to extract and create it ourself. >>>>> >>>>> I think that logic is checking for "Windows", not "Microsoft". That >>>>> might be your cause of trouble. >>>>> >>>>> Look in NativeCompilation.gmk. >>>>> >>>>> That was my initial thought as well, but we do correctly check for >>>>> microsoft. Also it's not the .d files that are the problem. As Peter just >>>>> wrote, they look fine. It's the .d.target files which we create using the >>>>> same technique on all platforms. What we don't account for is the compiler >>>>> putting Windows mixed paths in the .d files. >>>>> >>>>> /Magnus >>>>> >>>>> 11 okt. 2017 kl. 14:43 skrev Peter Budai <peterbu...@hotmail.com >>>>> <mailto:peterbu...@hotmail.com><mailto:peterbu...@hotmail.com>>: >>>>> Hi Erik, >>>>> >>>>> The .d file looks like this: >>>>> C:/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release/hotspot/variant-server/tools/adlc/objs/adlparse.obj: \ >>>>> C:/msys64/home/peterbud/jdk9/hotspot/src/share/vm/adlc/adlparse.cpp \ >>>>> >>>>> I have checked .d.targets file, and looks like it has the first line >>>>> has not been deleted, and the file names below are also wrong: >>>>> /msys64/home/peterbud/jdk9/build/windows-x86_64-normal-serve >>>>> r-release/hotspot/variant-server/tools/adlc/objs/adlparse.obj : : >>>>> /msys64/home/peterbud/jdk9/hotspot/src/share/vm/adlc/adlparse.cpp : >>>>> /msys64/home/peterbud/jdk9/hotspot/src/share/vm/adlc/adlc.hpp : >>>>> >>>>> I guess this part in the DEPENDENCY_TARGET_SED_PATTERN is fooled by >>>>> the “C:/” >>>>> -e 's/^[^:]*: *//' >>>>> >>>>> Yes, that does indeed look like the problem. I suppose the regexp is >>>>> unnecessarily strict. It should be ok to rewrite it as something like >>>>> this: >>>>> -e 's/^.*: *//' >>>>> >>>>> Basically just make sure it ends with : and any number of spaces. >>>>> >>>>> /Erik >>>>> >>>>> >>>>> >>>>> Peter >>>>> >>>>> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for >>>>> Windows 10 >>>>> >>>>> From: Erik Joelsson<mailto:erik.joels...@oracle.com> >>>>> Sent: Wednesday, October 11, 2017 12:16 PM >>>>> To: Peter Budai<mailto:peterbu...@hotmail.com>; Magnus Ihse >>>>> Bursie<mailto:magnus.ihse.bur...@oracle.com>; >>>>> build-dev@openjdk.java.net<mailto:build-dev@openjdk.java.net><mailto: >>>>> build-dev@openjdk.java.net> >>>>> Subject: Re: Building OpenJDK9 on MSYS2 >>>>> >>>>> >>>>> Hello Peter, >>>>> >>>>> On 2017-10-11 00:18, Peter Budai wrote: >>>>> Thanks Magnus & Erik >>>>> >>>>> First thanks for your support and kind words! >>>>> >>>>> Magnus, I have checked .bash_profile, .bashrc but they seem to be >>>>> empty (everything is commented out). You can check with a default MSYS2 >>>>> install, I have not changed these files at all. If you find thee something >>>>> specific I can give a try here as well. >>>>> >>>>> Let me give also a quick status update, where am I with building >>>>> hotspot: >>>>> · I guess its still the beginning, but I have managed to compile >>>>> jvm.dll with almost 700 object file: with debug info the dll is around 700 >>>>> MB 😊 >>>>> · I made only surgical, minimal changes to the source, and so >>>>> far it looks reasonable. I have encountered 3 scenarios where changes were >>>>> necessary: >>>>> o When in makefiles conditionals were using assuming that if >>>>> target_os is windows then it is visual studio compiler/linker. Obviously >>>>> these conditionals had to be reviewed in a few places and if necessary >>>>> were >>>>> changes to check the toolchain=Microsoft >>>>> These are not surprising and should be pretty straight forward to fix >>>>> and it seems you know what to do. >>>>> >>>>> >>>>> · >>>>> o I got a few warnings as gcc 7.2 uncovered some code problems in >>>>> windows specific codes, where before that MSVC I guess did not say a word… >>>>> To get around this you can configure with --disable-warnings-as-errors >>>>> until you get things working properly. This is commonly needed when using >>>>> compiler versions that we normally don't use. >>>>> >>>>> >>>>> · >>>>> o And I had like 6-7 places where the code was using MSVC specific >>>>> __try … __except structures which gcc does not know. Do you have a >>>>> suggestion how to approach them? I can do ugly #ifdefs (I would avoid >>>>> that) >>>>> but I have also seen some solutions to replace them with a code which gcc >>>>> can compile (http://www.programmingunlimited.net/siteexec/content.cgi? >>>>> page=mingw-seh ) – but before doing that though I would ask first >>>>> you on the purpose of those >>>>> This kind of question is probably best to bring to the hotspot mailing >>>>> list. >>>>> · What bothers me is that I was not able to do incremental >>>>> builds: when an error occurs, and build stops, then after making change in >>>>> the CPP source the build cannot continue, I always got an error message: >>>>> >>>>> /C/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release/hotspot/variant-server/tools/adlc/objs/adlparse.d.targets:1: >>>>> *** missing target pattern. Stop. >>>>> make[2]: *** [make/Main.gmk:256: hotspot-server-gensrc] Error 2 >>>>> >>>>> If I do a ‘make clean’ and restart the build then it nicely compiles. >>>>> >>>>> Question 1: Is there a way to resume such builds without ‘make clean’? >>>>> Well, incremental builds is supposed to work well. We have several >>>>> extra tricks in there to handle cases where normal make builds would fail. >>>>> The *.d.targets files is one such trick and it seems to backfire for you. >>>>> The contents of that file should be something like: >>>>> >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/adlparse.cpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/adlc.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/opto/opcodes.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/opto/classes.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/arena.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/opto/adlcVMDeps.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/filebuff.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/dict2.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/forms.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/formsopt.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/formssel.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/archDesc.hpp : >>>>> /localhome/hg/jdk9-dev/hotspot/src/share/vm/adlc/adlparse.hpp : >>>>> >>>>> Basically an empty rule for each dependency for the corresponding >>>>> object file. Declaring these rules makes it possible to delete source >>>>> files >>>>> without having to build clean. It seems your file is not generated >>>>> correctly so please have a look inside it. The file is in >>>>> make/common/NativeCompilation.gmk, look for >>>>> DEPENDENCY_TARGET_SED_PATTERN. >>>>> >>>>> >>>>> >>>>> Question 2: What would be the best way to submit/share the patches for >>>>> your thorough review? >>>>> >>>>> Well, first of all, have you signed the OCA? >>>>> >>>>> As for publishing patches and reviews, there is a bit of chicken and >>>>> egg problem. Once you become an "author" in any of the OpenJDK projects, >>>>> you get a user name and should be able to publish reviews on >>>>> cr.openjdk.java.net<http://cr.openjdk.java.net/><http://cr.o >>>>> penjdk.java.net<http://cr.openjdk.java.net/<http://cr.openjd >>>>> k.java.net/%3e%3chttp:/cr.openjdk.java.net%3chttp:/cr. >>>>> openjdk.java.net/>>>. Before that, if the patch is small, it can be >>>>> posted inline in an email to the list. If it's large, you will need a >>>>> current OpenJDK user to host it for you. At least that's how I understand >>>>> it. Hopefully someone who knows the process better can chime in here. >>>>> >>>>> I should also let you know that getting this into JDK 9 is most likely >>>>> not going to happen. AFAIK we are only doing security updates for 9. It >>>>> would have to go into the currently active release. I should also warn you >>>>> that new ports generally need a certain amount of backing to be accepted. >>>>> It may be that this would have to live in a porting side project. >>>>> Hopefully >>>>> someone who knows this better can chime in here as well. >>>>> >>>>> /Erik >>>>> >>>>> >>>>> P. >>>>> >>>>> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for >>>>> Windows 10 >>>>> >>>>> From: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com> >>>>> Sent: Tuesday, October 10, 2017 10:04 AM >>>>> To: Peter Budai<mailto:peterbu...@hotmail.com>; Erik Joelsson<mailto: >>>>> erik.joels...@oracle.com>; build-dev@openjdk.java.net<mailto: >>>>> build-dev@openjdk.java.net><mailto:build-dev@openjdk.java.net> >>>>> Subject: Re: Building OpenJDK9 on MSYS2 >>>>> >>>>> On 2017-10-07 10:14, Peter Budai wrote: >>>>> The configure of OpenJDK overwrites the SHELL. Actually it is using >>>>> bash, but for the arguments it was using “-e -o pipefail”. I have figured >>>>> that for MSYS2 bash what is needed as bash arguments is “-e -l -c -o >>>>> pipefail” >>>>> >>>>> That looks like solving this problem, and now the real issues are >>>>> surfacing. >>>>> >>>>> FWIW, "-l" makes bash behave like a login shell. Most likely you are >>>>> changing bash's behavior in one of your login scripts, and that change is >>>>> what's really needed. >>>>> >>>>> /Magnus >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Peter >>>>> >>>>> From: Peter Budai<mailto:peterbu...@hotmail.com> >>>>> Sent: Friday, October 6, 2017 6:43 PM >>>>> To: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com>; Erik >>>>> Joelsson<mailto:erik.joels...@oracle.com>; build-dev@openjdk.java.net >>>>> <mailto:build-dev@openjdk.java.net><mailto:build-dev@openjdk.java.net> >>>>> Subject: RE: Building OpenJDK9 on MSYS2 >>>>> >>>>> Magnus, >>>>> >>>>> I have followed your suggestion and removed the fixpath prefixes from >>>>> gcc related compile tools, and left only the fixpath prefix _only_ for the >>>>> Boot JDK related tools in place. >>>>> >>>>> 1) As I follow the process, all java and javac related compile >>>>> steps are running properly >>>>> 2) When the process reaches gcc related steps I got the error >>>>> message at the same place as before (no fixpath). If I execute that >>>>> command >>>>> from the bash prompt, it creates the output: >>>>> >>>>> $ ( /usr/bin/gawk '/@@END_COPYRIGHT@@/{exit}1' >>>>> /C/msys64/home/peterbud/jdk9/jdk/src/java.base/share/classes >>>>> /sun/nio/ch/SocketOptionRegistry.java.template && >>>>> /C/msys64/mingw64/bin/gcc -E -x c /C/msys64/home/peterbud/jdk9/j >>>>> dk/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template >>>>> 2> >(/usr/bin/grep -v '^SocketOptionRegistry.java.template$' >&2) | >>>>> /usr/bin/gawk '/@@START_HERE@@/,0' | /usr/bin/sed -e >>>>> 's/@@START_HERE@@/\/\/ >>>>> AUTOMATICALLY GENERATED FILE - DO NOT EDIT/' -e 's/PREFIX_//' -e >>>>> 's/^#.*//' >>>>> ) > /C/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release/support/gensrc/java.base/sun/nio/ch/SocketOption >>>>> Registry.java >>>>> >>>>> As I have mentioned the parameters are replaced by the bash >>>>> automatically >>>>> 3) Then build continues, then little later stops at a super >>>>> simple command: >>>>> >>>>> mv /C/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release/support/gensrc/java.base/java/nio/ByteBuffer.java.tmp >>>>> /C/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release/support/gensrc/java.base/java/nio/ByteBuffer.java >>>>> Needless to say, the ByteBuffer.java.tmp file DOES exist. >>>>> And running the above command from the bash works, and build continues. >>>>> 4) A few similar cases (stops) with DirectByteBuffer and >>>>> DirectByteBufferR >>>>> >>>>> >>>>> Currently I try to explore how that might relate to the MSYS2 bash and >>>>> make, somehow it behaves differently >>>>> >>>>> If you have any other suggestion, let me know. >>>>> >>>>> Best regards, >>>>> >>>>> Peter >>>>> >>>>> From: Peter Budai<mailto:peterbu...@hotmail.com> >>>>> Sent: Thursday, October 5, 2017 3:52 PM >>>>> To: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com>; Erik >>>>> Joelsson<mailto:erik.joels...@oracle.com>; build-dev@openjdk.java.net >>>>> <mailto:build-dev@openjdk.java.net><mailto:build-dev@openjdk.java.net> >>>>> Subject: RE: Building OpenJDK9 on MSYS2 >>>>> >>>>> Hi Magnus, >>>>> >>>>> So first of all, here is the current patch, which I was not able to >>>>> attach: https://pastebin.com/pwT4Ynxc >>>>> >>>>> That's surprising, since gcc is prefixed with fixpath, which it should >>>>>>> not. >>>>>>> >>>>>> Actually you DO need fixpath IMHO. >>>>> This is a mingw64 version of the gcc (/C/msys64/mingw64/bin/gcc), >>>>> which is a fully functional Windows executable, which expects Windows >>>>> formatted path arguments. >>>>> As the updated build process uses EXPORT MSYS2_ARG_CONV_EXCL=* (see >>>>> that patch), none of the command line arguments are converted from the >>>>> unix path to Windows, but fixpath does that conversion. There is a wiki >>>>> describing more details on this: >>>>> https://github.com/msys2/msys2/wiki/Porting#user-content- >>>>> filesystem-namespaces >>>>> >>>>> >>>>> >>>>> I have a hard time believing this is a race condition. On the other >>>>>>> hand, this stuff is weird, we're misusing the C preprocessor to process >>>>>>> defines in java code, so I'm not surprised it breaks down. >>>>>>> I don't know why it succeeded when run on the command line, though. >>>>>>> >>>>>> When I execute that command from the bash command line there is no >>>>> EXPORT MSYS2_ARG_CONV_EXCL, but the bash itself does the automatic >>>>> conversion of the arguments. Maybe it has something to do how fixpath does >>>>> CreateProcess? >>>>> >>>>> Does that help? >>>>> >>>>> Best regards, >>>>> >>>>> Peter >>>>> >>>>> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for >>>>> Windows 10 >>>>> >>>>> From: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com> >>>>> Sent: Thursday, October 5, 2017 12:13 PM >>>>> To: Peter Budai<mailto:peterbu...@hotmail.com>; Erik Joelsson<mailto: >>>>> erik.joels...@oracle.com>; build-dev@openjdk.java.net<mailto: >>>>> build-dev@openjdk.java.net><mailto:build-dev@openjdk.java.net> >>>>> Subject: Re: Building OpenJDK9 on MSYS2 >>>>> >>>>> >>>>> On 2017-10-05 11:59, Peter Budai wrote: >>>>> Hi Magnus and Erik, >>>>> >>>>> I really appreciate your quick feedback. I assumed that it won’t be >>>>> easy, but I just don’t feel I should give up now - maybe later when I see >>>>> the real scale of work. So bear with me for a time being. >>>>> >>>>> Attached is a patch which already includes Magnus’ changes, plus a few >>>>> which I have added: >>>>> · basically enabling gcc for windows, >>>>> · and modifying a logic for compiling fixpath (before that it >>>>> was using hard-coded MS VSC compile flags) >>>>> >>>>> Actually, you must make sure fixpath is *not* used for the toolchain, >>>>> since gcc uses unix style paths. >>>>> (However, other tools such as java will still need it.) >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> So here is what I have as the result of configure: >>>>> ==================================================== >>>>> The existing configuration has been successfully updated in >>>>> /C/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release >>>>> using configure arguments '--disable-freetype-bundling >>>>> --disable-javac-server'. >>>>> >>>>> Configuration summary: >>>>> * Debug level: release >>>>> * HS debug level: product >>>>> * JDK variant: normal >>>>> * JVM variants: server >>>>> * OpenJDK target: OS: windows, CPU architecture: x86, address length: >>>>> 64 >>>>> * Version string: 9-internal+0-adhoc.peterbud.jdk9 (9-internal) >>>>> >>>>> Tools summary: >>>>> * Environment: msys version 2.9.0(0.318/5/3) (root at /C/msys64) >>>>> * Boot JDK: java version "1.8.0_144" Java(TM) SE Runtime >>>>> Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM >>>>> (build >>>>> 25.144-b01, mixed mode) (at /c/progra~1/java/jdk18~1.0_1) >>>>> * Toolchain: gcc (GNU Compiler Collection) >>>>> * C Compiler: Version 7.2.0 (at /C/msys64/mingw64/bin/gcc) >>>>> * C++ Compiler: Version 7.2.0 (at /c/msys64/mingw64/bin/g++) >>>>> >>>>> Build performance summary: >>>>> * Cores to use: 4 >>>>> * Memory limit: 16216 MB >>>>> >>>>> Its clear says that the toolchain is gcc 7.2 (BTW there is no Visual >>>>> Studio on this machine) >>>>> >>>>> Now for the details of the config log, you can see here: >>>>> https://pastebin.com/MN2ZYcHH >>>>> >>>>> And about the build process and the error I get: >>>>> >>>>> $ make JOBS=1 >>>>> Building target 'default (exploded-image)' in configuration >>>>> 'windows-x86_64-normal-server-release' >>>>> Compiling 8 files for BUILD_TOOLS_LANGTOOLS >>>>> Compiling 17 properties into resource bundles for jdk.compiler >>>>> Parsing 1 properties into enum-like class for jdk.compiler >>>>> Compiling 19 properties into resource bundles for jdk.javadoc >>>>> Compiling 12 properties into resource bundles for jdk.jdeps >>>>> Compiling 7 properties into resource bundles for jdk.jshell >>>>> Compiling 117 files for BUILD_INTERIM_java.compiler >>>>> Compiling 396 files for BUILD_INTERIM_jdk.compiler >>>>> Compiling 61 files for BUILD_INTERIM_jdk.jdeps >>>>> Compiling 457 files for BUILD_INTERIM_jdk.javadoc >>>>> Note: Some input files use or override a deprecated API. >>>>> Note: Recompile with -Xlint:deprecation for details. >>>>> Compiling 159 files for BUILD_TOOLS_JDK >>>>> Note: Some input files use unchecked or unsafe operations. >>>>> Note: Recompile with -Xlint:unchecked for details. >>>>> make[3]: *** [GensrcMisc.gmk:78: /C/msys64/home/peterbud/jdk9/b >>>>> uild/windows-x86_64-normal-server-release/support/gensrc/jav >>>>> a.base/sun/nio/ch/SocketOptionRegistry.java] Error 1 >>>>> make[3]: *** Deleting file '/C/msys64/home/peterbud/jdk9/ >>>>> build/windows-x86_64-normal-server-release/support/gensrc/ja >>>>> va.base/sun/nio/ch/SocketOptionRegistry.java' >>>>> make[2]: *** [make/Main.gmk:115: java.base-gensrc-jdk] Error 2 >>>>> >>>>> ERROR: Build failed for target 'default (exploded-image)' in >>>>> configuration 'windows-x86_64-normal-server-release' (exit code 2) >>>>> >>>>> No indication of failed target found. >>>>> Hint: Try searching the build log for '] Error'. >>>>> Hint: See common/doc/building.html#troubleshooting for assistance. >>>>> >>>>> make[1]: *** [/home/peterbud/jdk9/make/Init.gmk:296: main] Error 2 >>>>> make: *** [/home/peterbud/jdk9/make/Init.gmk:185: default] Error 2 >>>>> >>>>> If I run here >>>>> make JOBS=1 LOG=debug >>>>> The failing line seems to be this: >>>>> >>>>> ( /usr/bin/gawk '/@@END_COPYRIGHT@@/{exit}1' >>>>> /C/msys64/home/peterbud/jdk9/jdk/src/java.base/share/classes >>>>> /sun/nio/ch/SocketOptionRegistry.java.template && >>>>> /C/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release/configure-support/bin/fixpath.exe >>>>> -m/C/msys64/@/c/msys64/@/c/progra~ /C/msys64/mingw64/bin/gcc -E -x c >>>>> /C/msys64/home/peterbud/jdk9/jdk/src/java.base/share/classes >>>>> /sun/nio/ch/SocketOptionRegistry.java.template 2> >(/usr/bin/grep -v >>>>> '^SocketOptionRegistry.java.template$' >&2) | /usr/bin/gawk >>>>> '/@@START_HERE@@/,0' | /usr/bin/sed -e 's/@@START_HERE@@/\/\/ >>>>> AUTOMATICALLY GENERATED FILE - DO NOT EDIT/' -e 's/PREFIX_//' -e >>>>> 's/^#.*//' >>>>> ) > /C/msys64/home/peterbud/jdk9/build/windows-x86_64-normal-ser >>>>> ver-release/support/gensrc/java.base/sun/nio/ch/SocketOption >>>>> Registry.java >>>>> make[3]: *** [GensrcMisc.gmk:78: /C/msys64/home/peterbud/jdk9/b >>>>> uild/windows-x86_64-normal-server-release/support/gensrc/jav >>>>> a.base/sun/nio/ch/SocketOptionRegistry.java] Error 1 >>>>> >>>>> Now the interesting is: if I copy this line above to the bash prompt, >>>>> it runs without problem, and the file support/gensrc/java.base/sun/n >>>>> io/ch/SocketOptionRegistry.java >>>>> That's surprising, since gcc is prefixed with fixpath, which it should >>>>> not. >>>>> >>>>> I have a hard time believing this is a race condition. On the other >>>>> hand, this stuff is weird, we're misusing the C preprocessor to process >>>>> defines in java code, so I'm not suprised it breaks down. I don't know why >>>>> it succeeded when run on the command line, though. My suggestion is to >>>>> just >>>>> do some quick and dirty hack around this: take the file you manage to >>>>> generate and just copy it in during the build instead. If you can get >>>>> round >>>>> this, you might start seeing some *real* problems. :-) >>>>> >>>>> Also, my suggestion is that you try running "make hotspot" to cut to >>>>> the chase. Compiling hotspot will likely be the hardest thing. Or even >>>>> "make -k hotspot" to get an assessment of the amount of work ahead of you. >>>>> >>>>> /Magnus >>>>> Is produced. >>>>> >>>>> Then I can again issue >>>>> make JOBS=1 LOG=debug >>>>> >>>>> And the compile process is being continued, until a similar error pops >>>>> up with a different generated file. I have an assumption that this happens >>>>> because make is still running parallel jobs, despite JOBS=1 but I’m not >>>>> sure. >>>>> >>>>> How could I best tackle this? >>>>> >>>>> Thank you and best regards, >>>>> >>>>> Peter >>>>> >>>>> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for >>>>> Windows 10 >>>>> >>>>> From: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com> >>>>> Sent: Thursday, October 5, 2017 11:33 AM >>>>> To: Erik Joelsson<mailto:erik.joels...@oracle.com>; Peter >>>>> Budai<mailto:peterbu...@hotmail.com>; build-dev@openjdk.java.net<mai >>>>> lto:build-dev@openjdk.java.net><mailto:build-dev@openjdk.java.net> >>>>> Subject: Re: Building OpenJDK9 on MSYS2 >>>>> >>>>> On 2017-10-05 10:10, Erik Joelsson wrote: >>>>> >>>>>> Hello Peter, >>>>>> >>>>>> >>>>>> On 2017-10-04 21:15, Peter Budai wrote: >>>>>> >>>>>>> Hi Magnus, >>>>>>> >>>>>>> Thanks for the quick reply I’ll check these patches with msys2. >>>>>>> >>>>>>> Let me specify with more details what I’d like to achieve: I’d like >>>>>>> to build OpenJDK9 with MSYS2 MINGW64 environment using gcc toolchain. >>>>>>> (I’m not sure how familiar are you with MSYS2, but there are 3 >>>>>>> different environments: MSYS2, MINGW32 and MINGW64). In theory >>>>>>> MINGW64 with gcc is the closes you can get on Windows platform as a >>>>>>> gcc unix like build environment, which produces still a native 64-bit >>>>>>> executable on Windows. >>>>>>> >>>>>>> I’m not very familiar with OpenJDK yet, so therefore I’d like to hear >>>>>>> your opinion: how realistic is that? >>>>>>> >>>>>> Sorry to disappoint, but I would say that requires major work. There >>>>>> is a strong historic assumption that windows builds are done using >>>>>> Visual Studio. We have abstracted away some of it in configure (see >>>>>> TOOLCHAIN_TYPE), but it's very far from enough to change compiler >>>>>> environment for a Windows build. The native sources are also bound to >>>>>> make a lot of such assumptions. I would expect the changes needed to >>>>>> be in the thousands of lines of code. >>>>>> >>>>> I agree that it requires hard work (even if "thousands" might be an >>>>> overestimation I think, but "hundreds" is not enough, so it's the right >>>>> magnitude). On the other hand, it would be really good if we did sort >>>>> things out, so that we had proper conditions based on OS vs >>>>> compiler/toolchain. >>>>> >>>>> If you really want to start, the first thing is to patch toolchain.m4 >>>>> to >>>>> VALID_TOOLCHAINS_windows="microsoft gcc" >>>>> and then call configure using "bash configure >>>>> --with-toolchain-type=gcc". >>>>> >>>>> As Erik, I doubt you will come very far before things starts tumbling >>>>> down. >>>>> >>>>> When we say supporting the build in msys2 instead of cygwin, we just >>>>>> mean using msys2 as the unix emulating layer for our tools like >>>>>> make/bash/grep/sed etc. >>>>>> >>>>>> One think I have done successfully is running the build in WSL >>>>>> (Windows Subsystem for Linux), but that isn't all that helpful as WSL >>>>>> for practical purposes is more or less like running Linux in a VM, so >>>>>> the build sees a Linux system and builds a Linux binary. >>>>>> >>>>>>> As a side note: with MINGW64 I have managed to run configure phase >>>>>>> successfully for OpenJDK. The compile process has also started and >>>>>>> went for a while, but interestingly I run into some kind of race >>>>>>> conditions as make stopped with an error. Using LOG=debug I have fond >>>>>>> the failing line and then copying the failed command and pasting it >>>>>>> to the bash prompt it successfully generated the output target, and >>>>>>> then the build process run further when a similar situation happened. >>>>>>> Also pasting the failed command run in the bash without any problem, >>>>>>> and build continued… until the next. >>>>>>> >>>>>> Without seeing the errors I can't say much. I very much doubt that you >>>>>> are running with gcc as the compiler though. Configure isn't easily >>>>>> fooled into using a different compiler to what it prefers, and I would >>>>>> expect things to crash and burn pretty early if you actually did. >>>>>> >>>>>> /Erik >>>>>> >>>>>>> I have tried to run make JOBS=1, but did not help, strangely I have >>>>>>> still seen in the log make[3] and make[4] logs which suggested that >>>>>>> there are more than one make jobs were running. Also tried .configure >>>>>>> --with-output-sync=recurse without success (same symptoms) >>>>>>> >>>>>>> Let me know your thoughts. >>>>>>> >>>>>>> Best regards, >>>>>>> >>>>>>> Peter >>>>>>> >>>>>>> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for >>>>>>> Windows 10 >>>>>>> >>>>>>> From: Magnus Ihse Bursie<mailto:magnus.ihse.bur...@oracle.com> >>>>>>> Sent: Wednesday, October 4, 2017 1:04 AM >>>>>>> To: Peter Budai<mailto:peterbu...@hotmail.com>; >>>>>>> build-dev@openjdk.java.net<mailto:build-dev@openjdk.java.net >>>>>>> ><mailto:build-dev@openjdk.java.net><mailto:build-dev@openjd >>>>>>> k.java.net><mailto:build-dev@openjdk.java.net> >>>>>>> Subject: Re: Building OpenJDK9 on MSYS2 >>>>>>> >>>>>>> Actually, it wasn't so much remaining trouble. :-) I fired up msys2 >>>>>>> and >>>>>>> checked out where I left off. It turned out that the remaining snag >>>>>>> was >>>>>>> that msys2 tries to convert command lines automatically, from "unix" >>>>>>> style paths to "windows" style paths. Unfortunately, it does not do >>>>>>> this >>>>>>> very well and it breaks all sorts of things. We already have a >>>>>>> FIXPATH >>>>>>> solution in place which deals with this, so basically all I had to do >>>>>>> was disable this (by setting MSYS2_ARG_CONV_EXCL to "*"). However, >>>>>>> this >>>>>>> broke our cygpath replacement hack (!) so I had to disable it there. >>>>>>> Sigh. Anyway, with those fixes it ran and worked well. (I also >>>>>>> discovered and fixed a bug related to how we set up the FIXPATH >>>>>>> variable >>>>>>> on msys, but it only triggers in certain circumstances). >>>>>>> >>>>>>> With this patch I now jdk9 seems to build fine on msys2. It should >>>>>>> apply >>>>>>> cleanly on jdk9/jdk9. Since it turned out to be so trivial, I'll try >>>>>>> to >>>>>>> get it in in jdk10. >>>>>>> >>>>>>> Here's the patch if you want to apply it yourself: >>>>>>> >>>>>>> diff -r a08cbfc0e4ec common/autoconf/basics_windows.m4 >>>>>>> --- a/common/autoconf/basics_windows.m4 Thu Aug 03 18:56:56 2017 >>>>>>> +0000 >>>>>>> +++ b/common/autoconf/basics_windows.m4 Wed Oct 04 00:53:58 2017 >>>>>>> +0200 >>>>>>> @@ -42,7 +42,7 @@ >>>>>>> windows_path=`$CYGPATH -m "$unix_path"` >>>>>>> $1="$windows_path" >>>>>>> elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then >>>>>>> - windows_path=`cmd //c echo $unix_path` >>>>>>> + windows_path=`MSYS2_ARG_CONV_EXCL= cmd //c echo $unix_path` >>>>>>> $1="$windows_path" >>>>>>> fi >>>>>>> ]) >>>>>>> @@ -136,6 +136,16 @@ >>>>>>> fi >>>>>>> ]) >>>>>>> >>>>>>> +AC_DEFUN([BASIC_MSYS_UPDATE_FIXPATH], >>>>>>> +[ >>>>>>> + # Take all collected prefixes and turn them into a >>>>>>> -m/c/foo@/c/bar@... command line >>>>>>> + # @ was chosen as separator to minimize risk of other tools >>>>>>> messing >>>>>>> around with it >>>>>>> + all_unique_prefixes=`echo "${all_fixpath_prefixes@<:@@@:>@}" \ >>>>>>> + | tr ' ' '\n' | $GREP '^/./' | $SORT | $UNIQ` >>>>>>> + fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'` >>>>>>> + FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list" >>>>>>> +]) >>>>>>> + >>>>>>> AC_DEFUN([BASIC_FIXUP_PATH_MSYS], >>>>>>> [ >>>>>>> path="[$]$1" >>>>>>> @@ -143,7 +153,7 @@ >>>>>>> new_path="$path" >>>>>>> if test "x$has_colon" = x; then >>>>>>> # Not in mixed or Windows style, start by that. >>>>>>> - new_path=`cmd //c echo $path` >>>>>>> + new_path=`MSYS2_ARG_CONV_EXCL= cmd //c echo $path` >>>>>>> fi >>>>>>> >>>>>>> BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path]) >>>>>>> @@ -155,6 +165,8 @@ >>>>>>> >>>>>>> # Save the first 10 bytes of this path to the storage, so >>>>>>> fixpath >>>>>>> can work. >>>>>>> all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" >>>>>>> "${new_path:0:10}") >>>>>>> + # We might need to re-evaluate FIXPATH. >>>>>>> + BASIC_MSYS_UPDATE_FIXPATH >>>>>>> ]) >>>>>>> >>>>>>> AC_DEFUN([BASIC_FIXUP_EXECUTABLE_CYGWIN], >>>>>>> @@ -293,7 +305,7 @@ >>>>>>> # Do not save /bin paths to all_fixpath_prefixes! >>>>>>> else >>>>>>> # Not in mixed or Windows style, start by that. >>>>>>> - new_path=`cmd //c echo $new_path` >>>>>>> + new_path=`MSYS2_ARG_CONV_EXCL= cmd //c echo $new_path` >>>>>>> BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path]) >>>>>>> # Output is in $new_path >>>>>>> BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path) >>>>>>> @@ -302,6 +314,8 @@ >>>>>>> >>>>>>> # Save the first 10 bytes of this path to the storage, so >>>>>>> fixpath >>>>>>> can work. >>>>>>> all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" >>>>>>> "${new_path:0:10}") >>>>>>> + # We might need to re-evaluate FIXPATH. >>>>>>> + BASIC_MSYS_UPDATE_FIXPATH >>>>>>> fi >>>>>>> ]) >>>>>>> >>>>>>> @@ -347,6 +361,10 @@ >>>>>>> WINDOWS_ENV_VENDOR='msys' >>>>>>> WINDOWS_ENV_VERSION="$MSYS_VERSION" >>>>>>> >>>>>>> + # Prohibit msys2 path conversion from trying to be >>>>>>> "intelligent", >>>>>>> and rely >>>>>>> + # on fixpath instead. >>>>>>> + export MSYS2_ARG_CONV_EXCL="*" >>>>>>> + >>>>>>> AC_MSG_CHECKING([msys root directory as unix-style path]) >>>>>>> # The cmd output ends with Windows line endings (CR/LF), >>>>>>> the grep >>>>>>> command will strip that away >>>>>>> MSYS_ROOT_PATH=`cd / ; cmd /c cd | $GREP ".*"` >>>>>>> @@ -391,10 +409,7 @@ >>>>>>> elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then >>>>>>> # Take all collected prefixes and turn them into a >>>>>>> -m/c/foo@/c/bar@... command line >>>>>>> # @ was chosen as separator to minimize risk of other >>>>>>> tools >>>>>>> messing around with it >>>>>>> - all_unique_prefixes=`echo "${all_fixpath_prefixes@<:@@@:>@}" >>>>>>> \ >>>>>>> - | tr ' ' '\n' | $GREP '^/./' | $SORT | $UNIQ` >>>>>>> - fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' >>>>>>> '@'` >>>>>>> - FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list" >>>>>>> + BASIC_MSYS_UPDATE_FIXPATH >>>>>>> fi >>>>>>> FIXPATH_SRC_W="$FIXPATH_SRC" >>>>>>> FIXPATH_BIN_W="$FIXPATH_BIN" >>>>>>> diff -r a08cbfc0e4ec common/autoconf/build-aux/config.sub >>>>>>> --- a/common/autoconf/build-aux/config.sub Thu Aug 03 18:56:56 >>>>>>> 2017 +0000 >>>>>>> +++ b/common/autoconf/build-aux/config.sub Wed Oct 04 00:53:58 >>>>>>> 2017 +0200 >>>>>>> @@ -30,7 +30,7 @@ >>>>>>> DIR=`dirname $0` >>>>>>> >>>>>>> # First, filter out everything that doesn't begin with >>>>>>> "aarch64-" >>>>>>> -if ! echo $* | grep '^aarch64-' >/dev/null ; then >>>>>>> +if ! echo $* | grep -e '^aarch64-' -e 'msys' >/dev/null ; then >>>>>>> . $DIR/autoconf-config.sub "$@" >>>>>>> # autoconf-config.sub exits, so we never reach here, but >>>>>>> just in >>>>>>> # case we do: >>>>>>> @@ -38,13 +38,17 @@ >>>>>>> fi >>>>>>> >>>>>>> while test $# -gt 0 ; do >>>>>>> - case $1 in >>>>>>> + case $1 in >>>>>>> -- ) # Stop option processing >>>>>>> shift; break ;; >>>>>>> aarch64-* ) >>>>>>> config=`echo $1 | sed 's/^aarch64-/arm-/'` >>>>>>> sub_args="$sub_args $config" >>>>>>> shift; ;; >>>>>>> + *-msys ) >>>>>>> + config=`echo $1 | sed 's/msys/mingw32/'` >>>>>>> + sub_args="$sub_args $config" >>>>>>> + shift; ;; >>>>>>> - ) # Use stdin as input. >>>>>>> sub_args="$sub_args $1" >>>>>>> shift; break ;; >>>>>>> diff -r a08cbfc0e4ec common/autoconf/spec.gmk.in >>>>>>> --- a/common/autoconf/spec.gmk.in Thu Aug 03 18:56:56 2017 +0000 >>>>>>> +++ b/common/autoconf/spec.gmk.in Wed Oct 04 00:53:58 2017 +0200 >>>>>>> @@ -120,6 +120,13 @@ >>>>>>> # On Windows, the Visual Studio toolchain needs the PATH to be >>>>>>> adjusted >>>>>>> # to include Visual Studio tools (this needs to be in >>>>>>> cygwin/msys >>>>>>> style). >>>>>>> export PATH:=@VS_PATH@ >>>>>>> + >>>>>>> +endif >>>>>>> + >>>>>>> +ifeq ($(OPENJDK_TARGET_OS_ENV), windows.msys) >>>>>>> + # On msys2, prohibit msys path conversion from trying to be >>>>>>> + # "intelligent", and rely on fixpath instead. >>>>>>> + export MSYS2_ARG_CONV_EXCL:=* >>>>>>> endif >>>>>>> >>>>>>> SYSROOT_CFLAGS := @SYSROOT_CFLAGS@ >>>>>>> >>>>>>> /Magnus >>>>>>> >>>>>>> On 2017-10-03 22:34, Magnus Ihse Bursie wrote: >>>>>>> >>>>>>>> I gave msys2 a shot some time ago, but it ended up too much trouble. >>>>>>>> I'll share some of my notes from that attempt, for what it's worth. >>>>>>>> >>>>>>>> To install package X/Y, run "pacman -S X/Y". Missing tools and >>>>>>>> packages where to find them: >>>>>>>> cmp: msys/diffutils >>>>>>>> tar: msys/tar >>>>>>>> make: msys/make >>>>>>>> unzip: msys/unzip >>>>>>>> zip: msys/zip >>>>>>>> >>>>>>>> config.sub reports msys as "x86_64-pc-mingw32" but msys2 as >>>>>>>> "x86_64-pc-msys". This patch adds postprocessing in "our" config.sub >>>>>>>> to report msys2 similar to msys. (Opinions, including my own :-) may >>>>>>>> vary if this really is the best way..) >>>>>>>> >>>>>>>> diff -r b88023f46daa common/autoconf/build-aux/config.sub >>>>>>>> --- a/common/autoconf/build-aux/config.sub Fri Jan 27 10:15:41 >>>>>>>> 2017 +0100 >>>>>>>> +++ b/common/autoconf/build-aux/config.sub Fri Feb 03 05:00:25 >>>>>>>> 2017 -0700 >>>>>>>> @@ -30,7 +30,7 @@ >>>>>>>> DIR=`dirname $0` >>>>>>>> >>>>>>>> # First, filter out everything that doesn't begin with >>>>>>>> "aarch64-" >>>>>>>> -if ! echo $* | grep '^aarch64-' >/dev/null ; then >>>>>>>> +if ! echo $* | grep -e '^aarch64-' -e 'msys' >/dev/null ; then >>>>>>>> . $DIR/autoconf-config.sub "$@" >>>>>>>> # autoconf-config.sub exits, so we never reach here, but >>>>>>>> just in >>>>>>>> # case we do: >>>>>>>> @@ -45,6 +45,10 @@ >>>>>>>> config=`echo $1 | sed 's/^aarch64-/arm-/'` >>>>>>>> sub_args="$sub_args $config" >>>>>>>> shift; ;; >>>>>>>> + *-msys ) >>>>>>>> + config=`echo $1 | sed 's/msys/mingw32/'` >>>>>>>> + sub_args="$sub_args $config" >>>>>>>> + shift; ;; >>>>>>>> - ) # Use stdin as input. >>>>>>>> sub_args="$sub_args $1" >>>>>>>> shift; break ;; >>>>>>>> >>>>>>>> If I remember correctly, this got me past the configure stage at the >>>>>>>> time. >>>>>>>> >>>>>>>> I don't think it's very hard to get it to work on msys2, I just ran >>>>>>>> into one snag too many and didn't think msys2 would be used by >>>>>>>> anyone. >>>>>>>> >>>>>>>> /Magnus >>>>>>>> >>>>>>>> On 2017-10-03 17:20, Peter Budai wrote: >>>>>>>> >>>>>>>>> Hello, >>>>>>>>> >>>>>>>>> According to >>>>>>>>> http://hg.openjdk.java.net/jdk9/jdk9/file/a08cbfc0e4ec/commo >>>>>>>>> n/doc/building.html >>>>>>>>> >>>>>>>>> “msys2 and the new Windows Subsystem for Linux (WSL) would likely >>>>>>>>> be >>>>>>>>> possible to support in a future version but that would require a >>>>>>>>> community effort to implement” >>>>>>>>> >>>>>>>>> I’d like to help making the OpenJDK 9 build working on msys2. What >>>>>>>>> is >>>>>>>>> the best way to move forward? Is there a similar effort in >>>>>>>>> progress? >>>>>>>>> >>>>>>>>> Thank you and best regards, >>>>>>>>> >>>>>>>>> Peter >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>> >>> >