mirror of
https://github.com/YunoHost-Apps/synapse_ynh.git
synced 2024-09-03 20:26:38 +02:00
Merge pull request #68 from YunoHost-Apps/Update_helpers
Update helpers
This commit is contained in:
commit
b5d94991e6
5 changed files with 23 additions and 117 deletions
|
@ -1,2 +1,5 @@
|
||||||
SOURCE_URL=https://github.com/matrix-org/synapse/archive/v0.33.1.tar.gz
|
SOURCE_URL=https://github.com/matrix-org/synapse/archive/v0.33.1.tar.gz
|
||||||
SOURCE_SUM=2fb51254cdc7f12ada7f2f7d848aeeecaa5b484298cfecf18a676790f157e3e4
|
SOURCE_SUM=2fb51254cdc7f12ada7f2f7d848aeeecaa5b484298cfecf18a676790f157e3e4
|
||||||
|
SOURCE_FORMAT=tar.gz
|
||||||
|
SOURCE_FILENAME=synapse_source.tar.gz
|
||||||
|
SOURCE_EXTRACT=false
|
|
@ -3,7 +3,7 @@
|
||||||
"id": "synapse",
|
"id": "synapse",
|
||||||
"packaging_format": 1,
|
"packaging_format": 1,
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"yunohost": ">= 2.7.9"
|
"yunohost": ">= 2.7.14"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Instant messaging server who use matrix",
|
"en": "Instant messaging server who use matrix",
|
||||||
|
|
|
@ -35,49 +35,6 @@ ynh_app_package_version () {
|
||||||
echo "${version_key/*~ynh/}"
|
echo "${version_key/*~ynh/}"
|
||||||
}
|
}
|
||||||
|
|
||||||
####### Solve issue https://dev.yunohost.org/issues/1006
|
|
||||||
|
|
||||||
# Build and install a package from an equivs control file
|
|
||||||
#
|
|
||||||
# example: generate an empty control file with `equivs-control`, adjust its
|
|
||||||
# content and use helper to build and install the package:
|
|
||||||
# ynh_package_install_from_equivs /path/to/controlfile
|
|
||||||
#
|
|
||||||
# usage: ynh_package_install_from_equivs controlfile
|
|
||||||
# | arg: controlfile - path of the equivs control file
|
|
||||||
ynh_package_install_from_equivs () {
|
|
||||||
controlfile=$1
|
|
||||||
|
|
||||||
# Check if the equivs package is installed. Or install it.
|
|
||||||
ynh_package_is_installed 'equivs' \
|
|
||||||
|| ynh_package_install equivs
|
|
||||||
|
|
||||||
# retrieve package information
|
|
||||||
pkgname=$(grep '^Package: ' $controlfile | cut -d' ' -f 2) # Retrieve the name of the debian package
|
|
||||||
pkgversion=$(grep '^Version: ' $controlfile | cut -d' ' -f 2) # And its version number
|
|
||||||
[[ -z "$pkgname" || -z "$pkgversion" ]] \
|
|
||||||
&& echo "Invalid control file" && exit 1 # Check if this 2 variables aren't empty.
|
|
||||||
|
|
||||||
# Update packages cache
|
|
||||||
ynh_package_update
|
|
||||||
|
|
||||||
# Build and install the package
|
|
||||||
TMPDIR=$(mktemp -d)
|
|
||||||
# Note that the cd executes into a sub shell
|
|
||||||
# Create a fake deb package with equivs-build and the given control file
|
|
||||||
# Install the fake package without its dependencies with dpkg
|
|
||||||
# Install missing dependencies with ynh_package_install
|
|
||||||
(cp "$controlfile" "${TMPDIR}/control" && cd "$TMPDIR" \
|
|
||||||
&& equivs-build ./control 1>/dev/null \
|
|
||||||
&& sudo dpkg --force-depends \
|
|
||||||
-i "./${pkgname}_${pkgversion}_all.deb" 2>&1 \
|
|
||||||
&& ynh_package_install -f) || ynh_die "Unable to install dependencies"
|
|
||||||
[[ -n "$TMPDIR" ]] && rm -rf $TMPDIR # Remove the temp dir.
|
|
||||||
|
|
||||||
# check if the package is actually installed
|
|
||||||
ynh_package_is_installed "$pkgname"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Start or restart a service and follow its booting
|
# Start or restart a service and follow its booting
|
||||||
#
|
#
|
||||||
# usage: ynh_check_starting "Line to match" [Log file] [Timeout] [Service name]
|
# usage: ynh_check_starting "Line to match" [Log file] [Timeout] [Service name]
|
||||||
|
@ -128,61 +85,6 @@ ynh_check_starting () {
|
||||||
ynh_clean_check_starting
|
ynh_clean_check_starting
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a dedicated systemd config
|
|
||||||
#
|
|
||||||
# usage: ynh_add_systemd_config [Service name] [Source file]
|
|
||||||
# | arg: Service name
|
|
||||||
# | arg: Systemd source file (for example appname.service)
|
|
||||||
#
|
|
||||||
# This will use a template in ../conf/systemd.service
|
|
||||||
# and will replace the following keywords with
|
|
||||||
# global variables that should be defined before calling
|
|
||||||
# this helper :
|
|
||||||
#
|
|
||||||
# __APP__ by $app
|
|
||||||
# __FINALPATH__ by $final_path
|
|
||||||
#
|
|
||||||
# usage: ynh_add_systemd_config
|
|
||||||
ynh_add_systemd_config () {
|
|
||||||
local service_name="${1:-$app}"
|
|
||||||
|
|
||||||
finalsystemdconf="/etc/systemd/system/$service_name.service"
|
|
||||||
ynh_backup_if_checksum_is_different "$finalsystemdconf"
|
|
||||||
sudo cp ../conf/${2:-systemd.service} "$finalsystemdconf"
|
|
||||||
|
|
||||||
# To avoid a break by set -u, use a void substitution ${var:-}. If the variable is not set, it's simply set with an empty variable.
|
|
||||||
# Substitute in a nginx config file only if the variable is not empty
|
|
||||||
if test -n "${final_path:-}"; then
|
|
||||||
ynh_replace_string "__FINALPATH__" "$final_path" "$finalsystemdconf"
|
|
||||||
fi
|
|
||||||
if test -n "${app:-}"; then
|
|
||||||
ynh_replace_string "__APP__" "$app" "$finalsystemdconf"
|
|
||||||
fi
|
|
||||||
ynh_store_file_checksum "$finalsystemdconf"
|
|
||||||
|
|
||||||
sudo chown root: "$finalsystemdconf"
|
|
||||||
sudo systemctl enable $service_name
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove the dedicated systemd config
|
|
||||||
#
|
|
||||||
# usage: ynh_remove_systemd_config [Service name]
|
|
||||||
# | arg: Service name
|
|
||||||
#
|
|
||||||
# usage: ynh_remove_systemd_config
|
|
||||||
ynh_remove_systemd_config () {
|
|
||||||
local service_name="${1:-$app}"
|
|
||||||
|
|
||||||
local finalsystemdconf="/etc/systemd/system/$service_name.service"
|
|
||||||
if [ -e "$finalsystemdconf" ]; then
|
|
||||||
sudo systemctl stop $service_name
|
|
||||||
sudo systemctl disable $service_name
|
|
||||||
ynh_secure_remove "$finalsystemdconf"
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Send an email to inform the administrator
|
# Send an email to inform the administrator
|
||||||
#
|
#
|
||||||
# usage: ynh_send_readme_to_admin app_message [recipients]
|
# usage: ynh_send_readme_to_admin app_message [recipients]
|
||||||
|
@ -222,12 +124,24 @@ ynh_send_readme_to_admin() {
|
||||||
local mail_subject="☁️🆈🅽🅷☁️: \`$app\` was just installed!"
|
local mail_subject="☁️🆈🅽🅷☁️: \`$app\` was just installed!"
|
||||||
|
|
||||||
local mail_message="This is an automated message from your beloved YunoHost server.
|
local mail_message="This is an automated message from your beloved YunoHost server.
|
||||||
|
|
||||||
Specific information for the application $app.
|
Specific information for the application $app.
|
||||||
|
|
||||||
$app_message
|
$app_message
|
||||||
|
|
||||||
---
|
---
|
||||||
Automatic diagnosis data from YunoHost
|
Automatic diagnosis data from YunoHost
|
||||||
|
|
||||||
$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')"
|
$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')"
|
||||||
|
|
||||||
|
# Define binary to use for mail command
|
||||||
|
if [ -e /usr/bin/bsd-mailx ]
|
||||||
|
then
|
||||||
|
local mail_bin=/usr/bin/bsd-mailx
|
||||||
|
else
|
||||||
|
local mail_bin=/usr/bin/mail.mailutils
|
||||||
|
fi
|
||||||
|
|
||||||
# Send the email to the recipients
|
# Send the email to the recipients
|
||||||
echo "$mail_message" | mail -a "Content-Type: text/plain; charset=UTF-8" -s "$mail_subject" "$recipients"
|
echo "$mail_message" | $mail_bin -a "Content-Type: text/plain; charset=UTF-8" -s "$mail_subject" "$recipients"
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,14 +151,8 @@ else
|
||||||
pip install --upgrade setuptools
|
pip install --upgrade setuptools
|
||||||
pip install --upgrade cffi ndg-httpsclient psycopg2 lxml
|
pip install --upgrade cffi ndg-httpsclient psycopg2 lxml
|
||||||
|
|
||||||
# Download and check the checksum for the synapse source
|
ynh_setup_source "/tmp" "python_source"
|
||||||
src_url=$(grep 'SOURCE_URL=' "$YNH_CWD/../conf/python_source.src" | cut -d= -f2-)
|
pip install --upgrade "/tmp/synapse_source.tar.gz"
|
||||||
src_sum=$(grep 'SOURCE_SUM=' "$YNH_CWD/../conf/python_source.src" | cut -d= -f2-)
|
|
||||||
|
|
||||||
wget -nv -O synapse_source.tar.gz "$src_url"
|
|
||||||
echo "${src_sum} synapse_source.tar.gz" | sha256sum -c --status \
|
|
||||||
|| ynh_die "Corrupt source"
|
|
||||||
pip install --upgrade synapse_source.tar.gz
|
|
||||||
|
|
||||||
# Fix issue with msgpack see https://github.com/YunoHost-Apps/synapse_ynh/issues/29
|
# Fix issue with msgpack see https://github.com/YunoHost-Apps/synapse_ynh/issues/29
|
||||||
test -e $final_path/lib/python2.7/site-packages/msgpack/__init__.py || (\
|
test -e $final_path/lib/python2.7/site-packages/msgpack/__init__.py || (\
|
||||||
|
|
|
@ -101,13 +101,8 @@ else
|
||||||
pip install --upgrade cffi ndg-httpsclient psycopg2 lxml
|
pip install --upgrade cffi ndg-httpsclient psycopg2 lxml
|
||||||
|
|
||||||
# Download and check the checksum for the synapse source
|
# Download and check the checksum for the synapse source
|
||||||
src_url=$(grep 'SOURCE_URL=' "$YNH_CWD/../conf/python_source.src" | cut -d= -f2-)
|
ynh_setup_source "/tmp" "python_source"
|
||||||
src_sum=$(grep 'SOURCE_SUM=' "$YNH_CWD/../conf/python_source.src" | cut -d= -f2-)
|
pip install --upgrade "/tmp/synapse_source.tar.gz"
|
||||||
|
|
||||||
wget -nv -O synapse_source.tar.gz "$src_url"
|
|
||||||
echo "${src_sum} synapse_source.tar.gz" | sha256sum -c --status \
|
|
||||||
|| ynh_die "Corrupt source"
|
|
||||||
pip install --upgrade synapse_source.tar.gz
|
|
||||||
|
|
||||||
# Fix issue with msgpack see https://github.com/YunoHost-Apps/synapse_ynh/issues/29
|
# Fix issue with msgpack see https://github.com/YunoHost-Apps/synapse_ynh/issues/29
|
||||||
test -e $final_path/lib/python2.7/site-packages/msgpack/__init__.py || (\
|
test -e $final_path/lib/python2.7/site-packages/msgpack/__init__.py || (\
|
||||||
|
|
Loading…
Reference in a new issue