From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1SjtWl-00065b-2H for garchives@archives.gentoo.org; Wed, 27 Jun 2012 14:47:31 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 26CDBE07BE; Wed, 27 Jun 2012 14:46:54 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id D91ABE07C5 for ; Wed, 27 Jun 2012 14:46:53 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 3AD3A1B46CE for ; Wed, 27 Jun 2012 14:46:53 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id D8133E543F for ; Wed, 27 Jun 2012 14:46:50 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1340808087.9832cfd9e91f47e05e8112b22097b419aad66c10.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/depres/listeners.py X-VCS-Directories: roverlay/depres/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: 9832cfd9e91f47e05e8112b22097b419aad66c10 X-VCS-Branch: master Date: Wed, 27 Jun 2012 14:46:50 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 3a6ebfc6-3b22-4a3c-b6fa-953059ce6067 X-Archives-Hash: f20a0c157717967e9d9ddf80edc3cd4a commit: 9832cfd9e91f47e05e8112b22097b419aad66c10 Author: Andr=C3=A9 Erdmann mailerd de> AuthorDate: Wed Jun 27 14:41:27 2012 +0000 Commit: Andr=C3=A9 Erdmann mailerd de> CommitDate: Wed Jun 27 14:41:27 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/R_overlay.git= ;a=3Dcommit;h=3D9832cfd9 SetFileListener in depres * listen to events and stores the resulting string in a set that is written to a file on close modified: roverlay/depres/listeners.py --- roverlay/depres/listeners.py | 55 ++++++++++++++++++++++++++++++++++++= +++++- 1 files changed, 54 insertions(+), 1 deletions(-) diff --git a/roverlay/depres/listeners.py b/roverlay/depres/listeners.py index 0c123c0..0815036 100644 --- a/roverlay/depres/listeners.py +++ b/roverlay/depres/listeners.py @@ -26,7 +26,7 @@ class FileListener ( DependencyResolverListener ): self._file =3D _file =20 if self._file is None: - raise Exception ("...") + raise Exception ( "no file assigned" ) # --- end of __init__ (...) --- =20 def _event ( self, event_type, to_write ): @@ -43,6 +43,45 @@ class FileListener ( DependencyResolverListener ): # --- end of close (...) --- =20 =20 +class SetFileListener ( DependencyResolverListener ): + def __init__ ( self, _file, listen_mask ): + super ( SetFileListener, self ) . __init__ () + + self._buffer =3D set() + + self.mask =3D listen_mask + self._file =3D _file + + if self._file is None: + raise Exception ( "no file assigned" ) + # --- end of __init__ (...) --- + + def _event ( self, event_type, to_add ): + if self.mask & event_type: + self._buffer.add ( to_add ) + # --- end of _event (...) --- + + def write ( self, sort_entries=3DTrue ): + try: + fh =3D open ( self._file, 'w' ) + + if sort_entries: + fh.write ( '\n'.join ( sorted ( self._buffer ) ) ) + else: + fh.write ( '\n'.join ( self._buffer ) ) + + fh.write ( '\n' ) + + fh.close() + finally: + if 'fh' in locals(): fh.close() + # --- end of write (...) --- + + def close ( self ): + self.write() + # --- end of close (...) --- + + class ResolvedFileListener ( FileListener ): """A FileListener that listens to 'dependency resolved' events.""" =20 @@ -71,3 +110,17 @@ class UnresolvableFileListener ( FileListener ): self._event ( event_type, dep_env.dep_str ) # --- end of notify (...) --- =20 + +class UnresolvableSetFileListener ( SetFileListener ): + """A SetFileListener that listens to 'dependency unresolvable' events."= "" + + def __init__ ( self, _file ): + super ( UnresolvableSetFileListener, self ) . __init__ ( + _file, events.DEPRES_EVENTS ['UNRESOLVABLE'] + ) + # --- end of __init__ (...) --- + + def notify ( self, event_type, dep_env=3DNone, pkg_env=3DNone, **extra = ): + #self._event ( event_type, dep_env.dep_str_low ) + self._event ( event_type, dep_env.dep_str ) + # --- end of notify (...) ---