public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "André Erdmann" <dywi@mailerd.de>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/
Date: Mon,  4 Jun 2012 19:07:38 +0000 (UTC)	[thread overview]
Message-ID: <1338836671.b878c706058d51594c4d47bf41a637c43b5125b3.dywi@gentoo> (raw)

commit:     b878c706058d51594c4d47bf41a637c43b5125b3
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Mon Jun  4 19:04:31 2012 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Mon Jun  4 19:04:31 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=b878c706

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  = dict()
+		self.listeners = dict()
+
+
+	def get_listener ():
+		new_listener = DependencyResolverListener()
+		# register the new listener
+		self.listeners [new_listener.ident] = new_listener
+		return new_listener
+
+	def get_channel ( readonly=False ):
+		# ... TODO
+		pass
+
+
+
+class DependencyResolverListener:
+
+	def __init__ ( self ):
+		self.ident = id ( self )
+
+class DependencyResolverChannel ( DependencyResolverListener ):
+
+	def __init__ ( self, main_resolver, *args ):
+		super ( DependencyResolverChannel, self ) . __init__ ( args )
+		self._depres_master = 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=None, priority=100 ):
+		super ( SimpleDependencyRule, self ) . __init__ ( self )
+		self.dep_alias = set ()
+		if dep_str:
+			self.dep_alias.add ( dep_str )
+
+		self.package = resolving_package
+
+		self.priority = 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=True ):
+		if lowercase:
+			lower_dep_str = pkg_env.dep_str
+			for alias in self.dep_alias:
+				if alias.lower() == 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 = list ()
+		self._priofunc = lambda x : x.priority
+	# --- end of __init__ (...) ---
+
+	def _sort_rules ( self ):
+		self.rules.sort ( key=self._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 (...) ---



             reply	other threads:[~2012-06-04 19:07 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-04 19:07 André Erdmann [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-06-05 17:30 [gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/ André Erdmann
2012-06-06 19:52 André Erdmann
2012-06-12 17:17 André Erdmann
2012-06-13  7:45 André Erdmann
2012-06-13  7:45 André Erdmann
2012-06-13 16:34 André Erdmann
2012-06-20 19:03 André Erdmann
2012-06-27 14:46 André Erdmann
2012-06-28 13:29 André Erdmann
2012-06-28 13:29 André Erdmann
2012-06-29 22:48 André Erdmann
2012-06-29 22:48 André Erdmann
2012-07-02 16:52 André Erdmann
2012-07-02 16:52 André Erdmann
2012-07-13 10:44 [gentoo-commits] proj/R_overlay:depres_wip " André Erdmann
2012-07-16 16:15 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2012-07-13 10:44 [gentoo-commits] proj/R_overlay:depres_wip " André Erdmann
2012-07-16 16:15 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2012-07-16 16:15 André Erdmann
2012-07-19 16:53 [gentoo-commits] proj/R_overlay:overlay_wip " André Erdmann
2012-07-30  8:52 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2012-07-30  8:52 [gentoo-commits] proj/R_overlay:overlay_wip " André Erdmann
2012-07-30  8:52 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2012-07-30 15:53 André Erdmann
2012-08-02 15:14 André Erdmann
2013-06-13 16:34 André Erdmann
2013-07-11  8:49 André Erdmann
2013-07-11 16:44 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-11 16:44 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-07-15 22:31 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-16 16:36 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-07-16 16:36 André Erdmann
2013-07-17 18:10 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-17 18:10 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-07-18 19:25 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-23  7:51 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-08-20 21:46 André Erdmann
2013-08-20 21:46 André Erdmann
2013-08-23 13:52 André Erdmann
2013-08-27 15:39 André Erdmann
2013-08-27 15:39 André Erdmann
2013-08-27 15:39 André Erdmann
2013-08-28  9:38 André Erdmann
2013-09-02 13:20 André Erdmann
2013-09-03  8:35 André Erdmann
2014-06-05 22:09 André Erdmann
2014-08-23 19:03 André Erdmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1338836671.b878c706058d51594c4d47bf41a637c43b5125b3.dywi@gentoo \
    --to=dywi@mailerd.de \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox