diff --git a/meta-common/recipes-phosphor/image/obmc-phosphor-image.bbappend b/meta-common/recipes-phosphor/image/obmc-phosphor-image.bbappend
new file mode 100644
index 0000000..7c21fb4
--- /dev/null
+++ b/meta-common/recipes-phosphor/image/obmc-phosphor-image.bbappend
@@ -0,0 +1,151 @@
+inherit image_version
+unset do_get_version[noexec]
+do_get_version[depends] = "os-release"
+
+# do_get_version() is copied from meta-phosphor/classes/image_version.bbclass and
+# modified to append the date and time to the version if a file named "developer"
+# exists in the openbmc/build directory
+def do_get_version(d):
+    import configparser
+    import io
+    path = d.getVar('STAGING_DIR_TARGET', True) + d.getVar('sysconfdir', True)
+    path = os.path.join(path, 'os-release')
+    parser = configparser.SafeConfigParser(strict=False)
+    parser.optionxform = str
+    version = ''
+    try:
+        with open(path, 'r') as fd:
+            buf = '[root]\n' + fd.read()
+            fd = io.StringIO(buf)
+            parser.readfp(fd)
+            version = parser['root']['VERSION_ID']
+            dev_path = d.getVar('PWD', True)
+            dev_path = os.path.join(dev_path, 'developer')
+            if os.path.isfile(dev_path):
+                version = version[:-1] + str(d.getVar('IMAGE_VERSION_SUFFIX', True)).strip()
+    except:
+        pass
+    return version
+
+HPE_GXP_BOOTBLOCK_IMAGE ?= "gxp-bootblock.bin"
+HPE_UBOOT_SIGNING_HEADER ?= "hpe-uboot-header.section"
+HPE_UBOOT_SIGNING_KEY ?= "hpe-uboot-signing-key.pem"
+
+FLASH_SIZE = "31552"
+FLASH_UBOOT_OFFSET = "0"
+FLASH_KERNEL_OFFSET = "512"
+FLASH_ROFS_OFFSET = "5376"
+FLASH_RWFS_OFFSET = "29184"
+FLASH_SECTION_OFFSET = "31552"
+FLASH_SECTION_END = "32768"
+
+UBOOT_IMG_SIZE = "393216"
+
+do_generate_static[depends] += " \
+   		  gxp-bootblock:do_deploy \
+        gxp-bootblock:do_populate_sysroot \
+        "
+
+
+make_image_links_append() {
+    ln -sf ${DEPLOY_DIR_IMAGE}/hpe-section image-section
+}
+
+do_mk_static_symlinks_append() {
+    ln -sf hpe-section image-section
+}
+
+do_generate_static_prepend() {
+    bb.build.exec_func("do_generate_hpe_image", d)
+}
+
+do_generate_static_append() {
+    _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
+                               'hpe-section'),
+                  int(d.getVar('FLASH_SECTION_OFFSET', True)),
+                  int(d.getVar('FLASH_SECTION_END', True))) 
+}
+
+do_generate_hpe_image() {
+    # Extract uboot 256K
+    dd if=/dev/zero bs=1k count=256 > ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
+    dd bs=1k conv=notrunc seek=0 count=256\
+            if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
+            of=${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
+
+    # Sign uboot 256K
+    openssl sha256 -sign ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_KEY} -out ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
+            ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
+
+    # Expand (header+signature) to 4K
+    cat ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_HEADER} ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
+         > ${DEPLOY_DIR_IMAGE}/gxp.sig
+
+    # Add Header and Signature to hpe-section (from 60K)
+    dd bs=1k conv=notrunc seek=60 \
+          if=${DEPLOY_DIR_IMAGE}/gxp.sig \
+          of=${DEPLOY_DIR_IMAGE}/hpe-section
+
+    # Add ubb to hpe-section
+    dd bs=1k conv=notrunc seek=64 \
+          if=${DEPLOY_DIR_IMAGE}/${HPE_GXP_BOOTBLOCK_IMAGE} \
+          of=${DEPLOY_DIR_IMAGE}/hpe-section
+
+    # Expand uboot to 384K
+    dd if=/dev/zero bs=1k count=384 > ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
+    dd bs=1k conv=notrunc seek=0 count=384\
+            if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
+            of=${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
+
+    # Remove unnecessary files
+    rm ${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
+       ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
+       ${DEPLOY_DIR_IMAGE}/gxp.sig
+
+    mv ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX} ${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX}
+
+    # Check uboot image size equals to 384K
+    size="$(wc -c < "${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX}")"
+    if [ ${size} -ne ${UBOOT_IMG_SIZE} ]
+    then
+      echo "ERROR: STATIC - uBoot image size ${size} incorrect. Please try it again."
+      exit 1
+    fi
+}
+
+make_tar_of_images() {
+  type=$1
+  shift
+  extra_files="$@"
+
+  # Create the tar archive
+  tar -h -cvf ${IMGDEPLOYDIR}/${IMAGE_NAME}.$type.mtd.tar \
+    image-u-boot image-kernel image-rofs image-rwfs image-section $extra_files
+
+  cd ${IMGDEPLOYDIR}
+  ln -sf ${IMAGE_NAME}.$type.mtd.tar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.$type.mtd.tar
+}
+
+do_generate_static_tar[depends] += " obmc-phosphor-image:do_generate_static"
+
+do_generate_static_tar() {
+
+  ln -sf ${S}/MANIFEST MANIFEST
+  ln -sf ${S}/publickey publickey
+  make_image_links ${OVERLAY_BASETYPE} ${IMAGE_BASETYPE}
+
+  # Check uboot image size equals to 384K
+  size="$(wc -c < "image-u-boot")"
+  if [ ${size} != ${UBOOT_IMG_SIZE} ]
+  then
+    echo "ERROR: TAR - uBoot image size ${size} incorrect. Please try it again."
+    exit 1
+  fi
+
+  make_signatures image-u-boot image-kernel image-rofs image-rwfs image-section MANIFEST publickey
+  make_tar_of_images static MANIFEST publickey ${signature_files}
+
+  # Maintain non-standard legacy link.
+  cd ${IMGDEPLOYDIR}
+  ln -sf ${IMAGE_NAME}.static.mtd.tar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.tar
+}
diff --git a/meta-common/recipes-phosphor/initrdscripts/files/gxp-obmc-init.sh b/meta-common/recipes-phosphor/initrdscripts/files/gxp-obmc-init.sh
new file mode 100644
index 0000000..e2a9ebc
--- /dev/null
+++ b/meta-common/recipes-phosphor/initrdscripts/files/gxp-obmc-init.sh
@@ -0,0 +1,452 @@
+#!/bin/sh
+
+fslist="proc sys dev run"
+rodir=run/initramfs/ro
+rwdir=run/initramfs/rw
+upper=$rwdir/cow
+work=$rwdir/work
+
+cd /
+mkdir -p $fslist
+mount dev dev -tdevtmpfs
+mount sys sys -tsysfs
+mount proc proc -tproc
+if ! grep run proc/mounts
+then
+	mount tmpfs run -t tmpfs -o mode=755,nodev
+fi
+
+mkdir -p $rodir $rwdir
+
+cp -rp init shutdown update whitelist bin sbin usr lib etc var run/initramfs
+
+# To start a interactive shell with job control at this point, run
+# getty 38400 ttyS4
+
+findmtd() {
+	m=$(grep -xl "$1" /sys/class/mtd/*/name)
+	m=${m%/name}
+	m=${m##*/}
+	echo $m
+}
+
+blkid_fs_type() {
+	# Emulate util-linux's `blkid -s TYPE -o value $1`
+	# Example busybox blkid output:
+	#    # blkid /dev/mtdblock5
+	#    /dev/mtdblock5: TYPE="squashfs"
+	# Process output to extract TYPE value "squashfs".
+	blkid $1 | sed -e 's/^.*TYPE="//' -e 's/".*$//'
+}
+
+probe_fs_type() {
+	fst=$(blkid_fs_type $1)
+	echo ${fst:=jffs2}
+}
+
+# This fw_get_env_var is a possibly broken version of fw_printenv that
+# does not check the crc or flag byte.
+# The u-boot environment starts with a crc32, followed by a flag byte
+# when a redundannt environment is configured, followed by var=value\0 sets.
+# The flag byte for nand is a 1 byte counter; for nor it is a 1 or 0 byte.
+
+get_fw_env_var() {
+	# do we have 1 or 2 copies of the environment?
+	# count non-blank non-comment lines
+	# copies=$(grep -v ^# /etc/fw_env.config | grep -c [::alnum::])
+	# ... we could if we had the fw_env.config in the initramfs
+	copies=2
+
+	# * Change \n to \r and \0 to \n
+	# * Skip to the 5th byte to skip over crc
+	# * then skip to the first or 2nd byte to skip over flag if it exists
+	# * stop parsing at first empty line corresponding to the
+	#   double \0 at the end of the environment.
+	# * print the value of the variable name passed as argument
+
+	envdev=$(findmtd u-boot-env)
+	if test -n $envdev
+	then
+		cat /dev/$envdev |
+		tr '\n\000' '\r\n' |
+		tail -c +5 | tail -c +${copies-1} |
+		sed -ne '/^$/,$d' -e "s/^$1=//p"
+	fi
+}
+
+setup_resolv() {
+	runresolv=/run/systemd/resolve/resolv.conf
+	etcresolv=/etc/resolv.conf
+
+	if test ! -e $etcresolv -a ! -L $etcresolv
+	then
+		mkdir -p ${runresolv%/*}
+		ln -s $runresolv $etcresolv
+	fi
+	if test ! -f $runresolv
+	then
+		cat  /proc/net/pnp > $runresolv
+	fi
+
+	return 0
+}
+
+try_tftp() {
+	# split into  tftp:// host:port/ path/on/remote
+	# then spilt off / and then :port from the end of host:port/
+	# and : from the beginning of port
+
+	rest="${1#tftp://}"
+	path=${rest#*/}
+	host=${rest%$path}
+	host="${host%/}"
+	port="${host#${host%:*}}"
+	host="${host%$port}"
+	port="${port#:}"
+
+	setup_resolv
+
+	if test -z "$host" -o -z "$path"
+	then
+		debug_takeover "Invalid tftp download url '$url'."
+	elif echo "Downloading '$url' from $host ..."  &&
+		! tftp -g -r "$path" -l /run/image-rofs "$host" ${port+"$port"}
+	then
+		debug_takeover "Download of '$url' failed."
+	fi
+}
+
+try_wget() {
+	setup_resolv
+
+	echo "Downloading '$1' ..."
+	if ! wget -O /run/image-rofs "$1"
+	then
+		debug_takeover "Download of '$url' failed."
+	fi
+}
+
+debug_takeover() {
+	echo "$@"
+	read -t 5 -n 1 -s -r -p  "Press any key to log in and try to manually fix, force recovery in 5 seconds"
+	if test $? -gt 0
+	then
+		mkdir -p /var/lock
+		envdev=$(findmtd u-boot-env)
+		echo -e "/dev/${envdev}\t0x00000\t0x10000" > /etc/fw_env.config
+		echo -e "/dev/${envdev}\t0x10000\t0x10000" >> /etc/fw_env.config
+		fw_setenv force_recovery 1
+		fw_setenv last_booterrmsg "$@"
+		devmem 0xc0000000 32 0x01
+	fi
+	cat << HERE
+After fixing run exit to continue this script, or reboot -f to retry, or
+touch /takeover and exit to become PID 1 allowing editing of this script.
+HERE
+
+	while ! sulogin && ! test -f /takeover
+	do
+		echo getty failed, retrying
+	done
+
+	# Touch /takeover in the above getty to become pid 1
+	if test -e /takeover
+	then
+		cat << HERE
+
+Takeover of init requested.  Executing /bin/sh as PID 1.
+When finished exec new init or cleanup and run reboot -f.
+
+Warning: No job control!  Shell exit will panic the system!
+HERE
+		export PS1=init#\ 
+		exec /bin/sh
+	fi
+}
+
+# Check System Maintenace Switch 7 and load factory default
+check_dip() {
+  devmem 0x800000b8 16 0xFF
+  dip=$(devmem 0x800000b8 16)
+
+  value1=$((( $dip & 0xFF00 ) >> 8 ))
+  value2=$((( $dip & 0x0040 ) >> 6 ))
+
+  if [ $value1 -eq 0 ] && [ $value2 -eq 1 ]
+  then
+    echo "Detect System Maintenace Switch 7 on. Will load factory default"
+    return 0
+  fi
+  return 1
+}
+
+rofs=$(findmtd rofs)
+rwfs=$(findmtd rwfs)
+
+rodev=/dev/mtdblock${rofs#mtd}
+rwdev=/dev/mtdblock${rwfs#mtd}
+
+# Set to y for yes, anything else for no.
+force_rwfst_jffs2=y
+flash_images_before_init=n
+consider_download_files=y
+consider_download_tftp=y
+consider_download_http=y
+consider_download_ftp=y
+
+rofst=squashfs
+rwfst=$(probe_fs_type $rwdev)
+roopts=ro
+rwopts=rw
+
+image=/run/initramfs/image-
+trigger=${image}rwfs
+
+init=/sbin/init
+fsckbase=/sbin/fsck.
+fsck=$fsckbase$rwfst
+fsckopts=-a
+optfile=/run/initramfs/init-options
+optbase=/run/initramfs/init-options-base
+urlfile=/run/initramfs/init-download-url
+update=/run/initramfs/update
+
+if test -e /${optfile##*/}
+then
+	cp /${optfile##*/} $optfile
+fi
+
+if test -e /${optbase##*/}
+then
+	cp /${optbase##*/} $optbase
+else
+	touch $optbase
+fi
+
+if test ! -f $optfile
+then
+	cat /proc/cmdline $optbase > $optfile
+	get_fw_env_var openbmcinit >> $optfile
+	get_fw_env_var openbmconce >> $optfile
+fi
+
+echo rofs = $rofs $rofst   rwfs = $rwfs $rwfst
+
+if grep -w debug-init-sh $optfile
+then
+	debug_takeover "Debug initial shell requested by command line."
+fi
+
+if test "x$consider_download_files" = xy &&
+	grep -w openbmc-init-download-files $optfile
+then
+	if test -f ${urlfile##*/}
+	then
+		cp ${urlfile##*/} $urlfile
+	fi
+	if test ! -f $urlfile
+	then
+		get_fw_env_var openbmcinitdownloadurl > $urlfile
+	fi
+	url="$(cat $urlfile)"
+	rest="${url#*://}"
+	proto="${url%$rest}"
+
+	if test -z "$url"
+	then
+		echo "Download url empty.  Ignoring download request."
+	elif test -z "$proto"
+	then
+		echo "Download failed."
+	elif test "$proto" = tftp://
+	then
+		if test "x$consider_download_tftp" = xy
+		then
+			try_tftp "$url"
+		else
+			echo "Download failed."
+		fi
+	elif test "$proto" = http://
+	then
+		if test "x$consider_download_http" = xy
+		then
+			try_wget "$url"
+		else
+			echo "Download failed."
+		fi
+	elif test "$proto" = ftp://
+	then
+		if test "x$consider_download_ftp" = xy
+		then
+			try_wget "$url"
+		else
+			echo "Download failed."
+		fi
+	else
+		echo "Download failed."
+	fi
+fi
+
+# If there are images in root move them to /run/initramfs/ or /run/ now.
+imagebasename=${image##*/}
+if test -n "${imagebasename}" && ls /${imagebasename}* > /dev/null 2>&1
+then
+	if test "x$flash_images_before_init" = xy
+	then
+		echo "Flash images found, will update before starting init."
+		mv /${imagebasename}* ${image%$imagebasename}
+	else
+		echo "Flash images found, will use but deferring flash update."
+		mv /${imagebasename}* /run/
+	fi
+fi
+
+if grep -w clean-rwfs-filesystem $optfile
+then
+	echo "Cleaning of read-write overlay filesystem requested."
+	touch $trigger
+fi
+
+if grep -w factory-reset $optfile || check_dip
+then
+	echo "Factory reset requested."
+	touch $trigger
+	do_save=--no-save-files
+else
+	do_save=--save-files
+fi
+
+if test "x$force_rwfst_jffs2" = xy -a $rwfst != jffs2 -a ! -f $trigger
+then
+	echo "Converting read-write overlay filesystem to jffs2 forced."
+	touch $trigger
+fi
+
+if ls $image* > /dev/null 2>&1
+then
+	if ! test -x $update
+	then
+		debug_takeover "Flash update requested but $update missing!"
+	elif test -f $trigger -a ! -s $trigger
+	then
+		if [ $do_save = "--save-files" ]
+		then
+			echo "Saving selected files from read-write overlay filesystem."
+		else
+			echo "No files will be selected for save."
+		fi
+		$update --no-restore-files $do_save
+		echo "Clearing read-write overlay filesystem."
+		flash_eraseall /dev/$rwfs
+		echo "Restoring saved files to read-write overlay filesystem."
+		touch $trigger
+		$update --no-save-files --clean-saved-files
+	else
+		$update --clean-saved-files $do_save
+	fi
+
+	rwfst=$(probe_fs_type $rwdev)
+	fsck=$fsckbase$rwfst
+fi
+
+if grep -w overlay-filesystem-in-ram $optfile
+then
+	rwfst=none
+fi
+
+copyfiles=
+if grep -w copy-files-to-ram $optfile
+then
+	rwfst=none
+	copyfiles=y
+fi
+
+# It would be nice to do this after fsck but that mean rofs is mounted
+# which triggers the mtd is mounted check
+if test "$rwfst$copyfiles" = noney
+then
+	touch $trigger
+	$update --copy-files --clean-saved-files --no-restore-files
+fi
+
+if grep -w copy-base-filesystem-to-ram $optfile &&
+	test ! -e /run/image-rofs && ! cp $rodev /run/image-rofs
+then
+	# Remove any partial copy to avoid attempted usage later
+	if test -e  /run/image-rofs
+	then
+		ls -l /run/image-rofs
+		rm -f /run/image-rofs
+	fi
+	debug_takeover "Copying $rodev to /run/image-rofs failed."
+fi
+
+if test -s /run/image-rofs
+then
+	rodev=/run/image-rofs
+	roopts=$roopts,loop
+fi
+
+mount $rodev $rodir -t $rofst -o $roopts
+
+if test -x $rodir$fsck
+then
+	for fs in $fslist
+	do
+		mount --bind $fs $rodir/$fs
+	done
+	chroot $rodir $fsck $fsckopts $rwdev
+	rc=$?
+	for fs in $fslist
+	do
+		umount $rodir/$fs
+	done
+	if test $rc -gt 1
+	then
+		debug_takeover "fsck of read-write fs on $rwdev failed (rc=$rc)"
+	fi
+elif test "$rwfst" != jffs2 -a "$rwfst" != none
+then
+	echo "No '$fsck' in read only fs, skipping fsck."
+fi
+
+if test "$rwfst" = none
+then
+	echo "Running with read-write overlay in RAM for this boot."
+	echo "No state will be preserved unless flash update performed."
+elif ! mount $rwdev $rwdir -t $rwfst -o $rwopts
+then
+	msg="$(cat)" << HERE
+
+Mounting read-write $rwdev filesystem failed.  Please fix and run
+	mount $rwdev $rwdir -t $rwfst -o $rwopts
+to to continue, or do change nothing to run from RAM for this boot.
+HERE
+	debug_takeover "$msg"
+fi
+
+rm -rf $work
+mkdir -p $upper $work
+
+mount -t overlay -o lowerdir=$rodir,upperdir=$upper,workdir=$work cow /root
+
+while ! chroot /root /bin/sh -c "test -x '$init' -a -s '$init'"
+do
+	msg="$(cat)" << HERE
+
+Unable to confirm /sbin/init is an executable non-empty file
+in merged file system mounted at /root.
+
+Change Root test failed!  Invoking emergency shell.
+HERE
+	debug_takeover "$msg"
+done
+
+for f in $fslist
+do
+	mount --move $f root/$f
+done
+
+# switch_root /root $init
+exec chroot /root $init
+
diff --git a/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend b/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend
new file mode 100644
index 0000000..cdf163c
--- /dev/null
+++ b/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend
@@ -0,0 +1,11 @@
+FILESEXTRAPATHS_prepend :="${THISDIR}/files:"
+
+SRC_URI += "file://gxp-obmc-init.sh \
+           "
+
+do_install_append() {
+        install -m 0755 ${WORKDIR}/gxp-obmc-init.sh ${D}/init
+}
+
+FILES_${PN} += " /init /shutdown /update /whitelist /dev "
+FILES_${PN} += " /init-options /init-download-url "
diff --git a/meta-common/recipes-phosphor/packagegroups/packagegroup-hpe-apps.bb b/meta-common/recipes-phosphor/packagegroups/packagegroup-hpe-apps.bb
new file mode 100644
index 0000000..82a748b
--- /dev/null
+++ b/meta-common/recipes-phosphor/packagegroups/packagegroup-hpe-apps.bb
@@ -0,0 +1,48 @@
+SUMMARY = "OpenBMC for HPE - Applications"
+PR = "r1"
+
+inherit packagegroup
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = " \
+        ${PN}-chassis \
+        ${PN}-fans \
+        ${PN}-flash \
+        ${PN}-system \
+        "
+
+PROVIDES += "virtual/obmc-chassis-mgmt"
+PROVIDES += "virtual/obmc-fan-mgmt"
+PROVIDES += "virtual/obmc-flash-mgmt"
+PROVIDES += "virtual/obmc-system-mgmt"
+
+RPROVIDES_${PN}-chassis += "virtual-obmc-chassis-mgmt"
+RPROVIDES_${PN}-fans += "virtual-obmc-fan-mgmt"
+RPROVIDES_${PN}-flash += "virtual-obmc-flash-mgmt"
+RPROVIDES_${PN}-system += "virtual-obmc-system-mgmt"
+
+SUMMARY_${PN}-chassis = "HPE Chassis"
+RDEPENDS_${PN}-chassis = " \
+        obmc-phosphor-buttons-signals \
+        obmc-phosphor-buttons-handler \
+        obmc-op-control-power \
+        obmc-host-failure-reboots \
+        "
+
+SUMMARY_${PN}-fans = "HPE Fans"
+RDEPENDS_${PN}-fans = " \
+        phosphor-pid-control \
+        "
+
+SUMMARY_${PN}-flash = "HPE Flash"
+RDEPENDS_${PN}-flash = " \
+        obmc-control-bmc \
+        "
+
+SUMMARY_${PN}-system = "HPE System"
+RDEPENDS_${PN}-system = " \
+        bmcweb \
+        phosphor-webui \
+        phosphor-ipmi-ipmb \
+        dbus-sensors \
+        "
diff --git a/meta-common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend b/meta-common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
new file mode 100644
index 0000000..fc6a055
--- /dev/null
+++ b/meta-common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
@@ -0,0 +1,10 @@
+RDEPENDS_${PN}-logging += "phosphor-logging"
+RDEPENDS_${PN}-extras += " bmcweb \
+                           phosphor-webui \
+                           phosphor-image-signing \
+                           phosphor-pid-control \
+"
+
+RDEPENDS_${PN}-fan-control = " \
+         ${VIRTUAL-RUNTIME_obmc-fan-control} \
+         "
