building the JDK on Windows using Cygwin

erik.joelsson at oracle.com erik.joelsson at oracle.com
Wed Jul 3 06:39:21 UTC 2024


On 7/1/24 18:55, Anil wrote:
> Thank you for your reply.
> I ran the Visual Studio Setup and installed both Build Tools 2019, and 
> also Visual Studio 2022.
> I enabled the checkboxes in *both* for Desktop Development with C++.
> I tried it but failed. I opened Administrator window in both 
> Powershell and CMD but both gave "Access is denied"
>
> PS C:\WINDOWS\system32> cd 'C:\Program Files\'
> PS C:\Program Files> fsutil file setshortname "Microsoft Visual 
> Studio" MICROS~3
> Error:  Access is denied.
> PS C:\Program Files>
>
I don't know why fsutil isn't working for you, but as long as Visual 
Studio has spaces in the path, you won't get the build to work. It's as 
simple as that. There is no workaround or magic way to supply arguments 
to configure. Hacking around in fixpath.sh or any other files in the 
build output dir, or any source, script or makefile file, won't help.

Here are the ways I can think of to fix this.

1. Figure out why you can't add a shortpath with fsutil and get it done. 
Maybe you need to boot into safemode to do it, I don't know.

2. Uninstall Visual Studio. Enable automatic 8dot3 path generation on 
the whole drive (like Windows used to be configured). Then reinstall 
Visual Studio again.

3. Uninstall Visual Studio and reinstall it into a different directory 
without spaces in it.

4. Copy the whole Visual Studio installation to a different directory 
without spaces and point --with-toolchain-path there. Remember that when 
using --with-toolchain-path, the --with-toolchain-version needs to match 
the version you are pointing to. The default is 2022.

/Erik

> Someone else suggested
> $ bash configure --enable-debug --with-toolchain-path="C:\\Program 
> Files\\Microsoft Visual 
> Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\Hostx64\\x64" 
> --with-toolchain-version=2022
> and also without
> $ bash configure --enable-debug --with-toolchain-path="C:\\Program 
> Files\\Microsoft Visual 
> Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\Hostx64\\x64"
> and also with 2019
> $ bash configure --enable-debug --with-toolchain-path="C:\\Program 
> Files\\Microsoft Visual 
> Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\Hostx64\\x64" 
> --with-toolchain-version=2019
>
> all give error:
>
> configure: Using default toolchain microsoft (Microsoft Visual Studio)
> configure: error: Cannot locate a valid Visual Studio installation
> configure exiting with result code 1
>
>
>
>
> On Mon, Jul 1, 2024 at 7:53 PM Chen Liang <liangchenblue at gmail.com> wrote:
>
>     Hi Anil,
>     I will share how I set up Visual Studio 2022 (2019 is a bit old
>     now) for building JDK.
>     First, I go to https://visualstudio.microsoft.com to download the
>     visual studio setup (which installs an installer)
>     Once in the installer, go to visual studio, and select "Desktop
>     Development with C++" which will install everything you need.
>
>     In your "C:\Program Files" (or C:\PROGRA~1) open administrator
>     powershell (you can do it by right-clicking on win start menu
>     icon) run:
>     fsutil file setshortname "Microsoft Visual Studio" MICROS~3
>     This is the only directory that really need short path; the rest
>     of the path to cl already has no space.
>
>     And yes, I am using Windows11+cygwin to build openjdk. I think you
>     already have 8dot3name enabled so you can see PROGRA~1, you
>     shouldn't be far.
>
>     On Mon, Jul 1, 2024 at 2:31 PM Anil <1dropaflame at gmail.com> wrote:
>
>         [Erik] " You could try enabling 8dot3name on the whole volume
>         (C:) using fsutil [1],  "
>         I don't know what this means and the side effects. I don't
>         want to try this on the entire C:
>         There must be people using Windows11 and Cygwin64 who have
>         gotten OpenJDK to build?
>
>         On Mon, Jul 1, 2024 at 1:59 AM <erik.joelsson at oracle.com> wrote:
>
>             Hello Anil,
>
>             On 6/30/24 12:50, Anil wrote:
>>             I went into the VC.../bin directory to get the actual
>>             path and tried again, but it failed.
>>
>>             $ bash configure
>>             --with-boot-jdk=/c/Users/Anil/OpenJDK/jdk-22.0.1
>>             --enable-debug --with-tools-dir="C:\PROGRA~2\Microsoft
>>             Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin"
>
>             The OpenJDK build cannot handle paths with spaces in them,
>             and on Windows, where the default installation directories
>             of things like Visual Studio and the SDK have spaces in
>             the directory names, we rely on short paths to work around
>             this. If you installed Visual Studio in the default
>             location, you should not need to point to a tools dir, and
>             doing so won't help if the paths can't be expressed
>             without spaces in them. It's annoying that Windows seems
>             to have turned off short path generation by default in
>             later versions.
>
>             You could try enabling 8dot3name on the whole volume (C:)
>             using fsutil [1], but you probably need to reinstall
>             Visual Studio after that to get the short path names
>             generated for all the directories in the installation.
>
>             /Erik
>
>             [1]
>             https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-8dot3name
>
>>             configure: Using default toolchain microsoft (Microsoft
>>             Visual Studio)
>>             configure: The path given by --with-tools-dir does not
>>             contain a valid
>>             configure: Visual Studio installation. Please point to
>>             the VC/bin or VC/bin/amd64
>>             configure: directory within the Visual Studio installation
>>             configure: error: Cannot locate a valid Visual Studio
>>             installation
>>             configure exiting with result code 1
>>
>>
>>             On Sun, Jun 30, 2024 at 2:07 PM Anil
>>             <1dropaflame at gmail.com> wrote:
>>
>>                 Thank you for your reply.
>>                 I tried without those flags and got the same error
>>                 message
>>                 $ bash configure
>>                 --with-boot-jdk=/c/Users/Anil/OpenJDK/jdk-22.0.1
>>                 ...
>>                 configure: Using default toolchain microsoft
>>                 (Microsoft Visual Studio)
>>                 configure: error: Cannot locate a valid Visual Studio
>>                 installation
>>                 configure exiting with result code 1
>>
>>                 checking the shortnames.
>>
>>                 C:\>dir /x
>>                 Directory of C:\
>>                 06/29/2024  09:43 PM    <DIR>      PROGRA~1    
>>                 Program Files
>>                 03/01/2024  06:34 PM    <DIR>    PROGRA~2     Program
>>                 Files (x86)
>>
>>                 Directory of C:\PROGRA~1
>>                 C:\PROGRA~1>dir /x
>>                 06/29/2024  09:43 PM    <DIR>                    
>>                 Microsoft Visual Studio
>>
>>                 Directory of C:\PROGRA~2
>>                 C:\PROGRA~2>dir /x
>>                 06/29/2024  09:41 PM    <DIR>      Microsoft Visual
>>                 Studio
>>
>>                 I don't see any shortnames set.
>>
>>                 In the Visual Studio Installer, both Visual Studio
>>                 Build Tools 2019 and Visual Studio Community are set.
>>                 When I click on the Build Tools, I see the checkbox
>>                 for Desktop C++ is checked.
>>
>>
>>                 I saw that the C++
>>
>>
>>
>>                 On Sun, Jun 30, 2024 at 1:24 PM Chen Liang
>>                 <liangchenblue at gmail.com> wrote:
>>
>>                     Usually Microsoft Visual Studio c compiler (as
>>                     installed by Visual Studio installer) already has
>>                     short names set. It seems the short name has to
>>                     be 8 characters in length and you can't set it
>>                     when some process is running in that directory.
>>                     You can check the short path in Windows
>>                     cmd's "dir /x" command. And try configure without
>>                     --with-toolchain-version and --with-tools-dir and
>>                     only set these flags if it fails without those
>>                     flags: you declare version is 22 but you point to
>>                     MSVC 2019's directory, and you should point to
>>                     the bin directory within the VC directory.
>>
>>                     On Sun, Jun 30, 2024 at 12:57 PM Anil
>>                     <1dropaflame at gmail.com> wrote:
>>
>>                         Update:
>>                         I was able to get past the error
>>                         I installed Visual Studio 2022, rebooted, but
>>                         it still cannot detect it.
>>
>>                         PS C:\> fsutil file setshortname "Program
>>                         Files (x86)" PROGRA~1
>>                         Error:  Access is denied.
>>
>>                         PS C:\Program Files (x86)> fsutil file
>>                         setshortname  "Microsoft Visual Studio"
>>                          Microsoft_Visual_Studio_2019
>>                         Error:  The parameter is incorrect.
>>
>>                         $ bash configure
>>                         --with-boot-jdk=/c/Users/Anil/OpenJDK/jdk-22.0.1
>>                         --with-toolchain-version=2022 --enable-debug
>>                         --with-tools-dir="C:\Program Files
>>                         (x86)\Microsoft Visual Studio\2019\BuildTools\VC"
>>
>>                         configure: Using default toolchain microsoft
>>                         (Microsoft Visual Studio)
>>                         configure: The path given by --with-tools-dir
>>                         does not contain a valid
>>                         configure: Visual Studio installation. Please
>>                         point to the VC/bin or VC/bin/amd64
>>                         configure: directory within the Visual Studio
>>                         installation
>>                         configure: error: Cannot locate a valid
>>                         Visual Studio installation
>>                         configure exiting with result code 1
>>
>>
>>
>>                         On Fri, Jun 28, 2024 at 8:50 PM Anil
>>                         <1dropaflame at gmail.com> wrote:
>>
>>                             (changed Subject line. was: Is anyone
>>                             able to build the JDK on Windows using
>>                             VirtualBox to host Ubuntu?)
>>
>>                             I downloaded and unzipped openjdk.
>>                             $ ls
>>                             jdk  jdk-22.0.1
>>                              openjdk-22.0.1_windows-x64_bin.zip
>>
>>                             but still I get the same error message
>>
>>                                 configure: Could not find a valid
>>                                 Boot JDK. OpenJDK distributions are
>>                                 available at http://jdk.java.net/.
>>                                 configure: This might be fixed by
>>                                 explicitly setting --with-boot-jdk
>>                                 configure: error: Cannot continue
>>                                 configure exiting with result code 1
>>
>>
>>                             I am wondering if I should /not /install
>>                             the Open JDK in the directory created by
>>                             Cygwin (/c/Users/Anil/OpenJDK) but
>>                             install it in the /cygdrive Windows folders?
>>                             (I observe that the folder created in
>>                             Cygwin is not visible outside, in Windows
>>                             even after rebooting the laptop).
>>                             Can someone please confirm?
>>                             thanks,
>>                             Anil
>>
>>
>>                             On Fri, Jun 28, 2024 at 6:48 PM Anil
>>                             <1dropaflame at gmail.com> wrote:
>>
>>                                 Thank you. I installed Cygwin on my
>>                                 Windows 11 laptop, and after
>>                                 overcoming some minor blocks, ran
>>                                 'bash configure'.
>>                                 Am I correct in assuming that I also
>>                                 need to have Open JDK installed, not
>>                                 the Oracle JDK?
>>                                 I have Java 17 from Oracle installed.
>>
>>                                 configure: Found potential Boot JDK
>>                                 using JAVA_HOME
>>                                 configure: Potential Boot JDK found
>>                                 at
>>                                 /cygdrive/c/progra~1/java/jdk-17.0.4.1
>>                                 is); ignoringot(TM) 64-Bit Server VM
>>                                 (build 17.0.4.1+1-LTS-2, mixed mode,
>>                                 sharing)
>>                                 configure: (Your Boot JDK version
>>                                 must be one of: 22 23 24)
>>                                 checking for javac...
>>                                 /cygdrive/c/progra~1/common~1/oracle/java/javapath/javac.exe
>>                                 checking for java...
>>                                 /cygdrive/c/progra~1/common~1/oracle/java/javapath/java.exe
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/progra~1/java/jdk-17.0.4.1)
>>                                 configure: Potential Boot JDK found
>>                                 at
>>                                 /cygdrive/c/progra~1/java/jdk-17.0.4.1
>>                                 is); ignoringot(TM) 64-Bit Server VM
>>                                 (build 17.0.4.1+1-LTS-2, mixed mode,
>>                                 sharing)
>>                                 configure: (Your Boot JDK version
>>                                 must be one of: 22 23 24)
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/progra~1/java/jdk-11.0.10)
>>                                 configure: Potential Boot JDK found
>>                                 at
>>                                 /cygdrive/c/progra~1/java/jdk-11.0.10
>>                                 is ); ignoringot(TM) 64-Bit Server VM
>>                                 18.9 (build 11.0.10+8-LTS-162, mixed
>>                                 mode)
>>                                 configure: (Your Boot JDK version
>>                                 must be one of: 22 23 24)
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/progra~1/java/javafx-sdk-11.0.2)
>>                                 configure: Potential Boot JDK found
>>                                 at
>>                                 /cygdrive/c/progra~1/java/javafx-sdk-11.0.2
>>                                 did not contain bin/java; ignoring
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/progra~1/java/jdk-17.0.4.1)
>>                                 configure: Potential Boot JDK found
>>                                 at
>>                                 /cygdrive/c/progra~1/java/jdk-17.0.4.1
>>                                 is); ignoringot(TM) 64-Bit Server VM
>>                                 (build 17.0.4.1+1-LTS-2, mixed mode,
>>                                 sharing)
>>                                 configure: (Your Boot JDK version
>>                                 must be one of: 22 23 24)
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/progra~1/java/jdk-11.0.10)
>>                                 configure: Potential Boot JDK found
>>                                 at
>>                                 /cygdrive/c/progra~1/java/jdk-11.0.10
>>                                 is ); ignoringot(TM) 64-Bit Server VM
>>                                 18.9 (build 11.0.10+8-LTS-162, mixed
>>                                 mode)
>>                                 configure: (Your Boot JDK version
>>                                 must be one of: 22 23 24)
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/progra~1/java/javafx-sdk-11.0.2)
>>                                 configure: Potential Boot JDK found
>>                                 at
>>                                 /cygdrive/c/progra~1/java/javafx-sdk-11.0.2
>>                                 did not contain bin/java; ignoring
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/Program
>>                                 Files/Java/jdk-17.0.4.1)
>>                                 configure: Potential Boot JDK found
>>                                 at /cygdrive/c/Program
>>                                 Files/Java/jdk-17.0.4);
>>                                 ignoringot(TM) 64-Bit Server VM
>>                                 (build 17.0.4.1+1-LTS-2, mixed mode,
>>                                 sharing)
>>                                 configure: (Your Boot JDK version
>>                                 must be one of: 22 23 24)
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/Program
>>                                 Files/Java/jdk-11.0.10)
>>                                 configure: Potential Boot JDK found
>>                                 at /cygdrive/c/Program
>>                                 Files/Java/jdk-11.0.1);
>>                                 ignoringot(TM) 64-Bit Server VM 18.9
>>                                 (build 11.0.10+8-LTS-162, mixed mode)
>>                                 configure: (Your Boot JDK version
>>                                 must be one of: 22 23 24)
>>                                 configure: Found potential Boot JDK
>>                                 using well-known locations (in
>>                                 /cygdrive/c/Program
>>                                 Files/Java/javafx-sdk-11.0.2)
>>                                 configure: Potential Boot JDK found
>>                                 at /cygdrive/c/Program
>>                                 Files/Java/javafx-sdk-11.0.2 did not
>>                                 contain bin/java; ignoring
>>                                 configure: Could not find a valid
>>                                 Boot JDK. OpenJDK distributions are
>>                                 available at http://jdk.java.net/.
>>                                 configure: This might be fixed by
>>                                 explicitly setting --with-boot-jdk
>>                                 configure: error: Cannot continue
>>                                 configure exiting with result code 1
>>
>>
>>                                 On Thu, Jun 27, 2024 at 9:06 AM
>>                                 <erik.joelsson at oracle.com> wrote:
>>
>>                                     Hello Anil,
>>
>>                                     Building in a VM on a laptop
>>                                     should be doable, but given how
>>                                     resource intensive the JDK build
>>                                     is, you could run into problems
>>                                     like you describe. You are most
>>                                     likely to get the best build
>>                                     performance running natively on
>>                                     the machine and OS you have, so
>>                                     my recommendation is to build for
>>                                     Windows in your case. If you
>>                                     still prefer to build for Linux,
>>                                     I think the best option is to use
>>                                     WSL. See doc/building.md for
>>                                     instructions on how to build for
>>                                     Linux in WSL. To build for
>>                                     Windows, I recommend installing
>>                                     Cygwin as the most
>>                                     straightforward and well tested
>>                                     option for a POSIX support layer
>>                                     on Windows. Once installed, you
>>                                     won't need to run any Windows
>>                                     commands as Cygwin emulates a
>>                                     Linux/Unix environment. Again see
>>                                     doc/building.md for instructions
>>                                     on how to install a build
>>                                     environment on Windows.
>>
>>                                     /Erik
>>
>>                                     On 6/27/24 04:51, Anil wrote:
>>>                                     I want to try out a small
>>>                                     contribution to the JDK and want
>>>                                     to build the JDK first.
>>>                                     I have a Windows 11 laptop.
>>>
>>>                                     I am not comfortable with the
>>>                                     Windows commands and someone
>>>                                     mentioned in this forum that
>>>                                     most of the building is done on
>>>                                     Linux.
>>>                                     So I installed VirtualBox 7.0.18
>>>                                     and Ubuntu 24.04. however I was
>>>                                     getting black screens and
>>>                                     freezing. I downgraded the
>>>                                     Ubuntu to 222.04 and still got
>>>                                     black screens. I don't know why
>>>                                     this is happening.
>>>                                     Any advice appreciated.
>>>                                     Anil
>>>
>>>                                     On Tue, Jun 18, 2024, 7:25 PM
>>>                                     Anil <1dropaflame at gmail.com> wrote:
>>>
>>>                                         Hello,
>>>                                         I want to try out a small
>>>                                         contribution to the JDK and
>>>                                         wanted to build the JDK first,
>>>                                         before I change the code.
>>>                                         I forked and cloned the jdk
>>>                                         following the instructions
>>>                                         at The OpenJDK Developers'
>>>                                         Guide – OpenJDK Developers’
>>>                                         Guide
>>>                                         <https://openjdk.org/guide/#cloning-the-jdk>
>>>
>>>                                         I am on Windows 11.
>>>                                         These instructions are given
>>>                                         on the page but I am unsure
>>>                                         which of these to execute
>>>                                         since I have already forked
>>>                                         and cloned the git repo
>>>
>>>                                         |$ wget
>>>                                         https://download.java.net/java/GA/jdk16/7863447f0ab643c585b9bdebf67c69db/36/GPL/openjdk-16_linux-x64_bin.tar.gz
>>>                                         $ tar xzf
>>>                                         openjdk-16_linux-x64_bin.tar.gz
>>>                                         $ sudo apt-get install
>>>                                         autoconf zip make gcc g++
>>>                                         libx11-dev libxext-dev
>>>                                         libxrender-dev libxrandr-dev
>>>                                         libxtst-dev libxt-dev
>>>                                         libcups2-dev
>>>                                         libfontconfig1-dev
>>>                                         libasound2-dev $ cd jdk $ sh
>>>                                         ./configure
>>>                                         --with-boot-jdk=$HOME/jdk-16/
>>>                                         $ make images|
>>>
>>>
>>>                                         Do I still need to do the wget?
>>>                                         Also, I wondered if I should
>>>                                         use book jdk-17 instead of
>>>                                         jdk-16 as in the
>>>                                         instructions above.
>>>                                         thanks,
>>>                                         Anil
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/build-dev/attachments/20240703/da06d3c1/attachment-0001.htm>


More information about the build-dev mailing list