Charles Wilson wrote:
Roumen Petrov wrote:
# func_to_host_path arg
[SNIP]
# ARG is the path (on $build) that should be converted to
# the proper representation for $host. The result is stored
@@ -2546,11 +2553,28 @@ func_to_host_path ()
func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
$SED -e "$lt_sed_naive_backslashify"`
;;
+ * )
+ # Unfortunately, winepath does not exit with a non-zero
+ # error code, so we are forced to check stderr for an
+ # error message. On the other hand, if the command is not
+ # found, the shell will set an exit code of 127. So we
+ # must check for both, which explains the odd construction:
+ func_to_host_path_winepath_stderr=`winepath -w "$1"
>/dev/null 2>&1`
+ func_to_host_path_winepath_exitcode=$?
+ if test "$func_to_host_path_winepath_exitcode" -eq 0 &&\
+ test -z "${func_to_host_path_winepath_stderr}" ; then
+ func_to_host_path_tmp1=`winepath -w "$1"`
+ func_to_host_path_result=`echo
"$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ fi
+ ;;
[SNIP]
So it winepath fail to convert a build-system path it output only LF
on standard output(stdout).
I cannot confirm that exists relation: 'non-empty' stderr output and
path-translation failure.
My point of view is that check for 'empty' stdout is enough as
indication for translation-failure.
The problem with that is, bash puts the following on stdout -- NOT
stderr -- if it cannot find winepath:
bash: winepath: command not found
So, at the very least, we have failure if either
stdout is empty
or
exit code is nonzero
Try replacing the section above with:
* )
# Unfortunately, winepath does not exit with a non-zero
# error code, so we are forced to check the contents of
# stdout. On the other hand, if the command is not
# found, the shell will set an exit code of 127 and print
# *an error message* to stdout. So we must check for both
# error code of zero AND non-empty stdout, which explains
# the odd construction:
func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
func_to_host_path_winepath_exitcode=$?
if test "$func_to_host_path_winepath_exitcode" -eq 0 &&\
test -n "${func_to_host_path_tmp1}" ; then
func_to_host_path_result=`echo "$func_to_host_path_tmp1"|\
$SED -e "$lt_sed_naive_backslashify"`
fi
;;
And let me know if that works better for you.
[SNIP]
--
Chuck
It seems to me that the patch work with one addition:
--------------------------------
func_to_host_path ()
{
func_to_host_path_result="$1"
if test -n "$1" ; then
case $host in
*mingw* )
func_to_host_path_result="" # <---- clean result
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
case $build in
*mingw* ) # actually, msys
.....
--------------------------------
Without to clean result we cannot get warning in cross-compilation case
it winepath fail.
Or maybe to clean only in default build case if winepath fail since if
build is mingw/cygwin code always assign value to func_to_host_path_result:
--------------------------------
.....
func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
func_to_host_path_winepath_exitcode=$?
if test "$func_to_host_path_winepath_exitcode" -eq 0 &&\
test -n "${func_to_host_path_tmp1}" ; then
func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
$SED -e "$lt_sed_naive_backslashify"`
else
func_to_host_path_result="" # <---- clean result
fi
;;
.....
--------------------------------
Roumen