145 lines
4.8 KiB
Bash
Executable file
145 lines
4.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
. ./env_var.sh
|
|
EL_USER=${USER}
|
|
EL_HOME=$PWD
|
|
EL_HOME_ODOO="${EL_HOME}/odoo"
|
|
#EL_INSTALL_WKHTMLTOPDF="True"
|
|
#EL_PORT="8069"
|
|
#EL_LONGPOLLING_PORT="8072"
|
|
#EL_SUPERADMIN="admin"
|
|
#EL_CONFIG_FILE="${EL_HOME}/config.conf"
|
|
#EL_CONFIG="${EL_USER}"
|
|
#EL_MINIMAL_ADDONS="False"
|
|
#EL_INSTALL_NGINX="True"
|
|
|
|
Red='\033[0;31m' # Red
|
|
Color_Off='\033[0m' # Text Reset
|
|
|
|
./script/generate_config.sh
|
|
|
|
#echo -e "\n---- Install Odoo with addons module ----"
|
|
#git submodule update --init
|
|
|
|
# Generate empty addons if missing
|
|
path_addons_addons="./addons.odoo${EL_ODOO_VERSION}/addons"
|
|
if [[ ! -d "${path_addons_addons}" ]]; then
|
|
mkdir -p "${path_addons_addons}"
|
|
fi
|
|
|
|
PYENV_PATH=~/.pyenv
|
|
# example, 3.7.8 will be 3.7 into PYTHON_VERSION_MAJOR
|
|
PYTHON_VERSION_MAJOR=$(echo "$EL_PYTHON_VERSION" | sed 's/\.[^\.]*$//')
|
|
PYENV_VERSION_PATH=${PYENV_PATH}/versions/${EL_PYTHON_VERSION}
|
|
PYTHON_EXEC=${PYENV_VERSION_PATH}/bin/python
|
|
VENV_PATH=./.venv
|
|
LOCAL_PYTHON_EXEC=${VENV_PATH}/bin/python
|
|
VENV_REPO_PATH=${VENV_PATH}/repo
|
|
VENV_MULTILINGUAL_MARKDOWN_PATH=${VENV_PATH}/multilang_md.py
|
|
#POETRY_PATH=~/.local/bin/poetry
|
|
POETRY_PATH=${VENV_PATH}/bin/poetry
|
|
|
|
if [[ ! -n "${DOCKER_BUILD}" ]]; then
|
|
echo "Python path version home"
|
|
echo ${PYENV_VERSION_PATH}
|
|
echo "Python path version local"
|
|
echo ${LOCAL_PYTHON_EXEC}
|
|
|
|
if [[ ! -d "${PYENV_PATH}" ]]; then
|
|
echo -e "\n---- Installing pyenv in ${PYENV_PATH} ----"
|
|
# export PYENV_GIT_TAG=v2.3.35
|
|
# To change version
|
|
# rm ~/.pyenv to uninstall it
|
|
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
|
|
fi
|
|
|
|
echo -e "\n---- Export pyenv in ${PYENV_PATH} ----"
|
|
export PATH="${PYENV_PATH}/bin:$PATH"
|
|
eval "$(pyenv init -)"
|
|
eval "$(pyenv virtualenv-init -)"
|
|
|
|
if [[ ! -d "${PYENV_VERSION_PATH}" ]]; then
|
|
echo -e "\n---- Installing python ${PYTHON_VERSION} with pyenv in ${PYENV_VERSION_PATH} ----"
|
|
yes n|pyenv install ${PYTHON_VERSION}
|
|
if [[ $retVal -ne 0 ]]; then
|
|
echo -e "${Red}Error${Color_Off} when installing pyenv"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
pyenv local ${PYTHON_VERSION}
|
|
|
|
if [[ ! -d ${VENV_PATH} ]]; then
|
|
echo -e "\n---- Create Virtual environment Python ----"
|
|
if [[ -e ${PYTHON_EXEC} ]]; then
|
|
${PYTHON_EXEC} -m venv .venv
|
|
retVal=$?
|
|
if [[ $retVal -ne 0 ]]; then
|
|
echo "Virtual environment, error when creating .venv"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Missing pyenv, please refer installation guide."
|
|
exit 1
|
|
fi
|
|
fi
|
|
source ./.venv/bin/activate
|
|
else
|
|
mkdir .venv
|
|
fi
|
|
|
|
#if [[ ! -d "${POETRY_PATH}" ]]; then
|
|
# # Delete directory ~/.poetry and .venv to force update to new version
|
|
# echo -e "\n---- Installing poetry ${LOCAL_PYTHON_EXEC} for reliable python package ----"
|
|
# # TODO self update poetry with `poetry self update ${POETRY_VERSION}`
|
|
# curl -sSL https://install.python-poetry.org | POETRY_VERSION=${EL_POETRY_VERSION} ${LOCAL_PYTHON_EXEC} - -y
|
|
#fi
|
|
|
|
# Install git-repo if missing
|
|
if [[ ! -f ${VENV_REPO_PATH} ]]; then
|
|
echo "\n---- Install git-repo from Google APIS ----"
|
|
curl https://storage.googleapis.com/git-repo-downloads/repo > ${VENV_REPO_PATH}
|
|
chmod +x ${VENV_REPO_PATH}
|
|
sed -i 1d ${VENV_REPO_PATH}
|
|
PYTHON_HASHBANG="#!./.venv/bin/python"
|
|
sed -i "1 i ${PYTHON_HASHBANG}" ${VENV_REPO_PATH}
|
|
fi
|
|
|
|
# Make .venv active
|
|
if [[ "${OSTYPE}" == "darwin"* ]]; then
|
|
echo -e "=======>source .venv/bin/activate here!!! <==============="
|
|
source .venv/bin/activate
|
|
fi
|
|
echo -e "\n---- Installing poetry dependency ----"
|
|
${VENV_PATH}/bin/pip install --upgrade pip
|
|
# Force python instead of changing env
|
|
#/home/"${USER}"/.poetry/bin/poetry env use ${LOCAL_PYTHON_EXEC}
|
|
# source $HOME/.poetry/env
|
|
#${LOCAL_PYTHON_EXEC} ~/.poetry/bin/poetry env use ${VENV_PATH}/bin/python3
|
|
#${LOCAL_PYTHON_EXEC} ~/.poetry/bin/poetry install
|
|
#${POETRY_PATH} install
|
|
|
|
# Delete artifacts created by pip, cause error in next "poetry install"
|
|
if [[ ! -f "${POETRY_PATH}" ]]; then
|
|
${VENV_PATH}/bin/pip install poetry==${EL_POETRY_VERSION}
|
|
${VENV_PATH}/bin/poetry --version
|
|
# Fix broken poetry by installing ignored dependence
|
|
# ${VENV_PATH}/bin/pip install vatnumber
|
|
# ${VENV_PATH}/bin/pip install suds-jurko
|
|
# ${VENV_PATH}/bin/poetry lock --no-update
|
|
# To fix keyring problem when installation is blocked, use
|
|
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
|
|
${VENV_PATH}/bin/poetry install --no-root -vvv
|
|
retVal=$?
|
|
if [[ $retVal -ne 0 ]]; then
|
|
echo "Poetry installation error with status ${retVal}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Delete artifacts created by pip, cause error in next "poetry install"
|
|
rm -rf artifacts
|
|
|
|
# Link for dev
|
|
echo -e "\n---- Add link dependency in site-packages of Python ----"
|
|
ln -fs "${EL_HOME_ODOO}/odoo" "${EL_HOME}/.venv/lib/python${PYTHON_VERSION_MAJOR}/site-packages/"
|