summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/prservice.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oe/prservice.py')
-rw-r--r--meta/lib/oe/prservice.py33
1 files changed, 16 insertions, 17 deletions
diff --git a/meta/lib/oe/prservice.py b/meta/lib/oe/prservice.py
index fcdbe66c19..c41242c878 100644
--- a/meta/lib/oe/prservice.py
+++ b/meta/lib/oe/prservice.py
@@ -1,4 +1,6 @@
1# 1#
2# Copyright OpenEmbedded Contributors
3#
2# SPDX-License-Identifier: GPL-2.0-only 4# SPDX-License-Identifier: GPL-2.0-only
3# 5#
4 6
@@ -7,11 +9,10 @@ def prserv_make_conn(d, check = False):
7 host_params = list([_f for _f in (d.getVar("PRSERV_HOST") or '').split(':') if _f]) 9 host_params = list([_f for _f in (d.getVar("PRSERV_HOST") or '').split(':') if _f])
8 try: 10 try:
9 conn = None 11 conn = None
10 conn = prserv.serv.PRServerConnection(host_params[0], int(host_params[1])) 12 conn = prserv.serv.connect(host_params[0], int(host_params[1]))
11 if check: 13 if check:
12 if not conn.ping(): 14 if not conn.ping():
13 raise Exception('service not available') 15 raise Exception('service not available')
14 d.setVar("__PRSERV_CONN",conn)
15 except Exception as exc: 16 except Exception as exc:
16 bb.fatal("Connecting to PR service %s:%s failed: %s" % (host_params[0], host_params[1], str(exc))) 17 bb.fatal("Connecting to PR service %s:%s failed: %s" % (host_params[0], host_params[1], str(exc)))
17 18
@@ -22,31 +23,29 @@ def prserv_dump_db(d):
22 bb.error("Not using network based PR service") 23 bb.error("Not using network based PR service")
23 return None 24 return None
24 25
25 conn = d.getVar("__PRSERV_CONN") 26 conn = prserv_make_conn(d)
26 if conn is None: 27 if conn is None:
27 conn = prserv_make_conn(d) 28 bb.error("Making connection failed to remote PR service")
28 if conn is None: 29 return None
29 bb.error("Making connection failed to remote PR service")
30 return None
31 30
32 #dump db 31 #dump db
33 opt_version = d.getVar('PRSERV_DUMPOPT_VERSION') 32 opt_version = d.getVar('PRSERV_DUMPOPT_VERSION')
34 opt_pkgarch = d.getVar('PRSERV_DUMPOPT_PKGARCH') 33 opt_pkgarch = d.getVar('PRSERV_DUMPOPT_PKGARCH')
35 opt_checksum = d.getVar('PRSERV_DUMPOPT_CHECKSUM') 34 opt_checksum = d.getVar('PRSERV_DUMPOPT_CHECKSUM')
36 opt_col = ("1" == d.getVar('PRSERV_DUMPOPT_COL')) 35 opt_col = ("1" == d.getVar('PRSERV_DUMPOPT_COL'))
37 return conn.export(opt_version, opt_pkgarch, opt_checksum, opt_col) 36 d = conn.export(opt_version, opt_pkgarch, opt_checksum, opt_col)
37 conn.close()
38 return d
38 39
39def prserv_import_db(d, filter_version=None, filter_pkgarch=None, filter_checksum=None): 40def prserv_import_db(d, filter_version=None, filter_pkgarch=None, filter_checksum=None):
40 if not d.getVar('PRSERV_HOST'): 41 if not d.getVar('PRSERV_HOST'):
41 bb.error("Not using network based PR service") 42 bb.error("Not using network based PR service")
42 return None 43 return None
43 44
44 conn = d.getVar("__PRSERV_CONN") 45 conn = prserv_make_conn(d)
45 if conn is None: 46 if conn is None:
46 conn = prserv_make_conn(d) 47 bb.error("Making connection failed to remote PR service")
47 if conn is None: 48 return None
48 bb.error("Making connection failed to remote PR service")
49 return None
50 #get the entry values 49 #get the entry values
51 imported = [] 50 imported = []
52 prefix = "PRAUTO$" 51 prefix = "PRAUTO$"
@@ -70,6 +69,7 @@ def prserv_import_db(d, filter_version=None, filter_pkgarch=None, filter_checksu
70 bb.error("importing(%s,%s,%s,%d) failed. DB may have larger value %d" % (version,pkgarch,checksum,value,ret)) 69 bb.error("importing(%s,%s,%s,%d) failed. DB may have larger value %d" % (version,pkgarch,checksum,value,ret))
71 else: 70 else:
72 imported.append((version,pkgarch,checksum,value)) 71 imported.append((version,pkgarch,checksum,value))
72 conn.close()
73 return imported 73 return imported
74 74
75def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False): 75def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False):
@@ -78,8 +78,7 @@ def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False):
78 bb.utils.mkdirhier(d.getVar('PRSERV_DUMPDIR')) 78 bb.utils.mkdirhier(d.getVar('PRSERV_DUMPDIR'))
79 df = d.getVar('PRSERV_DUMPFILE') 79 df = d.getVar('PRSERV_DUMPFILE')
80 #write data 80 #write data
81 lf = bb.utils.lockfile("%s.lock" % df) 81 with open(df, "a") as f, bb.utils.fileslocked(["%s.lock" % df]) as locks:
82 with open(df, "a") as f:
83 if metainfo: 82 if metainfo:
84 #dump column info 83 #dump column info
85 f.write("#PR_core_ver = \"%s\"\n\n" % metainfo['core_ver']); 84 f.write("#PR_core_ver = \"%s\"\n\n" % metainfo['core_ver']);
@@ -113,7 +112,6 @@ def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False):
113 if not nomax: 112 if not nomax:
114 for i in idx: 113 for i in idx:
115 f.write("PRAUTO_%s_%s = \"%s\"\n" % (str(datainfo[idx[i]]['version']),str(datainfo[idx[i]]['pkgarch']),str(datainfo[idx[i]]['value']))) 114 f.write("PRAUTO_%s_%s = \"%s\"\n" % (str(datainfo[idx[i]]['version']),str(datainfo[idx[i]]['pkgarch']),str(datainfo[idx[i]]['value'])))
116 bb.utils.unlockfile(lf)
117 115
118def prserv_check_avail(d): 116def prserv_check_avail(d):
119 host_params = list([_f for _f in (d.getVar("PRSERV_HOST") or '').split(':') if _f]) 117 host_params = list([_f for _f in (d.getVar("PRSERV_HOST") or '').split(':') if _f])
@@ -125,4 +123,5 @@ def prserv_check_avail(d):
125 except TypeError: 123 except TypeError:
126 bb.fatal('Undefined/incorrect PRSERV_HOST value. Format: "host:port"') 124 bb.fatal('Undefined/incorrect PRSERV_HOST value. Format: "host:port"')
127 else: 125 else:
128 prserv_make_conn(d, True) 126 conn = prserv_make_conn(d, True)
127 conn.close()