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 | } |
