bash configure - LINK : fatal error LNK1104: cannot open file ...fixpath.exe
Erik Joelsson
erik.joelsson at oracle.com
Mon Jun 11 17:51:37 UTC 2018
Hello Jorn,
I don't have access to an msys2 environment to try this myself and as we
don't regularly build there, it's unfortunately not expected to work.
Msys has a habit of trying to outsmart the user when treating paths, by
automatically converting path formats from unix style to windows style
by trying to detect what kind of process is receiving it. In my
experience, this automatic behavior trips you up more often than it
helps you and it looks like that is what's happening here.
The tool fixpath.exe is our internal solution to the path troubles. We
build it in configure and then use it to convert paths to windows style
for any process that we know need it. Unfortunately for you, your setup
is failing before managing to create the tool itself.
I would try to supply the value for the variable in Unix style
(/j/msys/...) and see if msys converts it correctly then.
/Erik
On 2018-06-11 07:38, jbvernee wrote:
> Hello,
>
> I've been trying to build the JDK using an msys2 toolchain, which
> seems to be possible according to this thread:
> http://mail.openjdk.java.net/pipermail/build-dev/2017-October/019862.html
> (although I'm not trying to use gcc, I'm using VS 15). I know it's
> advised to use cygwin, but I can't get that to work at all on my
> machine (some error about base heap offset after a fresh install. I
> might try troubleshooting that next...)
>
> I'm running into the error mentioned in the subject line while running
> `bash configure`, namely:
>
> LINK : fatal error LNK1104: cannot open file
> 'J:J:/msys64/Projects/openjdk/amber/build/windows-x86_64-normal-server-release/configure-support/bin/fixpath.exe'
>
> I have also created a gist of the full configure log:
> https://gist.github.com/JornVernee/6b579e6d13d1fce306d0d370a381d1b3
>
> Looking at this, it seems like the path is getting mangled. The
> correct path is
> 'J:/Projects/openjdk/amber/build/windows-x86_64-normal-server-release/configure-support/bin/fixpath.exe'
> But as you can see there is an extra `J:/msys64` in there, which
> happens to be the root of my msys2 installation (though I'm running
> configure in PowerShell, and not in the included msys2 environment.
> Switching between them doesn't fix the problem either though).
>
> I thought I had traced the value of this path to the `OUTPUTDIR`
> variable in `\make\autoconf\basics.m4`, where it is created inside
> this if-else block:
>
> ```
> if test "x$CUSTOM_ROOT" != x; then
> OUTPUTDIR="${CUSTOM_ROOT}/build/${CONF_NAME}"
> else
> OUTPUTDIR="${TOPDIR}/build/${CONF_NAME}"
> fi
> ```
>
> Where it is then used to create the `CONFIGURESUPPORT_OUTPUTDIR` path
> like: `CONFIGURESUPPORT_OUTPUTDIR="$OUTPUTDIR/configure-support"`, and
> finally the output path for fixpath.exe is constructed from that in
> `\make\autoconf\basics_windows.m4`:
>
> ```
> FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
> FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
> ```
>
> I have tried setting the `CUSTOM_ROOT` variable, but the error
> remained the same. As a sanity check I rewrote the if-statement to:
> `OUTPUTDIR="J:/Projects/openjdk/amber/build/${CONF_NAME}", but the
> error message still remains the same.
>
> I have also tried manually compiling fixpath.c into fixpath.exe and
> placing that file into
> `/build/windows-x86_64-normal-server-release/configure-support/bin/`,
> but the file is just ignored by the configuration script.
>
> At this point I don't know what else I could try. So I'm wondering if
> anyone here has any suggestions?
>
> Best regards,
> Jorn Vernee
More information about the build-dev
mailing list