phosphor-hostfw-image: Create recipe

Create a recipe to add host firmware files to the BMC image files.
Via a bbappend, this recipe provides a mechanism
to have content be added to a flashable BMC image and an image
file to be added to the code update tarball to be updated
during a firmware update.

(From meta-phosphor rev: 39b1ff0dcd12f15dc651aa20cb85cdec903cb5de)

Change-Id: I12b3ced57a6446fd1fc046324ee13e4701581336
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/meta-phosphor/classes/image_types_phosphor.bbclass b/meta-phosphor/classes/image_types_phosphor.bbclass
index e12cabd..0ee77d4 100644
--- a/meta-phosphor/classes/image_types_phosphor.bbclass
+++ b/meta-phosphor/classes/image_types_phosphor.bbclass
@@ -536,8 +536,16 @@
 	ln -sf ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.rwfs.${FLASH_EXT4_OVERLAY_BASETYPE} image-rwfs
 	ln -sf ${S}/MANIFEST MANIFEST
 	ln -sf ${S}/publickey publickey
-	make_signatures image-u-boot image-kernel image-rofs image-rwfs MANIFEST publickey
-	make_tar_of_images ext4.mmc MANIFEST publickey ${signature_files}
+
+	hostfw_update_file="${DEPLOY_DIR_IMAGE}/hostfw/update/image-hostfw"
+	if [ -e "${hostfw_update_file}" ]; then
+		ln -sf "${hostfw_update_file}" image-hostfw
+		make_signatures image-u-boot image-kernel image-rofs image-rwfs MANIFEST publickey image-hostfw
+		make_tar_of_images ext4.mmc MANIFEST publickey ${signature_files} image-hostfw
+	else
+		make_signatures image-u-boot image-kernel image-rofs image-rwfs MANIFEST publickey
+		make_tar_of_images ext4.mmc MANIFEST publickey ${signature_files}
+	fi
 }
 do_generate_ext4_tar[dirs] = " ${S}/ext4"
 do_generate_ext4_tar[depends] += " \
@@ -548,6 +556,7 @@
         openssl-native:do_populate_sysroot \
         ${SIGNING_KEY_DEPENDS} \
         ${PN}:do_copy_signing_pubkey \
+        phosphor-hostfw-image:do_populate_sysroot \
         "
 
 def get_pubkey_basedir(d):
diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-hostfw-image.bb b/meta-phosphor/recipes-phosphor/flash/phosphor-hostfw-image.bb
new file mode 100644
index 0000000..5663771
--- /dev/null
+++ b/meta-phosphor/recipes-phosphor/flash/phosphor-hostfw-image.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Provides a host firmware image"
+DESCRIPTION = "Use a bbappend to add the image files"
+PR = "r1"
+
+inherit allarch
+inherit deploy
+
+HOSTFW_LICENSE ?= "Apache-2.0"
+HOSTFW_LIC_FILES_CHKSUM ?= "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+LICENSE = "${HOSTFW_LICENSE}"
+LIC_FILES_CHKSUM = "${HOSTFW_LIC_FILES_CHKSUM}"
+
+do_compile_prepend() {
+    # The image directory can be used as the source to create a filesystem to
+    # add to the BMC image.
+    install -d ${B}/image
+
+    # Install an image-hostfw file in the update directory to be included in
+    # the code update tarball.
+    install -d ${B}/update
+}
+
+do_deploy() {
+    install -d ${DEPLOYDIR}/hostfw/image
+    install -d ${DEPLOYDIR}/hostfw/update
+    cp -R --no-dereference --preserve=mode,links ${B}/image/ ${DEPLOYDIR}/hostfw/image/
+    cp -R --no-dereference --preserve=mode,links ${B}/update/ ${DEPLOYDIR}/hostfw/update/
+}
+
+addtask deploy before do_build after do_compile