Collect Bad/Broken VPDs in BMC

When there is a vpd failure case due to the
corruption in vpd data, this commit collects the bad vpd
into BMC tmp/bad-vpd directory, so that this bad-vpd directory
gets into BMC Dump collection.

Tested on simics.
1.Corrupted the data of a vpd file.

 dd if=/dev/zero of=/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a500.i2c-bus/i2c-9/9-0050/9-00500/nvmem bs=1 seek=170 count=3

2.No bad-vpd directory before executing the commit changes.

root@rainier:/tmp# ls
dbus_properties.json                                                               systemd-private-9dfe8fba43254dfc8b7be9e4278a3ced-systemd-resolved.service-8pLWbo
ibm-read-vpd                                                                       systemd-private-9dfe8fba43254dfc8b7be9e4278a3ced-systemd-timesyncd.service-7yowK9
images                                                                             vpd-manager
overlays                                                                           vpd-tool
systemd-private-9dfe8fba43254dfc8b7be9e4278a3ced-dbus-broker.service-hb47BQ
root@rainier:/tmp#

3. Due to the data corruption, ibm-read-vpd throws exception

root@rainier:/tmp# ./ibm-read-vpd --file /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a500.i2c-bus/i2c-9/9-0050/9-00500/nvmem
std::exception
root@rainier:/tmp#

4. And collects the broken vpd into bad-vpd directory in /tmp

root@rainier:/tmp# ls
bad-vpd                                                                            systemd-private-9dfe8fba43254dfc8b7be9e4278a3ced-dbus-broker.service-hb47BQ
dbus_properties.json                                                               systemd-private-9dfe8fba43254dfc8b7be9e4278a3ced-systemd-resolved.service-8pLWbo
ibm-read-vpd                                                                       systemd-private-9dfe8fba43254dfc8b7be9e4278a3ced-systemd-timesyncd.service-7yowK9
images                                                                             vpd-manager
overlays                                                                           vpd-tool
root@rainier:/tmp#

5. The bad vpd file is stored in /tmp/bad-vpd directory.

root@rainier:/tmp/bad-vpd# ls -l
-rw-r--r--    1 root     root         16384 Mar 28 19:54 i2c-9-0050
-rw-r--r--    1 root     root         65504 Mar 28 20:01 spi22

(vpd-names of i2c eeproms will be in the pattern "i2c-busNumber-eepromAddress";
for spi eeproms - "spiBusNumber")

Signed-off-by: PriyangaRamasamy <priyanga24@in.ibm.com>
Change-Id: I34fb8c61c79e02ca72d7e99413baebf7e5cb3d53
diff --git a/meson_options.txt b/meson_options.txt
index 20697d6..c95b48a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -22,3 +22,4 @@
 option('INVENTORY_JSON_EVEREST',type: 'string', value: '/usr/share/vpd/50003000.json',  description: 'Inventory JSON for Everest system.')
 option('DBUS_PROP_JSON',type: 'string', value: '/usr/share/vpd/dbus_properties.json',  description: 'Json which contains properties specific to dbus.')
 option('SYSTEM_JSON',type: 'string', value: '/usr/share/vpd/systems.json',  description: 'JSON file used to pick the right system json')
+option('BAD_VPD_DIR',type: 'string', value: '/tmp/bad-vpd/', description: 'Directory which contains the bad vpd file - which needs to be included in bmc dump.')