3 # Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
19 DRIVER_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
21 VENV_ACTIVATE=${DRIVER_PATH}/venv/bin/activate
22 # NOTE please use venv's python instead of python after `source activation`.
23 # This script is called by debian maintainer script, i.e. `postinst`.
24 # Since debian maintainer script is called with sudo, `source activation` is ignored.
25 VENV_PYTHON=${DRIVER_PATH}/venv/bin/python
27 if [ ! -f ${VENV_ACTIVATE} ]; then
28 # Create python virtual enviornment
29 python3 -m venv "${DRIVER_PATH}/venv"
33 # - https://github.com/onnx/onnx/blob/master/docs/Versioning.md
34 # - https://github.com/onnx/onnx-tensorflow/blob/master/Versioning.md
38 VER_ONNXRUNTIME=1.12.1
44 PIP_TRUSTED_HOST="--trusted-host pypi.org "
45 PIP_TRUSTED_HOST+="--trusted-host pypi.python.org "
46 PIP_TRUSTED_HOST+="--trusted-host files.pythonhosted.org "
47 PIP_TRUSTED_HOST+="--trusted-host download.pytorch.org "
49 PIP_TIMEOUT="--default-timeout=1000 "
51 PIP_OPTIONS="${PIP_TIMEOUT} ${PIP_TRUSTED_HOST}"
53 # NOTE $ONE_PREPVENV_PIP_OPTION is to provide additional PIP options
54 # such as ceritificate file behind firewall
55 # ex) ONE_PREPVENV_PIP_OPTION="--cert SomePrivateCetificate.crt" ./one-prepare-venv
56 if [[ ! -z "$ONE_PREPVENV_PIP_OPTION" ]]; then
57 PIP_OPTIONS+=" ${ONE_PREPVENV_PIP_OPTION} "
60 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install --upgrade pip setuptools
61 if [ -n "${EXT_TENSORFLOW_WHL}" ]; then
62 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install ${EXT_TENSORFLOW_WHL}
64 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install tensorflow-cpu==${VER_TENSORFLOW}
66 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install Pillow
67 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install tensorflow_probability
69 # Install PyTorch and ONNX related
70 # NOTE set ONE_PREPVENV_TORCH_STABLE to override 'torch_stable.html' URL.
71 # torch_stable.html points to download URL of torch wheel file(s)
72 # but sometimes the server gets unstable, especially from in-house CI.
73 TORCH_STABLE_URL="https://download.pytorch.org/whl/torch_stable.html"
74 if [[ ! -z "$ONE_PREPVENV_TORCH_STABLE" ]]; then
75 TORCH_STABLE_URL="${ONE_PREPVENV_TORCH_STABLE}"
77 # TODO remove torch message
78 echo "Torch from '${ONE_PREPVENV_TORCH_STABLE}' -> '${TORCH_STABLE_URL}'"
79 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install torch==1.13.1+cpu -f ${TORCH_STABLE_URL}
81 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install onnx==${VER_ONNX}
83 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install onnxruntime==${VER_ONNXRUNTIME}
85 # Provide install of custom onnx-tf
86 if [ -n "${EXT_ONNX_TF_WHL}" ]; then
87 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install ${EXT_ONNX_TF_WHL}
89 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install onnx-tf==${VER_ONNX_TF}
92 # NOTE refer https://github.com/protocolbuffers/protobuf/issues/10051
93 # TODO remove this when issue is resolved
94 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install --upgrade protobuf==3.19.6
96 # Install pydot for visq
97 ${VENV_PYTHON} -m pip ${PIP_OPTIONS} install pydot==${VER_PYDOT}