]> git.ipfire.org Git - pakfire.git/blame - pakfire/packages/solv.py
Fix output of groups from packages in solv file.
[pakfire.git] / pakfire / packages / solv.py
CommitLineData
c605d735
MT
1#!/usr/bin/python
2
811d22ad 3import os
c605d735
MT
4import re
5
6import base
7import binary
8
9class SolvPackage(base.Package):
10 def __init__(self, pakfire, solvable):
11 base.Package.__init__(self, pakfire)
12
13 # Save solvable object
14 self.solvable = solvable
15
16 self.__evr = None
17
18 @property
19 def uuid(self):
20 return self.solvable.get_uuid()
21
22 @property
23 def hash1(self):
24 return self.solvable.get_hash1()
25
26 @property
27 def name(self):
28 return self.solvable.get_name()
29
30 @property
31 def evr(self):
32 if self.__evr is None:
33 m = re.match("([0-9]+\:)?([0-9A-Za-z\.]+)-?([0-9]+\.?[a-z0-9]+|[0-9]+)?",
34 self.solvable.get_evr())
35
36 if m:
37 (e, v, r) = m.groups()
38
39 if e:
40 e = e.replace(":", "")
41 e = int(e)
42
43 self.__evr = (e, v, r)
44
45 return self.__evr
46
47 @property
48 def epoch(self):
49 return self.evr[0]
50
51 @property
52 def version(self):
53 return self.evr[1]
54
55 @property
56 def release(self):
57 return self.evr[2]
58
59 @property
60 def arch(self):
61 return self.solvable.get_arch()
62
63 @property
64 def repo(self):
65 repo_name = self.solvable.get_repo_name()
66
67 return self.pakfire.repos.get_repo(repo_name)
68
69 @property
70 def summary(self):
71 return self.solvable.get_summary()
72
73 @property
74 def description(self):
75 return self.solvable.get_description()
76
77 @property
78 def groups(self):
2212640f
MT
79 groups = self.solvable.get_groups()
80
81 if groups:
82 return groups.split()
83
84 return []
c605d735
MT
85
86 @property
87 def license(self):
88 return self.solvable.get_license()
89
90 @property
91 def maintainer(self):
92 return self.solvable.get_maintainer()
93
94 @property
95 def url(self):
96 return self.solvable.get_url()
97
98 @property
99 def size(self):
100 return self.solvable.get_downloadsize()
101
102 @property
103 def uuid(self):
104 return self.solvable.get_uuid()
105
106 @property
107 def build_host(self):
108 return self.solvable.get_buildhost()
109
110 @property
111 def build_time(self):
112 return self.solvable.get_buildtime()
113
114 @property
115 def build_id(self):
116 return "XXX CURRENTLY NOT IMPLEMENTED"
117
118 @property
119 def provides(self):
120 return self.solvable.get_provides()
121
122 @property
123 def requires(self):
124 return self.solvable.get_requires()
125
126 @property
127 def obsoletes(self):
128 return self.solvable.get_obsoletes()
129
130 @property
131 def conflicts(self):
132 return self.solvable.get_conflicts()
133
134 @property
135 def filename(self):
136 return self.solvable.get_filename()
137
138 @property
139 def is_in_cache(self):
811d22ad
MT
140 # Local files are always kinda cached.
141 if self.repo.local:
142 return True
143
c605d735
MT
144 return self.repo.cache.exists("package/%s" % self.filename)
145
146 def get_from_cache(self):
811d22ad
MT
147 path = None
148
149 if self.repo.local:
150 path = os.path.join(self.repo.path, self.arch, self.filename)
151 return binary.BinaryPackage(self.pakfire, self.repo, path)
152 else:
153 filename = "packages/%s" % self.filename
154
155 if self.repo.cache.exists(filename):
156 path = self.repo.cache.abspath(filename)
c605d735 157
811d22ad
MT
158 if path:
159 return binary.BinaryPackage(self.pakfire, self.repo, path)
c605d735
MT
160
161 def download(self, text=""):
811d22ad
MT
162 if not self.repo.local:
163 self.repo.download(self, text=text)
c605d735
MT
164
165 return self.get_from_cache()