diff options
Diffstat (limited to 'meta/lib/oe/prservice.py')
| -rw-r--r-- | meta/lib/oe/prservice.py | 33 |
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 | ||
| 39 | def prserv_import_db(d, filter_version=None, filter_pkgarch=None, filter_checksum=None): | 40 | def 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 | ||
| 75 | def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False): | 75 | def 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 | ||
| 118 | def prserv_check_avail(d): | 116 | def 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() | ||
