fru_gen: reduce map in generated data

Eliminate one level of the generated "frus" map by creating
a structure for the lowest-level member.

This should reduce the impact of a gcc bug that consumes
excessive memory when compiling the generated map.  Also
removed the runtime calculation of the 'delimiter' character
and instead generated it in the fru_gen python script.

Resolves openbmc/openbmc#1441.
Resolves openbmc/openbmc#1166.

Change-Id: Iafe049d034354d58b68d357b4f49fd5e21b2c8c7
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/scripts/writefru.mako.cpp b/scripts/writefru.mako.cpp
index 6180e13..82941a4 100644
--- a/scripts/writefru.mako.cpp
+++ b/scripts/writefru.mako.cpp
@@ -14,9 +14,16 @@
              {"${interface}",{
             % for dbus_property,property_value in properties.items():
                  {"${dbus_property}",{
-                % for name,value in property_value.items():
-                     {"${name}","${value}"},
-                % endfor
+                     "${property_value.get("IPMIFruSection", "")}",
+                     "${property_value.get("IPMIFruProperty", "")}", \
+<%
+    delimiter = property_value.get("IPMIFruValueDelimiter")
+    if not delimiter:
+        delimiter = ""
+    else:
+        delimiter = '\\' + hex(delimiter)[1:]
+%>
+                     "${delimiter}"
                  }},
             % endfor
              }},