1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/nextcloud_ynh.git synced 2024-09-03 19:55:57 +02:00

Merge branch 'testing' into v2_PostgreSQL

This commit is contained in:
Éric Gaspar 2024-01-26 19:23:35 +01:00
commit 8204d8afaf
25 changed files with 108 additions and 207 deletions

View file

@ -1,2 +1,7 @@
#FIX this pre_upgrade notification/migration/warning
Starting in Nextcloud 28.0.1~ynh2, we are deprecating support for MariaDB. We are moving from MariaDB to PostgreSQL database.
If you are upgrading to a new major version of Nextcloud, please make sure that your Nextcloud apps are up to date from Nextcloud's administration panel beforehand.
Additionally, if you installed specific Nextcloud apps, we recommend making sure that they are compatible with the new major version. YunoHost will attempt to check this automatically at the very beginning of the upgrade, but a manual check doesn't hurt either. For Nextcloud 28, this forum thread might be helpful : <https://help.nextcloud.com/t/apps-not-compatible-with-nc-28/176234>.

View file

@ -55,6 +55,38 @@ ram.runtime = "512M"
default = false
[resources]
[resources.sources]
[resources.sources.main]
url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.1.tar.bz2'
sha256 = '2f80735b443082272fe6a3b5e32137957f1fc448c75342b94b5200b29725f3a4'
[resources.sources.27]
url = 'https://download.nextcloud.com/server/releases/nextcloud-27.0.0.tar.bz2'
sha256 = '3d312a09b9345ac058758dd7b4059bf3cf0b1f0f1d747251b6fac3585ba6533f'
prefetch = false
[resources.sources.26]
url = 'https://download.nextcloud.com/server/releases/nextcloud-26.0.0.tar.bz2'
sha256 = 'f163150363aee9366ecb5cd5259bf6756ed4f073cea78b5fa515cada7a0d0c3d'
prefetch = false
[resources.sources.25]
url = 'https://download.nextcloud.com/server/releases/nextcloud-25.0.0.tar.bz2'
sha256 = '2c05ac9d7b72b44ef8b3d2ae03ff0fd6121e254b8054556f5163bd8760dd8f49'
prefetch = false
[resources.sources.24]
url = 'https://download.nextcloud.com/server/releases/nextcloud-24.0.0.tar.bz2'
sha256 = '176cb5620f20465fb4759bdf3caaebeb7acff39d6c8630351af9f8738c173780'
prefetch = false
[resources.sources.23]
url = 'https://download.nextcloud.com/server/releases/nextcloud-23.0.0.tar.bz2'
sha256 = 'c37592abc3b65c8fd28459281a24f414b87af52fc8c2ea979be3f9be75d01a2c'
prefetch = false
[resources.system_user]
allow_email = true
@ -77,4 +109,4 @@ ram.runtime = "512M"
[resources.database]
type = "postgresql"

View file

@ -54,7 +54,7 @@ fi
#=================================================
ynh_script_progression --message="Configuring permissions..." --weight=1
# Temporary fix for the API permission
# Temporary fix for the API permission (workaround for https://github.com/YunoHost/issues/issues/2294 )
ynh_permission_url --permission="api" --url="re:$new_domain\/.well-known\/.*" --auth_header="false" --clear_urls
#=================================================

View file

@ -12,18 +12,6 @@ ynh_app_setting_set --app=$app --key=phpflags --value=$phpflags
#=================================================
ynh_script_progression --message="Setting up source files..." --weight=5
# Load the last available version
source upgrade.d/upgrade.last.sh
# Create an app.src for the last version of nextcloud
cat > ../conf/app.src << EOF
SOURCE_URL=https://download.nextcloud.com/server/releases/nextcloud-$next_version.tar.bz2
SOURCE_SUM=$nextcloud_source_sha256
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.bz2
SOURCE_IN_SUBDIR=true
EOF
# Enable YunoHost patches on Nextcloud sources
cp -a ../sources/patches_last_version/* ../sources/patches
# Download, check integrity, uncompress and patch the source from app.src

View file

@ -19,11 +19,12 @@ if [ -z "${phpflags:-}" ]; then
ynh_app_setting_set --app=$app --key=phpflags --value=$phpflags
fi
# Delete existing ini configuration file (backward compatibility)
if [ -f /etc/php/$YNH_PHP_VERSION/fpm/conf.d/20-$app.ini ]; then
ynh_secure_remove --file=/etc/php/$YNH_PHP_VERSION/fpm/conf.d/20-$app.ini
if ynh_compare_current_package_version --comparison lt --version 22.2~ynh1
then
ynh_die --message="Upgrading from Nextcloud < 22.2 is not supported anymore. You should first upgrade to 22.2 using: yunohost app upgrade nextcloud -u https://github.com/YunoHost-Apps/nextcloud_ynh/tree/41f5f902e7c7cd3c30a6793020562ba98b9bf3e9"
fi
#=================================================
# SPECIFIC UPGRADE
#=================================================
@ -31,8 +32,13 @@ fi
# VERSION TO THE NEXT ONE
#=================================================
current_version=$(grep OC_VersionString "$install_dir/version.php" | cut -d\' -f2)
current_major_version=${current_version%%.*}
filter_boring_occ_warnings() {
# Filter stupid and boring messages such as the progress bar looking like:
# 3/3 [============================] 100% Starting ...
# and being pretty much useless, as well as the annoying warning about "only a limited number of commands" etc...
sed -E 's@\s*([0-9]+\/[0-9]+\s+\[(-|>|=)+\]\s+[0-9]+%|\s*Starting ...|Nextcloud or one of the apps require upgrade - only a limited number of commands are available|You may use your browser or the occ upgrade command to do the upgrade)@@g'
}
# Define a function to execute commands with `occ`
exec_occ() {
@ -43,23 +49,24 @@ exec_occ() {
elif [ $current_major_version -ge 24 ]
then
NEXTCLOUD_PHP_VERSION="8.1"
elif [ $current_major_version -ge 18 ]
then
NEXTCLOUD_PHP_VERSION="7.4"
else
NEXTCLOUD_PHP_VERSION="7.1"
NEXTCLOUD_PHP_VERSION="7.4"
fi
# NB : be super careful when designing this part of the code, because calling ynh_install_app_dependencies
# NB : be super careful when designing this part of the code, because calling ynh_install_app_dependencies
# will do magic regarding php configuration and $phpversion when the php version of the dependencies changes ...
phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
if [[ "$NEXTCLOUD_PHP_VERSION" != "$phpversion" ]]; then
local pkg_dependencies="$(dpkg-query --show --showformat='${Depends}' ${app}-ynh-deps)"
pkg_dependencies="${pkg_dependencies//$phpversion/$NEXTCLOUD_PHP_VERSION}"
# Packaging v1 ~legacy : ynh_install_app_dependencies is designed to be called several times
# but the second time it will *append* the list of dependencies rather than replace the existing dependencies
# resulting in a crash when parsing what's the php version the app uses, hence we need to force the full-replacement
YNH_INSTALL_APP_DEPENDENCIES_REPLACE=true
ynh_install_app_dependencies "$pkg_dependencies"
fi
fi
(cd "$install_dir" && ynh_exec_as "$app" \
php$NEXTCLOUD_PHP_VERSION --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@")
php$NEXTCLOUD_PHP_VERSION --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") 2> >(filter_boring_occ_warnings >&2)
}
#=================================================
@ -103,16 +110,49 @@ local mount_id=$(exec_occ files_external:create --output=json \
|| exec_occ files_external:option "$mount_id" enable_sharing true
}
function list_installed_apps_not_compatible_with_future_version()
{
local nextcloud_destination_version="$1"
local nextcloud_current_version="$(grep OC_VersionString "$install_dir/version.php" | cut -d\' -f2)"
local installed_apps=$(mktemp)
local core_apps_in_current_version=$(mktemp)
local nextcloud_destination_appcatalog=$(mktemp)
# Run a first "dummy" command just to make sure we have the appropriate php dependencies installed,
# otherwise this creates funky stuff when tweaking the apt deps because the next command is piped into jq ...
exec_occ -V >/dev/null
# List installed apps
exec_occ app:list --output json | jq -r ".enabled | keys[]" | sort > $installed_apps
# Fetch Nextcloud list of core apps from their github repo for the current version
curl -s https://raw.githubusercontent.com/nextcloud/server/v$nextcloud_current_version/core/shipped.json | jq -r '.shippedApps[]' | sort > $core_apps_in_current_version
# Fetch Nextcloud app catalog (doesnt contain core app) for the future version
curl -s https://apps.nextcloud.com/api/v1/platform/$nextcloud_destination_version.0.0/apps.json | jq -r '.[] | .id' | sort > $nextcloud_destination_appcatalog
# Compute set complement, cf https://catonmat.net/set-operations-in-unix-shell
# We want to list the installed apps which are neither core apps nor in the destination catalog
comm -23 <(comm -23 $installed_apps $core_apps_in_current_version) $nextcloud_destination_appcatalog
}
current_version=$(grep OC_VersionString "$install_dir/version.php" | cut -d\' -f2)
current_major_version=${current_version%%.*}
last_version=$(ynh_read_manifest --manifest_key="resources.sources.main.url" | grep -o '[0-9][0-9]\.[0-9]\.[0-9]')
last_major_version=${last_version%%.*}
if [[ "$last_major_version" != "$current_major_version" ]]
then
installed_apps_not_compatible_with_future_version="$(list_installed_apps_not_compatible_with_future_version $last_major_version)"
if [[ -n "$installed_apps_not_compatible_with_future_version" ]]
then
ynh_die --message="The following apps are not (yet?) compatible with Nextcloud $last_major_version. You should make sure to upgrade the app, or disable it, or wait for it to become compatible before running this upgrade : $installed_apps_not_compatible_with_future_version"
fi
fi
if [ "$upgrade_type" == "UPGRADE_APP" ]
then
ynh_script_progression --message="Upgrading $app..." --weight=3
# Load the last available version
source upgrade.d/upgrade.last.sh
last_version=$next_version
last_major_version=${last_version%%.*}
# Set write access for the following commands
chown -R $app: "$install_dir" "$data_dir"
@ -124,53 +164,30 @@ then
# Take all apps enabled, and check if mail is one of them
# Then temporary disable the mail app
mail_app_must_be_reactived=0
if exec_occ app:list | awk '/Enabled/{f=1;next} /Disabled/{f=0} f' | grep -q -w mail; then
exec_occ app:disable mail
mail_app_must_be_reactived=1
fi
# While the current version is not the last version, do an upgrade
while [ "$last_version" != "$current_version" ]
do
# The major version is the first part of the version number
current_major_version=${current_version%%.*}
if [ ! -f upgrade.d/upgrade.$current_major_version.sh ]; then
source upgrade.d/upgrade.last.sh
else
source upgrade.d/upgrade.$current_major_version.sh
fi
# If the current version has the same major version than the next one,
# then it's the last upgrade to do
# We also cover the case where the last version is the first of the current major version series
if [[ ("$last_major_version" -eq "$current_major_version") || ( ("$last_major_version" -eq "$((current_major_version+1))") && ("$next_version" == "$last_version") ) ]]; then
current_major_version=last
# Enable YunoHost patches on Nextcloud sources
next_major_version="$(( $current_major_version + 1 ))"
if [[ "$next_major_version" -ge "$last_major_version" ]]; then
ynh_print_info --message="Upgrading to Nextcloud $last_version"
cp -a ../sources/patches_last_version/* ../sources/patches
source_id="main"
else
ynh_print_info --message="Upgrading to Nextcloud $next_major_version"
source_id="$next_major_version"
fi
# Load the value for this version
source upgrade.d/upgrade.$current_major_version.sh
ynh_print_info --message="Upgrade to $app $next_version"
# Create an app.src for this version of Nextcloud
cat > ../conf/app.src << EOF
SOURCE_URL=https://download.nextcloud.com/server/releases/nextcloud-$next_version.tar.bz2
SOURCE_SUM=$nextcloud_source_sha256
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.bz2
SOURCE_IN_SUBDIR=true
EOF
# Create a temporary directory
tmpdir="$(ynh_smart_mktemp min_size=300)"
# Install the next nextcloud version in $tmpdir
ynh_setup_source --dest_dir="$tmpdir"
ynh_setup_source --dest_dir="$tmpdir" --source_id="$source_id"
# Backup the config file in the temp dir
cp -a "$install_dir/config/config.php" "$tmpdir/config/config.php"
@ -195,7 +212,6 @@ EOF
# Replace the old Nextcloud by the new one
ynh_secure_remove --file="$install_dir"
mv "$tmpdir" "$install_dir"
ynh_secure_remove --file="$tmpdir"
# Set write access for the following commands
chown -R $app: "$install_dir" "$data_dir"
@ -217,7 +233,7 @@ EOF
exec_occ db:add-missing-columns -n
exec_occ db:add-missing-primary-keys -n
exec_occ db:convert-filecache-bigint -n
#=================================================
# CONFIGURE NEXTCLOUD
#=================================================

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Version cible de la mise à jour de Nextcloud
next_version="11.0.0"
# Nextcloud tarball checksum
nextcloud_source_sha256="5bdfcb36c5cf470b9a6679034cabf88bf1e50a9f3e47c08d189cc2280b621429"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Version cible de la mise à jour de Nextcloud
next_version="12.0.0"
# Nextcloud tarball checksum
nextcloud_source_sha256="1b9d9cf05e657cd564a552b418fbf42d669ca51e0fd1f1f118fe44cbf93a243f"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Version cible de la mise à jour de Nextcloud
next_version="13.0.0"
# Nextcloud tarball checksum
nextcloud_source_sha256="38e6064432a2d1a044f219028d3fd46cb7a943a47e11eef346810bd289705aec"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="14.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="f965c14286e7aabbfe49c947d86af59597af302c35d10e0b5440e7e6c53b8f47"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="15.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="5bb0c58171353da844019b64080c21078002a59ab956ab72adb958844a98eb78"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="16.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="4532f7028b1d9bf060f75ac4fbbde52a59ecd9c9155f3178a038d3cf3609402e"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="17.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="6081421b33ecdb3130b2bfb2293a3f4045aeb0b471ee570e675de3d931a142a6"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="18.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="194095a5586d84040bc455f77b8aa6c80f9a6a6dd713c9aebdad046713d4267b"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="19.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="d23d429657c5e3476d7e73af1eafc70e42a81cfe2ed65b20655a005724fe0aae"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="20.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="a273e0151f68567f729d9a82a7e3f124ff0f0471aa17bae6bfd83c5362d84cd8"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="21.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="ceadaeef67685a11afc5b23b0a86ba3c7bd0a7b138d5d1ecc05262383655f1f0"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available nextcloud version
next_version="22.2.10"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="8de167bfcfcaa661245a00a5ac36628e7961951b9fe2dfaf4f8a5aac6907ccdb"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available Nextcloud version
next_version="23.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="c37592abc3b65c8fd28459281a24f414b87af52fc8c2ea979be3f9be75d01a2c"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available Nextcloud version
next_version="24.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="176cb5620f20465fb4759bdf3caaebeb7acff39d6c8630351af9f8738c173780"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available Nextcloud version
next_version="25.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="2c05ac9d7b72b44ef8b3d2ae03ff0fd6121e254b8054556f5163bd8760dd8f49"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available Nextcloud version
next_version="26.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="f163150363aee9366ecb5cd5259bf6756ed4f073cea78b5fa515cada7a0d0c3d"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available Nextcloud version
next_version="27.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="3d312a09b9345ac058758dd7b4059bf3cf0b1f0f1d747251b6fac3585ba6533f"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available Nextcloud version
next_version="28.0.0"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="4e8b0b74b40221e85f92ab869d0873c69a52d7e43889d9259c6259428a6a36f2"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Version cible de la mise à jour de Nextcloud
next_version="10.0.2"
# Nextcloud tarball checksum
nextcloud_source_sha256="a687a818778413484f06bb23b4e98589c73729fe2aa9feb1bf5584e3bd37103c"

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Last available Nextcloud version
next_version="28.0.1"
# Nextcloud tarball checksum sha256
nextcloud_source_sha256="2f80735b443082272fe6a3b5e32137957f1fc448c75342b94b5200b29725f3a4"