Windows,bootstrapping: fix build_windows_jni.sh
Also:
- check as the first thing in compile.sh that we
can locate the GNU coreutils, and remove the
duplicate check for the same thing on Windows
- check early in compile.sh that we can access
python.exe
Fixes https://github.com/bazelbuild/bazel/issues/3863
Change-Id: Ib48b405cf93eafd48e21b280bcbab4d45117c1d9
PiperOrigin-RevId: 171291435
diff --git a/compile.sh b/compile.sh
index c72a802..076dd24 100755
--- a/compile.sh
+++ b/compile.sh
@@ -22,26 +22,28 @@
set -o errexit
-# Correct PATH on Windows, to avoid using "FIND.EXE" instead of "/usr/bin/find"
-# etc, leading to confusing errors.
-export BAZEL_OLD_PATH=$PATH
-case "$(uname -s | tr [:upper:] [:lower:])" in
-msys*|mingw*|cygwin*)
- # Check that the PATH is set up correctly by attempting to locate `[`.
- # This ensures that `which` is installed correctly and can succeed, while
- # also avoids accidentally locating a tool that exists in plain Windows too
- # (like "find" for "FIND.EXE").
- which [ >&/dev/null || export PATH="/bin:/usr/bin:$PATH"
-esac
-
# Check that the bintools can be found, otherwise we would see very confusing
# error messages.
+# For example on Windows we would find "FIND.EXE" instead of "/usr/bin/find"
+# when running "find".
hash tr >&/dev/null || {
echo >&2 "ERROR: cannot locate GNU coreutils; check your PATH."
echo >&2 " (You may need to run 'export PATH=/bin:/usr/bin:\$PATH)'"
exit 1
}
+# Ensure Python is on the PATH on Windows,otherwise we would see
+# "LAUNCHER ERROR" messages from py_binary exe launchers.
+case "$(uname -s | tr [:upper:] [:lower:])" in
+msys*|mingw*|cygwin*)
+ which python.exe >&/dev/null || {
+ echo >&2 "ERROR: cannot locate python.exe; check your PATH."
+ echo >&2 " (You may need to run 'export PATH=/c/Python27:\$PATH)' or similar,"
+ echo >&2 " depending on where you installed Python)."
+ exit 1
+ }
+esac
+
cd "$(dirname "$0")"
# Set the default verbose mode in buildenv.sh so that we do not display command
diff --git a/scripts/bootstrap/buildenv.sh b/scripts/bootstrap/buildenv.sh
index 5c36821..cbb1365 100755
--- a/scripts/bootstrap/buildenv.sh
+++ b/scripts/bootstrap/buildenv.sh
@@ -129,11 +129,6 @@
ATEXIT_HANDLERS="${ATEXIT_HANDLERS} ${handler}"
}
-function restore_saved_path() {
- export PATH=$BAZEL_OLD_PATH
- export BAZEL_OLD_PATH=
-}
-
# Exit routine to run all registered atexit handlers.
#
# If the program exited with an error, this exit routine will also exit with the
@@ -183,7 +178,6 @@
}
atexit cleanup_phasefile
-atexit restore_saved_path
# Excutes a command respecting the current verbosity settings.
#
diff --git a/src/main/native/windows/build_windows_jni.sh b/src/main/native/windows/build_windows_jni.sh
index 5d39b8f..ad52518 100644
--- a/src/main/native/windows/build_windows_jni.sh
+++ b/src/main/native/windows/build_windows_jni.sh
@@ -99,7 +99,7 @@
@call "${VSVARS}" amd64
@cd $(cygpath -a -w "${PWD}")
@set TMP=$(cygpath -a -w "${VSTEMP}")
-@CL /O2 /EHsc /LD /Fe:"$(cygpath -a -w ${DLL})" /I "${VSTEMP}" /I . ${WINDOWS_SOURCES[*]}
+@CL /O2 /EHsc /LD /Fe:"$(cygpath -a -w ${DLL})" /I "%TMP%" /I . ${WINDOWS_SOURCES[*]}
EOF
# Invoke the file and hopefully generate the .DLL .