* [PATCH 0/1] Signature generation for bitbake-diffsigs
@ 2012-08-27 20:45 Paul Eggleton
2012-08-27 20:45 ` [PATCH 1/1] lib/oe/sstatesig.py: add signature data query function Paul Eggleton
0 siblings, 1 reply; 2+ messages in thread
From: Paul Eggleton @ 2012-08-27 20:45 UTC (permalink / raw)
To: openembedded-core
This is the OE-Core part of the changes for bitbake-diffsigs just posted
to the bitbake-devel mailing list.
The following change since commit 1677b736bca5dc46db522da1874459d2de77209d:
terminal.py: use unique ids for screen sessions (2012-08-25 14:44:31 +0100)
is available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/bbdiffsigs-oe
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/bbdiffsigs-oe
Paul Eggleton (1):
lib/oe/sstatesig.py: add signature data query function
meta/lib/oe/sstatesig.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
--
1.7.9.5
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 1/1] lib/oe/sstatesig.py: add signature data query function
2012-08-27 20:45 [PATCH 0/1] Signature generation for bitbake-diffsigs Paul Eggleton
@ 2012-08-27 20:45 ` Paul Eggleton
0 siblings, 0 replies; 2+ messages in thread
From: Paul Eggleton @ 2012-08-27 20:45 UTC (permalink / raw)
To: openembedded-core
Add a function that can be used from BitBake code which will find
signature data (sigdata/siginfo) files based on specified criteria, and
hook it into BitBake as bb.siggen.find_siginfo.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
meta/lib/oe/sstatesig.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index 20d94b2..749029b 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -74,3 +74,84 @@ class SignatureGeneratorOEBasicHash(bb.siggen.SignatureGeneratorBasicHash):
# Insert these classes into siggen's namespace so it can see and select them
bb.siggen.SignatureGeneratorOEBasic = SignatureGeneratorOEBasic
bb.siggen.SignatureGeneratorOEBasicHash = SignatureGeneratorOEBasicHash
+
+
+def find_siginfo(pn, taskname, taskhashlist, d):
+ """ Find signature data files for comparison purposes """
+
+ import fnmatch
+
+ if taskhashlist:
+ hashfiles = {}
+
+ if not taskname:
+ # We have to derive pn and taskname
+ key = pn
+ splitit = key.split('.bb.')
+ taskname = splitit[1]
+ pn = os.path.basename(splitit[0]).split('_')[0]
+ if key.startswith('virtual:native:'):
+ pn = pn + '-native'
+
+ # First search in stamps dir
+ stampdir = d.getVar('TMPDIR', True) + '/stamps'
+ filespec = '%s-*.%s.sigdata.*' % (pn, taskname)
+ filedates = {}
+ foundall = False
+ for root, dirs, files in os.walk(stampdir):
+ for fn in files:
+ if fnmatch.fnmatch(fn, filespec):
+ fullpath = os.path.join(root, fn)
+ match = False
+ if taskhashlist:
+ for taskhash in taskhashlist:
+ if fn.endswith('.%s' % taskhash):
+ hashfiles[taskhash] = fullpath
+ if len(hashfiles) == len(taskhashlist):
+ foundall = True
+ break
+ else:
+ filedates[fullpath] = os.stat(fullpath).st_mtime
+ if foundall:
+ break
+
+ if len(filedates) < 2 and not foundall:
+ # That didn't work, look in sstate-cache
+ hashes = taskhashlist or ['*']
+ localdata = bb.data.createCopy(d)
+ for hashval in hashes:
+ localdata.setVar('PACKAGE_ARCH', '*')
+ localdata.setVar('TARGET_VENDOR', '*')
+ localdata.setVar('TARGET_OS', '*')
+ localdata.setVar('PN', pn)
+ localdata.setVar('PV', '*')
+ localdata.setVar('PR', '*')
+ localdata.setVar('BB_TASKHASH', hashval)
+ if pn.endswith('-native') or pn.endswith('-crosssdk') or pn.endswith('-cross'):
+ localdata.setVar('SSTATE_EXTRAPATH', "${NATIVELSBSTRING}/")
+ sstatename = d.getVarFlag(taskname, "sstate-name")
+ if not sstatename:
+ sstatename = taskname
+ filespec = '%s_%s.*.siginfo' % (localdata.getVar('SSTATE_PKG', True), sstatename)
+
+ if hashval != '*':
+ sstatedir = "%s/%s" % (d.getVar('SSTATE_DIR', True), hashval[:2])
+ else:
+ sstatedir = d.getVar('SSTATE_DIR', True)
+
+ filedates = {}
+ for root, dirs, files in os.walk(sstatedir):
+ for fn in files:
+ fullpath = os.path.join(root, fn)
+ if fnmatch.fnmatch(fullpath, filespec):
+ if taskhashlist:
+ hashfiles[hashval] = fullpath
+ else:
+ filedates[fullpath] = os.stat(fullpath).st_mtime
+
+ if taskhashlist:
+ return hashfiles
+ else:
+ return filedates
+
+bb.siggen.find_siginfo = find_siginfo
--
1.7.9.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-08-27 20:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-27 20:45 [PATCH 0/1] Signature generation for bitbake-diffsigs Paul Eggleton
2012-08-27 20:45 ` [PATCH 1/1] lib/oe/sstatesig.py: add signature data query function Paul Eggleton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox