From: "André Erdmann" <dywi@mailerd.de>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/ebuild/, roverlay/config/, roverlay/, roverlay/overlay/
Date: Tue, 18 Jun 2013 14:12:56 +0000 (UTC) [thread overview]
Message-ID: <1371559761.33cbb79fc1631d4354db1cde777ae33be73d5a99.dywi@gentoo> (raw)
Message-ID: <20130618141256.TSdPndfafCmXentz7RNgkoChEtkgdcoY-sWY_N1xBh8@z> (raw)
commit: 33cbb79fc1631d4354db1cde777ae33be73d5a99
Author: André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jun 18 12:49:21 2013 +0000
Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jun 18 12:49:21 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=33cbb79f
USE_EXPAND: rename flags, read flag desc file
* the USE_EXPAND flags can now be renamed by dict-like entries in a
USE_EXTEND_RENAME file
* the USE_EXPAND_DESC file can be used to provide flag descriptions
---
roverlay/__init__.py | 10 ++++++++--
roverlay/config/const.py | 1 -
roverlay/config/entrymap.py | 22 ++++++++++++++++++++--
roverlay/config/loader.py | 19 +++++++++++++++++++
roverlay/config/tree.py | 6 ++++++
roverlay/ebuild/depres.py | 5 ++++-
roverlay/ebuild/evars.py | 5 +++--
roverlay/overlay/root.py | 42 +++++++++++++++++++++++++++++++-----------
8 files changed, 91 insertions(+), 19 deletions(-)
diff --git a/roverlay/__init__.py b/roverlay/__init__.py
index 4894efd..5b4007e 100644
--- a/roverlay/__init__.py
+++ b/roverlay/__init__.py
@@ -44,16 +44,22 @@ def load_config_file ( cfile, extraconf=None ):
"""
roverlay_config = roverlay.config.access()
+ confloader = roverlay_config.get_loader()
+
if cfile:
- roverlay_config.get_loader().load_config ( cfile )
+ confloader.load_config ( cfile )
if extraconf is not None:
roverlay_config.merge_with ( extraconf )
roverlay.recipe.easylogger.setup ( roverlay_config )
- roverlay_config.get_loader().load_field_definition (
+ confloader.load_field_definition (
roverlay_config.get_or_fail ( "DESCRIPTION.field_definition_file" )
)
+ confloader.load_use_expand_map (
+ roverlay_config.get ( "EBUILD.USE_EXPAND.rename_file" )
+ )
+
return roverlay_config
diff --git a/roverlay/config/const.py b/roverlay/config/const.py
index 6a34f5c..3d330ba 100644
--- a/roverlay/config/const.py
+++ b/roverlay/config/const.py
@@ -46,7 +46,6 @@ _CONSTANTS = dict (
USE_EXPAND = dict (
name = 'R_SUGGESTS',
- rename = None,
),
),
diff --git a/roverlay/config/entrymap.py b/roverlay/config/entrymap.py
index 03a5f30..4dbce44 100644
--- a/roverlay/config/entrymap.py
+++ b/roverlay/config/entrymap.py
@@ -213,6 +213,12 @@ CONFIG_ENTRY_MAP = dict (
''',
),
+ overlay_backup_desc = dict (
+ path = [ 'OVERLAY', 'backup_desc' ],
+ value_type = yesno,
+ description = 'back up files in/from profiles/desc',
+ ),
+
overlay_category = dict (
desc = "overlay category to use for created ebuilds, e.g. 'sci-R'.",
),
@@ -295,6 +301,7 @@ CONFIG_ENTRY_MAP = dict (
),
# * alias
+ backup_desc = 'overlay_backup_desc',
eclass = 'overlay_eclass',
keep_nth_latest = 'overlay_keep_nth_latest',
manifest_implementation = 'overlay_manifest_implementation',
@@ -313,6 +320,12 @@ CONFIG_ENTRY_MAP = dict (
# value_type = str,
# ),
+ ebuild_use_expand_desc = dict (
+ path = [ 'EBUILD', 'USE_EXPAND', 'desc_file', ],
+ description = "USE_EXPAND flag description file",
+ value_type = 'fs_file',
+ ),
+
ebuild_use_expand_name = dict (
path = [ 'EBUILD', 'USE_EXPAND', 'name', ],
description = (
@@ -320,12 +333,17 @@ CONFIG_ENTRY_MAP = dict (
)
),
- ebuild_use_expand_rename = None,
+ ebuild_use_expand_rename = dict (
+ path = [ 'EBUILD', 'USE_EXPAND', 'rename_file', ],
+ description = 'file for renaming USE_EXPAND flags',
+ value_type = 'fs_file',
+ ),
# * alias
#eapi = 'ebuild_eapi',
+ use_expand_desc = 'ebuild_use_expand_desc',
use_expand_name = 'ebuild_use_expand_name',
- #use_expand_rename = 'ebuild_use_expand_rename',
+ use_expand_rename = 'ebuild_use_expand_rename',
# --- ebuild
diff --git a/roverlay/config/loader.py b/roverlay/config/loader.py
index 182915a..debc740 100644
--- a/roverlay/config/loader.py
+++ b/roverlay/config/loader.py
@@ -22,6 +22,8 @@ from roverlay.config import fielddef
from roverlay.config.util import get_config_path
from roverlay.config.entrymap import CONFIG_ENTRY_MAP
+import roverlay.ebuild.useflagmap
+
def listlike ( var ):
return hasattr ( var, '__iter__' ) and not isinstance ( var, str )
# --- end of listlike (...) ---
@@ -300,6 +302,23 @@ class ConfigLoader ( object ):
# --- end of load_config (...) ---
+ def load_use_expand_map ( self, map_file ):
+ """Loads the USE_EXPAND flag rename 'map'.
+
+ arguments:
+ * map_file --
+ """
+ if map_file:
+ # a is a map in file "format": dict { flag => *alias }
+ a = roverlay.ebuild.useflagmap.UseFlagAliasMap ( from_file=map_file )
+
+ # a dict { alias => flag } is required here:
+ if self.ctree._use_extend_map:
+ self.ctree._use_extend_map.update ( ~a )
+ else:
+ self.ctree._use_extend_map = ~a
+ # --- end of load_use_expand_map
+
def load_field_definition ( self, def_file, lenient=False ):
"""Loads a field definition file.
Please see the example file for format details.
diff --git a/roverlay/config/tree.py b/roverlay/config/tree.py
index 91a93ad..3466889 100644
--- a/roverlay/config/tree.py
+++ b/roverlay/config/tree.py
@@ -52,6 +52,7 @@ class ConfigTree ( object ):
self._config = const.clone() if import_const else dict ()
self._const_imported = import_const
self._field_definition = None
+ self._use_extend_map = None
# --- end of __init__ (...) ---
@@ -225,6 +226,11 @@ class ConfigTree ( object ):
return self._field_definition
# --- end of get_field_definition (...) ---
+ def get_use_expand_map ( self ):
+ """Returns the USE_EXPAND rename map stored in this ConfigTree."""
+ return self._use_extend_map
+ # --- end of get_use_expand_map (...) ---
+
def _tree_to_str ( self, root, name, level=0 ):
"""Returns string representation of a config tree rooted at root.
Uses recursion (DFS).
diff --git a/roverlay/ebuild/depres.py b/roverlay/ebuild/depres.py
index eeea67c..ac65e31 100644
--- a/roverlay/ebuild/depres.py
+++ b/roverlay/ebuild/depres.py
@@ -53,7 +53,10 @@ FIELDS = {
def create_use_expand_var ( *args, **kwargs ):
return evars.R_SUGGESTS_USE_EXPAND (
- config.get_or_fail ( "EBUILD.USE_EXPAND.name" ), *args, **kwargs
+ config.get_or_fail ( "EBUILD.USE_EXPAND.name" ),
+ *args,
+ use_expand_map=config.access().get_use_expand_map(),
+ **kwargs
)
EBUILDVARS = {
diff --git a/roverlay/ebuild/evars.py b/roverlay/ebuild/evars.py
index 8cafaef..ef5016b 100644
--- a/roverlay/ebuild/evars.py
+++ b/roverlay/ebuild/evars.py
@@ -55,7 +55,7 @@ class UseExpandListValue (
**kw
)
self.insert_leading_newline = True
- self.alias_map = alias_map
+ self.alias_map = alias_map or None
self.basename = basename.rstrip ( '_' ).lower()
self.sort_flags = True
@@ -63,10 +63,11 @@ class UseExpandListValue (
# --- end of __init__ (...) ---
def _get_depstr_key ( self, depstr ):
+ # tries to get the use flag name from depstr
match = self.__class__.RE_USENAME.match ( depstr )
if match:
return self._get_use_key (
- match.group ( "pn" ) or match.group ( "pf" )
+ ( match.group ( "pn" ) or match.group ( "pf" ) ).lower()
)
else:
raise ValueError (
diff --git a/roverlay/overlay/root.py b/roverlay/overlay/root.py
index 71156df..c2522b7 100644
--- a/roverlay/overlay/root.py
+++ b/roverlay/overlay/root.py
@@ -179,6 +179,11 @@ class Overlay ( object ):
self.scan()
self.import_ebuilds ( overwrite=( not incremental ) )
+
+ if __debug__:
+ # verify that these config keys exist:
+ roverlay.config.get_or_fail ( "EBUILD.USE_EXPAND.name" ).rstrip()
+ ##roverlay.config.get ( 'OVERLAY.backup_desc', True )
# --- end of __init__ (...) ---
def _get_category ( self, category ):
@@ -313,21 +318,23 @@ class Overlay ( object ):
write_profiles_file ( 'categories', cats + '\n' )
# profiles/desc/<r_suggests>.desc
- # !!! (late) config access (FIXME)
-
use_expand_name = roverlay.config.get_or_fail (
"EBUILD.USE_EXPAND.name"
).rstrip ( "_" )
self._write_rsuggests_use_desc (
- (
+ desc_file = (
self._profiles_dir + os.sep + 'desc' + os.sep
+ use_expand_name.lower() + '.desc'
),
- use_expand_name.upper(),
- roverlay.config.get ( 'OVERLAY.backup_desc', True )
+ use_expand_name = use_expand_name.upper(),
+ backup_file = roverlay.config.get ( 'OVERLAY.backup_desc', True ),
+ flagdesc_file = roverlay.config.get (
+ 'EBUILD.USE_EXPAND.desc_file', None
+ ),
)
+
# profiles/use.desc
if self._use_desc:
write_profiles_file ( 'use.desc', self._use_desc + '\n' )
@@ -349,7 +356,8 @@ class Overlay ( object ):
# --- end of _init_overlay (...) ---
def _write_rsuggests_use_desc (
- self, desc_file, use_expand_name, backup_file, rewrite=False
+ self, desc_file, use_expand_name, backup_file, flagdesc_file,
+ rewrite=False
):
"""Creates a USE_EXPAND description file.
@@ -361,6 +369,7 @@ class Overlay ( object ):
* backup_file -- move desc_file to backup_file before overwriting it
This can also be an int i (=> desc_file + '.<i>')
or a bool (if True => desc_file + '.bak').
+ * flagdesc_file -- file with flag descriptions (will be read only)
* rewrite -- force recreation of the desc file
"""
FLAG_SEPA = ' - '
@@ -373,12 +382,12 @@ class Overlay ( object ):
shutil.move ( desc_file, dest )
# --- end of do_backup (...) ---
- def read_desc_file():
+ def read_desc_file ( desc_file ):
"""Reads the old desc file (if it exists).
Returns a 3-tuple ( list header, dict flags, bool file_existed ).
arguments:
- * @implicit desc_file --
+ * desc_file --
Passes all exceptions (IOError, ...) but "file does not exist".
"""
@@ -453,14 +462,25 @@ class Overlay ( object ):
yield NEWLINE
# --- end of gen_desc (...) ---
- header, old_flags, can_backup = read_desc_file()
+ header, old_flags, can_backup = read_desc_file ( desc_file )
+
+ if flagdesc_file:
+ flagdesc_header, flagdesc, flagdesc_cb = read_desc_file (
+ str ( flagdesc_file )
+ )
+ del flagdesc_header, flagdesc_cb
+ else:
+ flagdesc = dict()
if self._incremental:
# incremental: add new flags
# Create dict flag=>None that contains all new flags
# and copy old_flags "over" it.
#
- flags = dict.fromkeys ( self._rsuggests_flags )
+ flags = {
+ flag: flagdesc.get ( flag, None )
+ for flag in self._rsuggests_flags
+ }
flags.update ( old_flags )
else:
# not incremental: discard old flags
@@ -468,7 +488,7 @@ class Overlay ( object ):
# from old_flags if available.
#
flags = {
- flag: old_flags.get ( flag, None )
+ flag: old_flags.get ( flag, None ) or flagdesc.get ( flag, None )
for flag in self._rsuggests_flags
}
# -- end if
next reply other threads:[~2013-06-18 14:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-18 14:12 André Erdmann [this message]
2013-06-18 14:12 ` [gentoo-commits] proj/R_overlay:master commit in: roverlay/ebuild/, roverlay/config/, roverlay/, roverlay/overlay/ André Erdmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1371559761.33cbb79fc1631d4354db1cde777ae33be73d5a99.dywi@gentoo \
--to=dywi@mailerd.de \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox