]> code.ossystems Code Review - openembedded-core.git/commitdiff
Split do_packagedata task from do_package
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 23 Jan 2013 14:27:33 +0000 (14:27 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 25 Jan 2013 12:35:48 +0000 (12:35 +0000)
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>
14 files changed:
meta/classes/debian.bbclass
meta/classes/image.bbclass
meta/classes/native.bbclass
meta/classes/package.bbclass
meta/classes/package_deb.bbclass
meta/classes/package_ipk.bbclass
meta/classes/package_rpm.bbclass
meta/classes/package_tar.bbclass
meta/classes/sstate.bbclass
meta/recipes-core/meta/package-index.bb
meta/recipes-devtools/gcc/gcc-package-cross.inc
meta/recipes-devtools/gcc/gcc-package-runtime.inc
meta/recipes-devtools/gcc/libgcc_4.7.bb
meta/recipes-devtools/installer/adt-installer_1.0.bb

index 2484003e37d89b7c77ffe36faef1942e319f3393..45f01e43cd5b4b0beaa35baf6fe2e965cc4f5e6d 100644 (file)
@@ -8,7 +8,7 @@
 #
 # Better expressed as ensure all RDEPENDS package before we package
 # This means we can't have circular RDEPENDS/RRECOMMENDS
-DEBIANRDEP = "do_package"
+DEBIANRDEP = "do_packagedata"
 do_package_write_ipk[rdeptask] = "${DEBIANRDEP}"
 do_package_write_deb[rdeptask] = "${DEBIANRDEP}"
 do_package_write_tar[rdeptask] = "${DEBIANRDEP}"
index 0293d2e3583db318ca2135d65a6c73249f53803e..9b4dec84965402648e3842a6dcc827693343bc99 100644 (file)
@@ -83,7 +83,7 @@ LDCONFIGDEPEND_libc-uclibc = ""
 
 do_rootfs[depends] += "makedevs-native:do_populate_sysroot virtual/fakeroot-native:do_populate_sysroot ${LDCONFIGDEPEND}"
 do_rootfs[depends] += "virtual/update-alternatives-native:do_populate_sysroot update-rc.d-native:do_populate_sysroot"
-do_rootfs[recrdeptask] += "do_package"
+do_rootfs[recrdeptask] += "do_packagedata"
 
 IMAGE_TYPE_live = '${@base_contains("IMAGE_FSTYPES", "live", "live", "empty", d)}'
 inherit image-${IMAGE_TYPE_live}
@@ -480,6 +480,7 @@ do_compile[noexec] = "1"
 do_install[noexec] = "1"
 do_populate_sysroot[noexec] = "1"
 do_package[noexec] = "1"
+do_packagedata[noexec] = "1"
 do_package_write_ipk[noexec] = "1"
 do_package_write_deb[noexec] = "1"
 do_package_write_rpm[noexec] = "1"
index c08ca19b78c0f4b4547261ab6e6f2d50d4cbcf3f..bfc9e4c7db4942cfbaa4126c4d6a39dd1ee8593d 100644 (file)
@@ -151,6 +151,7 @@ python native_virtclass_handler () {
 addhandler native_virtclass_handler
 
 do_package[noexec] = "1"
+do_packagedata[noexec] = "1"
 do_package_write_ipk[noexec] = "1"
 do_package_write_deb[noexec] = "1"
 do_package_write_rpm[noexec] = "1"
index 60d3df7789d8a3a1e90ca85b81ec7c4132cb0df0..e8d7aefd86a17e827199eb8b643d499e43961fe0 100644 (file)
@@ -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
index eed9b8ac3bdd70ccb3ea2d0dfdf00487ccc538ef..ac8c9f32751b2cd89847f341e68b087a87ea709c 100644 (file)
@@ -453,7 +453,7 @@ python do_package_write_deb () {
 }
 do_package_write_deb[dirs] = "${PKGWRITEDIRDEB}"
 do_package_write_deb[umask] = "022"
-addtask package_write_deb before do_package_write after do_package
+addtask package_write_deb before do_package_write after do_packagedata do_package
 
 
 PACKAGEINDEXES += "package_update_index_deb;"
index b441e86c0a882c6a4cbd21b8634749d44b96e003..ad4ea53ca9b8f781c66f3884e96d87db119cc8e5 100644 (file)
@@ -477,7 +477,7 @@ python do_package_write_ipk () {
 }
 do_package_write_ipk[dirs] = "${PKGWRITEDIRIPK}"
 do_package_write_ipk[umask] = "022"
-addtask package_write_ipk before do_package_write after do_package
+addtask package_write_ipk before do_package_write after do_packagedata do_package
 
 PACKAGEINDEXES += "package_update_index_ipk;"
 PACKAGEINDEXDEPS += "opkg-utils-native:do_populate_sysroot"
index dc8a54e1f8197f9d869ed9af8738983b3d032196..af51d80627fa5e0bb841ea100fed33ac892108c3 100644 (file)
@@ -1126,7 +1126,7 @@ python do_package_write_rpm () {
 
 do_package_write_rpm[dirs] = "${PKGWRITEDIRRPM}"
 do_package_write_rpm[umask] = "022"
-addtask package_write_rpm before do_package_write after do_package
+addtask package_write_rpm before do_package_write after do_packagedata do_package
 
 PACKAGEINDEXES += "package_update_index_rpm; [ ! -e ${DEPLOY_DIR_RPM} ] || createrepo ${DEPLOY_DIR_RPM};"
 PACKAGEINDEXDEPS += "rpm-native:do_populate_sysroot"
index 332fa3f230efa2aa6cc2fdaae02d90df0913785b..e76ce292e48d0c2d68b5811bd5f4bf2e692fc287 100644 (file)
@@ -107,4 +107,4 @@ python do_package_write_tar () {
        bb.build.exec_func("do_package_tar", d)
 }
 do_package_write_tar[dirs] = "${D}"
-addtask package_write_tar before do_build after do_package
+addtask package_write_tar before do_build after do_packagedata do_package
index e92fbae1f6645283d294a8ef7cc3c329d3c7f833..bc9f7ad739554847f6673c53e02a88366eb03737 100644 (file)
@@ -655,13 +655,13 @@ def setscene_depvalid(task, taskdependees, notneeded, d):
         if dep in notneeded:
             continue
         # do_package_write_* and do_package doesn't need do_package
-        if taskdependees[task][1] == "do_package" and taskdependees[dep][1] in ['do_package', 'do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm']:
+        if taskdependees[task][1] == "do_package" and taskdependees[dep][1] in ['do_package', 'do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm', 'do_packagedata']:
             continue
         # do_package_write_* and do_package doesn't need do_populate_sysroot
-        if taskdependees[task][1] == "do_populate_sysroot" and taskdependees[dep][1] in ['do_package', 'do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm']:
+        if taskdependees[task][1] == "do_populate_sysroot" and taskdependees[dep][1] in ['do_package', 'do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm', 'do_packagedata']:
             continue
         # Native/Cross packages don't exist and are noexec anyway
-        if isNativeCross(taskdependees[dep][0]) and taskdependees[dep][1] in ['do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm']:
+        if isNativeCross(taskdependees[dep][0]) and taskdependees[dep][1] in ['do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm', 'do_packagedata']:
             continue
 
         # Consider sysroot depending on sysroot tasks
index bf3922f6d195c7322c9424cc023546936c13c11d..99ac1a8645ff14ee02e90218896cdb8ffba1430e 100644 (file)
@@ -12,6 +12,7 @@ do_configure[noexec] = "1"
 do_compile[noexec] = "1"
 do_install[noexec] = "1"
 do_package[noexec] = "1"
+do_packagedata[noexec] = "1"
 do_package_write[noexec] = "1"
 do_package_write_ipk[noexec] = "1"
 do_package_write_rpm[noexec] = "1"
index 9718101a3d3a785b31c1701adcfc2e8ec98224e0..3d8167703fcd6a7747da21d3edc1bf2e65fc0a5e 100644 (file)
@@ -42,6 +42,7 @@ do_install () {
 }
 
 do_package[noexec] = "1"
+do_packagedata[noexec] = "1"
 do_package_write_ipk[noexec] = "1"
 do_package_write_rpm[noexec] = "1"
 do_package_write_deb[noexec] = "1"
index 75847b6b922d664e59cb5538c13f18f78add5db4..2e2f75ab3a2b20471f232321809e32b499f895bf 100644 (file)
@@ -75,6 +75,6 @@ FILES_libgomp-staticdev = "\
   ${libdir}/libgomp*.a \
   "
 
-do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_package"
-do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_package"
-do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_package"
+do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
+do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
+do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
index 5eaa5155706a30d161009190ee9af397f58b2246..c12aeefa25eba448afa60dcf7f03ff9cfe467787 100644 (file)
@@ -61,10 +61,10 @@ do_install () {
        rm -rf ${D}${libdir}/${TARGET_SYS}/${BINV}/include
 }
 
-do_package[depends] += "virtual/${MLPREFIX}libc:do_package"
-do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_package"
-do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_package"
-do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_package"
+do_package[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
+do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
+do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
+do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
 
 BBCLASSEXTEND = "nativesdk"
 
index 3624dbc5d47c25e2a1ed9a44eb686c572e14c5ce..227e86686133417b8252f0415c4d50106c5d069e 100644 (file)
@@ -81,6 +81,7 @@ do_populate_adt[nostamp] = "1"
 do_configure[noexec] = "1"
 do_compile[noexec] = "1"
 do_package[noexec] = "1"
+do_packagedata[noexec] = "1"
 do_package_write[noexec] = "1"
 do_package_write_ipk[noexec] = "1"
 do_package_write_rpm[noexec] = "1"