Compare commits

...
Sign in to create a new pull request.

49 commits

Author SHA1 Message Date
Python Maint
57d6c6ebd7 Rebuilt for Python 3.14.0rc3 bytecode 2025-09-19 14:54:07 +02:00
Python Maint
93b332bd71 Rebuilt for Python 3.14.0rc2 bytecode 2025-08-15 15:16:25 +02:00
Fedora Release Engineering
507c4f3cfd Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 12:09:14 +00:00
David Kaufmann
021dc80086 update changelog 2025-07-11 04:51:53 +02:00
David Kaufmann
6ff4c60941 fix testcases 2025-07-11 04:13:20 +02:00
David Kaufmann
1f962815fb migrate to new python3 build system 2025-07-11 04:10:59 +02:00
Python Maint
76cc9c2e44 Rebuilt for Python 3.14 2025-06-03 11:56:26 +02:00
Fedora Release Engineering
1266f80475 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-18 22:47:38 +00:00
Miroslav Suchý
208aedc597 convert license to SPDX
This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4
2024-08-07 10:11:03 +02:00
Fedora Release Engineering
d2316541f9 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-19 18:53:29 +00:00
David Kaufmann
1a1d92be37 remove special chars 2024-06-12 19:34:26 +02:00
Python Maint
3f13d033ea Rebuilt for Python 3.13 2024-06-07 18:42:31 +02:00
Fedora Release Engineering
2d946775f9 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-26 16:25:03 +00:00
Fedora Release Engineering
e9d3594a33 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-22 12:07:08 +00:00
Fedora Release Engineering
2605fc9922 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-21 17:09:24 +00:00
Python Maint
6f7dbc0770 Rebuilt for Python 3.12 2023-06-14 07:02:49 +02:00
Fedora Release Engineering
f240bccdde Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-20 20:00:50 +00:00
David Kaufmann
628180be47 new sources 2022-08-27 03:17:53 +02:00
David Kaufmann
b7b4c4faf1 update to 3.14 2022-08-27 03:00:58 +02:00
Fedora Release Engineering
0ed5f30068 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-23 01:05:46 +00:00
David Kaufmann
ac08d7b79a update to 3.13.1 2022-06-28 15:22:34 +02:00
Python Maint
2bbad5573a Rebuilt for Python 3.11 2022-06-13 18:41:53 +02:00
Fedora Release Engineering
3b5bb23497 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-21 18:05:58 +00:00
Fedora Release Engineering
e312bcb9f0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 11:39:24 +00:00
Python Maint
fd3bcbeb81 Rebuilt for Python 3.10 2021-06-04 21:13:54 +02:00
David Kaufmann
bb926caa7a update feedparser version patch 2021-03-21 00:18:50 +01:00
Fedora Release Monitoring
db6133151c Update to 3.12.3 (#1941090) 2021-03-20 23:51:54 +01:00
Fedora Release Engineering
0e211a1502 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 15:29:58 +00:00
David Kaufmann
74ddac7103 update dependency feedparser to v6 2021-01-01 00:47:27 +01:00
David Kaufmann
e7e36fac16 new release 2020-09-01 15:13:12 +02:00
David Kaufmann
7cd04d88db build new version 2020-08-10 01:08:40 +02:00
Fedora Release Engineering
519f5d4368 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 05:58:13 +00:00
Miro Hrončok
02df0b84b7 Rebuilt for Python 3.9 2020-05-26 03:49:36 +02:00
David Kaufmann
f007131214 properly use autosetup 2020-05-22 15:57:07 +02:00
David Kaufmann
3e0d1c9209 also use python39 patch 2020-05-22 14:26:23 +02:00
David Kaufmann
2214f65fa7 add python39 patch file 2020-05-22 13:25:29 +02:00
Fedora Release Engineering
0d738da742 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-30 17:55:28 +00:00
David Kaufmann
c13c47558a man-pages actually do need globbing 2019-12-08 23:40:52 +01:00
David Kaufmann
4cb4a2dbc5 new release version for cleanup 2019-12-08 03:36:57 +01:00
David Kaufmann
3ea02598fb update sources file 2019-10-28 23:19:21 +01:00
David Kaufmann
1a33ff4831 update version to 3.11 2019-10-28 23:15:25 +01:00
David Kaufmann
6b463e046f fix mistake in replacing url with url macro 2019-09-24 01:23:53 +02:00
David Kaufmann
2cb5829ac1 update gitignore 2019-09-24 01:01:29 +02:00
David Kaufmann
50c959b50b update to version 3.10 from github:rss2email/rss2email 2019-09-24 00:11:19 +02:00
Mohan Boddu
95cfa3c06e Revert "rss2email fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675897"
Unretirement for https://pagure.io/releng/issue/8831

This reverts commit 49b03ab547.
2019-09-23 15:00:18 -04:00
Fedora Release Engineering
49b03ab547 rss2email fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675897 2019-08-08 16:27:57 +00:00
Fedora Release Engineering
a452a635e9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-26 18:48:52 +00:00
Fedora Release Engineering
4c7eaaa87d - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-02 11:37:57 +00:00
Igor Gnatenko
026415ac7c Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:45 +01:00
14 changed files with 610 additions and 322 deletions

8
.gitignore vendored
View file

@ -1,3 +1,5 @@
rss2email-2.66.tar.gz
/rss2email-2.70.tar.gz
/rss2email-2.71.tar.gz
/rss2email-*.tar.gz
/v3.12.2.tar.gz
/v3.12.3.tar.gz
/v3.13.1.tar.gz
/v3.14.tar.gz

View file

@ -1,23 +0,0 @@
From: Etienne Millon <etienne.millon@gmail.com>
Date: Fri, 26 Aug 2011 19:05:15 +0200
Subject: Setup the correct version number in rss2email.py
This version is 2.71, but __version__ incorrectly states that it is 2.70.
This number is used in the User-Agent string and in error messages.
---
rss2email.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rss2email.py b/rss2email.py
index 0dc2d04..7696d99 100755
--- a/rss2email.py
+++ b/rss2email.py
@@ -15,7 +15,7 @@ Usage:
opmlexport
opmlimport filename
"""
-__version__ = "2.70"
+__version__ = "2.71"
__author__ = "Lindsey Smith (lindsey@allthingsrss.com)"
__copyright__ = "(C) 2004 Aaron Swartz. GNU GPL 2 or 3."
___contributors__ = ["Dean Jackson", "Brian Lalor", "Joey Hess",

View file

@ -1,33 +0,0 @@
From: Etienne Millon <etienne.millon@gmail.com>
Date: Mon, 20 Feb 2012 15:28:52 +0100
Subject: Prefer utf8 in CHARSET_LIST
Bug-Debian: http://bugs.debian.org/659920
---
config.py.example | 2 +-
rss2email.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/config.py.example b/config.py.example
index cdd760b..ee2e004 100755
--- a/config.py.example
+++ b/config.py.example
@@ -91,4 +91,4 @@ PROXY=""
# To most correctly encode emails with international characters, we iterate through the list below and use the first character set that works
# Eventually (and theoretically) ISO-8859-1 and UTF-8 are our catch-all failsafes
-CHARSET_LIST='US-ASCII', 'BIG5', 'ISO-2022-JP', 'ISO-8859-1', 'UTF-8'
+CHARSET_LIST='US-ASCII', 'ISO-8859-1', 'UTF-8', 'BIG5', 'ISO-2022-JP'
diff --git a/rss2email.py b/rss2email.py
index 9735b28..69998db 100755
--- a/rss2email.py
+++ b/rss2email.py
@@ -108,7 +108,7 @@ PROXY=""
# To most correctly encode emails with international characters, we iterate through the list below and use the first character set that works
# Eventually (and theoretically) ISO-8859-1 and UTF-8 are our catch-all failsafes
-CHARSET_LIST='US-ASCII', 'BIG5', 'ISO-2022-JP', 'ISO-8859-1', 'UTF-8'
+CHARSET_LIST='US-ASCII', 'ISO-8859-1', 'UTF-8', 'BIG5', 'ISO-2022-JP'
from email.MIMEText import MIMEText
from email.Header import Header

View file

@ -1,47 +0,0 @@
--- rss2email-2.71/debian/patches/0008-Fix-encoding-of-From-and-To-headers.patch 1970-01-01 01:00:00.000000000 +0100
+++ rss2email-2.71/debian/patches/0008-Fix-encoding-of-From-and-To-headers.patch 2013-01-23 16:37:07.000000000 +0100
@@ -0,0 +1,44 @@
+From: Thorsten Glaser <t.glaser@tarent.de>
+Date: Wed, 23 Jan 2013 15:25:35 +0100
+Subject: Fix encoding of From and To headers
+
+Debian-Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=638994
+---
+ rss2email.py | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/rss2email.py b/rss2email.py
+index a6c3cbe..bdfb41a 100755
+--- a/rss2email.py
++++ b/rss2email.py
+@@ -114,6 +114,12 @@ from email.MIMEText import MIMEText
+ from email.Header import Header as _Header
+ from email.Utils import parseaddr, formataddr
+
++def name_format(realname, mailaddress):
++ if not realname:
++ return mailaddress
++ foo = formataddr(("." + realname, mailaddress))
++ return foo.replace(".", "", 1)
++
+ class Header(_Header):
+ # Work-around for <http://bugs.python.org/issue5871>
+ def append(self, s=None, *args, **kwargs):
+@@ -166,7 +172,7 @@ def send(sender, recipient, subject, body, contenttype, extraheaders=None, smtps
+
+ # Create the message ('plain' stands for Content-Type: text/plain)
+ msg = MIMEText(body.encode(body_charset), contenttype, body_charset)
+- msg['To'] = formataddr((recipient_name, recipient_addr))
++ msg['To'] = name_format(recipient_name, recipient_addr)
+ msg['Subject'] = Header(unicode(subject), header_charset)
+ for hdr in extraheaders.keys():
+ try:
+@@ -174,7 +180,7 @@ def send(sender, recipient, subject, body, contenttype, extraheaders=None, smtps
+ except:
+ msg[hdr] = Header(extraheaders[hdr])
+
+- fromhdr = formataddr((sender_name, sender_addr))
++ fromhdr = name_format(sender_name, sender_addr)
+ msg['From'] = fromhdr
+
+ msg_as_string = msg.as_string()

7
README.migrate Normal file
View file

@ -0,0 +1,7 @@
rss2email 3.x introduces a new, incompatible format for configuration and
feed data. Please review the r2e(1) manpage for details on the new
configuration format.
You can migrate (parts of) your data, using the provided r2e-migrate
executable: it will set up your default email address, feed list, and
already-seen database.

153
r2e-migrate Executable file
View file

@ -0,0 +1,153 @@
#!/usr/bin/python3
#
# Migrate data from the rss2email 2.x format to the 3.x format.
#
# Copyright (c) 2013, Etienne Millon <me@emillon.org>
# Redistributable under the GPL version 2 or later
#
# Please report bugs and suggestion on the Debian bugtracker using the
# "reportbug rss2email" command.
#
# Changelog:
#
# v6 (2017-12-28)
# - ported to Python 3 using 2to3
#
# v5 (2015-07-04)
# - support per-feed addresses
#
# v4 (2014-06-10)
# - support XDG directories
#
# v3 (2014-02-04)
# - Write status file (already-seen DB)
# - Fix path in error message
#
# v2 (2013-09-17)
# - Preserve paused status (Denis Laxalde)
#
# v1 (2013-08-12)
# - Migrate feed names only.
#
import json
import os.path
import pickle
import string
import subprocess
import sys
import xdg.BaseDirectory
class Feed:
def __init__(self, url, to):
self.url, self.etag, self.modified, self.seen = url, None, None, {}
self.active = True
self.to = to
def __repr__(self):
fmt = '\n'.join(['Feed(url={url},',
' etag={etag},',
' modified={modified},',
' seen={seen},',
' active={active},',
' to={to},',
')',
])
return fmt.format(**self.__dict__)
def not_empty(g):
try:
next(g)
return True
except StopIteration:
return False
def new_db_exists():
config = xdg.BaseDirectory.load_config_paths('rss2email.cfg')
data = xdg.BaseDirectory.load_data_paths('rss2email.json')
return not_empty(config) or not_empty(data)
def set_email(s):
return subprocess.call(['r2e', 'email', s])
def slugify_char(c):
allowed = string.ascii_letters + string.digits + '._-'
if c in allowed:
return c
else:
return '_'
def slugify(s):
return ''.join([slugify_char(c) for c in s])
def add(url, name, to):
extra_args = []
if to is not None:
extra_args = [to]
return subprocess.call(['r2e', 'add', name, url] + extra_args)
def pause(name):
return subprocess.call(['r2e', 'pause', name])
def main():
if new_db_exists():
print("""
It seems that a rss2email 3.x database already exists, exiting.
If you want to import your old (rss2email 2.x) database, please remove
~/.config/rss2email.cfg and ~/.local/share/rss2email.json (or XDG
equivalents) and re-run r2e-migrate.
""")
sys.exit(1)
old_feed_data_file = os.path.expanduser('~/.rss2email/feeds.dat')
with open(old_feed_data_file) as f:
data = pickle.load(f)
email = data[0]
feeds = data[1:]
status = {'version': 2,
'feeds': [],
}
print('Default email address: {}'.format(email))
set_email(email)
print('Adding feeds:')
for feed in feeds:
url = feed.url
print(url)
name = slugify(url)
add(url, name, feed.to)
if not feed.active:
pause(name)
modified = None
if feed.modified:
modified = str(feed.modified)
feed_status = {'seen': {},
'etag': feed.etag,
'name': str(name),
'modified': modified,
}
for k, v in list(feed.seen.items()):
feed_status['seen'][k] = {'id': v}
status['feeds'].append(feed_status)
# save_data_path would work but rss2email uses a bare file
data_dir = xdg.BaseDirectory.xdg_data_home
new_status_file = os.path.join(data_dir, 'rss2email.json')
with open(new_status_file, 'w') as statf:
json.dump(status, statf)
if __name__ == '__main__':
main()

24
r2e-migrate.1 Normal file
View file

@ -0,0 +1,24 @@
.TH r2e\-migrate 1 "2013\-02\-04"
.SH NAME
r2e\-migrate \- Migrate your data from rss2email 2.x to rss2email 3.x.
.SH USAGE
.IP
.nf
\f[C]
r2e\-migrate
\f[]
.fi
.PP
Please note that you may still have to adapt your configuration.
See \f[C]r2e(1)\f[].
.SH FILES
.PP
2.x versions used to store configuration in
\f[C]~/.rss2email/config.py\f[] and data in
\f[C]~/.rss2email/feeds.dat\f[].
.PP
Now 3.x stores its configuration in
\f[C]$XDG_CONFIG_HOME/rss2email.cfg\f[] and data in
\f[C]$XDG_DATA_HOME/rss2email.json\f[].
.SH AUTHORS
Etienne Millon <me@emillon.org>.

View file

@ -1,22 +0,0 @@
diff -Nur rss2email-2.70-orig/rss2email.py rss2email-2.70/rss2email.py
--- rss2email-2.70-orig/rss2email.py 2010-12-17 19:29:34.000000000 +0100
+++ rss2email-2.70/rss2email.py 2011-01-12 18:57:25.775331913 +0100
@@ -254,11 +254,13 @@
# Read options from config file if present.
import sys
-sys.path.insert(0,".")
-try:
- from config import *
-except:
- pass
+import os
+cfgpaths = [os.path.join(os.getcwd(),"config.py"),
+ os.path.join(os.environ["HOME"],".rss2email/config.py"),]
+for cfgfile in cfgpaths:
+ if os.path.exists(cfgfile):
+ execfile(cfgfile)
+ break
warn = sys.stderr

View file

@ -0,0 +1,234 @@
diff --git a/test/data/tails/1.expected b/test/data/tails/1.expected
index cd6238c..0feef24 100644
--- a/test/data/tails/1.expected
+++ b/test/data/tails/1.expected
@@ -362,48 +362,48 @@ YzEuCgpUbyBkbyBhbiBhdXRvbWF0aWMgdXBncmFkZSB0byBUYWlscyA0LjExfnJjMToKCiAgICAx
LiBTdGFydCBUYWlscyA0LjIgb3IgbGF0ZXIgYW5kIFtzZXQgYW4gYWRtaW5pc3RyYXRpb24gcGFz
c3dvcmRdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvZG9jL2ZpcnN0X3N0ZXBzL3dlbGNvbWVfc2Ny
ZWVuL2FkbWluaXN0cmF0aW9uX3Bhc3N3b3JkL2luZGV4LmVuLmh0bWwpLgoKICAgIDIuIFJ1biB0
-aGlzIGNvbW1hbmQgaW4gYSBfVGVybWluYWxfIDoKICAgICAgICAKICAgICAgICAgICAgICAgIGVj
-aG8gVEFJTFNfQ0hBTk5FTD1cImFscGhhXCIgfCBzdWRvIHRlZSAtYSAvZXRjL29zLXJlbGVhc2Ug
-JiYgXAogICAgICAgICAgICAgdGFpbHMtdXBncmFkZS1mcm9udGVuZC13cmFwcGVyCiAgICAgICAg
-CgpFbnRlciB0aGUgYWRtaW5pc3RyYXRpb24gcGFzc3dvcmQgd2hlbiBhc2tlZCBmb3IgdGhlICJw
-YXNzd29yZCBmb3IgYW1uZXNpYSIuCgogICAgMy4gQWZ0ZXIgdGhlIHVwZ3JhZGUgaXMgYXBwbGll
-ZCwgcmVzdGFydCBUYWlscyBhbmQgY2hvb3NlICoqQXBwbGljYXRpb25zICDilrggVGFpbHMg4pa4
-IEFib3V0IFRhaWxzKiogdG8gdmVyaWZ5IHRoYXQgeW91IGFyZSBydW5uaW5nIFRhaWxzIDQuMTF+
-cmMxLgoKICAqIElmIHlvdSBjYW5ub3QgZG8gYW4gYXV0b21hdGljIHVwZ3JhZGUgb3IgaWYgVGFp
-bHMgZmFpbHMgdG8gc3RhcnQgYWZ0ZXIgYW4gYXV0b21hdGljIHVwZ3JhZGUsIHBsZWFzZSB0cnkg
-dG8gZG8gYSBbbWFudWFsIHVwZ3JhZGVdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvZG9jL3VwZ3Jh
-ZGUvaW5kZXguZW4uaHRtbCNtYW51YWwpLgoKIyMgVG8gZG93bmxvYWQgNC4xMX5yYzEKCiMjIyBE
-aXJlY3QgZG93bmxvYWQKCiAgKiBbRm9yIFVTQiBzdGlja3MgKFVTQiBpbWFnZSldKGh0dHA6Ly9k
-bC5hbW5lc2lhLmJvdW0ub3JnL3RhaWxzL2FscGhhL3RhaWxzLWFtZDY0LTQuMTF+cmMxL3RhaWxz
-LWFtZDY0LTQuMTF+cmMxLmltZykgKFs/XShodHRwczovL3RhaWxzLmJvdW0ub3JnL2lraXdpa2ku
-Y2dpP2RvPWNyZWF0ZSZmcm9tPW5ld3MlMkZ0ZXN0XzQuMTEtcmMxJnBhZ2U9dG9ycmVudHMlMkZm
-aWxlcyUyRnRhaWxzLWFtZDY0LTQuMTF+cmMxLmltZy5zaWcpT3BlblBHUCBzaWduYXR1cmUpCgog
-ICogW0ZvciBEVkRzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzIChJU08gaW1hZ2UpXShodHRwOi8vZGwu
-YW1uZXNpYS5ib3VtLm9yZy90YWlscy9hbHBoYS90YWlscy1hbWQ2NC00LjExfnJjMS90YWlscy1h
-bWQ2NC00LjExfnJjMS5pc28pIChbP10oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy9pa2l3aWtpLmNn
-aT9kbz1jcmVhdGUmZnJvbT1uZXdzJTJGdGVzdF80LjExLXJjMSZwYWdlPXRvcnJlbnRzJTJGZmls
-ZXMlMkZ0YWlscy1hbWQ2NC00LjExfnJjMS5pc28uc2lnKU9wZW5QR1Agc2lnbmF0dXJlKQoKIyMj
-IEJpdFRvcnJlbnQgZG93bmxvYWQKCiAgKiBbRm9yIFVTQiBzdGlja3MgKFVTQiBpbWFnZSldKGh0
-dHBzOi8vdGFpbHMuYm91bS5vcmcvdG9ycmVudHMvZmlsZXMvdGFpbHMtYW1kNjQtNC4xMX5yYzEu
-aW1nLnRvcnJlbnQpCgogICogW0ZvciBEVkRzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzIChJU08gaW1h
-Z2UpXShodHRwczovL3RhaWxzLmJvdW0ub3JnL3RvcnJlbnRzL2ZpbGVzL3RhaWxzLWFtZDY0LTQu
-MTF+cmMxLmlzby50b3JyZW50KQoKIyMgVG8gaW5zdGFsbCBUYWlscyBvbiBhIG5ldyBVU0Igc3Rp
-Y2sKCkZvbGxvdyBvdXIgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9uczoKCiAgKiBbSW5zdGFsbCBm
-cm9tIFdpbmRvd3NdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvaW5zdGFsbC93aW4vdXNiL2luZGV4
-LmVuLmh0bWwpCiAgKiBbSW5zdGFsbCBmcm9tIG1hY09TXShodHRwczovL3RhaWxzLmJvdW0ub3Jn
-L2luc3RhbGwvbWFjL3VzYi9pbmRleC5lbi5odG1sKQogICogW0luc3RhbGwgZnJvbSBMaW51eF0o
-aHR0cHM6Ly90YWlscy5ib3VtLm9yZy9pbnN0YWxsL2xpbnV4L3VzYi9pbmRleC5lbi5odG1sKQoK
-QWxsIHRoZSBkYXRhIG9uIHRoaXMgVVNCIHN0aWNrIHdpbGwgYmUgbG9zdC4KCiMgV2hhdCdzIGNv
-bWluZyB1cD8KClRhaWxzIDQuMTEgaXMgW3NjaGVkdWxlZF0oaHR0cHM6Ly90YWlscy5ib3VtLm9y
-Zy9jb250cmlidXRlL2NhbGVuZGFyLykgZm9yClNlcHRlbWJlciAyMi4KCkhhdmUgYSBsb29rIGF0
-IG91ciBbcm9hZG1hcF0oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy9jb250cmlidXRlL3JvYWRtYXAp
-IHRvIHNlZQp3aGVyZSB3ZSBhcmUgaGVhZGluZyB0by4KCldlIG5lZWQgeW91ciBoZWxwIGFuZCB0
-aGVyZSBhcmUgbWFueSB3YXlzIHRvIFtjb250cmlidXRlIHRvClRhaWxzXShodHRwczovL3RhaWxz
-LmJvdW0ub3JnL2NvbnRyaWJ1dGUvaW5kZXguZW4uaHRtbCkKKFtkb25hdGluZ10oaHR0cHM6Ly90
-YWlscy5ib3VtLm9yZy9kb25hdGUvP3I9NC4xMS1yYzEpIGlzIG9ubHkgb25lIG9mIHRoZW0pLgpD
-b21lIFt0YWxrIHRvIHVzXShodHRwczovL3RhaWxzLmJvdW0ub3JnL2Fib3V0L2NvbnRhY3QvaW5k
-ZXguZW4uaHRtbCN0YWlscy0KZGV2KSEKCgoKVVJMOiBodHRwczovL3RhaWxzLmJvdW0ub3JnL25l
-d3MvdGVzdF80LjExLXJjMS8=
+aGlzIGNvbW1hbmQgaW4gYSBfVGVybWluYWxfIDoKICAgICAgICAgICAKICAgICAgICAgICBlY2hv
+IFRBSUxTX0NIQU5ORUw9XCJhbHBoYVwiIHwgc3VkbyB0ZWUgLWEgL2V0Yy9vcy1yZWxlYXNlICYm
+IFwKICAgICAgICAgICAgICAgIHRhaWxzLXVwZ3JhZGUtZnJvbnRlbmQtd3JhcHBlcgogICAgICAg
+ICAgIAoKRW50ZXIgdGhlIGFkbWluaXN0cmF0aW9uIHBhc3N3b3JkIHdoZW4gYXNrZWQgZm9yIHRo
+ZSAicGFzc3dvcmQgZm9yIGFtbmVzaWEiLgoKICAgIDMuIEFmdGVyIHRoZSB1cGdyYWRlIGlzIGFw
+cGxpZWQsIHJlc3RhcnQgVGFpbHMgYW5kIGNob29zZSAqKkFwcGxpY2F0aW9ucyAg4pa4IFRhaWxz
+IOKWuCBBYm91dCBUYWlscyoqIHRvIHZlcmlmeSB0aGF0IHlvdSBhcmUgcnVubmluZyBUYWlscyA0
+LjExfnJjMS4KCiAgKiBJZiB5b3UgY2Fubm90IGRvIGFuIGF1dG9tYXRpYyB1cGdyYWRlIG9yIGlm
+IFRhaWxzIGZhaWxzIHRvIHN0YXJ0IGFmdGVyIGFuIGF1dG9tYXRpYyB1cGdyYWRlLCBwbGVhc2Ug
+dHJ5IHRvIGRvIGEgW21hbnVhbCB1cGdyYWRlXShodHRwczovL3RhaWxzLmJvdW0ub3JnL2RvYy91
+cGdyYWRlL2luZGV4LmVuLmh0bWwjbWFudWFsKS4KCiMjIFRvIGRvd25sb2FkIDQuMTF+cmMxCgoj
+IyMgRGlyZWN0IGRvd25sb2FkCgogICogW0ZvciBVU0Igc3RpY2tzIChVU0IgaW1hZ2UpXShodHRw
+Oi8vZGwuYW1uZXNpYS5ib3VtLm9yZy90YWlscy9hbHBoYS90YWlscy1hbWQ2NC00LjExfnJjMS90
+YWlscy1hbWQ2NC00LjExfnJjMS5pbWcpIChbP10oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy9pa2l3
+aWtpLmNnaT9kbz1jcmVhdGUmZnJvbT1uZXdzJTJGdGVzdF80LjExLXJjMSZwYWdlPXRvcnJlbnRz
+JTJGZmlsZXMlMkZ0YWlscy1hbWQ2NC00LjExfnJjMS5pbWcuc2lnKU9wZW5QR1Agc2lnbmF0dXJl
+KQoKICAqIFtGb3IgRFZEcyBhbmQgdmlydHVhbCBtYWNoaW5lcyAoSVNPIGltYWdlKV0oaHR0cDov
+L2RsLmFtbmVzaWEuYm91bS5vcmcvdGFpbHMvYWxwaGEvdGFpbHMtYW1kNjQtNC4xMX5yYzEvdGFp
+bHMtYW1kNjQtNC4xMX5yYzEuaXNvKSAoWz9dKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvaWtpd2lr
+aS5jZ2k/ZG89Y3JlYXRlJmZyb209bmV3cyUyRnRlc3RfNC4xMS1yYzEmcGFnZT10b3JyZW50cyUy
+RmZpbGVzJTJGdGFpbHMtYW1kNjQtNC4xMX5yYzEuaXNvLnNpZylPcGVuUEdQIHNpZ25hdHVyZSkK
+CiMjIyBCaXRUb3JyZW50IGRvd25sb2FkCgogICogW0ZvciBVU0Igc3RpY2tzIChVU0IgaW1hZ2Up
+XShodHRwczovL3RhaWxzLmJvdW0ub3JnL3RvcnJlbnRzL2ZpbGVzL3RhaWxzLWFtZDY0LTQuMTF+
+cmMxLmltZy50b3JyZW50KQoKICAqIFtGb3IgRFZEcyBhbmQgdmlydHVhbCBtYWNoaW5lcyAoSVNP
+IGltYWdlKV0oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy90b3JyZW50cy9maWxlcy90YWlscy1hbWQ2
+NC00LjExfnJjMS5pc28udG9ycmVudCkKCiMjIFRvIGluc3RhbGwgVGFpbHMgb24gYSBuZXcgVVNC
+IHN0aWNrCgpGb2xsb3cgb3VyIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnM6CgogICogW0luc3Rh
+bGwgZnJvbSBXaW5kb3dzXShodHRwczovL3RhaWxzLmJvdW0ub3JnL2luc3RhbGwvd2luL3VzYi9p
+bmRleC5lbi5odG1sKQogICogW0luc3RhbGwgZnJvbSBtYWNPU10oaHR0cHM6Ly90YWlscy5ib3Vt
+Lm9yZy9pbnN0YWxsL21hYy91c2IvaW5kZXguZW4uaHRtbCkKICAqIFtJbnN0YWxsIGZyb20gTGlu
+dXhdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvaW5zdGFsbC9saW51eC91c2IvaW5kZXguZW4uaHRt
+bCkKCkFsbCB0aGUgZGF0YSBvbiB0aGlzIFVTQiBzdGljayB3aWxsIGJlIGxvc3QuCgojIFdoYXQn
+cyBjb21pbmcgdXA/CgpUYWlscyA0LjExIGlzIFtzY2hlZHVsZWRdKGh0dHBzOi8vdGFpbHMuYm91
+bS5vcmcvY29udHJpYnV0ZS9jYWxlbmRhci8pIGZvcgpTZXB0ZW1iZXIgMjIuCgpIYXZlIGEgbG9v
+ayBhdCBvdXIgW3JvYWRtYXBdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvY29udHJpYnV0ZS9yb2Fk
+bWFwKSB0byBzZWUKd2hlcmUgd2UgYXJlIGhlYWRpbmcgdG8uCgpXZSBuZWVkIHlvdXIgaGVscCBh
+bmQgdGhlcmUgYXJlIG1hbnkgd2F5cyB0byBbY29udHJpYnV0ZSB0bwpUYWlsc10oaHR0cHM6Ly90
+YWlscy5ib3VtLm9yZy9jb250cmlidXRlL2luZGV4LmVuLmh0bWwpCihbZG9uYXRpbmddKGh0dHBz
+Oi8vdGFpbHMuYm91bS5vcmcvZG9uYXRlLz9yPTQuMTEtcmMxKSBpcyBvbmx5IG9uZSBvZiB0aGVt
+KS4KQ29tZSBbdGFsayB0byB1c10oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy9hYm91dC9jb250YWN0
+L2luZGV4LmVuLmh0bWwjdGFpbHMtCmRldikhCgoKClVSTDogaHR0cHM6Ly90YWlscy5ib3VtLm9y
+Zy9uZXdzL3Rlc3RfNC4xMS1yYzEv
SENT BY: "Tails - News: <author>" <user@rss2email.invalid>
@@ -796,17 +796,17 @@ For more details, read our
# Known issues
* Ledger wallets are not detected by _Electrum_ , with the following error message returned. ([#18080](https://gitlab.tails.boum.org/tails/tails/-/issues/18080))
-
+
"No hardware device detected"
-
+
Please try to execute the following command in a [root
terminal](https://tails.boum.org/doc/first_steps/welcome_screen/administration_password/index.en.html#open_root_terminal)
before starting _Electrum_ :
-
- apt update && apt install python3-btchip/testing
-
+
+ apt update && apt install python3-btchip/testing
+
See the list of [long-standing
issues](https://tails.boum.org/support/known_issues/index.en.html).
diff --git a/test/data/tails/2.expected b/test/data/tails/2.expected
index 7b48a67..7e9fd49 100644
--- a/test/data/tails/2.expected
+++ b/test/data/tails/2.expected
@@ -933,47 +933,47 @@ bHMgNC4xMX5yYzE6CgogICAgMS4gU3RhcnQgVGFpbHMgNC4yIG9yIGxhdGVyIGFuZCBbc2V0IGFu
IGFkbWluaXN0cmF0aW9uIHBhc3N3b3JkXShodHRwczovL3RhaWxzLmJvdW0ub3JnL2RvYy9maXJz
dF9zdGVwcy93ZWxjb21lX3NjcmVlbi9hZG1pbmlzdHJhdGlvbl9wYXNzd29yZC9pbmRleC5lbi5o
dG1sKS4KCiAgICAyLiBSdW4gdGhpcyBjb21tYW5kIGluIGEgX1Rlcm1pbmFsXyA6CiAgICAgICAg
-CiAgICAgICAgICAgICAgICBlY2hvIFRBSUxTX0NIQU5ORUw9XCJhbHBoYVwiIHwgc3VkbyB0ZWUg
-LWEgL2V0Yy9vcy1yZWxlYXNlICYmIFwKICAgICAgICAgICAgIHRhaWxzLXVwZ3JhZGUtZnJvbnRl
-bmQtd3JhcHBlcgogICAgICAgIAoKRW50ZXIgdGhlIGFkbWluaXN0cmF0aW9uIHBhc3N3b3JkIHdo
-ZW4gYXNrZWQgZm9yIHRoZSAicGFzc3dvcmQgZm9yIGFtbmVzaWEiLgoKICAgIDMuIEFmdGVyIHRo
-ZSB1cGdyYWRlIGlzIGFwcGxpZWQsIHJlc3RhcnQgVGFpbHMgYW5kIGNob29zZSAqKkFwcGxpY2F0
-aW9ucyAg4pa4IFRhaWxzIOKWuCBBYm91dCBUYWlscyoqIHRvIHZlcmlmeSB0aGF0IHlvdSBhcmUg
-cnVubmluZyBUYWlscyA0LjExfnJjMS4KCiAgKiBJZiB5b3UgY2Fubm90IGRvIGFuIGF1dG9tYXRp
-YyB1cGdyYWRlIG9yIGlmIFRhaWxzIGZhaWxzIHRvIHN0YXJ0IGFmdGVyIGFuIGF1dG9tYXRpYyB1
-cGdyYWRlLCBwbGVhc2UgdHJ5IHRvIGRvIGEgW21hbnVhbCB1cGdyYWRlXShodHRwczovL3RhaWxz
-LmJvdW0ub3JnL2RvYy91cGdyYWRlL2luZGV4LmVuLmh0bWwjbWFudWFsKS4KCiMjIFRvIGRvd25s
-b2FkIDQuMTF+cmMxCgojIyMgRGlyZWN0IGRvd25sb2FkCgogICogW0ZvciBVU0Igc3RpY2tzIChV
-U0IgaW1hZ2UpXShodHRwOi8vZGwuYW1uZXNpYS5ib3VtLm9yZy90YWlscy9hbHBoYS90YWlscy1h
-bWQ2NC00LjExfnJjMS90YWlscy1hbWQ2NC00LjExfnJjMS5pbWcpIChbP10oaHR0cHM6Ly90YWls
-cy5ib3VtLm9yZy9pa2l3aWtpLmNnaT9kbz1jcmVhdGUmZnJvbT1uZXdzJTJGdGVzdF80LjExLXJj
-MSZwYWdlPXRvcnJlbnRzJTJGZmlsZXMlMkZ0YWlscy1hbWQ2NC00LjExfnJjMS5pbWcuc2lnKU9w
-ZW5QR1Agc2lnbmF0dXJlKQoKICAqIFtGb3IgRFZEcyBhbmQgdmlydHVhbCBtYWNoaW5lcyAoSVNP
-IGltYWdlKV0oaHR0cDovL2RsLmFtbmVzaWEuYm91bS5vcmcvdGFpbHMvYWxwaGEvdGFpbHMtYW1k
-NjQtNC4xMX5yYzEvdGFpbHMtYW1kNjQtNC4xMX5yYzEuaXNvKSAoWz9dKGh0dHBzOi8vdGFpbHMu
-Ym91bS5vcmcvaWtpd2lraS5jZ2k/ZG89Y3JlYXRlJmZyb209bmV3cyUyRnRlc3RfNC4xMS1yYzEm
-cGFnZT10b3JyZW50cyUyRmZpbGVzJTJGdGFpbHMtYW1kNjQtNC4xMX5yYzEuaXNvLnNpZylPcGVu
-UEdQIHNpZ25hdHVyZSkKCiMjIyBCaXRUb3JyZW50IGRvd25sb2FkCgogICogW0ZvciBVU0Igc3Rp
-Y2tzIChVU0IgaW1hZ2UpXShodHRwczovL3RhaWxzLmJvdW0ub3JnL3RvcnJlbnRzL2ZpbGVzL3Rh
-aWxzLWFtZDY0LTQuMTF+cmMxLmltZy50b3JyZW50KQoKICAqIFtGb3IgRFZEcyBhbmQgdmlydHVh
-bCBtYWNoaW5lcyAoSVNPIGltYWdlKV0oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy90b3JyZW50cy9m
-aWxlcy90YWlscy1hbWQ2NC00LjExfnJjMS5pc28udG9ycmVudCkKCiMjIFRvIGluc3RhbGwgVGFp
-bHMgb24gYSBuZXcgVVNCIHN0aWNrCgpGb2xsb3cgb3VyIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlv
-bnM6CgogICogW0luc3RhbGwgZnJvbSBXaW5kb3dzXShodHRwczovL3RhaWxzLmJvdW0ub3JnL2lu
-c3RhbGwvd2luL3VzYi9pbmRleC5lbi5odG1sKQogICogW0luc3RhbGwgZnJvbSBtYWNPU10oaHR0
-cHM6Ly90YWlscy5ib3VtLm9yZy9pbnN0YWxsL21hYy91c2IvaW5kZXguZW4uaHRtbCkKICAqIFtJ
-bnN0YWxsIGZyb20gTGludXhdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvaW5zdGFsbC9saW51eC91
-c2IvaW5kZXguZW4uaHRtbCkKCkFsbCB0aGUgZGF0YSBvbiB0aGlzIFVTQiBzdGljayB3aWxsIGJl
-IGxvc3QuCgojIFdoYXQncyBjb21pbmcgdXA/CgpUYWlscyA0LjExIGlzIFtzY2hlZHVsZWRdKGh0
-dHBzOi8vdGFpbHMuYm91bS5vcmcvY29udHJpYnV0ZS9jYWxlbmRhci8pIGZvcgpTZXB0ZW1iZXIg
-MjIuCgpIYXZlIGEgbG9vayBhdCBvdXIgW3JvYWRtYXBdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcv
-Y29udHJpYnV0ZS9yb2FkbWFwKSB0byBzZWUKd2hlcmUgd2UgYXJlIGhlYWRpbmcgdG8uCgpXZSBu
-ZWVkIHlvdXIgaGVscCBhbmQgdGhlcmUgYXJlIG1hbnkgd2F5cyB0byBbY29udHJpYnV0ZSB0bwpU
-YWlsc10oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy9jb250cmlidXRlL2luZGV4LmVuLmh0bWwpCihb
-ZG9uYXRpbmddKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvZG9uYXRlLz9yPTQuMTEtcmMxKSBpcyBv
-bmx5IG9uZSBvZiB0aGVtKS4KQ29tZSBbdGFsayB0byB1c10oaHR0cHM6Ly90YWlscy5ib3VtLm9y
-Zy9hYm91dC9jb250YWN0L2luZGV4LmVuLmh0bWwjdGFpbHMtCmRldikhCgpVUkw6IDxodHRwczov
-L3RhaWxzLmJvdW0ub3JnL25ld3MvdGVzdF80LjExLXJjMS8+Cgo=
+ICAgCiAgICAgICAgICAgZWNobyBUQUlMU19DSEFOTkVMPVwiYWxwaGFcIiB8IHN1ZG8gdGVlIC1h
+IC9ldGMvb3MtcmVsZWFzZSAmJiBcCiAgICAgICAgICAgICAgICB0YWlscy11cGdyYWRlLWZyb250
+ZW5kLXdyYXBwZXIKICAgICAgICAgICAKCkVudGVyIHRoZSBhZG1pbmlzdHJhdGlvbiBwYXNzd29y
+ZCB3aGVuIGFza2VkIGZvciB0aGUgInBhc3N3b3JkIGZvciBhbW5lc2lhIi4KCiAgICAzLiBBZnRl
+ciB0aGUgdXBncmFkZSBpcyBhcHBsaWVkLCByZXN0YXJ0IFRhaWxzIGFuZCBjaG9vc2UgKipBcHBs
+aWNhdGlvbnMgIOKWuCBUYWlscyDilrggQWJvdXQgVGFpbHMqKiB0byB2ZXJpZnkgdGhhdCB5b3Ug
+YXJlIHJ1bm5pbmcgVGFpbHMgNC4xMX5yYzEuCgogICogSWYgeW91IGNhbm5vdCBkbyBhbiBhdXRv
+bWF0aWMgdXBncmFkZSBvciBpZiBUYWlscyBmYWlscyB0byBzdGFydCBhZnRlciBhbiBhdXRvbWF0
+aWMgdXBncmFkZSwgcGxlYXNlIHRyeSB0byBkbyBhIFttYW51YWwgdXBncmFkZV0oaHR0cHM6Ly90
+YWlscy5ib3VtLm9yZy9kb2MvdXBncmFkZS9pbmRleC5lbi5odG1sI21hbnVhbCkuCgojIyBUbyBk
+b3dubG9hZCA0LjExfnJjMQoKIyMjIERpcmVjdCBkb3dubG9hZAoKICAqIFtGb3IgVVNCIHN0aWNr
+cyAoVVNCIGltYWdlKV0oaHR0cDovL2RsLmFtbmVzaWEuYm91bS5vcmcvdGFpbHMvYWxwaGEvdGFp
+bHMtYW1kNjQtNC4xMX5yYzEvdGFpbHMtYW1kNjQtNC4xMX5yYzEuaW1nKSAoWz9dKGh0dHBzOi8v
+dGFpbHMuYm91bS5vcmcvaWtpd2lraS5jZ2k/ZG89Y3JlYXRlJmZyb209bmV3cyUyRnRlc3RfNC4x
+MS1yYzEmcGFnZT10b3JyZW50cyUyRmZpbGVzJTJGdGFpbHMtYW1kNjQtNC4xMX5yYzEuaW1nLnNp
+ZylPcGVuUEdQIHNpZ25hdHVyZSkKCiAgKiBbRm9yIERWRHMgYW5kIHZpcnR1YWwgbWFjaGluZXMg
+KElTTyBpbWFnZSldKGh0dHA6Ly9kbC5hbW5lc2lhLmJvdW0ub3JnL3RhaWxzL2FscGhhL3RhaWxz
+LWFtZDY0LTQuMTF+cmMxL3RhaWxzLWFtZDY0LTQuMTF+cmMxLmlzbykgKFs/XShodHRwczovL3Rh
+aWxzLmJvdW0ub3JnL2lraXdpa2kuY2dpP2RvPWNyZWF0ZSZmcm9tPW5ld3MlMkZ0ZXN0XzQuMTEt
+cmMxJnBhZ2U9dG9ycmVudHMlMkZmaWxlcyUyRnRhaWxzLWFtZDY0LTQuMTF+cmMxLmlzby5zaWcp
+T3BlblBHUCBzaWduYXR1cmUpCgojIyMgQml0VG9ycmVudCBkb3dubG9hZAoKICAqIFtGb3IgVVNC
+IHN0aWNrcyAoVVNCIGltYWdlKV0oaHR0cHM6Ly90YWlscy5ib3VtLm9yZy90b3JyZW50cy9maWxl
+cy90YWlscy1hbWQ2NC00LjExfnJjMS5pbWcudG9ycmVudCkKCiAgKiBbRm9yIERWRHMgYW5kIHZp
+cnR1YWwgbWFjaGluZXMgKElTTyBpbWFnZSldKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvdG9ycmVu
+dHMvZmlsZXMvdGFpbHMtYW1kNjQtNC4xMX5yYzEuaXNvLnRvcnJlbnQpCgojIyBUbyBpbnN0YWxs
+IFRhaWxzIG9uIGEgbmV3IFVTQiBzdGljawoKRm9sbG93IG91ciBpbnN0YWxsYXRpb24gaW5zdHJ1
+Y3Rpb25zOgoKICAqIFtJbnN0YWxsIGZyb20gV2luZG93c10oaHR0cHM6Ly90YWlscy5ib3VtLm9y
+Zy9pbnN0YWxsL3dpbi91c2IvaW5kZXguZW4uaHRtbCkKICAqIFtJbnN0YWxsIGZyb20gbWFjT1Nd
+KGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvaW5zdGFsbC9tYWMvdXNiL2luZGV4LmVuLmh0bWwpCiAg
+KiBbSW5zdGFsbCBmcm9tIExpbnV4XShodHRwczovL3RhaWxzLmJvdW0ub3JnL2luc3RhbGwvbGlu
+dXgvdXNiL2luZGV4LmVuLmh0bWwpCgpBbGwgdGhlIGRhdGEgb24gdGhpcyBVU0Igc3RpY2sgd2ls
+bCBiZSBsb3N0LgoKIyBXaGF0J3MgY29taW5nIHVwPwoKVGFpbHMgNC4xMSBpcyBbc2NoZWR1bGVk
+XShodHRwczovL3RhaWxzLmJvdW0ub3JnL2NvbnRyaWJ1dGUvY2FsZW5kYXIvKSBmb3IKU2VwdGVt
+YmVyIDIyLgoKSGF2ZSBhIGxvb2sgYXQgb3VyIFtyb2FkbWFwXShodHRwczovL3RhaWxzLmJvdW0u
+b3JnL2NvbnRyaWJ1dGUvcm9hZG1hcCkgdG8gc2VlCndoZXJlIHdlIGFyZSBoZWFkaW5nIHRvLgoK
+V2UgbmVlZCB5b3VyIGhlbHAgYW5kIHRoZXJlIGFyZSBtYW55IHdheXMgdG8gW2NvbnRyaWJ1dGUg
+dG8KVGFpbHNdKGh0dHBzOi8vdGFpbHMuYm91bS5vcmcvY29udHJpYnV0ZS9pbmRleC5lbi5odG1s
+KQooW2RvbmF0aW5nXShodHRwczovL3RhaWxzLmJvdW0ub3JnL2RvbmF0ZS8/cj00LjExLXJjMSkg
+aXMgb25seSBvbmUgb2YgdGhlbSkuCkNvbWUgW3RhbGsgdG8gdXNdKGh0dHBzOi8vdGFpbHMuYm91
+bS5vcmcvYWJvdXQvY29udGFjdC9pbmRleC5lbi5odG1sI3RhaWxzLQpkZXYpIQoKVVJMOiA8aHR0
+cHM6Ly90YWlscy5ib3VtLm9yZy9uZXdzL3Rlc3RfNC4xMS1yYzEvPgoK
--===============...==--
@@ -1951,17 +1951,17 @@ For more details, read our
# Known issues
* Ledger wallets are not detected by _Electrum_ , with the following error message returned. ([#18080](https://gitlab.tails.boum.org/tails/tails/-/issues/18080))
-
+
"No hardware device detected"
-
+
Please try to execute the following command in a [root
terminal](https://tails.boum.org/doc/first_steps/welcome_screen/administration_password/index.en.html#open_root_terminal)
before starting _Electrum_ :
-
- apt update && apt install python3-btchip/testing
-
+
+ apt update && apt install python3-btchip/testing
+
See the list of [long-standing
issues](https://tails.boum.org/support/known_issues/index.en.html).

View file

@ -0,0 +1,11 @@
--- a/test/data/allthingsrss/feed.atom
+++ b/test/data/allthingsrss/feed.atom
@@ -47,7 +47,7 @@
&lt;/ul&gt;
&lt;p&gt;Complete list in the official &lt;a href="http://www.allthingsrss.com/rss2email/changelog"&gt;CHANGELOG&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pause/Unpause&lt;/strong&gt;&lt;/p&gt;
-&lt;p&gt;Through &lt;code&gt;r2e pause &lt;em&gt;n&lt;/em&gt;&lt;/code&gt; where &lt;em&gt;n&lt;/em&gt; is a feed number, you can temporarily suspend checking that feed for new content. To start checking it again, simply run &lt;code&gt;r2e unpause &lt;em&gt;n&lt;/em&gt;&lt;/code&gt;. When you &lt;code&gt;r2e list&lt;/code&gt;, an asterisk indicates that the feed is currently unpaused and active.&lt;/p&gt;
+&lt;p&gt;Through &lt;code&gt;r2e pause &lt;em&gt;n&lt;/em&gt;&lt;/code&gt; where &lt;em&gt;n&lt;/em&gt; is a feed number, you can temporarily suspend checking that feed for new content. To start checking it again, simply run &lt;code&gt;r2e unpause &lt;em&gt;n&lt;/em&gt;&lt;/code&gt;. When you &lt;code&gt;r2e list&lt;/code&gt;, an asterisk indicates that the feed is currently unpaused and active.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/allthingsrss/hJBr/~4/bT-I0iH2vw8" height="1" width="1"/&gt;</content>

View file

@ -1,24 +0,0 @@
#!/bin/sh
datadir=@datadir@
r2ehome=${datadir}/rss2email
cfgtemplate=${r2ehome}/config.py.example
dotr2e=${HOME}/.rss2email
if [ ! -e ${dotr2e} ]
then
mkdir ${dotr2e}
fi
if [ ! -e ${dotr2e}/config.py ] && [ -e ${cfgtemplate} ]
then
cp -a ${cfgtemplate} ${dotr2e}/config.py
fi
if [ "${1}" = "--feedext" ] && [ "${2}" ]
then
fileext="${2}"
shift 2
exec python ${r2ehome}/rss2email.py ${dotr2e}/feeds.dat."${fileext}" "$@"
else
exec python ${r2ehome}/rss2email.py ${dotr2e}/feeds.dat "$@"
fi

View file

@ -1,94 +0,0 @@
.TH R2E 1
.SH NAME
r2e \- receive RSS feeds by email
.SH SYNOPSIS
.B r2e action [options]
.SH DESCRIPTION
.BR r2e
is a simple program which you can run in your crontab.
It watches RSS feeds and sends you a nicely formatted email message
for each new item.
.P
The program is configured by ~/.rss2email/config.py
.P
For a quick start with r2e, try these steps:
.P
.RS
.nf
.BI "r2e new " your@address
.BI "r2e add " http://feed.url/somewhere.rss
.BI "r2e run "
.RE
.P
The last command should eventually be put into your crontab, if you
want things be sent you automatically.
.P
It is possible to use authenticated feeds using the following syntax:
.P
.RS
.nf
.BI "r2e add " http://user:password@example.com/feed
.RE
.SH ACTIONS
.TP
.B new [youremail]
Create a new feedfile. If the second option is specified, it sets the
default email address that mails are sent to.
.TP
.B add url [youremail]
Subscribe to a feed. The first option is the URL of the feed.
The optional second option is the email address to send new items to.
Repeat for each feed you want to subscribe to.
.TP
.B run [\-\-no\-send] [num]
Scan the feeds and send emails for new items. This can be run in a cron
job.
.P
The \-\-no\-send option stops r2e from sending any email. This can be
useful the first time you run it, as otherwise it would send every
available story.
.P
If a number is specified, r2e will only download that feed. The list
command lists the feed numbers.
.TP
.B email yournewemail
Change the default email address.
.TP
.B list
List all your currently subscribed feeds.
.TP
.B delete n
Delete a feed, using its number from the list command.
.TP
.B pause n
Temporarily ignore a feed. A paused feed won't be updated at all.
.TP
.B unpause n
Re-enable updates from a feed.
.TP
.B opmlimport url
Import feeds from an OPML file.
.TP
.B opmlexport
Export feeds to standard output, as an OPML file.
.SH "CONFIGURATION"
The program's behavior can be controlled via the ~/.rss2email/config.py
config file. The file is a python file, so variables are set using a syntax
like this: VARIABLE = "value"
.P
If the value is a number, the quotes may be omitted. Most configuration
variables in the file are boolean values, where a 1 indicates the option is
set, and a 0 disables it.
.P
See the example config.py file for a full list of available configuration
variables.
.SH FILES
.TP
.B ~/.rss2email/feeds.dat
The database of feeds. Use r2e to add, remove, or modify feeds, do not edit
it directly.
.TP
.B ~/.rss2email/config.py
If this file exists, it is read to configure the program.
.SH AUTHOR
Aaron Swartz <rss2email@aaronsw.com>

View file

@ -1,107 +1,207 @@
Name: rss2email
Version: 2.71
Release: 14%{?dist}
Version: 3.14
Release: 16%{?dist}
Summary: Deliver news from RSS feeds to your SMTP server as text or HTML mail
Group: Applications/Internet
License: GPLv2 or GPLv3
URL: http://www.allthingsrss.com/rss2email/
Source0: http://www.allthingsrss.com/rss2email/rss2email-%{version}.tar.gz
# Fedora variant of the "r2e" shell-wrapper script to run rss2email.py
# in its home directory.
Source3: rss2email-r2e
# man page taken from
# http://ftp.de.debian.org/debian/pool/main/r/rss2email/rss2email_2.71-2.debian.tar.gz
# but with a few modifications and fixes
Source4: rss2email-r2e.1
# Let rss2email also look for ${HOME}/.rss2email/config.py
# Remove the sys.path.insert(0,'.') module search path list alteration.
# Problem and intended purpose of the patch reported upstream.
Patch0: rss2email-2.70-config-location.patch
# Patches included in Debian package.
Patch1003: 0003-Setup-the-correct-version-number-in-rss2email.py.patch
Patch1006: 0006-Prefer-utf8-in-CHARSET_LIST.patch
Patch1008: 0008-Fix-encoding-of-From-and-To-headers.patch.diff
# Automatically converted from old format: GPLv2+ or GPLv3+ - review is highly recommended.
License: GPL-2.0-or-later OR GPL-3.0-or-later
URL: https://github.com/%{name}/%{name}
Source0: %{url}/archive/v%{version}.tar.gz
# Migration tool (rss2email 2.x to rss2email 3.x) from https://github.com/emillon/rss2email-debian
Source1: r2e-migrate
Source2: r2e-migrate.1
Source3: README.migrate
Patch1: rss2email-3.14-remove-special-bytes.patch
Patch2: rss2email-3.14-fix-tests-pr-279.patch
BuildArch: noarch
# These Python modules are imported by rss2email.
# The rss2email tarball contains copies of them, because some dists ship
# old modules which result in rss2email bug reports. We want to use the
# external packages due to Fedora packaging policies.
#
# 2011-01-12
# - feedparser in Fedora 14 : 4.1
# - feedparser in rss2email 2.66 to 2.70 : 4.2-pre
# 2011-04-11
# - feedparser 5.0.2 in Fedora >= 14
# - html2text 3.02 on its way to Fedora >= 15
Requires: python2-feedparser >= 5.0.1
Requires: python2-html2text >= 3.01
BuildRequires: python3-devel
BuildRequires: python3-feedparser >= 6.0.5
BuildRequires: python3-html2text >= 2018.1.9
BuildRequires: python3-beautifulsoup4
Recommends: python3-beautifulsoup4
Recommends: esmtp
# r2e-migrate
Requires: python3-pyxdg
%description
rss2email lets you subscribe to a list of XML newsfeeds (RSS or Atom). It can
%{name} lets you subscribe to a list of XML news feeds (RSS or Atom). It can
parse them regularly with the help of cron and send new items to you by email.
An HTML mail will be send in the default configuration to the local SMTP server.
See the manual page r2e for details on how to set up rss2email.
See the manual page r2e for details on how to set up %{name}.
%package zsh-completion
Summary: zsh-completion files for rss2email
BuildArch: noarch
Supplements: (rss2email and zsh)
Requires: zsh
Requires: rss2email
%description zsh-completion
This package provides %{summary}.
%prep
# 2.71 tarball contains bad file permissions
# even for the top dir
%setup -q -c -n %{name}-fakeroot
chmod +x *
chmod +rw * -R
cp -a %{name}-%{version}/* .
%autosetup -p1
chmod -x CHANGELOG readme* config*
# prepare the custom "r2e" wrapper script
cat %{SOURCE3} | sed -e 's!@datadir@!%{_datadir}!' > r2e
cp -p %{SOURCE3} .
%patch0 -p1 -b .config-location
%patch1003 -p1 -b .correct-version-number
%patch1006 -p1 -b .prefer-utf8-in-charset-list
%patch1008 -p1 -b .fix-encoding-of-from-and-to-headers
sed -i -e 's/\r//' CHANGELOG rss2email.py config.py.example
%generate_buildrequires
%pyproject_buildrequires
%build
%pyproject_wheel
%install
mkdir -p \
$RPM_BUILD_ROOT%{_bindir}/ \
$RPM_BUILD_ROOT%{_datadir}/%{name}/ \
$RPM_BUILD_ROOT%{_mandir}/man1/
%pyproject_install
%pyproject_save_files -L %{name}
install -p -m 0755 rss2email.py $RPM_BUILD_ROOT%{_datadir}/%{name}/
install -p -m 0755 r2e $RPM_BUILD_ROOT%{_bindir}/r2e
install -p -m 0644 %{SOURCE4} $RPM_BUILD_ROOT%{_mandir}/man1/r2e.1
# the copy in docdir may not be present for an --excludedocs install
install -p -m 0644 config.py.example $RPM_BUILD_ROOT%{_datadir}/%{name}/
install -D -m 644 -p completion/r2e.zsh %{buildroot}%{_datadir}/zsh/functions/Completion/Unix/_r2e
install -D -m 644 -p r2e.1 %{buildroot}%{_mandir}/man1/r2e.1
install -D -m 755 -p %{SOURCE1} %{buildroot}%{_bindir}/r2e-migrate
install -D -m 644 -p %{SOURCE2} %{buildroot}%{_mandir}/man1/r2e-migrate.1
%files
%doc CHANGELOG readme.html config.py.example
%{_bindir}/*
%{_datadir}/%{name}/
%{_mandir}/man1/*
%check
%pyproject_check_import
PATH="${PATH}:%{buildroot}%{_bindir}" PYTHONPATH=%{buildroot}%{python3_sitelib} %{__python3} ./test/test.py
%files -f %{pyproject_files}
%license COPYING
%doc AUTHORS CHANGELOG README.rst README.migrate
%{_bindir}/r2e
%{_bindir}/r2e-migrate
%{_mandir}/man1/r2e.1*
%{_mandir}/man1/r2e-migrate.1*
%files zsh-completion
%{_datadir}/zsh/functions/Completion/Unix/_r2e
%changelog
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.71-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Sep 19 2025 Python Maint <python-maint@redhat.com> - 3.14-16
- Rebuilt for Python 3.14.0rc3 bytecode
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.71-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Aug 15 2025 Python Maint <python-maint@redhat.com> - 3.14-15
- Rebuilt for Python 3.14.0rc2 bytecode
* Wed Jan 31 2018 Iryna Shcherbina <ishcherb@redhat.com> - 2.71-12
- Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.14-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Fri Jul 11 2025 David Kaufmann <astra@ionic.at> - 3.14-13
- Moved to new python3 build system
- Fix indentation in testcases
* Tue Jun 03 2025 Python Maint <python-maint@redhat.com> - 3.14-12
- Rebuilt for Python 3.14
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.14-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Aug 07 2024 Miroslav Suchý <msuchy@redhat.com> - 3.14-10
- convert license to SPDX
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.14-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Wed Jun 12 2024 David Kaufmann <astra@ionic.at> - 3.14-8
- Remove special characters from Testcase
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 3.14-7
- Rebuilt for Python 3.13
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.14-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.14-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.14-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Jun 14 2023 Python Maint <python-maint@redhat.com> - 3.14-3
- Rebuilt for Python 3.12
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.14-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sat Aug 27 2022 David Kaufmann <astra@ionic.at> - 3.14-1
- Update to 3.14
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.13.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jun 28 2022 David Kaufmann <astra@ionic.at> - 3.13.1-1
- Update to 3.13.1
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 3.12.3-5
- Rebuilt for Python 3.11
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 3.12.3-2
- Rebuilt for Python 3.10
* Fri Mar 19 2021 Fedora Release Monitoring <release-monitoring@fedoraproject.org> - 3.12.3-1
- Update to 3.12.3 (#1941090)
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Dec 31 2020 David Kaufmann <astra@ionic.at> - 3.12.2-2
- Update to feedparser 6
* Tue Sep 01 2020 David Kaufmann <astra@ionic.at> - 3.12.2-1
- Update to 3.12.2
- Reference files by tag instead of commit
* Fri Aug 07 2020 David Kaufmann <astra@ionic.at> - 3.12.1-1
- Update to 3.12.1
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.11-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 3.11-4
- Rebuilt for Python 3.9
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.11-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Oct 28 2019 David Kaufmann <astra@ionic.at> - 3.11-2
- Clean up spec file a bit
- Get rid of over-globbing
- Add zsh-completion subpackage
* Mon Oct 28 2019 David Kaufmann <astra@ionic.at> - 3.11-1.20191028gitb4eae44
- Add new `user-agent` attribute for configuring email User-Agent
* Mon Sep 23 2019 David Kaufmann <astra@ionic.at> - 3.10-2.20190909git9c2d407
- Enable tests
- Use automatically generated dependencies for python packages for f30+
* Mon Sep 09 2019 David Kaufmann <astra@ionic.at> - 3.10-1.20190909git9c2d407
- Update to latest git version
* Mon Aug 12 2019 David Kaufmann <astra@ionic.at> - 3.9-3.20190812git4708c4b
- Include package review recommendations
* Mon Aug 12 2019 David Kaufmann <astra@ionic.at> - 3.9-2.20190812git4708c4b
- Update to latest git version
- Fix python version name for EPEL7
* Thu Dec 28 2017 Filip Szymański <fszymanski@fedoraproject.org> - 3.9-1.20171228gite21e803
- Update to 3.9
- Major spec file cleanup
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.71-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
@ -156,7 +256,7 @@ install -p -m 0644 config.py.example $RPM_BUILD_ROOT%{_datadir}/%{name}/
- Various minor spec file adjustments.
* Sun Jul 04 2010 Thorsten Leemhuis <fedora [AT] leemhuis [DOT] info> - 2.66-1
- update to 2.66, which now is shipped in a tarball
- update to 2.66, which now is shipped in a tarball
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.65-3.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

View file

@ -1 +1 @@
7d7dbac5aa181b07261516213a312f39 rss2email-2.71.tar.gz
SHA512 (v3.14.tar.gz) = 42308a3ae2bfe3adaf4b904983c2270a162d268ce5f4357d853a7ba74814d97dc5dc66d7d94ef6b3fbe510e8368361f63a99de814d3388f37b190fa63594a727