mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
ci: convert PATH correctly to Cygwin format on Windows
We provide `BUILD_PATH` to our build script; provide it and mutate `PATH` when running our tests as well. We were previously using `cygpath` to try to convert a _list_ of Windows paths into cygwin / Unix style `PATH` format. This does not work -- it treats the path list as a single path (with semicolons -- understandably as those are allowed characters in a Windows path). For example, `C:\One;C:\Two;C:\Three` is converted to `/c/one;c:/two;c:/three`. Add a new function to convert path lists, so that paths are split by semicolon and fed to `cygpath` independently, then re-joined with a colon. This means that our example `C:\One;C:\Two;C:\Three` is correctly converted to `/c/one:/c/two:/c/three`.
This commit is contained in:
20
ci/build.sh
20
ci/build.sh
@@ -13,16 +13,30 @@ BUILD_PATH=${BUILD_PATH:=$PATH}
|
||||
CMAKE=$(which cmake)
|
||||
CMAKE_GENERATOR=${CMAKE_GENERATOR:-Unix Makefiles}
|
||||
|
||||
indent() { sed "s/^/ /"; }
|
||||
|
||||
cygfullpath() {
|
||||
result=$(echo "${1}" | tr \; \\n | while read -r element; do
|
||||
if [ "${last}" != "" ]; then echo -n ":"; fi
|
||||
echo -n $(cygpath "${element}")
|
||||
last="${element}"
|
||||
done)
|
||||
if [ "${result}" = "" ]; then exit 1; fi
|
||||
echo "${result}"
|
||||
}
|
||||
|
||||
if [[ "$(uname -s)" == MINGW* ]]; then
|
||||
BUILD_PATH=$(cygpath "$BUILD_PATH")
|
||||
BUILD_PATH=$(cygfullpath "${BUILD_PATH}")
|
||||
fi
|
||||
|
||||
indent() { sed "s/^/ /"; }
|
||||
|
||||
echo "Source directory: ${SOURCE_DIR}"
|
||||
echo "Build directory: ${BUILD_DIR}"
|
||||
echo ""
|
||||
|
||||
echo "Platform:"
|
||||
uname -s | indent
|
||||
|
||||
if [ "$(uname -s)" = "Darwin" ]; then
|
||||
echo "macOS version:"
|
||||
sw_vers | indent
|
||||
@@ -40,7 +54,7 @@ echo "Kernel version:"
|
||||
uname -a 2>&1 | indent
|
||||
|
||||
echo "CMake version:"
|
||||
env PATH="${BUILD_PATH}" "${CMAKE}" --version 2>&1 | indent
|
||||
env PATH="${BUILD_PATH}" "${CMAKE}" --version | head -1 2>&1 | indent
|
||||
|
||||
if test -n "${CC}"; then
|
||||
echo "Compiler version:"
|
||||
|
||||
12
ci/test.sh
12
ci/test.sh
@@ -81,8 +81,18 @@ run_test() {
|
||||
|
||||
indent() { sed "s/^/ /"; }
|
||||
|
||||
cygfullpath() {
|
||||
result=$(echo "${1}" | tr \; \\n | while read -r element; do
|
||||
if [ "${last}" != "" ]; then echo -n ":"; fi
|
||||
echo -n $(cygpath "${element}")
|
||||
last="${element}"
|
||||
done)
|
||||
if [ "${result}" = "" ]; then exit 1; fi
|
||||
echo "${result}"
|
||||
}
|
||||
|
||||
if [[ "$(uname -s)" == MINGW* ]]; then
|
||||
BUILD_PATH=$(cygpath "$BUILD_PATH")
|
||||
BUILD_PATH=$(cygfullpath "$BUILD_PATH")
|
||||
fi
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user