]>
Commit | Line | Data |
---|---|---|
c605d735 MT |
1 | #!/usr/bin/python |
2 | ||
811d22ad | 3 | import os |
c605d735 MT |
4 | import re |
5 | ||
6 | import base | |
7 | import binary | |
8 | ||
9 | class 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() |