package.bbclass: copy dotfiles in root D to PKGD
authorMichael Smith <msmith@cbnco.com>
Fri, 24 Sep 2010 16:50:00 +0000 (12:50 -0400)
committerMichael Smith <msmith@cbnco.com>
Tue, 12 Oct 2010 19:47:34 +0000 (15:47 -0400)
Use shutil.copytree() to copy D ("image") to PKGD ("package"). The
previous system("cp %s/* ...") missed dotfiles/dirs at the top-level.

Signed-off-by: Michael Smith <msmith@cbnco.com>
Acked-by: Chris Larson <chris_larson@mentor.com>
classes/package.bbclass

index e2a61bf..6a290ee 100644 (file)
@@ -356,15 +356,20 @@ python package_do_split_locales() {
 }
 
 python perform_packagecopy () {
-       dest = bb.data.getVar('D', d, True)
-       dvar = bb.data.getVar('PKGD', d, True)
+       import shutil
+
+       installdest = bb.data.getVar('D', d, True)
+       pkgcopy = bb.data.getVar('PKGD', d, True)
 
-       bb.mkdirhier(dvar)
+       # Start package population by taking a copy of the installed 
+       # files to operate on. Create missing parent directories of
+       # pkgcopy first (shutil.copytree() does this automatically but only
+       # in Python 2.5+).
+       bb.mkdirhier(pkgcopy)
+       shutil.rmtree(pkgcopy, True)
 
-       # Start by package population by taking a copy of the installed 
-       # files to operate on
-       os.system('rm -rf %s/*' % (dvar))
-       os.system('cp -pPR %s/* %s/' % (dest, dvar))
+       # Preserve symlinks.
+       shutil.copytree(installdest, pkgcopy, symlinks=True)
 }
 
 python populate_packages () {