diff --git a/.gitignore b/.gitignore index 9c2fe06..1b6464b 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/0003-Setup-the-correct-version-number-in-rss2email.py.patch b/0003-Setup-the-correct-version-number-in-rss2email.py.patch deleted file mode 100644 index a2f2269..0000000 --- a/0003-Setup-the-correct-version-number-in-rss2email.py.patch +++ /dev/null @@ -1,23 +0,0 @@ -From: Etienne Millon -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", diff --git a/0006-Prefer-utf8-in-CHARSET_LIST.patch b/0006-Prefer-utf8-in-CHARSET_LIST.patch deleted file mode 100644 index a390ad9..0000000 --- a/0006-Prefer-utf8-in-CHARSET_LIST.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Etienne Millon -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 diff --git a/0008-Fix-encoding-of-From-and-To-headers.patch.diff b/0008-Fix-encoding-of-From-and-To-headers.patch.diff deleted file mode 100644 index a160724..0000000 --- a/0008-Fix-encoding-of-From-and-To-headers.patch.diff +++ /dev/null @@ -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 -+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 -+ 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() diff --git a/README.migrate b/README.migrate new file mode 100644 index 0000000..46c085a --- /dev/null +++ b/README.migrate @@ -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. diff --git a/r2e-migrate b/r2e-migrate new file mode 100755 index 0000000..c741c46 --- /dev/null +++ b/r2e-migrate @@ -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 +# 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() diff --git a/r2e-migrate.1 b/r2e-migrate.1 new file mode 100644 index 0000000..dd53d39 --- /dev/null +++ b/r2e-migrate.1 @@ -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 . diff --git a/rss2email-2.70-config-location.patch b/rss2email-2.70-config-location.patch deleted file mode 100644 index a884141..0000000 --- a/rss2email-2.70-config-location.patch +++ /dev/null @@ -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 - diff --git a/rss2email-3.14-fix-tests-pr-279.patch b/rss2email-3.14-fix-tests-pr-279.patch new file mode 100644 index 0000000..5b5b92e --- /dev/null +++ b/rss2email-3.14-fix-tests-pr-279.patch @@ -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: " +@@ -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). diff --git a/rss2email-3.14-remove-special-bytes.patch b/rss2email-3.14-remove-special-bytes.patch new file mode 100644 index 0000000..79951ee --- /dev/null +++ b/rss2email-3.14-remove-special-bytes.patch @@ -0,0 +1,11 @@ +--- a/test/data/allthingsrss/feed.atom ++++ b/test/data/allthingsrss/feed.atom +@@ -47,7 +47,7 @@ + </ul> + <p>Complete list in the official <a href="http://www.allthingsrss.com/rss2email/changelog">CHANGELOG</a>.</p> + <p><strong>Pause/Unpause</strong></p> +-<p>Through <code>r2e pause <em>n</em></code> where <em>n</em> is a feed number, you can temporarily suspend checking that feed for new content. To start checking it again, simply run <code>r2e unpause <em>n</em></code>. When you <code>r2e list</code>, an asterisk indicates that the feed is currently unpaused and active.</p> ++<p>Through <code>r2e pause <em>n</em></code> where <em>n</em> is a feed number, you can temporarily suspend checking that feed for new content. To start checking it again, simply run <code>r2e unpause <em>n</em></code>. When you <code>r2e list</code>, an asterisk indicates that the feed is currently unpaused and active.</p> + + <p><a href="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/0/da"><img src="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/0/di" border="0" ismap="true"></img></a><br/> + <a href="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/1/da"><img src="http://feedads.g.doubleclick.net/~a/nYgTsIUsS9pmvRZ6092XGGHnNKg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/allthingsrss/hJBr/~4/bT-I0iH2vw8" height="1" width="1"/> diff --git a/rss2email-r2e b/rss2email-r2e deleted file mode 100644 index 7ec377a..0000000 --- a/rss2email-r2e +++ /dev/null @@ -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 diff --git a/rss2email-r2e.1 b/rss2email-r2e.1 deleted file mode 100644 index 1ce5bd7..0000000 --- a/rss2email-r2e.1 +++ /dev/null @@ -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 diff --git a/rss2email.spec b/rss2email.spec index ab83bc4..6d693b3 100644 --- a/rss2email.spec +++ b/rss2email.spec @@ -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 - 2.71-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild +* Fri Sep 19 2025 Python Maint - 3.14-16 +- Rebuilt for Python 3.14.0rc3 bytecode -* Fri Feb 09 2018 Fedora Release Engineering - 2.71-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild +* Fri Aug 15 2025 Python Maint - 3.14-15 +- Rebuilt for Python 3.14.0rc2 bytecode -* Wed Jan 31 2018 Iryna Shcherbina - 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 - 3.14-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jul 11 2025 David Kaufmann - 3.14-13 +- Moved to new python3 build system +- Fix indentation in testcases + +* Tue Jun 03 2025 Python Maint - 3.14-12 +- Rebuilt for Python 3.14 + +* Sat Jan 18 2025 Fedora Release Engineering - 3.14-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Aug 07 2024 Miroslav Suchý - 3.14-10 +- convert license to SPDX + +* Fri Jul 19 2024 Fedora Release Engineering - 3.14-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jun 12 2024 David Kaufmann - 3.14-8 +- Remove special characters from Testcase + +* Fri Jun 07 2024 Python Maint - 3.14-7 +- Rebuilt for Python 3.13 + +* Fri Jan 26 2024 Fedora Release Engineering - 3.14-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 3.14-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jul 21 2023 Fedora Release Engineering - 3.14-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jun 14 2023 Python Maint - 3.14-3 +- Rebuilt for Python 3.12 + +* Fri Jan 20 2023 Fedora Release Engineering - 3.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Aug 27 2022 David Kaufmann - 3.14-1 +- Update to 3.14 + +* Sat Jul 23 2022 Fedora Release Engineering - 3.13.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 28 2022 David Kaufmann - 3.13.1-1 +- Update to 3.13.1 + +* Mon Jun 13 2022 Python Maint - 3.12.3-5 +- Rebuilt for Python 3.11 + +* Fri Jan 21 2022 Fedora Release Engineering - 3.12.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 3.12.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 3.12.3-2 +- Rebuilt for Python 3.10 + +* Fri Mar 19 2021 Fedora Release Monitoring - 3.12.3-1 +- Update to 3.12.3 (#1941090) + +* Wed Jan 27 2021 Fedora Release Engineering - 3.12.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Dec 31 2020 David Kaufmann - 3.12.2-2 +- Update to feedparser 6 + +* Tue Sep 01 2020 David Kaufmann - 3.12.2-1 +- Update to 3.12.2 +- Reference files by tag instead of commit + +* Fri Aug 07 2020 David Kaufmann - 3.12.1-1 +- Update to 3.12.1 + +* Wed Jul 29 2020 Fedora Release Engineering - 3.11-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue May 26 2020 Miro Hrončok - 3.11-4 +- Rebuilt for Python 3.9 + +* Thu Jan 30 2020 Fedora Release Engineering - 3.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Oct 28 2019 David Kaufmann - 3.11-2 +- Clean up spec file a bit +- Get rid of over-globbing +- Add zsh-completion subpackage + +* Mon Oct 28 2019 David Kaufmann - 3.11-1.20191028gitb4eae44 +- Add new `user-agent` attribute for configuring email User-Agent + +* Mon Sep 23 2019 David Kaufmann - 3.10-2.20190909git9c2d407 +- Enable tests +- Use automatically generated dependencies for python packages for f30+ + +* Mon Sep 09 2019 David Kaufmann - 3.10-1.20190909git9c2d407 +- Update to latest git version + +* Mon Aug 12 2019 David Kaufmann - 3.9-3.20190812git4708c4b +- Include package review recommendations + +* Mon Aug 12 2019 David Kaufmann - 3.9-2.20190812git4708c4b +- Update to latest git version +- Fix python version name for EPEL7 + +* Thu Dec 28 2017 Filip Szymański - 3.9-1.20171228gite21e803 +- Update to 3.9 +- Major spec file cleanup * Thu Jul 27 2017 Fedora Release Engineering - 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 - 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 - 2.65-3.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild diff --git a/sources b/sources index 0e5e4ce..68735f8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -7d7dbac5aa181b07261516213a312f39 rss2email-2.71.tar.gz +SHA512 (v3.14.tar.gz) = 42308a3ae2bfe3adaf4b904983c2270a162d268ce5f4357d853a7ba74814d97dc5dc66d7d94ef6b3fbe510e8368361f63a99de814d3388f37b190fa63594a727