diff --git a/manifest.json b/manifest.json index 0233b0f..6bc8b0c 100644 --- a/manifest.json +++ b/manifest.json @@ -13,7 +13,7 @@ "previous_maintainers": { "name": "scith" }, - "version": "12.0-1", + "version": "12.0-5", "url": "https://github.com/YunoHost-Apps/libreerp_ynh", "license": "LGPL-3.0,AGPL-3.0", "requirements": { diff --git a/scripts/_common.sh b/scripts/_common.sh index 40dd478..5007306 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -6,10 +6,7 @@ export APPNAME="libreerp" export FORKNAME="odoo" DEPENDENCIES="curl postgresql xfonts-75dpi xfonts-base wkhtmltopdf node-less python3-dev gcc libldap2-dev libssl-dev libsasl2-dev python3-pip python3-dev python3-venv python3-wheel libxslt-dev libzip-dev python3-setuptools python-virtualenv python-wheel python-setuptools libjpeg-dev zlib1g-dev" -function setup_files() { - - ynh_setup_source $final_path/$APPNAME $app_version - +function debranding() { # Remove Odoo references to avoid trademark issue if [ -d $final_path/$APPNAME/$FORKNAME ]; then python_app=$final_path/$APPNAME/$FORKNAME @@ -24,20 +21,28 @@ function setup_files() { sed -i 's/]*>Documentation<\/a>//g' $final_path/$APPNAME/addons/web/static/src/xml/base.xml sed -i 's/]*>Support<\/a>//g' $final_path/$APPNAME/addons/web/static/src/xml/base.xml cp ../conf/logo_type.png $python_app/addons/base/static/img/logo_white.png + +} +function setup_files() { + + ynh_setup_source $final_path/$APPNAME $app_version + debranding mkdir -p $final_path/custom-addons chown -R $app:$app $final_path - ynh_configure server.conf $conf_file - chown $app:$app $conf_file - - # Autoinstall the LDAP auth module - if ls $final_path/$APPNAME/$FORKNAME-bin > /dev/null ; then - ynh_replace_string "^{$" "{'auto_install': True," ${final_path}/$APPNAME/addons/auth_ldap/__manifest__.py - else - ynh_replace_string "'auto_install': False" "'auto_install': True" ${final_path}/$APPNAME/addons/auth_ldap/__openerp__.py - fi - touch /var/log/$app.log chown $app:$app /var/log/$app.log + + if [ ! -f $conf_file ]; then + ynh_configure server.conf $conf_file + chown $app:$app $conf_file + + # Autoinstall the LDAP auth module + if ls $final_path/$APPNAME/$FORKNAME-bin > /dev/null ; then + ynh_replace_string "^{$" "{'auto_install': True," ${final_path}/$APPNAME/addons/auth_ldap/__manifest__.py + else + ynh_replace_string "'auto_install': False" "'auto_install': True" ${final_path}/$APPNAME/addons/auth_ldap/__openerp__.py + fi + fi } # Install dependencies @@ -47,7 +52,14 @@ function install_dependencies() { if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then # The debian package has a bug so we deploy a more recent version - ynh_setup_source /usr/ + if [ -f '../manifest.json' ] ; then + ynh_setup_source /usr/ + else + OLD_YNH_CWD=$YNH_CWD + YNH_CWD=$YNH_CWD/../settings/conf + ynh_setup_source /usr/ + YNH_CWD=$OLD_YNH_CWD + fi fi pushd $final_path if grep "python3" $final_path/$APPNAME/$FORKNAME-bin ; then diff --git a/scripts/_future.sh b/scripts/_future.sh index 366de51..c0d4dc7 100644 --- a/scripts/_future.sh +++ b/scripts/_future.sh @@ -33,7 +33,11 @@ ynh_configure () { local TEMPLATE=$1 local DEST=$2 mkdir -p "$(dirname $DEST)" - ynh_render_template "${YNH_CWD}/../conf/$TEMPLATE.j2" "$DEST" + if [ -f '../manifest.json' ] ; then + ynh_render_template "${YNH_CWD}/../conf/$TEMPLATE.j2" "$DEST" + else + ynh_render_template "${YNH_CWD}/../settings/conf/$TEMPLATE.j2" "$DEST" + fi } ynh_configure_nginx () { @@ -323,3 +327,48 @@ ynh_del_swap () { rm /swap fi } + +# Checks the app version to upgrade with the existing app version and returns: +# - UPGRADE_APP if the upstream app version has changed +# - UPGRADE_PACKAGE if only the YunoHost package has changed +# +## It stops the current script without error if the package is up-to-date +# +# This helper should be used to avoid an upgrade of an app, or the upstream part +# of it, when it's not needed +# +# To force an upgrade, even if the package is up to date, +# you have to set the variable YNH_FORCE_UPGRADE before. +# example: sudo YNH_FORCE_UPGRADE=1 yunohost app upgrade MyApp + +# usage: ynh_check_app_version_changed +ynh_check_app_version_changed () { + local force_upgrade=${YNH_FORCE_UPGRADE:-0} + local package_check=${PACKAGE_CHECK_EXEC:-0} + + # By default, upstream app version has changed + local return_value="UPGRADE_APP" + + local current_version=$(ynh_read_json "/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json" "version" || echo 1.0) + local current_upstream_version="${current_version/~ynh*/}" + local update_version=$(ynh_read_manifest "version" || echo 1.0) + local update_upstream_version="${update_version/~ynh*/}" + + if [ "$current_version" == "$update_version" ] ; then + # Complete versions are the same + if [ "$force_upgrade" != "0" ] + then + echo "Upgrade forced by YNH_FORCE_UPGRADE." >&2 + unset YNH_FORCE_UPGRADE + elif [ "$package_check" != "0" ] + then + echo "Upgrade forced for package check." >&2 + else + ynh_die "Up-to-date, nothing to do" 0 + fi + elif [ "$current_upstream_version" == "$update_upstream_version" ] ; then + # Upstream versions are the same, only YunoHost package versions differ + return_value="UPGRADE_PACKAGE" + fi + echo $return_value +} diff --git a/scripts/install b/scripts/install index d268c6c..ed4884c 100644 --- a/scripts/install +++ b/scripts/install @@ -30,7 +30,6 @@ export port_chat=$(ynh_find_port 8072) # CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS #================================================= test ! -e "$final_path" || ynh_die "This path already contains a folder" -ynh_webpath_available $domain "/" ynh_webpath_register $app $domain "/" diff --git a/scripts/remove b/scripts/remove index 83843ec..92462ab 100644 --- a/scripts/remove +++ b/scripts/remove @@ -11,12 +11,14 @@ app=$YNH_APP_INSTANCE_NAME # Retrieve app settings domain=$(ynh_app_setting_get "$app" domain) final_path=$(ynh_app_setting_get "$app" final_path) +conf_file=$(ynh_app_setting_get "$app" conf_file) yunohost service stop $app yunohost service remove $app ynh_psql_remove_db $app $app ynh_secure_remove "$final_path" +ynh_secure_remove "$conf_file" ynh_remove_app_dependencies diff --git a/scripts/restore b/scripts/restore index 9202517..ac1e39f 100644 --- a/scripts/restore +++ b/scripts/restore @@ -19,6 +19,13 @@ export db_pass=$(ynh_app_setting_get $app psqlpwd) export final_path=$(ynh_app_setting_get $app final_path) export conf_file=$(ynh_app_setting_get $app conf_file) export is_public=0 +export bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$FORKNAME-bin" +if [ "$app_version" = "9" ]; then + bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$FORKNAME.py" +fi +if [ "$app_version" = "8" ]; then + bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$FORKNAME.py" +fi #================================================= # CHECK IF THE APP CAN BE RESTORED diff --git a/scripts/upgrade b/scripts/upgrade index 0d3776e..1008026 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -19,17 +19,18 @@ source _common.sh export app=$YNH_APP_INSTANCE_NAME export domain=$(ynh_app_setting_get "$app" domain) export app_version=$(ynh_app_setting_get "$app" app_version) -export is_master=$(ynh_app_setting_get "$app" is_master) export oca=$(ynh_app_setting_get "$app" oca) export port=$(ynh_app_setting_get $app port) +export port_chat=$(ynh_app_setting_get $app port_chat) export is_public=0 -export major_upgrade=$(ynh_app_setting_get $app major_upgrade) +export final_path=$(ynh_app_setting_get $app final_path) +export conf_file=$(ynh_app_setting_get $app conf_file) #================================================= # CHECK VERSION #================================================= -ynh_abort_if_up_to_date +ynh_check_app_version_changed #================================================= # STANDARD UPGRADE STEPS @@ -50,24 +51,6 @@ ynh_abort_if_errors #================================================= # STEP Migrations #================================================= -# Zamentur version https://github.com/zamentur/odoo_ynh/commit/cdeb9afbf218431781f752dedfbf4247afbd5b44 -if ynh_version_le "9.0-0" ; then - # set new args - app_version=${app_version:-$(ynh_app_setting_get "$app" version)} - port=${port:-8069} - oca=${oca:-false} - ynh_save_args app_version oca is_master port - - # Install official debian package - install_dependencies -fi - -if ynh_version_le "11.0-1" ; then - # By default we don't upgrade to major version - major_upgrade=${major_upgrade:-0} - ynh_save_args major_upgrade -fi - ynh_system_user_create $app setup_files install_dependencies