Skip to content

Commit

Permalink
www-apps/tt-rss: Bump to 20220218, EAPI 8, fix for dash, fix permissions
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
chewi committed Feb 19, 2022
1 parent 9d937ce commit 6bbd050
Show file tree
Hide file tree
Showing 9 changed files with 271 additions and 20 deletions.
1 change: 1 addition & 0 deletions www-apps/tt-rss/Manifest
Original file line number Diff line number Diff line change
@@ -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
24 changes: 24 additions & 0 deletions www-apps/tt-rss/files/permissions-r1
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion www-apps/tt-rss/files/postinstall-en-with-daemon-r1.txt
Original file line number Diff line number Diff line change
@@ -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
Expand Down
3 changes: 2 additions & 1 deletion www-apps/tt-rss/files/postinstall-en.txt
Original file line number Diff line number Diff line change
@@ -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.
26 changes: 26 additions & 0 deletions www-apps/tt-rss/files/tt-rss-no-chmod.patch
Original file line number Diff line number Diff line change
@@ -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;
119 changes: 119 additions & 0 deletions www-apps/tt-rss/files/ttrssd.initd-r4
Original file line number Diff line number Diff line change
@@ -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
}
5 changes: 0 additions & 5 deletions www-apps/tt-rss/tt-rss-20200922.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
90 changes: 90 additions & 0 deletions www-apps/tt-rss/tt-rss-20220218.ebuild
Original file line number Diff line number Diff line change
@@ -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
}
20 changes: 7 additions & 13 deletions www-apps/tt-rss/tt-rss-99999999.ebuild
Original file line number Diff line number Diff line change
@@ -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/"
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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"
Expand Down

0 comments on commit 6bbd050

Please sign in to comment.