tf 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/bash
  2. set -e
  3. pushd $(cd $(dirname ${0})/..; pwd) > /dev/null
  4. case "${OSTYPE}" in
  5. msys*) python="winpty python";;
  6. *) python=python3;;
  7. esac
  8. bold() {
  9. echo "$(tty -s && tput bold)$1$(tty -s && tput sgr0)"
  10. }
  11. venv() {
  12. env_dir=./third_party/env/tensorflow
  13. [ -d "${env_dir}" ] || ${python} -m venv ${env_dir}
  14. case "${OSTYPE}" in
  15. msys*) source ${env_dir}/Scripts/activate;;
  16. *) source ${env_dir}/bin/activate;;
  17. esac
  18. ${python} -m pip install --quiet --upgrade pip
  19. }
  20. clean() {
  21. bold "tf clean"
  22. rm -rf "./third_party/env/tensorflow"
  23. rm -rf "./third_party/src/tensorflow"
  24. }
  25. sync() {
  26. bold "tf sync"
  27. [ -d "./third_party/src/tensorflow" ] || git clone --quiet --recursive https://github.com/tensorflow/tensorflow.git "./third_party/src/tensorflow"
  28. pushd "./third_party/src/tensorflow" > /dev/null
  29. git pull --quiet --prune
  30. git submodule sync --quiet
  31. git submodule update --quiet --init --recursive
  32. popd > /dev/null
  33. }
  34. install() {
  35. bold "tf install"
  36. venv
  37. ${python} -m pip install --quiet --upgrade protobuf
  38. deactivate
  39. }
  40. schema() {
  41. bold "tf schema"
  42. [[ $(grep -U $'\x0D' ./src/tf-proto.js) ]] && crlf=1
  43. npx pbjs -t static-module -w closure --no-encode --no-delimited --no-comments --no-convert --no-verify --no-create --keep-case --decode-text -r tf -o ./src/tf-proto.js \
  44. ./third_party/src/tensorflow/tensorflow/core/protobuf/saved_model.proto \
  45. ./third_party/src/tensorflow/tensorflow/core/protobuf/meta_graph.proto \
  46. ./third_party/src/tensorflow/tensorflow/core/protobuf/saver.proto \
  47. ./third_party/src/tensorflow/tensorflow/core/framework/graph.proto \
  48. ./third_party/src/tensorflow/tensorflow/core/framework/op_def.proto \
  49. ./third_party/src/tensorflow/tensorflow/core/framework/tensor_shape.proto \
  50. ./third_party/src/tensorflow/tensorflow/core/framework/types.proto \
  51. ./third_party/src/tensorflow/tensorflow/core/framework/node_def.proto \
  52. ./third_party/src/tensorflow/tensorflow/core/framework/versions.proto \
  53. ./third_party/src/tensorflow/tensorflow/core/framework/function.proto \
  54. ./third_party/src/tensorflow/tensorflow/core/framework/attr_value.proto \
  55. ./third_party/src/tensorflow/tensorflow/core/framework/tensor.proto \
  56. ./third_party/src/tensorflow/tensorflow/core/framework/variable.proto \
  57. ./third_party/src/tensorflow/tensorflow/core/framework/resource_handle.proto \
  58. ./third_party/src/tensorflow/tensorflow/core/protobuf/saved_object_graph.proto \
  59. ./third_party/src/tensorflow/tensorflow/core/protobuf/trackable_object_graph.proto \
  60. ./third_party/src/tensorflow/tensorflow/core/protobuf/struct.proto \
  61. ./third_party/src/tensorflow/tensorflow/core/protobuf/tensor_bundle.proto \
  62. ./third_party/src/tensorflow/tensorflow/core/framework/tensor_slice.proto \
  63. ./third_party/src/tensorflow/tensorflow/core/util/saved_tensor_slice.proto
  64. if [[ -n ${crlf} ]]; then
  65. unix2dos --quiet --newfile ./src/tf-proto.js ./src/tf-proto.js
  66. fi
  67. }
  68. metadata() {
  69. bold "tf metadata"
  70. [[ $(grep -U $'\x0D' ./src/tf-metadata.json) ]] && crlf=1
  71. venv
  72. case "${OSTYPE}" in
  73. linux*)
  74. [ -x "$(command -v protoc)" ] || sudo apt install -y protobuf-compiler libprotoc-dev
  75. ;;
  76. darwin*)
  77. brew list protobuf > /dev/null 2>&1 || brew install protobuf > /dev/null
  78. ;;
  79. msys*)
  80. [ -x "$(command -v protoc)" ] || $(choco install --yes protoc) > /dev/null
  81. ;;
  82. esac
  83. protoc --proto_path ./third_party/src/tensorflow ./third_party/src/tensorflow/tensorflow/core/framework/attr_value.proto --python_out=./tools
  84. protoc --proto_path ./third_party/src/tensorflow ./third_party/src/tensorflow/tensorflow/core/framework/tensor.proto --python_out=./tools
  85. protoc --proto_path ./third_party/src/tensorflow ./third_party/src/tensorflow/tensorflow/core/framework/types.proto --python_out=./tools
  86. protoc --proto_path ./third_party/src/tensorflow ./third_party/src/tensorflow/tensorflow/core/framework/tensor_shape.proto --python_out=./tools
  87. protoc --proto_path ./third_party/src/tensorflow ./third_party/src/tensorflow/tensorflow/core/framework/resource_handle.proto --python_out=./tools
  88. protoc --proto_path ./third_party/src/tensorflow ./third_party/src/tensorflow/tensorflow/core/framework/api_def.proto --python_out=./tools
  89. protoc --proto_path ./third_party/src/tensorflow ./third_party/src/tensorflow/tensorflow/core/framework/op_def.proto --python_out=./tools
  90. touch ./tools/tensorflow/__init__.py
  91. touch ./tools/tensorflow/core/__init__.py
  92. touch ./tools/tensorflow/core/framework/__init__.py
  93. export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
  94. ${python} ./tools/tf-script.py metadata
  95. rm -rf ./tools/tensorflow
  96. deactivate
  97. if [[ -n ${crlf} ]]; then
  98. unix2dos --quiet --newfile ./src/tf-metadata.json ./src/tf-metadata.json
  99. fi
  100. }
  101. while [ "$#" != 0 ]; do
  102. command="$1" && shift
  103. case "${command}" in
  104. "clean") clean;;
  105. "sync") sync;;
  106. "install") install;;
  107. "schema") schema;;
  108. "metadata") metadata;;
  109. esac
  110. done