meta-google: gbmc-kcs-config: Add package

Change-Id: I0e68a7520191554680c94d8e3b8bc98f368ac71b
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/meta-google/recipes-google/kcs/gbmc-kcs-config.bb b/meta-google/recipes-google/kcs/gbmc-kcs-config.bb
new file mode 100644
index 0000000..ca71106
--- /dev/null
+++ b/meta-google/recipes-google/kcs/gbmc-kcs-config.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Configures KCS for a gBMC system"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+
+S = "${WORKDIR}"
+
+PROVIDES += "virtual-obmc-host-ipmi-hw"
+RPROVIDES_${PN} += "virtual-obmc-host-ipmi-hw"
+
+FILES_${PN} += "${systemd_system_unitdir}"
+RDEPENDS_${PN} += "google-kcsbridge"
+
+GBMC_KCS_DEV ?= ""
+
+def systemd_escape_char(c):
+  return '\\x{:x}'.format(ord(c))
+
+def systemd_escape(unit):
+  import string
+  ret = ''
+  if len(unit) > 0 and unit[0] == '.':
+    ret += systemd_escape_char(unit[0])
+    unit = unit[1:]
+  for c in unit:
+    if c == '/':
+      ret += '-'
+    elif c not in {*string.ascii_letters, *string.digits, ':', '_', '.'}:
+      ret += systemd_escape_char(c)
+    else:
+      ret += c
+  return ret
+
+do_install_append() {
+  if [ -z '${GBMC_KCS_DEV}' ]; then
+    echo "Missing GBMC_KCS_DEV" >&2
+    exit 1
+  fi
+
+  wantdir=${D}${systemd_system_unitdir}/multi-user.target.wants
+  install -d -m0755 $wantdir
+  inst="${@systemd_escape(GBMC_KCS_DEV)}"
+  ln -sv ../kcsbridge@.service $wantdir/kcsbridge@$inst.service
+}
diff --git a/meta-google/recipes-phosphor/images/obmc-phosphor-image.bbappend b/meta-google/recipes-phosphor/images/obmc-phosphor-image.bbappend
index acccde5..0dc37fd 100644
--- a/meta-google/recipes-phosphor/images/obmc-phosphor-image.bbappend
+++ b/meta-google/recipes-phosphor/images/obmc-phosphor-image.bbappend
@@ -11,3 +11,5 @@
   '${@"" if not d.getVar("GBMC_NCSI_IF_NAME") else " gbmc-ncsi-config"}'
 OBMC_IMAGE_EXTRA_INSTALL_append_gbmc = \
   '${@"" if not d.getVar("GBMC_MAC_EEPROM_OF_NAME") else " gbmc-mac-config"}'
+OBMC_IMAGE_EXTRA_INSTALL_append_gbmc = \
+  '${@"" if not d.getVar("GBMC_KCS_DEV") else " gbmc-kcs-config"}'