summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/package.bbclass13
-rw-r--r--meta/classes/prexport.bbclass45
-rw-r--r--meta/classes/primport.bbclass17
-rw-r--r--meta/classes/prserv.bbclass36
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
352python package_get_auto_pr() { 352python 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 @@
1PRSERV_DUMPOPT_VERSION = "${PRAUTOINX}"
2PRSERV_DUMPOPT_PKGARCH = ""
3PRSERV_DUMPOPT_CHECKSUM = ""
4PRSERV_DUMPOPT_COL = "0"
5
6PRSERV_DUMPDIR ??= "${LOG_DIR}/db"
7PRSERV_DUMPFILE ??= "${PRSERV_DUMPDIR}/prserv.inc"
8
9python 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
45addhandler 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 @@
1python 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
17addhandler 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 @@
1def 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
14def prserv_get_pr_auto(d): 1def 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