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/simpledeprule/, roverlay/depres/
Date: Thu,  5 Jun 2014 22:09:13 +0000 (UTC)	[thread overview]
Message-ID: <1399426685.83d2732502634d7a91c5bf379d5ee3b6a252872f.dywi@gentoo> (raw)

commit:     83d2732502634d7a91c5bf379d5ee3b6a252872f
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Wed May  7 01:38:05 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Wed May  7 01:38:05 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=83d27325

roverlay/depres, rule pools: also export #deptype

---
 roverlay/depres/deprule.py                     | 52 +++++++++++++++++++++++---
 roverlay/depres/simpledeprule/abstractrules.py |  4 +-
 roverlay/depres/simpledeprule/rulemaker.py     |  1 +
 3 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/roverlay/depres/deprule.py b/roverlay/depres/deprule.py
index f7b0acc..fa7f8a1 100644
--- a/roverlay/depres/deprule.py
+++ b/roverlay/depres/deprule.py
@@ -42,7 +42,7 @@ class DependencyRule ( object ):
 
    make_result = _make_result
 
-   def export_rule ( self ):
+   def export_rule ( self, with_selfdep_keyword=True ):
       raise NotImplementedError()
    # --- end of export_rule (...) ---
 
@@ -65,6 +65,15 @@ class DependencyRulePoolBase ( object ):
       self.rule_weight  = 0
    # --- end of __init__ (...) ---
 
+   def check_all_selfdep ( self ):
+      """
+      Returns True if this rule pool contains selfdep rules only, else False.
+      """
+      return all (
+         getattr ( rule, 'is_selfdep', None ) for rule in self.iter_rules()
+      )
+   # --- end of check_all_selfdep (...) ---
+
    def empty ( self ):
       """Returns True if this pool has no rules."""
       for rule in self.iter_rules():
@@ -178,25 +187,58 @@ class DependencyRulePoolBase ( object ):
       pass
    # --- end of accepts_other (...) ---
 
-   def export_rules ( self ):
+   def export_deptype_header ( self, _is_all_selfdep=None ):
+      """
+      Returns a '#deptype ...' string describing this rule pool's deptype mask.
+      """
+      words = [
+         word for k, word in (
+            ( deptype.internal, "pkg" ),
+            ( deptype.external, "sys" ),
+         )
+         if k & self.deptype_mask
+      ]
+
+      if _is_all_selfdep or (
+         _is_all_selfdep is None and self.check_all_selfdep()
+      ):
+         words.append ( "selfdep" )
+
+      return "#deptype " + ( ",".join(words) if words else "none" )
+   # --- end of export_deptype_header (...) ---
+
+   def export_rules ( self, **kwargs ):
       """Exports all rules. Typically, this generates text lines."""
       for rule in self.iter_rules():
-         for item in rule.export_rule():
+         for item in rule.export_rule ( **kwargs ):
             yield item
    # --- end of export_rules (...) ---
 
-   def export_rules_into ( self, fh ):
+   def export_rules_into ( self, fh, **kwargs ):
       """Writes all rules into the given file handle.
 
       arguments:
       * fh --
       """
       NL = '\n'
-      for item in self.export_rules():
+      for item in self.export_rules ( **kwargs ):
          fh.write ( str ( item ) )
          fh.write ( NL )
    # --- end of exports_rules_into (...) ---
 
+   def export_to_str ( self ):
+      """Exports the rule pool (header + all rules) as a single str."""
+      NL = '\n'
+      all_selfdep = self.check_all_selfdep()
+
+      return NL.join ((
+         self.export_deptype_header ( _is_all_selfdep=all_selfdep ),
+         NL.join (
+            self.export_rules ( with_selfdep_keyword=(not all_selfdep) )
+         )
+      ))
+   # --- end of export_to_str (...) ---
+
 # --- end of DependencyRulePoolBase ---
 
 

diff --git a/roverlay/depres/simpledeprule/abstractrules.py b/roverlay/depres/simpledeprule/abstractrules.py
index 37d3958..d31ffbe 100644
--- a/roverlay/depres/simpledeprule/abstractrules.py
+++ b/roverlay/depres/simpledeprule/abstractrules.py
@@ -119,7 +119,7 @@ class SimpleRule ( deprule.DependencyRule ):
       pass
    # --- end of noexport (...) ---
 
-   def export_rule ( self ):
+   def export_rule ( self, with_selfdep_keyword=True ):
       """Generates text lines for this rule that can later be read using
       the SimpleDependencyRuleReader.
       """
@@ -144,7 +144,7 @@ class SimpleRule ( deprule.DependencyRule ):
          yield resolving
 
       elif self.dep_alias:
-         if self.is_selfdep == 1:
+         if with_selfdep_keyword and self.is_selfdep == 1:
             yield '@selfdep'
 
          if len ( self.dep_alias ) == 1:

diff --git a/roverlay/depres/simpledeprule/rulemaker.py b/roverlay/depres/simpledeprule/rulemaker.py
index 8a4acc5..d7f7163 100644
--- a/roverlay/depres/simpledeprule/rulemaker.py
+++ b/roverlay/depres/simpledeprule/rulemaker.py
@@ -33,6 +33,7 @@ class SimpleRuleMaker ( roverlay.util.mapreader.MapFileParser ):
       self.logger = logging.getLogger ( self.__class__.__name__ )
 
       self.DEPTYPE_MAP = {
+         'none'    : 0,
          'all'     : deptype.ALL,
          'sys'     : deptype.external,
          'pkg'     : deptype.internal,


             reply	other threads:[~2014-06-05 22:09 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-05 22:09 André Erdmann [this message]
  -- strict thread matches above, loose matches on Subject: below --
2013-09-02 16:21 [gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/simpledeprule/, roverlay/depres/ André Erdmann
2013-09-02 13:20 André Erdmann
2013-07-19 18:00 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-23  7:51 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-07-03 10:05 André Erdmann
2013-07-02 21:09 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-03 10:05 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2012-08-02 15:14 André Erdmann
2012-07-20 16:16 [gentoo-commits] proj/R_overlay:overlay_wip " André Erdmann
2012-07-30  8:52 ` [gentoo-commits] proj/R_overlay:master " 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=1399426685.83d2732502634d7a91c5bf379d5ee3b6a252872f.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