]> code.ossystems Code Review - openembedded-core.git/commitdiff
toaster.bbclass: Separate artifact dump from image file dump
authorElliot Smith <elliot.smith@intel.com>
Wed, 13 Jan 2016 08:55:36 +0000 (08:55 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 17 Jan 2016 11:32:21 +0000 (11:32 +0000)
SDK artifacts were being dumped alongside the image file dump.
However, the dump was not being triggered correctly, as it
should be attached as a postfunc to do_populate_sdk, rather than
do_rootfs, as do_rootfs doesn't always fire when populating
the SDK directory.

By adding a postfunc to do_populate_sdk, the postfunc is fired
in the correct situations.

Also fixes the directory which is scanned for SDK artifacts, as
this is different from the image file directory.

[YOCTO #7603]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/toaster.bbclass

index bbda2f8433bb6796de6d8eb8ecbf4b63da0a352b..fba9067f0a7f50b2dd531250c3719cc306bbbdc8 100644 (file)
@@ -147,31 +147,43 @@ python toaster_image_dumpdata() {
 
     deploy_dir_image = d.getVar('DEPLOY_DIR_IMAGE', True);
     image_name = d.getVar('IMAGE_NAME', True);
-
     image_info_data = {}
-    artifact_info_data = {}
 
-    # collect all artifacts
+    # collect all images
     for dirpath, dirnames, filenames in os.walk(deploy_dir_image):
         for fn in filenames:
             try:
                 if fn.startswith(image_name):
                     image_output = os.path.join(dirpath, fn)
                     image_info_data[image_output] = os.stat(image_output).st_size
-                else:
-                    import stat
-                    artifact_path = os.path.join(dirpath, fn)
-                    filestat = os.stat(artifact_path)
-                    if not os.path.islink(artifact_path):
-                        artifact_info_data[artifact_path] = filestat.st_size
             except OSError as e:
                 bb.event.fire(bb.event.MetadataEvent("OSErrorException", e), d)
 
     bb.event.fire(bb.event.MetadataEvent("ImageFileSize",image_info_data), d)
-    bb.event.fire(bb.event.MetadataEvent("ArtifactFileSize",artifact_info_data), d)
 }
 
+python toaster_artifact_dumpdata() {
+    """
+    Dump data about artifacts in the SDK_DEPLOY directory
+    """
+
+    artifact_dir = d.getVar("SDK_DEPLOY", True)
+    artifact_info_data = {}
+
+    # collect all artifacts
+    for dirpath, dirnames, filenames in os.walk(artifact_dir):
+        for fn in filenames:
+            try:
+                artifact_path = os.path.join(dirpath, fn)
+                filestat = os.stat(artifact_path)
+                if not os.path.islink(artifact_path):
+                    artifact_info_data[artifact_path] = filestat.st_size
+            except OSError as e:
+                import sys
+                bb.event.fire(bb.event.MetadataEvent("OSErrorException", e), d)
 
+    bb.event.fire(bb.event.MetadataEvent("ArtifactFileSize",artifact_info_data), d)
+}
 
 # collect list of buildstats files based on fired events; when the build completes, collect all stats and fire an event with collected data
 
@@ -341,9 +353,13 @@ toaster_collect_task_stats[eventmask] = "bb.event.BuildCompleted bb.build.TaskSu
 
 addhandler toaster_buildhistory_dump
 toaster_buildhistory_dump[eventmask] = "bb.event.BuildCompleted"
+
 do_package[postfuncs] += "toaster_package_dumpdata "
 do_package[vardepsexclude] += "toaster_package_dumpdata "
 
 do_rootfs[postfuncs] += "toaster_image_dumpdata "
 do_rootfs[postfuncs] += "toaster_licensemanifest_dump "
-do_rootfs[vardepsexclude] += "toaster_image_dumpdata toaster_licensemanifest_dump"
+do_rootfs[vardepsexclude] += "toaster_image_dumpdata toaster_licensemanifest_dump "
+
+do_populate_sdk[postfuncs] += "toaster_artifact_dumpdata "
+do_populate_sdk[vardepsexclude] += "toaster_artifact_dumpdata "