#!/bin/bash set -e while getopts p:d: parameter_Option do case "${parameter_Option}" in p) PYTHON_VER=${OPTARG};; d) DEVICE_TYPE=${OPTARG};; *) echo "Usage: $0 -p PYTHON_VER -d DEVICE_TYPE";; esac done PYTHON_VER=${PYTHON_VER:=3.8} # Some Edge devices only have limited disk space, use this option to exclude some package DEVICE_TYPE=${DEVICE_TYPE:=Normal} # shellcheck disable=SC2034 DEBIAN_FRONTEND=noninteractive echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections apt-get update && apt-get install -y software-properties-common lsb-release OS_VERSION=$(lsb_release -r -s) PACKAGE_LIST=( "apt-transport-https" "apt-utils" "aria2" "autoconf" "automake" "autotools-dev" "build-essential" "bzip2" "ca-certificates" "curl" "gfortran" "git" "graphviz" "language-pack-en" "libcurl4" "libcurl4-openssl-dev" "libexpat1-dev" "libkrb5-3" "liblttng-ust-dev" "libpng-dev" "libssl-dev" "libtinfo-dev" "libtinfo5" "libtool" "libunwind8" "openjdk-17-jdk" "openssh-server" "pkg-config" "python3-dev" "python3-distutils" "python3-numpy" "python3-pip" "python3-pytest" "python3-setuptools" "python3-wheel" "rsync" "sudo" "unzip" "wget" "zip" "zlib1g" "zlib1g-dev" ) if [ "$DEVICE_TYPE" = "Normal" ]; then PACKAGE_LIST+=("libedit-dev" "libxml2-dev" "python3-packaging") fi PACKAGE_LIST+=("libicu-dev") apt-get install -y --no-install-recommends "${PACKAGE_LIST[@]}" locale-gen en_US.UTF-8 update-locale LANG=en_US.UTF-8 if [ "$OS_VERSION" = "20.04" ]; then # The defaul version of python is 3.8 major=$(echo "$PYTHON_VER" | cut -d. -f1) minor=$(echo "$PYTHON_VER" | cut -d. -f2) if [ "$major" -lt 3 ] || [ "$major" -eq 3 ] && [ "$minor" -lt 8 ]; then PYTHON_VER="3.8" fi if [ "$PYTHON_VER" != "3.8" ]; then add-apt-repository -y ppa:deadsnakes/ppa apt-get update apt-get install -y --no-install-recommends \ python"${PYTHON_VER}" \ python"${PYTHON_VER}-"dev update-alternatives --install /usr/bin/python3 python3 /usr/bin/python"${PYTHON_VER}" 1 update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2 update-alternatives --set python3 /usr/bin/python"${PYTHON_VER}" #TODO: the old one(/usr/bin/pip3) should be uninstalled first. Because the one will be #put at /usr/local/. Then there will be two pips. /usr/bin/python"${PYTHON_VER}" -m pip install --upgrade --force-reinstall pip==19.0.3 fi elif [ "$OS_VERSION" = "22.04" ] ; then # The defaul version of python is 3.10 major=$(echo "$PYTHON_VER" | cut -d. -f1) minor=$(echo "$PYTHON_VER" | cut -d. -f2) if [ "$major" -lt 3 ] || [ "$major" -eq 3 ] && [ "$minor" -lt 10 ]; then PYTHON_VER="3.10" fi if [ "$PYTHON_VER" != "3.10" ]; then add-apt-repository -y ppa:deadsnakes/ppa apt-get update apt-get install -y --no-install-recommends \ python"${PYTHON_VER}" \ python"${PYTHON_VER}"-dev update-alternatives --install /usr/bin/python3 python3 /usr/bin/python"${PYTHON_VER}" 1 update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2 update-alternatives --set python3 /usr/bin/python"${PYTHON_VER}" fi else exit 1 fi rm -rf /var/lib/apt/lists/*