Index: Makefile =================================================================== RCS file: /home/ncvs/ports/multimedia/quodlibet/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- Makefile 27 Sep 2006 03:09:13 -0000 1.14 +++ Makefile 19 Nov 2006 07:34:15 -0000 @@ -6,7 +6,7 @@ # PORTNAME= quodlibet -PORTVERSION= 0.23.1 +PORTVERSION= 0.24 CATEGORIES= multimedia audio python gnome MASTER_SITES= http://www.sacredchao.net/~piman/software/ @@ -37,6 +37,7 @@ OPTIONS+= SPEEX "OGG/Speex audio support" on OPTIONS+= VORBIS "OGG/Vorbis audio support" on OPTIONS+= WAVPACK "Wavpack support" on +OPTIONS+= DBUS "Enable dbus (iPod, storage) support" on OPTIONS+= REMOTE "Enable remote playback" on OPTIONS+= EXTENSIONS "Enable extensions" off @@ -83,6 +84,11 @@ USE_GSTREAMER+= faad .endif +.if !defined(WITHOUT_DBUS) +BUILD_DEPENDS+= ${PYTHON_SITELIBDIR}/dbus/__init__.py:${PORTSDIR}/devel/py-dbus +RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/dbus/__init__.py:${PORTSDIR}/devel/py-dbus +.endif + .if !defined(WITHOUT_REMOTE) BUILD_DEPENDS+= ${PYTHON_SITELIBDIR}/feedparser.py:${PORTSDIR}/textproc/py-feedparser RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/feedparser.py:${PORTSDIR}/textproc/py-feedparser Index: distinfo =================================================================== RCS file: /home/ncvs/ports/multimedia/quodlibet/distinfo,v retrieving revision 1.5 diff -u -r1.5 distinfo --- distinfo 27 Sep 2006 03:09:13 -0000 1.5 +++ distinfo 19 Nov 2006 07:34:15 -0000 @@ -1,3 +1,3 @@ -MD5 (quodlibet-0.23.1.tar.gz) = 8b9d4f4dc0850b48cfe9b4b390722ef4 -SHA256 (quodlibet-0.23.1.tar.gz) = 639d6364798802ab50580e652abe53c72470ab04e7ecd06e66bee0542d2d01e8 -SIZE (quodlibet-0.23.1.tar.gz) = 542885 +MD5 (quodlibet-0.24.tar.gz) = 39718994ee234d0c442d9db330d7445a +SHA256 (quodlibet-0.24.tar.gz) = 758d726fa57b177d574dc01141609df3415287611db073415230f1ac4520fd5e +SIZE (quodlibet-0.24.tar.gz) = 615554 Index: pkg-plist =================================================================== RCS file: /home/ncvs/ports/multimedia/quodlibet/pkg-plist,v retrieving revision 1.6 diff -u -r1.6 pkg-plist --- pkg-plist 27 Sep 2006 03:09:13 -0000 1.6 +++ pkg-plist 19 Nov 2006 07:34:15 -0000 @@ -22,18 +22,25 @@ share/locale/nl/LC_MESSAGES/quodlibet.mo share/locale/pl/LC_MESSAGES/quodlibet.mo share/locale/pt/LC_MESSAGES/quodlibet.mo +share/locale/ro/LC_MESSAGES/quodlibet.mo share/locale/ru/LC_MESSAGES/quodlibet.mo +share/locale/sk/LC_MESSAGES/quodlibet.mo share/locale/sv/LC_MESSAGES/quodlibet.mo share/locale/zh_CN/LC_MESSAGES/quodlibet.mo share/locale/zh_TW/LC_MESSAGES/quodlibet.mo share/pixmaps/exfalso.png share/pixmaps/quodlibet.png +%%DATADIR%%/audio-volume-high.png +%%DATADIR%%/audio-volume-low.png +%%DATADIR%%/audio-volume-medium.png +%%DATADIR%%/audio-volume-muted.png %%DATADIR%%/browsers/__init__.py %%DATADIR%%/browsers/_base.py %%DATADIR%%/browsers/albums.py %%DATADIR%%/browsers/audiofeeds.py %%DATADIR%%/browsers/filesystem.py %%DATADIR%%/browsers/iradio.py +%%DATADIR%%/browsers/media.py %%DATADIR%%/browsers/paned.py %%DATADIR%%/browsers/playlists.py %%DATADIR%%/browsers/search.py @@ -42,6 +49,12 @@ %%DATADIR%%/exfalso.png %%DATADIR%%/exfalso.py %%DATADIR%%/exfalso.svg +%%DATADIR%%/device-generic.png +%%DATADIR%%/device-ipod.png +%%DATADIR%%/devices/__init__.py +%%DATADIR%%/devices/_base.py +%%DATADIR%%/devices/ipod.py +%%DATADIR%%/devices/storage.py %%DATADIR%%/formats/__init__.py %%DATADIR%%/formats/_apev2.py %%DATADIR%%/formats/_audio.py @@ -58,6 +71,7 @@ %%DATADIR%%/library/__init__.py %%DATADIR%%/library/_library.py %%DATADIR%%/library/songs.py +%%DATADIR%%/media-eject.png %%DATADIR%%/parse/__init__.py %%DATADIR%%/parse/_match.py %%DATADIR%%/parse/_pattern.py @@ -115,10 +129,6 @@ %%DATADIR%%/quodlibet.png %%DATADIR%%/quodlibet.py %%DATADIR%%/quodlibet.svg -%%DATADIR%%/rhythmbox-volume-max.png -%%DATADIR%%/rhythmbox-volume-medium.png -%%DATADIR%%/rhythmbox-volume-min.png -%%DATADIR%%/rhythmbox-volume-zero.png %%DATADIR%%/stock.py %%DATADIR%%/util/__init__.py %%DATADIR%%/util/copool.py @@ -135,5 +145,6 @@ @dirrm %%DATADIR%%/parse @dirrm %%DATADIR%%/library @dirrm %%DATADIR%%/formats +@dirrm %%DATADIR%%/devices @dirrm %%DATADIR%%/browsers @dirrm %%DATADIR%% Index: files/patch-Makefile =================================================================== RCS file: /home/ncvs/ports/multimedia/quodlibet/files/patch-Makefile,v retrieving revision 1.2 diff -u -r1.2 patch-Makefile --- files/patch-Makefile 4 Jan 2006 21:16:53 -0000 1.2 +++ files/patch-Makefile 19 Nov 2006 07:34:15 -0000 @@ -1,23 +1,21 @@ ---- Makefile.orig 2005-12-13 19:46:30.000000000 -0700 -+++ Makefile 2006-01-04 03:20:58.787760884 -0700 -@@ -13,7 +13,6 @@ - @./check.py +--- Makefile.orig Thu Oct 5 06:03:59 2006 ++++ Makefile Sat Nov 18 22:32:11 2006 +@@ -13,13 +13,12 @@ + @./check.py $(DESTDIR)$(PREFIX)/$(TO) make-install-dirs: - mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1 mkdir -p $(DESTDIR)$(PREFIX)/bin mkdir -p $(DESTDIR)$(PREFIX)/$(TO) -@@ -24,7 +23,7 @@ - # installing the SVN version will have intltool and so it will build fine. install: make-install-dirs install-dirs install-programs - install -m 644 $(MODULES) rhythmbox-*.png $(DESTDIR)$(PREFIX)/$(TO) -- -for E in $(EXTENSIONS); do (test -e $$E && install -m 755 -D $$E $(DESTDIR)$(PREFIX)/$(TODEP)/$$E); done -+ -for E in $(EXTENSIONS); do (test -e $$E && install -m 755 $$E $(DESTDIR)$(PREFIX)/$(TODEP)/$$E); done - -cd po && make install-po DESTDIR=$(DESTDIR) + install -m 644 $(MODULES) audio-*.png media-*.png device-*.png $(DESTDIR)$(PREFIX)/$(TO) +- for E in $(EXTENSIONS); do (test -e $$E && install -m 755 -D $$E $(DESTDIR)$(PREFIX)/$(TODEP)/$$E); done ++ for E in $(EXTENSIONS); do (test -e $$E && install -m 755 $$E $(DESTDIR)$(PREFIX)/$(TODEP)/$$E); done + cd po && make install-po DESTDIR=$(DESTDIR) install-dirs: $(addprefix dir-install-, $(MODULE_DIRS)) -@@ -37,10 +36,10 @@ +@@ -32,10 +31,10 @@ app-install-%: make-install-dirs %.desktop install -m 755 $*.py $(DESTDIR)$(PREFIX)/$(TO) Index: files/patch-python25 =================================================================== RCS file: files/patch-python25 diff -N files/patch-python25 --- files/patch-python25 31 Oct 2006 02:39:31 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,307 +0,0 @@ -Index: parse/_pattern.py -=================================================================== ---- parse/_pattern.py (revision 3816) -+++ parse/_pattern.py (revision 3817) -@@ -15,7 +15,7 @@ - # every time. The Song proxy might also get in the way. - - import os --import sre -+import re - - import util - -@@ -43,16 +43,16 @@ - str(self._reverse[self.type]) + - "), lexeme=" + repr(self.lexeme) + ">") - --class PatternLexer(sre.Scanner): -+class PatternLexer(re.Scanner): - def __init__(self, s): - self.string = s.strip() -- sre.Scanner.__init__(self, -+ re.Scanner.__init__(self, - [(r"([^<>|\\]|\\.)+", self.text), - (r"[<>|]", self.table), - ]) - - def text(self, scanner, string): -- return PatternLexeme(TEXT, sre.sub(r"\\(.)", r"\1", string)) -+ return PatternLexeme(TEXT, re.sub(r"\\(.)", r"\1", string)) - def table(self, scanner, string): - return PatternLexeme( - {"|": COND, "<": OPEN, ">": CLOSE}[string], string) -Index: parse/_query.py -=================================================================== ---- parse/_query.py (revision 3816) -+++ parse/_query.py (revision 3817) -@@ -10,7 +10,7 @@ - # but it could use some cleaning up. It builds the requisite match.* - # objects as it goes, which is where the interesting stuff will happen. - --import sre -+import re - - import parse._match as match - -@@ -22,10 +22,10 @@ - class ParseError(error): pass - class LexerError(error): pass - --class QueryLexer(sre.Scanner): -+class QueryLexer(re.Scanner): - def __init__(self, s): - self.string = s.strip() -- sre.Scanner.__init__(self, -+ re.Scanner.__init__(self, - [(r"/([^/\\]|\\.)*/", self.regexp), - (r'"([^"\\]|\\.)*"', self.str_to_re), - (r"'([^'\\]|\\.)*'", self.str_to_re), -@@ -42,7 +42,7 @@ - if isinstance(string, unicode): string = string.encode('utf-8') - string = string[1:-1].decode('string_escape') - string = string.decode('utf-8') -- return QueryLexeme(RE, "^%s$" % sre.escape(string)) -+ return QueryLexeme(RE, "^%s$" % re.escape(string)) - - def tag(self, scanner, string): - return QueryLexeme(TAG, string.strip()) -@@ -190,24 +190,24 @@ - def MatchTag(self): - tag = self.lookahead.lexeme - self.match(TAG) -- try: return sre.compile(sre.escape(tag), sre.IGNORECASE | sre.UNICODE) -- except sre.error: -+ try: return re.compile(re.escape(tag), re.IGNORECASE | re.UNICODE) -+ except re.error: - raise ParseError("The regular expression was invalid") - - def Regexp(self): -- re = self.lookahead.lexeme -+ regex = self.lookahead.lexeme - self.match(RE) -- mods = sre.MULTILINE | sre.UNICODE | sre.IGNORECASE -+ mods = re.MULTILINE | re.UNICODE | re.IGNORECASE - if self.lookahead.type == TAG: - s = self.lookahead.lexeme.lower() -- if "c" in s: mods &= ~sre.IGNORECASE -- if "i" in s: mods |= sre.IGNORECASE -- if "s" in s: mods |= sre.DOTALL -- if "l" in s: mods = (mods & ~sre.UNICODE) | sre.LOCALE -+ if "c" in s: mods &= ~re.IGNORECASE -+ if "i" in s: mods |= re.IGNORECASE -+ if "s" in s: mods |= re.DOTALL -+ if "l" in s: mods = (mods & ~re.UNICODE) | re.LOCALE - self.match(TAG) -- try: return sre.compile(re, mods) -- except sre.error: -- raise ParseError("The regular expression /%s/ is invalid." % re) -+ try: return re.compile(regex, mods) -+ except re.error: -+ raise ParseError("The regular expression /%s/ is invalid." % regex) - - def match(self, *tokens): - if tokens == [EOF] and self.lookahead.type == EOF: -@@ -227,7 +227,7 @@ - if not isinstance(string, unicode): string = string.decode('utf-8') - if string == "": return match.Inter([]) - elif not set("#=").intersection(string): -- parts = ["%s = /%s/" % (", ".join(star), sre.escape(p)) -+ parts = ["%s = /%s/" % (", ".join(star), re.escape(p)) - for p in string.split()] - string = "&(" + ",".join(parts) + ")" - return QueryParser(QueryLexer(string)).StartQuery() -Index: qltk/remote.py -=================================================================== ---- qltk/remote.py (revision 3816) -+++ qltk/remote.py (revision 3817) -@@ -9,7 +9,7 @@ - - import os - import random --import sre -+import re - - import gobject - import gtk -@@ -162,7 +162,7 @@ - for added in library.scan([filename]): pass - if window.browser.can_filter(None): - window.browser.set_text( -- "filename = /^%s/c" % sre.escape(filename)) -+ "filename = /^%s/c" % re.escape(filename)) - window.browser.activate() - else: - basepath = filename + "/" -Index: qltk/cbes.py -=================================================================== ---- qltk/cbes.py (revision 3816) -+++ qltk/cbes.py (revision 3817) -@@ -241,8 +241,8 @@ - if not os.path.isdir(os.path.dirname(filename)): - os.makedirs(os.path.dirname(filename)) - -- saved = file(filename + ".saved", "wU") -- memory = file(filename, "wU") -+ saved = file(filename + ".saved", "w") -+ memory = file(filename, "w") - target = saved - for row in self.get_model(): - if row[0] is None: target = memory -Index: qltk/renamefiles.py -=================================================================== ---- qltk/renamefiles.py (revision 3816) -+++ qltk/renamefiles.py (revision 3817) -@@ -8,7 +8,7 @@ - # $Id: quodlibet-0.23.1-python25.patch,v 1.1 2006/09/25 02:05:35 tcort Exp $ - - import os --import sre -+import re - import unicodedata - - import gtk -@@ -38,7 +38,7 @@ - new = u"".join(map(lambda s: (s in self.BAD and "_") or s, filename)) - parts = new.split(os.sep) - def fix_end(string): -- return sre.sub(r'[\. ]$', "_", string) -+ return re.sub(r'[\. ]$', "_", string) - return unicode(os.sep).join(map(fix_end, parts)) - - class StripDiacriticals(FilterCheckButton): -Index: qltk/tagsfrompath.py -=================================================================== ---- qltk/tagsfrompath.py (revision 3816) -+++ qltk/tagsfrompath.py (revision 3817) -@@ -8,7 +8,7 @@ - # $Id: quodlibet-0.23.1-python25.patch,v 1.1 2006/09/25 02:05:35 tcort Exp $ - - import os --import sre -+import re - - import gtk - -@@ -29,7 +29,7 @@ - self.slashes = len(pattern) - len(pattern.replace(os.path.sep,'')) + 1 - self.pattern = None - # patterns look like non regexy stuff ... -- pieces = sre.split(r'(<[A-Za-z0-9_]+>)', pattern) -+ pieces = re.split(r'(<[A-Za-z0-9_]+>)', pattern) - override = { '': r'\d\d?', '': r'\d\d??' } - for i, piece in enumerate(pieces): - if not piece: continue -@@ -38,7 +38,7 @@ - pieces[i] = '(?P%s%s)' % (piece, override.get(piece, '.+?')) - self.headers.append(piece[1:-1].encode("ascii", "replace")) - else: -- pieces[i] = sre.escape(piece) -+ pieces[i] = re.escape(piece) - - # some slight magic to anchor searches "nicely" - # nicely means if it starts with a , anchor with a / -@@ -52,7 +52,7 @@ - and not pattern.endswith(''): - pieces.append(r'(?:\.\w+)$') - -- self.pattern = sre.compile(''.join(pieces)) -+ self.pattern = re.compile(''.join(pieces)) - - def match(self, song): - if isinstance(song, dict): -@@ -125,7 +125,7 @@ - if songs: pattern_text = self.combo.child.get_text().decode("utf-8") - else: pattern_text = "" - try: pattern = TagsFromPattern(pattern_text) -- except sre.error: -+ except re.error: - qltk.ErrorMessage( - self, _("Invalid pattern"), - _("The pattern\n\t%s\nis invalid. " -Index: util/__init__.py -=================================================================== ---- util/__init__.py (revision 3816) -+++ util/__init__.py (revision 3817) -@@ -9,7 +9,7 @@ - import gettext - import locale - import os --import sre -+import re - import sys - - from const import FSCODING as fscoding, ENCODING -@@ -26,7 +26,13 @@ - t.install() - - def python_init(): -- sre.escape = re_esc -+ re.escape = re_esc -+ # Python 2.4 has sre.Scanner but not re.Scanner. Python 2.5 has -+ # deprecated sre and moved Scanner to re. -+ try: re.Scanner -+ except AttributeError: -+ from sre import Scanner -+ re.Scanner = Scanner - - def re_esc(str, BAD="/.^$*+?{,\\[]|()<>#=!:"): - needs_escape = lambda c: (c in BAD and "\\" + c) or c -@@ -237,7 +243,7 @@ - """Unescape a string in a manner suitable for XML/Pango.""" - return str.replace("<", "<").replace(">", ">").replace("&", "&") - --def parse_time(timestr, err=(ValueError, sre.error)): -+def parse_time(timestr, err=(ValueError, re.error)): - """Parse a time string in hh:mm:ss, mm:ss, or ss format.""" - if timestr[0:1] == "-": - m = -1 -@@ -246,7 +252,7 @@ - - try: - return m * reduce(lambda s, a: s * 60 + int(a), -- sre.split(r":|\.", timestr), 0) -+ re.split(r":|\.", timestr), 0) - except err: return 0 - - RATING_PRECISION = 0.25 -@@ -362,7 +368,7 @@ - if not splitters: return [s.strip()] - values = s.split("\n") - for spl in splitters: -- spl = sre.compile(r"\b\s*%s\s*\b" % sre.escape(spl), sre.UNICODE) -+ spl = re.compile(r"\b\s*%s\s*\b" % re.escape(spl), re.UNICODE) - new_values = [] - for v in values: - new_values.extend([st.strip() for st in spl.split(v)]) -Index: util/massagers.py -=================================================================== ---- util/massagers.py (revision 3816) -+++ util/massagers.py (revision 3817) -@@ -8,7 +8,7 @@ - # $Id: quodlibet-0.23.1-python25.patch,v 1.1 2006/09/25 02:05:35 tcort Exp $ - - import locale --import sre -+import re - - class Massager(object): - """Massage a tag value from various 'okay' formats to the -@@ -23,7 +23,7 @@ - tags = ["date"] - error = _("The date must be entered in 'YYYY', 'YYYY-MM-DD' or " - "'YYYY-MM-DD HH:MM:SS' format.") -- __match = sre.compile(r"^\d{4}([-.]\d{2}([-.]\d{2}([T ]\d{2}" -+ __match = re.compile(r"^\d{4}([-.]\d{2}([-.]\d{2}([T ]\d{2}" - "([:.]\d{2}([:.]\d{2})?)?)?)?)?$").match - def validate(self, value): - value = value.strip().replace(".", "-").replace("/", "-") -@@ -32,7 +32,7 @@ - class GainMassager(Massager): - tags = ["replaygain_album_gain", "replaygain_track_gain"] - error = _("Replay Gain gains must be entered in 'x.yy dB' format.") -- __match = sre.compile(r"^[+-]\d+\.?\d+?\s+dB$").match -+ __match = re.compile(r"^[+-]\d+\.?\d+?\s+dB$").match - - def validate(self, value): - if self.__match(value): return value