openpower-pnor-code-mgmt: Initial recipe

Create recipe for the openpower-pnor-code-mgmt repo.
Move the pnor-specific service files from the phosphor
layer to the open-power one.
Add the new openpower-software-manager to packagegroups.

Change-Id: Iab47b82e6872f7f92aed6260c51eaf0acf744aeb
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/common/recipes-phosphor/flash/openpower-software-manager.bb b/common/recipes-phosphor/flash/openpower-software-manager.bb
new file mode 100644
index 0000000..f824835
--- /dev/null
+++ b/common/recipes-phosphor/flash/openpower-software-manager.bb
@@ -0,0 +1,37 @@
+SUMMARY = "OpenPower Software Management"
+DESCRIPTION = "OpenPower Software Manager provides a set of host software \
+management daemons. It is suitable for use on a wide variety of OpenPower \
+platforms."
+HOMEPAGE = "https://github.com/openbmc/openpower-pnor-code-mgmt"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+inherit autotools pkgconfig
+inherit obmc-phosphor-dbus-service
+
+DEPENDS += " \
+        autoconf-archive-native \
+        phosphor-dbus-interfaces \
+        phosphor-logging \
+        sdbusplus \
+        "
+
+RDEPENDS_${PN} += " \
+        mtd-utils-ubifs \
+        phosphor-dbus-interfaces \
+        phosphor-logging \
+        sdbusplus \
+        "
+
+DBUS_SERVICE_${PN} += "org.open_power.Software.Host.Updater.service"
+SYSTEMD_SERVICE_${PN} += " \
+        obmc-flash-bios-ubiattach.service \
+        obmc-flash-bios-ubimount@.service \
+        obmc-flash-bios-squashfsmount@.service \
+        "
+
+SRC_URI += "git://github.com/openbmc/openpower-pnor-code-mgmt"
+SRCREV = "1e9b7163913b1e64766a4263bc47e6cff5af3120"
+
+S = "${WORKDIR}/git"
diff --git a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-squashfsmount@.service b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-squashfsmount@.service
new file mode 100644
index 0000000..1bf15bf
--- /dev/null
+++ b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-squashfsmount@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount SquashFS image pnor-ro-%I
+Requires=obmc-flash-bios-ubiattach.service
+After=obmc-flash-bios-ubiattach.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/bin/sh -c '{sbindir}/ubimkvol /dev/ubi0 -N pnor-ro-%i -s 32MiB --type=static; \
+                      mkdir /media/pnor-ro-%i; \
+                      volumeid%i=`ubinfo -d 0 -N pnor-ro-%i | grep "Volume ID" | sed -e "s|Volume ID:||" -e "s/^ *//" | grep -o "^\S*"`; \
+                      ubiblock --create /dev/ubi0_$volumeid%i; \
+                      ubiupdatevol /dev/ubi0_$volumeid%i /tmp/images/%i/pnor.xz.squashfs; \
+                      mount -t squashfs -o ro /dev/ubiblock0_$volumeid%i /media/pnor-ro-%i'
diff --git a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiattach.service b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiattach.service
new file mode 100644
index 0000000..90013ff
--- /dev/null
+++ b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiattach.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Attach the PNOR mtd device to UBI
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/bin/sh -c 'grep pnor /proc/mtd |cut -c 4 |xargs {sbindir}/ubiattach /dev/ubi_ctrl -m'
+ExecStop=/bin/sh -c 'grep pnor /proc/mtd |cut -c 4 |xargs {sbindir}/ubidetach /dev/ubi_ctrl -m'
diff --git a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubimount@.service b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubimount@.service
new file mode 100644
index 0000000..5abab7f
--- /dev/null
+++ b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubimount@.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Mount UBIFS volume pnor-rw-%I
+Requires=obmc-flash-bios-ubiattach.service
+After=obmc-flash-bios-ubiattach.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/bin/sh -c '{sbindir}/ubimkvol /dev/ubi0 -N pnor-rw-%i -s 1MiB; \
+                      mkdir /media/pnor-rw-%i; \
+                      mount -t ubifs ubi0:pnor-rw-%i /media/pnor-rw-%i'
diff --git a/common/recipes-phosphor/flash/openpower-software-manager/org.open_power.Software.Host.Updater.service b/common/recipes-phosphor/flash/openpower-software-manager/org.open_power.Software.Host.Updater.service
new file mode 100644
index 0000000..d0519da
--- /dev/null
+++ b/common/recipes-phosphor/flash/openpower-software-manager/org.open_power.Software.Host.Updater.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=OpenPower Software Update Manager
+Wants=xyz.openbmc_project.Software.Version.service
+Before=xyz.openbmc_project.Software.Version.service
+
+[Service]
+ExecStart={sbindir}/openpower-update-manager
+Restart=always
+Type=dbus
+BusName={BUSNAME}
+
+[Install]
+WantedBy={SYSTEMD_DEFAULT_TARGET}
diff --git a/common/recipes-phosphor/packagegroups/packagegroup-op-apps.bb b/common/recipes-phosphor/packagegroups/packagegroup-op-apps.bb
index b4ff9ab..8e69012 100644
--- a/common/recipes-phosphor/packagegroups/packagegroup-op-apps.bb
+++ b/common/recipes-phosphor/packagegroups/packagegroup-op-apps.bb
@@ -52,6 +52,7 @@
         obmc-mgr-download \
         obmc-op-flasher \
         obmc-control-bmc \
+        openpower-software-manager \
         "
 
 SUMMARY_${PN}-system = "OpenPOWER System"