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: Fri, 02 Aug 2013 10:34:46
Message-Id: 1375438672.43ab1d2328ee2968dc0d5076f33629f859e12718.dywi@gentoo
1 commit: 43ab1d2328ee2968dc0d5076f33629f859e12718
2 Author: André Erdmann <dywi <AT> mailerd <DOT> de>
3 AuthorDate: Fri Aug 2 10:17:52 2013 +0000
4 Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
5 CommitDate: Fri Aug 2 10:17:52 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=43ab1d23
7
8 support suffixes $PV when importing ebuilds
9
10 Selfdep validation may fail/ignore when dealing with import ebuilds with a
11 version suffix ("_pre..." etc.).
12
13 ---
14 roverlay/packageinfo.py | 18 +++++++++++-------
15 roverlay/versiontuple.py | 30 +++++++++++++++++++++++++++---
16 2 files changed, 38 insertions(+), 10 deletions(-)
17
18 diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py
19 index 752f996..704807e 100644
20 --- a/roverlay/packageinfo.py
21 +++ b/roverlay/packageinfo.py
22 @@ -805,17 +805,21 @@ class PackageInfo ( object ):
23 pv_str, DONT_CARE, pr_str = pvr.partition ( '-r' )
24 pv, DONT_CARE, pv_suffix = pv_str.partition ( '_' )
25
26 + # non-digit chars in pv are not supported
27 + pv_list = [ int(z) for z in pv.split ( '.' ) ]
28 +
29 if pv_suffix:
30 # not supported
31 - raise NotImplementedError (
32 - "version suffix {!r} cannot be preserved for $PVR {!r}".format (
33 - pv_suffix, pvr
34 + self._info ['version'] = (
35 + roverlay.versiontuple.SuffixedIntVersionTuple (
36 + pv_list, pv_suffix
37 )
38 )
39 - # non-digit chars in pv are unsupported, too
40 - self._info ['version'] = roverlay.versiontuple.IntVersionTuple (
41 - int ( z ) for z in pv.split ( '.' )
42 - )
43 + else:
44 + self._info ['version'] = (
45 + roverlay.versiontuple.IntVersionTuple ( pv_list )
46 + )
47 +
48 self._info ['rev'] = int ( pr_str ) if pr_str else 0
49
50 self._info ['ebuild_verstr'] = pvr
51
52 diff --git a/roverlay/versiontuple.py b/roverlay/versiontuple.py
53 index 6586088..579471f 100644
54 --- a/roverlay/versiontuple.py
55 +++ b/roverlay/versiontuple.py
56 @@ -67,9 +67,9 @@ def pkgver_decorator ( func ):
57
58 class VersionTuple ( tuple ):
59
60 - def __init__ ( self, *args, **kwargs ):
61 - super ( VersionTuple, self ).__init__ ( *args, **kwargs )
62 - # --- end of __init__ (...) ---
63 + def __new__ ( cls, gen_tuple, *args, **kwargs ):
64 + return super ( VersionTuple, cls ).__new__ ( cls, gen_tuple )
65 + # --- end of __new__ (...) ---
66
67 def get_comparator ( self, mode ):
68 """Returns a function "this ~ other" that returns
69 @@ -228,4 +228,28 @@ class IntVersionTuple ( VersionTuple ):
70 return NotImplemented
71 # --- end of __gt__ (...) ---
72
73 + def __str__ ( self ):
74 + return '.'.join ( str(k) for k in self )
75 + # --- end of __str__ ( self )
76 +
77 # --- end of IntVersionTuple ---
78 +
79 +class SuffixedIntVersionTuple ( VersionTuple ):
80 + # inherit VersionTuple: does not implement comparision functions
81 +
82 + def __init__ ( self, gen_tuple, suffix ):
83 + super ( SuffixedIntVersionTuple, self ).__init__ ( gen_tuple )
84 + self.suffix = suffix
85 + # --- end of __init__ (...) ---
86 +
87 + def get_suffix_str ( self ):
88 + ret = str ( self.suffix )
89 + if not ret or ret[0] == '_':
90 + return ret
91 + else:
92 + return '_' + ret
93 + # --- end of get_suffix_str (...) ---
94 +
95 + def __str__ ( self ):
96 + return '.'.join ( str(k) for k in self ) + self.get_suffix_str()
97 + # --- end of __str__ (...) ----