From 732919b6c49b1871749a54e1c4c4d07533544246 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Thu, 19 Jan 2017 16:13:52 +0100 Subject: [PATCH] Fix regression --- scripts/_common.sh | 8 +++----- scripts/install | 2 ++ scripts/upgrade | 18 ++++++++++-------- scripts/upgrade.d/owncloud.sh | 2 ++ scripts/upgrade.d/upgrade.generic.sh | 2 ++ 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index e4b9e79..9a09472 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -6,15 +6,10 @@ APPNAME="nextcloud" # Nextcloud version LAST_VERSION=$(grep "VERSION=" "upgrade.d/upgrade.last.sh" | cut -d= -f2) -NEXTCLOUD_SOURCE_SHA256=$(grep "NEXTCLOUD_SOURCE_SHA256=" "upgrade.d/upgrade.last.sh" | cut -d= -f2) - # Package name for Nextcloud dependencies DEPS_PKG_NAME="nextcloud-deps" -# Remote URL to fetch Nextcloud tarball -NEXTCLOUD_SOURCE_URL="https://download.nextcloud.com/server/releases/nextcloud-${LAST_VERSION}.tar.bz2" - # App package root directory should be the parent folder PKGDIR=$(cd ../; pwd) @@ -25,6 +20,9 @@ PKGDIR=$(cd ../; pwd) # Download and extract Nextcloud sources to the given directory # usage: extract_nextcloud DESTDIR [AS_USER] extract_nextcloud() { + # Remote URL to fetch Nextcloud tarball + NEXTCLOUD_SOURCE_URL="https://download.nextcloud.com/server/releases/nextcloud-${VERSION}.tar.bz2" + local DESTDIR=$1 local AS_USER=${2:-admin} diff --git a/scripts/install b/scripts/install index 8fd9360..4897649 100755 --- a/scripts/install +++ b/scripts/install @@ -104,6 +104,8 @@ _exec_occ() { sudo chown -R $app: "$DESTDIR" "$DATADIR" # Retrieve Nextcloud sources +VERSION=$LAST_VERSION +NEXTCLOUD_SOURCE_SHA256=$(grep "NEXTCLOUD_SOURCE_SHA256=" "upgrade.d/upgrade.last.sh" | cut -d= -f2) extract_nextcloud "$DESTDIR" "$app" # Install Nextcloud using a temporary admin user diff --git a/scripts/upgrade b/scripts/upgrade index 031fec5..e1403e5 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -15,15 +15,15 @@ dbuser=$app # Backup the current version of the app, restore it if the upgrade fails backup_number=1 old_backup_number=2 -if sudo yunohost backup list | grep -q $app-before-upgrade1 > /dev/null 2>&1; then # Vérifie l'existence d'une archive déjà numéroté à 1. +if sudo yunohost backup list | grep -q $real_app-before-upgrade1 > /dev/null 2>&1; then # Vérifie l'existence d'une archive déjà numéroté à 1. backup_number=2 # Et passe le numéro de l'archive à 2 old_backup_number=1 fi ynh_app_setting_set $app backup_core_only 1 # Indique au backup/restore de ne pas sauvegarder le dossier de data, uniquement le core de nextcloud. -sudo yunohost backup create --ignore-hooks --apps $app --name $app-before-upgrade$backup_number # Créer un backup différent de celui existant. +sudo yunohost backup create --ignore-hooks --apps $real_app --name $real_app-before-upgrade$backup_number # Créer un backup différent de celui existant. if [ "$?" -eq 0 ]; then # Si le backup est un succès, supprime l'archive précédente. - if sudo yunohost backup list | grep -q $app-before-upgrade$old_backup_number > /dev/null 2>&1; then # Vérifie l'existence de l'ancienne archive avant de la supprimer, pour éviter une erreur. - sudo yunohost backup delete $app-before-upgrade$old_backup_number > /dev/null + if sudo yunohost backup list | grep -q $real_app-before-upgrade$old_backup_number > /dev/null 2>&1; then # Vérifie l'existence de l'ancienne archive avant de la supprimer, pour éviter une erreur. + sudo yunohost backup delete $real_app-before-upgrade$old_backup_number > /dev/null fi else # Si le backup a échoué ynh_die "Backup failed, the upgrade process was aborted." @@ -38,9 +38,9 @@ EXIT_PROPERLY () { trap '' EXIT set +eu echo "Upgrade failed." >&2 - if sudo yunohost backup list | grep -q $app-before-upgrade$backup_number > /dev/null 2>&1; then # Vérifie l'existence de l'archive avant de supprimer l'application et de restaurer - sudo yunohost app remove $app # Supprime l'application avant de la restaurer. - sudo yunohost backup restore --ignore-hooks $app-before-upgrade$backup_number --apps $app --force # Restore the backup if upgrade failed + if sudo yunohost backup list | grep -q $real_app-before-upgrade$backup_number > /dev/null 2>&1; then # Vérifie l'existence de l'archive avant de supprimer l'application et de restaurer + sudo yunohost app remove $real_app # Supprime l'application avant de la restaurer. + sudo yunohost backup restore --ignore-hooks $real_app-before-upgrade$backup_number --apps $real_app --force # Restore the backup if upgrade failed ynh_die "The app was restored to the way it was before the failed upgrade." fi } @@ -51,7 +51,7 @@ trap EXIT_PROPERLY EXIT if [[ $YNH_APP_INSTANCE_NAME != $app ]]; then # Si le nom de l'app donné lors de la commande n'est pas nextcloud, vérifie si c'est owncloud pour lancer la migration. [[ $YNH_APP_ID == owncloud ]] \ || ynh_die "Incompatible application to migrate to Nextcloud" - real_app=$YNH_APP_INSTANCE_NAME # real_app prend le nom de owncloud. +# real_app=$YNH_APP_INSTANCE_NAME # real_app prend le nom de owncloud. ./upgrade.d/owncloud.sh # Prépare la migration de owncloud vers nextcloud. else real_app=$app @@ -137,10 +137,12 @@ _exec_occ() { major_version=${LAST_VERSION%%.*} # La version majeure correspond à la première partie du numéro de version. actual_version=$(cat "$DESTDIR/version.php" | grep OC_VersionString | cut -d\' -f2) # Relève le numéro de version de l'instance nextcloud installée actual_major_version=${actual_version%%.*} +_exec_occ -V # Affiche la version while [ "$major_version" -ne "$actual_major_version" ]; do # Si la version majeure actuelle ne correspond à la dernière version majeure. ./upgrade.d/upgrade.$actual_major_version.sh # Exécute la mise à jour vers la version majeure suivante actual_version=$(cat "$DESTDIR/version.php" | grep OC_VersionString | cut -d\' -f2) # Relève le nouveau numéro de version, après mise à jour. actual_major_version=${actual_version%%.*} + _exec_occ -V # Affiche la version done if [ "$LAST_VERSION" != "$actual_version" ] # Si la version actuelle ne correspond à la dernière version, une mise à jour est nécessaire pour passer à la dernière version mineure. then diff --git a/scripts/upgrade.d/owncloud.sh b/scripts/upgrade.d/owncloud.sh index 308a498..7da1f34 100755 --- a/scripts/upgrade.d/owncloud.sh +++ b/scripts/upgrade.d/owncloud.sh @@ -18,6 +18,8 @@ dbuser=$app (sudo yunohost app list --installed -f "$app" | grep -q id) \ && ynh_die "Nextcloud is already installed" +echo "Migration to nextcloud." >&2 + # retrieve ownCloud app settings real_app=$YNH_APP_INSTANCE_NAME # real_app prend le nom de owncloud. domain=$(ynh_app_setting_get "$real_app" domain) diff --git a/scripts/upgrade.d/upgrade.generic.sh b/scripts/upgrade.d/upgrade.generic.sh index a80d706..4765259 100755 --- a/scripts/upgrade.d/upgrade.generic.sh +++ b/scripts/upgrade.d/upgrade.generic.sh @@ -13,6 +13,8 @@ COMMON_UPGRADE () { DATADIR="/home/yunohost.app/$app/data" domain=$(ynh_app_setting_get "$YNH_APP_INSTANCE_NAME" domain) # Utilise $YNH_APP_INSTANCE_NAME au lieu de $app pour utiliser la config de owncloud en cas de migration + echo -e "\nUpdate to nextcloud $VERSION" >&2 + # Retrieve new Nextcloud sources in a temporary directory TMPDIR=$(mktemp -d) extract_nextcloud "$TMPDIR" # Télécharge nextcloud, vérifie sa somme de contrôle et le décompresse.