[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/meta/meta-mediatek/recipes-support/update-engine-sideload/files/update_engine.patch b/meta/meta-mediatek/recipes-support/update-engine-sideload/files/update_engine.patch
new file mode 100644
index 0000000..af502f6
--- /dev/null
+++ b/meta/meta-mediatek/recipes-support/update-engine-sideload/files/update_engine.patch
@@ -0,0 +1,312 @@
+diff --git a/common/platform_constants_android.cc b/common/platform_constants_android.cc
+index 371fe26..ef13058 100644
+--- a/common/platform_constants_android.cc
++++ b/common/platform_constants_android.cc
+@@ -30,7 +30,7 @@ const char kUpdatePayloadPublicKeyPath[] =
+ const char kCACertificatesPath[] = "/system/etc/security/cacerts_google";
+ // No deadline file API support on Android.
+ const char kOmahaResponseDeadlineFile[] = "";
+-const char kNonVolatileDirectory[] = "/data/misc/update_engine";
++const char kNonVolatileDirectory[] = "/var/lib/update_engine";
+ const char kPostinstallMountOptions[] =
+   "context=u:object_r:postinstall_file:s0";
+ 
+diff --git a/hardware_android.cc b/hardware_android.cc
+index 947b13a..0ccb161 100644
+--- a/hardware_android.cc
++++ b/hardware_android.cc
+@@ -22,10 +22,11 @@
+ 
+ #include <algorithm>
+ #include <memory>
+-
++#if 0
+ #include <bootloader.h>
+ 
+ #include <android-base/properties.h>
++#endif
+ #include <base/files/file_util.h>
+ #include <base/strings/stringprintf.h>
+ 
+@@ -34,9 +35,11 @@
+ #include "update_engine/common/utils.h"
+ #include "update_engine/utils_android.h"
+ 
++#if 0
+ using android::base::GetBoolProperty;
+ using android::base::GetIntProperty;
+ using android::base::GetProperty;
++#endif
+ using std::string;
+ 
+ namespace chromeos_update_engine {
+@@ -58,7 +61,7 @@ const char kPropProductManufacturer[] = "ro.product.manufacturer";
+ const char kPropBootHardwareSKU[] = "ro.boot.hardware.sku";
+ const char kPropBootRevision[] = "ro.boot.revision";
+ const char kPropBuildDateUTC[] = "ro.build.date.utc";
+-
++#if 0
+ // Write a recovery command line |message| to the BCB. The arguments to recovery
+ // must be separated by '\n'. An empty string will erase the BCB.
+ bool WriteBootloaderRecoveryMessage(const string& message) {
+@@ -91,7 +94,7 @@ bool WriteBootloaderRecoveryMessage(const string& message) {
+   }
+   return true;
+ }
+-
++#endif
+ }  // namespace
+ 
+ namespace hardware {
+@@ -124,7 +127,7 @@ bool HardwareAndroid::IsOfficialBuild() const {
+   //
+   // In case of a non-bool value, we take the most restrictive option and
+   // assume we are in an official-build.
+-  return GetBoolProperty("ro.secure", true);
++  return true;//GetBoolProperty("ro.secure", true);
+ }
+ 
+ bool HardwareAndroid::IsNormalBootMode() const {
+@@ -132,11 +135,11 @@ bool HardwareAndroid::IsNormalBootMode() const {
+   // update_engine will allow extra developers options, such as providing a
+   // different update URL. In case of error, we assume the build is in
+   // normal-mode.
+-  return !GetBoolProperty("ro.debuggable", false);
++  return true;//!GetBoolProperty("ro.debuggable", false);
+ }
+ 
+ bool HardwareAndroid::AreDevFeaturesEnabled() const {
+-  return !IsNormalBootMode();
++  return false;//!IsNormalBootMode();
+ }
+ 
+ bool HardwareAndroid::IsOOBEEnabled() const {
+@@ -152,19 +155,22 @@ bool HardwareAndroid::IsOOBEComplete(base::Time* out_time_of_oobe) const {
+ }
+ 
+ string HardwareAndroid::GetHardwareClass() const {
+-  auto manufacturer = GetProperty(kPropProductManufacturer, "");
+-  auto sku = GetProperty(kPropBootHardwareSKU, "");
+-  auto revision = GetProperty(kPropBootRevision, "");
++  //auto manufacturer = GetProperty(kPropProductManufacturer, "");
++  //auto sku = GetProperty(kPropBootHardwareSKU, "");
++  //auto revision = GetProperty(kPropBootRevision, "");
+ 
+-  return manufacturer + ":" + sku + ":" + revision;
++  //return manufacturer + ":" + sku + ":" + revision;
++  return "manufacturer:sku:revision";
+ }
+ 
+ string HardwareAndroid::GetFirmwareVersion() const {
+-  return GetProperty(kPropBootBootloader, "");
++  //return GetProperty(kPropBootBootloader, "");
++  return "1.0";
+ }
+ 
+ string HardwareAndroid::GetECVersion() const {
+-  return GetProperty(kPropBootBaseband, "");
++  //return GetProperty(kPropBootBaseband, "");
++  return "1.0";
+ }
+ 
+ int HardwareAndroid::GetPowerwashCount() const {
+@@ -174,11 +180,11 @@ int HardwareAndroid::GetPowerwashCount() const {
+ 
+ bool HardwareAndroid::SchedulePowerwash() {
+   LOG(INFO) << "Scheduling a powerwash to BCB.";
+-  return WriteBootloaderRecoveryMessage(kAndroidRecoveryPowerwashCommand);
++  return false;//WriteBootloaderRecoveryMessage(kAndroidRecoveryPowerwashCommand);
+ }
+ 
+ bool HardwareAndroid::CancelPowerwash() {
+-  return WriteBootloaderRecoveryMessage("");
++  return true;//WriteBootloaderRecoveryMessage("");
+ }
+ 
+ bool HardwareAndroid::GetNonVolatileDirectory(base::FilePath* path) const {
+@@ -197,7 +203,8 @@ bool HardwareAndroid::GetPowerwashSafeDirectory(base::FilePath* path) const {
+ }
+ 
+ int64_t HardwareAndroid::GetBuildTimestamp() const {
+-  return GetIntProperty<int64_t>(kPropBuildDateUTC, 0);
++  //return GetIntProperty<int64_t>(kPropBuildDateUTC, 0);
++  return utils::GetIntProperty(kPropBuildDateUTC, 0);
+ }
+ 
+ bool HardwareAndroid::GetFirstActiveOmahaPingSent() const {
+diff --git a/sideload_main.cc b/sideload_main.cc
+index ddb312e..b983534 100644
+--- a/sideload_main.cc
++++ b/sideload_main.cc
+@@ -155,7 +155,7 @@ bool ApplyUpdatePayload(const string& payload,
+ 
+   // During the sideload we don't access the prefs persisted on disk but instead
+   // use a temporary memory storage.
+-  MemoryPrefs prefs;
++  //MemoryPrefs prefs;
+ 
+   std::unique_ptr<BootControlInterface> boot_control =
+       boot_control::CreateBootControl();
+@@ -169,9 +169,21 @@ bool ApplyUpdatePayload(const string& payload,
+     LOG(ERROR) << "Error initializing the HardwareInterface.";
+     return false;
+   }
++  base::FilePath non_volatile_path;
++  if (!hardware->GetNonVolatileDirectory(&non_volatile_path)) {
++    LOG(ERROR) << "Failed to get a non-volatile directory.";
++    return false;
++  }
++  std::unique_ptr<PrefsInterface> prefsIf;
++  Prefs* prefs = new Prefs();
++  if (!prefs->Init(non_volatile_path.Append(kPrefsSubDirectory))) {
++    LOG(ERROR) << "Failed to initialize preferences.";
++    return false;
++  }
++  prefsIf.reset(prefs);
+ 
+   UpdateAttempterAndroid update_attempter(
+-      &sideload_daemon_state, &prefs, boot_control.get(), hardware.get());
++      &sideload_daemon_state, prefsIf.get(), boot_control.get(), hardware.get());
+   update_attempter.Init();
+ 
+   TEST_AND_RETURN_FALSE(update_attempter.ApplyPayload(
+diff --git a/update_attempter_android.cc b/update_attempter_android.cc
+index 04ccb18..60e96ff 100644
+--- a/update_attempter_android.cc
++++ b/update_attempter_android.cc
+@@ -21,7 +21,7 @@
+ #include <memory>
+ #include <utility>
+ 
+-#include <android-base/properties.h>
++//#include <android-base/properties.h>
+ #include <base/bind.h>
+ #include <base/logging.h>
+ #include <base/strings/string_number_conversions.h>
+@@ -29,7 +29,7 @@
+ #include <brillo/data_encoding.h>
+ #include <brillo/message_loops/message_loop.h>
+ #include <brillo/strings/string_utils.h>
+-#include <log/log_safetynet.h>
++//#include <log/log_safetynet.h>
+ 
+ #include "update_engine/common/constants.h"
+ #include "update_engine/common/error_code_utils.h"
+@@ -449,7 +449,7 @@ void UpdateAttempterAndroid::ProcessingDone(const ActionProcessor* processor,
+ 
+     case ErrorCode::kPayloadTimestampError:
+       // SafetyNet logging, b/36232423
+-      android_errorWriteLog(0x534e4554, "36232423");
++      //android_errorWriteLog(0x534e4554, "36232423");
+       break;
+ 
+     default:
+@@ -599,7 +599,10 @@ void UpdateAttempterAndroid::SetStatusAndNotify(UpdateStatus status) {
+   status_ = status;
+   size_t payload_size =
+       install_plan_.payloads.empty() ? 0 : install_plan_.payloads[0].size;
+-  UpdateEngineStatus status_to_send = {.status = status_,
++  UpdateEngineStatus status_to_send = {.last_checked_time = 0,
++				       .status = status_,
++                                       .current_version = "n",
++				       .current_system_version = "n",
+                                        .progress = download_progress_,
+                                        .new_size_bytes = payload_size};
+ 
+@@ -764,8 +767,8 @@ void UpdateAttempterAndroid::UpdatePrefsAndReportUpdateMetricsOnReboot() {
+   string current_boot_id;
+   TEST_AND_RETURN(utils::GetBootId(&current_boot_id));
+   // Example: [ro.build.version.incremental]: [4292972]
+-  string current_version =
+-      android::base::GetProperty("ro.build.version.incremental", "");
++  string current_version = "4292972";
++      //android::base::GetProperty("ro.build.version.incremental", "");
+   TEST_AND_RETURN(!current_version.empty());
+ 
+   // If there's no record of previous version (e.g. due to a data wipe), we
+diff --git a/update_manager/policy.h b/update_manager/policy.h
+index b60c4da..a57cfa6 100644
+--- a/update_manager/policy.h
++++ b/update_manager/policy.h
+@@ -202,7 +202,7 @@ class Policy {
+                                           std::string*, R*,
+                                           Args...) const) const {
+     std::string class_name = PolicyName() + "::";
+-
++#if 0
+     if (reinterpret_cast<typeof(&Policy::UpdateCheckAllowed)>(
+             policy_method) == &Policy::UpdateCheckAllowed)
+       return class_name + "UpdateCheckAllowed";
+@@ -223,6 +223,7 @@ class Policy {
+       return class_name + "P2PEnabledChanged";
+ 
+     NOTREACHED();
++#endif
+     return class_name + "(unknown)";
+   }
+ 
+diff --git a/utils_android.cc b/utils_android.cc
+index 393e65a..40c06b7 100644
+--- a/utils_android.cc
++++ b/utils_android.cc
+@@ -15,8 +15,10 @@
+ //
+ 
+ #include "update_engine/utils_android.h"
++#include <base/strings/string_number_conversions.h>
++#include <brillo/key_value_store.h>
+ 
+-#include <fs_mgr.h>
++#include <fstab/fstab.h>
+ 
+ using std::string;
+ 
+@@ -40,6 +42,9 @@ static struct fstab* OpenFSTab() {
+ namespace utils {
+ 
+ bool DeviceForMountPoint(const string& mount_point, base::FilePath* device) {
++ //*device = base::FilePath("/dev/disk/by-partlabel/misc");
++ // return true;
++#if 1
+   struct fstab* fstab;
+   struct fstab_rec* record;
+ 
+@@ -58,8 +63,26 @@ bool DeviceForMountPoint(const string& mount_point, base::FilePath* device) {
+   *device = base::FilePath(record->blk_device);
+   fs_mgr_free_fstab(fstab);
+   return true;
++#endif
+ }
+ 
++int64_t GetIntProperty(const string& key, int64_t default_value){
++    brillo::KeyValueStore store;
++    if(store.Load(base::FilePath("/etc/update_engine/build.prop"))){
++        std::string result;
++        int64_t result_value;
++        if(!store.GetString(key, &result)){
++            LOG(ERROR) << "Error get key" << key;
++            return default_value;
++        }
++        if(base::StringToInt64(result,&result_value)){
++            return result_value;
++        }
++    }else{
++         LOG(ERROR) << "Error opening property file.";
++    }
++    return default_value;
++}
+ }  // namespace utils
+ 
+ }  // namespace chromeos_update_engine
+diff --git a/utils_android.h b/utils_android.h
+index 18dd8ab..9692610 100644
+--- a/utils_android.h
++++ b/utils_android.h
+@@ -30,6 +30,7 @@ namespace utils {
+ bool DeviceForMountPoint(const std::string& mount_point,
+                          base::FilePath* device);
+ 
++int64_t GetIntProperty(const std::string& key, int64_t default_value);
+ }  // namespace utils
+ 
+ }  // namespace chromeos_update_engine