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

This package allows a system to specify an IPMI FRU that contains MAC
Address information used to populated MAC addresses for specified
interfaces.

Change-Id: I457d41509da0e63db4410937b84140d4ba410b41
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/meta-google/recipes-google/networking/gbmc-mac-config.bb b/meta-google/recipes-google/networking/gbmc-mac-config.bb
new file mode 100644
index 0000000..6ca4c79
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-mac-config.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Configures MAC addresses on 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
+
+SRC_URI += " \
+  file://gbmc-mac-config.service \
+  file://gbmc-mac-config.sh.in \
+  "
+
+S = "${WORKDIR}"
+
+RDEPENDS_${PN} += " \
+  bash \
+  ipmi-fru-sh \
+  "
+
+FILES_${PN} += "${systemd_unitdir}"
+
+SYSTEMD_SERVICE_${PN} += "gbmc-mac-config.service"
+
+GBMC_MAC_EEPROM_OF_NAME ?= ""
+
+# Maps the MAC address offset from the base address to an interface name
+# in bash associative array syntax.
+#   Ex. "[0]=eth0 [2]=eth2"
+GBMC_MAC_IF_MAP ?= ""
+
+do_install_append() {
+  if [ -z '${GBMC_MAC_EEPROM_OF_NAME}' ]; then
+    echo 'Missing GBMC_MAC_EEPROM_OF_NAME' >&2
+    exit 1
+  fi
+
+  # Build time dictionary sanity check
+  bash -c 'declare -A dict=(${GBMC_MAC_IF_MAP})'
+
+  sed gbmc-mac-config.sh.in \
+    -e 's#@EEPROM@#${GBMC_MAC_EEPROM_OF_NAME}#' \
+    -e 's#@NUM_TO_IF@#${GBMC_MAC_IF_MAP}#' \
+    >gbmc-mac-config.sh
+
+  install -d -m0755 ${D}${libexecdir}
+  install -m0755 gbmc-mac-config.sh ${D}${libexecdir}/
+
+  install -d -m0755 ${D}${systemd_system_unitdir}
+  install -m0644 gbmc-mac-config.service ${D}${systemd_system_unitdir}/
+}