[gentoo-commits] proj/R_overlay:master commit in: config/simple-deprules.d/

2014-06-24 Thread André Erdmann
commit: ff166920df39e19771367ff785d35cb120716486
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Jun 23 18:28:41 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Jun 23 19:13:15 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=ff166920

deprules: remove virtual/jdk:1.5 rule (workaround)

SLOT-relative dependency rules do not take the version operator (<, >, ==, !=,
<=, >=) into account, which is a logic/design error because dep strings like
"Java (>= 5.0)" can be interpreted as
(a) any version within the 5.0 release series
(b) any version greater or equal than 5.0, e.g. 7.0

SLOT rules always assume (a), but (b) is equally possible - depending on
the R package in question as well as the respective rule.

This commit is a *workaround* for a single dep rule.
It removes the SLOT rule for virtual/jdk:1.5, which is not available in
the main tree and some packages affected by this rule (RWeka, RWekajars) have
been confirmed to work with more recent java releases.
Effectively, this means that all "Java  5.0" dep strings get resolved
as ">=virtual/jdk-1.5" now, which breaks packages that really depend on java
1.5 (should be solvable by installing it manually).

All other SLOT rules (=3) are affected by this issue, too.

Needs to be fixed code-wise.

Reported-By: Randall Wald  gmail.com>

---
 config/simple-deprules.d/dev | 12 ++--
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/config/simple-deprules.d/dev b/config/simple-deprules.d/dev
index 36f9a93..8430cc1 100644
--- a/config/simple-deprules.d/dev
+++ b/config/simple-deprules.d/dev
@@ -60,17 +60,8 @@ dev-util/cmake {
 }
 
 # FIXME: the jdk rules are not quite correct,
-# virtual/jdk:1.6 (probably) works for some packages, too
+# virtual/jdk:1.7 (probably) works for some packages, too
 #
-# resolve "java 5", "java 1.5" ... as 'virtual/jdk:1.5'
-~virtual/jdk:slotparts=i1.5:restrict=1.5,5.0 {
-   java
-   Java 1.4 or later
-   Java 1.5 or higher
-   Java version
-   java runtime
-}
-
 ~virtual/jdk:slotparts=i1.6:restrict=1.6,6.0 {
java
Java version
@@ -89,6 +80,7 @@ dev-util/cmake {
 ~virtual/jdk {
java
Java 1.4 or later
+   Java 1.5 or higher
Java version
java runtime
 }



[gentoo-commits] proj/R_overlay:master commit in: config/simple-deprules.d/

2014-06-24 Thread André Erdmann
commit: a751fd20c3c2a14bcd7d9b9b01d026e807c58634
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Jun 23 19:14:01 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Jun 23 19:14:01 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=a751fd20

deprules: remove dev-lang/python:{2.5,2.6,3.1}

... rules, which cause roverlay to create unsatisfiable slot-relative
dependencies (python 2.5, 3.1 not in the main tree; 2.6 masked for removal)

workaround, see previous commit

---
 config/simple-deprules.d/dev | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/config/simple-deprules.d/dev b/config/simple-deprules.d/dev
index 8430cc1..891f264 100644
--- a/config/simple-deprules.d/dev
+++ b/config/simple-deprules.d/dev
@@ -22,7 +22,7 @@ dev-java/jdbc-postgresql :: PostgreSQL JDBCdriver
 
 
 # try to slot-match dev-lang/python, but use known slots only
-~dev-lang/python:slotparts=2:restrict=2.5,2.6,2.7,3.1,3.2,3.3 {
+~dev-lang/python:slotparts=2:restrict=2.7,3.2,3.3,3.4 {
python
python headers
 }
@@ -30,8 +30,8 @@ dev-java/jdbc-postgresql :: PostgreSQL JDBCdriver
 ~dev-lang/python {
python
 }
-# lowest python version in portage: 2.5
->=dev-lang/python-2.5 {
+# lowest python version in portage: 2.7 (2.6 masked)
+dev-lang/python {
Python (>= 2.4) to run Asciidoc(http://www.python.org/)
 }
 



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/simpledeprule/

2014-06-25 Thread André Erdmann
commit: 50bd6d5aac48317c46b777acf9c1836e792bff58
Author: André Erdmann  mailerd  de>
AuthorDate: Wed Jun 25 16:37:08 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed Jun 25 16:37:08 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=50bd6d5a

roverlay/depres, rule: temporary fix

do not slot-resolve dep_env with a vmod of '>' or '>='.

This is a temporary fix. A more controllable (configurable) solution will be
added once that "regenerate $list of ebuilds" has been implemented.

---
 roverlay/depres/simpledeprule/rules.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/roverlay/depres/simpledeprule/rules.py 
b/roverlay/depres/simpledeprule/rules.py
index 306e27d..7ba4967 100644
--- a/roverlay/depres/simpledeprule/rules.py
+++ b/roverlay/depres/simpledeprule/rules.py
@@ -337,7 +337,9 @@ class SimpleFuzzySlotDependencyRule ( FuzzySimpleRule ):
   res  = False
   vmod = fuzzy ['vmod']
 
-  if not ( vmod & dep_env.VMOD_NOT ):
+  # FIXME: improve decision making
+  #
+  if not ( vmod & (dep_env.VMOD_NOT|dep_env.VMOD_GT) ):
  # can be resolved as slot(ted) dep
 
  if self.mode == 2:



[gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/pkgdir/distroot/

2014-06-25 Thread André Erdmann
commit: dd377fc68bfb78c283d35b2173b47ce4837b0d35
Author: André Erdmann  mailerd  de>
AuthorDate: Wed Jun 25 16:06:00 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed Jun 25 16:06:00 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=dd377fc6

distroot, handle_file_collision(): restore src_uri_dest

... if the file collision cannot be resolved

Also adds some safety checks (distfile name must not be empty and should not
be rename_prefix).

---
 roverlay/overlay/pkgdir/distroot/distroot.py | 21 -
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/roverlay/overlay/pkgdir/distroot/distroot.py 
b/roverlay/overlay/pkgdir/distroot/distroot.py
index 654c1f6..9872aad 100644
--- a/roverlay/overlay/pkgdir/distroot/distroot.py
+++ b/roverlay/overlay/pkgdir/distroot/distroot.py
@@ -657,22 +657,33 @@ class PersistentDistroot ( DistrootBase ):
   if self.distmap.get_distfile_slot ( package_dir, package_info ):
  return True
   else:
- distfile  = package_info.get_src_uri_dest().rpartition ( os.sep )
- rename_prefix = package_info ['repo_name'].lower() + '_'
-
- if distfile[2][:len(rename_prefix)] == rename_prefix:
+ orig_src_uri_dest = package_info.get_src_uri_dest()
+ # distfile_dirname, distfile_os_sep, distfile_basename
+ distfile  = orig_src_uri_dest.rpartition ( os.sep )
+ rename_prefix = package_info ['repo_name'].lower() + '_'
+ rename_prefix_len = len ( rename_prefix )
+
+ assert distfile[2]
+
+ if (
+len(distfile[2]) > rename_prefix_len
+and distfile[2][:rename_prefix_len] == rename_prefix
+ ):
 # already prefixed with the repo name
 return False
+
  else:
 package_info.update (
src_uri_dest=(
   distfile[0] + distfile[1] + rename_prefix + distfile[2]
)
 )
-#return self.distmap.get_distfile_slot(...)
+
 if self.distmap.get_distfile_slot ( package_dir, package_info ):
return True
 else:
+   # restore src_uri_dest
+   package_info.update ( src_uri_dest=orig_src_uri_dest )
return False
# --- end of handle_file_collision (...) ---
 



[gentoo-commits] proj/R_overlay:master commit in: /, roverlay/

2014-08-23 Thread André Erdmann
commit: 78092d3fc3cbebae86f9ccac956430252bc597e6
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 20:19:11 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 20:19:14 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=78092d3f

roverlay 0.3.0

Changes since 0.2.6:
* a lot of fixes/minor enhancements
* build file changes (Makefile/ebuild, helper scripts)
* addition control feature -- regenerate ebuilds by means of replace/revbump
* partial support for running roverlay on non-Gentoo systems (still TODO)

---
 VERSION  | 2 +-
 roverlay/core.py | 2 +-
 setup.py | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/VERSION b/VERSION
index 53a75d6..0d91a54 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.2.6
+0.3.0

diff --git a/roverlay/core.py b/roverlay/core.py
index 2f4215b..97681d0 100644
--- a/roverlay/core.py
+++ b/roverlay/core.py
@@ -26,7 +26,7 @@ import roverlay.util.common
 
 
 name= "R_overlay"
-version = "0.2.6"
+version = "0.3.0"
 
 description_str = "R overlay creation (roverlay) " + version
 license_str = (

diff --git a/setup.py b/setup.py
index ccb6037..acc8c3e 100755
--- a/setup.py
+++ b/setup.py
@@ -10,7 +10,7 @@ SCRIPT_DIR = os.path.join ( "bin", "install" )
 
 setup (
name = 'R_Overlay',
-   version  = '0.2.6',
+   version  = "0.3.0",
description  = 'Automatically generated overlay of R packages (SoC2012)',
author   = 'Andr\xe9 Erdmann',
author_email = 'd...@mailerd.de',



[gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/pkgdir/

2014-08-23 Thread André Erdmann
commit: 48857ff9eae7795dc1eb2563b7f41dd89526ad03
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 18:25:57 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 18:28:17 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=48857ff9

roverlay/overlay/pkgdir/packagedir_base: fix

Clear "replace-only" addition control flag when revbumping.
Otherwise, the revbumped package gets denied.

---
 roverlay/overlay/pkgdir/packagedir_base.py | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/roverlay/overlay/pkgdir/packagedir_base.py 
b/roverlay/overlay/pkgdir/packagedir_base.py
index 7a8a29f..ae3f10a 100644
--- a/roverlay/overlay/pkgdir/packagedir_base.py
+++ b/roverlay/overlay/pkgdir/packagedir_base.py
@@ -389,7 +389,7 @@ class PackageDirBase ( roverlay.overlay.base.OverlayObject 
):
 or self.DISTMAP.check_revbump_necessary ( package_info )
  ):
 # resolve by recursion,
-#  keep addition_control as-is
+#  clear "replace-only" addition_control
 assert package_info.overlay_addition_override is addition_override
 
 if (addition_override & _PKG_REVBUMP_ON_COLLISION):
@@ -403,8 +403,11 @@ class PackageDirBase ( roverlay.overlay.base.OverlayObject 
):
#
 # -- end if
 
+package_info.revbump()
+package_info.overlay_addition_override &= ~_PKG_REPLACE_ONLY
+
 return package_add_main (
-   package_info= package_info.revbump(),
+   package_info= package_info,
add_if_physical = add_if_physical,
allow_postpone  = allow_postpone
 )



[gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/

2014-08-23 Thread André Erdmann
commit: 142c037fa2ad4e50aeb0636036bbe0ef5c68b381
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 19:19:21 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 19:19:21 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=142c037f

addition control pkg rule gen: fix

correctly handle extended_default_bitmask and call _splitmask_line().

---
 roverlay/packagerules/generators/addition_control.py | 11 ---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py 
b/roverlay/packagerules/generators/addition_control.py
index 50b16a7..6d5a5c5 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -610,7 +610,10 @@ class BitmaskMapCreator ( object ):
   insert_package = self._insert_package
 
   if extended_format:
- for call_args in map ( self._split_bitmask_line, arglist ):
+ split_bitmask_line = self._split_bitmask_line
+
+ for arg in arglist:
+call_args = split_bitmask_line ( arg, bitmask )
 insert_package ( call_args[0], call_args[1], package_regex )
 
   else:
@@ -834,14 +837,16 @@ def create_addition_control_package_rule (
 
if cmdline_package_extended or cmdline_ebuild_extended:
   feed_bitmask (
- None, cmdline_package_extended, cmdline_ebuild_extended,
+ extended_default_bitmask,
+ cmdline_package_extended, cmdline_ebuild_extended,
  extended_format=True
   )
# --
 
if file_package_extended or file_ebuild_extended:
   filefeed_bitmask (
- None, file_package_extended, file_ebuild_extended,
+ extended_default_bitmask,
+ file_package_extended, file_ebuild_extended,
  extended_format=True
   )
# --



[gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/

2014-08-23 Thread André Erdmann
commit: 733f401dafd7cf55ee939e2fff9fdc57d0670bdc
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 18:23:32 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 18:24:37 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=733f401d

packagerules/generators/addition_control: fix

Cannot compare str to version tuple -- use str on both sides, which means that
the addition control rule generator has to create acceptors with
get_ebuild_version() as value getter and not get_ebuild_version_tuple().

---
 roverlay/packagerules/generators/addition_control.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py 
b/roverlay/packagerules/generators/addition_control.py
index 9aeada3..50b16a7 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -36,7 +36,7 @@ from roverlay.packagerules.acceptors.stringmatch import (
 )
 
 from roverlay.packagerules.acceptors.util import (
-   get_category, get_ebuild_name, get_ebuild_version_tuple,
+   get_category, get_ebuild_name, get_ebuild_version,
 )
 
 import roverlay.util.fileio
@@ -474,7 +474,8 @@ class AdditionControlPackageRuleGenerator (
 package_token,
 (
get_ebuild_name,
-   get_ebuild_version_tuple
+   # FIXME: use get_ebuild_version_tuple()
+   get_ebuild_version
 )
  ) if item_and_getter[0] and item_and_getter[0] is not True
   ]



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/simpledeprule/

2014-08-23 Thread André Erdmann
commit: ffe2f8e7da01aa425467f0a0449f404d8adf4e6b
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 18:38:33 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 18:38:33 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=ffe2f8e7

roverlay/depres, slot rules: fix get_slot_result()

---
 roverlay/depres/simpledeprule/rules.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roverlay/depres/simpledeprule/rules.py 
b/roverlay/depres/simpledeprule/rules.py
index 797ba98..869c5aa 100644
--- a/roverlay/depres/simpledeprule/rules.py
+++ b/roverlay/depres/simpledeprule/rules.py
@@ -402,7 +402,7 @@ class SimpleFuzzySlotDependencyRule ( FuzzySimpleRule ):
  # -- end if 
 
  # explicit return
- return None
+ return False
   # --- end of get_slot_result (...) ---
 
   res  = False



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/

2014-08-23 Thread André Erdmann
commit: e27f0b7bfc4555d1ac9720e2545d01c584d318d3
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 18:57:52 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 18:57:52 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=e27f0b7b

roverlay/depres/depenv: skip vmod dict lookup

When checking/normalizing vmod_str, set vmod directly if possible.

---
 roverlay/depres/depenv.py | 19 ---
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/roverlay/depres/depenv.py b/roverlay/depres/depenv.py
index 7d1bf5e..c0ea6e1 100644
--- a/roverlay/depres/depenv.py
+++ b/roverlay/depres/depenv.py
@@ -218,14 +218,19 @@ class DepEnv ( object ):
 # fix versions like ".9" (-> "0.9")
 if version [0] == '.': version = '0' + version
 
-vmod = m.group ( 'vmod' )
+vmod_str = m.group ( 'vmod' )
 
-if not vmod:
+if not vmod_str:
# version required, but no modifier: set vmod to '>='
-   vmod = '>='
-elif vmod == '==':
+   vmod = self.VMOD_GE
+   vmod_str = '>='
+   #vmod_weak = True # for slot-resolve // TODO-MAYBE
+elif vmod_str == '==':
# "normalize"
-   vmod = '='
+   vmod = self.VMOD_EQ
+   vmod_str = '='
+else:
+   vmod = self.VMOD.get ( vmod_str, self.VMOD_UNDEF )
 
 version_strlist = version.split ( '.' )
 version_iparts  = list()
@@ -243,13 +248,13 @@ class DepEnv ( object ):
 result.append ( dict (
name = m.group ( 'name' ),
name_low = m.group ( 'name' ).lower(),
-   version_modifier = vmod,
+   version_modifier = vmod_str,
version  = version,
version_strlist  = version_strlist,
version_tuple= roverlay.versiontuple.IntVersionTuple (
   version_iparts
),
-   vmod = self.VMOD.get ( vmod, self.VMOD_UNDEF ),
+   vmod = vmod,
 ) )
 
 if not self.try_all_regexes: break



[gentoo-commits] proj/R_overlay:master commit in: doc/rst/

2014-08-23 Thread André Erdmann
commit: cf093636b7458403591634c74e043d95bbdeec03
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 19:00:13 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 19:00:13 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=cf093636

doc/rst: fix slot rule examples

---
 doc/rst/usage.rst | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 1f6dbb2..c6046c0 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -1535,7 +1535,7 @@ Example 5 - fuzzy slot rule
 
.. code-block:: text
 
-  ~sci-libs/fftw:s=0..1 :: fftw
+  ~sci-libs/fftw:wide_match:s=0..1 :: fftw
 
 Example 6 - slot-restricted fuzzy slot rule
Similar to example 5, but this rule does not resolve anything unless the
@@ -1543,7 +1543,7 @@ Example 6 - slot-restricted fuzzy slot rule
 
.. code-block:: text
 
-  ~sci-libs/fftw:s=0..1:restrict=2.1,3.0: :: fftw
+  ~sci-libs/fftw:wide_match:s=0..1:restrict=2.1,3.0: :: fftw
 
 Example 7 - slot-restricted fuzzy slot rule with *immediate* value
Example 6 is not quite correct, as sci-libs/fftw currently uses slot 3.0
@@ -1552,7 +1552,7 @@ Example 7 - slot-restricted fuzzy slot rule with 
*immediate* value
 
.. code-block:: text
 
-  ~sci-libs/fftw:s=i3.0:restrict=3.0,3.1,3.2,3.3 :: fftw
+  ~sci-libs/fftw:wide_match:s=i3.0:restrict=3.0,3.1,3.2,3.3 :: fftw
 
 
 Please see the default rule files for more extensive examples that cover



[gentoo-commits] proj/R_overlay:master commit in: doc/rst/

2014-08-23 Thread André Erdmann
commit: 49009d462b003ccfd5c534680db4ab1e07c50e4f
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 17:49:49 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 17:49:49 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=49009d46

doc/rst: document slot deprule changes

---
 doc/rst/usage.rst | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index c89..1f6dbb2 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -1680,6 +1680,12 @@ Fuzzy Slot Rules
  * ``with_version`` or ``+v``: include version, too 
(``=/-:``)
  * ``open``: non-versioned slot (``/:*`` or ``/:=``)
 
+   * match behavior
+
+ By default, slot rules match ``<= `` and ``= ``
+ statements only.
+ The ``wide_match`` option allows to match ``>= ``, too.
+
* accepted *calculated* slot values can be restricted with
  ``restrict=``
* relevant slot parts can be set with ``slotparts=`` or



[gentoo-commits] proj/R_overlay:master commit in: roverlay/console/

2014-08-23 Thread André Erdmann
commit: 5c640fdb7884f318b306fb10bd6b499b1b7c0f40
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 17:17:08 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 17:17:08 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=5c640fdb

console/interpreter: minor improvements

* added --clear option to "history" command
* "set" can now be called without VAR=VALUE

---
 roverlay/console/interpreter.py | 31 ++-
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/roverlay/console/interpreter.py b/roverlay/console/interpreter.py
index 107a14a..00b6ea9 100644
--- a/roverlay/console/interpreter.py
+++ b/roverlay/console/interpreter.py
@@ -334,6 +334,12 @@ class ConsoleInterpreter ( cmd.Cmd ):
   parser.add_argument ( "files", metavar='', nargs='*',
  help='files to read', type=self.argparse_filepath,
   )
+
+  parser = self.get_argparser ( "history", create=True )
+  parser.add_argument ( "-c", "--clear",
+ default=False, action='store_true',
+ help="clear history"
+  )
# --- end of setup_argparser (...) ---
 
def setup_interpreter ( self ):
@@ -466,7 +472,7 @@ class ConsoleInterpreter ( cmd.Cmd ):
   if self.state == ConsoleInterpreterStatus.STATE_CMD_EXEC:
  if self.is_onerror():
 self.clear_onerror()
- elif self.lastcmd and self.lastcmd != "history":
+ elif self.lastcmd and self.lastcmd.split(None,1)[0] != "history":
 self._history.append ( line )
 
  self.state.goto ( "READY" )
@@ -549,8 +555,12 @@ class ConsoleInterpreter ( cmd.Cmd ):
 
def do_history ( self, line ):
   """Shows the command history."""
-  sys.stdout.write ( '\n'.join ( l for l in self._history ) )
-  sys.stdout.write ( '\n' )
+  args = self.parse_cmdline ( "history", line )
+  if args.clear:
+ self._history.reset()
+  else:
+ sys.stdout.write ( '\n'.join ( l for l in self._history ) )
+ sys.stdout.write ( '\n' )
# --- end of history (...) ---
 
def do_pwd ( self, line ):
@@ -657,19 +667,22 @@ class ConsoleInterpreter ( cmd.Cmd ):
# --- end of do_declare (...) ---
 
def do_set ( self, line ):
-  """Sets a variable.
+  """Sets a variable or prints all variables.
 
-  Usage: set VAR=VALUE
+  Usage: set [VAR=VALUE]
 
   Examples:
   * set PS1=cmd %
   * set dep=fftw 3
   """
-  name, sepa, value = line.partition ( '=' )
-  if not sepa:
- sys.stderr.write ( "set, bad syntax: {}\n".format ( line ) )
+  if not line:
+ self.do_declare ( line )
   else:
- self.set_var ( name.strip(), value )
+ name, sepa, value = line.partition ( '=' )
+ if not sepa:
+sys.stderr.write ( "set, bad syntax: {}\n".format ( line ) )
+ else:
+self.set_var ( name.strip(), value )
# --- end of do_set (...) ---
 
def do_unset ( self, line ):



[gentoo-commits] proj/R_overlay: New tag: 0.3.1

2014-08-23 Thread André Erdmann
commit: 
Commit: André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 19:03:18 2014 +

New tag: 0.3.1




[gentoo-commits] proj/R_overlay:master commit in: roverlay/config/

2014-08-23 Thread André Erdmann
commit: 7224fec5b78c8ac4c2c52d5615cc8ea42726c8a2
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 17:15:50 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 17:15:50 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=7224fec5

config loader, yesno(): use str_to_bool()

---
 roverlay/config/loader.py | 17 +++--
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/roverlay/config/loader.py b/roverlay/config/loader.py
index f5d28d8..76c73b0 100644
--- a/roverlay/config/loader.py
+++ b/roverlay/config/loader.py
@@ -17,7 +17,7 @@ import re
 import shlex
 import os.path
 
-from roverlay.strutil import unquote
+from roverlay.strutil import unquote, str_to_bool
 from roverlay.config  import fielddef
 from roverlay.config.util import get_config_path
 from roverlay.config.entrymap import CONFIG_ENTRY_MAP
@@ -365,15 +365,12 @@ class ConfigLoader ( object ):
  arguments:
  * val --
  """
- if not val is None:
-to_check = str ( val ).lower()
-if to_check in [ 'y', 'yes', '1', 'true', 'enabled', 'on' ]:
-   return 1
-elif to_check in [ 'n', 'no', '0', 'false', 'disabled', 'off' ]:
-   return 0
-
- self.logger.warning ( str(val) + " is not a valid yesno value." )
- return -1
+ ret = str_to_bool ( val, nofail=True )
+ if ret is None:
+self.logger.warning ( str(val) + " is not a valid yesno value." )
+return -1
+ else:
+return int(ret)
   # --- end of yesno (...) ---
 
   def fs_path ( val ):



[gentoo-commits] proj/R_overlay:master commit in: tests/static/

2014-08-23 Thread André Erdmann
commit: e51ee9a2485f1acdffb03a45659e7e525340c08b
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 18:59:38 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 18:59:38 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=e51ee9a2

tests, data: reflect SLOT rule changes

---
 tests/static/depres.py | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/tests/static/depres.py b/tests/static/depres.py
index 5b8c98e..85ff7ae 100644
--- a/tests/static/depres.py
+++ b/tests/static/depres.py
@@ -33,9 +33,9 @@ DEPRES_DATA = {
   DONT_RESOLVE ( "p2 !5" ),
   DONT_RESOLVE ( "p2 !=5" ),
   DONT_RESOLVE ( "p3 1." ),
-  ( "p3 2.1.0", "cat/pkg:1" ),
-  ( "p4 5.4.3.2.1", "cat/pkg:5=" ),
-  ( "p5 4", "cat/pkg:99/2" ),
+  ( "p3 =2.1.0", "cat/pkg:1" ),
+  ( "p4 =5.4.3.2.1", "cat/pkg:5=" ),
+  ( "p5 =4", "cat/pkg:99/2" ),
),
 
'selfdeps': (
@@ -123,7 +123,7 @@ DEPRES_DATA = {
 DEPRES_RULES = {
'fftw': (
   'sci-libs/fftw {', 'fftw', '}',
-  '~sci-libs/fftw:+v:s=..1 :: fftw',
+  '~sci-libs/fftw:wide_match:+v:s=..1 :: fftw',
   '~sci-libs/fftw :: fftw',
),
 
@@ -167,13 +167,13 @@ DEPRES_RULES = {
   '}',
),
'example5': (
-  '~sci-libs/fftw:s=0..1 :: fftw',
+  '~sci-libs/fftw:wide_match:s=0..1 :: fftw',
),
'example6': (
-  '~sci-libs/fftw:s=0..1:restrict=2.1,3.0: :: fftw',
+  '~sci-libs/fftw:wide_match:s=0..1:restrict=2.1,3.0: :: fftw',
),
'example7': (
-  '~sci-libs/fftw:s=i3.0:r=3.0,3.1,3.2,3.3 :: fftw',
+  '~sci-libs/fftw:wide_match:s=i3.0:r=3.0,3.1,3.2,3.3 :: fftw',
),
 }
 



[gentoo-commits] proj/R_overlay:master commit in: roverlay/config/

2014-08-23 Thread André Erdmann
commit: 3082162095b944388a5b6942135a8d6326cb89d9
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 17:50:46 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 17:56:30 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=30821620

set default EAPI=5 and make it configurable

SLOTted dependency rules allow to use EAPI 5 features, so default to 5.

---
 roverlay/config/const.py |  2 +-
 roverlay/config/defconfig.py |  4 
 roverlay/config/entrymap.py  | 11 +--
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/roverlay/config/const.py b/roverlay/config/const.py
index 0933689..046268b 100644
--- a/roverlay/config/const.py
+++ b/roverlay/config/const.py
@@ -49,7 +49,7 @@ _CONSTANTS = dict (
  '# $Header: $\n'
   ).format ( year=time.gmtime()[0] ),
   # EAPI=N and inherit  are no longer part of the default header
-  eapi = 4,
+  eapi = 5,
 
   # number of workers used by OverlayCreator
   # when 0=> dont use threads

diff --git a/roverlay/config/defconfig.py b/roverlay/config/defconfig.py
index 383bb96..145905f 100644
--- a/roverlay/config/defconfig.py
+++ b/roverlay/config/defconfig.py
@@ -426,6 +426,10 @@ class RoverlayConfigCreation ( object ):
 defaults_to="no",
  ),
  ConfigOption (
+'EBUILD_EAPI', '5', required=False, comment_default=True,
+defaults_to="5",
+ ),
+ ConfigOption (
 'MANIFEST_IMPLEMENTATION', 'ebuild', required=False,
 use_default_desc=False, comment_default=True, defaults_to="next",
 description=(

diff --git a/roverlay/config/entrymap.py b/roverlay/config/entrymap.py
index 46c2f7f..3e188b3 100644
--- a/roverlay/config/entrymap.py
+++ b/roverlay/config/entrymap.py
@@ -366,11 +366,10 @@ CONFIG_ENTRY_MAP = dict (
 
# == ebuild ==
 
-   ebuild_eapi = None,
-#   ebuild_eapi = dict (
-#  description = "EAPI of the created ebuilds",
-#  value_type  = str,
-#   ),
+   ebuild_eapi = dict (
+  description = "EAPI of the created ebuilds",
+  value_type  = str,
+   ),
 
ebuild_use_expand_desc = dict (
   path= [ 'EBUILD', 'USE_EXPAND', 'desc_file', ],
@@ -394,7 +393,7 @@ CONFIG_ENTRY_MAP = dict (
),
 
# * alias
-   #eapi  = 'ebuild_eapi',
+   eapi  = 'ebuild_eapi',
use_expand_desc   = 'ebuild_use_expand_desc',
use_expand_name   = 'ebuild_use_expand_name',
use_expand_rename = 'ebuild_use_expand_rename',



[gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/

2014-08-23 Thread André Erdmann
commit: 8c67544ba3552ae6a67a10145036d42d8692d10c
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 18:22:04 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 18:22:04 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=8c67544b

roverlay/overlay/rulegen: fix dot handling

for scanned ebuilds: replace underscore chars '_' with dot chars '.' and the
resulting str as package name alias to the dyn. dep rule.

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

diff --git a/roverlay/overlay/rulegen.py b/roverlay/overlay/rulegen.py
index b2bf1e5..dcc4723 100644
--- a/roverlay/overlay/rulegen.py
+++ b/roverlay/overlay/rulegen.py
@@ -40,6 +40,8 @@ class DepresRuleGenerator ( object ):
   )
   if package_name:
  package_names.add ( package_name )
+  else:
+ package_names.add ( pkgdir_name.replace('_','.') )
 
   repo = p_info.get ( 'origin', do_fallback=True )
   if repo is not None:



[gentoo-commits] proj/R_overlay:master commit in: tests/

2014-08-23 Thread André Erdmann
commit: 14ce917c1ff12f93894adcd6712a00ca5331e12a
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 18:58:55 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 18:58:55 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=14ce917c

tests/depres.py: print test data identifier

Helps when tests fail.

---
 tests/depres.py | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/tests/depres.py b/tests/depres.py
index 77a6857..238731c 100644
--- a/tests/depres.py
+++ b/tests/depres.py
@@ -61,7 +61,7 @@ class DepresTestCase ( 
tests.interface.RoverlayInterfaceTestCase ):
   self.depres.update()
# --- end of tearDown (...) ---
 
-   def do_depres_test ( self, rule_names, test_data ):
+   def do_depres_test ( self, test_identifier, rule_names, test_data ):
   unpacked = lambda T: \
  ( "" if T[0] is None else T[0] ) if T and len ( T ) == 1 else T
 
@@ -81,21 +81,21 @@ class DepresTestCase ( 
tests.interface.RoverlayInterfaceTestCase ):
 
  self.assertEquals (
 result, expected_result,
-"{!r} should be resolved as {!r} and not {!r}".format (
-   depstr, expected_result, result
+"{!s}: {!r} should be resolved as {!r} and not {!r}".format (
+   test_identifier, depstr, expected_result, result
 )
  )
# --- end of do_depres_test (...) ---
 
def do_randomized_depres_test (
-  self, rule_names, test_data, allow_modify=False
+  self, test_identifier, rule_names, test_data, allow_modify=False
):
   if allow_modify and isinstance ( test_data, list ):
  rand_list = test_data
   else:
  rand_list = list ( test_data )
   random.shuffle ( rand_list )
-  return self.do_depres_test ( rule_names, rand_list )
+  return self.do_depres_test ( test_identifier, rule_names, rand_list )
# --- end of do_randomized_depres_test (...) ---
 
def get_depres_include ( self, dataset_name ):
@@ -140,6 +140,7 @@ class DepresTestCase ( 
tests.interface.RoverlayInterfaceTestCase ):
def test_depres_static ( self ):
   for name, test_data in DEPRES_DATA.items():
  self.do_depres_test (
+name,
 self.get_depres_include ( name ),
 DEPRES_DATA [test_data] if isinstance ( test_data, str )
else test_data
@@ -153,6 +154,7 @@ class DepresTestCase ( 
tests.interface.RoverlayInterfaceTestCase ):
   for name in data_keys:
  test_data = DEPRES_DATA [name]
  self.do_randomized_depres_test (
+name,
 self.get_depres_include ( name ),
 DEPRES_DATA [test_data] if isinstance ( test_data, str )
else test_data



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/simpledeprule/

2014-08-23 Thread André Erdmann
commit: 1cc91c92cd6103185598fa2e4ce9829a01a30b2d
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 17:00:06 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 17:00:06 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=1cc91c92

roverlay/depres, slot rules: "wide match"

In continuation of commit #50bd6d5aac48317c46b777acf9c1836e792bff58,
make the slot match behavior configurable (depending on the slot rule,
not the dep env<-package).

---
 roverlay/depres/simpledeprule/rules.py | 142 +++--
 1 file changed, 98 insertions(+), 44 deletions(-)

diff --git a/roverlay/depres/simpledeprule/rules.py 
b/roverlay/depres/simpledeprule/rules.py
index 7ba4967..df767ba 100644
--- a/roverlay/depres/simpledeprule/rules.py
+++ b/roverlay/depres/simpledeprule/rules.py
@@ -27,6 +27,8 @@ from roverlay.depres.simpledeprule.util import \
 from roverlay.depres.simpledeprule.abstractrules import \
SimpleRule, FuzzySimpleRule
 
+import roverlay.depres.depenv
+
 
 
 
@@ -100,6 +102,12 @@ class RuleConstructor ( object ):
 #  # unsafe, could be used to inject "$(rm -rf /)" etc.
 #  kwargs ['slot_operator'] = value
 
+   elif opt == 'wide_match':
+  if not has_value:
+ kwargs ['allow_wide_match'] = True
+  else:
+ raise NotImplementedError("wide_match value")
+
elif opt == '*':
   kwargs ['slot_operator'] = '*'
 
@@ -232,8 +240,17 @@ class SimpleFuzzySlotDependencyRule ( FuzzySimpleRule ):
 #  'slot' : '{slot}',
 #   }
 
-   #RULE_PREFIX = '~'
-   RULE_PREFIX = SimpleFuzzyDependencyRule.RULE_PREFIX
+   #RULE_PREFIX= '~'
+   RULE_PREFIX = SimpleFuzzyDependencyRule.RULE_PREFIX
+
+   # version relation operators that should never be matched in slot dep rules
+   #  (bitmask)
+   VMOD_BASE_DENY_MASK = roverlay.depres.depenv.DepEnv.VMOD_NOT
+
+   # operators that should not be matched in nonwide mode (bitmask)
+   #  - in addition to the base mask -
+   VMOD_WIDE_DENY_MASK = roverlay.depres.depenv.DepEnv.VMOD_GT
+
 
def __init__ ( self,
   priority  = 71,
@@ -243,6 +260,7 @@ class SimpleFuzzySlotDependencyRule ( FuzzySimpleRule ):
   slotparts = None,
   subslotparts  = None,
   slot_operator = None,
+  allow_wide_match  = None,
   **kw
):
   super ( SimpleFuzzySlotDependencyRule, self ) . __init__ (
@@ -252,11 +270,17 @@ class SimpleFuzzySlotDependencyRule ( FuzzySimpleRule ):
  **kw
   )
 
-  self.mode  = 0 if slot_mode is None else slot_mode
-  self.slot_restrict = slot_restrict
-  self.slot_operator = slot_operator
-  self.slotparts = get_slot_parser ("0") if slotparts is None else 
slotparts
-  self.subslotparts  = subslotparts
+  self.mode = 0 if slot_mode is None else slot_mode
+  self.slot_restrict= slot_restrict
+  self.slot_operator= slot_operator
+  self.slotparts= (
+ get_slot_parser ("0") if slotparts is None else slotparts
+  )
+  self.subslotparts = subslotparts
+  self.allow_wide_match = allow_wide_match
+  self.vmod_mask= self.VMOD_BASE_DENY_MASK
+  if not allow_wide_match:
+ self.vmod_mask |= self.VMOD_WIDE_DENY_MASK
 
   if self.mode == 0:
  # "default"
@@ -294,13 +318,21 @@ class SimpleFuzzySlotDependencyRule ( FuzzySimpleRule ):
 
def noexport ( self ):
   del self.slot_operator
-  del self.mode
+  del self.allow_wide_match
+
   if self.slot_restrict:
  self.slot_restrict.noexport()
# --- end of noexport (...) ---
 
def get_resolving_str ( self ):
   def gen_opts():
+ if self.allow_wide_match:
+yield "wide_match"
+
+# yield "vmod_mask={:#x}".format (
+#self.vmod_mask & ~self.VMOD_BASE_DENY_MASK
+# )
+
  if self.mode == 2:
 yield "open"
  else:
@@ -327,52 +359,74 @@ class SimpleFuzzySlotDependencyRule ( FuzzySimpleRule ):
  resolv = (
 self._orig_resolving_package
 if hasattr ( self, '_orig_resolving_package' )
-else self.resolving_package,
+else self.resolving_package
  ),
  opts   = ':'.join ( gen_opts() )
   )
# --- end of get_resolving_str (...) ---
 
def handle_version_relative_match ( self, dep_env, fuzzy ):
+  def get_slotted_result ( dep_env, fuzzy, vmod ):
+ slot_str  = None
+ vslot_str = None
+ slot  = self.slotparts.get_slot ( fuzzy )
+
+ if slot is not N

[gentoo-commits] proj/R_overlay:master commit in: roverlay/util/

2014-08-23 Thread André Erdmann
commit: cb26f0710d0b0559fb0e596e78d308c015c508da
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 17:19:53 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 17:19:53 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=cb26f071

minor cleanup

---
 roverlay/util/dictwalk.py | 4 ++--
 roverlay/util/objects.py  | 8 
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/roverlay/util/dictwalk.py b/roverlay/util/dictwalk.py
index 0813d11..9408623 100644
--- a/roverlay/util/dictwalk.py
+++ b/roverlay/util/dictwalk.py
@@ -30,8 +30,8 @@ def dictmerge ( iterable, dict_cls=dict, get_key=None, 
get_value=None ):
 
 
 def dictwalk_create_parent_v ( root, path, dict_create=None, cautious=True ):
-   """Creates a dict tree structure using keys the given path. The last path
-   element will not be created.
+   """Creates a dict tree structure using keys from the given path.
+   The last path element will not be created.
 
Returns a 3-tuple
   ( ,

diff --git a/roverlay/util/objects.py b/roverlay/util/objects.py
index 9c73749..0f2a2da 100644
--- a/roverlay/util/objects.py
+++ b/roverlay/util/objects.py
@@ -59,13 +59,13 @@ class SafeWeakRef ( weakref.ref ):
 
def __repr__ ( self ):
   obj = self.deref_unsafe()
-  if obj:
- return "<{} at 0x{:x} to {!r} at 0x{:x}>".format (
+  if obj is not None:
+ return "<{} at {:#x} to {!r} at {:#x}>".format (
 self.__class__.__name__, id ( self ),
 obj.__class__.__name__, id ( obj )
  )
   else:
- return "<{} at 0x{:x} to None>".format (
+ return "<{} at {:#x} to None>".format (
 self.__class__.__name__, id ( self )
  )
# --- end of __repr__ (...) ---
@@ -109,7 +109,7 @@ class NoneRef ( object ):
__nonzero__ = __bool__
 
def __repr__ ( self ):
-  return "".format ( id ( self ) )
+  return "".format ( id ( self ) )
# --- end of __repr__ (...) ---
 
 # --- end of NoneRef ---



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/simpledeprule/, roverlay/

2014-08-23 Thread André Erdmann
commit: 768b134a4a388bc11175c5ff8975369fe01317fe
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Jul 29 17:39:14 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Jul 29 17:39:14 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=768b134a

roverlay/depres, rule constructor: accept bool value

The wide_match option accepts a boolean value now:
   wide_match[=[1|y|yes|0|n|no|...]]

---
 roverlay/depres/simpledeprule/rules.py | 10 +++---
 roverlay/strutil.py| 17 +
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/roverlay/depres/simpledeprule/rules.py 
b/roverlay/depres/simpledeprule/rules.py
index df767ba..797ba98 100644
--- a/roverlay/depres/simpledeprule/rules.py
+++ b/roverlay/depres/simpledeprule/rules.py
@@ -21,14 +21,16 @@ __all__ = (
 )
 
 
+import roverlay.strutil
+import roverlay.depres.depenv
+
+
 from roverlay.depres.simpledeprule.util import \
RuleFileSyntaxError, get_slot_restrict, get_slot_parser
 
 from roverlay.depres.simpledeprule.abstractrules import \
SimpleRule, FuzzySimpleRule
 
-import roverlay.depres.depenv
-
 
 
 
@@ -106,7 +108,9 @@ class RuleConstructor ( object ):
   if not has_value:
  kwargs ['allow_wide_match'] = True
   else:
- raise NotImplementedError("wide_match value")
+ kwargs ['allow_wide_match'] = bool (
+roverlay.strutil.str_to_bool ( value )
+ )
 
elif opt == '*':
   kwargs ['slot_operator'] = '*'

diff --git a/roverlay/strutil.py b/roverlay/strutil.py
index 9799477..76949fc 100644
--- a/roverlay/strutil.py
+++ b/roverlay/strutil.py
@@ -8,6 +8,7 @@
 
 __all__ = [ 'ascii_filter', 'bytes_try_decode', 'fix_ebuild_name',
'pipe_lines', 'shorten_str', 'unquote', 'foreach_str',
+   'str_to_bool',
 ]
 
 import re
@@ -158,3 +159,19 @@ def foreach_str ( func, _str ):
else:
   return [ func(str(s)) for s in _str ]
 # --- end of foreach_str (...) ---
+
+def str_to_bool ( s, empty_return=None, nofail=False ):
+   if not s:
+  return empty_return
+
+   slow = s.lower()
+
+   if slow in { 'y', 'yes', '1', 'true', 'enabled', 'on' }:
+  return True
+   elif slow in { 'n', 'no', '0', 'false', 'disabled', 'off' }:
+  return False
+   elif nofail:
+  return None
+   else:
+  raise ValueError(s)
+# --- end of str_to_bool (...) ---



[gentoo-commits] proj/R_overlay:master commit in: /, roverlay/

2014-08-23 Thread André Erdmann
commit: 19c64a0a66ec382fe8e436a7e33f52d75e580fa6
Author: André Erdmann  mailerd  de>
AuthorDate: Sat Aug 23 19:01:52 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sat Aug 23 19:01:52 2014 +
URL:
http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=19c64a0a

roverlay 0.3.1

---
 VERSION  | 2 +-
 roverlay/core.py | 2 +-
 setup.py | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/VERSION b/VERSION
index 0d91a54..9e11b32 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.3.0
+0.3.1

diff --git a/roverlay/core.py b/roverlay/core.py
index 97681d0..4550e81 100644
--- a/roverlay/core.py
+++ b/roverlay/core.py
@@ -26,7 +26,7 @@ import roverlay.util.common
 
 
 name= "R_overlay"
-version = "0.3.0"
+version = "0.3.1"
 
 description_str = "R overlay creation (roverlay) " + version
 license_str = (

diff --git a/setup.py b/setup.py
index acc8c3e..fc88200 100755
--- a/setup.py
+++ b/setup.py
@@ -10,7 +10,7 @@ SCRIPT_DIR = os.path.join ( "bin", "install" )
 
 setup (
name = 'R_Overlay',
-   version  = "0.3.0",
+   version  = "0.3.1",
description  = 'Automatically generated overlay of R packages (SoC2012)',
author   = 'Andr\xe9 Erdmann',
author_email = 'd...@mailerd.de',



[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: 8a76e7a8a17e118fcc9b6d6c3ac1a670fa10e0cb
Author: André Erdmann  mailerd  de>
AuthorDate: Wed Apr  2 20:27:11 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed Apr  2 20:27:11 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=8a76e7a8

Makefile: add 'generate-files-commit' target

---
 Makefile | 12 
 1 file changed, 12 insertions(+)

diff --git a/Makefile b/Makefile
index 505f0cf..1b43925 100644
--- a/Makefile
+++ b/Makefile
@@ -175,6 +175,18 @@ generate-config: \
 PHONY += generate-files
 generate-files: generate-config generate-doc generate-manifest 
generate-licenses
 
+PHONY += generate-files-commit
+generate-files-commit:
+   { ! $(X_GIT) status --porcelain -- . | grep ^[MADRCU]; }
+   $(X_GIT) add -vu -- \
+   R-overlay.conf \
+   R-overlay.conf.others \
+   config/R-overlay.conf.install \
+   config/R-overlay.conf.install.others \
+   doc/html/ \
+   files/licenses
+   $(X_GIT) commit -m "update generated files"
+
 # creates a src tarball (.tar.bz2)
 PHONY += release
 release: generate-files



[gentoo-commits] proj/R_overlay:master commit in: /, bin/build/

2014-06-05 Thread André Erdmann
commit: 71e37945e29257ba8ad3dbc08ae5221986be450d
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Apr  1 22:48:36 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed Apr  2 20:00:30 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=71e37945

bin/build/setver: versioning helper script

---
 VERSION |   1 +
 bin/build/setver.sh | 131 
 2 files changed, 132 insertions(+)

diff --git a/VERSION b/VERSION
new file mode 100644
index 000..53a75d6
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.2.6

diff --git a/bin/build/setver.sh b/bin/build/setver.sh
new file mode 100755
index 000..470e529
--- /dev/null
+++ b/bin/build/setver.sh
@@ -0,0 +1,131 @@
+#!/bin/sh
+#
+#  Sets roverlay's version.
+#
+#  Usage: setver [-S,--src ] [--pretend] [--suffix ]
+#[+,pbump|++,mbump|Mbump|[setver] ]
+#
+# Actions:
+#  +, pbump-- increase patchlevel by one
+#  ++, mbump   -- increase minor version by one and set patchlevel to 0
+#  Mbump   -- increase major version by one and set minor/patchlevel 
to 0
+#  setver -- set a specific version
+#
+# Options:
+# -S, --src   -- set roverlay source directory (default: $PWD)
+# --pretend-- just show what would be done
+# --suffix-- replace old version suffix with 
+#
+set -u
+IFS_DEFAULT="${IFS}"
+
+PY_FILES_TO_EDIT="roverlay/core.py setup.py"
+
+
+die() {
+   echo "${1:-unknown error.}" 1>&2; exit ${2:-2};
+}
+
+parse_version() {
+   local IFS="."
+   set -- ${1}
+   IFS="${IFS_DEFAULT}"
+   [ ${#} -ge 3 ] || return 2
+
+   major="${1:?}"
+   minor="${2:?}"
+   plvl="${3:?}"
+   shift 3 || die "error in parse_version()"
+   suffix="${*}"
+}
+
+inc() {
+   v0=$(( ${1} + 1 ))
+   [ ${v0} -gt ${1} ] || die "overflow"
+}
+
+S="${PWD}"
+unset -v V
+unset -v ACTION
+unset -v new_suffix
+unset -v do_pretend
+
+doshift=
+while [ ${#} -gt 0 ]; do
+   doshift=1
+   case "${1}" in
+  '') : ;;
+
+  '--src'|'-S')
+ [ ${#} -ge 2 ] || die "argparse error"
+ doshift=2
+ S="${2:?}"
+  ;;
+
+  pretend|--pretend)
+ do_pretend=true
+  ;;
+
+  [Mmp]bump) ACTION="${1}" ;;
+  '+')   ACTION=pbump  ;;
+  '++')  ACTION=mbump  ;;
+  *.*.*) ACTION=setver; V="${1}" ;;
+
+  setver)
+ [ ${#} -ge 2 ] || die "argparse error"
+ doshift=2
+ ACTION=setver
+ V="${2:?}"
+  ;;
+
+  suffix|--suffix)
+ [ ${#} -ge 2 ] || die "argparse error"
+ doshift=2
+ new_suffix="${2?}"
+  ;;
+
+  *)
+ die "unknown arg: ${1}" 64
+  ;;
+   esac
+   [ ${doshift} -eq 0 ] || shift ${doshift} || die "argparse: shift failed"
+done
+
+: ${do_pretend:=false}
+OLDVER="$(cat "${S}/VERSION")"
+parse_version "${OLDVER}" || die "bad version: ${OLDVER}."
+[ -n "${new_suffix+SET}" ] || new_suffix="${suffix}"
+
+case "${ACTION-}" in
+   pbump)
+  inc "${plvl}"
+  V="${major}.${minor}.${v0}${new_suffix}"
+   ;;
+   mbump)
+  inc "${minor}"
+  V="${major}.${v0}.0${new_suffix}"
+   ;;
+   Mbump)
+  inc "${major}"
+  V="${v0}.0.0${new_suffix}"
+   ;;
+   setver)
+  true
+   ;;
+   *)
+  die "unknown or no action specified."
+   ;;
+esac
+
+q="\"\'"
+re_pyfile_ver="^(\s*version\s*=\s*)[${q}]?([^\s;,${q}]*)[${q}]?(\s*[;,]?\s*)\$"
+
+_fmt="edit %-18s: %8s  ->  %s\n"
+for fname in ${PY_FILES_TO_EDIT}; do
+   f="${S}/${fname}"
+   fver="$(sed -rn -e "s@${re_pyfile_ver}@\2@p" < "${f}")"
+   printf "${_fmt}" "${fname}" "${fver}" "${V}"
+   ${do_pretend} || sed -r -e "s@${re_pyfile_ver}@\1\"${V}\"\3@" -i "${f}"
+done
+printf "${_fmt}" "VERSION" "${OLDVER}" "${V}"
+${do_pretend} || echo "${V}" > "${S}/VERSION"



[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: 2ce133ed2f4c8bd6d17e1ad285c3284c903d
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Apr  3 19:00:02 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Apr  3 19:00:02 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=2ce133ed

update .gitignore

---
 .gitignore | 4 
 1 file changed, 4 insertions(+)

diff --git a/.gitignore b/.gitignore
index c065ba1..82072ec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,10 @@
 /release
 /build
 /dist
+/R_Overlay.egg-info/
+/roverlay_files.list
+
+/tmp/
 
 # roverlay output files / directories, e.g. the created overlay
 /log



[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: 356e6985f87066652d625e20d0834f371aed253b
Author: André Erdmann  mailerd  de>
AuthorDate: Wed Apr  2 19:55:36 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed Apr  2 20:12:47 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=356e6985

Makefile: add 'setver', 'version-bump' targets

---
 Makefile | 22 +-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index f308e44..505f0cf 100644
--- a/Makefile
+++ b/Makefile
@@ -16,6 +16,7 @@ BUILDDIR := ./tmp
 ROVERLAY_TARGET_TYPE := gentoo
 RELEASE_NOT_DIRTY:= n
 RELEASE_DIRTY_SUFFIX := -dirty
+VBUMP_COMMIT := y
 
 PYMOD_FILE_LIST := ./roverlay_files.list
 
@@ -23,9 +24,11 @@ MANIFEST  := $(CURDIR)/MANIFEST
 LICENSES_FILE := $(CURDIR)/files/licenses
 VERSION_FILE  := $(CURDIR)/VERSION
 
+X_GIT := git
+
 MANIFEST_GEN  := ./bin/build/create_manifest.sh
 LICENSES_GEN  := ./bin/build/make-licenses.sh
-
+X_SETVER  := ./bin/build/setver.sh
 RV_SETUP  := ./bin/roverlay-setup
 
 SETUP_PY  := ./setup.py
@@ -57,6 +60,23 @@ PHONY += version
 version:
@cat $(VERSION_FILE)
 
+PHONY += setver
+setver: $(X_SETVER)
+ifeq ($(VER),)
+   $(error $$VER is not set.)
+else
+   $< $(VER)
+endif
+
+PHONY += version-bump
+version-bump: $(X_SETVER)
+   { ! $(X_GIT) status --porcelain -- $(notdir $(VERSION_FILE)) | grep .; }
+ifeq ($(VBUMP_COMMIT),$(filter $(VBUMP_COMMIT),y Y 1 yes YES true TRUE))
+   X_GIT="$(X_GIT)" $< --reset --git-add --git-commit --git-tag +
+else
+   X_GIT="$(X_GIT)" $< --reset --git-add +
+endif
+
 PHONY += test
 test: ./bin/run_tests
./bin/run_tests



[gentoo-commits] proj/R_overlay:master commit in: bin/build/

2014-06-05 Thread André Erdmann
commit: 280c04d3d53b3ce3fac72f035811b7514722a81a
Author: André Erdmann  mailerd  de>
AuthorDate: Wed Apr  2 19:53:47 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed Apr  2 20:00:30 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=280c04d3

bin/build/setver: --git-{add,commit,tag}, --reset

---
 bin/build/setver.sh | 180 +---
 1 file changed, 157 insertions(+), 23 deletions(-)

diff --git a/bin/build/setver.sh b/bin/build/setver.sh
index 470e529..ae8b048 100755
--- a/bin/build/setver.sh
+++ b/bin/build/setver.sh
@@ -2,7 +2,8 @@
 #
 #  Sets roverlay's version.
 #
-#  Usage: setver [-S,--src ] [--pretend] [--suffix ]
+#  Usage: setver [-S,--src ] [--pretend] [--suffix ] [--reset]
+#[--git-add] [--git-commit] [--force-commit] [--git-tag]
 #[+,pbump|++,mbump|Mbump|[setver] ]
 #
 # Actions:
@@ -15,40 +16,140 @@
 # -S, --src   -- set roverlay source directory (default: $PWD)
 # --pretend-- just show what would be done
 # --suffix-- replace old version suffix with 
+# -l, --list-files -- just list files that would be edited by this script
+#  (usage example: setver -l | xargs git checkout HEAD --)
+# --reset  -- check out VERSION file from git HEAD before doing 
anything
+# --git-add-- git-add modified files
+# --git-commit -- commit changes (commit message: "roverlay ")
+# --force-commit   -- enforce git commit (allow other files)
+# --git-tag-- run git-tag  after git-commit
 #
+set -e
 set -u
-IFS_DEFAULT="${IFS}"
+readonly IFS_DEFAULT="${IFS}"
 
-PY_FILES_TO_EDIT="roverlay/core.py setup.py"
+readonly PY_FILES_TO_EDIT="roverlay/core.py setup.py"
+readonly X_GIT="${X_GIT:-git}"
 
+# get_git_commit_message ( new_version, **commit_msg! )
+#
+#  Creates a commit message and stores it in $commit_msg.
+#  An empty str can be set if no commit should be made.
+#
+get_git_commit_message() {
+   commit_msg="roverlay ${1:?}"
+}
+
+# get_git_tag ( new_version, **tag! )
+#
+#  Creates a git tag str and stores it in $tag.
+#  An empty str suppresses tag creation.
+#
+get_git_tag() {
+   tag="${1:?}"
+}
 
+# @noreturn die ( [message], [exit_code] ), raises exit($exit_code)
+#
+#  Lets the script die.
+#
 die() {
-   echo "${1:-unknown error.}" 1>&2; exit ${2:-2};
+   echo "${1:+died: }${1:-died.}" 1>&2; exit ${2:-2};
+}
+
+# autodie ( *cmdv )
+#
+#  Runs *cmdv and dies on non-zero return.
+#  ("set -ex" is too verbose)
+#
+autodie() {
+   "$@" || die "command '${*}' returned ${?}." ${?}
 }
 
+# parse_version ( version_str, **major!, **minor!, **plvl!, **suffix! )
+#
+#  Splits a version_str into its components.
+#
+#  Example: 0.2.6-pre1 => major=0 minor=2 plvl=6 suffix=-pre1
+#
 parse_version() {
+   unset -v major minor plvl suffix
local IFS="."
set -- ${1}
IFS="${IFS_DEFAULT}"
-   [ ${#} -ge 3 ] || return 2
+   [ -n "${1-}" ] && [ -n "${2-}" ] && [ -n "${3-}" ] || return 2
 
major="${1:?}"
minor="${2:?}"
plvl="${3:?}"
shift 3 || die "error in parse_version()"
-   suffix="${*}"
+   suffix=
+   while [ ${#} -gt 0 ]; do suffix="${suffix}.${1}"; shift; done
+   suffix="${suffix#.}"
 }
 
+# inc ( k, **v0! )
+#
+#  Increments $k by one and stores the result in $v0.
+#
 inc() {
-   v0=$(( ${1} + 1 ))
+   v0=$(( ${1:?} + 1 ))
+   # unlikely:
[ ${v0} -gt ${1} ] || die "overflow"
 }
 
+# do_git_add ( *files, **want_gitadd, **X_GIT )
+#
+do_git_add() {
+   ${want_gitadd} || return 0
+   printf "git-add: %s\n" "${*}"
+   ${want_pretend} || autodie "${X_GIT}" add -- "$@"
+}
+
+# do_git_commit_and_tag (
+#version_str, numfiles_changed,
+#**want_gitcommit, **want_forcecommit, **want_gittag, **X_GIT
+# )
+#
+do_git_commit_and_tag() {
+   ${want_gitcommit} || return 0
+   local commit_msg commit_type tag
+
+   autodie get_git_commit_message "${1}"
+   autodie get_git_tag "${1}"
+
+   if [ -z "${commit_msg}" ]; then
+  return 0
+   elif ${want_pretend}; then
+  commit_type=maybe
+   elif \
+  [ $(git status --porcelain -- . | grep -c -- ^[MADRCU]) -eq ${2} ]
+   then
+  commit_type=clean
+   elif ${want_forcecommit}; then
+  commit_type=forced
+   else
+  die "cannot commit changes (try --force-commit)."
+   fi
+
+   printf "git-commit [%s]: %s\n" "${commit_type}" "${commit_msg}"
+   ${want_pretend} || autodie "${X_GIT}" commit -m "${commit_msg}"
+
+   ${want_gittag} && [ -n "${tag}" ] || return 0
+   printf 

[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: 92616609309a3e5775463e880438a3e8ef2a5ddc
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Apr  3 19:37:43 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Apr  3 19:37:43 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=92616609

update roverlay-.ebuild

* fix python deps
* create "roverlay" group during pkg_preinst()
* compress config during src_compile()
* adopt Makefile changes

---
 roverlay-.ebuild | 25 +
 1 file changed, 9 insertions(+), 16 deletions(-)

diff --git a/roverlay-.ebuild b/roverlay-.ebuild
index abe6b6a..290bd51 100644
--- a/roverlay-.ebuild
+++ b/roverlay-.ebuild
@@ -25,42 +25,35 @@ KEYWORDS=""
 IUSE="compress-config xz +prebuilt-documentation"
 
 DEPEND="
-   dev-python/setuptools
+   dev-python/setuptools[${PYTHON_USEDEP}]
!prebuilt-documentation? ( >=dev-python/docutils-0.9 )
compress-config? ( app-arch/bzip2 )"
 RDEPEND="
sys-apps/portage
-   virtual/python-argparse
+   virtual/python-argparse[${PYTHON_USEDEP}]
dev-python/mako[${PYTHON_USEDEP}]
-   xz? ( $(python_gen_cond_dep dev-python/backports-lzma[${PYTHON_USEDEP}] 
python{2_7,3_2}) )
+   xz? ( $(python_gen_cond_dep 
dev-python/backports-lzma[$(python_gen_usedep python{2_7,3_2})] python{2_7,3_2} 
) )
virtual/python-futures[${PYTHON_USEDEP}]"
 
-pkg_setup() {
+pkg_preinst() {
enewgroup roverlay
 }
 
-python_prepare_all() {
-   distutils-r1_python_prepare_all
+python_compile_all() {
+   use prebuilt-documentation || emake htmldoc
if use compress-config; then
einfo "Compressing dependency rules and license map"
emake X_COMPRESS=bzip2 BUILDDIR="${S}/compressed" 
compress-config
fi
 }
 
-python_compile_all() {
-   use prebuilt-documentation || emake htmldoc
-}
-
 python_install_all() {
distutils-r1_python_install_all
 
emake BUILDDIR="${S}/compressed" DESTDIR="${D}" \
-   install-data $(usex compress-config 
install-config{-compressed,})
-
-   # could be done in the Makefile as well
-   dobin "${S}/bin/install/${PN}-setup-interactive"
-
-   newbashcomp "${S}/files/misc/${PN}.bashcomp" "${PN}"
+   BASHCOMPDIR="${D}/$(get_bashcompdir)" \
+   COMPRESSED_CONFIG="$(usex compress-config 1 0)" \
+   install-nonpy
 }
 
 pkg_config() {



[gentoo-commits] proj/R_overlay:master commit in: roverlay/util/

2014-06-05 Thread André Erdmann
commit: 7f1425b229c93c7b13bef1b2d76b34e2a9e2476c
Author: André Erdmann  mailerd  de>
AuthorDate: Fri May 23 18:48:51 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri May 23 19:59:38 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=7f1425b2

fileio: workaround for small plain text files

Some text files (containing only a few chars) seem to be xz-readable.

---
 roverlay/util/fileio.py | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/roverlay/util/fileio.py b/roverlay/util/fileio.py
index d4019d7..be81ef0 100644
--- a/roverlay/util/fileio.py
+++ b/roverlay/util/fileio.py
@@ -79,7 +79,12 @@ def read_text_file ( filepath, preparse=None, 
try_harder=True ):
 except ( StopIteration, EOFError ):
# empty file (?)
CH.close()
-   return
+   CH = None
+   # *** FIXME: workaround ***
+   # retry as normal file,
+   #  EOFError may be caused by small plain text files, too
+   # COULDFIX: ?empty compressed files?
+   #return
 
 except IOError as ioerr:
# failed to open (gzip, bzip2)



[gentoo-commits] proj/R_overlay:master commit in: config/simple-deprules.d/

2014-06-05 Thread André Erdmann
commit: e583b134a6cdf2dc0043d8aafa5c2b0fc4190148
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:23:27 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:23:27 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=e583b134

fix deprule

---
 config/simple-deprules.d/dev | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/simple-deprules.d/dev b/config/simple-deprules.d/dev
index 9e3fe55..36f9a93 100644
--- a/config/simple-deprules.d/dev
+++ b/config/simple-deprules.d/dev
@@ -18,7 +18,7 @@ dev-db/unixODBC {
 }
 
 dev-java/ant :: ant
-dev-java/jdbc-postgresql:: PostgreSQL JDBCdriver
+dev-java/jdbc-postgresql :: PostgreSQL JDBCdriver
 
 
 # try to slot-match dev-lang/python, but use known slots only



[gentoo-commits] proj/R_overlay:master commit in: /, bin/build/

2014-06-05 Thread André Erdmann
commit: b79d90014df34bd8995780ed10c9a129898a11cb
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Apr  3 18:58:15 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Apr  3 18:58:15 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=b79d9001

remove bin/build/{do_pydoc,roverlay_rst2html}.sh

---
 Makefile   |  1 -
 bin/build/do_pydoc.sh  | 13 -
 bin/build/roverlay_rst2html.sh | 13 -
 3 files changed, 27 deletions(-)

diff --git a/Makefile b/Makefile
index 2efca5a..090841a 100644
--- a/Makefile
+++ b/Makefile
@@ -75,7 +75,6 @@ _BUILDSCRIPTS := $(_SCRIPTS_DIR)/build
 MANIFEST_GEN  := $(_BUILDSCRIPTS)/create_manifest.sh
 LICENSES_GEN  := $(_BUILDSCRIPTS)/make-licenses.sh
 X_SETVER  := $(_BUILDSCRIPTS)/setver.sh
-PYDOC_SH  := $(_BUILDSCRIPTS)/do_pydoc.sh
 RV_SETUP  := $(_SCRIPTS_DIR)/$(_PN)-setup
 X_RUN_TESTS   := $(_SCRIPTS_DIR)/run_tests
 

diff --git a/bin/build/do_pydoc.sh b/bin/build/do_pydoc.sh
deleted file mode 100755
index e6a227f..000
--- a/bin/build/do_pydoc.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh -xe
-
-into="${1:?}"
-
-cd "$into"
-[ -e ./roverlay ]
-
-find roverlay/ -name "*.py" | \
-   sed -e 's,\/,.,g' -e 's,[.]__init__[.]py$,,' -e 's,[.]py$,,' | \
-   xargs pydoc -w && \
-   ln -fs roverlay.html index.html && \
-   rm -f -- roverlay
-

diff --git a/bin/build/roverlay_rst2html.sh b/bin/build/roverlay_rst2html.sh
deleted file mode 100755
index a3450db..000
--- a/bin/build/roverlay_rst2html.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh -u
-die_usage() { echo "usage: $0  "; exit 1; }
-
-[ $# -eq 2 ] || die_usage
-
-from="${1}"
-to="${2}"
-
-[ -r "${from}" ] || die_usage
-
-TITLE='Automatically Generated Overlay of R packages'
-
-rst2html.py --title "${TITLE}" --date "${from}" "${to}"



[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: bfb238aef165f859e4491b859671b026c29e5869
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:28:49 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:28:49 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=bfb238ae

fix typo in Makefile

---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index d61ae2e..8211aac 100644
--- a/Makefile
+++ b/Makefile
@@ -258,7 +258,7 @@ PHONY += generate-files
 generate-files: $(addprefix generate-,config doc manifest licenses)
 
 PHONY += generate-files-commit
-generate-files-commit: gemerate-files
+generate-files-commit: generate-files
{ ! $(X_GIT) status --porcelain -- . | grep ^[MADRCU]; }
$(X_GIT) add -vu -- \
R-overlay.conf \



[gentoo-commits] proj/R_overlay:master commit in: /, bin/

2014-06-05 Thread André Erdmann
commit: b66b35e438437f20aeb2e0f24e2ec06654b33b8b
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:26:50 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:26:50 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=b66b35e4

bin/: add roverlay-others

Runs roverlay with ROVERLAY_TARGET_TYPE=foreign

---
 bin/invoke_pyscript.bash | 39 +++
 bin/roverlay | 25 +
 bin/roverlay.others  |  1 +
 roverlay-others.py   |  1 +
 4 files changed, 38 insertions(+), 28 deletions(-)

diff --git a/bin/invoke_pyscript.bash b/bin/invoke_pyscript.bash
index 41af30d..574405e 100755
--- a/bin/invoke_pyscript.bash
+++ b/bin/invoke_pyscript.bash
@@ -1,10 +1,41 @@
 #!/bin/bash
-readonly SCRIPT=$(readlink -f "${BASH_SOURCE[0]?}")
-readonly SCRIPT_NAME="${BASH_SOURCE[0]##*/}"
+readonly SCRIPT="$(readlink -f "${BASH_SOURCE[0]?}")"
+readonly SCRIPT_FILENAME="${BASH_SOURCE[0]##*/}"
 readonly SCRIPT_DIR="${SCRIPT%/*}"
-
 readonly PRJROOT="${SCRIPT_DIR%/*}"
-readonly PYSCRIPT="${SCRIPT_DIR}/py/${SCRIPT_NAME%.*}.py"
+
+extra_args=()
+
+SCRIPT_NAME="${SCRIPT_FILENAME%.py}"
+case "${SCRIPT_NAME}" in
+   *[-_.]others)
+  export ROVERLAY_TARGET_TYPE="foreign"
+  SCRIPT_NAME="${SCRIPT_NAME%[-_.]*}"
+   ;;
+   *)
+  : ${ROVERLAY_TARGET_TYPE:=gentoo}
+  SCRIPT_NAME="${SCRIPT_NAME}"
+   ;;
+esac
+
+case "${SCRIPT_NAME}" in
+   'roverlay') SCRIPT_NAME="main" ;;
+esac
+readonly SCRIPT_NAME
+
+if [[ "${ROVERLAY_TARGET_TYPE}" == "foreign" ]]; then
+   case "${SCRIPT_NAME#roverlay[_-]}" in
+  'setup')
+ extra_args+=( '--target-type' 'foreign' "$@" )
+  ;;
+  'main'|'query'[-_]'config'|'status')
+ extra_args+=( '-c' "${PRJROOT}/R-overlay.conf.others" "$@" )
+  ;;
+   esac
+fi
+
+readonly PYSCRIPT="${SCRIPT_DIR}/py/${SCRIPT_NAME}.py"
+[ ${#extra_args[@]} -eq 0 ] || set -- "${extra_args[@]}" "$@"
 
 export ROVERLAY_PRJROOT="${PRJROOT}"
 export PYTHONPATH="${PRJROOT}${PYTHONPATH:+:}${PYTHONPATH}"

diff --git a/bin/roverlay b/bin/roverlay
deleted file mode 100755
index 3c385b8..000
--- a/bin/roverlay
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-# similar to invoke_pyscript.bash, but uses a fixed SCRIPT_NAME
-#
-readonly SCRIPT=$(readlink -f "${BASH_SOURCE[0]?}")
-readonly SCRIPT_NAME="main"
-readonly SCRIPT_DIR="${SCRIPT%/*}"
-
-readonly PRJROOT="${SCRIPT_DIR%/*}"
-readonly PYSCRIPT="${SCRIPT_DIR}/py/${SCRIPT_NAME%.*}.py"
-
-export ROVERLAY_PRJROOT="${PRJROOT}"
-export PYTHONPATH="${PRJROOT}${PYTHONPATH:+:}${PYTHONPATH}"
-
-
-cd "${PRJROOT}" || exit
-
-if [[ -z "${PYTHON-}" ]] && [[ -x "${PYSCRIPT}" ]]; then
-   exec ${PYSCRIPT} "$@"
-elif [[ -f "${PYSCRIPT}" ]]; then
-   exec ${PYTHON:-python} ${PYSCRIPT} "$@"
-else
-   echo "script not found: ${PYSCRIPT}" 1>&2
-   exit 9
-fi

diff --git a/bin/roverlay b/bin/roverlay
new file mode 12
index 000..3f5df48
--- /dev/null
+++ b/bin/roverlay
@@ -0,0 +1 @@
+invoke_pyscript.bash
\ No newline at end of file

diff --git a/bin/roverlay.others b/bin/roverlay.others
new file mode 12
index 000..3f5df48
--- /dev/null
+++ b/bin/roverlay.others
@@ -0,0 +1 @@
+invoke_pyscript.bash
\ No newline at end of file

diff --git a/roverlay-others.py b/roverlay-others.py
new file mode 12
index 000..466a6fb
--- /dev/null
+++ b/roverlay-others.py
@@ -0,0 +1 @@
+bin/invoke_pyscript.bash
\ No newline at end of file



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/

2014-06-05 Thread André Erdmann
commit: ffbde283146338c406e67089b3bc813bfb21d3ab
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:35:21 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:35:21 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=ffbde283

roverlay/depres/deptype: cleanup

---
 roverlay/depres/deptype.py | 34 ++
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/roverlay/depres/deptype.py b/roverlay/depres/deptype.py
index 91a3f3f..66f03b7 100644
--- a/roverlay/depres/deptype.py
+++ b/roverlay/depres/deptype.py
@@ -18,22 +18,32 @@ try_other = 1
 mandatory = 2
 external  = 4
 internal  = 8
-#internal does not imply selfdep
-# internal := dependency on package
-# selfdep  := created overlay has dependency
 selfdep   = 16
 
-_MAX = 31
+#internal does not imply selfdep
+#  external,internal control whether a rule can resolve dependency strings
+#  with a deptype of internal/external
+#  (or, whether a dep str expects to be resolved as R or system package)
+#
+#  internal := dependency on a (R) package "internal" to
+#   the R package ecosystem - not necessarily hosted by the generated overlay
+#  external := dep on a system package
+#
+#  selfdep  := dependency (the ebuild) is hosted by the created overlay,
+#  which allows selfdep validation etc.
+#
+# => any combination of {external,internal,selfdep} is legal
+
 
-#VIRTUAL = try_other | mandatory | selfdep
+_MAX = 31
 
-NONE = 0
-ALL  = external | internal | mandatory
-RESOLVE_ALL = external | internal
+NONE  = 0
+RESOLVE_ALL   = external  | internal
+ALL   = mandatory | RESOLVE_ALL
+MANDATORY_TRY = mandatory | try_other
+VIRTUAL   = selfdep   | MANDATORY_TRY
 
 # "system first"
-SYS = mandatory | ( external | try_other )
+SYS = external | MANDATORY_TRY
 # "package first"
-PKG = mandatory | ( internal | try_other )
-
-MANDATORY_TRY = try_other | mandatory
+PKG = internal | MANDATORY_TRY



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/simpledeprule/

2014-06-05 Thread André Erdmann
commit: 2478cb4a791c5cf184f859d28605de32d48cb2a8
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:37:39 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:37:39 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=2478cb4a

roverlay/depres/simpledeprule/util: add obj method

get_constructor_args()

---
 roverlay/depres/simpledeprule/util.py | 20 +---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/roverlay/depres/simpledeprule/util.py 
b/roverlay/depres/simpledeprule/util.py
index 36f88cd..1e82161 100644
--- a/roverlay/depres/simpledeprule/util.py
+++ b/roverlay/depres/simpledeprule/util.py
@@ -78,6 +78,10 @@ class SlotValueCreatorBase ( object ):
   raise NotImplementedError()
# --- end of get_slot (...) ---
 
+   def get_constructor_args ( self ):
+  raise NotImplementedError()
+   # --- end of get_constructor_args (...) ---
+
def __str__ ( self ):
   raise NotImplementedError()
# --- end of __str__ (...) ---
@@ -97,6 +101,9 @@ class SingleIndexValueCreator ( SlotValueCreatorBase ):
  return None
# --- end of get_slot (...) ---
 
+   def get_constructor_args ( self ):
+  return ( self._index, )
+
def __str__ ( self ):
   return str ( self._index )
 
@@ -117,11 +124,15 @@ class IndexRangeSlotValueCreator ( SlotValueCreatorBase ):
  return None
# --- end of get_slot (...) ---
 
-   def __str__ ( self ):
-  return str ( self._low ) + '..' + str (
- ( self._high - 1 ) if self._high > 0 else self._high
+   def get_constructor_args ( self ):
+  return (
+ self._low,
+ ( ( self._high - 1 ) if self._high > 0 else self._high )
   )
 
+   def __str__ ( self ):
+  return '..'.join ( map ( str, self.get_constructor_args() ) )
+
 class ImmediateSlotValueCreator ( SlotValueCreatorBase ):
def __init__ ( self, v_str ):
   super ( ImmediateSlotValueCreator, self ).__init__()
@@ -144,6 +155,9 @@ class ImmediateSlotValueCreator ( SlotValueCreatorBase ):
   return self._value
# --- end of get_slot (...) ---
 
+   def get_constructor_args ( self ):
+  return ( self._value, )
+
def __str__ ( self ):
   return "i" + self._value
 



[gentoo-commits] proj/R_overlay:master commit in: roverlay/scripts/, files/misc/

2014-06-05 Thread André Erdmann
commit: 23927133d09d15e4b243edb240d7110983ef90fe
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:22:48 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:22:48 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=23927133

roverlay-query-config: rename arg "-C" -> "-c"

---
 files/misc/roverlay.bashcomp | 4 ++--
 roverlay/scripts/query_config.py | 8 
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/files/misc/roverlay.bashcomp b/files/misc/roverlay.bashcomp
index 6d43522..d9bfdf2 100644
--- a/files/misc/roverlay.bashcomp
+++ b/files/misc/roverlay.bashcomp
@@ -331,11 +331,11 @@ _roverlay_query_config_comp() {
   '--empty-missing' '--from-file' '--outfile' '--variable'
)
local SHORTOPTS=(
-  '-h' '-C' '-a' '-l' '-u' '-f' '-O' '-v'
+  '-h' '-c' '-a' '-l' '-u' '-f' '-O' '-v'
)
 
case "${prev}" in
-  '-C'|'--config-file'|'-f'|'--from-file'|'-O'|'--outfile')
+  '-c'|'--config-file'|'-f'|'--from-file'|'-O'|'--outfile')
  #  arg
  _filedir
   ;;

diff --git a/roverlay/scripts/query_config.py b/roverlay/scripts/query_config.py
index 0452a11..96ca8b4 100644
--- a/roverlay/scripts/query_config.py
+++ b/roverlay/scripts/query_config.py
@@ -15,7 +15,7 @@
 # Lists all known config options.
 # (Note: it's not possible to query all of these options)
 #
-#  * query-config [-C ] [-u] [-a|{option[=varname]}]
+#  * query-config [-c ] [-u] [-a|{option[=varname]}]
 #
 # Prints roverlay's config options in shell usable format (without relying
 # on roverlay-sh). Prints all options if -a/--all is specified or no
@@ -27,7 +27,7 @@
 #   $ echo $OVERLAY
 #   $ echo $OVERLAY_NAME
 #
-#  * query-config [-C ] [-u] -f  [-O |-] {-v 
VAR[=VALUE]}
+#  * query-config [-c ] [-u] -f  [-O |-] {-v 
VAR[=VALUE]}
 #
 # Replaces occurences of @@VARIABLES@@ in  with values taken
 # from roverlay's config and writes the result to  or stdout.
@@ -36,7 +36,7 @@
 #
 # Usage example:
 #
-#   $ query-config -C ~roverlay_user/roverlay/R-overlay.conf \
+#   $ query-config -c ~roverlay_user/roverlay/R-overlay.conf \
 #  -f nginx.conf.in -O nginx.conf -v SERVER_ADDR=... -v SERVER_NAME=...
 #
 # A non-zero exit code indicates that one or more variables could not be
@@ -165,7 +165,7 @@ def get_parser():
)
 
parser.add_argument (
-  "-C", "--config-file", metavar="", default=None,
+  "-c", "--config-file", metavar="", default=None,
   type=arg_is_filepath_or_none,
   help="path to the config file",
)



[gentoo-commits] proj/R_overlay:master commit in: doc/rst/

2014-06-05 Thread André Erdmann
commit: 1c50c6deb1f14af0b48c9f7a9a3b4c856e9dd404
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:29:52 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:29:52 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=1c50c6de

doc/rst/usage: typo

---
 doc/rst/usage.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index f27e933..6d2879e 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -4240,7 +4240,7 @@ that tries to create an ebuild for it.
 
 An *EbuildCreationJob* does the following steps:
 
-#. Read the DESCRIPTION file of *p* R package tarball and stores the
+#. Read the DESCRIPTION file of *p*'s R package tarball and store the
data in an associative array ('DESCRIPTION field' -> 'data')
 
 #. Call `dependency resolution`_



[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: 41a330fd5e60b914b69a38c29339e4c7784d4ed5
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Apr  3 19:53:13 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Apr  3 19:53:13 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=41a330fd

Makefile, "dist": remove useless check

---
 Makefile | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/Makefile b/Makefile
index 1e96354..d61ae2e 100644
--- a/Makefile
+++ b/Makefile
@@ -272,9 +272,6 @@ generate-files-commit: gemerate-files
 # creates a src tarball (.tar.bz2)
 PHONY += dist
 dist: distclean generate-files $(_DIST_PYDOC_DEP) | $(PKG_DISTDIR)
-ifeq ($(DIST_TAR)$(DIST_BZIP2)$(DIST_GZIP)$(DIST_XZ),)
-   $(error at least one of DIST_{TAR,BZIP2,GZIP,XZ} must be set)
-endif
$(eval MY_$@_BASEVER  := $(shell cat $(VERSION_FILE)))
test -n '$(MY_$@_BASEVER)'
 



[gentoo-commits] proj/R_overlay:master commit in: roverlay/

2014-06-05 Thread André Erdmann
commit: 9be2a6c4f0377e3895787aef47ad0d8a93f3
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:17:54 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:17:54 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=9be2a6aa

not-installed: search for config file in PRJROOT

This allows to run
  roverlay.load_locate_config_file(False,load_main_only=True)
from "any" location if ROVERLAY_PRJROOT and PYTHONPATH are set properly.

---
 roverlay/core.py | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/roverlay/core.py b/roverlay/core.py
index d462f0f..2f4215b 100644
--- a/roverlay/core.py
+++ b/roverlay/core.py
@@ -155,11 +155,13 @@ def locate_config_file (
  if os.path.isfile ( cfg ):
 return cfg
 
-   elif os.path.exists ( CONFIG_FILE_NAME + '.local' ):
-  return CONFIG_FILE_NAME + '.local'
+   else:
+  config_dir = os.environ.get ( 'ROVERLAY_PRJROOT', os.getcwd() )
 
-   elif os.path.exists ( CONFIG_FILE_NAME ):
-  return CONFIG_FILE_NAME
+  for fname in ( CONFIG_FILE_NAME + '.local', CONFIG_FILE_NAME ):
+ fpath = config_dir + os.sep + fname
+ if os.path.exists ( fpath ):
+return fpath
 
return None
 # --- end of locate_config_file (...) ---



[gentoo-commits] proj/R_overlay:master commit in: roverlay/depres/simpledeprule/, roverlay/depres/

2014-06-05 Thread André Erdmann
commit: 83d2732502634d7a91c5bf379d5ee3b6a252872f
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:38:05 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:38:05 2014 +
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,



[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: 35c9ad10b0903d9cf367550dd69f7680ba54a02f
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Apr  3 19:15:41 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Apr  3 19:15:41 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=35c9ad10

Makefile, "dist": create a separate -doc tarball

---
 Makefile | 29 ++---
 1 file changed, 22 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index 090841a..2b973f5 100644
--- a/Makefile
+++ b/Makefile
@@ -43,6 +43,7 @@ COMPRESSED_CONFIG:= n
 RELEASE_NOT_DIRTY:= n
 RELEASE_DIRTY_SUFFIX := -dirty
 VBUMP_COMMIT := y
+DIST_PYDOC   := y
 
 MANIFEST  := $(S)/MANIFEST
 LICENSES_FILE := $(S)/files/licenses
@@ -87,6 +88,12 @@ SELFDOC   := $(SRC_DOCDIR)/pydoc
 
 _TRUE_WORDS   := y Y 1 yes YES true TRUE
 
+ifeq ($(DIST_PYDOC),$(filter $(DIST_PYDOC),$(_TRUE_WORDS)))
+_DIST_PYDOC_DEP := $(SELFDOC)
+else
+_DIST_PYDOC_DEP :=
+endif
+
 # _f_recursive_install ( src_root, src_names, dest_root, file_mode )
 #
 #  Recursively installs files from /<%name> to /<%name>
@@ -260,7 +267,7 @@ generate-files-commit: gemerate-files
 
 # creates a src tarball (.tar.bz2)
 PHONY += dist
-dist: distclean generate-files | $(PKG_DISTDIR)
+dist: distclean generate-files $(_DIST_PYDOC_DEP) | $(PKG_DISTDIR)
 ifeq ($(X_BZIP2)$(X_GZIP)$(X_XZ),)
$(error at least one of X_BZIP2, X_GZIP, X_XZ must be set)
 endif
@@ -280,19 +287,24 @@ else
 endif
 
$(eval MY_$@_FILE:= $(PKG_DISTDIR)/$(DISTNAME)_$(MY_$@_VER).tar)
-
+   $(eval MY_$@_DOCFILE := $(PKG_DISTDIR)/$(DISTNAME)-doc_$(MY_$@_VER).tar)
 
$(X_GIT) archive --worktree-attributes --format=tar HEAD \
--prefix=$(DISTNAME)_$(MY_$@_VER)/ > $(MY_$@_FILE).make_tmp
 
+   tar c -C $(SRC_DOCDIR)/ . -f $(MY_$@_DOCFILE).make_tmp
+
 ifneq ($(X_BZIP2),)
-   $(X_BZIP2) -c $(MY_$@_FILE).make_tmp > $(MY_$@_FILE).bz2
+   $(X_BZIP2) -c $(MY_$@_FILE).make_tmp> $(MY_$@_FILE).bz2
+   $(X_BZIP2) -c $(MY_$@_DOCFILE).make_tmp > $(MY_$@_DOCFILE).bz2
 endif
 ifneq ($(X_GZIP),)
-   $(X_GZIP)  -c $(MY_$@_FILE).make_tmp > $(MY_$@_FILE).gz
+   $(X_GZIP)  -c $(MY_$@_FILE).make_tmp> $(MY_$@_FILE).gz
+   $(X_GZIP)  -c $(MY_$@_DOCFILE).make_tmp > $(MY_$@_DOCFILE).gz
 endif
 ifneq ($(X_XZ),)
-   $(X_XZ)-c $(MY_$@_FILE).make_tmp > $(MY_$@_FILE).xz
+   $(X_XZ)-c $(MY_$@_FILE).make_tmp> $(MY_$@_FILE).xz
+   $(X_XZ)-c $(MY_$@_DOCFILE).make_tmp > $(MY_$@_DOCFILE).xz
 endif
rm -- $(MY_$@_FILE).make_tmp
 
@@ -439,8 +451,9 @@ help:
@echo  ' (default: $(VBUMP_COMMIT))'
@echo  '  setver  - set $(MY_$@_GENITIVE) version 
to VER'
@echo  ' (default: )'
-   @echo  '  dist- create source tarball(s) in 
PKG_DISTDIR:'
-   @echo  ' 
DISTNAME_.tar.'
+   @echo  '  dist- create source tarballs in 
PKG_DISTDIR:'
+   @echo  ' 
DISTNAME_.tar.'
+   @echo  ' 
DISTNAME-doc_.tar.'
@echo  ' (implies "distclean" and 
"generate-files")'
@echo  ' (PKG_DISTDIR: 
$(PKG_DISTDIR:$(CURDIR)/%=%))'
@echo  ' (DISTNAME:$(DISTNAME))'
@@ -497,6 +510,8 @@ endif
@echo  'matches its version (n) or not 
(y) [$(RELEASE_NOT_DIRTY)]'
@echo  '* RELEASE_DIRTY_SUFFIX- suffix for "dirty" dist 
tarballs [$(RELEASE_DIRTY_SUFFIX)]'
@echo  '* DISTNAME- base name for source tarballs 
[$(DISTNAME)]'
+   @echo  '* DIST_PYDOC  - whether to include pydoc files 
in the doc'
+   @echo  'tarball (y) or not (n) 
[$(DIST_PYDOC)]'
@echo  '* PKG_DISTDIR - directory for storing source 
tarballs'
@echo  ' [$(PKG_DISTDIR:$(CURDIR)/%=%)]'
 



[gentoo-commits] proj/R_overlay:master commit in: roverlay/interface/

2014-06-05 Thread André Erdmann
commit: 5111d8d0b0a604a22731cd3c7e5d32e8b93b8acc
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:31:55 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:34:01 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=5111d8d0

roverlay/interface: new_standalone()

Allows to create standalone interfaces, which use a dummy config by default.

---
 roverlay/interface/generic.py | 43 +++
 roverlay/interface/root.py| 21 +
 2 files changed, 64 insertions(+)

diff --git a/roverlay/interface/generic.py b/roverlay/interface/generic.py
index 8fc7239..66b6cb8 100644
--- a/roverlay/interface/generic.py
+++ b/roverlay/interface/generic.py
@@ -134,6 +134,49 @@ class RoverlaySubInterface ( RoverlayInterface ):
a parent interface.
"""
 
+   # we don't know anything about concrete root interfaces in this module
+   ROOT_INTERFACE_CLS = NotImplemented
+
+   @classmethod
+   def get_standalone_root_interface (
+  cls, is_installed, config, config_file, **kwargs
+   ):
+  assert cls.ROOT_INTERFACE_CLS is not NotImplemented
+
+  if config or config_file:
+ return cls.ROOT_INTERFACE_CLS (
+config=config, config_file=config_file,
+is_installed=is_installed,
+**kwargs
+ )
+  else:
+ return cls.ROOT_INTERFACE_CLS (
+config=False, is_installed=is_installed, **kwargs
+ )
+   # --- end of get_standalone_root_interface (...) ---
+
+   @classmethod
+   def new_standalone (
+  cls,
+  is_installed=False, config=None, config_file=None,
+  **kwargs
+   ):
+  """Creates a new interface with an anonymous parent interface.
+
+  arguments:
+  * is_installed -- passed to get_standalone_root_interface()
+  * config   -- passed to get_standalone_root_interface()
+  * config_file  -- passed to get_standalone_root_interface()
+  * **kwargs -- passed to __init__()
+  """
+  return cls (
+ cls.get_standalone_root_interface (
+is_installed, config, config_file
+ ),
+ **kwargs
+  )
+   # --- end of new_standalone (...) ---
+
def __init__ ( self, parent_interface ):
   """Initializes the subinterface. Creates references to shared objects
   like logger and config as well as a ref to the parent interface.

diff --git a/roverlay/interface/root.py b/roverlay/interface/root.py
index 1ea4ef1..6f6afc9 100644
--- a/roverlay/interface/root.py
+++ b/roverlay/interface/root.py
@@ -9,12 +9,18 @@ import logging
 import roverlay.core
 import roverlay.errorqueue
 import roverlay.hook
+import roverlay.config.tree
 
 import roverlay.interface.generic
 
 # does nothing if already initialized
 roverlay.core.setup_initial_logger()
 
+
+def get_dummy_config():
+   return roverlay.config.tree.ConfigTree()
+# --- end of get_dummy_config (...) ---
+
 class RootInterface ( roverlay.interface.generic.RoverlayInterface ):
"""Root interfaces for accessing roverlay interfaces.
 
@@ -43,6 +49,17 @@ class RootInterface ( 
roverlay.interface.generic.RoverlayInterface ):
  return False
# --- end of register_interface (...) ---
 
+   @classmethod
+   def new_unconfigured ( cls, **kwargs ):
+  """Creates a new root interface with a dummy config tree.
+
+  arguments:
+  * **kwargs -- passed to __init__()
+  """
+  kwargs ['config'] = False
+  return cls ( **kwargs )
+   # --- end of new_unconfigured (...) ---
+
def __init__ ( self,
   config_file=None, config=None, additional_config=None, is_installed=None
):
@@ -55,6 +72,8 @@ class RootInterface ( 
roverlay.interface.generic.RoverlayInterface ):
   * config_file   -- path to the config file
   * config-- config tree or None
   takes precedence over config_file
+  A dummy config tree will be created if this
+  arg is False.
   * additional_config -- when loading the config file: extra config dict
   * is_installed  -- whether roverlay has been installed or not
   Defaults to None.
@@ -66,6 +85,8 @@ class RootInterface ( 
roverlay.interface.generic.RoverlayInterface ):
 
   if getattr ( self, 'config', None ):
  pass
+  elif config is False:
+ self.config = get_dummy_config()
   elif config is not None:
  self.config = config
   elif config_file is not None:



[gentoo-commits] proj/R_overlay:master commit in: /

2014-06-05 Thread André Erdmann
commit: 122127fc0c786f1e33f90968575c10c690c50344
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Apr  3 19:22:59 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Apr  3 19:22:59 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=122127fc

Makefile: DIST_{TAR,BZIP2,GZIP,XZ}

---
 Makefile | 25 -
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 2b973f5..1e96354 100644
--- a/Makefile
+++ b/Makefile
@@ -44,6 +44,10 @@ RELEASE_NOT_DIRTY:= n
 RELEASE_DIRTY_SUFFIX := -dirty
 VBUMP_COMMIT := y
 DIST_PYDOC   := y
+DIST_TAR := n
+DIST_GZIP:= n
+DIST_BZIP2   := y
+DIST_XZ  := n
 
 MANIFEST  := $(S)/MANIFEST
 LICENSES_FILE := $(S)/files/licenses
@@ -268,8 +272,8 @@ generate-files-commit: gemerate-files
 # creates a src tarball (.tar.bz2)
 PHONY += dist
 dist: distclean generate-files $(_DIST_PYDOC_DEP) | $(PKG_DISTDIR)
-ifeq ($(X_BZIP2)$(X_GZIP)$(X_XZ),)
-   $(error at least one of X_BZIP2, X_GZIP, X_XZ must be set)
+ifeq ($(DIST_TAR)$(DIST_BZIP2)$(DIST_GZIP)$(DIST_XZ),)
+   $(error at least one of DIST_{TAR,BZIP2,GZIP,XZ} must be set)
 endif
$(eval MY_$@_BASEVER  := $(shell cat $(VERSION_FILE)))
test -n '$(MY_$@_BASEVER)'
@@ -294,19 +298,25 @@ endif
 
tar c -C $(SRC_DOCDIR)/ . -f $(MY_$@_DOCFILE).make_tmp
 
-ifneq ($(X_BZIP2),)
+ifeq ($(DIST_BZIP2),$(filter $(DIST_BZIP2),$(_TRUE_WORDS)))
$(X_BZIP2) -c $(MY_$@_FILE).make_tmp> $(MY_$@_FILE).bz2
$(X_BZIP2) -c $(MY_$@_DOCFILE).make_tmp > $(MY_$@_DOCFILE).bz2
 endif
-ifneq ($(X_GZIP),)
+ifeq ($(DIST_GZIP),$(filter $(DIST_GZIP),$(_TRUE_WORDS)))
$(X_GZIP)  -c $(MY_$@_FILE).make_tmp> $(MY_$@_FILE).gz
$(X_GZIP)  -c $(MY_$@_DOCFILE).make_tmp > $(MY_$@_DOCFILE).gz
 endif
-ifneq ($(X_XZ),)
+ifeq ($(DIST_XZ),$(filter $(DIST_XZ),$(_TRUE_WORDS)))
$(X_XZ)-c $(MY_$@_FILE).make_tmp> $(MY_$@_FILE).xz
$(X_XZ)-c $(MY_$@_DOCFILE).make_tmp > $(MY_$@_DOCFILE).xz
 endif
+ifeq ($(DIST_TAR),$(filter $(DIST_TAR),$(_TRUE_WORDS)))
+   mv -f -- $(MY_$@_FILE).make_tmp$(MY_$@_FILE)
+   mv -f -- $(MY_$@_DOCFILE).make_tmp $(MY_$@_DOCFILE)
+else
rm -- $(MY_$@_FILE).make_tmp
+   rm -- $(MY_$@_DOCFILE).make_tmp
+endif
 
 
 # rule for compressing a deprule file
@@ -514,6 +524,11 @@ endif
@echo  'tarball (y) or not (n) 
[$(DIST_PYDOC)]'
@echo  '* PKG_DISTDIR - directory for storing source 
tarballs'
@echo  ' [$(PKG_DISTDIR:$(CURDIR)/%=%)]'
+   @echo  '* DIST_TAR- whether to create .tar  
tarballs [$(DIST_TAR)]'
+   @echo  '* DIST_BZIP2  - whether to create .tar.bz2  
tarballs [$(DIST_BZIP2)]'
+   @echo  '* DIST_GZIP   - whether to create .tar.gzip 
tarballs [$(DIST_GZIP)]'
+   @echo  '* DIST_XZ - whether to create .tar.xz   
tarballs [$(DIST_XZ)]'
+
 
 
 PHONY += FORCE



[gentoo-commits] proj/R_overlay:master commit in: roverlay/interface/

2014-06-05 Thread André Erdmann
commit: 5df0c6b4892aa5ea2a98c59e56be34aac8ea3301
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:34:43 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:34:43 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=5df0c6b4

DepresInterface: push/pop pools, handle rule objects

---
 roverlay/interface/depres.py | 112 ++-
 1 file changed, 90 insertions(+), 22 deletions(-)

diff --git a/roverlay/interface/depres.py b/roverlay/interface/depres.py
index c7ba95c..ae005e8 100644
--- a/roverlay/interface/depres.py
+++ b/roverlay/interface/depres.py
@@ -9,6 +9,7 @@
 import errno
 
 import roverlay.interface.generic
+import roverlay.interface.root
 
 
 import roverlay.depres.channels
@@ -29,7 +30,8 @@ class DepresInterface ( 
roverlay.interface.generic.RoverlaySubInterface ):
This class provides:
 
* rule creation (from text/text files)
-   * manage dependency rule pools (stack-like discard_pool()/get_new_pool())
+   * manage dependency rule pools
+  (stack-like discard_pool()/get_[new_]pool(), pop_pool()/push_pool())
* resolve dependencies:
-> do_resolve() for "raw" depres results
-> resolve() for generic purpose results (list of resolved deps)
@@ -43,9 +45,11 @@ class DepresInterface ( 
roverlay.interface.generic.RoverlaySubInterface ):
 
GREEDY_DEPRES_CHANNEL= roverlay.depres.channels.EbuildJobChannel
NONGREEDY_DEPRES_CHANNEL = roverlay.depres.channels.NonGreedyDepresChannel
+   ROOT_INTERFACE_CLS   = roverlay.interface.root.RootInterface
+
 
def __init__ ( self, parent_interface, greedy=None, want_tuple=False ):
-  """Initializes the depdency resolution interface.
+  """Initializes the dependency resolution interface.
 
   arguments:
   * parent_interface -- parent interface that provides shared functionality
@@ -179,6 +183,38 @@ class DepresInterface ( 
roverlay.interface.generic.RoverlaySubInterface ):
  return self.get_new_pool ( force=True )
# --- end of get_pool (...) ---
 
+   def _add_pool ( self, pool ):
+  """Pushes a rule pool back to the poolstack, making it the topmost one.
+
+  Returns: None (implicit)
+
+  arguments:
+  * pool -- a dependency rule pool
+  """
+  self._pool_id += 1
+  try:
+ self._poolstack.append ( pool )
+  except:
+ self._pool_id -= 1
+ raise
+
+  self._update_resolver()
+   # --- end of _add_pool (...) ---
+
+   def push_pool ( self, pool ):
+  """Pushes a rule pool back to the poolstack, making it the topmost one.
+
+  Returns: topmost rule pool (should be the given pool)
+
+  arguments:
+  * pool -- a dependency rule pool
+  """
+  # COULDFIX: pool name possibly not unique when reinserting pools
+  assert isinstance ( pool, 
roverlay.depres.simpledeprule.pool.SimpleDependencyRulePool )
+  self._add_pool ( pool )
+  return self._poolstack[-1]
+   # --- end of push_pool (...) ---
+
def get_new_pool ( self, force=False, with_deptype=DEFAULT_DEPTYPE ):
   """Creates a new pool, adds it to the pool stack and returns it.
 
@@ -188,36 +224,38 @@ class DepresInterface ( 
roverlay.interface.generic.RoverlaySubInterface ):
   * with_deptype -- dependency type of the new pool (optional)
   """
   if force or not self._poolstack or not self._poolstack[-1].empty():
- self._pool_id += 1
- try:
-pool = roverlay.depres.simpledeprule.pool.SimpleDependencyRulePool 
(
+ self._add_pool (
+roverlay.depres.simpledeprule.pool.SimpleDependencyRulePool (
"pool" + str ( self._pool_id ),
-   deptype_mask=DEFAULT_DEPTYPE
+   deptype_mask=with_deptype
 )
-self.poolstack.append ( pool )
- except:
-self._pool_id -= 1
-raise
-
- self._update_resolver()
+ )
   # -- end if force or ...
   return self._poolstack[-1]
# --- end of get_new_pool (...) ---
 
+   def pop_pool ( self ):
+  """Discards the topmost rule pool and returns it.
+
+  Returns: dependency rule pool or None (=no pool removed).
+  """
+  try:
+ pool = self._poolstack.pop()
+  except IndexError:
+ # poolstack is empty
+ return None
+
+  self._pool_id -= 1
+  assert self._pool_id >= -1, self._pool_id
+  return pool
+   # --- end of pop_pool (...) ---
+
def discard_pool ( self ):
   """Discards the topmost rule pool.
 
   Returns: True if a pool has been removed, else False.
   """
-  try:
- self._poolstack.pop()
- self._pool_id -= 1
- asse

[gentoo-commits] proj/R_overlay:master commit in: roverlay/util/

2014-06-05 Thread André Erdmann
commit: 728b5d1c32773422f0b3e658d16116f6883ee9d2
Author: André Erdmann  mailerd  de>
AuthorDate: Wed May  7 01:21:28 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Wed May  7 01:21:28 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=728b5d1c

roverlay/util/fileio, write_text_file: accept str

---
 roverlay/util/fileio.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/roverlay/util/fileio.py b/roverlay/util/fileio.py
index 804aa9f..d4019d7 100644
--- a/roverlay/util/fileio.py
+++ b/roverlay/util/fileio.py
@@ -128,6 +128,7 @@ def write_text_file (
newline='\n'
 ):
compress_open = get_compress_open ( compression ) if compression else None
+   lines_iter= ( lines, ) if isinstance ( lines, str ) else lines
 
if create_dir:
   roverlay.util.common.dodir_for_file ( filepath )
@@ -135,7 +136,7 @@ def write_text_file (
if compress_open:
   NL = newline.encode()
   with compress_open ( filepath, mode.rstrip ( 'tu' ) ) as CH:
- for line in lines:
+ for line in lines_iter:
 CH.write ( str ( line ).encode() )
 if append_newlines:
CH.write ( NL )
@@ -144,7 +145,7 @@ def write_text_file (
 CH.write ( NL )
else:
   with open ( filepath, mode ) as FH:
- for line in lines:
+ for line in lines_iter:
 FH.write ( str ( line ) )
 if append_newlines:
FH.write ( newline )



[gentoo-commits] proj/R_overlay:master commit in: files/misc/, roverlay/config/, roverlay/

2014-03-25 Thread André Erdmann
commit: 72102382e7f0c7e4bf1fd9b8aeabe28c64780e97
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Mar 25 22:28:11 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Mar 25 22:28:11 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=72102382

roverlay: --log-level, --verbose (-v) args

Sets the console log level.

---
 files/misc/roverlay.bashcomp |  9 -
 roverlay/argparser.py| 35 +++
 roverlay/argutil.py  | 13 -
 roverlay/config/entrymap.py  |  2 +-
 roverlay/runtime.py  | 14 ++
 5 files changed, 70 insertions(+), 3 deletions(-)

diff --git a/files/misc/roverlay.bashcomp b/files/misc/roverlay.bashcomp
index c15dd96..e521c85 100644
--- a/files/misc/roverlay.bashcomp
+++ b/files/misc/roverlay.bashcomp
@@ -24,10 +24,11 @@ _roverlay_comp() {
   '--ppr' '--print-package-rules'
   '--help-config' '--list-config-entries' '--dump-file' '--strict'
   '--stats' '--no-stats' '--dump-stats'
+  '--log-level' '--verbose'
)
 
local SHORTOPTS=(
-  '-h' '-V' '-c' '-F' '-R' '-D' '-P' '-O' '-N' '-A' '-M'
+  '-h' '-V' '-c' '-F' '-R' '-D' '-P' '-O' '-N' '-A' '-M' '-v'
)
 
local CMDARGS=(
@@ -79,6 +80,12 @@ _roverlay_comp() {
  true
   ;;
 
+  '--log-level')
+ COMPREPLY=(
+$(compgen -W "DEBUG INFO WARN WARNING ERROR CRITICAL" -- "${cur}" )
+ )
+  ;;
+
   *)
  case "${cur}" in
 --*)

diff --git a/roverlay/argparser.py b/roverlay/argparser.py
index 04feff8..2fa6ca1 100644
--- a/roverlay/argparser.py
+++ b/roverlay/argparser.py
@@ -14,6 +14,8 @@ import roverlay.util.objects
 
 # lazy import
 from roverlay.argutil import \
+   LOG_LEVELS, \
+   is_log_level, \
couldbe_fs_dir, couldbe_fs_file, couldbe_stdout_or_file, \
get_gid, is_gid, get_uid, is_uid, \
is_fs_dir, is_fs_dir_or_void, is_fs_file, \
@@ -34,6 +36,22 @@ class UsageAction ( argparse.Action ):
 # --- end of UsageAction ---
 
 
+class VerbosityAction ( argparse.Action ):
+
+   def __init__ ( self, *args, **kwargs ):
+  super ( VerbosityAction, self ).__init__ ( *args, **kwargs )
+  self._log_levels = [ "DEBUG", "INFO" ]
+
+   def __call__ ( self, parser, namespace, values, option_string=None ):
+  setattr (
+ namespace, 'log_level_console',
+ ( self._log_levels.pop() if self._log_levels else "DEBUG" )
+  )
+   # --- end of __call__ (...) ---
+
+# --- end of VerbosityAction ---
+
+
 class RoverlayArgumentParserBase ( roverlay.argutil.ArgumentParserProxy ):
 
DESCRIPTION_TEMPLATE = None
@@ -197,6 +215,12 @@ class RoverlayArgumentParserBase ( 
roverlay.argutil.ArgumentParserProxy ):
  )
 
 
+  # misc, logging
+  if parsed.get ( 'log_level_console' ):
+ self.do_extraconf ( True, 'LOG.CONSOLE.enabled' )
+ self.do_extraconf ( parsed['log_level_console'], 'LOG.CONSOLE.level' )
+
+
   if hasattr ( self.__class__, 'PARSE_TARGETS' ):
  for attr in self.__class__.PARSE_TARGETS:
 getattr ( self, 'parse_' + attr )()
@@ -523,6 +547,17 @@ class RoverlayArgumentParserBase ( 
roverlay.argutil.ArgumentParserProxy ):
  help='print all stats to stdout at exit (raw format)',
   )
 
+  arg (
+ '--log-level', dest='log_level_console', metavar='',
+ default=argparse.SUPPRESS,
+ flags=self.ARG_ADD_DEFAULT, type=is_log_level,
+ help='set console log level ({})'.format ( ', '.join ( LOG_LEVELS ) )
+  )
+
+  arg (
+ '-v', '--verbose', nargs=0, action=VerbosityAction,
+ help="increase verbosity (can be specified more than once)"
+  )
 
   return arg
# --- end of setup_misc_minimal (...) ---

diff --git a/roverlay/argutil.py b/roverlay/argutil.py
index 093d7c9..2f6d34f 100644
--- a/roverlay/argutil.py
+++ b/roverlay/argutil.py
@@ -10,9 +10,20 @@ import pwd
 import grp
 import sys
 
-
+import roverlay.config.entrymap
 from roverlay.config.entryutil import deref_entry_safe
 
+# ref
+LOG_LEVELS = roverlay.config.entrymap.LOG_LEVEL
+
+def is_log_level ( s ):
+   sup = s.upper()
+   if sup in LOG_LEVELS:
+  return sup
+
+   raise argparse.ArgumentTypeError ( "not a log level: {}".format ( s ) )
+# --- end of is_log_level (...) ---
+
 def get_uid ( user ):
try:
   r

[gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/pkgdir/distroot/

2014-03-25 Thread André Erdmann
commit: 099ab4d660263b9af7052076a4da1107ba6b08e1
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Mar 25 20:51:58 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Mar 25 20:51:58 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=099ab4d6

fixme note

---
 roverlay/overlay/pkgdir/distroot/distroot.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/roverlay/overlay/pkgdir/distroot/distroot.py 
b/roverlay/overlay/pkgdir/distroot/distroot.py
index 6762a38..654c1f6 100644
--- a/roverlay/overlay/pkgdir/distroot/distroot.py
+++ b/roverlay/overlay/pkgdir/distroot/distroot.py
@@ -142,6 +142,9 @@ class DistrootBase ( object ):
  # safe removal
  os.unlink ( dest )
   elif os.path.exists ( dest ):
+ # FIXME 2014: exists() implies lexists(),
+ # so this block is unreachable -- remove it
+ #
  # unsafe removal (happens when switching from e.g. hardlinks)
  # FIXME log this
  os.unlink ( dest )



[gentoo-commits] proj/R_overlay:master commit in: roverlay/db/, roverlay/stats/, roverlay/depres/simpledeprule/, roverlay/depres/, ...

2014-03-25 Thread André Erdmann
commit: f9997f4e52f70e127432abc01df04c18760fa391
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Mar 25 20:52:41 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Mar 25 20:52:41 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f9997f4e

fix potential python 2 issue

Python 2 checks for __nonzero__(), not __bool__(). roverlay usually relies
explicit checks ("if obj.attr == $expected" or "obj.exists()" rather than
"if object:"), so this is not a major issue.

---
 roverlay/db/distmap.py| 4 
 roverlay/depres/depresult.py  | 4 
 roverlay/depres/simpledeprule/util.py | 3 +++
 roverlay/overlay/additionsdir.py  | 7 ++-
 roverlay/stats/abstract.py| 4 
 roverlay/util/objects.py  | 8 
 6 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/roverlay/db/distmap.py b/roverlay/db/distmap.py
index 818d5d0..76196f8 100644
--- a/roverlay/db/distmap.py
+++ b/roverlay/db/distmap.py
@@ -244,6 +244,10 @@ class _DistMapBase ( 
roverlay.util.objects.PersistentContent ):
   return True
# --- end of __bool__ (...) ---
 
+   def __nonzero__ ( self ):
+  return self.__bool__()
+   # --- end of __nonzero__ (...) ---
+
def __setitem__ ( self, key, value ):
   if isinstance ( value, DistMapInfo ):
  self.add_entry ( key, value )

diff --git a/roverlay/depres/depresult.py b/roverlay/depres/depresult.py
index b95a1bc..f14f06d 100644
--- a/roverlay/depres/depresult.py
+++ b/roverlay/depres/depresult.py
@@ -46,6 +46,10 @@ class ConstantDepResult ( object ):
   #and self.dep is not False
# --- end of __bool__ (...) ---
 
+   def __nonzero__ ( self ):
+  return self.__bool__()
+   # --- end of __nonzero__ (...) ---
+
def __hash__ ( self ):
   return hash ( self.dep )
# --- end of __hash__ (...) ---

diff --git a/roverlay/depres/simpledeprule/util.py 
b/roverlay/depres/simpledeprule/util.py
index 0ce5aa4..36f88cd 100644
--- a/roverlay/depres/simpledeprule/util.py
+++ b/roverlay/depres/simpledeprule/util.py
@@ -41,6 +41,9 @@ class SlotRestrict ( object ):
def __bool__ ( self ):
   return True
 
+   def __nonzero__ ( self ):
+  return self.__bool__()
+
def noexport ( self ):
   pass
 

diff --git a/roverlay/overlay/additionsdir.py b/roverlay/overlay/additionsdir.py
index 5e24622..6e795a6 100644
--- a/roverlay/overlay/additionsdir.py
+++ b/roverlay/overlay/additionsdir.py
@@ -24,7 +24,8 @@ class AdditionsDir ( object ):
   return self.root is not None and os.path.isdir ( self.root )
# --- end of exists (...) ---
 
-   __bool__ = exists
+   __bool__= exists
+   __nonzero__ = exists
 
def iter_entries ( self ):
   """Generator that yields the directory content of this dir."""
@@ -95,6 +96,10 @@ class _AdditionsDirView ( object ):
   return bool ( self._additions_dir )
# --- end of __bool__ (...) ---
 
+   def __nonzero__ ( self ):
+  return self.__bool__()
+   # --- end of __nonzero__ (...) ---
+
@property
def name ( self ):
   return self._additions_dir.name

diff --git a/roverlay/stats/abstract.py b/roverlay/stats/abstract.py
index c2ecace..6ad39f9 100644
--- a/roverlay/stats/abstract.py
+++ b/roverlay/stats/abstract.py
@@ -258,6 +258,10 @@ class Counter ( RoverlayStatsBase ):
   return bool ( self.total_count )
# --- end of __bool__ (...) ---
 
+   def __nonzero__ ( self ):
+  return self.__bool__()
+   # --- end of __nonzero__ (...) ---
+
def __add__ ( self, other ):
   return self.total_count + int ( other )
# --- end of __add__ (...) ---

diff --git a/roverlay/util/objects.py b/roverlay/util/objects.py
index d14733e..9c73749 100644
--- a/roverlay/util/objects.py
+++ b/roverlay/util/objects.py
@@ -55,6 +55,8 @@ class SafeWeakRef ( weakref.ref ):
   return self.deref_unsafe() is not None
# --- end of __bool__ (...) ---
 
+   __nonzero__ = __bool__
+
def __repr__ ( self ):
   obj = self.deref_unsafe()
   if obj:
@@ -104,6 +106,8 @@ class NoneRef ( object ):
   return False
# --- end of __bool__ (...) ---
 
+   __nonzero__ = __bool__
+
def __repr__ ( self ):
   return "".format ( id ( self ) )
# --- end of __repr__ (...) ---
@@ -360,6 +364,10 @@ class ObjectView ( object ):
   return bool ( self.obj_ref )
# --- end of __bool__ (...) ---
 
+   def __nonzero__ ( self ):
+  return self.__bool__()
+   # --- end of __nonzero__ (...) ---
+
@abstractmethod
def update ( self ):
   """Updates this view (collect data from the actual object etc.)."""



[gentoo-commits] proj/R_overlay:master commit in: roverlay/console/

2014-04-01 Thread André Erdmann
commit: f9fa3b5544e0009297a771c6efd7e7d24cce8fbc
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:38:14 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:38:14 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f9fa3b55

console interpreter: do not fail if var is not set

---
 roverlay/console/interpreter.py | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/roverlay/console/interpreter.py b/roverlay/console/interpreter.py
index e31096f..107a14a 100644
--- a/roverlay/console/interpreter.py
+++ b/roverlay/console/interpreter.py
@@ -281,7 +281,10 @@ class ConsoleInterpreter ( cmd.Cmd ):
   else:
  l = line
 
-  return self._str_formatter.vformat ( l, (), self._locals )
+  try:
+ return self._str_formatter.vformat ( l, (), self._locals )
+  except KeyError as kerr:
+ raise ConsoleUsageException ( "{!s} is not set.".format ( kerr ) )
# --- end of format_locals (...) ---
 
def get_fspath ( self, line ):



[gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/

2014-04-01 Thread André Erdmann
commit: 6596fb255d1f17017420401a4e39f8a711bcc239
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:38:36 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:38:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=6596fb25

overlay/creator: fix comment

---
 roverlay/overlay/creator.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/roverlay/overlay/creator.py b/roverlay/overlay/creator.py
index ea623e6..75119d3 100644
--- a/roverlay/overlay/creator.py
+++ b/roverlay/overlay/creator.py
@@ -404,7 +404,6 @@ class OverlayCreator ( object ):
   ##num_removed += selfdep.reduce()
   ##end loop
   ##
-  ##num_removed <- 0
   ## end loop
   ##
   self.overlay.link_selfdeps ( selfdeps )



[gentoo-commits] proj/R_overlay:master commit in: roverlay/config/

2014-04-01 Thread André Erdmann
commit: 23adf50912a502873b4799ce74c2ef5e5814f508
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:39:56 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:39:56 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=23adf509

config/fielddef: log path of the missing licenses file

---
 roverlay/config/fielddef.py | 18 +-
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/roverlay/config/fielddef.py b/roverlay/config/fielddef.py
index d5ff53d..ee4e943 100644
--- a/roverlay/config/fielddef.py
+++ b/roverlay/config/fielddef.py
@@ -140,12 +140,20 @@ class DescriptionFieldDefinition ( object ):
"config: LICENSEMAP.licenses_file is not set."
 )
 
- licenses_list = list (
-itertools.chain.from_iterable (
-   line.strip().split ( None ) for line in
-  roverlay.util.fileio.read_text_file ( LICENSE_FILE )
+ try:
+licenses_list = list (
+   itertools.chain.from_iterable (
+  line.strip().split ( None ) for line in
+ roverlay.util.fileio.read_text_file ( LICENSE_FILE )
+   )
 )
- )
+ except IOError as err:
+if err.errno == errno.ENOENT:
+   self.logger.critical (
+  "licenses file {!r} does not exist.".format ( LICENSE_FILE )
+   )
+# -- end if
+raise
 
  self.logger.debug (
 "Using {n:d} licenses from file: {!r}".format (



[gentoo-commits] proj/R_overlay:master commit in: files/shlib/, doc/rst/

2014-04-01 Thread André Erdmann
commit: adeb72581e0b6030af14441129059241e009a58a
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:35:48 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:35:48 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=adeb7258

hook functions: die_cannot_run()

+ qwhich(): use "hash" instead of "which"

---
 doc/rst/usage.rst| 12 +++-
 files/shlib/functions.sh | 16 ++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index c2d8bc9..f27e933 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -2509,10 +2509,17 @@ when included in the hook script, most of the 
enviroment variables readonly.
+-+---+
| DEVNULL | */dev/null* target (could also be a file) |
+-+---+
+   | EX_OK   | *success* exit code   |
+   +-+---+
| EX_ERR  | default error exit code   |
+-+---+
| EX_ARG_ERR  | default exit code for arg errors  |
+-+---+
+   | EX_CANNOT_RUN   | default exit code when a hook cannot run, |
+   | | e.g. if an essential program is missing   |
+   | |   |
+   | | Defaults to ``$EX_OK``.   |
+   +-+---+
| EX_GIT_ERR  | git-related error codes   |
| EX_GIT_ADD_ERR  |   |
| EX_GIT_COMMIT\  |   |
@@ -2558,6 +2565,9 @@ when included in the hook script, most of the enviroment 
variables readonly.
# @noreturn die ( [message], [exit_code] ), raises exit()
#  Lets the script die with the given message/exit code.
#
+   # @noreturn die_cannot_run ( [reason] ), raises die (**EX_CANNOT_RUN)
+   #  Lets the script die due to missing preconditions.
+   #
# @noreturn OUT_OF_BOUNDS(), raises die()
#  Lets the script die due to insufficient arg count.
#
@@ -2582,7 +2592,7 @@ when included in the hook script, most of the enviroment 
variables readonly.
#  Returns 0 if $word is in the given list, else 1.
#
# int qwhich ( *command )
-   #  Returns 0 if all listed commands are found by "which", else 1.
+   #  Returns 0 if all listed commands could be found, else 1.
#
# int sync_allowed ( action_name, [msg_nosync], [msg_sync] )
#  Returns 0 if syncing for the given action is allowed, else 1.

diff --git a/files/shlib/functions.sh b/files/shlib/functions.sh
index 1603376..fb616dc 100644
--- a/files/shlib/functions.sh
+++ b/files/shlib/functions.sh
@@ -20,6 +20,7 @@
 #
 # core:
 # @noreturn die ( [message], [exit_code] ), raises exit()
+# @noreturn die_cannot_run ( [reason] ), raises die()
 # @noreturn OUT_OF_BOUNDS(), raises die()
 # int  run_command( *cmdv )
 # int  run_command_logged ( *cmdv )
@@ -133,8 +134,11 @@ readonly IFS_NEWLINE='
 : ${DEVNULL:=/dev/null}
 readonly DEVNULL
 
+readonly EX_OK=0
 readonly EX_ERR=2
 readonly EX_ARG_ERR=5
+# EX_CANNOT_RUN: configurable
+EX_CANNOT_RUN=${EX_OK}
 
 readonly EX_GIT_ERR=30
 readonly EX_GIT_ADD_ERR=35
@@ -193,6 +197,14 @@ die() {
exit "${2:-${EX_ERR?}}"
 }
 
+# @noreturn die_cannot_run ( [reason] ), raises die (**EX_CANNOT_RUN)
+#
+#  Lets the script die due to missing preconditions.
+#
+die_cannot_run() {
+   die "${1:-cannot run.}" "${EX_CANNOT_RUN}"
+}
+
 # @noreturn OUT_OF_BOUNDS(), raises die (**EX_ARG_ERR)
 #
 #  Catches non-zero shift return and calls die().
@@ -302,11 +314,11 @@ list_has() {
 
 # int qwhich ( *command )
 #
-#  Returns true if 'which' finds all listed commands, else false.
+#  Returns true if all listed commands could be found, else false.
 #
 qwhich() {
while [ $# -gt 0 ]; do
-  which "${1}" 1>>${DEVNULL} 2>>${DEVNULL} || return 1
+  hash "${1}" 1>>${DEVNULL} 2>>${DEVNULL} || return 1
   shift
done
return 0



[gentoo-commits] proj/R_overlay:master commit in: roverlay/config/

2014-04-01 Thread André Erdmann
commit: c8a9eee2bc05ec7c02110318277cc0604c69ad44
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:39:17 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:39:17 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c8a9eee2

config/entryutil: iter_entries_with_value_type()

---
 roverlay/config/entryutil.py | 30 +-
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/roverlay/config/entryutil.py b/roverlay/config/entryutil.py
index 716c166..899bd4d 100644
--- a/roverlay/config/entryutil.py
+++ b/roverlay/config/entryutil.py
@@ -65,6 +65,29 @@ def find_config_path ( name ):
   raise roverlay.config.exceptions.ConfigOptionNotFound ( name )
 # --- end of find_config_path (...) ---
 
+def iter_visible_entries():
+   for entry_key, entry in CONFIG_ENTRY_MAP.items():
+  if entry is not None:
+ # else entry is disabled
+ yield ( entry_key, entry )
+# --- end of iter_visible_entries (...) ---
+
+def iter_entries_with_value_type ( value_types ):
+   for key, entry in iter_visible_entries():
+  if isinstance ( entry, dict ):
+ if entry.get ( 'value_type' ) in value_types:
+yield ( key, entry )
+  elif entry and isinstance ( entry, str ):
+ # ^ not really necessary
+ real_key, real_entry = deref_entry_safe ( key )
+ if (
+isinstance ( real_entry, dict )
+and real_entry.get ( 'value_type' ) in value_types
+ ):
+yield ( key, real_entry )
+   # -- end for
+# --- end of iter_entries_with_value_type (...) ---
+
 def iter_config_keys():
for key, entry in CONFIG_ENTRY_MAP.items():
   if isinstance ( entry, dict ):
@@ -75,12 +98,9 @@ def _iter_entries():
"""Iterates through all entries in CONFIG_ENTRY_MAP and yields config
entry information (entry name, description).
"""
-   for entry_key, entry in CONFIG_ENTRY_MAP.items():
+   for entry_key, entry in iter_visible_entries():
   name = entry_key.upper()
-  if entry is None:
- # entry is disabled
- pass
-  elif isinstance ( entry, dict ):
+  if isinstance ( entry, dict ):
  description = entry.get ( 'description' ) or entry.get ( 'desc' )
  if description:
 if isinstance ( description, str ):



[gentoo-commits] proj/R_overlay:master commit in: /

2014-04-01 Thread André Erdmann
commit: 01679b2c15a7e7e62a8a9cb2f57fe1815d70b9c4
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 16:06:00 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 16:06:00 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=01679b2c

Makefile, generate-config: + R-overlay.conf.others

---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 495f6c8..5f5ac2c 100644
--- a/Makefile
+++ b/Makefile
@@ -112,7 +112,7 @@ generate-config: $(RV_SETUP)
mkconfig
 
ROVERLAY_INSTALLED=0 $(RV_SETUP) \
-   -O R-overlay.conf.local.new \
+   -O R-overlay.conf.others --prjroot-relpath --target-type 
foreign \
-D files --conf-root config --my-conf-root config -A files -W 
workdir \
mkconfig
 



[gentoo-commits] proj/R_overlay:master commit in: files/hooks/

2014-04-01 Thread André Erdmann
commit: 5b39452838f97dd3645fb102a8f784639209ef1b
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:37:15 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:37:15 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=5b394528

hooks: use die_cannot_run()

---
 files/hooks/create-metadata-cache.sh | 4 ++--
 files/hooks/git-commit-overlay.sh| 2 +-
 files/hooks/git-push.sh  | 2 ++
 files/hooks/notify-desktop.sh| 2 ++
 4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/files/hooks/create-metadata-cache.sh 
b/files/hooks/create-metadata-cache.sh
index 808f537..a406d7f 100644
--- a/files/hooks/create-metadata-cache.sh
+++ b/files/hooks/create-metadata-cache.sh
@@ -14,10 +14,10 @@ set -u
 #$lf ...
 
 : ${EGENCACHE:=egencache}
-#autodie qwhich "${EGENCACHE}"
+qwhich "${EGENCACHE}" || die_cannot_run "egencache is not available."
 
 # a valid PORTDIR is required
-[ -d "${PORTDIR-}" ] || die "\$PORTDIR '${PORTDIR-}' does not exist."
+[ -d "${PORTDIR-}" ] || die_cannot_run "\$PORTDIR '${PORTDIR-}' does not 
exist."
 
 # void cleanup()
 #

diff --git a/files/hooks/git-commit-overlay.sh 
b/files/hooks/git-commit-overlay.sh
index 2e726fb..30aad1c 100644
--- a/files/hooks/git-commit-overlay.sh
+++ b/files/hooks/git-commit-overlay.sh
@@ -17,7 +17,7 @@ set -u
 
 ## load git helper functions
 $lf git
-#autodie qwhich ${GIT}
+qwhich "${GIT}" || die_cannot_run "git is not available."
 
 
 ## functions

diff --git a/files/hooks/git-push.sh b/files/hooks/git-push.sh
index 7d79e64..d5a410a 100644
--- a/files/hooks/git-push.sh
+++ b/files/hooks/git-push.sh
@@ -13,6 +13,8 @@ set -u
 # using line_iterator() from itertools
 $lf git itertools
 
+qwhich "${GIT}" || die_cannot_run "git is not available."
+
 
 ## functions
 

diff --git a/files/hooks/notify-desktop.sh b/files/hooks/notify-desktop.sh
index 9184c2f..32ae230 100644
--- a/files/hooks/notify-desktop.sh
+++ b/files/hooks/notify-desktop.sh
@@ -9,6 +9,8 @@ set -u
 . "${FUNCTIONS?}" || exit
 #dont_run_as_root
 
+qwhich notify-send || die_cannot_run "notify-send is not available."
+
 ## load helper functions
 #$lf ...
 



[gentoo-commits] proj/R_overlay:master commit in: roverlay/

2014-04-01 Thread André Erdmann
commit: 19ad4d4e8e73b7be7f8a81e86ffa83116adb2cf1
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 17:13:10 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 17:13:10 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=19ad4d4e

roverlay/argparser: fix

Pass **kwargs when creating the parser object.

---
 roverlay/argparser.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/roverlay/argparser.py b/roverlay/argparser.py
index 2fa6ca1..706cf5f 100644
--- a/roverlay/argparser.py
+++ b/roverlay/argparser.py
@@ -84,6 +84,7 @@ class RoverlayArgumentParserBase ( 
roverlay.argutil.ArgumentParserProxy ):
 argparse.RawDescriptionHelpFormatter
 if formatter_class is True else formatter_class
  ),
+ **kwargs
   )
# --- end of create_new_parser (...) ---
 



[gentoo-commits] proj/R_overlay:master commit in: bin/scripts/

2014-04-01 Thread André Erdmann
commit: 93f17af72d26c46c9b32a3a79871a05b97e8bb13
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Apr  1 16:34:57 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=93f17af7

bin/scripts/genfiles: minor doc update

---
 bin/scripts/genfiles.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/bin/scripts/genfiles.sh b/bin/scripts/genfiles.sh
index 61ee3ab..4f46f64 100755
--- a/bin/scripts/genfiles.sh
+++ b/bin/scripts/genfiles.sh
@@ -11,7 +11,7 @@ OUT_OF_BOUNDS() { die "shift returned non-zero."; }
 dodir() { [ -d "${1-}" ] || mkdir -p -- "${1}"; }
 
 
-# genfile ( infile, destdir_relpath, *query_config_args )
+# genfile ( infile, destdir_relpath, *query_config_args, **fail! )
 #
 genfile() {
local infile destdir destfile fname
@@ -38,7 +38,7 @@ genfile() {
fi
 }
 
-# genfiles_recursive ( root, root_relpath, *query_config_args )
+# genfiles_recursive ( root, root_relpath, *query_config_args, **fail! )
 #
 genfiles_recursive() {
local root relpath item



[gentoo-commits] proj/R_overlay:master commit in: files/misc/

2014-04-01 Thread André Erdmann
commit: 93cbdb3bbb3615dd03f56dd28336912195433d38
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Apr  1 16:29:56 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=93cbdb3b

update roverlay-setup bash completion

---
 files/misc/roverlay.bashcomp | 5 +
 1 file changed, 5 insertions(+)

diff --git a/files/misc/roverlay.bashcomp b/files/misc/roverlay.bashcomp
index e521c85..6d43522 100644
--- a/files/misc/roverlay.bashcomp
+++ b/files/misc/roverlay.bashcomp
@@ -216,6 +216,7 @@ _roverlay_setup_comp() {
local LONGOPTS=(
   '--help' '--usage' '--version'
   '--work-root' '--data-root' '--conf-root' '--conf-dir' '--my-conf-root'
+  '--target-type' '--foreign' '--not-gentoo'
   '--output' '--ask' '--expand-user' '--additions-dir' '--variable'
   '--prjroot-relpath' '--enable-default-hooks' '--no-default-hooks'
   '--import-config' '--no-import-config' '--force-import-config'
@@ -293,6 +294,10 @@ _roverlay_setup_comp() {
  #COMPREPLY+=
   ;;
 
+  '--target-type')
+ COMPREPLY=( $( compgen -W "gentoo foreign" -- "${cur}" ) )
+  ;;
+
   *)
  case "${cur}" in
 --*)



[gentoo-commits] proj/R_overlay:master commit in: /

2014-04-01 Thread André Erdmann
commit: fd098efcebdad3a92d40bcd00278d7011bd31404
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 17:31:49 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=fd098efc

Makefile: parallel generate-config

---
 Makefile | 81 ++--
 1 file changed, 58 insertions(+), 23 deletions(-)

diff --git a/Makefile b/Makefile
index 5f5ac2c..9a41011 100644
--- a/Makefile
+++ b/Makefile
@@ -37,43 +37,36 @@ SRC_DOCDIR:= ./doc
 
 SELFDOC   := $(SRC_DOCDIR)/pydoc
 
-.PHONY: default \
-   clean clean-log _pyclean _pydoc_clean distclean \
-   docs pydoc htmldoc \
-   check test \
-   generate-files \
-   generate-config generate-doc generate-manifest \
-   release dist \
-   compress-config \
-   install-all install \
-   install-roverlay install-pymodules \
-   install-data install-config-common \
-   install-config-compressed install-config \
-   uninstall-all uninstall \
-   uninstall-roverlay uninstall-pymodules
-
+PHONY += default
 default:
@false
 
+PHONY += check
 check:
@true
 
+PHONY += test
 test: ./bin/run_tests
./bin/run_tests
 
+PHONY += clean
 clean:
rm -rf ./build/ $(BUILDDIR)/
 
+PHONY += clean-log
 clean-log:
rm -rf -- $(LOGDIR)
 
+PHONY += _pyclean
 _pyclean:
find . \( -name "*.pyc" -or -name "*.pyo" \) -delete -print
 
+PHONY += _pydoc_clean
 _pydoc_clean:
rm -f -- $(SELFDOC)/*.html
! test -d $(SELFDOC) || rmdir --ignore-fail-on-non-empty -- $(SELFDOC)/
 
+PHONY += distclean
 distclean: clean _pyclean _pydoc_clean
 
 $(BUILDDIR):
@@ -86,60 +79,89 @@ $(SELFDOC):
$(PYDOC_SH) $(SELFDOC)
 
 # alias to $(SELFDOC)
+PHONY += pydoc
 pydoc: $(SELFDOC)
 
+PHONY += htmldoc
 htmldoc: $(SRC_DOCDIR)/rst/usage.rst
@install -d $(SRC_DOCDIR)/html
$(RST_HTML) $(SRC_DOCDIR)/rst/usage.rst $(SRC_DOCDIR)/html/usage.html
 
+PHONY += generate-doc
 generate-doc: htmldoc
 
+PHONY += generate-manifest
 generate-manifest: $(MANIFEST_GEN)
$(MANIFEST_GEN) > $(MANIFEST_TMP)
mv -- $(MANIFEST_TMP) $(MANIFEST)
 
-generate-config: $(RV_SETUP)
-   ROVERLAY_INSTALLED=1 $(RV_SETUP) \
-   -O config/R-overlay.conf.install \
+
+$(CURDIR)/config/R-overlay.conf.install: $(RV_SETUP) FORCE | $(CURDIR)/config
+   ROVERLAY_INSTALLED=1 $< --target-type gentoo \
+   -O $@ \
-D $(DATADIR)/roverlay \
--conf-root $(CONFDIR)/roverlay --my-conf-root 
$(CONFDIR)/roverlay \
-A $(CONFDIR)/roverlay/files \
mkconfig
 
-   ROVERLAY_INSTALLED=0 $(RV_SETUP) \
-   -O R-overlay.conf --prjroot-relpath \
+$(CURDIR)/config/R-overlay.conf.install.others: $(RV_SETUP) FORCE | 
$(CURDIR)/config
+   ROVERLAY_INSTALLED=1 $< --target-type foreign \
+   -O $@ \
+   -D $(DATADIR)/roverlay \
+   --conf-root $(CONFDIR)/roverlay --my-conf-root 
$(CONFDIR)/roverlay \
+   -A $(CONFDIR)/roverlay/files \
+   mkconfig
+
+$(CURDIR)/R-overlay.conf: $(RV_SETUP) FORCE
+   ROVERLAY_INSTALLED=0 $< --target-type gentoo \
+   -O $@ --prjroot-relpath \
-D files --conf-root config --my-conf-root config -A files -W 
workdir \
mkconfig
 
-   ROVERLAY_INSTALLED=0 $(RV_SETUP) \
-   -O R-overlay.conf.others --prjroot-relpath --target-type 
foreign \
+$(CURDIR)/R-overlay.conf.others: $(RV_SETUP) FORCE
+   ROVERLAY_INSTALLED=0 $< --target-type foreign \
+   -O $@ --prjroot-relpath \
-D files --conf-root config --my-conf-root config -A files -W 
workdir \
mkconfig
 
+PHONY += generate-config
+generate-config: \
+   $(CURDIR)/config/R-overlay.conf.install \
+   $(CURDIR)/config/R-overlay.conf.install.others \
+   $(CURDIR)/R-overlay.conf \
+   $(CURDIR)/R-overlay.conf.others
+
 
+PHONY += generate-files
 generate-files: generate-config generate-doc generate-manifest
 
 # creates a src tarball (.tar.bz2)
 #  !!! does not include config files
+PHONY += release
 release: generate-files
@echo "Note: the release tarball does not include any config files!"
@install -d $(PKG_DISTDIR)
./$(SETUP_PY) sdist --dist-dir=$(PKG_DISTDIR) --formats=bztar
 
+PHONY += dist
 dist: distclean release
 
+PHONY += compress-config
 compress-config: $(BUILDDIR)
@install -d $(BUILDDIR)/config
cp -vLr -p --no-preserve=ownership config/simple-deprules.d 
$(BUILDDIR)/config/
find $(BUILDDIR)/config/simple-deprules.d/ -type f -print0 | xargs -0 
-n 5 --verbose $(X_COMPRESS)
$(X_COMPRESS) -c config/license.map >  $(BUILDDIR)/co

[gentoo-commits] proj/R_overlay:master commit in: roverlay/config/

2014-04-01 Thread André Erdmann
commit: 0afe47d7ddff30f1e82f942e865afeb1672a7ca5
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:41:11 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:41:11 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=0afe47d7

config entry map: make LICENSES_FILE configurable

---
 roverlay/config/entrymap.py | 16 +++-
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/roverlay/config/entrymap.py b/roverlay/config/entrymap.py
index fb285a1..46c2f7f 100644
--- a/roverlay/config/entrymap.py
+++ b/roverlay/config/entrymap.py
@@ -553,15 +553,13 @@ CONFIG_ENTRY_MAP = dict (
   description = 'try to read licenses from PORTDIR/licenses',
),
 
-   # hidden option (using CACHEDIR.root + "/licenses" as licenses file)
-   licenses_file = None,
-#   licenses_file = dict (
-#  path= [ 'LICENSEMAP', 'licenses_file', ],
-#  value_type  = 'fs_file',
-#  description = (
-# 'licenses file (used as fallback if PORTDIR not available)'
-#  ),
-#   ),
+   licenses_file = dict (
+  path= [ 'LICENSEMAP', 'licenses_file', ],
+  value_type  = 'fs_file',
+  description = (
+ 'licenses file (used as fallback if PORTDIR not available)'
+  ),
+   ),
 
create_licenses_file = dict (
   path= [ 'LICENSEMAP', 'create_licenses_file', ],



[gentoo-commits] proj/R_overlay:master commit in: roverlay/setupscript/, roverlay/config/, roverlay/static/

2014-04-01 Thread André Erdmann
commit: e063d87554087526b3f6ef43612125db9bfb
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 15:44:49 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Mar 31 15:44:49 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=e063

let's run on debian #1: roverlay-setup

This commit adds basic support for target-specific setup
via the "--target-type " switch.

So far this affects config file creation only and there are 2 choices:

* "gentoo": have portage and a PORTDIR
* "foreign" a.k.a. "not gentoo": neither portage nor PORTDIR available

---
 roverlay/config/defconfig.py|  66 --
 roverlay/setupscript/runtime.py | 148 
 roverlay/static/targetenv.py|  51 ++
 3 files changed, 204 insertions(+), 61 deletions(-)

diff --git a/roverlay/config/defconfig.py b/roverlay/config/defconfig.py
index 4bff289..383bb96 100644
--- a/roverlay/config/defconfig.py
+++ b/roverlay/config/defconfig.py
@@ -148,7 +148,7 @@ class ConfigOption ( object ):
 class RoverlayConfigCreation ( object ):
 
def __init__ ( self,
-  is_installed,
+  is_installed, target_type,
   work_root = '~/roverlay',
   data_root = '/usr/share/roverlay',
   conf_root = '/etc/roverlay',
@@ -167,7 +167,7 @@ class RoverlayConfigCreation ( object ):
   self._ctree= tree.ConfigTree()
   self._cloader  = self._ctree.get_loader()
   self._verify_value = self._cloader._make_and_verify_value
-  self.reset ( is_installed=is_installed )
+  self.reset ( is_installed=is_installed, target_type=target_type )
# --- end of __init__ (...) ---
 
def iter_options ( self ):
@@ -189,6 +189,8 @@ class RoverlayConfigCreation ( object ):
   svalue = self.get_datadir ( value[2:] )
elif v == 'c':
   svalue = self.get_confdir ( value[2:] )
+   elif v == 'a':
+  svalue = self.get_additions_dir ( value[2:] )
else:
   svalue = value
 else:
@@ -215,7 +217,7 @@ class RoverlayConfigCreation ( object ):
   else:
  raise ConfigOptionMissing ( key )
 
-   def reset ( self, is_installed ):
+   def reset ( self, is_installed, target_type ):
   workdir   = self.get_workdir
   datadir   = self.get_datadir
   confdir   = self.get_confdir
@@ -223,15 +225,21 @@ class RoverlayConfigCreation ( object ):
 
   cachedir = _fspath_prefix_func ( self.work_root, 'cache' )
 
+  _NULLCONF = lambda *a, **b: None
+  _GET_A= lambda a, b: a
+  _GET_B= lambda a, b: b
+  _T_TRUE   = ( ConfigOption, _NULLCONF,_GET_A )
+  _T_FALSE  = ( _NULLCONF,ConfigOption, _GET_B )
+  _get_setup_triple = lambda cond: ( _T_TRUE if cond else _T_FALSE )
 
-  UNLESS_INSTALLED = lambda *a, **b: (
- None if is_installed else ConfigOption ( *a, **b )
+  IF_INSTALLED, UNLESS_INSTALLED, get_inst_val = (
+ _get_setup_triple ( is_installed )
   )
-  IF_INSTALLED = lambda *a, **b: (
- ConfigOption ( *a, **b ) if is_installed else None
+  IF_PORTDIR, UNLESS_PORTDIR,  get_portdir_val = (
+ _get_setup_triple ( target_type.portdir )
   )
-  get_val = lambda v_inst, v_standalone: (
- v_inst if is_installed else v_standalone
+  IF_PORTAGE, UNLESS_PORTAGE, get_portage_val = (
+ _get_setup_triple ( target_type.has_portage )
   )
 
 
@@ -250,27 +258,35 @@ class RoverlayConfigCreation ( object ):
 use_default_desc=False
  ),
  ConfigOption ( 'CACHEDIR', cachedir() ),
- ConfigOption (
-'PORTDIR', '/usr/portage', use_default_desc=False,
+ IF_PORTDIR (
+'PORTDIR', target_type.portdir, use_default_desc=False,
 description=(
"portage directory",
" used to scan for valid licenses",
 ),
  ),
+ UNLESS_PORTAGE (
+'EBUILD_PROG', '/usr/bin/ebuild',
+comment_default=True, required=False, recommended=None,
+description=(
+   ' optional, but required for importing hand-written ebuilds'
+   ' and MANIFEST_IMPLEMENTATION=ebuild (see below)'
+),
+ ),
  '',
  '# --- Logging Configuration (optional) ---',
  '',
  ConfigOption (
-'LOG_LEVEL', get_val ( 'WARNING', 'INFO' ), required=False,
+'LOG_LEVEL', get_inst_val ( 'WARNING', 'INFO' ), required=False,
 comment_default=is

[gentoo-commits] proj/R_overlay:master commit in: roverlay/util/

2014-04-01 Thread André Erdmann
commit: ea0f8cbcc126a53bc450b4161c8910fe1d9af778
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 18:30:18 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=ea0f8cbc

fileio: catch EOFError

---
 roverlay/util/fileio.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roverlay/util/fileio.py b/roverlay/util/fileio.py
index dc96119..804aa9f 100644
--- a/roverlay/util/fileio.py
+++ b/roverlay/util/fileio.py
@@ -76,7 +76,7 @@ def read_text_file ( filepath, preparse=None, try_harder=True 
):
# safely read first line only
line= next ( creader )
 
-except StopIteration:
+except ( StopIteration, EOFError ):
# empty file (?)
CH.close()
return



[gentoo-commits] proj/R_overlay:master commit in: doc/html/

2014-04-01 Thread André Erdmann
commit: fac405678163d6b19db1c4a230724e663474f619
Author: André Erdmann  mailerd  de>
AuthorDate: Tue Apr  1 16:35:12 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:37 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=fac40567

doc/html: update

---
 doc/html/usage.html | 16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/doc/html/usage.html b/doc/html/usage.html
index ffc3d5f..2892bcb 100644
--- a/doc/html/usage.html
+++ b/doc/html/usage.html
@@ -2946,12 +2946,21 @@ when included in the hook script, most of the 
enviroment variables readonly.
 DEVNULL
 /dev/null target (could also be a file)
 
+EX_OK
+success exit code
+
 EX_ERR
 default error exit code
 
 EX_ARG_ERR
 default exit code for arg errors
 
+EX_CANNOT_RUN
+default exit code when a hook cannot run,
+e.g. if an essential program is missing
+Defaults to $EX_OK.
+
+
 EX_GIT_ERR
 EX_GIT_ADD_ERR
 EX_GIT_COMMIT_ERR
@@ -2999,6 +3008,9 @@ function files
 # @noreturn die ( [message], [exit_code] ), raises exit()
 #  Lets the script die with the given message/exit code.
 #
+# @noreturn die_cannot_run ( [reason] ), raises die (**EX_CANNOT_RUN)
+#  Lets the script die due to missing preconditions.
+#
 # @noreturn OUT_OF_BOUNDS(), raises die()
 #  Lets the script die due to insufficient arg count.
 #
@@ -3023,7 +3035,7 @@ function files
 #  Returns 0 if $word is in the given list, else 1.
 #
 # int qwhich ( *command )
-#  Returns 0 if all listed commands are found by "which", else 1.
+#  Returns 0 if all listed commands could be found, else 1.
 #
 # int sync_allowed ( action_name, [msg_nosync], [msg_sync] )
 #  Returns 0 if syncing for the given action is allowed, else 1.
@@ -5038,7 +5050,7 @@ becomes "loop until resolver closes".
 
 
 
-Generated on: 2014-02-21.
+Generated on: 2014-04-01.
 
 
 



[gentoo-commits] proj/R_overlay:master commit in: roverlay/setupscript/

2014-04-01 Thread André Erdmann
commit: 9402ffb0190bed041670f725d477603c247febad
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 17:15:00 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:30 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=9402ffb0

setupscript, arg parser: add ROVERLAY_TARGET_TYPE

... to epilog

---
 roverlay/setupscript/runtime.py | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/roverlay/setupscript/runtime.py b/roverlay/setupscript/runtime.py
index afe9daa..b9b7ed0 100644
--- a/roverlay/setupscript/runtime.py
+++ b/roverlay/setupscript/runtime.py
@@ -426,8 +426,10 @@ class SetupEnvironment ( 
roverlay.runtime.IndependentRuntimeEnvironment ):
  defaults= self.get_parser_defaults(),
  epilog  = (
 'Environment variables:\n'
-'* ROVERLAY_PRJROOT   - path to roverlay\'s source dir\n'
-'* ROVERLAY_INSTALLED - mark roverlay as installed (if set and not 
empty)\n'
+'* ROVERLAY_PRJROOT - path to roverlay\'s source dir\n'
+'* ROVERLAY_INSTALLED   - mark roverlay as installed\n'
+'  (if set and not \'0\', \'no\', \'n\' 
\'false\')\n'
+'* ROVERLAY_TARGET_TYPE - set target environment type\n'
  )
   )
# --- end of create_argparser (...) ---



[gentoo-commits] proj/R_overlay:master commit in: roverlay/setupscript/, /, files/

2014-04-01 Thread André Erdmann
commit: 7559946e31712f46dbaa3959a93a35a2afa257bd
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 18:30:35 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=7559946e

roverlay-setup: load parser defaults file

---
 Makefile|  5 -
 files/setup.defaults|  6 ++
 files/setup.defaults.others |  6 ++
 roverlay/setupscript/runtime.py | 13 ++---
 4 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 06933f8..d5e21cd 100644
--- a/Makefile
+++ b/Makefile
@@ -207,7 +207,10 @@ install-data:
$(DATADIR)/roverlay/shlib $(DATADIR)/roverlay/hooks \
$(DATADIR)/roverlay/eclass $(DATADIR)/roverlay/mako_templates
 
-ifneq ($(ROVERLAY_TARGET_TYPE),gentoo)
+ifeq ($(ROVERLAY_TARGET_TYPE),gentoo)
+   install -m 0644 -- files/setup.defaults $(DATADIR)/setup.defaults
+else
+   install -m 0644 -- files/setup.defaults.others $(DATADIR)/setup.defaults
install -m 0644 -- $(LICENSES_FILE) $(DATADIR)/roverlay/licenses
 endif
install -m 0644 -t $(DATADIR)/roverlay/hooks files/hooks/*.sh

diff --git a/files/setup.defaults b/files/setup.defaults
new file mode 100644
index 000..b9e06d7
--- /dev/null
+++ b/files/setup.defaults
@@ -0,0 +1,6 @@
+# site-specific defaults for roverlay-setup
+#  each line lists one " = " pair,
+#  where  is the dest of a parser option
+#  (see roverlay.setupscript.runtime)
+#
+target_type = gentoo

diff --git a/files/setup.defaults.others b/files/setup.defaults.others
new file mode 100644
index 000..4e4c173
--- /dev/null
+++ b/files/setup.defaults.others
@@ -0,0 +1,6 @@
+# site-specific defaults for roverlay-setup
+#  each line lists one " = " pair,
+#  where  is the dest of a parser option
+#  (see roverlay.setupscript.runtime)
+#
+target_type = foreign

diff --git a/roverlay/setupscript/runtime.py b/roverlay/setupscript/runtime.py
index b9b7ed0..5576f1d 100644
--- a/roverlay/setupscript/runtime.py
+++ b/roverlay/setupscript/runtime.py
@@ -23,6 +23,7 @@ import roverlay.setupscript.initenv
 import roverlay.setupscript.hookenv
 
 import roverlay.static.targetenv
+import roverlay.util.mapreader
 
 
 if sys.hexversion >= 0x300:
@@ -389,9 +390,6 @@ class SetupEnvironment ( 
roverlay.runtime.IndependentRuntimeEnvironment ):
def get_parser_defaults ( self ):
   defaults = {}
 
-  if 'ROVERLAY_TARGET_TYPE' in os.environ:
- defaults ['target_type'] = os.environ ['ROVERLAY_TARGET_TYPE']
-
   if self.is_installed():
  instinfo = self.INSTALLINFO
  defaults.update ({
@@ -417,6 +415,15 @@ class SetupEnvironment ( 
roverlay.runtime.IndependentRuntimeEnvironment ):
  })
   # -- end if
 
+  defaults_file = defaults['data_root'] + os.sep + 'setup.defaults'
+  if os.path.isfile ( defaults_file ):
+ dparser = roverlay.util.mapreader.DictFileParser ( r'\s*=\s*' )
+ dparser.read_file ( defaults_file )
+ defaults.update ( dparser.make_result() )
+
+  if 'ROVERLAY_TARGET_TYPE' in os.environ:
+ defaults ['target_type'] = os.environ ['ROVERLAY_TARGET_TYPE']
+
   return defaults
# --- end of get_parser_defaults (...) ---
 



[gentoo-commits] proj/R_overlay:master commit in: /, files/, config/

2014-04-01 Thread André Erdmann
commit: 0ed1f156db5c6219cbf644f7eff6e0491574e7f4
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 17:59:58 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=0ed1f156

update generated files

---
 R-overlay.conf |   3 +-
 R-overlay.conf => R-overlay.conf.others|  19 +-
 config/R-overlay.conf.install  |   3 +-
 conf.install => R-overlay.conf.install.others} |  19 +-
 files/licenses | 753 +
 5 files changed, 783 insertions(+), 14 deletions(-)

diff --git a/R-overlay.conf b/R-overlay.conf
index 29d7b33..e75b0a8 100644
--- a/R-overlay.conf
+++ b/R-overlay.conf
@@ -90,6 +90,7 @@ LICENSE_MAP="config/license.map"
 OVERLAY_ECLASS="files/eclass/R-packages.eclass"
 
 # default category for created ebuilds
+#  (usually overridden by package rules)
 #  Defaults to "sci-R".
 #OVERLAY_CATEGORY="sci-R"
 
@@ -112,7 +113,7 @@ DISTDIR_STRATEGY="hardlink symlink"
 #  usually not needed
 #DISTDIR_VERIFY="no"
 
-# distmap compression format (none, bzip2 or gzip)
+# distmap compression format (default, none, bz2, bzip2, gz, gzip, xz)
 #  Defaults to "bzip2".
 #DISTMAP_COMPRESSION="bzip2"
 

diff --git a/R-overlay.conf b/R-overlay.conf.others
similarity index 87%
copy from R-overlay.conf
copy to R-overlay.conf.others
index 29d7b33..fc7ad69 100644
--- a/R-overlay.conf
+++ b/R-overlay.conf.others
@@ -20,9 +20,10 @@ LOG_FILE="workdir/log/roverlay.log"
 # directory for cache data
 CACHEDIR="workdir/cache"
 
-# portage directory
-#  used to scan for valid licenses
-PORTDIR="/usr/portage"
+# name of/path to the ebuild executable
+#  optional, but required for importing hand-written ebuilds and
+#  MANIFEST_IMPLEMENTATION=ebuild (see below)
+#EBUILD_PROG="/usr/bin/ebuild"
 
 
 # --- Logging Configuration (optional) ---
@@ -90,6 +91,7 @@ LICENSE_MAP="config/license.map"
 OVERLAY_ECLASS="files/eclass/R-packages.eclass"
 
 # default category for created ebuilds
+#  (usually overridden by package rules)
 #  Defaults to "sci-R".
 #OVERLAY_CATEGORY="sci-R"
 
@@ -112,7 +114,7 @@ DISTDIR_STRATEGY="hardlink symlink"
 #  usually not needed
 #DISTDIR_VERIFY="no"
 
-# distmap compression format (none, bzip2 or gzip)
+# distmap compression format (default, none, bz2, bzip2, gz, gzip, xz)
 #  Defaults to "bzip2".
 #DISTMAP_COMPRESSION="bzip2"
 
@@ -122,11 +124,15 @@ DISTDIR_STRATEGY="hardlink symlink"
 
 # try to read licenses from PORTDIR/licenses
 #  Defaults to "yes".
-#USE_PORTAGE_LICENSES="no"
+USE_PORTAGE_LICENSES="no"
+
+# file that lists all known licenses (one per line)
+#  Defaults to "/licenses".
+LICENSES_FILE="files/licenses"
 
 # create a licenses file after reading portage licenses
 #  Defaults to "yes".
-#CREATE_LICENSES_FILE="no"
+CREATE_LICENSES_FILE="no"
 
 # forbid/allow syncing with remotes
 #  Defaults to "no".
@@ -135,5 +141,6 @@ DISTDIR_STRATEGY="hardlink symlink"
 # Manifest file creation
 #  Available choices are 'next' (internal, fast)
 #  and 'ebuild' (using ebuild(1), slow, but failsafe).
+#  *** 'ebuild' needs a valid EBUILD_PROG ***
 #  Defaults to "next".
 #MANIFEST_IMPLEMENTATION="ebuild"

diff --git a/config/R-overlay.conf.install b/config/R-overlay.conf.install
index 7e84d3f..fc4256d 100644
--- a/config/R-overlay.conf.install
+++ b/config/R-overlay.conf.install
@@ -87,6 +87,7 @@ LICENSE_MAP="/etc/roverlay/license.map"
 OVERLAY_ECLASS="/usr/share/roverlay/eclass/R-packages.eclass"
 
 # default category for created ebuilds
+#  (usually overridden by package rules)
 #  Defaults to "sci-R".
 #OVERLAY_CATEGORY="sci-R"
 
@@ -104,7 +105,7 @@ DISTDIR_STRATEGY="hardlink symlink"
 #  usually not needed
 #DISTDIR_VERIFY="no"
 
-# distmap compression format (none, bzip2 or gzip)
+# distmap compression format (default, none, bz2, bzip2, gz, gzip, xz)
 #  Defaults to "bzip2".
 #DISTMAP_COMPRESSION="bzip2"
 

diff --git a/config/R-overlay.conf.install 
b/config/R-overlay.conf.install.others
similarity index 86%
copy from config/R-overlay.conf.install
copy to config/R-overlay.conf.install.others
index 7e84d3f..e66cc34 100644
--- a/config/R-overlay.conf.install
+++ b/config/R-overlay.conf.install.others
@@ -20,9 +20,10 @@ LOG_FILE="~/roverlay/log/roverlay.log"
 # directory for cache data
 CACHEDIR="~/roverlay/cache"
 
-# portage directory
-#  used to scan for valid licenses
-PORTDIR=&quo

[gentoo-commits] proj/R_overlay:master commit in: /, bin/build/

2014-04-01 Thread André Erdmann
commit: f7b9302ecf014c0699f9114556755a7294ef2974
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Mar 31 17:51:40 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Tue Apr  1 16:36:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f7b9302e

Makefile: $ROVERLAY_TARGET_TYPE

ROVERLAY_TARGET_TYPE controls which files get installed:

when gentoo:
=> config/R-overlay.conf.install
=> no licenses file

when others:
=> config/R-overlay.conf.install.others
=> install files/licenses to $DATADIR/licenses

Also added a "generate-licenses" target for creating files/licenses.

---
 Makefile   | 32 ++--
 bin/build/make-licenses.sh | 53 ++
 2 files changed, 79 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 9a41011..06933f8 100644
--- a/Makefile
+++ b/Makefile
@@ -9,13 +9,16 @@ CONFDIR  := $(DESTDIR)etc
 
 BUILDDIR := ./tmp
 
+ROVERLAY_TARGET_TYPE := gentoo
+
 
 PYMOD_FILE_LIST := ./roverlay_files.list
 
-MANIFEST  := MANIFEST
-MANIFEST_TMP  := $(MANIFEST).tmp
+MANIFEST  := $(CURDIR)/MANIFEST
+LICENSES_FILE := $(CURDIR)/files/licenses
 
 MANIFEST_GEN  := ./bin/build/create_manifest.sh
+LICENSES_GEN  := ./bin/build/make-licenses.sh
 
 RV_SETUP  := ./bin/roverlay-setup
 
@@ -90,10 +93,18 @@ htmldoc: $(SRC_DOCDIR)/rst/usage.rst
 PHONY += generate-doc
 generate-doc: htmldoc
 
+$(MANIFEST): $(MANIFEST_GEN) FORCE
+   $< > $@
+
 PHONY += generate-manifest
-generate-manifest: $(MANIFEST_GEN)
-   $(MANIFEST_GEN) > $(MANIFEST_TMP)
-   mv -- $(MANIFEST_TMP) $(MANIFEST)
+generate-manifest: $(MANIFEST)
+
+$(LICENSES_FILE): $(LICENSES_GEN) FORCE | $(CURDIR)/files
+   $< $@
+
+PHONY += generate-licenses
+generate-licenses: $(CURDIR)/files/licenses
+
 
 
 $(CURDIR)/config/R-overlay.conf.install: $(RV_SETUP) FORCE | $(CURDIR)/config
@@ -133,7 +144,7 @@ generate-config: \
 
 
 PHONY += generate-files
-generate-files: generate-config generate-doc generate-manifest
+generate-files: generate-config generate-doc generate-manifest 
generate-licenses
 
 # creates a src tarball (.tar.bz2)
 #  !!! does not include config files
@@ -167,8 +178,13 @@ install-config-common:
install -m 0644 -t $(CONFDIR)/roverlay \
config/description_fields.conf config/repo.list \
config/package_rules config/hookrc
+ifeq ($(ROVERLAY_TARGET_TYPE),gentoo)
install -m 0644 -T \
config/R-overlay.conf.install $(CONFDIR)/roverlay/R-overlay.conf
+else
+   install -m 0644 -T \
+   config/R-overlay.conf.install.others 
$(CONFDIR)/roverlay/R-overlay.conf
+endif
 
 PHONY += install-config-compressed
 install-config-compressed: install-config-common
@@ -187,9 +203,13 @@ install-config: install-config-common
 PHONY += install-data
 install-data:
install -m 0755 -d \
+   $(DATADIR)/roverlay \
$(DATADIR)/roverlay/shlib $(DATADIR)/roverlay/hooks \
$(DATADIR)/roverlay/eclass $(DATADIR)/roverlay/mako_templates
 
+ifneq ($(ROVERLAY_TARGET_TYPE),gentoo)
+   install -m 0644 -- $(LICENSES_FILE) $(DATADIR)/roverlay/licenses
+endif
install -m 0644 -t $(DATADIR)/roverlay/hooks files/hooks/*.sh
install -m 0644 -t $(DATADIR)/roverlay/shlib files/shlib/*.sh
chmod 0775 $(DATADIR)/roverlay/hooks/mux.sh

diff --git a/bin/build/make-licenses.sh b/bin/build/make-licenses.sh
new file mode 100755
index 000..77ae1d0
--- /dev/null
+++ b/bin/build/make-licenses.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+#  Creates a license list file for roverlay.
+#
+#  Usage: make-licenses [dest_file] [compression]
+#
+#  Environment variables:
+#  * PORTDIR: path to the main tree (= root of the "licenses" dir)
+#
+set -u
+
+die() { echo "${1:-error}" 1>&2; exit ${2:-2}; }
+
+mkmap() {
+   local x
+   # find -type f, ls -1, ...
+   set +f
+   for x in "${PORTDIR}/licenses/"*; do
+  [ ! -f "${x}" ] || echo "${x##*/}"
+   done
+}
+
+mkmap_bz2() { mkmap | bzip2 -c; }
+mkmap_xz()  { mkmap | xz -c; }
+mkmap_gz()  { mkmap | gzip -c; }
+
+get_mkmap_func() {
+   case "${1-}" in
+  '') func=mkmap ;;
+  bz2|xz|gz) func=mkmap_${1} ;;
+  *) die "unknown compression '${1-}'." 64 ;;
+   esac
+}
+
+if [ -z "${PORTDIR-}" ]; then
+   PORTDIR="$(portageq get_repo_path / gentoo)"
+   #PORTDIR="$(portageq get_repo_path $(portageq envvar EROOT) gentoo)"
+   [ -n "${PORTDIR}" ] || PORTDIR="$(portageq envvar PORTDIR)"
+   [ -n "${PORTDIR}" ] || die "failed to get \$PORTDIR"
+fi
+
+case "${1-}" in
+   ''|'-')
+  get_mkmap_func "${2-}" && ${func}
+   ;;
+   *.bz2|*.xz|*.gz)
+  [ -z "${2-}" ] || [ "${2}" = "${1##*.}" ] || die
+  get_mkmap_func "${1##*.}" && ${func} > "${1}"
+   ;;
+   *)
+  get_mkmap_func "${2-}" && ${func} > "${1}"
+   ;;
+esac



[gentoo-commits] proj/R_overlay:master commit in: roverlay/db/

2014-07-16 Thread André Erdmann
commit: 884a230b83741b10217767110916cec869be1c08
Author: André Erdmann  mailerd  de>
AuthorDate: Sun Jul 13 15:43:22 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sun Jul 13 15:43:22 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=884a230b

roverlay/db/distmap.py: use get_distmap_key()

---
 roverlay/db/distmap.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roverlay/db/distmap.py b/roverlay/db/distmap.py
index 76196f8..338c012 100644
--- a/roverlay/db/distmap.py
+++ b/roverlay/db/distmap.py
@@ -318,7 +318,7 @@ class _DistMapBase ( 
roverlay.util.objects.PersistentContent ):
# --- end of gen_info_lines (...) ---
 
def get_distfile_slot ( self, package_dir, p_info ):
-  distfile = p_info ['package_src_destpath']
+  distfile = p_info.get_distmap_key()
   entry= self.get_entry ( distfile )
 
   if entry is None:



[gentoo-commits] proj/R_overlay:master commit in: roverlay/

2014-07-16 Thread André Erdmann
commit: 3a25a91a514bfa52b3df508ecd32558cdc044ba5
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Jun 30 17:42:52 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Jun 30 17:42:52 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=3a25a91a

packageinfo, revbump(): add 'ebuild_only' param

---
 roverlay/packageinfo.py | 43 ---
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py
index 9083d61..a6428d0 100644
--- a/roverlay/packageinfo.py
+++ b/roverlay/packageinfo.py
@@ -606,12 +606,14 @@ class PackageInfo ( roverlay.util.objects.Referenceable ):
   return self.hashdict
# --- end of make_hashes (...) ---
 
-   def revbump ( self, newrev=None ):
+   def revbump ( self, newrev=None, ebuild_only=False ):
   """Do whatever necessary to revbump this pakages, that is set/update
   all data like src_uri_dest and ebuild_verstr.
 
   arguments:
-  * newrev -- new revision, (current rev + 1) is used if this is None
+  * newrev  -- new revision, (current rev + 1) is used if this is None
+  * ebuild_only -- if set and True: revbump the package only,
+   keeping the distfile path as-is
   """
   rev = self._info['rev'] + 1 if newrev is None else int ( newrev )
   rev_str = ( '-r' + str ( rev ) ) if rev > 0 else ''
@@ -619,26 +621,29 @@ class PackageInfo ( roverlay.util.objects.Referenceable ):
  '.'.join ( str ( k ) for k in self._info['version'] ) + rev_str
   )
 
-  # preserve destpath directory
-  #  (this allows to handle paths like "a/b.tar/pkg.tgz" properly)
-  #
-  old_destpath = self ['package_src_destpath'].rpartition ( os.path.sep )
-
-  # os.path.splitext does not "recognize" .tar.gz
-  fhead, ftar, fext = old_destpath[2].rpartition ( '.tar' )
-  if not ftar:
- fhead, fext = os.path.splitext ( fext )
-
-  # FIXME: any way to get this reliably (+faster) done without a regex?
-  #  ( a,b,c=fhead.rpartition ( '-r' ); try int(c) ...; ?)
-  distfile = (
- old_destpath[0] + old_destpath[1]
- + self.EBUILDREV_REGEX.sub ( '', fhead ) + rev_str + ftar + fext
-  )
+  if not ebuild_only:
+ # preserve destpath directory
+ #  (this allows to handle paths like "a/b.tar/pkg.tgz" properly)
+ #
+ old_destpath = self ['package_src_destpath'].rpartition ( os.path.sep 
)
+
+ # os.path.splitext does not "recognize" .tar.gz
+ fhead, ftar, fext = old_destpath[2].rpartition ( '.tar' )
+ if not ftar:
+fhead, fext = os.path.splitext ( fext )
+
+ # FIXME: any way to get this reliably (+faster) done without a regex?
+ #  ( a,b,c=fhead.rpartition ( '-r' ); try int(c) ...; ?)
+ distfile = (
+old_destpath[0] + old_destpath[1]
++ self.EBUILDREV_REGEX.sub ( '', fhead ) + rev_str + ftar + fext
+ )
+
+ self._info ['src_uri_dest']  = distfile
+  # -- end if 
 
   self._info ['rev']   = rev
   self._info ['ebuild_verstr'] = vstr
-  self._info ['src_uri_dest']  = distfile
 
   return self
# --- end of revbump (...) ---



[gentoo-commits] proj/R_overlay:master commit in: /

2014-07-16 Thread André Erdmann
commit: 26bf3116e64fcf19cef6d2ac1e79aec3c41c247c
Author: André Erdmann  mailerd  de>
AuthorDate: Sun Jul 13 15:41:18 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Sun Jul 13 15:41:18 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=26bf3116

roverlay-.ebuild: drop dep on python-argparse

virtual/python-argparse is masked

---
 roverlay-.ebuild | 1 -
 1 file changed, 1 deletion(-)

diff --git a/roverlay-.ebuild b/roverlay-.ebuild
index 290bd51..2b3cacb 100644
--- a/roverlay-.ebuild
+++ b/roverlay-.ebuild
@@ -30,7 +30,6 @@ DEPEND="
compress-config? ( app-arch/bzip2 )"
 RDEPEND="
sys-apps/portage
-   virtual/python-argparse[${PYTHON_USEDEP}]
dev-python/mako[${PYTHON_USEDEP}]
xz? ( $(python_gen_cond_dep 
dev-python/backports-lzma[$(python_gen_usedep python{2_7,3_2})] python{2_7,3_2} 
) )
virtual/python-futures[${PYTHON_USEDEP}]"



[gentoo-commits] proj/R_overlay:master commit in: config/

2014-07-16 Thread André Erdmann
commit: f4531ed9e7d9086f4bb391d93274d276f313aea2
Author: André Erdmann  mailerd  de>
AuthorDate: Mon Jul 14 00:00:14 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Mon Jul 14 00:00:17 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f4531ed9

config/: update license map file

---
 config/license.map | 5 +
 1 file changed, 5 insertions(+)

diff --git a/config/license.map b/config/license.map
index db4c855..deb8ca6 100644
--- a/config/license.map
+++ b/config/license.map
@@ -164,6 +164,11 @@ GPL-2+ {
bsd|gpl|apachelicense
 }
 
+# FIXME: non-versioned
+|| ( GPL-2+ Apache-2.0 ) {
+   gpl|apachelicense2.0
+}
+
 || ( GPL-3+ BSD ) {
gpl|bsd
 }



[gentoo-commits] proj/R_overlay: New branch: wip/addition_control

2014-07-16 Thread André Erdmann
commit: 
Commit: André Erdmann  mailerd  de>
CommitDate: Wed Jul 16 15:14:54 2014 +

New branch: wip/addition_control




[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/abstract/

2014-07-17 Thread André Erdmann
commit: 9b83f08aa38fb713ff4c9fc8c20e9ff4a3fa896d
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 19:11:38 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 19:11:38 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=9b83f08a

package rules: optionally merge acceptor compounds

... of the same type, only AND and OR

OR(a,OR(b,AND(AND,c))) -> OR(a,b,AND(c))

---
 roverlay/packagerules/abstract/acceptors.py | 60 ++---
 1 file changed, 54 insertions(+), 6 deletions(-)

diff --git a/roverlay/packagerules/abstract/acceptors.py 
b/roverlay/packagerules/abstract/acceptors.py
index 7618f43..aafc0e7 100644
--- a/roverlay/packagerules/abstract/acceptors.py
+++ b/roverlay/packagerules/abstract/acceptors.py
@@ -8,12 +8,15 @@
 Classes provided by this module:
 * Acceptor   -- base class for all acceptors
 * ValueMatchAcceptor -- base class for acceptors that compare a value
-* _AcceptorCompound  -- base class combines one more more acceptors
+* _AcceptorCompound  -- base class combines one or more acceptors
  and represents a boolean term
  IOW, they realize a function "[Acceptor] -> Bool"
+* _SelfConsumingAcceptorCompound
+ -- extended _AcceptorCompound that is able to consume
+sub-acceptors of the same type (class)
 * Acceptor_-- specific _AcceptorCompound classes
--> Acceptor_AND
--> Acceptor_OR
+-> Acceptor_AND (self-consuming)
+-> Acceptor_OR  (self-consuming)
 -> Acceptor_XOR1
 -> Acceptor_NOR
 
@@ -55,6 +58,15 @@ class Acceptor ( object ):
   self.logger = logger.getChild ( self.__class__.__name__ )
# --- end of logger (...) ---
 
+   def merge_sub_compounds ( self ):
+  """Recursively consumes sub compounds of the same type (class),
+  without preserving their priority.
+
+  Must be called manually before prepare().
+  """
+  pass
+   # --- end of merge_sub_compounds (...) ---
+
def prepare ( self ):
   """Prepare the Acceptor for usage (typically used after loading
   it from a file).
@@ -121,7 +133,7 @@ class _AcceptorCompound ( Acceptor ):
 
   Raises: EmptyAcceptorError
   """
-  if len ( self._acceptors ) > 0:
+  if self._acceptors:
  for acceptor in self._acceptors:
 acceptor.prepare()
  self._acceptors = roverlay.util.priosort ( self._acceptors )
@@ -165,7 +177,43 @@ class _AcceptorCompound ( Acceptor ):
 # --- end of _AcceptorCompound ---
 
 
-class Acceptor_OR ( _AcceptorCompound ):
+class _SelfConsumingAcceptorCompound ( _AcceptorCompound ):
+
+   def merge_sub_compounds ( self ):
+  """Recursively consumes sub compounds of the same type (class),
+  without preserving their priority.
+
+  Must be called manually before prepare().
+  """
+  if not self._acceptors:
+ return
+
+  acceptors = []
+  append_acceptor   = acceptors.append
+  my_cls= self.__class__
+  anything_to_merge = False
+
+  for acceptor in self._acceptors:
+ acceptor.merge_sub_compounds()
+
+ if acceptor.__class__ == my_cls:
+# ^ must exactly match, no hasattr() etc
+for acceptor_to_merge in acceptor._acceptors:
+   anything_to_merge = True
+   append_acceptor ( acceptor_to_merge )
+# --
+ else:
+append_acceptor ( acceptor )
+  # --
+
+  if anything_to_merge:
+ self._acceptors = acceptors
+   # --- end of merge_sub_compounds (...) ---
+
+# --- end of _SelfConsumingAcceptorCompound ---
+
+
+class Acceptor_OR ( _SelfConsumingAcceptorCompound ):
"""OR(  )"""
 
def accepts ( self, p_info ):
@@ -183,7 +231,7 @@ class Acceptor_OR ( _AcceptorCompound ):
 # --- end of Acceptor_OR ---
 
 
-class Acceptor_AND ( _AcceptorCompound ):
+class Acceptor_AND ( _SelfConsumingAcceptorCompound ):
"""AND(  )"""
 
def accepts ( self, p_info ):



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/util/portage_regex/

2014-07-17 Thread André Erdmann
commit: a8fe98e1b2f71d53585f90eb6b33c1c152a18a3b
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 16:24:42 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 16:24:42 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=a8fe98e1

roverlay/util/portage_regex: ebuild file path regex

---
 roverlay/util/portage_regex/default.py  | 33 +
 roverlay/util/portage_regex/wildcard.py |  2 ++
 2 files changed, 35 insertions(+)

diff --git a/roverlay/util/portage_regex/default.py 
b/roverlay/util/portage_regex/default.py
index a8d032a..bba472e 100644
--- a/roverlay/util/portage_regex/default.py
+++ b/roverlay/util/portage_regex/default.py
@@ -134,6 +134,20 @@ FMT_PAT_PF   = r'(?P{pn}(?:[-]{pvr})?)'
 FMT_PAT_CATEGORY = r'(?P{category_name})'
 FMT_PAT_PACKAGE  = r'(?:{category}[/])?{pf}'
 
+FMT_PAT_PACKAGE_DIR_FILE = (
+   '(?P.*?[/])?'
+   '(?P<{relpath_name}>'
+  '{category}[/]'
+ '(?P{package_name})[/]'
+'{pat_file}'
+   ')'
+)
+FMT_PAT_EBUILD_FILENAME = (
+   "(?P{pf}(?P[.]ebuild))"
+)
+
+
+
 PAT_PVR = FMT_PAT_PVR.format (
version   = PAT_DEP_ATOM_VERSION,
version_suffixes  = PAT_A_DEP_ATOM_VERSION_SUFFIXES,
@@ -146,6 +160,23 @@ PAT_CATEGORY = FMT_PAT_CATEGORY.format ( 
category_name=PAT_A_CATEGORY_NAME )
 PAT_PACKAGE  = FMT_PAT_PACKAGE.format ( category=PAT_CATEGORY, pf=PAT_PF )
 
 
+def format_package_dir_file_pattern (
+   relpath_name, pat_file,
+   category = PAT_CATEGORY,
+   package_name = PAT_A_PACKAGE_NAME,
+):
+   return FMT_PAT_PACKAGE_DIR_FILE.format (
+  pat_file = pat_file,
+  category = category,
+  relpath_name = relpath_name,
+  package_name = package_name,
+   )
+# --- end of format_package_dir_file_pattern (...) ---
+
+PAT_PACKAGE_EBUILD_FILE = format_package_dir_file_pattern (
+   "ebuild_relpath", FMT_PAT_EBUILD_FILENAME.format ( pf=PAT_PF )
+)
+
 
 
 ## FIXME:
@@ -308,6 +339,7 @@ RE_PVR = MultiRegexProxy.compile_exact ( PAT_PVR )
 RE_PN  = MultiRegexProxy.compile_exact ( PAT_PN )
 RE_PF  = MultiRegexProxy.compile_exact ( PAT_PF )
 RE_PACKAGE = MultiRegexProxy.compile_exact ( PAT_PACKAGE )
+RE_PACKAGE_EBUILD_FILE =  MultiRegexProxy.compile_exact ( 
PAT_PACKAGE_EBUILD_FILE )
 
 ##RE_DEP_ATOM = MultiRegexProxy.compile_exact ( PAT_DEP_ATOM )
 ##RE_DEP_ATOM_USEFLAG = MultiRegexProxy.compile ( PAT_DEP_ATOM_USEFLAG )
@@ -330,3 +362,4 @@ def regex_main ( re_obj, pattern_list ):
 if __name__ == '__main__':
import sys
regex_main ( RE_PACKAGE, sys.argv[1:] )
+   regex_main ( RE_PACKAGE_EBUILD_FILE, sys.argv[1:] )

diff --git a/roverlay/util/portage_regex/wildcard.py 
b/roverlay/util/portage_regex/wildcard.py
index bd5b770..5aa9ffc 100644
--- a/roverlay/util/portage_regex/wildcard.py
+++ b/roverlay/util/portage_regex/wildcard.py
@@ -51,6 +51,8 @@ PAT_WILDCARD_PACKAGE = pre_default.FMT_PAT_PACKAGE.format (
pf   = PAT_WILDCARD_PF
 )
 
+
+
 RE_WILDCARD_CATEGORY = pre_default.MultiRegexProxy.compile_exact (
   PAT_WILDCARD_CATEGORY
 )



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/

2014-07-17 Thread André Erdmann
commit: 862594b151befc3ac3e1766df370890c8af88470
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 16:26:32 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 16:26:32 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=862594b1

add-policy rule-gen: implement token generatorion

---
 .../packagerules/generators/addition_control.py| 883 +++--
 1 file changed, 279 insertions(+), 604 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py 
b/roverlay/packagerules/generators/addition_control.py
index 73040e0..7f2cc95 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -1,684 +1,342 @@
-# R overlay -- package rule generators, addition control
+# R overlay -- abstract package rule generators, addition control
 # -*- coding: utf-8 -*-
 # Copyright (C) 2014 André Erdmann 
 # Distributed under the terms of the GNU General Public License;
 # either version 2 of the License, or (at your option) any later version.
 
 from __future__ import absolute_import
-# temporary_demo_func():
-from __future__ import print_function
 
 
 import abc
-# __metaclass__/metaclass= workaround
-_AbstractObject = abc.ABCMeta ( str("AbstractObject"), ( object, ), {} )
-
 import collections
+import fnmatch
+import re
+
+
+import roverlay.packagerules.generators.abstract.addition_control
 
-#~ import roverlay.util.fileio
-import roverlay.util.namespace
-#~
 import roverlay.packagerules.abstract.acceptors
-import roverlay.packagerules.abstract.rules
-#~ import roverlay.packagerules.acceptors.stringmatch
-#~ import roverlay.packagerules.acceptors.util
-import roverlay.packagerules.acceptors.trivial
-import roverlay.packagerules.actions.addition_control
-#~
-#~ from roverlay.packagerules.abstract.rules import (
-   #~ NestedPackageRule, PackageRule
-#~ )
-#~
-#~ from roverlay.packagerules.acceptors.stringmatch (
-   #~ NocaseStringAcceptor, StringAcceptor,
-   #~ RegexAcceptor, ExactRegexAcceptor
-#~ )
-#~
-#~ from roverlay.packagerules.acceptors.util import (
-   #~ get_package, get_package_name, get_ebuild_name, get_category,
-   #~ DEFAULT_CATEGORY_REPLACEMENT
-#~ )
-
-import roverlay.overlay.abccontrol
-from roverlay.overlay.abccontrol import AdditionControlResult
-
-
-# converting addition-control lists (cmdline, from file...) to rule objects,
-# hacky solution:
-#
-# ** step 1 ** -- collect category/package tokens, determine bitmask
-#
-#  create a dict (
-# category_token|True => package_token|True => bitmask
-# ^~~~^^~^
-#   "acceptor chain""add-policy"
-#  )
-#
-#   "True" means "accept all".
-#
-#   make sure that the tokens get de-duped
-#(normalize values, use tuples (or namespace))
-#
-#   Only the first and the last step need to know *what* category/package
-#   tokens are. All intermediate steps should not need to care about this.
-#
-
-
-
-class AbstractAdditionControlPackageRuleGenerator ( _AbstractObject ):
-   """(Abstract) object that takes cmdline/files as input and creates
-   add-policy package rules."""
-
-   # Note that tokens are not totally abstract,
-   #  the "match-all" (True) token is hardcoded
-
-   #CategoryToken = collections.namedtuple ( 'CategoryToken', '*' )
-   #PackageToken  = collections.namedtuple ( 'PackageToken',  '*' )
-
-   @abc.abstractmethod
-   def category_token_to_acceptor ( self, category_token, priority ):
-  """Creates a package rule acceptor for the given category token.
+import roverlay.packagerules.acceptors.stringmatch
+import roverlay.packagerules.acceptors.util
 
-  Returns: not-None acceptor (or nested acceptor)
 
-  Must not return None.
-  If a token is meaningless, then don't create it in the first place.
+from roverlay.packagerules.abstract.acceptors import Acceptor_AND
 
-  arguments:
-  * category_token -- a category token
-  * priority   -- priority of the acceptor (int)
-  """
-  raise NotImplementedError()
-   # --- end of category_token_to_acceptor (...) ---
+from roverlay.packagerules.acceptors.stringmatch import (
+   StringAcceptor, ExactRegexAcceptor,
+)
 
-   @abc.abstractmethod
-   def package_token_to_acceptor ( self, package_token, priority ):
-  """Creates a package rule acceptor for the given package token.
+from roverlay.packagerules.acceptors.util import (
+   get_category, get_ebuild_name, get_ebuild_version_tuple,
+)
 
-  Returns: not-None acceptor (or nested acceptor)
+#import roverlay.util.fileio
+import roverlay.util.namespace
 
-  arguments:
-  * package_token -- a package token
-  * priori

[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/

2014-07-17 Thread André Erdmann
commit: 3a7fd984632e964003802b81456eb51ecbb97b10
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 16:38:09 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 16:38:09 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=3a7fd984

remove SillyAdditionControlPackageRuleGenerator

replaced by AdditionControlPackageRuleGenerator

---
 .../packagerules/generators/addition_control.py| 27 +-
 1 file changed, 1 insertion(+), 26 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py 
b/roverlay/packagerules/generators/addition_control.py
index 7f2cc95..0021817 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -333,37 +333,12 @@ class AdditionControlPackageRuleGenerator (
 return combined_acceptor
# --- end of package_token_to_acceptor (...) ---
 
-
-class SillyAdditionControlPackageRuleGenerator (
-   roverlay.packagerules.generators.abstract.addition_control.\
-  AbstractAdditionControlPackageRuleGenerator
-):
-   """
-   An add-policy package rule generator that doesn't care about its tokens.
-
-   Not useful for productive usage - will be removed as soon as a proper
-   rule generator has been implemented.
-   """
-
-   def __init__ ( self ):
-  super ( SillyAdditionControlPackageRuleGenerator, self ).__init__()
-  self.namespace = roverlay.util.namespace.SimpleNamespace()
-
-   def _get_true_acceptor_from_namespace ( self, any_token, priority ):
-  return self.namespace.get_object_v (
- roverlay.packagerules.acceptors.trivial.TrueAcceptor,
- ( priority, ),
- {}
-  )
-
-   category_token_to_acceptor = _get_true_acceptor_from_namespace
-   package_token_to_acceptor  = _get_true_acceptor_from_namespace
+# --- end of AdditionControlPackageRuleGenerator ---
 
 
 
 
 def temporary_demo_func():
-   #rule_generator = SillyAdditionControlPackageRuleGenerator()
ARES   = AdditionControlResult
rule_generator = AdditionControlPackageRuleGenerator("sci-R")
CTOKEN = rule_generator.create_category_token



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/abstract/, roverlay/overlay/

2014-07-17 Thread André Erdmann
commit: cb4e5da33258de923cde12daab45b9f956179c33
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 16:32:47 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 16:32:47 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=cb4e5da3

add-policy package rule gen: properly set rule prio

---
 roverlay/overlay/abccontrol.py| 10 ++
 roverlay/packagerules/generators/abstract/addition_control.py |  5 -
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/roverlay/overlay/abccontrol.py b/roverlay/overlay/abccontrol.py
index 7611e1c..364a083 100644
--- a/roverlay/overlay/abccontrol.py
+++ b/roverlay/overlay/abccontrol.py
@@ -95,6 +95,16 @@ class AdditionControlResult ( object ):
 #
 
@classmethod
+   def get_reversed_sort_key ( cls, k ):
+  return (-1) * ( k or cls.PKG_ALL )
+   # --- end of get_reversed_sort_key (...) ---
+
+   @classmethod
+   def get_sort_key ( cls, k ):
+  return ( k or cls.PKG_ALL )
+   # --- end of get_sort_key (...) ---
+
+   @classmethod
def get_effective_package_policy ( cls, pkg_policy ):
   # hardcoded for now
 

diff --git a/roverlay/packagerules/generators/abstract/addition_control.py 
b/roverlay/packagerules/generators/abstract/addition_control.py
index 34b5a88..9f12ad0 100644
--- a/roverlay/packagerules/generators/abstract/addition_control.py
+++ b/roverlay/packagerules/generators/abstract/addition_control.py
@@ -617,7 +617,10 @@ def create_package_rules (
   and_acceptor= roverlay.packagerules.abstract.acceptors.Acceptor_AND 
(0)
   and_acceptor.add_acceptor ( actual_acceptor )
 
-  rule = roverlay.packagerules.abstract.rules.PackageRule ( priority=emask 
)
+  rule = roverlay.packagerules.abstract.rules.PackageRule (
+ # top-priority action should be applied last
+ priority = AdditionControlResult.get_reversed_sort_key ( emask )
+  )
 
   rule.set_acceptor ( and_acceptor )
 



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/util/portage_regex/

2014-07-17 Thread André Erdmann
commit: 96e05b63f98d71393e593c6194e2218b6f37abcb
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 13:54:27 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 13:54:27 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=96e05b63

util/portage_regex: add wildcard module

matches package strings (CATEGORY/PF, PF, P, PN, PV, PVR, ...) containing
wildcard characters, e.g. "sys-*/a*-5.*-r1?".

---
 roverlay/util/portage_regex/wildcard.py | 75 +
 1 file changed, 75 insertions(+)

diff --git a/roverlay/util/portage_regex/wildcard.py 
b/roverlay/util/portage_regex/wildcard.py
new file mode 100644
index 000..fd6308f
--- /dev/null
+++ b/roverlay/util/portage_regex/wildcard.py
@@ -0,0 +1,75 @@
+# R overlay -- roverlay package, util, portage regex - wildcard
+# -*- coding: utf-8 -*-
+# Copyright (C) 2014 André Erdmann 
+# Distributed under the terms of the GNU General Public License;
+# either version 2 of the License, or (at your option) any later version.
+
+import roverlay.util.portage_regex.default as pre_default
+#from . import default as pre_default
+
+
+PAT_WILDCARD_PACKAGE_NAME = pre_default.FMT_PAT_A_PACKAGE_NAME.format (
+   a=r'a-zA-Z+*?', b=r'0-9', c=r'-_'
+)
+PAT_WILDCARD_CATEGORY_NAME = pre_default.FMT_PAT_A_CATEGORY_NAME.format (
+   r'a-zA-Z+0-9*?', r'\-_'
+)
+
+PAT_WILDCARD_DOT_DIGITS = pre_default.FMT_PAT_DOT_DIGITS.format ( '0-9*?', '.' 
)
+PAT_WILDCARD_VERSION= (
+   # no wildcard support for the optional a-zA-Z at the end of the str
+   r'(?P{}[a-zA-Z]?)'.format ( PAT_WILDCARD_DOT_DIGITS )
+)
+##PAT_WILDCARD_VSUFFIX= 
+##   (using PAT_A_DEP_ATOM_VERSION_SUFFIXES,
+##which may or may not work)
+
+PAT_WILDCARD_REVISION   = r'(?:r(?P[0-9*?]+))'
+
+
+PAT_WILDCARD_PVR = pre_default.FMT_PAT_PVR.format (
+   version  = PAT_WILDCARD_VERSION,
+   version_suffixes = pre_default.PAT_A_DEP_ATOM_VERSION_SUFFIXES,
+   revision = PAT_WILDCARD_REVISION,
+)
+
+PAT_WILDCARD_PN = pre_default.FMT_PAT_PN.format (
+   package_name = PAT_WILDCARD_PACKAGE_NAME,
+)
+
+PAT_WILDCARD_PF  = pre_default.FMT_PAT_PF.format (
+   pn  = PAT_WILDCARD_PN,
+   pvr = PAT_WILDCARD_PVR,
+)
+
+PAT_WILDCARD_CATEGORY = pre_default.FMT_PAT_CATEGORY.format (
+   category_name = PAT_WILDCARD_CATEGORY_NAME
+)
+
+PAT_WILDCARD_PACKAGE = pre_default.FMT_PAT_PACKAGE.format (
+   category = PAT_WILDCARD_CATEGORY,
+   pf   = PAT_WILDCARD_PF
+)
+
+RE_WILDCARD_CATEGORY = pre_default.MultiRegexProxy.compile_exact (
+  PAT_WILDCARD_CATEGORY
+)
+RE_WILDCARD_PACKAGE  = pre_default.MultiRegexProxy.compile_exact (
+   PAT_WILDCARD_PACKAGE
+)
+
+
+if __name__ == '__main__':
+   import sys
+
+   for s in sys.argv[1:]:
+  match = RE_WILDCARD_PACKAGE.match(s)
+  k,h,x = s.partition("/")
+  if h:
+ print(k,RE_WILDCARD_CATEGORY.match(k),PAT_WILDCARD_CATEGORY)
+
+
+  if match:
+ print ( "{!s} : {!s}".format ( s, match.groupdict() ) )
+  else:
+ print ( "{!s} not matched".format ( s ) )



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/acceptors/

2014-07-17 Thread André Erdmann
commit: 02c90a7d75af7723b63448452dee234ac7b25880
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 16:23:36 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 16:23:36 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=02c90a7d

package rules, exact regex acceptor: fix gen_str()

minor output enhancement

---
 roverlay/packagerules/acceptors/stringmatch.py | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/roverlay/packagerules/acceptors/stringmatch.py 
b/roverlay/packagerules/acceptors/stringmatch.py
index b6007b6..3fe63b4 100644
--- a/roverlay/packagerules/acceptors/stringmatch.py
+++ b/roverlay/packagerules/acceptors/stringmatch.py
@@ -140,9 +140,12 @@ class ExactRegexAcceptor ( RegexAcceptor ):
# --- end of _matches (...) ---
 
def gen_str ( self, level, match_level ):
+  # self._regex.pattern is prefixed/suffixed with '^'/'$',
+  #  print regex-match operator, not exact-regex-match
+  #
   yield (
  self._get_gen_str_indent ( level, match_level )
- + self._get_value_name() + ' ~= ' + self._regex.pattern
+ + self._get_value_name() + ' ~ ' + self._regex.pattern
   )
# --- end of gen_str (...) ---
 



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/abstract/

2014-07-17 Thread André Erdmann
commit: 5b752726ad7a64f9c693bb793b1d5da89ab1f760
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 16:25:39 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 16:25:39 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=5b752726

mv roverlay/packagerules/generators/* -> abstract/

---
 .../packagerules/generators/abstract/__init__.py   |   5 +
 .../generators/abstract/addition_control.py| 665 +
 roverlay/packagerules/generators/abstract/base.py  |  15 +
 3 files changed, 685 insertions(+)

diff --git a/roverlay/packagerules/generators/abstract/__init__.py 
b/roverlay/packagerules/generators/abstract/__init__.py
new file mode 100644
index 000..9da316d
--- /dev/null
+++ b/roverlay/packagerules/generators/abstract/__init__.py
@@ -0,0 +1,5 @@
+# R overlay -- abstract package rule generators
+# -*- coding: utf-8 -*-
+# Copyright (C) 2014 André Erdmann 
+# Distributed under the terms of the GNU General Public License;
+# either version 2 of the License, or (at your option) any later version.

diff --git a/roverlay/packagerules/generators/abstract/addition_control.py 
b/roverlay/packagerules/generators/abstract/addition_control.py
new file mode 100644
index 000..34b5a88
--- /dev/null
+++ b/roverlay/packagerules/generators/abstract/addition_control.py
@@ -0,0 +1,665 @@
+# R overlay -- abstract package rule generators, addition control
+# -*- coding: utf-8 -*-
+# Copyright (C) 2014 André Erdmann 
+# Distributed under the terms of the GNU General Public License;
+# either version 2 of the License, or (at your option) any later version.
+
+
+import abc
+
+
+import roverlay.packagerules.generators.abstract.base
+
+import roverlay.packagerules.abstract.acceptors
+import roverlay.packagerules.abstract.rules
+import roverlay.packagerules.acceptors.trivial
+import roverlay.packagerules.actions.addition_control
+
+
+import roverlay.overlay.abccontrol
+from roverlay.overlay.abccontrol import AdditionControlResult
+
+
+# converting addition-control lists (cmdline, from file...) to rule objects,
+# hacky solution:
+#
+# ** step 1 ** -- collect category/package tokens, determine bitmask
+#
+#  create a dict (
+# category_token|True => package_token|True => bitmask
+# ^~~~^^~^
+#   "acceptor chain""add-policy"
+#  )
+#
+#   "True" means "accept all".
+#
+#   make sure that the tokens get de-duped
+#(normalize values, use tuples (or namespace))
+#
+#   Only the first and the last step need to know *what* category/package
+#   tokens are. All intermediate steps should not need to care about this.
+#
+
+class AbstractAdditionControlPackageRuleGenerator (
+   roverlay.packagerules.generators.abstract.base.AbstractPackageRuleGenerator
+):
+   """(Abstract) object that takes cmdline/files as input and creates
+   add-policy package rules."""
+
+   # Note that tokens are not totally abstract,
+   #  the "match-all" (True) token is hardcoded
+
+   #CategoryToken = collections.namedtuple ( 'CategoryToken', '*' )
+   #PackageToken  = collections.namedtuple ( 'PackageToken',  '*' )
+
+   @abc.abstractmethod
+   def category_token_to_acceptor ( self, category_token, priority ):
+  """Creates a package rule acceptor for the given category token.
+
+  Returns: not-None acceptor (or nested acceptor)
+
+  Must not return None.
+  If a token is meaningless, then don't create it in the first place.
+
+  arguments:
+  * category_token -- a category token
+  * priority   -- priority of the acceptor (int)
+  """
+  raise NotImplementedError()
+   # --- end of category_token_to_acceptor (...) ---
+
+   @abc.abstractmethod
+   def package_token_to_acceptor ( self, package_token, priority ):
+  """Creates a package rule acceptor for the given package token.
+
+  Returns: not-None acceptor (or nested acceptor)
+
+  arguments:
+  * package_token -- a package token
+  * priority  -- priority of the acceptor (int)
+  """
+  raise NotImplementedError()
+   # --- end of package_token_to_acceptor (...) ---
+
+   def create_package_rules ( self, reduced_bitmask_acceptor_chain_map ):
+  """Creates a nested add-policy package rule object.
+  The rule object's priority has to be set manually afterwards.
+
+  Returns: (nested) package rule or None
+  """
+  # create_package_rules() is defined/implemented below (step 5)
+  return create_package_rules (
+ reduced_bitmask_acceptor_chain_map,
+ convert_category_token_to_acceptor = self.category_token_to_acceptor,
+ convert_package_token_to_a

[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/overlay/

2014-07-17 Thread André Erdmann
commit: 093b182951ad7ab6eb7e519061c7b95dc218aacb
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 19:14:21 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 19:14:21 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=093b1829

overlay/abccontrol: convert_str()

---
 roverlay/overlay/abccontrol.py | 42 +++---
 1 file changed, 31 insertions(+), 11 deletions(-)

diff --git a/roverlay/overlay/abccontrol.py b/roverlay/overlay/abccontrol.py
index 364a083..d031eec 100644
--- a/roverlay/overlay/abccontrol.py
+++ b/roverlay/overlay/abccontrol.py
@@ -82,17 +82,37 @@ class AdditionControlResult ( object ):
) = _gen_bits(5)
 
 
-#   PKG_DESCRIPTION_MAP  = {
-#  PKG_FORCE_DENY   : 'force-deny',
-#  PKG_DENY_REPLACE : 'deny-replace',
-#  PKG_FORCE_REPLACE: 'force-replace',
-#  PKG_REPLACE_ONLY : 'replace-only',
-#  PKG_REVBUMP_ON_COLLISION : 'revbump-on-collision',
-#  PKG_DEFAULT_BEHAVIOR : 'default',
-#   }
-#
-#   PKG_DESCRIPTION_REVMAP   = { v: k for k,v in PKG_DESCRIPTION_MAP.items() }
-#
+   PKG_DESCRIPTION_MAP  = {
+  PKG_FORCE_DENY   : 'force-deny',
+  PKG_DENY_REPLACE : 'deny-replace',
+  PKG_FORCE_REPLACE: 'force-replace',
+  PKG_REPLACE_ONLY : 'replace-only',
+  PKG_REVBUMP_ON_COLLISION : 'revbump-on-collision',
+  PKG_DEFAULT_BEHAVIOR : 'default',
+   }
+
+   PKG_DESCRIPTION_REVMAP   = { v: k for k,v in PKG_DESCRIPTION_MAP.items() }
+
+   @classmethod
+   def convert_str ( cls, s ):
+  desc_rmap = cls.PKG_DESCRIPTION_REVMAP
+
+  if not s:
+ raise ValueError ( "str must not be empty." )
+
+  bitmask = 0
+
+  for arg in filter ( None, s.strip().lower().split(",") ):
+ # ^ strip(),lower(),split() ...
+ print(arg)
+ try:
+bitmask |= desc_rmap [arg]
+ except KeyError:
+raise ValueError ( arg )
+  # -- end for
+
+  return bitmask
+   # --- end of convert_str (...) ---
 
@classmethod
def get_reversed_sort_key ( cls, k ):



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/, roverlay/util/portage_regex/, roverlay/overlay/pkgdir/, ...

2014-07-17 Thread André Erdmann
commit: eb00ed0ad07d6453475b1ddbf0c9da641983c5d0
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 13:53:22 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 13:53:22 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=eb00ed0a

use regex for PF/PN/PVR parsing

add && use regex.py from branch feature/webgui

---
 roverlay/overlay/creator.py|  33 ++-
 roverlay/overlay/pkgdir/packagedir_base.py |  61 --
 roverlay/overlay/root.py   |   4 +
 roverlay/packageinfo.py|  60 --
 roverlay/util/portage_regex/__init__.py|   7 +
 roverlay/util/portage_regex/default.py | 331 +
 6 files changed, 448 insertions(+), 48 deletions(-)

diff --git a/roverlay/overlay/creator.py b/roverlay/overlay/creator.py
index d38a7af..50ae68b 100644
--- a/roverlay/overlay/creator.py
+++ b/roverlay/overlay/creator.py
@@ -24,23 +24,44 @@ except ImportError:
import Queue as queue
 
 
-from roverlayimport config, errorqueue
-
-from roverlay.overlay.root   import Overlay
-from roverlay.overlay.worker import OverlayWorker
-from roverlay.packageinfoimport PackageInfo
-from roverlay.packagerules.rules import PackageRules
 
+import roverlay.config
+import roverlay.errorqueue
+import roverlay.packageinfo
 
 import roverlay.depres.channels
+
 import roverlay.ebuild.creation
+
+import roverlay.overlay.root
+import roverlay.overlay.worker
 import roverlay.overlay.rulegen
 import roverlay.overlay.pkgdir.distroot.static
+
+import roverlay.packagerules.rules
+import roverlay.packagerules.generators.addition_control
+
+
 import roverlay.recipe.distmap
 import roverlay.recipe.easyresolver
+
 import roverlay.stats.collector
+
 import roverlay.util.hashpool
 
+
+from roverlayimport config, errorqueue
+
+from roverlay.overlay.root   import Overlay
+from roverlay.overlay.worker import OverlayWorker
+from roverlay.packageinfoimport PackageInfo
+from roverlay.packagerules.rules import PackageRules
+
+
+
+
+
+
 class OverlayCreator ( object ):
"""This is a 'R packages -> Overlay' interface."""
 

diff --git a/roverlay/overlay/pkgdir/packagedir_base.py 
b/roverlay/overlay/pkgdir/packagedir_base.py
index 1acde04..c0c6dd6 100644
--- a/roverlay/overlay/pkgdir/packagedir_base.py
+++ b/roverlay/overlay/pkgdir/packagedir_base.py
@@ -25,6 +25,8 @@ import weakref
 import roverlay.config
 import roverlay.packageinfo
 import roverlay.util
+import roverlay.util.portage_regex
+from roverlay.util.portage_regex import RE_PF
 
 import roverlay.recipe.distmap
 
@@ -681,41 +683,54 @@ class PackageDirBase ( 
roverlay.overlay.base.OverlayObject ):
   def scan_ebuilds():
  """Searches for ebuilds in self.physical_location."""
  elen = len ( self.__class__.EBUILD_SUFFIX )
- def ebuild_split_pvr ( _file ):
-if _file.endswith ( self.__class__.EBUILD_SUFFIX ):
-   return _file [ : - elen ].split ( '-', 1 )
-else:
-   return ( None, None )
- # --- end of is_ebuild (...) ---
 
  # assuming that self.physical_location exists
  #  (should be verified by category.py:Category)
  for f in os.listdir ( self.physical_location ):
-try:
-   # filename without suffix ~= ${PF} := ${PN}-${PVR}
-   pn, pvr = ebuild_split_pvr ( f )
-   if pn is None:
-  # not an ebuild
-  pass
-   elif pn == self.name:
-  yield ( pvr, self.physical_location + os.sep + f )
+if f.endswith ( self.__class__.EBUILD_SUFFIX ):
+   match = RE_PF.match ( f[:-elen] )
+   if match:
+  match_vars = match.groupdict()
+
+  if match_vars ['PN'] == self.name:
+ #assert self.name
+
+ # COULDFIX: yield more match vars, e.g. PV,PR
+ #currently, PackageInfo._use_pvr()
+ #does a second regex.match to get these vars
+ #
+ yield (
+match_vars ['PVR'],
+( self.physical_location + os.sep + f )
+ )
+
+  elif not match_vars ['PN']:
+ self.logger.warning ( "{!r}: empty PN?".format(f) )
+
+  else:
+ # $PN does not match directory name, warn about that
+ self.logger.warning (
+(
+   'PN {!r} does not match directory name, '
+   'ignoring {!r}.'.format ( pn, f )
+

[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/parser/context/, roverlay/packagerules/acceptors/, ...

2014-07-17 Thread André Erdmann
commit: 160534995aad8623f278485047ee67303daf5b60
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 14:14:31 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 14:14:31 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=16053499

package rules: add "version" match keyword

---
 doc/rst/usage.rst |  9 +
 roverlay/packagerules/acceptors/util.py   | 12 
 roverlay/packagerules/parser/context/match.py |  3 +++
 3 files changed, 24 insertions(+)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index ffa690b..f841f36 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -1819,6 +1819,15 @@ These *match keywords* are recognized:
+---+--+--+
| name  | *implicit*   | *alias to ebuild_name*   |
+---+--+--+
+   | version   | *implicit*   | ebuild version ``${PV}`` |
+   |   |  |  |
+   |   |  | To be exact, matches the ebuild  |
+   |   |  | version with revision ``-rN``|
+   |   |  | (``${PVR}``). ``-r0`` gets always|
+   |   |  | omitted and all packages are |
+   |   |  | initially ``-r0``, so  *version* |
+   |   |  | effectively matches ``${PV}``.   |
+   +---+--+--+
| category  | exact-string | the package's overlay category,  |
|   |  | which is unknown (represented by |
|   |  | ``@default``) unless it has been set |

diff --git a/roverlay/packagerules/acceptors/util.py 
b/roverlay/packagerules/acceptors/util.py
index e3b62cd..6b8e472 100644
--- a/roverlay/packagerules/acceptors/util.py
+++ b/roverlay/packagerules/acceptors/util.py
@@ -30,3 +30,15 @@ def get_ebuild_name ( p_info ):
 def get_category ( p_info ):
return p_info.get ( 'category', None ) or DEFAULT_CATEGORY_REPLACEMENT
 # --- end of get_category (...) ---
+
+def get_ebuild_version_tuple ( p_info ):
+   return p_info ['version']
+# --- end of get_ebuild_version_tuple (...) ---
+
+def get_ebuild_version ( p_info ):
+   return p_info ['ebuild_verstr']
+# --- end of get_ebuild_version (...) ---
+
+
+get_ebuild_version_tuple.func_name = "version"
+get_ebuild_version.func_name   = "version"

diff --git a/roverlay/packagerules/parser/context/match.py 
b/roverlay/packagerules/parser/context/match.py
index 8eab9bb..577c1cf 100644
--- a/roverlay/packagerules/parser/context/match.py
+++ b/roverlay/packagerules/parser/context/match.py
@@ -138,6 +138,9 @@ class RuleMatchContext (
   'ebuild_name' : (
  None, roverlay.packagerules.acceptors.util.get_ebuild_name,
   ),
+  'version' : (
+ None, roverlay.packagerules.acceptors.util.get_ebuild_version,
+  ),
}
 
def __init__ ( self, namespace, level=0, bool_type=None, priority=-1 ):



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/util/portage_regex/

2014-07-17 Thread André Erdmann
commit: 352422106f5005c07704f3a00d10ae60d94cc64f
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 14:04:09 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 14:04:09 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=35242210

roverlay/util/portage_regex: small cleanup/fix

---
 roverlay/util/portage_regex/default.py  | 17 +
 roverlay/util/portage_regex/wildcard.py | 13 +
 2 files changed, 10 insertions(+), 20 deletions(-)

diff --git a/roverlay/util/portage_regex/default.py 
b/roverlay/util/portage_regex/default.py
index fcaee68..a8d032a 100644
--- a/roverlay/util/portage_regex/default.py
+++ b/roverlay/util/portage_regex/default.py
@@ -64,7 +64,7 @@ PAT_DEP_ATOM_USE = (
 )
 
 
-_FMT_PAT_01_WORD = r'(?:[{0}][{0}{1}]*)[{0}]'
+_FMT_PAT_01_WORD = r'(?:[{0}][{0}{1}]*)?[{0}]'
 
 
 
@@ -317,15 +317,16 @@ RE_PACKAGE = MultiRegexProxy.compile_exact ( PAT_PACKAGE )
 ##)
 
 
-
-
-if __name__ == '__main__':
-   import sys
-
-   for s in sys.argv[1:]:
-  match = RE_PACKAGE.match(s)
+def regex_main ( re_obj, pattern_list ):
+   for s in pattern_list:
+  match = re_obj.match ( s )
 
   if match:
  print ( "{!s} : {!s}".format ( s, match.groupdict() ) )
   else:
  print ( "{!s} not matched".format ( s ) )
+# --- end of regex_main (...) ---
+
+if __name__ == '__main__':
+   import sys
+   regex_main ( RE_PACKAGE, sys.argv[1:] )

diff --git a/roverlay/util/portage_regex/wildcard.py 
b/roverlay/util/portage_regex/wildcard.py
index fd6308f..bd5b770 100644
--- a/roverlay/util/portage_regex/wildcard.py
+++ b/roverlay/util/portage_regex/wildcard.py
@@ -61,15 +61,4 @@ RE_WILDCARD_PACKAGE  = 
pre_default.MultiRegexProxy.compile_exact (
 
 if __name__ == '__main__':
import sys
-
-   for s in sys.argv[1:]:
-  match = RE_WILDCARD_PACKAGE.match(s)
-  k,h,x = s.partition("/")
-  if h:
- print(k,RE_WILDCARD_CATEGORY.match(k),PAT_WILDCARD_CATEGORY)
-
-
-  if match:
- print ( "{!s} : {!s}".format ( s, match.groupdict() ) )
-  else:
- print ( "{!s} not matched".format ( s ) )
+   pre_default.regex_main ( RE_WILDCARD_PACKAGE, sys.argv[1:] )



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/

2014-07-17 Thread André Erdmann
commit: 12380781282c45e9bb6ed6d56af08b2382738841
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 20:06:48 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 20:06:48 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=12380781

add-policy rule gen: BitmaskMapCreator

creates a "bitmask" -> "acceptor chain" map, which means that the addition
control pkgrule generator is mostly done now, except for some cleanup.
All steps have been implemented, what remains to be done is integrating it
in the package rule system and roverlay.defaultscript (+argparser etc.).

---
 .../packagerules/generators/addition_control.py| 289 -
 1 file changed, 225 insertions(+), 64 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py 
b/roverlay/packagerules/generators/addition_control.py
index 0021817..1591ecd 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -5,6 +5,7 @@
 # either version 2 of the License, or (at your option) any later version.
 
 from __future__ import absolute_import
+from __future__ import print_function
 
 
 import abc
@@ -13,12 +14,16 @@ import fnmatch
 import re
 
 
+
 import roverlay.packagerules.generators.abstract.addition_control
 
 import roverlay.packagerules.abstract.acceptors
 import roverlay.packagerules.acceptors.stringmatch
 import roverlay.packagerules.acceptors.util
 
+import roverlay.overlay.abccontrol
+from roverlay.overlay.abccontrol import AdditionControlResult
+
 
 from roverlay.packagerules.abstract.acceptors import Acceptor_AND
 
@@ -30,7 +35,7 @@ from roverlay.packagerules.acceptors.util import (
get_category, get_ebuild_name, get_ebuild_version_tuple,
 )
 
-#import roverlay.util.fileio
+import roverlay.util.fileio
 import roverlay.util.namespace
 
 import roverlay.util.portage_regex.default
@@ -43,12 +48,6 @@ from roverlay.util.portage_regex.wildcard import (
 
 
 
-
-
-
-
-
-
 class TokenValueError ( ValueError ):
pass
 
@@ -59,7 +58,18 @@ class TokenItemNotSupported ( TokenValueError ):
pass
 
 
+def _read_list_file (
+   filepath,
+   _read_text_file=roverlay.util.fileio.read_text_file
+):
+   def strip_line ( s ):
+  return s.strip()
 
+   if filepath:
+  for line in _read_text_file ( filepath, preparse=strip_line ):
+ # skip line if <>
+ yield line
+# --- end of _read_list_file (...) ---
 
 
 class AdditionControlPackageRuleGenerator (
@@ -90,6 +100,13 @@ class AdditionControlPackageRuleGenerator (
#
CategoryToken = collections.namedtuple ( 'CategoryToken', 'name' )
 
+   DEFAULT_CATEGORY_TOKEN = CategoryToken (
+  TokenItemTuple (
+ TOKEN_ITEM_IS_STR,
+ roverlay.packagerules.acceptors.util.DEFAULT_CATEGORY_REPLACEMENT
+  )
+   )
+
 
def create_token_item_from_str ( self, s ):
   get_obj = self.namespace.get_object_v
@@ -162,12 +179,16 @@ class AdditionControlPackageRuleGenerator (
# --- end of _create_package_token (...) ---
 
def _create_category_token ( self, category_str ):
-  category_token = self.namespace.get_object_v (
- self.__class__.CategoryToken,
- (
-self.create_token_item_from_str ( category_str ),
+  if category_str == self.default_category:
+ # validate_token() not necessary (assumption)
+ return self.DEFAULT_CATEGORY_TOKEN
+  else:
+ category_token = self.namespace.get_object_v (
+self.__class__.CategoryToken,
+(
+   self.create_token_item_from_str ( category_str ),
+)
  )
-  )
 
   return self.validate_token ( category_token )
# --- end of _create_category_token (...) ---
@@ -253,7 +274,9 @@ class AdditionControlPackageRuleGenerator (
 
def __init__ ( self, default_category ):
   super ( AdditionControlPackageRuleGenerator, self ).__init__()
-  self.namespace = roverlay.util.namespace.SimpleNamespace()
+  self.namespace= roverlay.util.namespace.SimpleNamespace()
+  self.default_category = default_category
+   # --- end of __init__ (...) ---
 
def clear_object_cache ( self ):
   if self.namespace:
@@ -290,9 +313,7 @@ class AdditionControlPackageRuleGenerator (
# --- end of token_item_to_acceptor (...) ---
 
def category_token_to_acceptor ( self, category_token, priority ):
-  if category_token is True:
- raise Exception ( "C-TRUE" )
-
+  assert category_token and category_token is not True
 
   return self.token_item_to_acceptor (
  category_token.name, get_category, priority
@@ -300,40 +321,176 @@ class AdditionControlPackageRuleGenerator (
# --- end of category_token_to_acceptor (...) ---
 
def package_token_to_acceptor ( self, package_token, priority ):
-  if package_token is True:
-

[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/abstract/

2014-07-17 Thread André Erdmann
commit: 384a35d19b894e467bfbfb2cc827eacb1d4f97f5
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 19:13:40 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 19:13:40 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=384a35d1

add-policy rule gen: merge acceptor compounds

... by default

---
 roverlay/packagerules/generators/abstract/addition_control.py | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/roverlay/packagerules/generators/abstract/addition_control.py 
b/roverlay/packagerules/generators/abstract/addition_control.py
index 9f12ad0..b58b666 100644
--- a/roverlay/packagerules/generators/abstract/addition_control.py
+++ b/roverlay/packagerules/generators/abstract/addition_control.py
@@ -439,7 +439,8 @@ def create_packagerule_action_map():
 def create_package_rules (
reduced_bitmask_acceptor_chain_map,
convert_category_token_to_acceptor,
-   convert_package_token_to_acceptor
+   convert_package_token_to_acceptor,
+   collapse_acceptor_combounds=True,
 ):
"""Converts the given "effective bitmask" -> "acceptor chain" map
into a nested package rule.
@@ -453,6 +454,9 @@ def create_package_rules (
  -> category acceptor
* convert_package_token_to_acceptor  -- function(token,priority)
  -> package acceptor
+   * collapse_acceptor_combounds-- bool that controls whether acceptor
+   compounds should be merged or not
+   Defaults to True.
"""
packagerule_actions= create_packagerule_action_map()
# true acceptor with priority -1
@@ -617,6 +621,9 @@ def create_package_rules (
   and_acceptor= roverlay.packagerules.abstract.acceptors.Acceptor_AND 
(0)
   and_acceptor.add_acceptor ( actual_acceptor )
 
+  if collapse_acceptor_combounds:
+ and_acceptor.merge_sub_compounds()
+
   rule = roverlay.packagerules.abstract.rules.PackageRule (
  # top-priority action should be applied last
  priority = AdditionControlResult.get_reversed_sort_key ( emask )



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/

2014-07-17 Thread André Erdmann
commit: a24d0669bde2e4853117d6233863452b3e164a2d
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 02:22:39 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 02:22:39 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=a24d0669

create_addition_control_package_rule(): add params

cmdline_{package,ebuild}_extended

---
 roverlay/packagerules/generators/addition_control.py | 11 +++
 1 file changed, 11 insertions(+)

diff --git a/roverlay/packagerules/generators/addition_control.py 
b/roverlay/packagerules/generators/addition_control.py
index 03e4b71..2fbf4a1 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -515,6 +515,10 @@ def create_addition_control_package_rule (
cmdline_ebuild_replace_only  = None,
cmdline_ebuild_revbump_on_collision  = None,
 
+   cmdline_package_extended = None,
+   cmdline_ebuild_extended  = None,
+
+
file_package_default = None,
file_package_force_deny  = None,
file_package_deny_replace= None,
@@ -590,6 +594,13 @@ def create_addition_control_package_rule (
  filefeed_bitmask ( bitmask, args[0], args[1] )
# --
 
+   if cmdline_package_extended or cmdline_ebuild_extended:
+  feed_bitmask (
+ None, cmdline_package_extended, cmdline_ebuild_extended,
+ extended_format=True
+  )
+   # --
+
if file_package_extended or file_ebuild_extended:
   filefeed_bitmask (
  None, file_package_extended, file_ebuild_extended,



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/

2014-07-17 Thread André Erdmann
commit: a56814f1d04894840b08621f394fcb5ba94b126e
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 02:19:10 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 02:19:25 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=a56814f1

packagerules/rules: fix

fixes a66935abdbccc21e52d51a1ccc7b5849afe4b3c6

---
 roverlay/packagerules/rules.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roverlay/packagerules/rules.py b/roverlay/packagerules/rules.py
index 9e828d1..f6a83c2 100644
--- a/roverlay/packagerules/rules.py
+++ b/roverlay/packagerules/rules.py
@@ -61,7 +61,7 @@ class PackageRules ( 
roverlay.packagerules.abstract.rules.NestedPackageRule ):
  Defaults to True.
   """
   if self._rules:
- rule.priority = 1 + max ( self._rules, key=(lambda r: r.priority) )
+ rule.priority = 1 + max ( k.priority for k in self._rules )
   else:
  rule.priority = 0
 



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/

2014-07-17 Thread André Erdmann
commit: cdac4e5844a929ccf999a0e1b023c8076e8d3d9e
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 02:26:56 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 02:26:56 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=cdac4e58

add addition control to roverlay main script

add package rules to --print-package-rules, apply_rules, create

---
 roverlay/defaultscript.py |  4 
 roverlay/runtime.py   | 51 +++
 2 files changed, 55 insertions(+)

diff --git a/roverlay/defaultscript.py b/roverlay/defaultscript.py
index 2c0d1f2..cd8d1ae 100644
--- a/roverlay/defaultscript.py
+++ b/roverlay/defaultscript.py
@@ -133,6 +133,8 @@ def run_early_commands ( env ):
   package_rules = (
  roverlay.packagerules.rules.PackageRules.get_configured()
   )
+  env.add_addition_control_rules ( package_rules )
+
   print ( env.HLINE )
   print ( str ( package_rules ) )
   print ( env.HLINE )
@@ -206,6 +208,7 @@ def run_overlay_create ( env ):
try:
   repo_list   = env.get_repo_list()
   overlay_creator = env.get_overlay_creator()
+  env.add_addition_control_to_overlay_creator()
 
   ebuild_import_nosync = env.option ( 'sync_imported' )
   if ebuild_import_nosync is None:
@@ -282,6 +285,7 @@ def run_apply_package_rules ( env ):
FH= None
 
prules = roverlay.packagerules.rules.PackageRules.get_configured()
+   env.add_addition_control_rules ( prules )
 
# track package rules
prules.add_trace_actions()

diff --git a/roverlay/runtime.py b/roverlay/runtime.py
index 829940e..4d0e9c2 100644
--- a/roverlay/runtime.py
+++ b/roverlay/runtime.py
@@ -20,6 +20,10 @@ import roverlay.stats.collector
 import roverlay.util.objects
 import roverlay.recipe.easylogger
 
+import roverlay.packagerules.generators.addition_control
+from roverlay.packagerules.generators.addition_control import \
+   create_addition_control_package_rule
+
 import roverlay.config.tree
 import roverlay.config.const
 
@@ -202,6 +206,53 @@ class RuntimeEnvironment ( RuntimeEnvironmentBase ):
   return self._overlay_creator
# --- end of get_overlay_creator (...) ---
 
+   def create_addition_control_rules ( self, default_category=None ):
+  kwargs = {}
+  def add_key ( k, _kwargs=kwargs, _options=self.options ):
+ _kwargs [k] = _options [k]
+
+  add_key ( "cmdline_package_revbump_on_collision" )
+  add_key ( "cmdline_package_force_replace" )
+  add_key ( "cmdline_package_replace_only" )
+
+  add_key ( "file_package_extended" )
+  add_key ( "file_ebuild_extended"  )
+
+  return create_addition_control_package_rule (
+ (
+default_category
+   or self.config.get_or_fail ( 'OVERLAY.category' )
+ ),
+ **kwargs
+  )
+   # --- end of create_addition_control_rules (...) ---
+
+   def add_addition_control_rules (
+  self, package_rules, default_category=None
+   ):
+  add_control_rule = self.create_addition_control_rules (
+ default_category = default_category
+  )
+  package_rules.append_rule ( add_control_rule )
+   # --- end of add_addition_control_rules (...) ---
+
+   def add_addition_control_to_overlay_creator ( self ):
+  if not self._overlay_creator:
+ raise AssertionError ( "overlay creator not initialized." )
+  elif not getattr ( self._overlay_creator, 'package_rules', None ):
+ raise AssertionError ( "overlay creator has no package rules." )
+  # --
+
+  self.add_addition_control_rules (
+ self._overlay_creator.package_rules,
+ self._overlay_creator.overlay.default_category,
+  )
+
+  # + add addition_control object [FUTURE]
+
+   # --- end of add_addition_control_to_overlay_creator (...) ---
+
+
def do_setup ( self ):
   self.do_setup_parser()
   self.do_setup_config()



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/

2014-07-17 Thread André Erdmann
commit: 1efba0795cabdd2a60beab0a2e5b62296d461032
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 01:02:21 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 01:02:21 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=1efba079

create_addition_control_package_rule()

Accepts a _huge_ number of parameters, creates a bitmask map and "compiles" it.
The result is a single package rule (or None).

---
 .../packagerules/generators/addition_control.py| 185 ++---
 1 file changed, 121 insertions(+), 64 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py 
b/roverlay/packagerules/generators/addition_control.py
index 1591ecd..03e4b71 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -7,6 +7,11 @@
 from __future__ import absolute_import
 from __future__ import print_function
 
+# TODO: cleanup:
+#   BitmaskMapCreator / AdditionControlPackageRuleGenerator naming
+#   ...
+#
+
 
 import abc
 import collections
@@ -364,10 +369,10 @@ class BitmaskMapCreator ( object ):
   self.rule_generator = rule_generator
   self.data   = rule_generator.create_new_bitmask_map()
 
-   def get_bitmask ( self ):
+   def get_bitmask_map ( self ):
   return self.data
 
-   def get_bitmask_copy ( self ):
+   def get_bitmask_map_copy ( self ):
   return self.data.copy()
 
def _insert_package ( self, bitmask_arg, package_str, package_regex ):
@@ -476,7 +481,8 @@ class BitmaskMapCreator ( object ):
# --- end of feed (...) ---
 
def feed_from_file (
-  self, bitmask, package_list_file=None, ebuild_list_file=None, **kw
+  self, bitmask, package_list_file=None, ebuild_list_file=None,
+  extended_format=False,
):
   # or ebuild_file_list_file
 
@@ -484,7 +490,7 @@ class BitmaskMapCreator ( object ):
  bitmask,
  _read_list_file ( package_list_file ),
  _read_list_file ( ebuild_list_file ),
- **kw
+ extended_format = extended_format,
   )
# --- end of feed_from_file (...) ---
 
@@ -492,83 +498,134 @@ class BitmaskMapCreator ( object ):
 
 
 
+def create_addition_control_package_rule (
+   default_category,
+
+   cmdline_package_default  = None,
+   cmdline_package_force_deny   = None,
+   cmdline_package_deny_replace = None,
+   cmdline_package_force_replace= None,
+   cmdline_package_replace_only = None,
+   cmdline_package_revbump_on_collision = None,
+
+   cmdline_ebuild_default   = None,
+   cmdline_ebuild_force_deny= None,
+   cmdline_ebuild_deny_replace  = None,
+   cmdline_ebuild_force_replace = None,
+   cmdline_ebuild_replace_only  = None,
+   cmdline_ebuild_revbump_on_collision  = None,
+
+   file_package_default = None,
+   file_package_force_deny  = None,
+   file_package_deny_replace= None,
+   file_package_force_replace   = None,
+   file_package_replace_only= None,
+   file_package_revbump_on_collision= None,
+
+   file_ebuild_default  = None,
+   file_ebuild_force_deny   = None,
+   file_ebuild_deny_replace = None,
+   file_ebuild_force_replace= None,
+   file_ebuild_replace_only = None,
+   file_ebuild_revbump_on_collision = None,
+
+   file_package_extended= None,
+   file_ebuild_extended = None,
+):
+   """All-in-one function that takes lists of packages, ebuild paths, list
+   files, ... as input, creates a "bitmask" -> "acceptor chain" map and
+   converts it into a single, nested package rule object or None.
+
+   *** SLOW ***
+
+   Returns: package rule or None
+
+   Note: the returned has to be prepared manually (rule.prepare()),
+ which is usually done by the PackagRules top-level rule
+
+   arguments:
+   * default_category -- name of the default overlay category
+  Mandatory argument.
+   * cmdline_package_ -- list of packages [None]
+   * cmdline_ebuild_  -- list of ebuilds  [None]
+   * file_package_-- package list file[s] [None]
+   * file_ebuild_ -- ebuild  list file[s] [None]
+   * file_package_extended-- package list file[s] in extended format [None]
+   * file_ebuild_extended -- ebuild  list file[s] in extended format [None]
+
+   Note: file_* parameters support only a single input file, currently.
+   """
+   argv_locals = locals().copy()
+   get_args= lambda pre, attr_name: (
+  argv_locals [pre + '_package_' + attr_name],
+  argv_locals [pre + '_ebuild_'  + attr_name]
+   )
+##   argv_locals = {
+##  k: v for locals().items()
+## if ( k.startswith("cmdline_") or k

[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/

2014-07-17 Thread André Erdmann
commit: fe530a21c5a873382f15ff9407e8af9e10270252
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 02:23:54 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 02:23:54 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=fe530a21

roverlay/argparser: add add-policy args to main script

not adding all PKG_* actions, just revbump-on-collision, force-replace and
replace-only, plus {package,ebuild}-list (read extended statements from files).

A typical usage scenario would be:
   roverlay --replace "pkg0" --revbump "cat/p2" --replace-only "*"
or
   roverlay --ebuild-list /tmp/my_list --replace-only "*"

---
 roverlay/argparser.py | 60 +++
 1 file changed, 60 insertions(+)

diff --git a/roverlay/argparser.py b/roverlay/argparser.py
index 706cf5f..c323ce3 100644
--- a/roverlay/argparser.py
+++ b/roverlay/argparser.py
@@ -12,6 +12,9 @@ import roverlay.core
 import roverlay.argutil
 import roverlay.util.objects
 
+import roverlay.overlay.abccontrol
+from roverlay.overlay.abccontrol import AdditionControlResult
+
 # lazy import
 from roverlay.argutil import \
LOG_LEVELS, \
@@ -449,8 +452,65 @@ class RoverlayArgumentParserBase ( 
roverlay.argutil.ArgumentParserProxy ):
  default=argparse.SUPPRESS, flags=self.ARG_WITH_DEFAULT,
  help="choose how Manifest files are created (ebuild(1) or internal)",
   )
+
+  self._setup_addition_control ( arg )
# --- end of setup_overlay_creation (...) ---
 
+   def _setup_addition_control ( self, add_arg ):
+##  # all:
+##  for name in AdditionControlResult.PKG_DESCRIPTION_REVMAP, ~X~:
+
+  for variant in [ "package", ]:
+ for name, long_name in [
+( "revbump", "revbump-on-collision"  ),
+( "replace", "force-replace" ),
+( "replace-only","replace-only"  ),
+ ]:
+arg_opt = (
+   "--{variant}-{name}".format ( variant=variant, name=name )
+)
+
+dest_name = "{variant}_{aname}".format (
+   variant = variant,
+   aname   = long_name.replace ( "-", "_" )
+)
+
+
+add_arg (
+   arg_opt,
+   dest = "cmdline_" + dest_name,
+   metavar = "<{variant}>".format ( variant=variant ),
+   default = [],
+   action  = 'append',
+   help= (
+  'set add-policy for <{variant}> to {lname!r}'.format (
+ variant = variant,
+ lname   = long_name,
+  )
+   )
+)
+  # -- end for
+
+  for variant in [ "package", "ebuild" ]:
+ arg_opt   = "--{variant}-list".format ( variant=variant )
+ dest_name = "file_{variant}_extended".format ( variant=variant )
+
+ add_arg (
+arg_opt,
+dest = dest_name,
+default  = None,
+flags= self.ARG_WITH_DEFAULT|self.ARG_META_FILE,
+type = is_fs_file_or_void,
+help = (
+   "file that lists {variant} add-policy statements".format (
+  variant=variant
+   )
+)
+ )
+  # -- end for
+
+   # --- end of _setup_addition_control (...) ---
+
def setup_remote_minimal ( self ):
   arg = self.add_argument_group ( "remote", title="sync options" )
 



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/

2014-07-17 Thread André Erdmann
commit: a66935abdbccc21e52d51a1ccc7b5849afe4b3c6
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 00:07:24 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 00:07:24 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=a66935ab

packagerules/rules->PackageRules: append_rule()

minor cleanup / comment

---
 roverlay/packagerules/rules.py | 10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/roverlay/packagerules/rules.py b/roverlay/packagerules/rules.py
index 0dd0d3d..9e828d1 100644
--- a/roverlay/packagerules/rules.py
+++ b/roverlay/packagerules/rules.py
@@ -61,7 +61,7 @@ class PackageRules ( 
roverlay.packagerules.abstract.rules.NestedPackageRule ):
  Defaults to True.
   """
   if self._rules:
- rule.priority = 1 + max ( rule.priority for rule in self._rules )
+ rule.priority = 1 + max ( self._rules, key=(lambda r: r.priority) )
   else:
  rule.priority = 0
 
@@ -71,8 +71,12 @@ class PackageRules ( 
roverlay.packagerules.abstract.rules.NestedPackageRule ):
  rule.set_logger ( self.logger.getChild ( 'nested' ) )
  rule.prepare()
  # no need to sort self._rules
- #self._rules [-1].prio > self._rules [-2].prio
- # <=> sorted if self.prepare() has been called before
+ #   len(self._rules) > 1:
+ # self._rules [-1].prio > self._rules [-2].prio
+ #   <=> sorted if self.prepare() has been called before
+ #   else:
+ # sorted.
+ #
# --- end of append_rule (...) ---
 
def _gen_rules_str ( self, level ):



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/abstract/

2014-07-17 Thread André Erdmann
commit: 1930affcc3b5b5a5aaf3502cdbe83a1d2c3314b6
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 01:01:12 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 01:01:12 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=1930affc

typo

---
 roverlay/packagerules/generators/abstract/addition_control.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roverlay/packagerules/generators/abstract/addition_control.py 
b/roverlay/packagerules/generators/abstract/addition_control.py
index b58b666..b42b429 100644
--- a/roverlay/packagerules/generators/abstract/addition_control.py
+++ b/roverlay/packagerules/generators/abstract/addition_control.py
@@ -144,7 +144,7 @@ class AbstractAdditionControlPackageRuleGenerator (
   * acceptor_chain_bitmask_map -- "acceptor chain" -> "bitmask" map
   """
   return self.create_package_rules (
- prepare_bitmask_map ( acceptor_chain_bitmask_map )
+ self.prepare_bitmask_map ( acceptor_chain_bitmask_map )
   )
# --- end of compile_bitmask_map (...) ---
 



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/overlay/

2014-07-17 Thread André Erdmann
commit: 13ae9d788d175488eaa5b4ba2637ed04fb6423bb
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 01:00:42 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 01:00:42 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=13ae9d78

roverlay/overlay/abccontrol: remove dbg statement

---
 roverlay/overlay/abccontrol.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/roverlay/overlay/abccontrol.py b/roverlay/overlay/abccontrol.py
index d031eec..a319e35 100644
--- a/roverlay/overlay/abccontrol.py
+++ b/roverlay/overlay/abccontrol.py
@@ -104,7 +104,6 @@ class AdditionControlResult ( object ):
 
   for arg in filter ( None, s.strip().lower().split(",") ):
  # ^ strip(),lower(),split() ...
- print(arg)
  try:
 bitmask |= desc_rmap [arg]
  except KeyError:



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/overlay/

2014-07-17 Thread André Erdmann
commit: 9c4859591aa5d5388c192f932f3e4d8a1344e57d
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 02:23:31 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 02:23:31 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=9c485959

roverlay/overlay/abccontrol: comment

---
 roverlay/overlay/abccontrol.py | 8 
 1 file changed, 8 insertions(+)

diff --git a/roverlay/overlay/abccontrol.py b/roverlay/overlay/abccontrol.py
index a319e35..991343e 100644
--- a/roverlay/overlay/abccontrol.py
+++ b/roverlay/overlay/abccontrol.py
@@ -81,6 +81,10 @@ class AdditionControlResult ( object ):
   PKG_ALL,
) = _gen_bits(5)
 
+##   # virtuals
+##   PKG_REVBUMP_ONLY   = PKG_REVBUMP_ON_COLLISION|PKG_REPLACE_ONLY
+##   PKG_FORCE_REPLACE_ONLY = PKG_FORCE_REPLACE|PKG_REPLACE_ONLY
+
 
PKG_DESCRIPTION_MAP  = {
   PKG_FORCE_DENY   : 'force-deny',
@@ -89,6 +93,10 @@ class AdditionControlResult ( object ):
   PKG_REPLACE_ONLY : 'replace-only',
   PKG_REVBUMP_ON_COLLISION : 'revbump-on-collision',
   PKG_DEFAULT_BEHAVIOR : 'default',
+
+##  # virtuals
+##  PKG_REVBUMP_ONLY : 'revbump-on-collision,replace-only',
+##  PKG_FORCE_REPLACE_ONLY   : 'force-replace,replace-only',
}
 
PKG_DESCRIPTION_REVMAP   = { v: k for k,v in PKG_DESCRIPTION_MAP.items() }



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/overlay/pkgdir/

2014-07-17 Thread André Erdmann
commit: cee38967b3dbe82dc952d9fbb980ab09018416bf
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 02:23:15 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 02:23:15 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=cee38967

roverlay/overlay/pkgdir/packagedir_base: fix import

---
 roverlay/overlay/pkgdir/packagedir_base.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/roverlay/overlay/pkgdir/packagedir_base.py 
b/roverlay/overlay/pkgdir/packagedir_base.py
index e25ef61..7a8a29f 100644
--- a/roverlay/overlay/pkgdir/packagedir_base.py
+++ b/roverlay/overlay/pkgdir/packagedir_base.py
@@ -29,8 +29,8 @@ import weakref
 import roverlay.config
 import roverlay.packageinfo
 import roverlay.util
-import roverlay.util.portage_regex
-from roverlay.util.portage_regex import RE_PF
+import roverlay.util.portage_regex.default
+from roverlay.util.portage_regex.default import RE_PF
 
 import roverlay.recipe.distmap
 



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/overlay/pkgdir/

2014-07-17 Thread André Erdmann
commit: 15d8948ab2be08eb2cd7b6bd4bca182629d5f43d
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 00:06:32 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 00:06:32 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=15d8948a

overlay/pkgdir/packagedir_base: add COULDFIX note

---
 roverlay/overlay/pkgdir/packagedir_base.py | 4 
 1 file changed, 4 insertions(+)

diff --git a/roverlay/overlay/pkgdir/packagedir_base.py 
b/roverlay/overlay/pkgdir/packagedir_base.py
index c0c6dd6..e25ef61 100644
--- a/roverlay/overlay/pkgdir/packagedir_base.py
+++ b/roverlay/overlay/pkgdir/packagedir_base.py
@@ -15,6 +15,10 @@ Each PackageDir instance represents one package name (e.g. 
"seewave").
 
 __all__ = [ 'PackageDirBase', ]
 
+# TODO COULDFIX, incremental overlay creation: "revision-lookaround"
+#  remember highest $PR per $PV and add_package() with $PR+1
+#  (not an issue as long as all -r0,-r1,...,-rn exist)
+#
 
 import os
 import shutil



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/

2014-07-17 Thread André Erdmann
commit: c56757276df58cf03a19512d3ed4f9d36cef6f06
Author: André Erdmann  mailerd  de>
AuthorDate: Thu Jul 17 23:53:48 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Thu Jul 17 23:58:33 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c5675727

packagerules/rules->PackageRules: append_rule()

Adds a rule to an (possibly) already-sorted PackageRules object and gives it the
lowest priority (highest int, 1+max(self._rules priority).

Will be used to add generated rules that should be applied last (add-policy).

---
 roverlay/packagerules/rules.py | 28 
 1 file changed, 28 insertions(+)

diff --git a/roverlay/packagerules/rules.py b/roverlay/packagerules/rules.py
index 5cbe600..0dd0d3d 100644
--- a/roverlay/packagerules/rules.py
+++ b/roverlay/packagerules/rules.py
@@ -47,6 +47,34 @@ class PackageRules ( 
roverlay.packagerules.abstract.rules.NestedPackageRule ):
   self.is_toplevel = True
# --- end of __init__ (...) ---
 
+   def append_rule ( self, rule, prepare_rule=True ):
+  """
+  Sets the given rule's priority to 1 + lowest prio of already-added rules
+  (so that it will be applied last) and adds it.
+
+  Optionally prepares the rule so that prepare() doesn't need to be
+  called afterwards, assuming that the PackageRules was already prepared.
+
+  arguments:
+  * rule --
+  * prepare_rule -- whether to prepare the added rule or not
+ Defaults to True.
+  """
+  if self._rules:
+ rule.priority = 1 + max ( rule.priority for rule in self._rules )
+  else:
+ rule.priority = 0
+
+  self.add_rule ( rule )
+
+  if prepare_rule:
+ rule.set_logger ( self.logger.getChild ( 'nested' ) )
+ rule.prepare()
+ # no need to sort self._rules
+ #self._rules [-1].prio > self._rules [-2].prio
+ # <=> sorted if self.prepare() has been called before
+   # --- end of append_rule (...) ---
+
def _gen_rules_str ( self, level ):
   if level == 0:
  last_rule_index = len ( self._rules ) - 1



[gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/

2014-07-17 Thread André Erdmann
commit: c86aaac5aca70211bc346b13e8d2b1d8afd00eb6
Author: André Erdmann  mailerd  de>
AuthorDate: Fri Jul 18 02:49:22 2014 +
Commit:     André Erdmann  mailerd  de>
CommitDate: Fri Jul 18 02:49:22 2014 +
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c86aaac5

roverlay/runtime: fix add_addition_control_rules()

---
 roverlay/runtime.py | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/roverlay/runtime.py b/roverlay/runtime.py
index 4d0e9c2..521eb0e 100644
--- a/roverlay/runtime.py
+++ b/roverlay/runtime.py
@@ -233,7 +233,12 @@ class RuntimeEnvironment ( RuntimeEnvironmentBase ):
   add_control_rule = self.create_addition_control_rules (
  default_category = default_category
   )
-  package_rules.append_rule ( add_control_rule )
+
+  if add_control_rule:
+ package_rules.append_rule ( add_control_rule )
+ return True
+  else:
+ return False
# --- end of add_addition_control_rules (...) ---
 
def add_addition_control_to_overlay_creator ( self ):
@@ -243,7 +248,7 @@ class RuntimeEnvironment ( RuntimeEnvironmentBase ):
  raise AssertionError ( "overlay creator has no package rules." )
   # --
 
-  self.add_addition_control_rules (
+  return self.add_addition_control_rules (
  self._overlay_creator.package_rules,
  self._overlay_creator.overlay.default_category,
   )



  1   2   >