File rtorrent.spec of Package rtorrent

#
# spec file for package rtorrent
#
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           rtorrent
Version:        0.15.5
Release:        lp156.1.1
Summary:        Console-based BitTorrent client
License:        SUSE-GPL-2.0+-with-openssl-exception
Group:          Productivity/Networking/File-Sharing
URL:            https://github.com/rakshasa/rtorrent
Source:         https://github.com/rakshasa/rtorrent/releases/download/v%version/%name-%version.tar.gz
Source2:        rtorrent.desktop
# This manpage copied from the 0.9.2 tarball as it was missing in later versions
Source3:        rtorrent.1
Source4:        rtorrent.service
BuildRequires:  autoconf-archive
BuildRequires:  automake
%if 0%{?suse_version} && 0%{?suse_version} < 1600
BuildRequires:  gcc13-c++
%else
BuildRequires:  gcc-c++
%endif
BuildRequires:  libtool
BuildRequires:  ncurses-devel
BuildRequires:  update-desktop-files
BuildRequires:  pkgconfig(cppunit) >= 1.9.6
BuildRequires:  pkgconfig(libcurl) >= 7.15.4
BuildRequires:  pkgconfig(libtorrent) >= %version
BuildRequires:  sysuser-tools
Provides:       bundled(tinyxml2) = 10.0.0
%sysusers_requires

%description
rTorrent is a console-based BitTorrent client. It aims to be a
fully-featured and efficient client with the ability to run in the
background using screen. It supports fast-resume and session
management.

%prep
%autosetup -p1

%build
%if 0%{?suse_version} && 0%{?suse_version} < 1600
export CXX=g++-13
%endif
# It's full of type pun violations
export CFLAGS="%optflags -fno-strict-aliasing"
export CXXFLAGS="$CFLAGS"
autoreconf -fiv
%configure --with-xmlrpc-tinyxml2 --enable-ipv6
%make_build

%install
b="%buildroot"
%make_install
install -Dm0644 "%{S:2}" "$b/%_datadir/applications/%name.desktop"
mkdir -p "$b/%_mandir/man1"
install -pm0644 "%{S:3}" "$b/%_mandir/man1/"
%suse_update_desktop_file -r "%name" Network P2P
install -Dm0644 "%{S:4}" "$b/%_unitdir/rtorrent.service"

echo 'u rtorrent - "rtorrent daemon"' >system-user-rtorrent.conf
mkdir -p "$b/%_sysusersdir"
cp -a system-user-rtorrent.conf "$b/%_sysusersdir/"
%sysusers_generate_pre system-user-rtorrent.conf random system-user-rtorrent.conf

%pre -f random.pre
%service_add_pre rtorrent.service

%post
%service_add_post rtorrent.service

%preun
%service_del_preun rtorrent.service

%postun
%service_del_postun rtorrent.service

%files
%doc doc/rtorrent.rc
%license COPYING
%_bindir/rtorrent
%_datadir/applications/%name.desktop
%_mandir/man1/rtorrent.1*
%_unitdir/rtorrent.service
%_sysusersdir/*

%changelog
* Sun Oct  5 2025 Pavel A. Yakovlev
- Update to release 0.15.7
* Sun Jun 22 2025 Jan Engelhardt <jengelh@inai.de>
- Update to release 0.15.5
  * Fixed corrupted stack in curl stack due to wrong argument type.
  * Fix file descriptor leak in session file saving.
* Mon Jun  2 2025 Jan Engelhardt <jengelh@inai.de>
- Update to release 0.15.4
  * Refactoring of threads, polling and scheduler code.
  * Added `system.files.advise_random.hashing.set` for speeding
    up initial hashing of files in a torrent. This can be used in
    conjunction with `system.files.advise_random.set` to reduce
    disk I/O on SSDs.
  * Enabling `system.files.advise_random.set` will reduce
    unnecessary disk I/O on SSDs, while disabling
    `system.files.advise_random.hashing.set` ensures that the
    initial hashing retains the benefits of sequential disk
    read-ahead.
* Fri May  2 2025 Jan Engelhardt <jengelh@inai.de>
- Update to release 0.15.3
  * Fixed slow SCGI replies
  * Cleaned up thread/scheduler code
- Delete 0001-Added-default-switch-cases-to-RpcManager.patch
  (merged)
* Fri Mar 28 2025 Jan Engelhardt <jengelh@inai.de>
- Update to release 0.15.2
  * Colors, LUA and json-rpc are now supported in the client
- Add 0001-Added-default-switch-cases-to-RpcManager.patch
* Thu Jan  2 2025 Jan Engelhardt <jengelh@inai.de>
- Update to release 0.15.1
  * Resolved scgi software crash with SIGPIPE exception.
* Thu Dec 26 2024 Jan Engelhardt <jengelh@inai.de>
- Update to release 0.15
  * Resolved scgi software crash with SIGPIPE exception.
  * Resolved a crash with the curl stack during shutdown.
* Sun Sep 29 2024 Jan Engelhardt <jengelh@inai.de>
- Update to release 0.10.0
  * A fix for a torrent client stack overflow crash with the lockfile
    buffer.
  * New trackers.delay_scrape command for .rtorrent.rc to avoid
    crashes with thousands of torrents and allow instant startups.
  * A fix for a critical memory leak with RPC commands which may
    waste an alarming amount of memory.
  * A fix for critical torrent client breakage if a power
    outage/failure occurs during a session saving interval
- Delete 0001-utils-lockfile-avoid-stack-overflow-for-lockfile-buf.patch
  (merged)
* Tue Jun 21 2022 Aleksa Sarai <asarai@suse.com>
- Backport fix which resolves a crashing issue on startup on openSUSE.
  https://github.com/rakshasa/rtorrent/pull/1169
  + 0001-utils-lockfile-avoid-stack-overflow-for-lockfile-buf.patch
* Tue Nov 16 2021 Johannes Segitz <jsegitz@suse.com>
- Added hardening to systemd service(s) (bsc#1181400). Modified:
  * rtorrent.service
* Fri Sep  4 2020 Jan Engelhardt <jengelh@inai.de>
- Drop old specfile constructs.
* Fri Jan 24 2020 Jan Engelhardt <jengelh@inai.de>
- Add missing require on useradd.
* Fri Aug 16 2019 Jan Engelhardt <jengelh@inai.de>
- Add missing %%service_* scriptlets
* Wed Jul 24 2019 hiwatari.seiji@gmail.com
- Update to 0.9.8
  * Close log files when reusing a name. (pyroscope)
  * Increased max timeout for tracker requests.
  * Set max piece size 512mb.
  * Switch to C++11 MRT RNG for random bytes. (lps-rocks)
  * Added support for openssl 1.1.
  * Fix honoring throttle.min_peers* settings in rtorrent. (chros)
  * Improved failed tracker bencode parsing. (chros)
  * Added example rtorrent.rc. (g0tmi1k)
  * Added a temporary name filter. (Toff)
  * Added 'log.close' command.
  * Added 'd.tracker_announce.force' command.
  * Added 'event.system.startup_done/shutdown' commands/events. (chros)
  * Added 'd.custom.if_z' command. (pyroscope)
  * Added 'd.multicall.filtered' command. (pyroscope)
  * Added 'event.view.hide/show' commands. (pyroscope)
- Update to 0.9.7
  * Fixed ip filter memory usage. (sallyswiss/chros73)
  * Add space to fmt str in log_gz_file_write. (pastly)
  * Fix compilation issue with gcc v6.x and empty CXXFLAGS. (chros73)
  * Fix BEP7 compatibility with IPv6 trackers and IPv4 peers.
  * Include SCGI/XMLRPC example in rtorrent.rc. (ss23)
  * Handle SIGHUP like SIGINT. (pyroscope)
  * Fix Throttle args. (chros73)
  * Fix missing ranlib - not defined but used. (duraki)
  * Fix no // are at start of expanded paths. (pyroscope)
  * Fix ncurses header include. (theirix)
  * Fix segfault when viewing a magnet download in the leeching view. (slingamn)
- Remove rtorrent-vim package because it was made for the old (now discouraged) config syntax
  * See: https://github.com/rakshasa/rtorrent/wiki/CONFIG-Template
* Mon Dec 11 2017 jengelh@inai.de
- Update to new snapshot 0.9.6.g113
  * Support for new libtorrent API regarding logging file
    descriptors and IPv6 binds.
* Tue Jun  6 2017 jengelh@inai.de
- Update to new snapshot 0.9.6.g93
  * IPv6 support
  * add support for the XDG base dir spec for rtorrent.rc
  * daemonization support
  * maximum supported filesize now 512 GB
- Change from requiring libxmlrpc-c-devel to xmlrpc-c-devel
  [boo#1042228]
* Sun Nov 15 2015 mpluskal@suse.com
- Enable xmlrpc on Tumbleweed
* Fri Nov 13 2015 tampakrap@opensuse.org
- Update to new upstream release 0.9.6
  * Added 'log.open_file_pid' and 'log.open_gz_file_pid' commands
  that appends the pid automatically.
- Moved fully to github, change URL and Source accordingly
* Tue Aug  5 2014 jengelh@inai.de
- It is supposed to be packageand(vim:rtorrent)
* Sun Aug  3 2014 tampakrap@opensuse.org
- Add Supplements: packageand(vim,rtorrent), in order to trigger automatic
  installation for users of both packages. Suggested by dimstar
* Sun Jul 27 2014 tampakrap@opensuse.org
- Add vim as BuildRequirement and Requirement for rtorrent-vim, so that it
  doesn't own vim's directories
* Sat Jul 19 2014 tampakrap@opensuse.org
- Vim syntax file for rTorrent's config file, .rtorrent.rc
  The files are taken from http://www.vim.org/scripts/script.php?script_id=2234
* Sat Jul 19 2014 jengelh@inai.de
- Update to new upstream release 0.9.4
  * Added unordered curve to plot
  * Added 'network.listen.backlog{,.set}' commands
  * Added 'log.open_gz_file' option
* Fri Feb  8 2013 jengelh@inai.de
- Initial package (version 0.9.3) for OpenSUSE
openSUSE Build Service is sponsored by