[gpodder] - Add patches to fix two Fedora bugs, #620584 (problems with the episode list) and #619295 (databa
Ville-Pekka Vainio
vpv at fedoraproject.org
Mon Aug 23 09:00:55 UTC 2010
commit 04bc6d458d749611ace37e4782a1d6eafab73d1a
Author: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>
Date: Mon Aug 23 11:35:27 2010 +0300
- Add patches to fix two Fedora bugs, #620584 (problems with the episode list)
and #619295 (database ProgrammingError)
gpodder.git-6a2c1baf.patch | 83 ++++++++++++++++++++
...-92bf1255c432510f0c3b767d6c928e4e7e68de95.patch | 57 +++++++++++++
gpodder.spec | 12 +++-
3 files changed, 151 insertions(+), 1 deletions(-)
---
diff --git a/gpodder.git-6a2c1baf.patch b/gpodder.git-6a2c1baf.patch
new file mode 100644
index 0000000..b1854c3
--- /dev/null
+++ b/gpodder.git-6a2c1baf.patch
@@ -0,0 +1,83 @@
+From 6a2c1bafbf50bdb48b3479550c9466f9614ab74b Mon Sep 17 00:00:00 2001
+From: Thomas Perl <thp at thpinfo.com>
+Date: Fri, 20 Aug 2010 23:59:24 +0200
+Subject: [PATCH] Always initialize model rows (bug 1099)
+
+Don't append columns and add data later, but
+inject valid data at append time to avoid race
+conditions when trying to read data after the
+append but before data has been filled in.
+---
+ src/gpodder/gtkui/model.py | 43 ++++++++++++++++++++++---------------------
+ 1 files changed, 22 insertions(+), 21 deletions(-)
+
+diff --git a/src/gpodder/gtkui/model.py b/src/gpodder/gtkui/model.py
+index 81d9209..abbb9ba 100644
+--- a/src/gpodder/gtkui/model.py
++++ b/src/gpodder/gtkui/model.py
+@@ -181,13 +181,18 @@ class EpisodeListModel(gtk.ListStore):
+ count = len(episodes)
+
+ for position, episode in enumerate(episodes):
+- iter = self.append()
+- self.set(iter, \
+- self.C_URL, episode.url, \
+- self.C_TITLE, episode.title, \
+- self.C_FILESIZE_TEXT, self._format_filesize(episode), \
+- self.C_EPISODE, episode, \
+- self.C_PUBLISHED_TEXT, episode.cute_pubdate())
++ iter = self.append((episode.url, \
++ episode.title, \
++ self._format_filesize(episode), \
++ episode, \
++ None, \
++ episode.cute_pubdate(), \
++ '', \
++ '', \
++ True, \
++ True, \
++ True))
++
+ self.update_by_iter(iter, downloading, include_description, \
+ generate_thumbnails, reload_from_db=False)
+
+@@ -646,26 +651,22 @@ class PodcastListModel(gtk.ListStore):
+ # Clear the model and update the list of podcasts
+ self.clear()
+
++ def channel_to_row(channel):
++ return (channel.url, '', '', None, channel, \
++ self._get_cover_image(channel), '', True, True, True, \
++ True, True, False)
++
+ if config.podcast_list_view_all and channels:
+ all_episodes = PodcastChannelProxy(db, config, channels)
+- iter = self.append()
+- self.set(iter, \
+- self.C_URL, all_episodes.url, \
+- self.C_CHANNEL, all_episodes, \
+- self.C_COVER, self._get_cover_image(all_episodes), \
+- self.C_SEPARATOR, False)
++ iter = self.append(channel_to_row(all_episodes))
+ self.update_by_iter(iter)
+
+- iter = self.append()
+- self.set(iter, self.C_SEPARATOR, True)
++ # Separator item
++ self.append(('', '', '', None, None, None, '', True, True, \
++ True, True, True, True))
+
+ for channel in channels:
+- iter = self.append()
+- self.set(iter, \
+- self.C_URL, channel.url, \
+- self.C_CHANNEL, channel, \
+- self.C_COVER, self._get_cover_image(channel), \
+- self.C_SEPARATOR, False)
++ iter = self.append(channel_to_row(channel))
+ self.update_by_iter(iter)
+
+ def get_filter_path_from_url(self, url):
+--
+1.6.5.GIT
+
diff --git a/gpodder.git-92bf1255c432510f0c3b767d6c928e4e7e68de95.patch b/gpodder.git-92bf1255c432510f0c3b767d6c928e4e7e68de95.patch
new file mode 100644
index 0000000..c2bd7c2
--- /dev/null
+++ b/gpodder.git-92bf1255c432510f0c3b767d6c928e4e7e68de95.patch
@@ -0,0 +1,57 @@
+From 92bf1255c432510f0c3b767d6c928e4e7e68de95 Mon Sep 17 00:00:00 2001
+From: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>
+Date: Thu, 29 Jul 2010 22:58:13 +0300
+Subject: [PATCH] minidb: Convert values in remove (RH bug 619295, gpo bug 1088)
+
+Make convert an instance method and
+convert the values in remove too.
+
+See also:
+RedHat bug 619295 and gPodder bug 1088
+---
+ src/gpodder/minidb.py | 15 ++++++++-------
+ 1 files changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/src/gpodder/minidb.py b/src/gpodder/minidb.py
+index 6026c9f..8c7ae53 100644
+--- a/src/gpodder/minidb.py
++++ b/src/gpodder/minidb.py
+@@ -81,6 +81,12 @@ class Store(object):
+ self.db.execute('CREATE TABLE %s (%s)' % (table,
+ ', '.join('%s TEXT'%s for s in slots)))
+
++ def convert(self, v):
++ if isinstance(v, str) or isinstance(v, unicode):
++ return v
++ else:
++ return str(v)
++
+ def update(self, o, **kwargs):
+ self.remove(o)
+ for k, v in kwargs.items():
+@@ -100,12 +106,7 @@ class Store(object):
+ # Only save values that have values set (non-None values)
+ slots = [s for s in slots if getattr(o, s, None) is not None]
+
+- def convert(v):
+- if isinstance(v, str) or isinstance(v, unicode):
+- return v
+- else:
+- return str(v)
+- values = [convert(getattr(o, slot)) for slot in slots]
++ values = [self.convert(getattr(o, slot)) for slot in slots]
+ self.db.execute('INSERT INTO %s (%s) VALUES (%s)' % (table,
+ ', '.join(slots), ', '.join('?'*len(slots))), values)
+
+@@ -135,7 +136,7 @@ class Store(object):
+ # Use "None" as wildcard selector in remove actions
+ slots = [s for s in slots if getattr(o, s, None) is not None]
+
+- values = [getattr(o, slot) for slot in slots]
++ values = [self.convert(getattr(o, slot)) for slot in slots]
+ self.db.execute('DELETE FROM %s WHERE %s' % (table,
+ ' AND '.join('%s=?'%s for s in slots)), values)
+
+--
+1.6.5.GIT
+
diff --git a/gpodder.spec b/gpodder.spec
index 5b71c7f..07ba6c6 100644
--- a/gpodder.spec
+++ b/gpodder.spec
@@ -3,13 +3,17 @@
Name: gpodder
Version: 2.7
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Podcast receiver/catcher written in Python
Group: Applications/Multimedia
License: GPLv3
URL: http://gpodder.berlios.de/
Source0: http://download.berlios.de/%{name}/%{name}-%{version}.tar.gz
+# rhbz 620584
+Patch0: gpodder.git-6a2c1baf.patch
+# rhbz 619295
+Patch1: gpodder.git-92bf1255c432510f0c3b767d6c928e4e7e68de95.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
BuildRequires: python-devel, python-feedparser, python-mygpoclient >= 1.4
@@ -30,6 +34,8 @@ It also optionally supports syncing with ipods.
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
%build
make messages
@@ -79,6 +85,10 @@ fi
%{python_sitelib}/%{name}*.egg-info
%changelog
+* Mon Aug 23 2010 Ville-Pekka Vainio <vpivaini AT cs.helsinki.fi> - 2.7-3
+- Add patches to fix two Fedora bugs, #620584 (problems with the episode list)
+ and #619295 (database ProgrammingError)
+
* Wed Jul 21 2010 David Malcolm <dmalcolm at redhat.com> - 2.7-2
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
More information about the scm-commits
mailing list