1#!/usr/bin/env bash
2# Copyright 2017 The TensorFlow Authors. All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15# ==============================================================================
16
17set -u  # Check for undefined variables
18
19die() {
20  # Print a message and exit with code 1.
21  #
22  # Usage: die <error_message>
23  #   e.g., die "Something bad happened."
24
25  echo $@
26  exit 1
27}
28
29echo "Collecting system information..."
30
31OUTPUT_FILE=tf_env.txt
32python_bin_path=$(which python || which python3 || die "Cannot find Python binary")
33
34{
35  echo
36  echo "== cat /etc/issue ==============================================="
37  uname -a
38  uname=`uname -s`
39  if [ "$(uname)" == "Darwin" ]; then
40    echo Mac OS X `sw_vers -productVersion`
41  elif [ "$(uname)" == "Linux" ]; then
42    cat /etc/*release | grep VERSION
43  fi
44
45  echo
46  echo '== are we in docker ============================================='
47  num=`cat /proc/1/cgroup | grep docker | wc -l`;
48  if [ $num -ge 1 ]; then
49    echo "Yes"
50  else
51    echo "No"
52  fi
53
54  echo
55  echo '== compiler ====================================================='
56  c++ --version 2>&1
57
58  echo
59  echo '== uname -a ====================================================='
60  uname -a
61
62  echo
63  echo '== check pips ==================================================='
64  pip list 2>&1 | grep "proto\|numpy\|tensorflow"
65
66
67  echo
68  echo '== check for virtualenv ========================================='
69  ${python_bin_path} -c "import sys;print(hasattr(sys, \"real_prefix\"))"
70
71  echo
72  echo '== tensorflow import ============================================'
73} >> ${OUTPUT_FILE}
74
75cat <<EOF > /tmp/check_tf.py
76import tensorflow as tf;
77print("tf.VERSION = %s" % tf.VERSION)
78print("tf.GIT_VERSION = %s" % tf.GIT_VERSION)
79print("tf.COMPILER_VERSION = %s" % tf.GIT_VERSION)
80with tf.Session() as sess:
81  print("Sanity check: %r" % sess.run(tf.constant([1,2,3])[:1]))
82EOF
83${python_bin_path} /tmp/check_tf.py 2>&1  >> ${OUTPUT_FILE}
84
85DEBUG_LD=libs ${python_bin_path} -c "import tensorflow"  2>>${OUTPUT_FILE} > /tmp/loadedlibs
86
87{
88  grep libcudnn.so /tmp/loadedlibs
89  echo
90  echo '== env =========================================================='
91  if [ -z ${LD_LIBRARY_PATH+x} ]; then
92    echo "LD_LIBRARY_PATH is unset";
93  else
94    echo LD_LIBRARY_PATH ${LD_LIBRARY_PATH} ;
95  fi
96  if [ -z ${DYLD_LIBRARY_PATH+x} ]; then
97    echo "DYLD_LIBRARY_PATH is unset";
98  else
99    echo DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH} ;
100  fi
101
102
103  echo
104  echo '== nvidia-smi ==================================================='
105  nvidia-smi 2>&1
106
107  echo
108  echo '== cuda libs  ==================================================='
109} >> ${OUTPUT_FILE}
110
111find /usr/local -type f -name 'libcudart*'  2>/dev/null | grep cuda |  grep -v "\\.cache" >> ${OUTPUT_FILE}
112find /usr/local -type f -name 'libudnn*'  2>/dev/null | grep cuda |  grep -v "\\.cache" >> ${OUTPUT_FILE}
113
114# Remove any words with google.
115mv $OUTPUT_FILE old-$OUTPUT_FILE
116grep -v -i google old-${OUTPUT_FILE} > $OUTPUT_FILE
117
118echo "Wrote environment to ${OUTPUT_FILE}. You can review the contents of that file."
119echo "and use it to populate the fields in the github issue template."
120echo
121echo "cat ${OUTPUT_FILE}"
122echo
123
124