[fix] Upgrade and restore

This commit is contained in:
ljf 2018-12-16 19:41:40 +01:00
parent 1aeb936572
commit b557245b5e
7 changed files with 91 additions and 39 deletions

View file

@ -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": {

View file

@ -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,8 +21,18 @@ function setup_files() {
sed -i 's/<a[^>]*>Documentation<\/a>//g' $final_path/$APPNAME/addons/web/static/src/xml/base.xml
sed -i 's/<a[^>]*>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
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
@ -35,9 +42,7 @@ function setup_files() {
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
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
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

View file

@ -33,7 +33,11 @@ ynh_configure () {
local TEMPLATE=$1
local DEST=$2
mkdir -p "$(dirname $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
}

View file

@ -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 "/"

View file

@ -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

View file

@ -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

View file

@ -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