aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Opdenacker <michael.opdenacker@bootlin.com>2024-05-11 16:31:34 +0530
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-05-21 14:23:41 +0100
commit000704a53470ab1ead840403b5531f22ebf1fd49 (patch)
tree25b5f4ab37b32c658239c11ac27959be558574bf
parentb7f6c085a7cf8ac83695242a0299e2d5f7abc69a (diff)
downloadbitbake-contrib-000704a53470ab1ead840403b5531f22ebf1fd49.tar.gz
prserv: import simplification
Simplify the importone() hook: - to make it independent from the "history" mode which is client specific. - remove the "history" parameter - we want all values to be imported for binary reproducibility purposes. - using the store_value() function (which warrants you don't save the same value twice and doesn't write when you're using a read-only server) is enough. Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Cc: Joshua Watt <JPEWhacker@gmail.com> Cc: Tim Orling <ticotimo@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/prserv/client.py4
-rw-r--r--lib/prserv/db.py64
-rw-r--r--lib/prserv/serv.py3
3 files changed, 6 insertions, 65 deletions
diff --git a/lib/prserv/client.py b/lib/prserv/client.py
index 565c6f387..9f5794c43 100644
--- a/lib/prserv/client.py
+++ b/lib/prserv/client.py
@@ -42,9 +42,9 @@ class PRAsyncClient(bb.asyncrpc.AsyncClient):
if response:
return response["value"]
- async def importone(self, version, pkgarch, checksum, value, history=False):
+ async def importone(self, version, pkgarch, checksum, value):
response = await self.invoke(
- {"import-one": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "value": value, "history": history}}
+ {"import-one": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "value": value}}
)
if response:
return response["value"]
diff --git a/lib/prserv/db.py b/lib/prserv/db.py
index 88ed8e212..2da493ddf 100644
--- a/lib/prserv/db.py
+++ b/lib/prserv/db.py
@@ -192,67 +192,9 @@ class PRTable(object):
self.store_value(version, pkgarch, checksum, value)
return value
- def _import_hist(self, version, pkgarch, checksum, value):
- if self.read_only:
- return None
-
- val = None
- with closing(self.conn.cursor()) as cursor:
- data = cursor.execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table,
- (version, pkgarch, checksum))
- row = data.fetchone()
- if row is not None:
- val=row[0]
- else:
- #no value found, try to insert
- try:
- cursor.execute("INSERT INTO %s VALUES (?, ?, ?, ?);" % (self.table),
- (version, pkgarch, checksum, value))
- except sqlite3.IntegrityError as exc:
- logger.error(str(exc))
-
- self.conn.commit()
-
- data = cursor.execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table,
- (version, pkgarch, checksum))
- row = data.fetchone()
- if row is not None:
- val = row[0]
- return val
-
- def _import_no_hist(self, version, pkgarch, checksum, value):
- if self.read_only:
- return None
-
- with closing(self.conn.cursor()) as cursor:
- try:
- #try to insert
- cursor.execute("INSERT INTO %s VALUES (?, ?, ?, ?);" % (self.table),
- (version, pkgarch, checksum, value))
- except sqlite3.IntegrityError as exc:
- #already have the record, try to update
- try:
- cursor.execute("UPDATE %s SET value=? WHERE version=? AND pkgarch=? AND checksum=? AND value<?"
- % (self.table),
- (value, version, pkgarch, checksum, value))
- except sqlite3.IntegrityError as exc:
- logger.error(str(exc))
-
- self.conn.commit()
-
- data = cursor.execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=? AND value>=?;" % self.table,
- (version, pkgarch, checksum, value))
- row=data.fetchone()
- if row is not None:
- return row[0]
- else:
- return None
-
- def importone(self, version, pkgarch, checksum, value, history=False):
- if history:
- return self._import_hist(version, pkgarch, checksum, value)
- else:
- return self._import_no_hist(version, pkgarch, checksum, value)
+ def importone(self, version, pkgarch, checksum, value):
+ self.store_value(version, pkgarch, checksum, value)
+ return value
def export(self, version, pkgarch, checksum, colinfo, history=False):
metainfo = {}
diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py
index 3992056f8..e17588630 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -179,9 +179,8 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
pkgarch = request["pkgarch"]
checksum = request["checksum"]
value = request["value"]
- history = request["history"]
- value = self.server.table.importone(version, pkgarch, checksum, value, history)
+ value = self.server.table.importone(version, pkgarch, checksum, value)
if value is not None:
response = {"value": value}