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/overlay/
Date: Mon,  2 Sep 2013 16:21:13 +0000 (UTC)	[thread overview]
Message-ID: <1378138689.0b3a8fd9aada581d8510e4f2bd4a433702d792b0.dywi@gentoo> (raw)

commit:     0b3a8fd9aada581d8510e4f2bd4a433702d792b0
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Mon Sep  2 16:18:09 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Mon Sep  2 16:18:09 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=0b3a8fd9

roverlay/overlay: depres rule generator

---
 roverlay/overlay/rulegen.py | 71 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)

diff --git a/roverlay/overlay/rulegen.py b/roverlay/overlay/rulegen.py
new file mode 100644
index 0000000..7610e9a
--- /dev/null
+++ b/roverlay/overlay/rulegen.py
@@ -0,0 +1,71 @@
+# R overlay -- overlay package, depres rule generator
+# -*- coding: utf-8 -*-
+# Copyright (C) 2012, 2013 André Erdmann <dywi@mailerd.de>
+# Distributed under the terms of the GNU General Public License;
+# either version 2 of the License, or (at your option) any later version.
+
+class DepresRuleGenerator ( object ):
+
+   def __init__ ( self, overlay ):
+      super ( DepresRuleGenerator, self ).__init__()
+      self.overlay_ref = overlay.get_ref()
+      self.rule_class  = None
+   # --- end of __init__ (...) ---
+
+   def make_rule_args ( self ):
+      overlay               = self.overlay_ref.deref_safe()
+      default_category_name = overlay.default_category
+
+      # COULDFIX: direct access to "private" attributes
+      for cat_name, cat in overlay._categories.items():
+         is_default_category = cat_name == default_category_name
+
+         for pkgdir_name, pkgdir in cat._subdirs.items():
+            if not pkgdir.empty():
+               repo_ids      = set()
+               package_names = set()
+               for p_info in pkgdir.iter_package_info():
+                  package_name = p_info.get (
+                     'package_name', do_fallback=True
+                  )
+                  if package_name:
+                     package_names.add ( package_name )
+
+                  repo = p_info.get ( 'origin', do_fallback=True )
+                  if repo is not None:
+                     repo_ids.add ( repo.get_identifier() )
+               # -- end for <get repo ids / package names>
+
+               yield (
+                  repo_ids,
+                  dict (
+                     dep_str               = pkgdir_name,
+                     resolving_package     = ( cat_name + '/' + pkgdir_name ),
+                     is_selfdep            = 2 if is_default_category else 1,
+                     priority              = 90,
+                     finalize              = True,
+                     selfdep_package_names = package_names,
+                  )
+               )
+         # -- end for pkgdir
+      # -- end for category
+   # --- end of make_rule_args (...) ---
+
+   def make_rules ( self ):
+      for repo_ids, rule_kwargs in self.make_rule_args():
+         yield ( repo_ids, self.rule_class ( **rule_kwargs ) )
+   # --- end of make_rules (...) ---
+
+   def make_rule_dict ( self ):
+      rule_dict = dict()
+      for repo_ids, rule_kwargs in self.make_rule_args():
+         rule = self.rule_class ( **rule_kwargs )
+         for repo_id in repo_ids:
+            if repo_id in rule_dict:
+               rule_dict [repo_id].append ( rule )
+            else:
+               rule_dict [repo_id] = [ rule ]
+      return rule_dict
+   # --- end of make_rule_dict (...) ---
+
+# --- end of DepresRuleGenerator ---


             reply	other threads:[~2013-09-02 16:21 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-02 16:21 André Erdmann [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-08-23 19:03 [gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/ André Erdmann
2014-07-29 18:29 ` André Erdmann
2014-07-18 16:20 André Erdmann
2014-07-18  2:28 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2014-07-18  2:28 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2014-04-01 16:38 André Erdmann
2013-09-18 14:00 André Erdmann
2013-09-17 13:49 André Erdmann
2013-09-03 15:51 André Erdmann
2013-09-03 13:15 André Erdmann
2013-09-03  8:35 André Erdmann
2013-09-02 16:21 André Erdmann
2013-08-29 12:36 André Erdmann
2013-08-20 21:46 André Erdmann
2013-08-20 21:46 André Erdmann
2013-07-29 14:56 André Erdmann
2013-07-10 15:10 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-10 16:16 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-06-22 15:24 André Erdmann
2013-06-18 14:12 André Erdmann
2013-06-13 16:34 André Erdmann
2013-04-25 16:44 André Erdmann
2013-04-25 16:44 André Erdmann
2013-02-09 21:28 André Erdmann
2013-02-09 20:45 André Erdmann
2013-02-09 20:45 André Erdmann
2013-01-30 20:16 André Erdmann
2012-08-17 17:26 André Erdmann
2012-08-03 13:38 André Erdmann
2012-08-01 21:10 André Erdmann
2012-07-30 15:53 André Erdmann
2012-07-30  8:52 André Erdmann
2012-07-30  8:52 André Erdmann
2012-07-24 16:59 [gentoo-commits] proj/R_overlay:overlay_wip " André Erdmann
2012-07-30  8:52 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2012-07-05 16:00 André Erdmann
2012-07-04 18:21 André Erdmann
2012-07-03 17:48 André Erdmann
2012-06-27 14:46 André Erdmann
2012-06-26 15:42 André Erdmann
2012-06-22 18:13 André Erdmann
2012-06-21 16:55 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=1378138689.0b3a8fd9aada581d8510e4f2bd4a433702d792b0.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