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 1Sbcd8-0001vp-Ez for garchives@archives.gentoo.org; Mon, 04 Jun 2012 19:07:54 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id CF5A0E0996; Mon, 4 Jun 2012 19:07:40 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 90907E096D for ; Mon, 4 Jun 2012 19:07:40 +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 9FEFD1B4017 for ; Mon, 4 Jun 2012 19:07:39 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 68F04E5404 for ; Mon, 4 Jun 2012 19:07:38 +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: <1338836671.b878c706058d51594c4d47bf41a637c43b5125b3.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/depres/depresolver.py roverlay/depres/deprule.py X-VCS-Directories: roverlay/depres/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: b878c706058d51594c4d47bf41a637c43b5125b3 X-VCS-Branch: master Date: Mon, 4 Jun 2012 19:07:38 +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: 3084e118-e7c6-4da2-9040-52dd73ed398d X-Archives-Hash: 433a0c24befe8093777bff9c31874ade commit: b878c706058d51594c4d47bf41a637c43b5125b3 Author: Andr=C3=A9 Erdmann mailerd de> AuthorDate: Mon Jun 4 19:04:31 2012 +0000 Commit: Andr=C3=A9 Erdmann mailerd de> CommitDate: Mon Jun 4 19:04:31 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/R_overlay.git= ;a=3Dcommit;h=3Db878c706 initial work for dependency resolution --- roverlay/depres/depresolver.py | 33 ++++++++++++++++++++++ roverlay/depres/deprule.py | 60 ++++++++++++++++++++++++++++++++++= ++++++ 2 files changed, 93 insertions(+), 0 deletions(-) diff --git a/roverlay/depres/depresolver.py b/roverlay/depres/depresolver= .py new file mode 100644 index 0000000..7d7c5e6 --- /dev/null +++ b/roverlay/depres/depresolver.py @@ -0,0 +1,33 @@ +# R overlay -- +# Copyright 2006-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +class DependencyResolver: + + def __init__ ( self ): + self.channels =3D dict() + self.listeners =3D dict() + + + def get_listener (): + new_listener =3D DependencyResolverListener() + # register the new listener + self.listeners [new_listener.ident] =3D new_listener + return new_listener + + def get_channel ( readonly=3DFalse ): + # ... TODO + pass + + + +class DependencyResolverListener: + + def __init__ ( self ): + self.ident =3D id ( self ) + +class DependencyResolverChannel ( DependencyResolverListener ): + + def __init__ ( self, main_resolver, *args ): + super ( DependencyResolverChannel, self ) . __init__ ( args ) + self._depres_master =3D main_resolver diff --git a/roverlay/depres/deprule.py b/roverlay/depres/deprule.py new file mode 100644 index 0000000..3a82cbe --- /dev/null +++ b/roverlay/depres/deprule.py @@ -0,0 +1,60 @@ +# R overlay -- +# Copyright 2006-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +class DependencyRule: + def __init__ ( self ): + pass + + def matches ( pkg_env ): + return False + +class SimpleDependencyRule ( DependencyRule ): + + def __init__ ( self, resolving_package, dep_str=3DNone, priority=3D100 = ): + super ( SimpleDependencyRule, self ) . __init__ ( self ) + self.dep_alias =3D set () + if dep_str: + self.dep_alias.add ( dep_str ) + + self.package =3D resolving_package + + self.priority =3D priority + # --- end of __init__ (...) --- + + def add_resolved ( self, dep_str ): + self.dep_alias.add ( dep_str ) + # --- end of add_resolved (...) --- + + def matches ( self, pkg_env, lowercase=3DTrue ): + if lowercase: + lower_dep_str =3D pkg_env.dep_str + for alias in self.dep_alias: + if alias.lower() =3D=3D lower_dep_str: + return True + elif pkg_env.dep_str in self.dep_alias: + return True + + return False + # --- end of matches (...) --- + +class DependencyRulePool: + + def __init__ ( self ): + self.rules =3D list () + self._priofunc =3D lambda x : x.priority + # --- end of __init__ (...) --- + + def _sort_rules ( self ): + self.rules.sort ( key=3Dself._priofunc ) + return None + # --- end of _sort_rules (...) --- + + def add ( self, rule ): + if issubclass ( rule, DependencyRule ): + self.rules.add ( rule ) + else: + raise Exception ( "bad usage (dependency rule expected)." ) + + return None + # --- end of add (...) ---