diff options
author | James Le Cuirot <chewi@gentoo.org> | 2022-02-19 15:59:25 +0000 |
---|---|---|
committer | James Le Cuirot <chewi@gentoo.org> | 2022-02-19 16:00:37 +0000 |
commit | 6bbd050f9ecc0fadd9fae6eabc7206a6042d397f (patch) | |
tree | 833059a63e5a9d2a7e37aa5773b282f8827cf63f /www-apps/tt-rss | |
parent | sci-libs/scotch: Stabilize 6.1.2 amd64, #833719 (diff) | |
download | gentoo-6bbd050f9ecc0fadd9fae6eabc7206a6042d397f.tar.gz gentoo-6bbd050f9ecc0fadd9fae6eabc7206a6042d397f.tar.bz2 gentoo-6bbd050f9ecc0fadd9fae6eabc7206a6042d397f.zip |
www-apps/tt-rss: Bump to 20220218, EAPI 8, fix for dash, fix permissions
Thanks to Anna Vyalkova for the dash fix. Note that the configuration syntax has
changed since the last version.
Closes: https://bugs.gentoo.org/833206
Signed-off-by: James Le Cuirot <chewi@gentoo.org>
Diffstat (limited to 'www-apps/tt-rss')
-rw-r--r-- | www-apps/tt-rss/Manifest | 1 | ||||
-rw-r--r-- | www-apps/tt-rss/files/permissions-r1 | 24 | ||||
-rw-r--r-- | www-apps/tt-rss/files/postinstall-en-with-daemon-r1.txt | 3 | ||||
-rw-r--r-- | www-apps/tt-rss/files/postinstall-en.txt | 3 | ||||
-rw-r--r-- | www-apps/tt-rss/files/tt-rss-no-chmod.patch | 26 | ||||
-rw-r--r-- | www-apps/tt-rss/files/ttrssd.initd-r4 | 119 | ||||
-rw-r--r-- | www-apps/tt-rss/tt-rss-20200922.ebuild | 5 | ||||
-rw-r--r-- | www-apps/tt-rss/tt-rss-20220218.ebuild | 90 | ||||
-rw-r--r-- | www-apps/tt-rss/tt-rss-99999999.ebuild | 20 |
9 files changed, 271 insertions, 20 deletions
diff --git a/www-apps/tt-rss/Manifest b/www-apps/tt-rss/Manifest index a650767d6971..5a6f1e2a2113 100644 --- a/www-apps/tt-rss/Manifest +++ b/www-apps/tt-rss/Manifest @@ -1 +1,2 @@ DIST tt-rss-20200922.tar.gz 3406007 BLAKE2B 7058253fbbba1c121d11eace8a3ef024b7ef83b05fd8b10b0ba0d017fa75d16b970e2c95c13091f760b21bcf092f609d81a5649de03672b0394113412f90beb0 SHA512 90387d07af76bc90bfb2e740dcfa0b2e13ed9af679a6c9258edd053511277bc36fca8edd4b3862c3f1957fa65a827b161abf3ed7fa603d4b84514fd456947a47 +DIST tt-rss-20220218.tar.gz 9916433 BLAKE2B 318969b6e5156842079bf68c4ea614e5e60e21d8caa46b1a78f2cef051904da30e5091838f6e10f6f610d8ee39c7922137aeb60b7cd5004cabc1d2cdf65edfa8 SHA512 38a81dd737462724bc52ca3915350c175abe548cd566a4f9a5e1d5efda9287d0666e9348e5b13dd20549360501de5b0bfb659292fb650f7a60fdab8b63cf8202 diff --git a/www-apps/tt-rss/files/permissions-r1 b/www-apps/tt-rss/files/permissions-r1 new file mode 100644 index 000000000000..e50b4406646d --- /dev/null +++ b/www-apps/tt-rss/files/permissions-r1 @@ -0,0 +1,24 @@ +#!/bin/bash -e + +cd "${MY_INSTALLDIR}" + +if [[ $1 = install ]]; then + # We need to lock down cache/ for the operations below to be + # safe. The permissions match the webapp-config defaults but these + # can be changed and existing installations may also differ. + chown root:root cache/ + chmod 00755 cache/ + + chgrp --no-dereference ttrssd feed-icons/ lock/ cache/*/ + chmod g+ws feed-icons/ lock/ cache/*/ + + # Files within lock/ are exclusively written by the update daemon. + # feed-icons/ and cache/ holds files that are modified in place by both + # processes and therefore ACLs are required to ensure that the files + # themselves are created as group writable. + if ! setfacl --modify d:g::rwX feed-icons/ cache/*/; then + echo "WARNING: ACLs are not available on this filesystem. Either enable them or set TTRSSD_USER to your PHP user in /etc/conf.d/ttrssd to avoid permission issues." + elif [[ -n $(find feed-icons/ cache/ -type f ! -name ".*" ! -name index.html ! \( -group ttrssd -perm -020 \) -print -quit) ]]; then + echo "WARNING: Files that are not writable by the ttrssd group found within the cache or feed-icons directories. Either delete them or correct their permissions." + fi +fi diff --git a/www-apps/tt-rss/files/postinstall-en-with-daemon-r1.txt b/www-apps/tt-rss/files/postinstall-en-with-daemon-r1.txt index 8c72406d76d2..92d1fa315c72 100644 --- a/www-apps/tt-rss/files/postinstall-en-with-daemon-r1.txt +++ b/www-apps/tt-rss/files/postinstall-en-with-daemon-r1.txt @@ -1,4 +1,5 @@ -Please read https://tt-rss.org/wiki/InstallationNotes. +Please read https://tt-rss.org/wiki/GlobalConfig. Note that the configuration +syntax changed in 2021. Once you have configured TT-RSS, tweak /etc/conf.d/ttrssd to your needs if you have not already done so. If ACLs are unavailable on the diff --git a/www-apps/tt-rss/files/postinstall-en.txt b/www-apps/tt-rss/files/postinstall-en.txt index 67a16111f3d5..f28a19d991bf 100644 --- a/www-apps/tt-rss/files/postinstall-en.txt +++ b/www-apps/tt-rss/files/postinstall-en.txt @@ -1 +1,2 @@ -Please read https://tt-rss.org/wiki/InstallationNotes. +Please read https://tt-rss.org/wiki/GlobalConfig. Note that the configuration +syntax changed in 2021. diff --git a/www-apps/tt-rss/files/tt-rss-no-chmod.patch b/www-apps/tt-rss/files/tt-rss-no-chmod.patch new file mode 100644 index 000000000000..e51e66eaed22 --- /dev/null +++ b/www-apps/tt-rss/files/tt-rss-no-chmod.patch @@ -0,0 +1,26 @@ +These files may be written and then updated by the web interface user or the +update daemon user, so they need to be group writeable. We enforce this with +ACLs rather than chmod though. + +diff --color -Naur a/classes/pref/feeds.php b/classes/pref/feeds.php +--- a/classes/pref/feeds.php 2022-02-18 13:44:03.000000000 +0000 ++++ b/classes/pref/feeds.php 2022-02-19 15:37:55.000723992 +0000 +@@ -490,7 +490,6 @@ + + if (file_exists($new_filename)) unlink($new_filename); + if (rename($tmp_file, $new_filename)) { +- chmod($new_filename, 0644); + + $feed->set([ + 'favicon_avg_color' => null, +diff --color -Naur a/classes/rssutils.php b/classes/rssutils.php +--- a/classes/rssutils.php 2022-02-18 13:44:03.000000000 +0000 ++++ b/classes/rssutils.php 2022-02-19 15:37:40.393312123 +0000 +@@ -1728,7 +1728,6 @@ + + fwrite($fp, $contents); + fclose($fp); +- chmod($icon_file, 0644); + clearstatcache(); + + return $icon_file; diff --git a/www-apps/tt-rss/files/ttrssd.initd-r4 b/www-apps/tt-rss/files/ttrssd.initd-r4 new file mode 100644 index 000000000000..9dbfa157ce43 --- /dev/null +++ b/www-apps/tt-rss/files/ttrssd.initd-r4 @@ -0,0 +1,119 @@ +#!/sbin/openrc-run +# Copyright 1999-2022 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +command="/usr/bin/php" + +depend() { + need net + after postgresql mysql +} + +PID_DIR="/run/ttrssd" +LOG_DIR=${LOG_DIR:-"/var/log/ttrssd"} +TTRSSD_USER=${TTRSSD_USER:-"ttrssd"} + +list_instance_dirs() { + if [ -z "${INSTANCE_DIRS}" ]; then + cut -d" " -f4 /var/db/webapps/tt-rss/*/installs 2>/dev/null + else + printf "%s\n" ${INSTANCE_DIRS} + fi +} + +instance_dir_to_name() { + local name + + name=${1#/} + printf %s "${name}" | awk '{ + gsub("/", "--"); + print $0; + }' +} + +start_pre() { + mkdir -p "${PID_DIR}" "${LOG_DIR}" || return 1 + chown "${TTRSSD_USER}":ttrssd "${LOG_DIR}" || return 1 +} + +start() { + local instance_dir instance_name ret=1 + + IFS=" +" + for instance_dir in $(list_instance_dirs); do + if [ -d "${instance_dir}" ]; then + if [ ! -f "${instance_dir}"/update_daemon2.php ]; then + ewarn "TT-RSS instance in ${instance_dir} has no update_daemon2.php script" + elif [ ! -f "${instance_dir}"/config.php ]; then + eerror "TT-RSS instance in ${instance_dir} is not configured" + else + instance_name=$(instance_dir_to_name "${instance_dir}") + ebegin "Starting TT-RSS update daemon in ${instance_dir}" + start-stop-daemon --start --user "${TTRSSD_USER}":ttrssd \ + --background --wait 2000 \ + --stdout "${LOG_DIR}/${instance_name}.log" \ + --stderr "${LOG_DIR}/${instance_name}.log" \ + --make-pidfile --pidfile "${PID_DIR}/${instance_name}.pid" \ + --exec /usr/bin/php -- -f "${instance_dir}"/update_daemon2.php \ + -- ${TTRSSD_OPTS} + eend $? && ret=0 + fi + else + eerror "TT-RSS instance in ${instance_dir} is missing" + fi + done + unset IFS + + # Succeed if at least one started. + return ${ret} +} + +stop() { + local instance_dir instance_name + + IFS=" +" + for instance_dir in $(list_instance_dirs); do + instance_name=$(instance_dir_to_name "${instance_dir}") + + [ -f "${PID_DIR}/${instance_name}.pid" ] || + [ -f "${instance_dir}"/update_daemon2.php ] || + continue + + ebegin "Stopping TT-RSS update daemon in ${instance_dir}" + start-stop-daemon --stop --retry 5 --pidfile "${PID_DIR}/${instance_name}.pid" \ + --exec /usr/bin/php -- -f "${instance_dir}"/update_daemon2.php \ + -- ${TTRSSD_OPTS} + eend $? + + rm -f "${instance_dir}"/lock/*.lock + done + unset IFS + + # Always succeed. + return 0 +} + +status() { + local instance_dir instance_name pid + + IFS=" +" + for instance_dir in $(list_instance_dirs); do + instance_name=$(instance_dir_to_name "${instance_dir}") + + [ -f "${PID_DIR}/${instance_name}.pid" ] || + [ -f "${instance_dir}"/update_daemon2.php ] || + continue + + if start-stop-daemon --signal 0 --pidfile "${PID_DIR}/${instance_name}.pid"; then + # At least one instance is running + return 0 + fi + done + unset IFS + + # No instances are running + return 3 +} diff --git a/www-apps/tt-rss/tt-rss-20200922.ebuild b/www-apps/tt-rss/tt-rss-20200922.ebuild index 86ea09cce5e4..e2117ac64f57 100644 --- a/www-apps/tt-rss/tt-rss-20200922.ebuild +++ b/www-apps/tt-rss/tt-rss-20200922.ebuild @@ -93,8 +93,3 @@ src_install() { webapp_src_install } - -pkg_postinst() { - elog "You need to merge config.php-dist into config.php manually when upgrading." - webapp_pkg_postinst -} diff --git a/www-apps/tt-rss/tt-rss-20220218.ebuild b/www-apps/tt-rss/tt-rss-20220218.ebuild new file mode 100644 index 000000000000..2081b2a81759 --- /dev/null +++ b/www-apps/tt-rss/tt-rss-20220218.ebuild @@ -0,0 +1,90 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit webapp + +DESCRIPTION="Tiny Tiny RSS - A web-based news feed (RSS/Atom) aggregator using AJAX" +HOMEPAGE="https://tt-rss.org/" +SRC_URI="https://dev.gentoo.org/~chewi/distfiles/${P}.tar.gz" # Upstream git frontend blocks wget? +LICENSE="GPL-3" +KEYWORDS="~amd64 ~arm ~mips ~x86" +IUSE="+acl daemon gd +mysqli postgres" +REQUIRED_USE="|| ( mysqli postgres )" + +PHP_SLOTS="8.0 7.4 7.3" +PHP_USE="gd?,mysqli?,postgres?,curl,fileinfo,intl,json(+),pdo,unicode,xml" + +php_rdepend() { + local slot + echo "|| (" + for slot in ${PHP_SLOTS}; do + echo "( + virtual/httpd-php:${slot} + dev-lang/php:${slot}[$1] + )" + done + echo ")" +} + +DEPEND=" + daemon? ( acl? ( sys-apps/acl ) ) +" + +RDEPEND=" + ${DEPEND} + daemon? ( + acct-user/ttrssd + acct-group/ttrssd + $(php_rdepend "${PHP_USE},cli,pcntl") + ) + !daemon? ( + $(php_rdepend "${PHP_USE}") + ) +" + +DEPEND=" + !vhosts? ( ${DEPEND} ) +" + +need_httpd_cgi # From webapp.eclass + +S="${WORKDIR}/${PN}" + +PATCHES=( + "${FILESDIR}"/${PN}-no-chmod.patch +) + +src_install() { + webapp_src_preinst + + insinto "${MY_HTDOCSDIR}" + doins -r * + + # When updating, grep the plugins directory for additional CACHE_DIR + # instances as they cannot be created later due to permissions. + dodir "${MY_HTDOCSDIR}"/cache/starred-images + + local dir + for dir in "${ED}${MY_HTDOCSDIR}"/{cache/*,feed-icons,lock}/; do + webapp_serverowned "${dir#${ED}}" + done + + if use daemon; then + webapp_hook_script "${FILESDIR}"/permissions-r1 + webapp_postinst_txt en "${FILESDIR}"/postinstall-en-with-daemon-r1.txt + + newinitd "${FILESDIR}"/ttrssd.initd-r4 ttrssd + newconfd "${FILESDIR}"/ttrssd.confd-r2 ttrssd + + insinto /etc/logrotate.d + newins "${FILESDIR}"/ttrssd.logrotated-r1 ttrssd + + elog "After upgrading, please restart ttrssd." + else + webapp_postinst_txt en "${FILESDIR}"/postinstall-en.txt + fi + + webapp_src_install +} diff --git a/www-apps/tt-rss/tt-rss-99999999.ebuild b/www-apps/tt-rss/tt-rss-99999999.ebuild index 25e4a31621d6..e91fad7a3c67 100644 --- a/www-apps/tt-rss/tt-rss-99999999.ebuild +++ b/www-apps/tt-rss/tt-rss-99999999.ebuild @@ -1,9 +1,9 @@ # Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 -inherit git-r3 prefix webapp +inherit git-r3 webapp DESCRIPTION="Tiny Tiny RSS - A web-based news feed (RSS/Atom) aggregator using AJAX" HOMEPAGE="https://tt-rss.org/" @@ -50,13 +50,9 @@ DEPEND=" need_httpd_cgi # From webapp.eclass -src_configure() { - hprefixify config.php-dist - - sed -i -r \ - -e "/'DB_TYPE'/s:,.*:, '$(usex mysqli mysql pgsql)'); // mysql or pgsql:" \ - config.php-dist || die -} +PATCHES=( + "${FILESDIR}"/${PN}-no-chmod.patch +) src_install() { webapp_src_preinst @@ -74,10 +70,10 @@ src_install() { done if use daemon; then - webapp_hook_script "${FILESDIR}"/permissions + webapp_hook_script "${FILESDIR}"/permissions-r1 webapp_postinst_txt en "${FILESDIR}"/postinstall-en-with-daemon-r1.txt - newinitd "${FILESDIR}"/ttrssd.initd-r3 ttrssd + newinitd "${FILESDIR}"/ttrssd.initd-r4 ttrssd newconfd "${FILESDIR}"/ttrssd.confd-r2 ttrssd insinto /etc/logrotate.d @@ -92,8 +88,6 @@ src_install() { } pkg_postinst() { - elog "You need to merge config.php-dist into config.php manually when upgrading." - if use vhosts && [[ -n ${REPLACING_VERSIONS} ]]; then elog elog "The live ebuild does not automatically upgrade your installations so" |