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 <liangchenb...@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 <1dropafl...@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.joels...@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
            <1dropafl...@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
                <liangchenb...@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
                    <1dropafl...@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
                        <1dropafl...@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
                            <1dropafl...@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.joels...@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 <1dropafl...@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

Reply via email to