From 090701970cadc9b020009ec47ef4b36a843cd9b5 Mon Sep 17 00:00:00 2001 From: "Sathiyamoorthi, Jayabalaji" Date: Mon, 3 Mar 2025 21:44:08 +0100 Subject: [PATCH] Fixed bash script all the errors and warnings reported by shellcheck tool Signed-off-by: Sathiyamoorthi, Jayabalaji --- .../ros2_openvino_toolkit_test/docker_run.sh | 38 +++--- .../ros2_openvino_tool_model_download.sh | 10 +- .../test_cases/run.sh | 9 +- .../test_cases/yolov5_model_download.sh | 20 ++- .../test_cases/yolov8_model_download.sh | 6 +- script/environment_setup.sh | 114 +++++++++--------- script/environment_setup_binary.sh | 102 ++++++++-------- script/set_variable.sh | 4 +- 8 files changed, 144 insertions(+), 159 deletions(-) diff --git a/.ci_local_test/ros2_openvino_toolkit_test/docker_run.sh b/.ci_local_test/ros2_openvino_toolkit_test/docker_run.sh index 91a19139..b1ba19a8 100755 --- a/.ci_local_test/ros2_openvino_toolkit_test/docker_run.sh +++ b/.ci_local_test/ros2_openvino_toolkit_test/docker_run.sh @@ -1,43 +1,33 @@ #!/bin/bash export DISPLAY=:0 - export work_dir=$PWD - -function run_container() { - - docker images | grep ros2_openvino_docker - - if [ $? -eq 0 ] - then - echo "the image of ros2_openvino_docker:01 existence" +function run_container() +{ + if docker images -q ros2_openvino_docker:01 &>/dev/null; then + echo "The container ros2_openvino_docker:01 image exists" docker rmi -f ros2_openvino_docker:01 fi docker ps -a | grep ros2_openvino_container - if [ $? -eq 0 ] - then + if docker ps -aq -f name=ros2_openvino_container; then + echo "The container ros2_openvino_container exists. Removing the container..." docker rm -f ros2_openvino_container fi # Removing some docker image .. # Using jenkins server ros2_openvino_toolkit code instead of git clone code. - cd $work_dir && sed -i '/RUN git clone -b ros2/d' Dockerfile + cd "$work_dir" && sed -i '/RUN git clone -b ros2/d' Dockerfile # add the jpg for test. - cd $work_dir && sed -i '$i COPY jpg /root/jpg' Dockerfile - - cd $work_dir && docker build --build-arg ROS_PRE_INSTALLED_PKG=galactic-desktop --build-arg VERSION=galactic -t ros2_openvino_docker:01 . - cd $work_dir && docker images - docker run -i --privileged=true --device=/dev/dri -v $work_dir/ros2_openvino_toolkit:/root/catkin_ws/src/ros2_openvino_toolkit -v $HOME/.Xauthority:/root/.Xauthority -e GDK_SCALE -v $work_dir/test_cases:/root/test_cases --name ros2_openvino_container ros2_openvino_docker:01 bash -c "cd /root/test_cases && ./run.sh galactic" + cd "$work_dir" && sed -i '$i COPY jpg /root/jpg' Dockerfile + cd "$work_dir" && docker build --build-arg ROS_PRE_INSTALLED_PKG=galactic-desktop --build-arg VERSION=galactic -t ros2_openvino_docker:01 . + cd "$work_dir" && docker images + docker run -i --privileged=true --device=/dev/dri -v "$work_dir"/ros2_openvino_toolkit:/root/catkin_ws/src/ros2_openvino_toolkit -v "$HOME"/.Xauthority:/root/.Xauthority -e GDK_SCALE -v "$work_dir"/test_cases:/root/test_cases --name ros2_openvino_container ros2_openvino_docker:01 bash -c "cd /root/test_cases && ./run.sh galactic" } -run_container -if [ $? -ne 0 ] -then - echo "Test fail" - exit -1 +if ! run_container; then + echo "Test failed" + exit 1 fi - - diff --git a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/ros2_openvino_tool_model_download.sh b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/ros2_openvino_tool_model_download.sh index e2678f36..dd3d842e 100755 --- a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/ros2_openvino_tool_model_download.sh +++ b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/ros2_openvino_tool_model_download.sh @@ -3,17 +3,16 @@ mkdir -p /opt/openvino_toolkit/models #apt install -y python-pip apt install -y python3.8-venv -cd ~ && python3 -m venv openvino_env && source openvino_env/bin/activate +cd ~ && python3 -m venv openvino_env +#shellcheck source=/dev/null +source openvino_env/bin/activate python -m pip install --upgrade pip -pip install openvino-dev[tensorflow2,onnx]==2022.3 - +pip install "openvino-dev[tensorflow2,onnx]==2022.3" #Download the optimized Intermediate Representation (IR) of model (execute once) cd ~/catkin_ws/src/ros2_openvino_toolkit/data/model_list && omz_downloader --list download_model.lst -o /opt/openvino_toolkit/models/ - cd ~/catkin_ws/src/ros2_openvino_toolkit/data/model_list && omz_converter --list convert_model.lst -d /opt/openvino_toolkit/models/ -o /opt/openvino_toolkit/models/convert - #Copy label files (execute once) cp ~/catkin_ws/src/ros2_openvino_toolkit/data/labels/face_detection/face-detection-adas-0001.labels /opt/openvino_toolkit/models/intel/face-detection-adas-0001/FP32/ cp ~/catkin_ws/src/ros2_openvino_toolkit/data/labels/face_detection/face-detection-adas-0001.labels /opt/openvino_toolkit/models/intel/face-detection-adas-0001/FP16/ @@ -27,4 +26,3 @@ cp /opt/openvino_toolkit/models/convert/public/mask_rcnn_inception_resnet_v2_atr cd /root/test_cases/ && ./yolov5_model_download.sh cd /root/test_cases/ && ./yolov8_model_download.sh - diff --git a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/run.sh b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/run.sh index d13dd828..8e0af8c8 100755 --- a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/run.sh +++ b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/run.sh @@ -7,10 +7,12 @@ then else export ros2_branch=$1 fi -source /root/test_cases/config.sh $ros2_branch +#shellcheck source=/dev/null +source /root/test_cases/config.sh "$ros2_branch" cd /root/catkin_ws && colcon build --symlink-install -cd /root/catkin_ws && source ./install/local_setup.bash +# shellcheck source=/dev/null +source ./install/local_setup.bash apt-get update # apt-get install -y ros-$ros2_branch-diagnostic-updater @@ -31,6 +33,5 @@ result=$? echo "Test ENV:" && df -h && free -g if [ $result -ne 0 ] then - exit -1 + exit 1 fi - diff --git a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov5_model_download.sh b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov5_model_download.sh index f3e50d3b..d5c4a7a8 100755 --- a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov5_model_download.sh +++ b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov5_model_download.sh @@ -5,34 +5,32 @@ cd /root && git clone https://github.com/ultralytics/yolov5.git #Set Environment for Installing YOLOv5 -cd yolov5 +cd yolov5 || exit python3 -m venv yolo_env # Create a virtual python environment +# shellcheck source=/dev/null source yolo_env/bin/activate # Activate environment pip install -r requirements.txt # Install yolov5 prerequisites pip install wheel pip install onnx # Download PyTorch Weights -mkdir -p /root/yolov5/model_convert && cd /root/yolov5/model_convert +mkdir -p /root/yolov5/model_convert && cd /root/yolov5/model_convert || exit wget https://github.com/ultralytics/yolov5/releases/download/v6.2/yolov5n.pt -cd /root/yolov5 +cd /root/yolov5 || exit python3 export.py --weights model_convert/yolov5n.pt --include onnx - #2. Convert ONNX files to IR files -cd /root/yolov5/ +cd /root/yolov5/ || exit python3 -m venv ov_env # Create openVINO virtual environment +# shellcheck source=/dev/null source ov_env/bin/activate # Activate environment python -m pip install --upgrade pip # Upgrade pip -pip install openvino[onnx]==2022.3.0 # Install OpenVINO for ONNX -pip install openvino-dev[onnx]==2022.3.0 # Install OpenVINO Dev Tool for ONNX - +pip install "openvino[onnx]==2022.3.0" # Install OpenVINO for ONNX +pip install "openvino-dev[onnx]==2022.3.0" # Install OpenVINO Dev Tool for ONNX -cd /root/yolov5/model_convert +cd /root/yolov5/model_convert || exit mo --input_model yolov5n.onnx - mkdir -p /opt/openvino_toolkit/models/convert/public/yolov5n/FP32/ sudo cp yolov5n.bin yolov5n.mapping yolov5n.xml /opt/openvino_toolkit/models/convert/public/yolov5n/FP32/ - diff --git a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov8_model_download.sh b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov8_model_download.sh index a3879291..bca0df7a 100755 --- a/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov8_model_download.sh +++ b/.ci_local_test/ros2_openvino_toolkit_test/test_cases/yolov8_model_download.sh @@ -2,23 +2,21 @@ #Pip install the ultralytics package including all requirements in a Python>=3.7 environment with PyTorch>=1.7. -mkdir -p yolov8 && cd yolov8 +mkdir -p yolov8 && cd yolov8 || exit pip install ultralytics apt install python3.8-venv python3 -m venv openvino_env +# shellcheck source=/dev/null source openvino_env/bin/activate - #Export a YOLOv8n model to a different format like ONNX, CoreML, etc. # export official model yolo export model=yolov8n.pt format=openvino yolo export model=yolov8n-seg.pt format=openvino - # Move to the Recommended Model Path mkdir -p /opt/openvino_toolkit/models/convert/public/FP32/yolov8n mkdir -p /opt/openvino_toolkit/models/convert/public/FP32/yolov8n-seg cp yolov8n_openvino_model/* /opt/openvino_toolkit/models/convert/public/FP32/yolov8n cp yolov8n-seg_openvino_model/* /opt/openvino_toolkit/models/convert/public/FP32/yolov8n-seg - diff --git a/script/environment_setup.sh b/script/environment_setup.sh index 371bba98..08a37790 100755 --- a/script/environment_setup.sh +++ b/script/environment_setup.sh @@ -3,43 +3,43 @@ set -euo pipefail echo "Please Enter Your Password:" stty -echo -read ROOT_PASSWD +read -r ROOT_PASSWD stty echo basedir=$PWD echo "Begin Environment Setup" -system_ver=`cat /etc/lsb-release | grep -i "DISTRIB_RELEASE" | cut -d "=" -f2` +system_ver=$(cat /etc/lsb-release | grep -i "DISTRIB_RELEASE" | cut -d "=" -f2) #Get Config Parameters -CLEAN=`cat modules.conf | grep 'clean'` +CLEAN=$(cat modules.conf | grep 'clean') CLEAN=${CLEAN##*=} echo "Set CLEAN to $CLEAN" -ROS2_SRC=`cat modules.conf | grep 'ros2_src'` +ROS2_SRC=$(cat modules.conf | grep 'ros2_src') ROS2_SRC=${ROS2_SRC##*=} echo "Set ROS2_SRC to $ROS2_SRC" -OPENCV=`cat modules.conf | grep 'opencv'` +OPENCV=$(cat modules.conf | grep 'opencv') OPENCV=${OPENCV##*=} echo "Set OPENCV to $OPENCV" -OPENCL=`cat modules.conf | grep 'opencl'` +OPENCL=$(cat modules.conf | grep 'opencl') OPENCL=${OPENCL##*=} echo "Set OPENCL to $OPENCL" -DLDT=`cat modules.conf | grep 'dldt'` +DLDT=$(cat modules.conf | grep 'dldt') DLDT=${DLDT##*=} echo "Set DLDT to $DLDT" -MODEL_ZOO=`cat modules.conf | grep 'model_zoo'` +MODEL_ZOO=$(cat modules.conf | grep 'model_zoo') MODEL_ZOO=${MODEL_ZOO##*=} echo "Set MODEL_ZOO to $MODEL_ZOO" -LIBREALSENSE=`cat modules.conf | grep 'librealsense'` +LIBREALSENSE=$(cat modules.conf | grep 'librealsense') LIBREALSENSE=${LIBREALSENSE##*=} echo "Set LIBREALSENSE to $LIBREALSENSE" -OTHER_DEPENDENCY=`cat modules.conf | grep 'other_dependency'` +OTHER_DEPENDENCY=$(cat modules.conf | grep 'other_dependency') OTHER_DEPENDENCY=${OTHER_DEPENDENCY##*=} echo "Set OTHER_DEPENDENCY to $OTHER_DEPENDENCY" @@ -48,17 +48,17 @@ echo "Set OTHER_DEPENDENCY to $OTHER_DEPENDENCY" if [ "$CLEAN" == "1" ]; then echo "===================Clean Existing Directories...====================================" - read -n1 -p "The clean operation will delete some manually created directories, + read -r -n1 -p "The clean operation will delete some manually created directories, including ~/code, ~/ros2_ws, /opt/intel, /opt/openvino_toolkit, and OpenVINO tar ball. Do you want to clean existing directories[Y/N]?" answer case $answer in Y|y) echo echo "===================Cleaning...====================================" - echo $ROOT_PASSWD | sudo -S rm -rf ~/code + echo "$ROOT_PASSWD" | sudo -S rm -rf ~/code rm -rf ~/ros2_ws - echo $ROOT_PASSWD | sudo -S rm -rf /opt/openvino_toolkit + echo "$ROOT_PASSWD" | sudo -S rm -rf /opt/openvino_toolkit if [[ $system_ver = "16.04" && -L "/usr/lib/x86_64-linux-gnu/libboost_python3.so" ]]; then - echo $ROOT_PASSWD | sudo -S rm /usr/lib/x86_64-linux-gnu/libboost_python3.so + echo "$ROOT_PASSWD" | sudo -S rm /usr/lib/x86_64-linux-gnu/libboost_python3.so fi echo "===================Clean finish...====================================";; N|n) echo @@ -70,25 +70,25 @@ fi if [ "$ROS2_SRC" == "1" ]; then echo "===================Installing ROS2 from Source...=======================" - echo $ROOT_PASSWD | sudo -S locale-gen en_US en_US.UTF-8 - echo $ROOT_PASSWD | sudo -S update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 + echo "$ROOT_PASSWD" | sudo -S locale-gen en_US en_US.UTF-8 + echo "$ROOT_PASSWD" | sudo -S update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 - echo $ROOT_PASSWD | sudo -S apt-get update && sudo apt-get install -y curl + echo "$ROOT_PASSWD" | sudo -S apt-get update && sudo apt-get install -y curl curl http://repo.ros2.org/repos.key | sudo apt-key add - - echo $ROOT_PASSWD | sudo -S sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' + echo "$ROOT_PASSWD" | sudo -S sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' if [ -n "$http_proxy" ]; then - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="$http_proxy" --recv-key F42ED6FBAB17C654 + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="$http_proxy" --recv-key F42ED6FBAB17C654 else - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F42ED6FBAB17C654 + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F42ED6FBAB17C654 fi - echo $ROOT_PASSWD | sudo -S apt-get update && sudo apt-get install -y build-essential cmake git python3-colcon-common-extensions python3-pip python-rosdep python3-vcstool wget + echo "$ROOT_PASSWD" | sudo -S apt-get update && sudo apt-get install -y build-essential cmake git python3-colcon-common-extensions python3-pip python-rosdep python3-vcstool wget # install some pip packages needed for testing - echo $ROOT_PASSWD | sudo -S -H python3 -m pip install -U argcomplete flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes pytest-repeat pytest-rerunfailures + echo "$ROOT_PASSWD" | sudo -S -H python3 -m pip install -U argcomplete flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes pytest-repeat pytest-rerunfailures python3 -m pip install -U pytest pytest-cov pytest-runner setuptools - echo $ROOT_PASSWD | sudo -S apt-get install --no-install-recommends -y libasio-dev libtinyxml2-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install --no-install-recommends -y libasio-dev libtinyxml2-dev mkdir -p ~/ros2_ws/src cd ~/ros2_ws @@ -96,13 +96,13 @@ if [ "$ROS2_SRC" == "1" ]; then vcs-import src < ros2.repos if [ ! -f "/etc/ros/rosdep/sources.list.d/20-default.list" ]; then - echo $ROOT_PASSWD | sudo -S rosdep init + echo "$ROOT_PASSWD" | sudo -S rosdep init else echo "file already exists, skip..." fi rosdep update - if [ $system_ver = "16.04" ]; then + if [ "$system_ver" = "16.04" ]; then rosdep install --from-paths src --ignore-src --rosdistro crystal -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 python3-lark-parser rti-connext-dds-5.3.1 urdfdom_headers" colcon build --symlink-install --packages-ignore qt_gui_cpp rqt_gui_cpp else @@ -115,16 +115,16 @@ fi if [ "$OPENCV" == "1" ]; then echo "===================Installing OpenCV3 from Source...=======================" - echo $ROOT_PASSWD | sudo -S apt-get install -y build-essential - echo $ROOT_PASSWD | sudo -S apt-get install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev - echo $ROOT_PASSWD | sudo -S apt-get install -y python-dev python-numpy libtbb2 libtbb-dev libpng-dev libtiff-dev libdc1394-22-dev - - if [ $system_ver = "18.04" ]; then - echo $ROOT_PASSWD | sudo -S add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" - echo $ROOT_PASSWD | sudo apt update - echo $ROOT_PASSWD | sudo apt install libjasper1 libjasper-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y build-essential + echo "$ROOT_PASSWD" | sudo -S apt-get install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y python-dev python-numpy libtbb2 libtbb-dev libpng-dev libtiff-dev libdc1394-22-dev + + if [ "$system_ver" = "18.04" ]; then + echo "$ROOT_PASSWD" | sudo -S add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" + echo "$ROOT_PASSWD" | sudo apt update + echo "$ROOT_PASSWD" | sudo apt install libjasper1 libjasper-dev else - echo $ROOT_PASSWD | sudo -S apt-get install libjasper-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install libjasper-dev fi mkdir -p ~/code && cd ~/code @@ -140,10 +140,10 @@ if [ "$OPENCV" == "1" ]; then cd ~/code/opencv mkdir build && cd build - cmake -DOPENCV_EXTRA_MODULES_PATH=$HOME/code/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_opencv_cnn_3dobj=OFF .. + cmake -DOPENCV_EXTRA_MODULES_PATH="$HOME"/code/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_opencv_cnn_3dobj=OFF .. make -j4 - echo $ROOT_PASSWD | sudo -S make install - echo $ROOT_PASSWD | sudo -S ldconfig + echo "$ROOT_PASSWD" | sudo -S make install + echo "$ROOT_PASSWD" | sudo -S ldconfig echo "==== END install OpenCV ====" fi @@ -158,7 +158,7 @@ if [ "$OPENCL" == "1" ]; then wget https://github.com/intel/compute-runtime/releases/download/19.04.12237/intel-igc-opencl_18.50.1270_amd64.deb wget https://github.com/intel/compute-runtime/releases/download/19.04.12237/intel-opencl_19.04.12237_amd64.deb wget https://github.com/intel/compute-runtime/releases/download/19.04.12237/intel-ocloc_19.04.12237_amd64.deb - echo $ROOT_PASSWD | sudo -S -E dpkg -i *.deb + echo "$ROOT_PASSWD" | sudo -S -E dpkg -i -- *.deb echo "==== END install OpenCL ====" fi @@ -168,8 +168,8 @@ if [ "$DLDT" == "1" ]; then echo "===================Installing Deep Learning Deployment Toolkit...=======================" if [[ -f /etc/lsb-release ]]; then - echo $ROOT_PASSWD | sudo -S -E apt update - echo $ROOT_PASSWD | sudo -S -E apt-get install -y \ + echo "$ROOT_PASSWD" | sudo -S -E apt update + echo "$ROOT_PASSWD" | sudo -S -E apt-get install -y \ build-essential \ cmake \ curl \ @@ -197,10 +197,10 @@ if [ "$DLDT" == "1" ]; then gstreamer1.0-plugins-base \ libusb-1.0-0-dev \ libopenblas-dev - if [ $system_ver = "18.04" ]; then - echo $ROOT_PASSWD | sudo -S -E apt-get install -y libpng-dev + if [ "$system_ver" = "18.04" ]; then + echo "$ROOT_PASSWD" | sudo -S -E apt-get install -y libpng-dev else - echo $ROOT_PASSWD | sudo -S -E apt-get install -y libpng12-dev + echo "$ROOT_PASSWD" | sudo -S -E apt-get install -y libpng12-dev fi fi mkdir -p ~/code && cd ~/code @@ -212,8 +212,8 @@ if [ "$DLDT" == "1" ]; then mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j8 - echo $ROOT_PASSWD | sudo -S mkdir -p /opt/openvino_toolkit - echo $ROOT_PASSWD | sudo -S ln -sf ~/code/dldt /opt/openvino_toolkit/dldt + echo "$ROOT_PASSWD" | sudo -S mkdir -p /opt/openvino_toolkit + echo "$ROOT_PASSWD" | sudo -S ln -sf ~/code/dldt /opt/openvino_toolkit/dldt echo "==== END install DLDT ====" fi @@ -229,8 +229,8 @@ if [ "$MODEL_ZOO" == "1" ]; then mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release /opt/openvino_toolkit/dldt/inference-engine make -j8 - echo $ROOT_PASSWD | sudo -S mkdir -p /opt/openvino_toolkit - echo $ROOT_PASSWD | sudo -S ln -sf ~/code/open_model_zoo /opt/openvino_toolkit/open_model_zoo + echo "$ROOT_PASSWD" | sudo -S mkdir -p /opt/openvino_toolkit + echo "$ROOT_PASSWD" | sudo -S ln -sf ~/code/open_model_zoo /opt/openvino_toolkit/open_model_zoo echo "==== END install open_model_zoo ====" fi @@ -241,9 +241,9 @@ if [ "$LIBREALSENSE" == "1" ]; then echo "Install server public key for librealsense" if [ -n "$http_proxy" ]; then - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy=$http_proxy --recv-key C8B3A55A6F3EFCDE + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="$http_proxy" --recv-key C8B3A55A6F3EFCDE else - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE fi if ! test "$(grep "http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo" /etc/apt/sources.list)" @@ -259,18 +259,18 @@ fi if [ "$OTHER_DEPENDENCY" == "1" ]; then echo "===================Setting UP OTHER_DEPENDENCY DEPENDENCY...=======================" - echo $ROOT_PASSWD | sudo -S apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev - echo $ROOT_PASSWD | sudo -S apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev pip3 install numpy pip3 install networkx - if [ $system_ver = "16.04" ]; then - echo $ROOT_PASSWD | sudo -S apt-get install -y --no-install-recommends libboost-all-dev + if [ "$system_ver" = "16.04" ]; then + echo "$ROOT_PASSWD" | sudo -S apt-get install -y --no-install-recommends libboost-all-dev cd /usr/lib/x86_64-linux-gnu - echo $ROOT_PASSWD | sudo -S ln -sf libboost_python-py35.so libboost_python3.so - elif [ $system_ver = "18.04" ]; then - echo $ROOT_PASSWD | sudo -S apt-get install -y --no-install-recommends libboost-all-dev - echo $ROOT_PASSWD | sudo -S apt install libboost-python1.62.0 + echo "$ROOT_PASSWD" | sudo -S ln -sf libboost_python-py35.so libboost_python3.so + elif [ "$system_ver" = "18.04" ]; then + echo "$ROOT_PASSWD" | sudo -S apt-get install -y --no-install-recommends libboost-all-dev + echo "$ROOT_PASSWD" | sudo -S apt install libboost-python1.62.0 fi echo "==== END install other dependencies ====" diff --git a/script/environment_setup_binary.sh b/script/environment_setup_binary.sh index d8cca987..3fe6bc54 100755 --- a/script/environment_setup_binary.sh +++ b/script/environment_setup_binary.sh @@ -3,40 +3,40 @@ set -euo pipefail echo "Please Enter Your Password:" stty -echo -read ROOT_PASSWD +read -r ROOT_PASSWD stty echo basedir=$PWD echo "Begin Environment Setup" -system_ver=`cat /etc/lsb-release | grep -i "DISTRIB_RELEASE" | cut -d "=" -f2` +system_ver=$(cat /etc/lsb-release | grep -i "DISTRIB_RELEASE" | cut -d "=" -f2) #Get Config Parameters -CLEAN=`cat modules.conf | grep 'clean'` +CLEAN=$(cat modules.conf | grep 'clean') CLEAN=${CLEAN##*=} echo "Set CLEAN to $CLEAN" -ROS2_SRC=`cat modules.conf | grep 'ros2_src'` +ROS2_SRC=$(cat modules.conf | grep 'ros2_src') ROS2_SRC=${ROS2_SRC##*=} echo "Set ROS2_SRC to $ROS2_SRC" -OPENVINO=`cat modules.conf | grep 'openvino'` +OPENVINO=$(cat modules.conf | grep 'openvino') OPENVINO=${OPENVINO##*=} echo "Set OPENVINO to $OPENVINO" -OPENCL=`cat modules.conf | grep 'opencl'` +OPENCL=$(cat modules.conf | grep 'opencl') OPENCL=${OPENCL##*=} echo "Set OPENCL to $OPENCL" -OPENCV=`cat modules.conf | grep 'opencv'` +OPENCV=$(cat modules.conf | grep 'opencv') OPENCV=${OPENCV##*=} echo "Set OPENCV to $OPENCV" -LIBREALSENSE=`cat modules.conf | grep 'librealsense'` +LIBREALSENSE=$(cat modules.conf | grep 'librealsense') LIBREALSENSE=${LIBREALSENSE##*=} echo "Set LIBREALSENSE to $LIBREALSENSE" -OTHER_DEPENDENCY=`cat modules.conf | grep 'other_dependency'` +OTHER_DEPENDENCY=$(cat modules.conf | grep 'other_dependency') OTHER_DEPENDENCY=${OTHER_DEPENDENCY##*=} echo "Set OTHER_DEPENDENCY to $OTHER_DEPENDENCY" @@ -45,19 +45,19 @@ echo "Set OTHER_DEPENDENCY to $OTHER_DEPENDENCY" if [ "$CLEAN" == "1" ]; then echo "===================Clean Existing Directories...====================================" - read -n1 -p "The clean operation will delete some manually created directories, + read -r -n1 -p "The clean operation will delete some manually created directories, including ~/code, ~/ros2_ws, /opt/intel, /opt/openvino_toolkit, and OpenVINO tar ball. Do you want to clean existing directories[Y/N]?" answer case $answer in Y|y) echo echo "===================Cleaning...====================================" - echo $ROOT_PASSWD | sudo -S rm -rf ~/code + echo "$ROOT_PASSWD" | sudo -S rm -rf ~/code rm -rf ~/ros2_ws - echo $ROOT_PASSWD | sudo -S rm -rf /opt/intel + echo "$ROOT_PASSWD" | sudo -S rm -rf /opt/intel rm -rf ~/Downloads/l_openvino_toolkit* - echo $ROOT_PASSWD | sudo -S rm -rf /opt/openvino_toolkit + echo "$ROOT_PASSWD" | sudo -S rm -rf /opt/openvino_toolkit if [[ $system_ver = "16.04" && -L "/usr/lib/x86_64-linux-gnu/libboost_python3.so" ]]; then - echo $ROOT_PASSWD | sudo -S rm /usr/lib/x86_64-linux-gnu/libboost_python3.so + echo "$ROOT_PASSWD" | sudo -S rm /usr/lib/x86_64-linux-gnu/libboost_python3.so fi echo "===================Clean finish...====================================";; N|n) echo @@ -69,26 +69,26 @@ fi if [ "$ROS2_SRC" == "1" ]; then echo "===================Installing ROS2 from Source...=======================" - echo $ROOT_PASSWD | sudo -S locale-gen en_US en_US.UTF-8 - echo $ROOT_PASSWD | sudo -S update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 + echo "$ROOT_PASSWD" | sudo -S locale-gen en_US en_US.UTF-8 + echo "$ROOT_PASSWD" | sudo -S update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 - echo $ROOT_PASSWD | sudo -S apt-get update && sudo apt-get install -y curl + echo "$ROOT_PASSWD" | sudo -S apt-get update && sudo apt-get install -y curl curl http://repo.ros2.org/repos.key | sudo apt-key add - - echo $ROOT_PASSWD | sudo -S sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' + echo "$ROOT_PASSWD" | sudo -S sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' if [ -n "$http_proxy" ]; then - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="$http_proxy" --recv-key F42ED6FBAB17C654 + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="$http_proxy" --recv-key F42ED6FBAB17C654 else - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F42ED6FBAB17C654 + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F42ED6FBAB17C654 fi - echo $ROOT_PASSWD | sudo -S apt-get update && sudo apt-get install -y build-essential cmake git python3-colcon-common-extensions python3-pip python-rosdep python3-vcstool wget + echo "$ROOT_PASSWD" | sudo -S apt-get update && sudo apt-get install -y build-essential cmake git python3-colcon-common-extensions python3-pip python-rosdep python3-vcstool wget # install some pip packages needed for testing - echo $ROOT_PASSWD | sudo -S -H python3 -m pip install -U argcomplete flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes pytest-repeat pytest-rerunfailures + echo "$ROOT_PASSWD" | sudo -S -H python3 -m pip install -U argcomplete flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes pytest-repeat pytest-rerunfailures python3 -m pip install -U pytest pytest-cov pytest-runner setuptools python3 -m pip uninstall pytest -y - echo $ROOT_PASSWD | sudo -S apt-get install --no-install-recommends -y libasio-dev libtinyxml2-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install --no-install-recommends -y libasio-dev libtinyxml2-dev mkdir -p ~/ros2_ws/src cd ~/ros2_ws @@ -96,13 +96,13 @@ if [ "$ROS2_SRC" == "1" ]; then vcs-import src < ros2.repos if [ ! -f "/etc/ros/rosdep/sources.list.d/20-default.list" ]; then - echo $ROOT_PASSWD | sudo -S rosdep init + echo "$ROOT_PASSWD" | sudo -S rosdep init else echo "file already exists, skip..." fi rosdep update - if [ $system_ver = "16.04" ]; then + if [ "$system_ver" = "16.04" ]; then rosdep install --from-paths src --ignore-src --rosdistro crystal -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 python3-lark-parser rti-connext-dds-5.3.1 urdfdom_headers" colcon build --symlink-install --packages-ignore qt_gui_cpp rqt_gui_cpp else @@ -119,9 +119,9 @@ if [ "$OPENVINO" == "1" ]; then wget -c http://registrationcenter-download.intel.com/akdlm/irc_nas/16057/l_openvino_toolkit_p_2019.3.376.tgz tar -xvf l_openvino_toolkit_p_2019.3.376.tgz cd l_openvino_toolkit_p_2019.3.376 - echo $ROOT_PASSWD | sudo -S ./install_openvino_dependencies.sh - cp $basedir/openvino_silent.cfg . - echo $ROOT_PASSWD | sudo -S ./install.sh --silent openvino_silent.cfg + echo "$ROOT_PASSWD" | sudo -S ./install_openvino_dependencies.sh + cp "$basedir"/openvino_silent.cfg . + echo "$ROOT_PASSWD" | sudo -S ./install.sh --silent openvino_silent.cfg echo "==== END install OpenVINO Toolkit ====" fi @@ -136,7 +136,7 @@ if [ "$OPENCL" == "1" ]; then wget https://github.com/intel/compute-runtime/releases/download/19.04.12237/intel-igc-opencl_18.50.1270_amd64.deb wget https://github.com/intel/compute-runtime/releases/download/19.04.12237/intel-opencl_19.04.12237_amd64.deb wget https://github.com/intel/compute-runtime/releases/download/19.04.12237/intel-ocloc_19.04.12237_amd64.deb - echo $ROOT_PASSWD | sudo -S -E dpkg -i *.deb + echo "$ROOT_PASSWD" | sudo -S -E dpkg -i -- *.deb echo "==== END install OpenCL ====" fi @@ -147,9 +147,9 @@ if [ "$LIBREALSENSE" == "1" ]; then echo "Install server public key for librealsense" if [ -n "$http_proxy" ]; then - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy=$http_proxy --recv-key C8B3A55A6F3EFCDE + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy="$http_proxy" --recv-key C8B3A55A6F3EFCDE else - echo $ROOT_PASSWD | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE + echo "$ROOT_PASSWD" | sudo -S apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE fi if ! test "$(grep "http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo" /etc/apt/sources.list)" @@ -165,16 +165,16 @@ fi if [ "$OPENCV" == "1" ]; then echo "===================Installing OpenCV3 from Source...=======================" - echo $ROOT_PASSWD | sudo -S apt-get install -y build-essential - echo $ROOT_PASSWD | sudo -S apt-get install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev - echo $ROOT_PASSWD | sudo -S apt-get install -y python-dev python-numpy libtbb2 libtbb-dev libpng-dev libtiff-dev libdc1394-22-dev - - if [ $system_ver = "18.04" ]; then - echo $ROOT_PASSWD | sudo -S add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" - echo $ROOT_PASSWD | sudo apt update - echo $ROOT_PASSWD | sudo apt install libjasper1 libjasper-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y build-essential + echo "$ROOT_PASSWD" | sudo -S apt-get install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y python-dev python-numpy libtbb2 libtbb-dev libpng-dev libtiff-dev libdc1394-22-dev + + if [ "$system_ver" = "18.04" ]; then + echo "$ROOT_PASSWD" | sudo -S add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" + echo "$ROOT_PASSWD" | sudo apt update + echo "$ROOT_PASSWD" | sudo apt install libjasper1 libjasper-dev else - echo $ROOT_PASSWD | sudo -S apt-get install libjasper-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install libjasper-dev fi mkdir -p ~/code && cd ~/code @@ -190,10 +190,10 @@ if [ "$OPENCV" == "1" ]; then cd ~/code/opencv mkdir build && cd build - cmake -DOPENCV_EXTRA_MODULES_PATH=$HOME/code/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_opencv_cnn_3dobj=OFF .. + cmake -DOPENCV_EXTRA_MODULES_PATH="$HOME"/code/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_opencv_cnn_3dobj=OFF .. make -j4 - echo $ROOT_PASSWD | sudo -S make install - echo $ROOT_PASSWD | sudo -S ldconfig + echo "$ROOT_PASSWD" | sudo -S make install + echo "$ROOT_PASSWD" | sudo -S ldconfig echo "==== END install OpenCV ====" fi @@ -202,18 +202,18 @@ fi if [ "$OTHER_DEPENDENCY" == "1" ]; then echo "===================Setting UP OTHER_DEPENDENCY DEPENDENCY...=======================" - echo $ROOT_PASSWD | sudo -S apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev - echo $ROOT_PASSWD | sudo -S apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev + echo "$ROOT_PASSWD" | sudo -S apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev pip3 install numpy pip3 install networkx - if [ $system_ver = "16.04" ]; then - echo $ROOT_PASSWD | sudo -S apt-get install -y --no-install-recommends libboost-all-dev + if [ "$system_ver" = "16.04" ]; then + echo "$ROOT_PASSWD" | sudo -S apt-get install -y --no-install-recommends libboost-all-dev cd /usr/lib/x86_64-linux-gnu - echo $ROOT_PASSWD | sudo -S ln -sf libboost_python-py35.so libboost_python3.so - elif [ $system_ver = "18.04" ]; then - echo $ROOT_PASSWD | sudo -S apt-get install -y --no-install-recommends libboost-all-dev - echo $ROOT_PASSWD | sudo -S apt install libboost-python1.62.0 + echo "$ROOT_PASSWD" | sudo -S ln -sf libboost_python-py35.so libboost_python3.so + elif [ "$system_ver" = "18.04" ]; then + echo "$ROOT_PASSWD" | sudo -S apt-get install -y --no-install-recommends libboost-all-dev + echo "$ROOT_PASSWD" | sudo -S apt install libboost-python1.62.0 fi echo "==== END install other dependencies ====" diff --git a/script/set_variable.sh b/script/set_variable.sh index 88fb16b6..bef756c7 100644 --- a/script/set_variable.sh +++ b/script/set_variable.sh @@ -14,5 +14,5 @@ elif [ "$openvino_version" == "binary" ]; then else echo "openvino version error" fi -echo "model_downloader="$model_downloader -echo "model_optimizer="$model_optimizer +echo "model_downloader=""$model_downloader" +echo "model_optimizer=""$model_optimizer"