package.bbclass: Change to operate on a copy of the install directory instead of...
authorRichard Purdie <rpurdie@linux.intel.com>
Fri, 30 Oct 2009 00:08:19 +0000 (00:08 +0000)
committerRichard Purdie <rpurdie@linux.intel.com>
Mon, 9 Nov 2009 12:32:21 +0000 (12:32 +0000)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
classes/package.bbclass

index 2c085be..03618ba 100644 (file)
@@ -2,7 +2,8 @@
 # General packaging help functions
 #
 
-PKGDEST = "${WORKDIR}/install"
+PKGD    = "${WORKDIR}/package"
+PKGDEST = "${WORKDIR}/packages-split"
 
 def legitimize_package_name(s):
        """
@@ -28,7 +29,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
        """
        import os, os.path, bb
 
-       dvar = bb.data.getVar('D', d, True)
+       dvar = bb.data.getVar('PKGD', d, True)
 
        packages = bb.data.getVar('PACKAGES', d, True).split()
 
@@ -299,7 +300,7 @@ python package_do_split_locales() {
                bb.note("datadir not defined")
                return
 
-       dvar = bb.data.getVar('D', d, True)
+       dvar = bb.data.getVar('PKGD', d, True)
        pn = bb.data.getVar('PN', d, True)
 
        if pn + '-locale' in packages:
@@ -333,19 +334,29 @@ python package_do_split_locales() {
        bb.data.setVar('PACKAGES', ' '.join(packages), d)
 }
 
+python perform_packagecopy () {
+       import os
+
+       dest = bb.data.getVar('D', d, True)
+       dvar = bb.data.getVar('PKGD', d, True)
+
+       bb.mkdirhier(dvar)
+
+       # Start by package population by taking a copy of the installed 
+       # files to operate on
+       os.system('cp -pPR %s/* %s/' % (dest, dvar))
+}
+
 python populate_packages () {
        import os, glob, stat, errno, re
 
        workdir = bb.data.getVar('WORKDIR', d, True)
        outdir = bb.data.getVar('DEPLOY_DIR', d, True)
-       dvar = bb.data.getVar('D', d, True)
+       dvar = bb.data.getVar('PKGD', d, True)
        packages = bb.data.getVar('PACKAGES', d, True)
        pn = bb.data.getVar('PN', d, True)
 
        bb.mkdirhier(outdir)
-       bb.mkdirhier(dvar)
-
-
        os.chdir(dvar)
 
        def isexec(path):
@@ -981,7 +992,8 @@ python package_depchains() {
 }
 
 
-PACKAGEFUNCS ?= "package_do_split_locales \
+PACKAGEFUNCS ?= "perform_packagecopy \
+               package_do_split_locales \
                populate_packages \
                package_do_shlibs \
                package_do_pkgconfig \
@@ -1029,11 +1041,12 @@ python package_do_package () {
 
        workdir = bb.data.getVar('WORKDIR', d, True)
        outdir = bb.data.getVar('DEPLOY_DIR', d, True)
-       dvar = bb.data.getVar('D', d, True)
+       dest = bb.data.getVar('D', d, True)
+       dvar = bb.data.getVar('PKGD', d, True)
        pn = bb.data.getVar('PN', d, True)
 
-       if not workdir or not outdir or not dvar or not pn or not packages:
-               bb.error("WORKDIR, DEPLOY_DIR, D, and PN all must be defined, unable to package")
+       if not workdir or not outdir or not dest or not dvar or not pn or not packages:
+               bb.error("WORKDIR, DEPLOY_DIR, D, PN and PKGD all must be defined, unable to package")
                return
 
        for f in (bb.data.getVar('PACKAGEFUNCS', d, True) or '').split():