diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-01-23 14:27:33 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-01-25 12:35:48 +0000 |
commit | 6107ee294afde395e39d084c33e8e94013c625a9 (patch) | |
tree | cfee0518d5e7424c63b82b5e9e2063c8e4a25435 /meta/classes/package.bbclass | |
parent | 6223aa118ed7a2726ed73c06246423795d53af5e (diff) | |
download | openembedded-core-6107ee294afde395e39d084c33e8e94013c625a9.tar.gz openembedded-core-6107ee294afde395e39d084c33e8e94013c625a9.tar.bz2 openembedded-core-6107ee294afde395e39d084c33e8e94013c625a9.zip |
Split do_packagedata task from do_package
Currently, do_rootfs has a dependency on all the do_package output being present
due to its usage of the pkgdata directories. This means that if you run:
bitbake xxxx-image -c rootfs
you end up having to fetch and unpack all the do_package data which is usually
large and inefficient. It also means rm_work has to leave all the do_package
data lying around so rootfs works.
This patch splits the actual creation of the pkgdata directory off into a separate
task, "packagedata" which happens immediately after do_package. We can then remap
the dependencies so this task is depended upon, not do_package. Sstate can then be
programmed not to require do_package at the appropriate times.
Whilst this patch doesn't do so, it opens the possibility of rm_work wiping
out the do_package output from WORKDIR as long as it also removed the do_package
stamp (both normal and setscene variants) and allowing more space savings
with rm_work which has been regularly requested.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/package.bbclass')
-rw-r--r-- | meta/classes/package.bbclass | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 60d3df7789..e8d7aefd86 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -217,7 +217,7 @@ python () { d.appendVarFlag('do_package', 'depends', deps) # shlibs requires any DEPENDS to have already packaged for the *.list files - d.appendVarFlag('do_package', 'deptask', " do_package") + d.appendVarFlag('do_package', 'deptask', " do_packagedata") elif not bb.data.inherits_class('image', d): d.setVar("PACKAGERDEPTASK", "") @@ -1900,9 +1900,7 @@ PACKAGELOCK = "${STAGING_DIR}/package-output.lock" SSTATETASKS += "do_package" do_package[sstate-name] = "package" do_package[cleandirs] = "${PKGDESTWORK}" -do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}" -do_package[sstate-inputdirs] = "${PKGDESTWORK}" -do_package[sstate-outputdirs] = "${PKGDATA_DIR}" +do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST} ${PKGDESTWORK}" do_package[sstate-lockfile-shared] = "${PACKAGELOCK}" do_package_setscene[dirs] = "${STAGING_DIR}" @@ -1911,6 +1909,23 @@ python do_package_setscene () { } addtask do_package_setscene +do_packagedata () { + : +} + +addtask packagedata before do_build after do_package + +SSTATETASKS += "do_packagedata" +do_packagedata[sstate-name] = "packagedata" +do_packagedata[sstate-inputdirs] = "${PKGDESTWORK}" +do_packagedata[sstate-outputdirs] = "${PKGDATA_DIR}" +do_packagedata[sstate-lockfile-shared] = "${PACKAGELOCK}" + +python do_packagedata_setscene () { + sstate_setscene(d) +} +addtask do_packagedata_setscene + # Dummy task to mark when all packaging is complete do_package_write () { : @@ -1918,7 +1933,7 @@ do_package_write () { do_package_write[noexec] = "1" PACKAGERDEPTASK = "do_package_write" do_build[recrdeptask] += "${PACKAGERDEPTASK}" -addtask package_write before do_build after do_package +addtask package_write before do_build after do_packagedata # # Helper functions for the package writing classes |