Remove boost dependency
[platform/core/appfw/app-installers.git] / src / common / plugins / plugin_manager.cc
index 17045dc..550d6d8 100644 (file)
@@ -6,8 +6,6 @@
 
 #include <pkgmgr-info.h>
 
-#include <boost/filesystem.hpp>
-
 #include <algorithm>
 #include <string>
 #include <utility>
@@ -16,9 +14,9 @@
 #include "common/plugins/plugin_factory.h"
 #include "common/plugins/plugin_list_parser.h"
 #include "common/plugins/plugin_xml_parser.h"
-#include "common/plugins/types/category_plugin.h"
-#include "common/plugins/types/metadata_plugin.h"
-#include "common/plugins/types/tag_plugin.h"
+#include "common/plugins/category_plugin.h"
+#include "common/plugins/metadata_plugin.h"
+#include "common/plugins/tag_plugin.h"
 #include "common/utils/glist_range.h"
 
 namespace {
@@ -60,7 +58,8 @@ namespace common_installer {
 
 bool PluginManager::IsDataRemoved(const char* data_type,
                                   const std::string& data) {
-  return pkg_query_.IsPluginExecuted(std::string(data_type), data);
+  PkgQueryInterface pkg_query(pkgid_, uid_);
+  return pkg_query.IsPluginExecuted(data_type, data);
 }
 
 bool PluginManager::GenerateUnknownTagList(
@@ -144,6 +143,17 @@ bool PluginManager::LoadPlugins(Plugin::ActionType action_type) {
         if (done)
           break;
       }
+      /* metadata of package, since Tizen 7.5 */
+      for (metadata_x* meta : GListRange<metadata_x*>(manifest_->metadata)) {
+        if (IsSubKey(meta->key, plugin_info->name())) {
+          plugin = factory.CreatePluginByPluginInfo(*plugin_info);
+          if (!plugin)
+            LOG(WARNING) << "Failed to load plugin: "
+                         << plugin_info->path()
+                         << " Plugin has been skipped.";
+          break;
+        }
+      }
       if (!done && action_type == Plugin::ActionType::Upgrade &&
           IsDataRemoved(MetadataPlugin::kType, plugin_info->name())) {
         plugin = factory.CreatePluginByPluginInfo(*plugin_info,
@@ -194,15 +204,18 @@ bool PluginManager::LoadPlugins(Plugin::ActionType action_type) {
 bool PluginManager::RunPlugins(Plugin::ActionType action_type) {
   LOG(DEBUG) << "Running pkgmgr plugins...";
   for (auto& plugin : loaded_plugins_) {
-    // FIXME: Ignore if plugin failed for now, we need to keep installation
-    // working nevertheless plugins are broken
+    auto& plugin_info = plugin->plugin_info();
+    LOG(INFO) << "Running plugin: " << plugin_info.path();
     bool success = plugin->Run(xml_parser_.doc_ptr(), manifest_, action_type);
     if (!success) {
-      bool vitalness = plugin->plugin_info().vitalness();
-      if (vitalness)
+      bool vitalness = plugin_info.vitalness();
+      if (vitalness) {
+        LOG(ERROR) << plugin_info.path() << " fails";
         return false;
-      else
-        LOG(ERROR) << "plugin Run fail but installation is ongoing";
+      } else {
+        LOG(ERROR) << plugin_info.path()
+                   << " fails but installation is ongoing";
+      }
     }
   }
   return true;