Lines 1-6
Link Here
|
1 |
import re,string |
1 |
import re,string |
2 |
|
2 |
|
3 |
ver_regexp = re.compile("^(cvs\\.)?(\\d+)((\\.\\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\\d*)*)(-r(\\d+))?$") |
3 |
ver_regexp = re.compile("^(cvs\\.)?(\\d+)((\\.\\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\\d*)*)(-r(\\d+))?(-local(\\d+))?$") |
4 |
suffix_regexp = re.compile("^(alpha|beta|rc|pre|p)(\\d*)$") |
4 |
suffix_regexp = re.compile("^(alpha|beta|rc|pre|p)(\\d*)$") |
5 |
suffix_value = {"pre": -2, "p": 0, "alpha": -4, "beta": -3, "rc": -1} |
5 |
suffix_value = {"pre": -2, "p": 0, "alpha": -4, "beta": -3, "rc": -1} |
6 |
endversion_keys = ["pre", "p", "alpha", "beta", "rc"] |
6 |
endversion_keys = ["pre", "p", "alpha", "beta", "rc"] |
Lines 110-116
Link Here
|
110 |
except ValueError: r2 = 0 |
110 |
except ValueError: r2 = 0 |
111 |
return r1 - r2 |
111 |
return r1 - r2 |
112 |
|
112 |
|
113 |
# the suffix part is equal to, so finally check the revision |
113 |
# the suffix part is equal too, so check the revision |
114 |
if match1.group(10): |
114 |
if match1.group(10): |
115 |
r1 = string.atoi(match1.group(10)) |
115 |
r1 = string.atoi(match1.group(10)) |
116 |
else: |
116 |
else: |
Lines 119-126
Link Here
|
119 |
r2 = string.atoi(match2.group(10)) |
119 |
r2 = string.atoi(match2.group(10)) |
120 |
else: |
120 |
else: |
121 |
r2 = 0 |
121 |
r2 = 0 |
122 |
vercmp_cache[mykey] = r1 - r2 |
122 |
|
123 |
return r1 - r2 |
123 |
if r1 != r2: |
|
|
124 |
vercmp_cache[mykey] = r1 - r2 |
125 |
return r1 - r2 |
126 |
|
127 |
# if revision part is equal, finally check local part |
128 |
if match1.group(12): |
129 |
loc1 = string.atoi(match1.group(12)) |
130 |
else: |
131 |
loc1 = 0 |
132 |
if match2.group(12): |
133 |
loc2 = string.atoi(match2.group(12)) |
134 |
else: |
135 |
loc2 = 0 |
136 |
|
137 |
vercmp_cache[mykey] = loc1 - loc2 |
138 |
return loc1 - loc2 |
124 |
|
139 |
|
125 |
def pkgcmp(pkg1, pkg2): |
140 |
def pkgcmp(pkg1, pkg2): |
126 |
""" |
141 |
""" |
Lines 146-163
Link Here
|
146 |
""" |
161 |
""" |
147 |
if pkg1[0] != pkg2[0]: |
162 |
if pkg1[0] != pkg2[0]: |
148 |
return None |
163 |
return None |
149 |
mycmp=vercmp(pkg1[1],pkg2[1]) |
164 |
|
150 |
if mycmp>0: |
165 |
return vercmp("-".join(pkg1[1:]),"-".join(pkg2[1:])) |
151 |
return 1 |
|
|
152 |
if mycmp<0: |
153 |
return -1 |
154 |
r1=string.atof(pkg1[2][1:]) |
155 |
r2=string.atof(pkg2[2][1:]) |
156 |
if r1>r2: |
157 |
return 1 |
158 |
if r2>r1: |
159 |
return -1 |
160 |
return 0 |
161 |
|
166 |
|
162 |
|
167 |
|
163 |
pkgcache={} |
168 |
pkgcache={} |
Lines 182-187
Link Here
|
182 |
print "!!! Name error in",mypkg+": empty \"-\" part." |
187 |
print "!!! Name error in",mypkg+": empty \"-\" part." |
183 |
pkgcache[mypkg]=None |
188 |
pkgcache[mypkg]=None |
184 |
return None |
189 |
return None |
|
|
190 |
|
191 |
#verify loc |
192 |
locok=0 |
193 |
myloc=myparts[-1] |
194 |
if len(myloc) and myloc[0:5]=="local": |
195 |
try: |
196 |
string.atoi(myloc[5:]) |
197 |
locok=1 |
198 |
except: |
199 |
pass |
200 |
if locok: |
201 |
local = myparts[-1] |
202 |
del myparts[-1] |
203 |
else: |
204 |
local = "local0" |
185 |
|
205 |
|
186 |
#verify rev |
206 |
#verify rev |
187 |
revok=0 |
207 |
revok=0 |
Lines 209-215
Link Here
|
209 |
pkgcache[mypkg]=None |
229 |
pkgcache[mypkg]=None |
210 |
return None |
230 |
return None |
211 |
#names can't have versiony looking parts |
231 |
#names can't have versiony looking parts |
212 |
myval=[string.join(myparts[:verPos],"-"),myparts[verPos],revision] |
232 |
myval=[string.join(myparts[:verPos],"-"),myparts[verPos],revision,local] |
213 |
pkgcache[mypkg]=myval |
233 |
pkgcache[mypkg]=myval |
214 |
return myval |
234 |
return myval |
215 |
else: |
235 |
else: |