summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/distrodata.bbclass84
1 files changed, 37 insertions, 47 deletions
diff --git a/meta/classes/distrodata.bbclass b/meta/classes/distrodata.bbclass
index e1fc6dd3fd..092c372204 100644
--- a/meta/classes/distrodata.bbclass
+++ b/meta/classes/distrodata.bbclass
@@ -266,11 +266,15 @@ python do_checkpkg() {
266 import re 266 import re
267 import tempfile 267 import tempfile
268 import subprocess 268 import subprocess
269 import oe.recipeutils
270 from bb.utils import vercmp_string
271 from bb.fetch2 import FetchError, NoMethodError, decodeurl
269 272
270 """first check whether a uri is provided""" 273 """first check whether a uri is provided"""
271 src_uri = d.getVar('SRC_URI', True) 274 src_uri = d.getVar('SRC_URI', True)
272 if not src_uri: 275 if not src_uri:
273 return 276 return
277 uri_type, _, _, _, _, _ = decodeurl(src_uri)
274 278
275 """initialize log files.""" 279 """initialize log files."""
276 logpath = d.getVar('LOG_DIR', True) 280 logpath = d.getVar('LOG_DIR', True)
@@ -310,10 +314,7 @@ python do_checkpkg() {
310 314
311 pdesc = localdata.getVar('DESCRIPTION', True) 315 pdesc = localdata.getVar('DESCRIPTION', True)
312 pgrp = localdata.getVar('SECTION', True) 316 pgrp = localdata.getVar('SECTION', True)
313 if localdata.getVar('PRSPV', True): 317 pversion = localdata.getVar('PV', True)
314 pversion = localdata.getVar('PRSPV', True)
315 else:
316 pversion = localdata.getVar('PV', True)
317 plicense = localdata.getVar('LICENSE', True) 318 plicense = localdata.getVar('LICENSE', True)
318 psection = localdata.getVar('SECTION', True) 319 psection = localdata.getVar('SECTION', True)
319 phome = localdata.getVar('HOMEPAGE', True) 320 phome = localdata.getVar('HOMEPAGE', True)
@@ -325,61 +326,50 @@ python do_checkpkg() {
325 maintainer = localdata.getVar('RECIPE_MAINTAINER', True) 326 maintainer = localdata.getVar('RECIPE_MAINTAINER', True)
326 327
327 """ Get upstream version version """ 328 """ Get upstream version version """
328 pupver = None 329 pupver = ""
329 pstatus = "ErrUnknown" 330 pstatus = ""
330 found = 0 331
331 332 try:
332 for uri in src_uri.split(): 333 uv = oe.recipeutils.get_recipe_upstream_version(localdata)
333 m = re.compile('(?P<type>[^:]*)').match(uri) 334
334 if not m: 335 pupver = uv['version']
335 raise MalformedUrl(uri) 336 except Exception as e:
336 elif m.group('type') in ('http', 'https', 'ftp', 'cvs', 'svn', 'git'): 337 if e is FetchError:
337 found = 1
338 psrcuri = uri
339 pproto = m.group('type')
340 break
341 if not found:
342 pproto = "file"
343
344 if pproto in ['http', 'https', 'ftp', 'git']:
345 try:
346 ud = bb.fetch2.FetchData(psrcuri, d)
347 pupver = ud.method.latest_versionstring(ud, d)
348 if pproto == 'git':
349 if pupver == "":
350 pupver = pversion.rsplit("+")[0]
351 if re.search(pversion, "gitrAUTOINC"):
352 pupver += "+gitrAUTOINC+"
353 else:
354 pupver += "+gitAUTOINC+"
355 latest_revision = ud.method.latest_revision(ud, d, ud.names[0])
356 pupver += latest_revision[:10]
357 except Exception as inst:
358 bb.warn("%s: unexpected error: %s" % (pname, repr(inst)))
359 pstatus = "ErrAccess" 338 pstatus = "ErrAccess"
360 elif pproto == "file": 339 elif e is NoMethodError:
361 """Local files are always updated""" 340 pstatus = "ErrUnsupportedProto"
362 pupver = pversion 341 else:
363 else: 342 pstatus = "ErrUnknown"
364 pstatus = "ErrUnsupportedProto"
365 bb.note("do_checkpkg, protocol %s isn't implemented" % pproto)
366 343
344 """Set upstream version status"""
367 if not pupver: 345 if not pupver:
368 pupver = "N/A" 346 pupver = "N/A"
369 elif pupver == pversion:
370 pstatus = "MATCH"
371 else: 347 else:
372 pstatus = "UPDATE" 348 pv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pversion, uri_type)
349 upv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pupver, uri_type)
350
351 cmp = vercmp_string(pv, upv)
352 if cmp == -1:
353 pstatus = "UPDATE"
354 elif cmp == 0:
355 pstatus = "MATCH"
373 356
374 """Read from manual distro tracking fields as alternative""" 357 """Read from manual distro tracking fields as alternative"""
375 pmver = d.getVar("RECIPE_UPSTREAM_VERSION", True) 358 pmver = d.getVar("RECIPE_UPSTREAM_VERSION", True)
376 if not pmver: 359 if not pmver:
377 pmver = "N/A" 360 pmver = "N/A"
378 pmstatus = "ErrNoRecipeData" 361 pmstatus = "ErrNoRecipeData"
379 elif pmver == pupver:
380 pmstatus = "MATCH"
381 else: 362 else:
382 pmstatus = "UPDATE" 363 mpv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pmver, uri_type)
364 upv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pupver, uri_type)
365
366 cmp = vercmp_string(mpv, upv)
367 if cmp == -1:
368 pmstatus = "UPDATE"
369 elif cmp == 0:
370 pmstatus = "MATCH"
371 else:
372 pmstatus = ""
383 373
384 pdepends = "".join(pdepends.split("\t")) 374 pdepends = "".join(pdepends.split("\t"))
385 pdesc = "".join(pdesc.split("\t")) 375 pdesc = "".join(pdesc.split("\t"))