The clean & modern RSS server that doesn't give you any crap. https://thearsse.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
7.3 KiB

Name: arsse
Version: 0.10.0
Release: 0
Summary: Multi-protocol RSS/Atom newsfeed synchronization server
License: MIT
Group: Productivity/Networking/Web/Utilities
URL: https://thearsse.com/
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
%define minphpver 7.1
%define arssepath %{_datadir}/php/arsse
%define socketpath %{_rundir}/php-fpm/arsse.sock
Requires: php >= %{minphpver}
Requires: php-intl php-dom php-posix php-pcntl
Requires: php-simplexml php-iconv
# This is usually compiled in
Requires: php-filter
# The below extensions are part of the PHP core in recent versions
Requires: php-hash php-json
# A database option is required
Requires: (php-sqlite or php-pgsql)
# User and Group
Requires: user(arsse) group(arsse)
%systemd_requires
Recommends: php-sqlite
Suggests: php-curl
Suggests: (php-pgsql if postgresql-server)
Obsoletes: arsse < %{version}
BuildRequires: systemd-rpm-macros
BuildRequires: apache-rpm-macros
BuildRequires: sysuser-tools
%description
The Arsse bridges the gap between multiple existing newsfeed aggregator
client protocols such as Tiny Tiny RSS, Nextcloud News and Miniflux,
allowing you to use compatible clients for many protocols with a single
server.
%package config-fpm
Summary: PHP-FPM process pool configuration for The Arsse
Group: Productivity/Networking/Web/Utilities
Requires: php-fpm >= %{minphpver}
Requires: %{name} = %{version}-%{release}
Provides: arsse-config-fpm = %{version}
Obsoletes: arsse-config-fpm < %{version}
Supplements: packageand(php-fpm:arsse)
%description config-fpm
PHP-FPM process pool configuration for The Arsse
%package config-nginx-fpm
Summary: Nginx Web server configuration for The Arsse using PHP-FPM
Group: Productivity/Networking/Web/Utilities
Requires: arsse-fpm
Requires: nginx
Requires: %{name} = %{version}-%{release}
Provides: arsse-config-nginx-fpm = %{version}
Obsoletes: arsse-config-nginx-fpm < %{version}
Supplements: packageand(apache2:arsse)
%description config-nginx-fpm
Nginx Web server configuration for The Arsse using PHP-FPM. Using Ngix is
generally preferred as it receives more testing.
%package config-apache-fpm
Summary: Apache Web server configuration for The Arsse using PHP-FPM
Group: Productivity/Networking/Web/Utilities
Requires: arsse-fpm
Requires: %{name} = %{version}-%{release}
Requires: apache2 >= 2.4
Provides: arsse-config-apache-fpm = %{version}
Obsoletes: arsse-config-apache-fpm < %{version}
Supplements: packageand(apache2:arsse)
%description config-apache-fpm
Apache Web server configuration for The Arsse using PHP-FPM. Using Ngix is
generally preferred as it receives more testing.
%package -n system-user-arsse
Summary: System user and group arsse
Group: System/Fhs
%{sysusers_requires}
%description -n system-user-arsse
This package provides the system account and group 'arsse'.
%prep
%setup -q -n %{name}
# Patch the executable so it does not use env as the interpreter; RPMLint complains about this
sed -i -s 's|/usr/bin/env php|{_bindir}/php|' dist/arsse
# Remove stray executable
rm -f vendor/nicolus/picofeed/picofeed
# Patch the systemd unit file to remove the binding to the PHP-FPM service
sed -i -s 's|^PartOf=.*||' dist/systemd/arsse-fetch.service
# Patch PHP-FPM pool and Web server configuration with correct socket path
sed -i -s 's|/var/run/php/arsse\.sock|%{socketpath}|' dist/php-fpm.conf dist/nginx/* dist/apache/*
# Patch various files to adjust installation path
sed -i -s 's|/usr/share/arsse/|%{arssepath}/|' dist/arsse dist/nginx/* dist/apache/* dist/tmpfiles.conf
sed -i -s 's|/usr/share/arsse|%{arssepath}|' dist/systemd/arsse-fetch.service
# Patch configuration files to adjust other paths (they're probably already correct)
sed -i -s 's|/etc/arsse/|%{_sysconfdir}/arsse/|' dist/nginx/* dist/apache/* dist/tmpfiles.conf
sed -i -s 's|/usr/bin/|%{_bindir}/|' dist/systemd/arsse-fetch.service
sed -i -s 's|/var/lib|%{_sharedstatedir}|' dist/systemd/arsse-fetch.service dist/tmpfiles.conf dist/config.php
# Patch Web server configuration to use unique hostname; "news" is recommended, but might conflict with other example configuration
sed -i -s 's|news.example.com|arsse.example.com|' dist/nginx/* dist/apache/*
# Comment out any TLS-related configuration in Nginx example
sed -i -s 's|^\([ \t]*\)ssl_|\1#ssl_|' dist/nginx/example.conf
sed -i -s 's|^\([ \t]*\)\(listen \(\[::\]:\)\?443\)|\1#\2|' dist/nginx/example.conf
%build
%sysusers_generate_pre dist/sysuser.conf arsse system-user-arsse.conf
%install
mkdir -p "%{buildroot}%{_mandir}" "%{buildroot}%{_unitdir}" "%{buildroot}%{_sysusersdir}" "%{buildroot}%{_tmpfilesdir}" "%{buildroot}%{_bindir}"
mkdir -p "%{buildroot}%{_sysconfdir}/nginx/vhosts.d" "%{buildroot}%{_sysconfdir}/php7/fpm/php-fpm.d/" "%{buildroot}%{_sysconfdir}/php8/fpm/php-fpm.d/"
mkdir -p "%{buildroot}%{arssepath}" "%{buildroot}%{_sysconfdir}/arsse" "%{buildroot}%{_sysconfdir}/arsse/nginx" "%{buildroot}%{_sysconfdir}/arsse/apache"
cp -r lib locale sql vendor www CHANGELOG UPGRADING README.md arsse.php "%{buildroot}%{arssepath}"
cp -r dist/man/* "%{buildroot}%{_mandir}"
cp dist/systemd/arsse-fetch.service "%{buildroot}%{_unitdir}/arsse.service"
install dist/php-fpm.conf "%{buildroot}%{_sysconfdir}/php7/fpm/php-fpm.d/arsse.conf"
install dist/php-fpm.conf "%{buildroot}%{_sysconfdir}/php8/fpm/php-fpm.d/arsse.conf"
install dist/nginx/arsse*.conf "%{buildroot}%{_sysconfdir}/arsse/nginx"
install dist/nginx/example.conf "%{buildroot}%{_sysconfdir}/nginx/vhosts.d/arsse.conf"
install dist/apache/arsse* "%{buildroot}%{_sysconfdir}/arsse/apache"
install dist/sysuser.conf "%{buildroot}%{_sysusersdir}/system-user-arsse.conf"
install dist/tmpfiles.conf "%{buildroot}%{_tmpfilesdir}/arsse.conf"
install config.defaults.php "%{buildroot}%{_sysconfdir}/arsse"
install -m 640 dist/config.php "%{buildroot}%{_sysconfdir}/arsse/config.php"
install -m 755 dist/arsse "%{buildroot}%{_bindir}/arsse"
%files
%dir %{_datadir}/php
%dir %{_sysconfdir}/arsse
%{arssepath}
%{_sysconfdir}/arsse/config.php
%{_sysconfdir}/arsse/config.defaults.php
%{_mandir}/man*/arsse.*
%{_unitdir}/arsse.service
%{_tmpfilesdir}/arsse.conf
%attr(755, root, root) %{_bindir}/arsse
%license LICENSE AUTHORS
%doc manual/*
%files config-fpm
%dir %{_sysconfdir}/php7
%dir %{_sysconfdir}/php8
%dir %{_sysconfdir}/php7/fpm
%dir %{_sysconfdir}/php8/fpm
%dir %{_sysconfdir}/php7/fpm/php-fpm.d
%dir %{_sysconfdir}/php8/fpm/php-fpm.d
%{_sysconfdir}/php7/fpm/php-fpm.d/arsse.conf
%{_sysconfdir}/php8/fpm/php-fpm.d/arsse.conf
%files config-nginx-fpm
%dir %{_sysconfdir}/arsse
%dir %{_sysconfdir}/arsse/nginx
%dir %{_sysconfdir}/nginx
%dir %{_sysconfdir}/nginx/vhosts.d
%{_sysconfdir}/arsse/nginx/*
%config(noreplace) %{_sysconfdir}/nginx/vhosts.d/arsse.conf
%files config-apache-fpm
%dir %{_sysconfdir}/arsse
%dir %{_sysconfdir}/arsse/apache
%{_sysconfdir}/arsse/apache/arsse*
%files -n system-user-arsse
%{_sysusersdir}/system-user-arsse.conf
%pre
%service_add_pre arsse.service arsse.service
%post
%tmpfiles_create "%{_tmpfilesdir}/arsse.conf"
%service_add_post arsse.service arsse.service
%preun
%service_del_preun arsse.service
%postun
%service_del_postun arsse.service
%service_del_postun_without_restart arsse.service
%pre -n system-user-arsse -f arsse.pre