[oe-commits] Michael Smith : package_deb: create md5sums control files
git version control
git at git.openembedded.org
Tue Sep 1 21:37:33 UTC 2009
Module: openembedded.git
Branch: org.openembedded.dev
Commit: a5c9970599cbfe15b776cbb57cb9b1b06fbdcb1c
URL: http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=a5c9970599cbfe15b776cbb57cb9b1b06fbdcb1c
Author: Michael Smith <msmith at cbnco.com>
Date: Mon Aug 17 15:14:28 2009 -0400
package_deb: create md5sums control files
These are created with the package and get installed in
/var/dpkg/info. Afterward it's a great way to find modified files
for backup with a little shell script magic.
It feels a bit weird to still use MD5, but that seems to be the
convention in the Debian world.
Signed-off-by: Michael Smith <msmith at cbnco.com>
Acked-by: Chris Larson <clarson at kergoth.com>
---
classes/package.bbclass | 45 +++++++++++++++++++++++++++++++++++++++++++
classes/package_deb.bbclass | 7 ++++++
2 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/classes/package.bbclass b/classes/package.bbclass
index f6bd7c5..5a9fa50 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -202,6 +202,51 @@ def runstrip(file, d):
return 1
+def write_package_md5sums (root, outfile, ignorepaths):
+ # For each regular file under root, writes an md5sum to outfile.
+ # With thanks to patch.bbclass.
+ import bb, os
+
+ try:
+ # Python 2.5+
+ import hashlib
+ ctor = hashlib.md5
+ except ImportError:
+ import md5
+ ctor = md5.new
+
+ outf = file(outfile, 'w')
+
+ # Each output line looks like: "<hex...> <filename without leading slash>"
+ striplen = len(root)
+ if not root.endswith('/'):
+ striplen += 1
+
+ for walkroot, dirs, files in os.walk(root):
+ # Skip e.g. the DEBIAN directory
+ if walkroot[striplen:] in ignorepaths:
+ dirs[:] = []
+ continue
+
+ for name in files:
+ fullpath = os.path.join(walkroot, name)
+ if os.path.islink(fullpath) or (not os.path.isfile(fullpath)):
+ continue
+
+ m = ctor()
+ f = file(fullpath, 'rb')
+ while True:
+ d = f.read(8192)
+ if not d:
+ break
+ m.update(d)
+ f.close()
+
+ print >> outf, "%s %s" % (m.hexdigest(), fullpath[striplen:])
+
+ outf.close()
+
+
#
# Package data handling routines
#
diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass
index e5339a9..4a17010 100644
--- a/classes/package_deb.bbclass
+++ b/classes/package_deb.bbclass
@@ -243,6 +243,13 @@ python do_package_deb () {
conffiles.write('%s\n' % f)
conffiles.close()
+ try:
+ write_package_md5sums(root, os.path.join(controldir, 'md5sums'),
+ ['DEBIAN'])
+ except:
+ bb.utils.unlockfile(lf)
+ raise
+
os.chdir(basedir)
ret = os.system("PATH=\"%s\" fakeroot dpkg-deb -b %s %s" % (bb.data.getVar("PATH", localdata, 1), root, pkgoutdir))
if ret != 0:
More information about the Openembedded-commits
mailing list