From 268db395e19e9edbbfb60a95f1fdfbeb355aa006 Mon Sep 17 00:00:00 2001 From: Eygene Ryabinkin Date: Fri, 27 Aug 2010 19:59:44 +0400 Subject: [PATCH] www/trac-mastertickets: update to 3.0.1 - 3.0.x works only with Trac 0.12, so I had left old 2.1.3 and introduced the knob WITH_TRAC_11; - I had added the patch for PostgreSQL support in 2.1.3: that patch was working on our Trac instance for about a year and no flaws were found. It was also incorporated to the 3.x series of MasterTickets. Signed-off-by: Eygene Ryabinkin --- www/trac-mastertickets/Makefile | 20 ++++- www/trac-mastertickets/distinfo | 3 + www/trac-mastertickets/files/extra-patch-pgsql | 93 ++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 www/trac-mastertickets/files/extra-patch-pgsql diff --git a/www/trac-mastertickets/Makefile b/www/trac-mastertickets/Makefile index f903a0b..b9456d6 100644 --- a/www/trac-mastertickets/Makefile +++ b/www/trac-mastertickets/Makefile @@ -6,12 +6,12 @@ # PORTNAME= mastertickets -PORTVERSION= 2.1.3 -PORTREVISION= 2 +PORTVERSION= 3.0.1 CATEGORIES= www devel python -MASTER_SITES= http://www.gerritbeine.de/download/trac/ +MASTER_SITES= http://www.gerritbeine.de/download/trac/ \ + http://dist.codelabs.ru/fbsd/ PKGNAMEPREFIX= trac- -DISTNAME= ${PORTNAME}plugin-${PORTVERSION} +DISTNAME= ${PORTNAME}plugin-${REALPORTVERSION} MAINTAINER= glarkin@FreeBSD.org COMMENT= Support for ticket dependencies @@ -19,7 +19,19 @@ COMMENT= Support for ticket dependencies BUILD_DEPENDS+= easy_install:${PORTSDIR}/devel/py-setuptools RUN_DEPENDS+= tracd:${PORTSDIR}/www/trac +OPTIONS= TRAC_11 "Plugin for Trac 0.11.x" off + +.include + +.if defined(WITH_TRAC11) +REALPORTVERSION= 2.1.3 +EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-pgsql WRKSRC= ${WRKDIR}/${PORTNAME}plugin +.else +REALPORTVERSION= 3.0.1 +WRKSRC= ${WRKDIR}/coderanger-trac-mastertickets-a72a4e2 +.endif + NO_BUILD= yes USE_PYTHON= yes USE_PYDISTUTILS=yes diff --git a/www/trac-mastertickets/distinfo b/www/trac-mastertickets/distinfo index 688b7b6..a7d6ac8 100644 --- a/www/trac-mastertickets/distinfo +++ b/www/trac-mastertickets/distinfo @@ -1,3 +1,6 @@ +MD5 (masterticketsplugin-3.0.1.tar.gz) = d93e26760eb4fab9fd948eb70d3c20c0 +SHA256 (masterticketsplugin-3.0.1.tar.gz) = 7f3ecba42443b142dc7d29d6d91b8d33d02b356dd391009d8c64085f0b81fae2 +SIZE (masterticketsplugin-3.0.1.tar.gz) = 30096 MD5 (masterticketsplugin-2.1.3.tar.gz) = f7b0d0672cace300634832e0adabca2e SHA256 (masterticketsplugin-2.1.3.tar.gz) = 1d8fd2cb742dbdcfb07efaf8156109753d96d2a60d981dfba79417ac1fe92cd8 SIZE (masterticketsplugin-2.1.3.tar.gz) = 28009 diff --git a/www/trac-mastertickets/files/extra-patch-pgsql b/www/trac-mastertickets/files/extra-patch-pgsql new file mode 100644 index 0000000..88cdb69 --- /dev/null +++ b/www/trac-mastertickets/files/extra-patch-pgsql @@ -0,0 +1,93 @@ +Obtained-From: http://trac-hacks.org/attachment/ticket/2658/mastertickets-intfields-hs-combined_rev2b.patch?format=raw + +--- mastertickets/api.py.orig 2009-01-18 16:30:18.000000000 +0300 ++++ mastertickets/api.py 2010-08-27 18:08:46.000000000 +0400 +@@ -54,16 +54,22 @@ + else: + cursor.execute("UPDATE system SET value=%s WHERE name=%s",(db_default.version, db_default.name)) + for tbl in db_default.tables: ++ # Try to save the data from the old tables + try: + cursor.execute('SELECT * FROM %s'%tbl.name) + old_data[tbl.name] = ([d[0] for d in cursor.description], cursor.fetchall()) ++ except OperationalError: ++ pass ++ ++ # Drop the old tables ++ try: + cursor.execute('DROP TABLE %s'%tbl.name) +- except Exception, e: +- if 'OperationalError' not in e.__class__.__name__: +- raise e # If it is an OperationalError, just move on to the next table ++ except OperationalError: ++ pass + + + for tbl in db_default.tables: ++ # Create the new tables + for sql in db_manager.to_sql(tbl): + cursor.execute(sql) + +@@ -100,8 +106,15 @@ + db = self.env.get_db_cnx() + + links = TicketLinks(self.env, tkt, db) +- links.blocking = set(self.NUMBERS_RE.findall(tkt['blocking'] or '')) +- links.blocked_by = set(self.NUMBERS_RE.findall(tkt['blockedby'] or '')) ++ ++ links.blocking = set([]) ++ for s in set(self.NUMBERS_RE.findall(tkt['blocking'] or '')): ++ links.blocking.add(int(s)) ++ ++ links.blocked_by = set([]) ++ for s in set(self.NUMBERS_RE.findall(tkt['blockedby'] or '')): ++ links.blocked_by.add(int(s)) ++ + links.save(author, comment, tkt.time_changed, db) + + db.commit() +@@ -135,4 +148,4 @@ + ticket[field] = ', '.join(sorted(ids, key=lambda x: int(x))) + except Exception, e: + self.log.debug('MasterTickets: Error parsing %s "%s": %s', field, ticket[field], e) +- yield field, 'Not a valid list of ticket IDs' +\ No newline at end of file ++ yield field, 'Not a valid list of ticket IDs' +--- mastertickets/db_default.py.orig 2009-01-18 16:30:18.000000000 +0300 ++++ mastertickets/db_default.py 2010-08-27 18:08:46.000000000 +0400 +@@ -4,10 +4,10 @@ + from trac.db import Table, Column + + name = 'mastertickets' +-version = 1 ++version = 2 + tables = [ + Table('mastertickets', key=('source','dest'))[ +- Column('source'), +- Column('dest'), ++ Column('source','integer'), ++ Column('dest','integer'), + ], +-] +\ No newline at end of file ++] +--- mastertickets/model.py.orig 2010-08-27 18:08:46.000000000 +0400 ++++ mastertickets/model.py 2010-08-27 18:08:55.000000000 +0400 +@@ -66,7 +66,7 @@ + + if update_field is not None: + cursor.execute('SELECT value FROM ticket_custom WHERE ticket=%s AND name=%s', +- (n, field)) ++ (n, str(field))) + old_value = (cursor.fetchone() or ('',))[0] + new_value = [x.strip() for x in old_value.split(',') if x.strip()] + update_field(new_value) +@@ -112,7 +112,7 @@ + if isinstance(tkt, Ticket): + tkt = tkt.id + arr2.append(tkt) +- return '[%s]'%','.join(arr2) ++ return '[%s]'%','.join(str(arr2)) + + return ''% \ + (self.tkt.id, l(getattr(self, 'blocking', [])), l(getattr(self, 'blocked_by', []))) -- 1.7.2.1