# HG changeset patch # User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr> # Date 1520943247 -3600 # Tue Mar 13 13:14:07 2018 +0100 # Node ID 904e99057a1bbdbcc938728202caee874268b884 # Parent 8a08f47d4926b957787fc0a5622665d169579213 change start to be compatible with odoo 11.0 and more compatible with odoo 10.0 diff --git a/VERSION b/VERSION --- a/VERSION +++ b/VERSION @@ -1,1 +1,1 @@ -2.10 +2.11 diff --git a/do_tests b/do_tests --- a/do_tests +++ b/do_tests @@ -13,7 +13,7 @@ # # - access to pg database # -# Version 2.10 +# Version 2.11 here=$(dirname $0) project_home=$(cd $here && cd .. && echo $PWD) diff --git a/docker_build b/docker_build --- a/docker_build +++ b/docker_build @@ -3,7 +3,7 @@ # Create docker script -# template version 2.10 +# template version 2.11 # TODO add a way to bypass the value, maybe with a key in the setup.cfg file here=$(dirname $0) diff --git a/run_tests b/run_tests --- a/run_tests +++ b/run_tests @@ -5,7 +5,7 @@ # # Either provide the name of the database (first argument) or it will default to <project>_test # The DB user can be overriden by setting ODOO_SCRIPTS_DB_USER. -# Version 2.10 +# Version 2.11 here=$(dirname $0) project_home=$(cd $here && cd .. && echo $PWD) tested_modules=$(python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print ','.join(c.get('odoo_scripts', 'module_list_tests', '').split())") diff --git a/setup.cfg b/setup.cfg --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 2.10 +current_version = 2.11 parse = (?P<major>\d+)\.(?P<minor>\d+) serialize = {major}.{minor} diff --git a/start b/start --- a/start +++ b/start @@ -5,76 +5,78 @@ # # You can set ODOO_DATA_DIR and ODOO_DB_HOST if you want to avoid using the default value ($HOME/var/tmp and localhost) # -# Version 2.10 +# Version 2.11 here=$(dirname $0) project_home=$(cd $here && cd .. && echo $PWD) -echo "Starting odoo for development" -python=python -# module_path will be .../<directory>/openerp/__init__.pyc -module_path=$(python -B -c "import os;import openerp;print os.path.abspath(openerp.__file__)") -# By default, assume the Odoo executable is called "openerp-server". -# TODO Improve this detection and make it so Odoo 10 ("odoo-bin") is the default. -odoo_bin=openerp-server -if test -z "$module_path"; +python="/usr/bin/env python" +# odoo7, odoo8, odoo10, odoo11 or bzr +ODOO_TYPE=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print c.get('odoo_scripts', 'odoo_type', 'odoo8')") + +echo "INFO - Starting odoo for development" + +# +# Do some magic to find the odoo command to run +# + +# First test if odoo command exists +echo "DEBUG - Trying odoo command" +if [ -x "$(command -v odoo)" ]; then - virtualenv_name=$(basename $(readlink -f $(dirname start))) - echo "No odoo found, trying $virtualenv_name virtualenvwrapper" - # assume you use virtualenvwrapper, and try the same env name as the project - python=$WORKON_HOME/$virtualenv_name/bin/python - if [ -e $python ]; + odoo_bin=odoo + echo "DEBUG - Odoo command found" +else + echo "DEBUG - No odoo command found" + echo "DEBUG - Trying import in python" + if [ "$ODOO_TYPE" = "odoo11" ] || [ "$ODOO_TYPE" = "odoo10" ]; then - module_path=$($python -B -c "import os;import openerp;print os.path.abspath(openerp.__file__)") + print_statement="import os;import odoo;print os.path.abspath(odoo.__file__)" + else + print_statement="import os;import openerp;print os.path.abspath(openerp.__file__)" + fi + # module_path will be .../<directory>/openerp/__init__.pyc + module_path=$(python -B -c "$print_statement" 2> /dev/null) + if [ "$ODOO_TYPE" = "odoo11" ] || [ "$ODOO_TYPE" = "odoo10" ]; + then + odoo_bin=odoo-bin + else + odoo_bin=openerp-server fi if test -z "$module_path"; then - echo "No odoo found, trying /opt/odoo/sources/odoo/odoo-bin" - if test -e "/opt/odoo/sources/odoo/odoo-bin"; - then - python=/usr/bin/python - module_path="/opt/odoo/sources/odoo/odoo/__init__.py" - odoo_bin=odoo-bin - else - echo "No odoo-bin found, trying /opt/odoo/sources/odoo/openerp-server" - if test -e "/opt/odoo/sources/odoo/openerp-server"; - then - python=/usr/bin/python - module_path="/opt/odoo/sources/odoo/openerp/__init__.py" - odoo_bin=openerp-server - else - echo "No odoo found, did you activate your env?" - exit 1 - fi - fi + echo "DEBUG - No odoo found by using module path" + virtualenv_name=$(basename $(readlink -f $(dirname start))) + echo "DEBUG - Trying $virtualenv_name virtualenvwrapper" + # assume you use virtualenvwrapper, and try the same env name as the project + venv_python=$WORKON_HOME/$virtualenv_name/bin/python + if [ -e "$venv_python" ]; + then + module_path=$($venv_python -B -c "$print_statement" 2> /dev/null) + fi + if test -z "$module_path"; + then + echo "DEBUG - No odoo found by using virtuenvwrapper" + echo "DEBUG - Trying in /opt/odoo/sources/odoo" + if test -e "/opt/odoo/sources/odoo/$odoo_bin"; + then + echo "DEBUG - Found in /opt/odoo/sources/odoo" + odoo_bin=/opt/odoo/sources/odoo/$odoo_bin + else + echo "FATAL - No odoo found" + echo "INFO - Maybe you forgot to activate your environment?" + exit 1 + fi + else + echo "DEBUG - Odoo found by using virtuenvwrapper" + fi + else + echo "DEBUG - Odoo found by using module path" fi + fi -odoo=$(dirname $(dirname $module_path)) - -if expr match $odoo ^.*\.egg$ ; -then - odoo="/usr/local/bin" - odoo_addons_path=${ODOO_ADDONS_PATH:-/opt/odoo/sources/odoo} -else - odoo_addons_path=${ODOO_ADDONS_PATH:-$odoo} -fi -echo "INFO - Odoo directory: $odoo" -echo "INFO - Odoo addons directory: $odoo_addons_path" -if [ -e "$odoo/.git" ]; -then - odoo_version="git $(cd $odoo && git rev-parse HEAD)" -elif [ -e "$odoo/.bzr" ]; -then - odoo_version="bzr $(cd $odoo && bzr revno)" -elif [ -e "$odoo/.hg" ]; -then - odoo_version="hg $(cd $odoo && hg id)" -else - odoo_version="Unknown" -fi -echo "INFO - Odoo version: $odoo_version" - -# odoo7, odoo8 or bzr -ODOO_TYPE=$(python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print c.get('odoo_scripts', 'odoo_type', 'odoo8')") +# +# Try to handle argument to this program to give them back to odoo without duplicating them +# args=$* if [ "$ODOO_TYPE" = "odoo8" ]; @@ -108,9 +110,16 @@ then addons_path="--addons-path=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(','.join(['$HOME/src/openobject-server/openerp/addons','$HOME/src/openobject-addons','$HOME/src/openerp-web/addons']+['${project_home}/'+line for line in c.get('odoo_scripts', 'addon_dirs', '').split()]))")" else - addons_path="--addons-path=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(','.join(['$odoo_addons_path/addons']+['${project_home}/'+line for line in c.get('odoo_scripts', 'addon_dirs', '').split()]))")" + # it is not necessary to give odoo its own addons in path + addons_path="--addons-path=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(','.join(['${project_home}/'+line for line in c.get('odoo_scripts', 'addon_dirs', '').split()]))")" fi fi fi -echo "DEBUG - command line is: $python $odoo/$odoo_bin $config $db_host $data_dir $addons_path $args" -$python $odoo/$odoo_bin $config $db_host $data_dir $addons_path $args + +# +# Start odoo +# + +echo "INFO - Version: $($odoo_bin --version)" +echo "DEBUG - command line is: $odoo_bin $config $db_host $data_dir $addons_path $args" +$odoo_bin $config $db_host $data_dir $addons_path $args