libweave: Move firmware version generation out of libweave

Temporarily location is weave::Options, should be moved into
weave::Settings.

BUG=brillo:1257,brillo:1253
TEST=`FEATURES=test emerge-gizmo libweave buffet`

Change-Id: Ib24083f02e56b9af28d11d046631f19593394b3e
Reviewed-on: https://chromium-review.googlesource.com/293926
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/main.cc b/buffet/main.cc
index 276e030..280abd6 100644
--- a/buffet/main.cc
+++ b/buffet/main.cc
@@ -5,10 +5,11 @@
 #include <string>
 
 #include <base/files/file_path.h>
+#include <chromeos/daemons/dbus_daemon.h>
 #include <chromeos/dbus/async_event_sequencer.h>
 #include <chromeos/dbus/exported_object_manager.h>
-#include <chromeos/daemons/dbus_daemon.h>
 #include <chromeos/flag_helper.h>
+#include <chromeos/key_value_store.h>
 #include <chromeos/strings/string_utils.h>
 #include <chromeos/syslog_logging.h>
 
@@ -101,6 +102,16 @@
   options.enable_ping = FLAGS_enable_ping;
   options.test_privet_ssid = FLAGS_test_privet_ssid;
 
+  base::FilePath lsb_release_path("/etc/lsb-release");
+  chromeos::KeyValueStore lsb_release_store;
+  if (lsb_release_store.Load(lsb_release_path) &&
+      lsb_release_store.GetString("CHROMEOS_RELEASE_VERSION",
+                                  &options.firmware_version)) {
+  } else {
+    LOG(ERROR) << "Failed to get CHROMEOS_RELEASE_VERSION from "
+               << lsb_release_path.value();
+  }
+
   buffet::Daemon daemon{options, std::set<std::string>{device_whitelist.begin(),
                                                        device_whitelist.end()}};
   return daemon.Run();