* [PATCH 0/2][PULL] "__depends/__base_depends" ordering and config hash improvement
@ 2012-04-16 13:17 Dongxiao Xu
2012-04-16 13:17 ` [PATCH 1/2] bitbake: Retain order for __depends and __base_depends Dongxiao Xu
2012-04-16 13:17 ` [PATCH 2/2] data_smart: Improve the calculation of config hash Dongxiao Xu
0 siblings, 2 replies; 3+ messages in thread
From: Dongxiao Xu @ 2012-04-16 13:17 UTC (permalink / raw)
To: bitbake-devel
Hi Richard,
This pull request contains commits that:
1) Retain order of "__depends" and "__base_depends".
2) Improve the config hash calculation.
Please help to review and pull.
Thanks,
Dongxiao
The following changes since commit 98694c1dbc276cc151f393db67bfd43442da28ba:
Hob: fixed a little view issue about package selection page (2012-04-16 12:56:15 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib dxu4/hob-bugfix
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dxu4/hob-bugfix
Dongxiao Xu (2):
bitbake: Retain order for __depends and __base_depends
data_smart: Improve the calculation of config hash
lib/bb/cache.py | 6 ++++--
lib/bb/cooker.py | 6 ++++--
lib/bb/data_smart.py | 7 ++++---
lib/bb/parse/__init__.py | 12 ++++++++----
4 files changed, 20 insertions(+), 11 deletions(-)
--
1.7.4.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] bitbake: Retain order for __depends and __base_depends
2012-04-16 13:17 [PATCH 0/2][PULL] "__depends/__base_depends" ordering and config hash improvement Dongxiao Xu
@ 2012-04-16 13:17 ` Dongxiao Xu
2012-04-16 13:17 ` [PATCH 2/2] data_smart: Improve the calculation of config hash Dongxiao Xu
1 sibling, 0 replies; 3+ messages in thread
From: Dongxiao Xu @ 2012-04-16 13:17 UTC (permalink / raw)
To: bitbake-devel
Bitbake take seriously with variables order, therefore when setting
values to __depends and __base_depends, we need to retain its order.
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
---
lib/bb/cache.py | 6 ++++--
lib/bb/cooker.py | 6 ++++--
lib/bb/parse/__init__.py | 12 ++++++++----
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index 47e814b..a114582 100644
--- a/lib/bb/cache.py
+++ b/lib/bb/cache.py
@@ -391,12 +391,14 @@ class Cache(object):
"""Parse the specified filename, returning the recipe information"""
infos = []
datastores = cls.load_bbfile(filename, appends, configdata)
- depends = set()
+ depends = []
for variant, data in sorted(datastores.iteritems(),
key=lambda i: i[0],
reverse=True):
virtualfn = cls.realfn2virtual(filename, variant)
- depends |= (data.getVar("__depends", False) or set())
+ for dep in (data.getVar("__depends", False) or []):
+ if dep not in depends:
+ depends.append(dep)
if depends and not variant:
data.setVar("__depends", depends)
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index dea0aad..51341fa 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -680,8 +680,10 @@ class BBCooker:
# Generate a list of parsed configuration files by searching the files
# listed in the __depends and __base_depends variables with a .conf suffix.
conffiles = []
- dep_files = self.configuration.data.getVar('__depends') or set()
- dep_files.union(self.configuration.data.getVar('__base_depends') or set())
+ dep_files = self.configuration.data.getVar('__depends') or []
+ for dep in (self.configuration.data.getVar('__base_depends') or []):
+ if dep not in dep_files:
+ dep_files.append(dep)
for f in dep_files:
if f[0].endswith(".conf"):
diff --git a/lib/bb/parse/__init__.py b/lib/bb/parse/__init__.py
index 7b9c47e..f223ff9 100644
--- a/lib/bb/parse/__init__.py
+++ b/lib/bb/parse/__init__.py
@@ -73,8 +73,10 @@ def update_mtime(f):
def mark_dependency(d, f):
if f.startswith('./'):
f = "%s/%s" % (os.getcwd(), f[2:])
- deps = d.getVar('__depends') or set()
- deps.update([(f, cached_mtime(f))])
+ deps = d.getVar('__depends') or []
+ t = cached_mtime(f)
+ if (f, t) not in deps:
+ deps.append((f, t))
d.setVar('__depends', deps)
def supports(fn, data):
@@ -134,8 +136,10 @@ def vars_from_file(mypkg, d):
def get_file_depends(d):
'''Return the dependent files'''
dep_files = []
- depends = d.getVar('__depends', True) or set()
- depends = depends.union(d.getVar('__base_depends', True) or set())
+ depends = d.getVar('__depends', True) or []
+ for dep in (d.getVar('__base_depends', True) or []):
+ if dep not in depends:
+ depends.append(dep)
for (fn, _) in depends:
dep_files.append(os.path.abspath(fn))
return " ".join(dep_files)
--
1.7.4.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] data_smart: Improve the calculation of config hash
2012-04-16 13:17 [PATCH 0/2][PULL] "__depends/__base_depends" ordering and config hash improvement Dongxiao Xu
2012-04-16 13:17 ` [PATCH 1/2] bitbake: Retain order for __depends and __base_depends Dongxiao Xu
@ 2012-04-16 13:17 ` Dongxiao Xu
1 sibling, 0 replies; 3+ messages in thread
From: Dongxiao Xu @ 2012-04-16 13:17 UTC (permalink / raw)
To: bitbake-devel
For config hash, we put the keys in structure of "set()", which is not
order sensitive. Therefore when calculating the md5 value for config
hash, we need to identify the order of the keys.
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
---
lib/bb/data_smart.py | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index 2c200db..27fb7d9 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -462,13 +462,14 @@ class DataSmart(MutableMapping):
self.delVar(var)
def get_hash(self):
- data = ""
+ data = {}
config_whitelist = set((self.getVar("BB_HASHCONFIG_WHITELIST", True) or "").split())
keys = set(key for key in iter(self) if not key.startswith("__"))
for key in keys:
if key in config_whitelist:
continue
value = self.getVar(key, False) or ""
- data = data + key + ': ' + str(value) + '\n'
+ data.update({key:value})
- return hashlib.md5(data).hexdigest()
+ data_str = str([(k, data[k]) for k in sorted(data.keys())])
+ return hashlib.md5(data_str).hexdigest()
--
1.7.4.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-04-16 13:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-16 13:17 [PATCH 0/2][PULL] "__depends/__base_depends" ordering and config hash improvement Dongxiao Xu
2012-04-16 13:17 ` [PATCH 1/2] bitbake: Retain order for __depends and __base_depends Dongxiao Xu
2012-04-16 13:17 ` [PATCH 2/2] data_smart: Improve the calculation of config hash Dongxiao Xu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.