aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Erdmann <dywi@mailerd.de>2013-04-23 02:15:12 +0200
committerAndré Erdmann <dywi@mailerd.de>2013-04-23 02:15:12 +0200
commit20b80a934cc6d6fe04993ce46418b83e382a77d6 (patch)
tree8ed052379c34b15722a5a9e38c06f924d289f214 /roverlay/packageinfo.py
parentpackagerules/parser/context: fix InvalidContext (diff)
downloadR_overlay-20b80a934cc6d6fe04993ce46418b83e382a77d6.tar.gz
R_overlay-20b80a934cc6d6fe04993ce46418b83e382a77d6.tar.bz2
R_overlay-20b80a934cc6d6fe04993ce46418b83e382a77d6.zip
package rules: properly apply evars
As mentioned in usage guide, applying the same action twice to a package results in two appearances of the same variable in the ebuild. This commit removes that limitation, only the last applied evar action will affect ebuild creation.
Diffstat (limited to 'roverlay/packageinfo.py')
-rw-r--r--roverlay/packageinfo.py45
1 files changed, 33 insertions, 12 deletions
diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py
index 05c6feb..414fc07 100644
--- a/roverlay/packageinfo.py
+++ b/roverlay/packageinfo.py
@@ -398,14 +398,42 @@ class PackageInfo ( object ):
self._writelock_acquire()
- self._update ( info )
-
- if remove_auto:
- self._remove_auto ( remove_auto )
+ try:
+ self._update ( info )
- self._update_lock.release()
+ if remove_auto:
+ self._remove_auto ( remove_auto )
+ finally:
+ self._update_lock.release()
# --- end of update (**kw) ---
+ def add_evar ( self, evar, unsafe=False ):
+ """Adds an ebuild variable.
+
+ arguments:
+ * evar --
+ """
+# if self.readonly or hasattr ( self, '_readonly_final' ):
+# raise Exception ( "package info is readonly!" )
+# else:
+
+ if unsafe:
+ if not hasattr ( self, '_evars' ):
+ self._evars = dict()
+
+ self._evars [evar.get_pseudo_hash()] = evar
+ else:
+ raise Exception ( "unsafe=False is deprecated" )
+ # --- end of add_evar (...) ---
+
+ def get_evars ( self ):
+ """Returns all ebuild variables."""
+ if hasattr ( self, '_evars' ):
+ return list ( self._evars.values() )
+ else:
+ return None
+ # --- end of get_evars (...) ---
+
def _update ( self, info ):
"""Updates self._info using the given info dict.
@@ -422,13 +450,6 @@ class PackageInfo ( object ):
elif initial and key in self.__class__._UPDATE_KEYS_SIMPLE_INITIAL:
self [key] = value
- elif key[:4] == 'EVAR':
- if 'EVAR' in self._info:
- self._info ['EVAR'].add ( value )
- else:
- # set or dict?
- self._info ['EVAR'] = set ( ( value, ) )
-
elif key in self.__class__._UPDATE_KEYS_FILTER_NONE:
if value is not None:
self [key] = value