#include <pkgmgr-info.h>
-#include <boost/filesystem.hpp>
-
#include <algorithm>
#include <string>
#include <utility>
#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 {
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(
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,
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;