tensorflow/util/python/python_config.sh
Vijay Vasudevan eb5e56e479 TensorFlow: Upstream changes to git.
Change 109344341
	Teach ./configure about Python 3 (and other minor Python 3 issues)

	./configure now writes bazel.rc based on a bazel.rc.template, which gives us a
	place to tell bazel which version of Python we were using.

	Also fix a few tests whose Python 3 support had degraded.

	The only thing left before we have Python 3 support is

	  https://github.com/google/protobuf/pull/1023
Change 109343002
	Update ops.pbtxt to reflect 109321497.
Change 109342838
	Do memory deallocation outside the critical section in gpu_event_mgr.cc.
Change 109334210
	PTB LSTM example: use slicing instead of splitting the inputs.
Change 109332238
	Cleanup TensorBoard local development environment
Change 109331051
	Use __all__ in __init__.py to restrict exported modules

	Specifically, __all__ is now anything that (1) doesn't begin with an underscore
	and (2) isn't a non-whitelisted module.

	This fixes one tiny piece of b/25561952.  Specifically, the following no longer
	exist: tf.np, tf.math_ops, and tf.variables.  tf.ops and tf.tensor_util still
	exist but shouldn't; that will have to wait for a later CL.
Change 109327154
	tf.tuple allow Tensors to be passed in as control_inputs like tf.control_dependencies.
Change 109324239
	Make tf.control_dependencies(None) clear the control dependencies.
	Use that to prevent ops created for Variables to inherit the current
	control dependencies.

	This fixes issues when using ExponentialMovingAverages with control
	dependencies.
Change 109323719
	Added support for boolean tf.scatter_update.

Base CL: 109348398
2015-12-03 14:39:42 -08:00

106 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
set -e -o errexit
EXPECTED_PATHS="util/python/python_include util/python/python_lib third_party/py/numpy/numpy_include"
function main {
argument="$1"
shift
case $argument in
--check)
check_python
exit 0
;;
--setup)
setup_python "$1"
exit 0
;;
esac
}
function setup_python {
PYTHON_BIN_PATH="$1";
if [ -z "$PYTHON_BIN_PATH" ]; then
echo "PYTHON_BIN_PATH was not provided. Did you run configure?"
exit 1
fi
if [ ! -x "$PYTHON_BIN_PATH" ] || [ -d "$PYTHON_BIN_PATH" ]; then
echo "PYTHON_BIN_PATH is not executable. Is it the python binary?"
exit 1
fi
local python_major_version=$("${PYTHON_BIN_PATH}" -c 'from __future__ import print_function; import sys; print(sys.version_info[0]);')
if [ "$python_major_version" == "" ]; then
echo -e "\n\nERROR: Problem getting python version. Is $PYTHON_BIN_PATH the correct python binary?"
exit 1
fi
local python_include=$("${PYTHON_BIN_PATH}" -c 'from __future__ import print_function; from distutils import sysconfig; print(sysconfig.get_python_inc());')
if [ "$python_include" == "" ]; then
echo -e "\n\nERROR: Problem getting python include path. Is distutils installed?"
exit 1
fi
local python_lib=$("${PYTHON_BIN_PATH}" -c 'from __future__ import print_function; from distutils import sysconfig; print(sysconfig.get_python_lib());')
if [ "$python_lib" == "" ]; then
echo -e "\n\nERROR: Problem getting python lib path. Is distutils installed?"
exit 1
fi
local numpy_include=$("${PYTHON_BIN_PATH}" -c 'from __future__ import print_function; import numpy; print(numpy.get_include());')
if [ "$numpy_include" == "" ]; then
echo -e "\n\nERROR: Problem getting numpy include path. Is numpy installed?"
exit 1
fi
for x in $EXPECTED_PATHS; do
if [ -e "$x" ]; then
rm "$x"
fi
done
ln -s "${python_include}" util/python/python_include
ln -s "${python_lib}" util/python/python_lib
ln -s "${numpy_include}" third_party/py/numpy/numpy_include
# Write tools/bazel.rc
echo "# Autogenerated by configure: DO NOT EDIT" > tools/bazel.rc
sed -e "s/\$PYTHON_MAJOR_VERSION/$python_major_version/g" \
-e "s[\$PYTHON_BINARY[$PYTHON_BIN_PATH[g" \
tools/bazel.rc.template >> tools/bazel.rc
}
function check_python {
for x in $EXPECTED_PATHS; do
if [ ! -e "$x" ]; then
echo -e "\n\nERROR: Cannot find '${x}'. Did you run configure?\n\n" 1>&2
exit 1
fi
if [ ! -L "${x}" ]; then
echo -e "\n\nERROR: '${x}' is not a symbolic link. Internal error.\n\n" 1>&2
exit 1
fi
true_path=$(readlink "${x}")
if [ ! -d "${true_path}" ]; then
echo -e "\n\nERROR: '${x}' does not refer to an existing directory: ${true_path}. Do you need to rerun configure?\n\n" 1>&2
exit 1
fi
done
}
main "$@"