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>
This commit is contained in:
James Le Cuirot
2022-02-19 15:59:25 +00:00
parent 9d937ce398
commit 6bbd050f9e
9 changed files with 271 additions and 20 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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