|
@@ -1,159 +0,0 @@
|
|
|
-#!/usr/bin/env bash
|
|
|
-# SPDX-License-Identifier: GPL-3.0+
|
|
|
-
|
|
|
-umask 022
|
|
|
-
|
|
|
-dir="@pythondir_POST@"
|
|
|
-target="${dir}/python_modules"
|
|
|
-pv="$(python -V 2>&1)"
|
|
|
-
|
|
|
-# parse parameters
|
|
|
-while [ ! -z "${1}" ]
|
|
|
-do
|
|
|
- case "${1}" in
|
|
|
- -p|--python)
|
|
|
- pv="Python ${2}"
|
|
|
- shift 2
|
|
|
- ;;
|
|
|
-
|
|
|
- -d|--dir)
|
|
|
- dir="${2}"
|
|
|
- target="${dir}/python_modules"
|
|
|
- echo >&2 "Will install python modules in: '${target}'"
|
|
|
- shift 2
|
|
|
- ;;
|
|
|
-
|
|
|
- -s|--system)
|
|
|
- target=
|
|
|
- echo >&2 "Will install python modules system-wide"
|
|
|
- shift
|
|
|
- ;;
|
|
|
-
|
|
|
- -h|--help)
|
|
|
- echo "${0} [--dir netdata-python.d-path] [--system]"
|
|
|
- echo "Please make sure you have installed packages: python-pip (or python3-pip) python-dev libyaml-dev libmysqlclient-dev"
|
|
|
- exit 0
|
|
|
- ;;
|
|
|
-
|
|
|
- *)
|
|
|
- echo >&2 "Cannot understand parameter: ${1}"
|
|
|
- exit 1
|
|
|
- ;;
|
|
|
- esac
|
|
|
-done
|
|
|
-
|
|
|
-
|
|
|
-if [ ! -z "${target}" -a ! -d "${target}" ]
|
|
|
-then
|
|
|
- echo >&2 "Cannot find directory: '${target}'"
|
|
|
- exit 1
|
|
|
-fi
|
|
|
-
|
|
|
-if [[ "${pv}" =~ ^Python\ 2.* ]]
|
|
|
-then
|
|
|
- pv=2
|
|
|
- pip="$(which pip2 2>/dev/null)"
|
|
|
-elif [[ "${pv}" =~ ^Python\ 3.* ]]
|
|
|
-then
|
|
|
- pv=3
|
|
|
- pip="$(which pip3 2>/dev/null)"
|
|
|
-else
|
|
|
- echo >&2 "Cannot detect python version. Is python installed?"
|
|
|
- exit 1
|
|
|
-fi
|
|
|
-
|
|
|
-[ -z "${pip}" ] && pip="$(which pip 2>/dev/null)"
|
|
|
-if [ -z "${pip}" ]
|
|
|
-then
|
|
|
- echo >&2 "pip command is required to install python v${pv} modules."
|
|
|
- [ "${pv}" = "2" ] && echo >&2 "Please install python-pip."
|
|
|
- [ "${pv}" = "3" ] && echo >&2 "Please install python3-pip."
|
|
|
- exit 1
|
|
|
-fi
|
|
|
-
|
|
|
-echo >&2 "Working for python version ${pv} (pip command: '${pip}')"
|
|
|
-echo >&2 "Installing netdata python modules in: '${target}'"
|
|
|
-
|
|
|
-run() {
|
|
|
- printf "Running command:\n# "
|
|
|
- printf "%q " "${@}"
|
|
|
- printf "\n"
|
|
|
- "${@}"
|
|
|
-}
|
|
|
-
|
|
|
-# try to install all the python modules given as parameters
|
|
|
-# until the first that succeeds
|
|
|
-failed=""
|
|
|
-installed=""
|
|
|
-errors=0
|
|
|
-pip_install() {
|
|
|
- local ret x msg="${1}"
|
|
|
- shift
|
|
|
-
|
|
|
- echo >&2
|
|
|
- echo >&2
|
|
|
- echo >&2 "Installing one of: ${*}"
|
|
|
-
|
|
|
- for x in "${@}"
|
|
|
- do
|
|
|
- echo >&2
|
|
|
- echo >&2 "attempting to install: ${x}"
|
|
|
- if [ ! -z "${target}" ]
|
|
|
- then
|
|
|
- run "${pip}" install --target "${target}" "${x}"
|
|
|
- ret=$?
|
|
|
- else
|
|
|
- run "${pip}" install "${x}"
|
|
|
- ret=$?
|
|
|
- fi
|
|
|
- [ ${ret} -eq 0 ] && break
|
|
|
- echo >&2 "failed to install: ${x}. ${msg}"
|
|
|
- done
|
|
|
-
|
|
|
- if [ ${ret} -ne 0 ]
|
|
|
- then
|
|
|
- echo >&2
|
|
|
- echo >&2
|
|
|
- echo >&2 "FAILED: could not install any of: ${*}. ${msg}"
|
|
|
- echo >&2
|
|
|
- echo >&2
|
|
|
- errors=$(( errors + 1 ))
|
|
|
- failed="${failed}|${*}"
|
|
|
- else
|
|
|
- echo >&2
|
|
|
- echo >&2
|
|
|
- echo >&2 "SUCCESS: we have: ${x}"
|
|
|
- echo >&2
|
|
|
- echo >&2
|
|
|
- installed="${installed} ${x}"
|
|
|
- fi
|
|
|
- return ${ret}
|
|
|
-}
|
|
|
-
|
|
|
-if [ "${pv}" = "2" ]
|
|
|
-then
|
|
|
- pip_install "is libyaml-dev and python-dev installed?" pyyaml
|
|
|
- pip_install "is libmysqlclient-dev and python-dev installed?" mysqlclient mysql-python pymysql
|
|
|
-else
|
|
|
- pip_install "is libyaml-dev and python-dev installed?" pyyaml
|
|
|
- pip_install "is libmysqlclient-dev and python-dev installed?" mysql-python mysqlclient pymysql
|
|
|
-fi
|
|
|
-
|
|
|
-echo >&2
|
|
|
-echo >&2
|
|
|
-if [ ${errors} -ne 0 ]
|
|
|
-then
|
|
|
- echo >&2 "Failed to install ${errors} modules: ${failed}"
|
|
|
- if [ ! -z "${target}" ]
|
|
|
- then
|
|
|
- echo >&2
|
|
|
- echo >&2 "If you are getting errors during cleanup from pip, there is a known bug"
|
|
|
- echo >&2 "in certain versions of pip that prevents installing packages local to an"
|
|
|
- echo >&2 "application. To install them system-wide please run:"
|
|
|
- echo >&2 "$0 --system"
|
|
|
- fi
|
|
|
- exit 1
|
|
|
-else
|
|
|
- echo >&2 "All done. We have: ${installed}"
|
|
|
- exit 0
|
|
|
-fi
|