mirror of
https://github.com/YunoHost-Apps/pixelfed_ynh.git
synced 2024-09-03 20:06:04 +02:00
switch from ynh_install_php7 to ynh_install_php
This commit is contained in:
parent
0d91a723b4
commit
df8658af5a
4 changed files with 144 additions and 16 deletions
|
@ -5,7 +5,7 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# dependencies used by the app
|
# dependencies used by the app
|
||||||
pkg_dependencies="php7.1 php7.1-fpm php7.1-mbstring postgresql redis-server"
|
pkg_dependencies="php7.1-mbstring postgresql redis-server"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# PERSONAL HELPERS
|
# PERSONAL HELPERS
|
||||||
|
@ -19,20 +19,6 @@ pkg_dependencies="php7.1 php7.1-fpm php7.1-mbstring postgresql redis-server"
|
||||||
# FUTURE OFFICIAL HELPERS
|
# FUTURE OFFICIAL HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_install_php7 () {
|
|
||||||
wget -q -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
|
|
||||||
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php7.list
|
|
||||||
|
|
||||||
ynh_package_update
|
|
||||||
}
|
|
||||||
|
|
||||||
ynh_remove_php7 () {
|
|
||||||
rm -f /etc/apt/sources.list.d/php7.list
|
|
||||||
apt-key del 4096R/89DF5277
|
|
||||||
apt-key del 2048R/11A06851
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Execute a command as another user
|
# Execute a command as another user
|
||||||
# usage: exec_as USER COMMAND [ARG ...]
|
# usage: exec_as USER COMMAND [ARG ...]
|
||||||
exec_as() {
|
exec_as() {
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source _pgsql.sh
|
source _pgsql.sh
|
||||||
|
source ynh_install_php
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -53,7 +54,7 @@ ynh_app_setting_set $app is_public $is_public
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info "Installing dependencies..."
|
ynh_print_info "Installing dependencies..."
|
||||||
|
|
||||||
ynh_install_php7
|
ynh_install_php --phpversion=7.1
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source _pgsql.sh
|
source _pgsql.sh
|
||||||
|
source ynh_install_php
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -39,6 +40,7 @@ ynh_print_info "Removing dependencies"
|
||||||
|
|
||||||
# Remove metapackage and its dependencies
|
# Remove metapackage and its dependencies
|
||||||
ynh_remove_app_dependencies
|
ynh_remove_app_dependencies
|
||||||
|
ynh_remove_php
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE APP MAIN DIR
|
# REMOVE APP MAIN DIR
|
||||||
|
|
139
scripts/ynh_install_php
Normal file
139
scripts/ynh_install_php
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Install another version of php.
|
||||||
|
#
|
||||||
|
# usage: ynh_install_php --phpversion=phpversion
|
||||||
|
# | arg: -v, --phpversion - Version of php to install. Can be one of 7.1, 7.2 or 7.3
|
||||||
|
ynh_install_php () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=v
|
||||||
|
declare -Ar args_array=( [v]=phpversion= )
|
||||||
|
local phpversion
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
|
||||||
|
# Store php_version into the config of this app
|
||||||
|
ynh_app_setting_set $app php_version $phpversion
|
||||||
|
|
||||||
|
# Install an extra repo to get multiple php versions
|
||||||
|
ynh_install_extra_repo --repo="https://packages.sury.org/php/ $(lsb_release -sc) main" --key="https://packages.sury.org/php/apt.gpg" --name=php
|
||||||
|
|
||||||
|
if [ "$phpversion" == "7.0" ]; then
|
||||||
|
ynh_die "Do not use ynh_install_php to install php7.0"
|
||||||
|
|
||||||
|
# Php 7.1
|
||||||
|
elif [ "$phpversion" == "7.1" ]; then
|
||||||
|
# Get the current version available for libpcre3 on packages.sury.org
|
||||||
|
local libpcre3_version=$(apt-cache madison "libpcre3" | grep "packages.sury.org" | tail -n1 | awk '{print $3}')
|
||||||
|
|
||||||
|
# equivs doesn't handle correctly this dependence.
|
||||||
|
# Force the upgrade of libpcre3 for php7.1
|
||||||
|
ynh_package_install "libpcre3=$libpcre3_version"
|
||||||
|
|
||||||
|
local php_dependencies="php7.1, php7.1-fpm"
|
||||||
|
|
||||||
|
# Php 7.2
|
||||||
|
elif [ "$phpversion" == "7.2" ]; then
|
||||||
|
# Get the current version available for libpcre3 on packages.sury.org
|
||||||
|
local libpcre3_version=$(apt-cache madison "libpcre3" | grep "packages.sury.org" | tail -n1 | awk '{print $3}')
|
||||||
|
|
||||||
|
# equivs doesn't handle correctly this dependence.
|
||||||
|
# Force the upgrade of libpcre3 for php7.2
|
||||||
|
ynh_package_install "libpcre3=$libpcre3_version"
|
||||||
|
|
||||||
|
local php_dependencies="php7.2, php7.2-fpm"
|
||||||
|
|
||||||
|
# Php 7.3
|
||||||
|
elif [ "$phpversion" == "7.3" ]; then
|
||||||
|
# Get the current version available for libpcre2-8-0 on packages.sury.org
|
||||||
|
local libpcre2_version=$(apt-cache madison "libpcre2-8-0" | grep "packages.sury.org" | tail -n1 | awk '{print $3}')
|
||||||
|
|
||||||
|
# equivs doesn't handle correctly this dependence.
|
||||||
|
# Force the upgrade of libpcre2-8-0 for php7.3
|
||||||
|
ynh_package_install "libpcre2-8-0=$libpcre2_version"
|
||||||
|
|
||||||
|
local php_dependencies="php7.3, php7.3-fpm"
|
||||||
|
|
||||||
|
else
|
||||||
|
ynh_die "The version $phpversion of php isn't handle by this helper."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Store the ID of this app and the version of php requested for it
|
||||||
|
echo "$YNH_APP_ID:$phpversion" | tee --append "/etc/php/ynh_app_version"
|
||||||
|
|
||||||
|
# Build a control file for equivs-build
|
||||||
|
echo "Section: misc
|
||||||
|
Priority: optional
|
||||||
|
Package: php${phpversion}-ynh-deps
|
||||||
|
Version: 1.0
|
||||||
|
Depends: $php_dependencies
|
||||||
|
Architecture: all
|
||||||
|
Description: Fake package for php_$phpversion dependencies
|
||||||
|
This meta-package is only responsible of installing its dependencies." \
|
||||||
|
> /tmp/php_${phpversion}-ynh-deps.control
|
||||||
|
|
||||||
|
# Install the fake package for php
|
||||||
|
ynh_package_install_from_equivs /tmp/php_${phpversion}-ynh-deps.control \
|
||||||
|
|| ynh_die --message="Unable to install dependencies"
|
||||||
|
ynh_secure_remove /tmp/php_${phpversion}-ynh-deps.control
|
||||||
|
|
||||||
|
# Advertise service in admin panel
|
||||||
|
yunohost service add php${phpversion}-fpm --log "/var/log/php${phpversion}-fpm.log"
|
||||||
|
}
|
||||||
|
|
||||||
|
ynh_remove_php () {
|
||||||
|
# Get the version of php used by this app
|
||||||
|
local phpversion=$(ynh_app_setting_get $app php_version)
|
||||||
|
|
||||||
|
if [ "$phpversion" == "7.0" ] || [ -z "$phpversion" ]
|
||||||
|
then
|
||||||
|
if [ "$phpversion" == "7.0" ]
|
||||||
|
then
|
||||||
|
ynh_print_err "Do not use ynh_remove_php to install php7.0"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove the line for this app
|
||||||
|
sed --in-place "/$YNH_APP_ID:$phpversion/d" "/etc/php/ynh_app_version"
|
||||||
|
|
||||||
|
# If no other app uses this version of php, remove it.
|
||||||
|
if ! grep --quiet "$phpversion" "/etc/php/ynh_app_version"
|
||||||
|
then
|
||||||
|
# Remove the metapackage for php
|
||||||
|
ynh_package_autopurge php${phpversion}-ynh-deps
|
||||||
|
# Then remove php-fpm php-cli for this version.
|
||||||
|
# The previous command won't remove them, but we have to remove those package to clean php
|
||||||
|
ynh_package_autopurge php${phpversion}-fpm php${phpversion}-cli
|
||||||
|
|
||||||
|
if [ "$phpversion" == "7.1" ] || [ "$phpversion" == "7.2" ]
|
||||||
|
then
|
||||||
|
# Do not restore libpcre3 if php7.1 or 7.2 is still used.
|
||||||
|
if ! grep --quiet --extended-regexp "7.1|7.2" "/etc/php/ynh_app_version"
|
||||||
|
then
|
||||||
|
# Get the current version available for libpcre3 on the standard repo
|
||||||
|
local libpcre3_version=$(apt-cache madison "libpcre3" | grep "debian.org" | tail -n1 | awk '{print $3}')
|
||||||
|
|
||||||
|
# Force to reinstall the standard version of libpcre3
|
||||||
|
ynh_package_install --allow-downgrades libpcre3=$libpcre3_version >&2
|
||||||
|
fi
|
||||||
|
elif [ "$phpversion" == "7.3" ]
|
||||||
|
then
|
||||||
|
# Get the current version available for libpcre2-8-0 on the standard repo
|
||||||
|
local libpcre2_version=$(apt-cache madison "libpcre2-8-0" | grep "debian.org" | tail -n1 | awk '{print $3}')
|
||||||
|
|
||||||
|
# Force to reinstall the standard version of libpcre2-8-0
|
||||||
|
ynh_package_install --allow-downgrades libpcre2-8-0=$libpcre2_version
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove the service from the admin panel
|
||||||
|
yunohost service remove php${phpversion}-fpm
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no other app uses alternate php versions, remove the extra repo for php
|
||||||
|
if [ ! -s "/etc/php/ynh_app_version" ]
|
||||||
|
then
|
||||||
|
ynh_remove_extra_repo --name=php
|
||||||
|
ynh_secure_remove /etc/php/ynh_app_version
|
||||||
|
fi
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue