1
0
Fork 0
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:
yalh76 2019-03-28 23:18:30 +01:00
parent 0d91a723b4
commit df8658af5a
4 changed files with 144 additions and 16 deletions

View file

@ -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() {

View file

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

View file

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