From 87a994c14ce8c9430ba7f240c151473aea366f29 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Sat, 8 Sep 2012 09:54:23 +0200 Subject: supybot: import from rawhide --- Supybot-0.83.4.1-karma-plugin.patch | 184 ++++++++++++++++++++++++++++++++++++ supybot-0.83.4.1-json.patch | 30 ++++++ supybot.spec | 179 +++++++++++++++++++++++++++++++++++ 3 files changed, 393 insertions(+) create mode 100644 Supybot-0.83.4.1-karma-plugin.patch create mode 100644 supybot-0.83.4.1-json.patch create mode 100644 supybot.spec diff --git a/Supybot-0.83.4.1-karma-plugin.patch b/Supybot-0.83.4.1-karma-plugin.patch new file mode 100644 index 0000000..1cad0bf --- /dev/null +++ b/Supybot-0.83.4.1-karma-plugin.patch @@ -0,0 +1,184 @@ +diff -uNr Supybot-0.83.4.1-orig/plugins/Karma/plugin.py Supybot-0.83.4.1/plugins/Karma/plugin.py +--- Supybot-0.83.4.1-orig/plugins/Karma/plugin.py 2009-05-25 12:38:12.000000000 -0500 ++++ Supybot-0.83.4.1/plugins/Karma/plugin.py 2010-06-03 12:17:20.355768834 -0500 +@@ -49,7 +49,7 @@ + + def _getDb(self, channel): + try: +- import sqlite ++ from pysqlite2 import dbapi2 + except ImportError: + raise callbacks.Error, 'You need to have PySQLite installed to ' \ + 'use Karma. Download it at ' \ +@@ -58,9 +58,9 @@ + if filename in self.dbs: + return self.dbs[filename] + if os.path.exists(filename): +- self.dbs[filename] = sqlite.connect(filename) ++ self.dbs[filename] = dbapi2.connect(filename) + return self.dbs[filename] +- db = sqlite.connect(filename) ++ db = dbapi2.connect(filename) + self.dbs[filename] = db + cursor = db.cursor() + cursor.execute("""CREATE TABLE karma ( +@@ -80,12 +80,16 @@ + db = self._getDb(channel) + thing = thing.lower() + cursor = db.cursor() +- cursor.execute("""SELECT added, subtracted FROM karma +- WHERE normalized=%s""", thing) +- if cursor.rowcount == 0: ++ sql = """SELECT added, subtracted FROM karma ++ WHERE normalized='%s'""" % thing ++ cursor.execute(sql) ++ results = cursor.fetchall() ++ print results ++ if results == []: + return None + else: +- return map(int, cursor.fetchone()) ++ return results[0] ++ #return map(int, results) + + def gets(self, channel, things): + db = self._getDb(channel) +@@ -93,7 +97,7 @@ + normalizedThings = dict(zip(map(lambda s: s.lower(), things), things)) + criteria = ' OR '.join(['normalized=%s'] * len(normalizedThings)) + sql = """SELECT name, added-subtracted FROM karma +- WHERE %s ORDER BY added-subtracted DESC""" % criteria ++ WHERE '%s' ORDER BY added-subtracted DESC""" % criteria + cursor.execute(sql, *normalizedThings) + L = [(name, int(karma)) for (name, karma) in cursor.fetchall()] + for (name, _) in L: +@@ -106,53 +110,49 @@ + db = self._getDb(channel) + cursor = db.cursor() + cursor.execute("""SELECT name, added-subtracted FROM karma +- ORDER BY added-subtracted DESC LIMIT %s""", limit) ++ ORDER BY added-subtracted DESC LIMIT '%s'""" % limit) + return [(t[0], int(t[1])) for t in cursor.fetchall()] + + def bottom(self, channel, limit): + db = self._getDb(channel) + cursor = db.cursor() + cursor.execute("""SELECT name, added-subtracted FROM karma +- ORDER BY added-subtracted ASC LIMIT %s""", limit) ++ ORDER BY added-subtracted ASC LIMIT '%s'""" % limit) + return [(t[0], int(t[1])) for t in cursor.fetchall()] + + def rank(self, channel, thing): + db = self._getDb(channel) + cursor = db.cursor() + cursor.execute("""SELECT added-subtracted FROM karma +- WHERE name=%s""", thing) +- if cursor.rowcount == 0: ++ WHERE name='%s'""" % thing) ++ if cursor.rowcount <= 0: + return None +- karma = int(cursor.fetchone()[0]) ++ karma = int(cursor.fetchall()[0]) + cursor.execute("""SELECT COUNT(*) FROM karma +- WHERE added-subtracted > %s""", karma) +- rank = int(cursor.fetchone()[0]) ++ WHERE added-subtracted > '%s'""" % karma) ++ rank = int(cursor.fetchall()[0]) + return rank+1 + + def size(self, channel): + db = self._getDb(channel) + cursor = db.cursor() + cursor.execute("""SELECT COUNT(*) FROM karma""") +- return int(cursor.fetchone()[0]) ++ return int(cursor.fetchall()[0]) + + def increment(self, channel, name): + db = self._getDb(channel) + cursor = db.cursor() + normalized = name.lower() +- cursor.execute("""INSERT INTO karma VALUES (NULL, %s, %s, 0, 0)""", +- name, normalized) +- cursor.execute("""UPDATE karma SET added=added+1 +- WHERE normalized=%s""", normalized) ++ cursor.execute("""INSERT INTO karma VALUES (NULL, '%s', '%s', 0, 0)""" % (name, normalized)) ++ cursor.execute("""UPDATE karma SET added=added+1 WHERE normalized='%s'""" % normalized) + db.commit() + + def decrement(self, channel, name): + db = self._getDb(channel) + cursor = db.cursor() + normalized = name.lower() +- cursor.execute("""INSERT INTO karma VALUES (NULL, %s, %s, 0, 0)""", +- name, normalized) +- cursor.execute("""UPDATE karma SET subtracted=subtracted+1 +- WHERE normalized=%s""", normalized) ++ cursor.execute("""INSERT INTO karma VALUES (NULL, '%s', '%s', 0, 0)""" % (name, normalized)) ++ cursor.execute("""UPDATE karma SET subtracted=subtracted+1 WHERE normalized='%s'""" % normalized) + db.commit() + + def most(self, channel, kind, limit): +@@ -164,7 +164,7 @@ + orderby = 'added+subtracted' + else: + raise ValueError, 'invalid kind' +- sql = """SELECT name, %s FROM karma ORDER BY %s DESC LIMIT %s""" % \ ++ sql = """SELECT name, '%s' FROM karma ORDER BY '%s' DESC LIMIT '%s'""" % \ + (orderby, orderby, limit) + db = self._getDb(channel) + cursor = db.cursor() +@@ -176,7 +176,7 @@ + cursor = db.cursor() + normalized = name.lower() + cursor.execute("""UPDATE karma SET subtracted=0, added=0 +- WHERE normalized=%s""", normalized) ++ WHERE normalized='%s'""" % normalized) + db.commit() + + def dump(self, channel, filename): +@@ -200,13 +200,13 @@ + for (name, added, subtracted) in reader: + normalized = name.lower() + cursor.execute("""INSERT INTO karma +- VALUES (NULL, %s, %s, %s, %s)""", +- name, normalized, added, subtracted) ++ VALUES (NULL, '%s', '%s', '%s', '%s')""" % ++ (name, normalized, added, subtracted)) + db.commit() + fd.close() + + KarmaDB = plugins.DB('Karma', +- {'sqlite': SqliteKarmaDB}) ++ {'pysqlite2': SqliteKarmaDB}) + + class Karma(callbacks.Plugin): + callBefore = ('Factoids', 'MoobotFactoids', 'Infobot') +@@ -249,6 +249,10 @@ + elif thing: + self.db.decrement(channel, self._normalizeThing(thing)) + self._respond(irc, channel) ++ t = self.db.get(channel, thing) ++ (added, subtracted) = t ++ total = added - subtracted ++ irc.reply('Karma for %s (%s)' % (thing, total)) + + def invalidCommand(self, irc, msg, tokens): + channel = msg.args[0] +diff -uNr Supybot-0.83.4.1-orig/plugins/Karma/test.py Supybot-0.83.4.1/plugins/Karma/test.py +--- Supybot-0.83.4.1-orig/plugins/Karma/test.py 2009-05-25 12:38:12.000000000 -0500 ++++ Supybot-0.83.4.1/plugins/Karma/test.py 2010-06-03 12:12:41.090762813 -0500 +@@ -30,11 +30,11 @@ + from supybot.test import * + + try: +- import sqlite ++ import pysqlite2 + except ImportError: +- sqlite = None ++ pysqlite2 = None + +-if sqlite is not None: ++if pysqlite2 is not None: + class KarmaTestCase(ChannelPluginTestCase): + plugins = ('Karma',) + def testKarma(self): diff --git a/supybot-0.83.4.1-json.patch b/supybot-0.83.4.1-json.patch new file mode 100644 index 0000000..f6606fe --- /dev/null +++ b/supybot-0.83.4.1-json.patch @@ -0,0 +1,30 @@ +diff --git a/plugins/Google/plugin.py b/plugins/Google/plugin.py +index e1b6bee..98fd7dd 100644 +--- a/plugins/Google/plugin.py ++++ b/plugins/Google/plugin.py +@@ -42,15 +42,21 @@ import supybot.ircmsgs as ircmsgs + import supybot.ircutils as ircutils + import supybot.callbacks as callbacks + ++simplejson = None ++ ++try: ++ simplejson = utils.python.universalImport('json') ++except ImportError: ++ pass ++ + try: +- simplejson = utils.python.universalImport('json', 'simplejson', +- 'local.simplejson') + # The 3rd party simplejson module was included in Python 2.6 and renamed to + # json. Unfortunately, this conflicts with the 3rd party json module. + # Luckily, the 3rd party json module has a different interface so we test + # to make sure we aren't using it. +- if hasattr(simplejson, 'read'): +- raise ImportError ++ if simplejson is None or hasattr(simplejson, 'read'): ++ simplejson = utils.python.universalImport('simplejson', ++ 'local.simplejson') + except ImportError: + raise callbacks.Error, \ + 'You need Python2.6 or the simplejson module installed to use ' \ diff --git a/supybot.spec b/supybot.spec new file mode 100644 index 0000000..1d582ea --- /dev/null +++ b/supybot.spec @@ -0,0 +1,179 @@ +%global origname Supybot +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} + +Name: supybot +Version: 0.83.4.1 +Release: 9%{?dist} +Summary: Cross-platform IRC bot written in Python + +Group: Applications/Internet +# The entire source code is BSD except for +# Supybot-0.83.4/plugins/Math/local/convertcore.py which is GPLv2 +License: BSD and GPLv2 +URL: http://supybot.com +Source0: http://downloads.sourceforge.net/supybot/%{origname}-%{version}.tar.bz2 +# Fix a conflict between python-json and the built in json module +# in Python 2.6. Already submitted and commited upstream. +Patch0: %{name}-%{version}-json.patch +#fix karma plugin to actually work should go upstream +Patch1: Supybot-0.83.4.1-karma-plugin.patch +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) + +BuildArch: noarch +BuildRequires: python-setuptools-devel +Requires: python-twisted-core +Requires: python-twisted-names +Requires: python-dateutil +Requires: python-feedparser +Requires: python-dictclient +Requires: python-simplejson +Provides: Supybot = %{version}-%{release} +Conflicts: supybot-gribble + +%description +Supybot is a robust, user-friendly, and programmer-friendly Python IRC bot. +It aims to be an adequate replacement for most existing IRC bots. It +includes a very flexible and powerful ACL system for controlling access +to commands, as well as more than 50 builtin plugins providing around +400 actual commands. + +%prep +%setup -q -n %{origname}-%{version} +%patch0 -p1 +%patch1 -p1 + + +%build +CFLAGS="%{optflags}" %{__python} -c 'import setuptools; execfile("setup.py")' build + + +%install +%{__rm} -rf %{buildroot} +%{__python} -c 'import setuptools; execfile("setup.py")' install \ + --skip-build --root %{buildroot} + +%{__install} -d -m 755 %{buildroot}%{_mandir}/man1/ +%{__install} -m 644 docs/man/supybot.1 %{buildroot}%{_mandir}/man1/ +%{__install} -m 644 docs/man/supybot-adduser.1 %{buildroot}%{_mandir}/man1/ +%{__install} -m 644 docs/man/supybot-botchk.1 %{buildroot}%{_mandir}/man1/ +%{__install} -m 644 docs/man/supybot-plugin-create.1 %{buildroot}%{_mandir}/man1/ +%{__install} -m 644 docs/man/supybot-plugin-doc.1 %{buildroot}%{_mandir}/man1/ +%{__install} -m 644 docs/man/supybot-test.1 %{buildroot}%{_mandir}/man1/ +%{__install} -m 644 docs/man/supybot-wizard.1 %{buildroot}%{_mandir}/man1/ + +# These are provided in python-feedparser, python-dateutil, +# python-dictclient, and python-simplejson +%{__rm} -rf %{buildroot}%{python_sitelib}/supybot/plugins/RSS/local +%{__rm} -rf %{buildroot}%{python_sitelib}/supybot/plugins/Time/local +%{__rm} -rf %{buildroot}%{python_sitelib}/supybot/plugins/Dict/local +%{__rm} -rf %{buildroot}%{python_sitelib}/supybot/plugins/Google/local + + +%clean +%{__rm} -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%doc ACKS ChangeLog LICENSE README RELNOTES +%doc docs/{ADVANCED_PLUGIN_CONFIG,ADVANCED_PLUGIN_TESTING,CAPABILITIES} +%doc docs/{CONFIGURATION,FAQ,GETTING_STARTED,PLUGIN_TUTORIAL,STYLE} +%doc docs/{USING_UTILS,USING_WRAP} +%{python_sitelib}/*egg-info +%{python_sitelib}/supybot +%{_bindir}/supybot +%{_bindir}/supybot-adduser +%{_bindir}/supybot-botchk +%{_bindir}/supybot-plugin-create +%{_bindir}/supybot-plugin-doc +%{_bindir}/supybot-plugin-package +%{_bindir}/supybot-test +%{_bindir}/supybot-wizard +%{_mandir}/man1/supybot.1* +%{_mandir}/man1/supybot-adduser.1* +%{_mandir}/man1/supybot-botchk.1* +%{_mandir}/man1/supybot-plugin-create.1* +%{_mandir}/man1/supybot-plugin-doc.1* +%{_mandir}/man1/supybot-test.1* +%{_mandir}/man1/supybot-wizard.1* + + +%changelog +* Sat Jul 21 2012 Fedora Release Engineering - 0.83.4.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 0.83.4.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Apr 18 2011 Dave Riches - 0.83.4.1-7 +- added conflict with supybot-gribble + +* Wed Feb 09 2011 Fedora Release Engineering - 0.83.4.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Jul 22 2010 David Malcolm - 0.83.4.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Thu Jun 03 2010 Dennis Gilmore - 0.83.4.1-4 +- actually apply the patch + +* Thu Jun 03 2010 Dennis Gilmore - 0.83.4.1-3 +- add a patch to make the karma plugin work + +* Sun Jul 26 2009 Fedora Release Engineering - 0.83.4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jun 03 2009 Ricky Zhou - 0.83.4.1-1 +- Upstream released new version. + +* Mon May 18 2009 Ricky Zhou - 0.83.4-1 +- Upstream released new version. + +* Tue Apr 14 2009 Ricky Zhou - 0.83.3-11 +- Change define to global. +- Remove old >= 8 conditional. +- Remove unnecessary BuildRequires on python-devel. + +* Sat Apr 11 2009 Ricky Zhou - 0.83.3-10 +- Backporting Python 2.6 fixes from Supybot git. + +* Wed Feb 25 2009 Fedora Release Engineering - 0.83.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 0.83.3-8 +- Rebuild for Python 2.6 + +* Thu Jun 05 2008 Ricky Zhou - 0.83.3-7 +- Uncomment python-dictclient requirement. + +* Wed May 24 2008 Ricky Zhou - 0.83.3-6 +- Add Requires for plugin dependencies. +- Add Provides Supybot. + +* Wed May 07 2008 Ricky Zhou - 0.83.3-5 +- Apply Douglas Warner's patch to fix line lengths/add origname macro. + +* Wed May 07 2008 Ricky Zhou - 0.83.3-4 +- Rename from Supybot to supybot. +- Fix incorrect paths to rm. + +* Sun Apr 06 2008 Ricky Zhou - 0.83.3-3 +- Remove included Python modules. +- Mention different license for plugins/Math/convertcore.py. + +* Fri Mar 07 2008 Ricky Zhou - 0.83.3-2 +- Use macros instead of calling commands directly. + +* Fri Mar 07 2008 Ricky Zhou - 0.83.3-1 +- Update for 0.83.3 release. + +* Fri Mar 07 2008 Ricky Zhou - 0.83.2-3 +- Generate egg-info for Fedora <= 8, add to files section. + +* Fri Mar 07 2008 Ricky Zhou - 0.83.2-2 +- Use consistent macro style. +- Update source URLs to match guidelines more precisely. + +* Fri Mar 07 2008 Ricky Zhou - 0.83.2-1 +- Initial RPM Package. + -- cgit