mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-21 06:55:39 +00:00
build-aux/msys-to-w32: simplify the initial interface.
* build-aux/msys-to-w32: simplify the initial over-engineered interface, and the implementation. * Makefile.in (epaths-force-w32): Update for the above.
This commit is contained in:
parent
c936cbbc83
commit
7c86a2a7d8
@ -1,3 +1,9 @@
|
|||||||
|
2014-11-08 Dani Moncayo <dmoncayo@gmail.com>
|
||||||
|
|
||||||
|
* build-aux/msys-to-w32: simplify the initial over-engineered
|
||||||
|
interface, and the implementation.
|
||||||
|
* Makefile.in (epaths-force-w32): Update for the above.
|
||||||
|
|
||||||
2014-11-05 Glenn Morris <rgm@gnu.org>
|
2014-11-05 Glenn Morris <rgm@gnu.org>
|
||||||
|
|
||||||
* Makefile.in (QUIET_SUBMAKE): Remove.
|
* Makefile.in (QUIET_SUBMAKE): Remove.
|
||||||
|
@ -343,11 +343,11 @@ msys_sed_sh_escape=sed -e 's/[];$$*.^[]/\\\\&/g'
|
|||||||
# '/foo/bar').
|
# '/foo/bar').
|
||||||
epaths-force-w32:
|
epaths-force-w32:
|
||||||
@(w32srcdir=`${srcdir}/build-aux/msys-to-w32 "${srcdir}"`; \
|
@(w32srcdir=`${srcdir}/build-aux/msys-to-w32 "${srcdir}"`; \
|
||||||
w32prefix=`${srcdir}/build-aux/msys-to-w32 "${prefix}" N`; \
|
w32prefix=`${srcdir}/build-aux/msys-to-w32 "${prefix}"`; \
|
||||||
w32prefixpattern=`echo "$${w32prefix}" | ${msys_sed_sh_escape}` ; \
|
w32prefixpattern=`echo "$${w32prefix}" | ${msys_sed_sh_escape}` ; \
|
||||||
w32locallisppath=`${srcdir}/build-aux/msys-to-w32 "${locallisppath}" N ":" "\\;" | ${msys_w32prefix_subst}` ; \
|
w32locallisppath=`${srcdir}/build-aux/msys-to-w32 "${locallisppath}" | ${msys_w32prefix_subst}` ; \
|
||||||
sed < ${srcdir}/nt/epaths.nt > epaths.h.$$$$ \
|
sed < ${srcdir}/nt/epaths.nt > epaths.h.$$$$ \
|
||||||
-e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${w32locallisppath}"'";' \
|
-e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${w32locallisppath//;/\\;}"'";' \
|
||||||
-e '/^.*#/s/@VER@/${version}/g' \
|
-e '/^.*#/s/@VER@/${version}/g' \
|
||||||
-e '/^.*#/s/@CFG@/${configuration}/g' \
|
-e '/^.*#/s/@CFG@/${configuration}/g' \
|
||||||
-e "/^.*#/s|@SRC@|$${w32srcdir}|g") && \
|
-e "/^.*#/s|@SRC@|$${w32srcdir}|g") && \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
# Take a list of MSYS-compatible paths and convert them to native
|
# Take a list of MSYS-compatible paths and convert them to native
|
||||||
# MS-Windows format.
|
# MS-Windows format.
|
||||||
# Status is zero if successful, nonzero otherwise.
|
# Status is zero if successful, nonzero otherwise.
|
||||||
@ -21,36 +21,26 @@
|
|||||||
# Take only the basename from the full pathname
|
# Take only the basename from the full pathname
|
||||||
me=${0//*\//}
|
me=${0//*\//}
|
||||||
|
|
||||||
usage="usage: ${me} PATHLIST [MUSTEXIST] [SEPARATOR [SEPARATOR2]]"
|
usage="usage: ${me} PATHLIST"
|
||||||
|
|
||||||
help="$usage
|
help="$usage
|
||||||
or: ${me} OPTION
|
or: ${me} OPTION
|
||||||
|
|
||||||
Convert MSYS-compatible paths to MS-Windows native format.
|
Convert a MSYS path list to Windows-native format.
|
||||||
|
|
||||||
|
PATHLIST should be a colon-separated list of MSYS paths, which will be
|
||||||
|
written to the standard output after performing these transformations:
|
||||||
|
|
||||||
PATHLIST should be a list of paths separated by SEPARATOR. This list
|
|
||||||
will be written to the standard output after performing the following
|
|
||||||
transformations:
|
|
||||||
1. Discard empty paths.
|
1. Discard empty paths.
|
||||||
2. Replace backslashes with forward slashes.
|
2. Replace: '\' with '/', '//' with '/' and ':' with ';'.
|
||||||
3. Replace two consecutive slashes with single ones.
|
3. Translate each path to Windows-native format.
|
||||||
4. Translate to Windows-native format those paths that are not in such
|
|
||||||
format already. The translated paths will not end with a slash,
|
|
||||||
except for root directories (e.g. 'c:/' or 'c:/foo'). Paths
|
|
||||||
starting with '%emacs_dir%' will not be translated.
|
|
||||||
5. Escape with backslashes every occurrence of SEPARATOR2 within the paths.
|
|
||||||
6. Concatenate the translated paths with SEPARATOR2.
|
|
||||||
|
|
||||||
If MUSTEXIST is 'Y' or not supplied, then each path in PATHLIST must
|
Relative paths or paths starting with '%emacs_dir%' will be passed
|
||||||
exist. Otherwise, only some part of each path is required to exist
|
verbatim to the standard output.
|
||||||
(the deepest existing subpath will be translated and the remainder
|
|
||||||
concatenated to the translation).
|
|
||||||
|
|
||||||
If SEPARATOR is not supplied, PATHLIST will be regarded as a single
|
Each non existing absolute paths will be translated by looking for its
|
||||||
path.
|
deepest existing directory, which will be translated and the remainder
|
||||||
|
will be appended.
|
||||||
If SEPARATOR2 is not supplied, it will take the same value as
|
|
||||||
SEPARATOR.
|
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--help display this help and exit
|
--help display this help and exit
|
||||||
@ -73,98 +63,55 @@ do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
{ test $# -ge 1 && test $# -le 4; } ||
|
[ $# -eq 1 ] || {
|
||||||
{ echo "${me}: $usage" >&2; exit 1; }
|
echo "${me}: $usage" >&2
|
||||||
|
exit 1
|
||||||
# Arguments
|
}
|
||||||
pathlist="$1"
|
|
||||||
mustexist="${2:-Y}"
|
|
||||||
separator="$3"
|
|
||||||
separator2="${4:-${separator}}"
|
|
||||||
|
|
||||||
# Split pathlist into its path components
|
|
||||||
if test -n "$separator"
|
|
||||||
then
|
|
||||||
IFS=${separator} patharray=( $pathlist )
|
|
||||||
else
|
|
||||||
patharray=( "$pathlist" )
|
|
||||||
fi
|
|
||||||
|
|
||||||
w32pathlist=""
|
w32pathlist=""
|
||||||
|
|
||||||
for p in "${patharray[@]}"
|
# Put each MSYS path in one positional parameter and iterate through
|
||||||
|
# them
|
||||||
|
IFS=:
|
||||||
|
set -- $1
|
||||||
|
|
||||||
|
for p
|
||||||
do
|
do
|
||||||
# Skip empty paths
|
[ -z "$p" ] && continue
|
||||||
test "$p" = "" && continue
|
|
||||||
|
|
||||||
# Replace '\' with '/' and '//' with '/'
|
if [ "${p:0:11}" = "%emacs_dir%" ]
|
||||||
p="${p//\\//}"
|
|
||||||
p="${p//\/\///}"
|
|
||||||
|
|
||||||
if test "${p:0:11}" = "%emacs_dir%"
|
|
||||||
then
|
then
|
||||||
# Paths starting with "%emacs_dir%" will not be translated
|
|
||||||
w32p=$p
|
w32p=$p
|
||||||
elif test -d "$p"
|
elif [ "${p:0:1}" != "/" ]
|
||||||
then
|
then
|
||||||
# The path exists, so just translate it
|
w32p=$p
|
||||||
w32p=`cd "$p" && pwd -W`
|
elif [ -d "$p" ]
|
||||||
|
then
|
||||||
|
w32p=$(cd "$p" && pwd -W)
|
||||||
else
|
else
|
||||||
# The path does not exist. So, try to guess the
|
# Make some cleanup in the path and look for its deepest
|
||||||
# Windows-native translation, by looking for the deepest
|
# existing directory
|
||||||
# existing directory in this path, and then translating the
|
|
||||||
# existing part and concatenating the remainder.
|
|
||||||
|
|
||||||
test "${mustexist}" = "Y" &&
|
p=${p//\\//}
|
||||||
{ echo "${me}: invalid path: $p" >&2; exit 1; }
|
p=${p//\/\///}
|
||||||
|
p=${p%/}
|
||||||
|
|
||||||
p1=$p
|
p1=$p
|
||||||
IFS=/ pcomponents=( $p )
|
while :
|
||||||
|
|
||||||
for (( i=${#pcomponents[@]}-1 ; i>=0 ; i-- ))
|
|
||||||
do
|
do
|
||||||
|
p1=${p1%/*}
|
||||||
if test "${pcomponents[i]}" = ""
|
[ -z "$p1" ] && p1="/" && break
|
||||||
then
|
[ -d "$p1" ] && break
|
||||||
# The path component is empty. This can only mean
|
|
||||||
# that the path starts with "/" and all components
|
|
||||||
# have been stripped out already. So in this case we
|
|
||||||
# want to test with the MSYS root directory
|
|
||||||
p1="/"
|
|
||||||
else
|
|
||||||
p1="${p1%/}"
|
|
||||||
p1="${p1%${pcomponents[i]}}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -d "${p1}"
|
|
||||||
then
|
|
||||||
|
|
||||||
# Existing path found
|
|
||||||
|
|
||||||
# Translate the existing part and concatenate the
|
|
||||||
# remainder (ensuring that only one slash is used in
|
|
||||||
# the join, and no trailing slash is left)
|
|
||||||
w32p1=`cd "${p1}" && pwd -W`
|
|
||||||
remainder="${p#${p1}}"
|
|
||||||
remainder="${remainder#/}"
|
|
||||||
remainder="${remainder%/}"
|
|
||||||
w32p="${w32p1%/}/${remainder}"
|
|
||||||
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# If no existing directory was found, error out
|
# translate the existing part and append the rest
|
||||||
test -e "${p1}" ||
|
w32p=$(cd "${p1}" && pwd -W)
|
||||||
{ echo "${me}: invalid path: ${p}" >&2; exit 1; }
|
remainder=${p#$p1}
|
||||||
|
w32p+=/${remainder#/}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Concatenate the translated path to the translated pathlist
|
w32pathlist="${w32pathlist};${w32p}"
|
||||||
test "${w32pathlist}" = "" || w32pathlist="${w32pathlist}${separator2}"
|
|
||||||
w32pathlist="${w32pathlist}${w32p//${separator2}/\\${separator2}}"
|
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Write the translated pathlist to the standard output
|
echo "${w32pathlist:1}"
|
||||||
printf "%s" "${w32pathlist}"
|
|
||||||
|
Loading…
Reference in New Issue
Block a user