Gentoo Archives: gentoo-commits

From: "André Erdmann" <dywi@×××××××.de>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/
Date: Thu, 29 Aug 2013 12:36:41
Message-Id: 1377779415.6778dcf7eff2adc62e616c8ae998ac9e74298c6f.dywi@gentoo
1 commit: 6778dcf7eff2adc62e616c8ae998ac9e74298c6f
2 Author: André Erdmann <dywi <AT> mailerd <DOT> de>
3 AuthorDate: Thu Aug 29 12:30:15 2013 +0000
4 Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
5 CommitDate: Thu Aug 29 12:30:15 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=6778dcf7
7
8 packageinfo: parse SRC_URI, get status view object
9
10 ---
11 roverlay/packageinfo.py | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
12 1 file changed, 47 insertions(+), 1 deletion(-)
13
14 diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py
15 index a3be89b..e991ed7 100644
16 --- a/roverlay/packageinfo.py
17 +++ b/roverlay/packageinfo.py
18 @@ -17,9 +17,12 @@ import re
19 import os.path
20 import logging
21
22 +
23 import roverlay.digest
24 import roverlay.versiontuple
25 import roverlay.db.distmap
26 +import roverlay.util.objects
27 +import roverlay.util.ebuildparser
28
29 from roverlay import config, strutil
30 from roverlay.rpackage import descriptionreader
31 @@ -66,7 +69,28 @@ from roverlay.rpackage import descriptionreader
32
33 LOGGER = logging.getLogger ( 'PackageInfo' )
34
35 -class PackageInfo ( object ):
36 +
37 +class PackageInfoStatus ( roverlay.util.objects.ObjectView ):
38 +
39 + def __init__ ( self, package_info ):
40 + super ( PackageInfoStatus, self ).__init__ ( package_info )
41 + self.has_ebuild_file = False
42 + # --- end of __init__ (...) ---
43 +
44 + def get_name ( self ):
45 + return self.deref_safe().get ( 'name' )
46 + # --- end of get_name (...) ---
47 +
48 + def update ( self ):
49 + self.has_ebuild_file = bool (
50 + self.deref_safe().get ( 'ebuild_file', do_fallback=True )
51 + )
52 + # --- end of update (...) ---
53 +
54 +# --- end of PackageInfoStatus ---
55 +
56 +
57 +class PackageInfo ( roverlay.util.objects.Referenceable ):
58 """PackageInfo offers easy, subscriptable access to package
59 information, whether stored or calculated.
60
61 @@ -92,6 +116,8 @@ class PackageInfo ( object ):
62 called.
63 """
64
65 + CACHE_REF = True
66 +
67 EBUILDVER_REGEX = re.compile ( '[-]{1,}' )
68 PKGSUFFIX_REGEX = re.compile (
69 config.get_or_fail ( 'R_PACKAGE.suffix_regex' ) + '$'
70 @@ -128,6 +154,8 @@ class PackageInfo ( object ):
71 arguments:
72 * **initial_info -- passed to update ( **kw )
73 """
74 + super ( PackageInfo, self ).__init__()
75 +
76 self._info = dict()
77 self.readonly = False
78 self.logger = LOGGER
79 @@ -188,6 +216,12 @@ class PackageInfo ( object ):
80 return v
81 # --- end of has_valid_selfdeps (...) ---
82
83 + def get_status_object ( self ):
84 + obj = PackageInfoStatus ( self )
85 + obj.update()
86 + return obj
87 + # --- end of get_status_object (...) ---
88 +
89 def attach_lazy_action ( self, lazy_action ):
90 """Attaches a lazy action.
91 Unsafe operation (no locks will be acquired etc.).
92 @@ -684,6 +718,18 @@ class PackageInfo ( object ):
93 self._evars [evar.get_pseudo_hash()] = evar
94 # --- end of add_evar (...) ---
95
96 + def parse_ebuild_src_uri ( self, category_name ):
97 + return roverlay.util.ebuildparser.SrcUriParser.from_file (
98 + self._info ['ebuild_file'], self.create_vartable ( category_name )
99 + )
100 + # --- end of parse_ebuild_src_uri (...) ---
101 +
102 + def parse_ebuild_distfiles ( self, category_name ):
103 + parser = self.parse_ebuild_src_uri ( category_name )
104 + for distfile in parser.iter_local_files():
105 + yield distfile
106 + # --- end of parse_ebuild_distfiles (...) ---
107 +
108 def get_evars ( self ):
109 """Returns all ebuild variables."""
110 if hasattr ( self, '_evars' ):