diff options
Diffstat (limited to 'meta/classes/utility-tasks.bbclass')
-rw-r--r-- | meta/classes/utility-tasks.bbclass | 72 |
1 files changed, 64 insertions, 8 deletions
diff --git a/meta/classes/utility-tasks.bbclass b/meta/classes/utility-tasks.bbclass index c3001ecfc8..a4db4f8beb 100644 --- a/meta/classes/utility-tasks.bbclass +++ b/meta/classes/utility-tasks.bbclass | |||
@@ -276,7 +276,6 @@ python do_checkpkg() { | |||
276 | 276 | ||
277 | """generate package information from .bb file""" | 277 | """generate package information from .bb file""" |
278 | pname = bb.data.getVar('PN', d, 1) | 278 | pname = bb.data.getVar('PN', d, 1) |
279 | pcurver = bb.data.getVar('PV', d, 1) | ||
280 | pdesc = bb.data.getVar('DESCRIPTION', d, 1) | 279 | pdesc = bb.data.getVar('DESCRIPTION', d, 1) |
281 | pgrp = bb.data.getVar('SECTION', d, 1) | 280 | pgrp = bb.data.getVar('SECTION', d, 1) |
282 | 281 | ||
@@ -296,6 +295,11 @@ python do_checkpkg() { | |||
296 | 295 | ||
297 | (type, host, path, user, pswd, parm) = bb.decodeurl(uri) | 296 | (type, host, path, user, pswd, parm) = bb.decodeurl(uri) |
298 | if type in ['http', 'https', 'ftp']: | 297 | if type in ['http', 'https', 'ftp']: |
298 | pcurver = bb.data.getVar('PV', d, 1) | ||
299 | else: | ||
300 | pcurver = bb.data.getVar("SRCREV", d, 1) | ||
301 | |||
302 | if type in ['http', 'https', 'ftp']: | ||
299 | newver = pcurver | 303 | newver = pcurver |
300 | altpath = path | 304 | altpath = path |
301 | dirver = "-" | 305 | dirver = "-" |
@@ -342,12 +346,52 @@ python do_checkpkg() { | |||
342 | if re.match("Err", newver): | 346 | if re.match("Err", newver): |
343 | pstatus = newver + ":" + altpath + ":" + dirver + ":" + curname | 347 | pstatus = newver + ":" + altpath + ":" + dirver + ":" + curname |
344 | elif type == 'git': | 348 | elif type == 'git': |
345 | """N.B. Now hardcode UPDATE for git/svn/cvs.""" | 349 | if user: |
346 | pupver = "master" | 350 | gituser = user + '@' |
347 | pstatus = "UPDATE" | 351 | else: |
352 | gituser = "" | ||
353 | |||
354 | if 'protocol' in parm: | ||
355 | gitproto = parm['protocol'] | ||
356 | else: | ||
357 | gitproto = "rsync" | ||
358 | |||
359 | gitcmd = "git ls-remote %s://%s%s%s HEAD 2>&1" % (gitproto, gituser, host, path) | ||
360 | print gitcmd | ||
361 | ver = os.popen(gitcmd).read() | ||
362 | if ver and re.search("HEAD", ver): | ||
363 | pupver = ver.split("\t")[0] | ||
364 | if pcurver == pupver: | ||
365 | pstatus = "MATCH" | ||
366 | else: | ||
367 | pstatus = "UPDATE" | ||
368 | else: | ||
369 | pstatus = "ErrGitAccess" | ||
348 | elif type == 'svn': | 370 | elif type == 'svn': |
349 | pupver = "HEAD" | 371 | options = [] |
350 | pstatus = "UPDATE" | 372 | if user: |
373 | options.append("--username %s" % user) | ||
374 | if pswd: | ||
375 | options.append("--password %s" % pswd) | ||
376 | svnproto = 'svn' | ||
377 | if 'proto' in parm: | ||
378 | svnproto = parm['proto'] | ||
379 | if 'rev' in parm: | ||
380 | pcurver = parm['rev'] | ||
381 | |||
382 | svncmd = "svn info %s %s://%s%s/%s/ 2>&1" % (" ".join(options), svnproto, host, path, parm["module"]) | ||
383 | print svncmd | ||
384 | svninfo = os.popen(svncmd).read() | ||
385 | for line in svninfo.split("\n"): | ||
386 | if re.search("^Last Changed Rev:", line): | ||
387 | pupver = line.split(" ")[-1] | ||
388 | if pcurver == pupver: | ||
389 | pstatus = "MATCH" | ||
390 | else: | ||
391 | pstatus = "UPDATE" | ||
392 | |||
393 | if re.match("Err", pstatus): | ||
394 | pstatus = "ErrSvnAccess" | ||
351 | elif type == 'cvs': | 395 | elif type == 'cvs': |
352 | pupver = "HEAD" | 396 | pupver = "HEAD" |
353 | pstatus = "UPDATE" | 397 | pstatus = "UPDATE" |
@@ -360,10 +404,22 @@ python do_checkpkg() { | |||
360 | 404 | ||
361 | if re.match("Err", pstatus): | 405 | if re.match("Err", pstatus): |
362 | pstatus += ":%s%s" % (host, path) | 406 | pstatus += ":%s%s" % (host, path) |
407 | |||
408 | """Read from manual distro tracking fields as alternative""" | ||
409 | pmver = bb.data.getVar("RECIPE_LATEST_VERSION", d, 1) | ||
410 | if not pmver: | ||
411 | pmver = "N/A" | ||
412 | pmstatus = "ErrNoRecipeData" | ||
413 | else: | ||
414 | if pmver == pcurver: | ||
415 | pmstatus = "MATCH" | ||
416 | else: | ||
417 | pmstatus = "UPDATE" | ||
418 | |||
363 | lf = bb.utils.lockfile(logfile + ".lock") | 419 | lf = bb.utils.lockfile(logfile + ".lock") |
364 | f = open(logfile, "a") | 420 | f = open(logfile, "a") |
365 | f.write("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" % \ | 421 | f.write("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" % \ |
366 | (pname, pgrp, pproto, pcurver, pupver, pstatus, pdesc)) | 422 | (pname, pgrp, pproto, pcurver, pmver, pupver, pmstatus, pstatus, pdesc)) |
367 | f.close() | 423 | f.close() |
368 | bb.utils.unlockfile(lf) | 424 | bb.utils.unlockfile(lf) |
369 | } | 425 | } |