diff options
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/package.bbclass | 13 | ||||
-rw-r--r-- | meta/classes/prexport.bbclass | 45 | ||||
-rw-r--r-- | meta/classes/primport.bbclass | 17 | ||||
-rw-r--r-- | meta/classes/prserv.bbclass | 36 |
4 files changed, 86 insertions, 25 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 9040eb40ba..65e65715ea 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass | |||
@@ -351,10 +351,17 @@ def runtime_mapping_rename (varname, d): | |||
351 | 351 | ||
352 | python package_get_auto_pr() { | 352 | python package_get_auto_pr() { |
353 | if d.getVar('USE_PR_SERV', True) != "0": | 353 | if d.getVar('USE_PR_SERV', True) != "0": |
354 | auto_pr=prserv_get_pr_auto(d) | 354 | try: |
355 | if auto_pr is None: | 355 | auto_pr=prserv_get_pr_auto(d) |
356 | bb.fatal("Can NOT get auto PR revision from remote PR service") | 356 | except Exception as e: |
357 | bb.fatal("Can NOT get PRAUTO, exception %s" % str(e)) | ||
357 | return | 358 | return |
359 | if auto_pr is None: | ||
360 | if d.getVar('PRSERV_LOCKDOWN', True): | ||
361 | bb.fatal("Can NOT get PRAUTO from lockdown exported file") | ||
362 | else: | ||
363 | bb.fatal("Can NOT get PRAUTO from remote PR service") | ||
364 | return | ||
358 | d.setVar('PRAUTO',str(auto_pr)) | 365 | d.setVar('PRAUTO',str(auto_pr)) |
359 | } | 366 | } |
360 | 367 | ||
diff --git a/meta/classes/prexport.bbclass b/meta/classes/prexport.bbclass new file mode 100644 index 0000000000..5b5b707a88 --- /dev/null +++ b/meta/classes/prexport.bbclass | |||
@@ -0,0 +1,45 @@ | |||
1 | PRSERV_DUMPOPT_VERSION = "${PRAUTOINX}" | ||
2 | PRSERV_DUMPOPT_PKGARCH = "" | ||
3 | PRSERV_DUMPOPT_CHECKSUM = "" | ||
4 | PRSERV_DUMPOPT_COL = "0" | ||
5 | |||
6 | PRSERV_DUMPDIR ??= "${LOG_DIR}/db" | ||
7 | PRSERV_DUMPFILE ??= "${PRSERV_DUMPDIR}/prserv.inc" | ||
8 | |||
9 | python prexport_handler () { | ||
10 | import bb.event | ||
11 | if not e.data: | ||
12 | return | ||
13 | |||
14 | if isinstance(e, bb.event.RecipeParsed): | ||
15 | import oe.prservice | ||
16 | #get all PR values for the current PRAUTOINX | ||
17 | ver = e.data.getVar('PRSERV_DUMPOPT_VERSION', True) | ||
18 | ver = ver.replace('%','-') | ||
19 | retval = oe.prservice.prserv_dump_db(e.data) | ||
20 | if not retval: | ||
21 | bb.fatal("prexport_handler: export failed!") | ||
22 | (metainfo, datainfo) = retval | ||
23 | if not datainfo: | ||
24 | bb.error("prexport_handler: No AUROPR values found for %s" % ver) | ||
25 | return | ||
26 | oe.prservice.prserv_export_tofile(e.data, None, datainfo, False) | ||
27 | elif isinstance(e, bb.event.ParseStarted): | ||
28 | import bb.utils | ||
29 | #remove dumpfile | ||
30 | bb.utils.remove(e.data.getVar('PRSERV_DUMPFILE', True)) | ||
31 | elif isinstance(e, bb.event.ParseCompleted): | ||
32 | import oe.prservice | ||
33 | #dump meta info of tables | ||
34 | d = e.data.createCopy() | ||
35 | d.setVar('PRSERV_DUMPOPT_COL', "1") | ||
36 | retval = oe.prservice.prserv_dump_db(d) | ||
37 | if not retval: | ||
38 | bb.error("prexport_handler: export failed!") | ||
39 | return | ||
40 | (metainfo, datainfo) = retval | ||
41 | oe.prservice.prserv_export_tofile(d, metainfo, None, True) | ||
42 | |||
43 | } | ||
44 | |||
45 | addhandler prexport_handler | ||
diff --git a/meta/classes/primport.bbclass b/meta/classes/primport.bbclass new file mode 100644 index 0000000000..08e5a8f426 --- /dev/null +++ b/meta/classes/primport.bbclass | |||
@@ -0,0 +1,17 @@ | |||
1 | python primport_handler () { | ||
2 | import bb.event | ||
3 | if not e.data: | ||
4 | return | ||
5 | |||
6 | if isinstance(e, bb.event.ParseCompleted): | ||
7 | import oe.prservice | ||
8 | #import all exported AUTOPR values | ||
9 | imported = oe.prservice.prserv_import_db(e.data) | ||
10 | if imported is None: | ||
11 | bb.fatal("import failed!") | ||
12 | |||
13 | for (version, pkgarch, checksum, value) in imported: | ||
14 | bb.note("imported (%s,%s,%s,%d)" % (version, pkgarch, checksum, value)) | ||
15 | } | ||
16 | |||
17 | addhandler primport_handler | ||
diff --git a/meta/classes/prserv.bbclass b/meta/classes/prserv.bbclass index 18b8589a7b..0825306f91 100644 --- a/meta/classes/prserv.bbclass +++ b/meta/classes/prserv.bbclass | |||
@@ -1,29 +1,21 @@ | |||
1 | def prserv_make_conn(d): | ||
2 | import prserv.serv | ||
3 | host=d.getVar("PRSERV_HOST",True) | ||
4 | port=d.getVar("PRSERV_PORT",True) | ||
5 | try: | ||
6 | conn=None | ||
7 | conn=prserv.serv.PRServerConnection(host,int(port)) | ||
8 | d.setVar("__PRSERV_CONN",conn) | ||
9 | except Exception, exc: | ||
10 | bb.fatal("Connecting to PR service %s:%s failed: %s" % (host, port, str(exc))) | ||
11 | |||
12 | return conn | ||
13 | |||
14 | def prserv_get_pr_auto(d): | 1 | def prserv_get_pr_auto(d): |
15 | if d.getVar('USE_PR_SERV', True) != "0": | 2 | import oe.prservice |
3 | if d.getVar('USE_PR_SERV', True) != "1": | ||
16 | bb.warn("Not using network based PR service") | 4 | bb.warn("Not using network based PR service") |
17 | return None | 5 | return None |
18 | 6 | ||
19 | conn=d.getVar("__PRSERV_CONN", True) | 7 | version = d.getVar("PRAUTOINX", True) |
20 | if conn is None: | 8 | pkgarch = d.getVar("PACKAGE_ARCH", True) |
21 | conn=prserv_make_conn(d) | 9 | checksum = d.getVar("BB_TASKHASH", True) |
10 | |||
11 | if d.getVar('PRSERV_LOCKDOWN', True): | ||
12 | auto_rev = d.getVar('PRAUTO_' + version + '_' + pkgarch, True) or d.getVar('PRAUTO_' + version, True) or None | ||
13 | else: | ||
14 | conn = d.getVar("__PRSERV_CONN", True) | ||
22 | if conn is None: | 15 | if conn is None: |
23 | return None | 16 | conn = oe.prservice.prserv_make_conn(d) |
17 | if conn is None: | ||
18 | return None | ||
19 | auto_rev = conn.getPR(version, pkgarch, checksum) | ||
24 | 20 | ||
25 | version=d.getVar("PF", True) | ||
26 | checksum=d.getVar("BB_TASKHASH", True) | ||
27 | auto_rev=conn.getPR(version,checksum) | ||
28 | bb.debug(1,"prserv_get_pr_auto: version: %s checksum: %s result %d" % (version, checksum, auto_rev)) | ||
29 | return auto_rev | 21 | return auto_rev |