From 7fc020aa15d918b215575576d91160afae7f4d70 Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Mon, 4 Apr 2011 09:36:10 -0700 Subject: persist_data: raise KeyError on missing elements (Bitbake rev: a4f62433845c29f98c6a9746d5d2847bf9506ea5) Signed-off-by: Chris Larson Signed-off-by: Richard Purdie --- bitbake/lib/bb/fetch/__init__.py | 15 +++++++-------- bitbake/lib/bb/fetch/git.py | 18 ++++++++++-------- bitbake/lib/bb/fetch2/__init__.py | 15 +++++++-------- bitbake/lib/bb/persist_data.py | 3 +++ 4 files changed, 27 insertions(+), 24 deletions(-) (limited to 'bitbake/lib') diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py index 684e83d..95f0d9d 100644 --- a/bitbake/lib/bb/fetch/__init__.py +++ b/bitbake/lib/bb/fetch/__init__.py @@ -759,12 +759,11 @@ class Fetch(object): pd = bb.persist_data.persist(d) revs = pd['BB_URI_HEADREVS'] key = self.generate_revision_key(url, ud, d) - rev = revs[key] - if rev != None: - return str(rev) - - revs[key] = rev = self._latest_revision(url, ud, d) - return rev + try: + return revs[key] + except KeyError: + revs[key] = rev = self._latest_revision(url, ud, d) + return rev def sortable_revision(self, url, ud, d): """ @@ -778,13 +777,13 @@ class Fetch(object): key = self.generate_revision_key(url, ud, d) latest_rev = self._build_revision(url, ud, d) - last_rev = localcounts[key + '_rev'] + last_rev = localcounts.get(key + '_rev') uselocalcount = bb.data.getVar("BB_LOCALCOUNT_OVERRIDE", d, True) or False count = None if uselocalcount: count = Fetch.localcount_internal_helper(ud, d) if count is None: - count = localcounts[key + '_count'] + count = localcounts.get(key + '_count') if last_rev == latest_rev: return str(count + "+" + latest_rev) diff --git a/bitbake/lib/bb/fetch/git.py b/bitbake/lib/bb/fetch/git.py index 6b565e3..35908ca 100644 --- a/bitbake/lib/bb/fetch/git.py +++ b/bitbake/lib/bb/fetch/git.py @@ -246,18 +246,20 @@ class Git(Fetch): revs = persisted['BB_URI_HEADREVS'] key = self.generate_revision_key(url, ud, d, branch=True) - rev = revs[key] - if rev is None: + + try: + return revs[key] + except KeyError: # Compatibility with old key format, no branch included oldkey = self.generate_revision_key(url, ud, d, branch=False) - rev = revs[oldkey] - if rev is not None: - del revs[oldkey] - else: + try: + rev = revs[oldkey] + except KeyError: rev = self._latest_revision(url, ud, d) + else: + del revs[oldkey] revs[key] = rev - - return str(rev) + return rev def sortable_revision(self, url, ud, d): """ diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index ca0197e..a31e26b 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py @@ -806,12 +806,11 @@ class FetchMethod(object): pd = persist_data.persist(d) revs = pd['BB_URI_HEADREVS'] key = self.generate_revision_key(url, ud, d, name) - rev = revs[key] - if rev != None: - return str(rev) - - revs[key] = rev = self._latest_revision(url, ud, d, name) - return rev + try: + return revs[key] + except KeyError: + revs[key] = rev = self._latest_revision(url, ud, d, name) + return rev def sortable_revision(self, url, ud, d, name): """ @@ -825,13 +824,13 @@ class FetchMethod(object): key = self.generate_revision_key(url, ud, d, name) latest_rev = self._build_revision(url, ud, d, name) - last_rev = localcounts[key + '_rev'] + last_rev = localcounts.get(key + '_rev') uselocalcount = bb.data.getVar("BB_LOCALCOUNT_OVERRIDE", d, True) or False count = None if uselocalcount: count = FetchMethod.localcount_internal_helper(ud, d, name) if count is None: - count = localcounts[key + '_count'] or "0" + count = localcounts.get(key + '_count') or "0" if last_rev == latest_rev: return str(count + "+" + latest_rev) diff --git a/bitbake/lib/bb/persist_data.py b/bitbake/lib/bb/persist_data.py index f51a42e..eae64cf 100644 --- a/bitbake/lib/bb/persist_data.py +++ b/bitbake/lib/bb/persist_data.py @@ -69,8 +69,11 @@ class SQLTable(collections.MutableMapping): self.table, [key]) for row in data: return row[1] + raise KeyError(key) def __delitem__(self, key): + if key not in self: + raise KeyError(key) self._execute("DELETE from %s where key=?;" % self.table, [key]) def __setitem__(self, key, value): -- cgit v1.1