X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=NativeLauncher%2Finstaller-plugin%2Fprefer_dotnet_aot_plugin.cc;h=91928a7fa9a55ee777626cae7bef8337de19ff01;hb=546f3a3947b7e7c205a4799156bcd41bc5ae3c2e;hp=a4592b463a011922782f09b9e0662f97aee11a6e;hpb=7fd60cb80cf17a78a2a7701f91b2fa1ac7f0a2bf;p=platform%2Fcore%2Fdotnet%2Flauncher.git diff --git a/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc b/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc index a4592b4..91928a7 100644 --- a/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc +++ b/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc @@ -18,49 +18,64 @@ #include "log.h" #include "utils.h" -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "NETCORE_INSTALLER_PLUGIN" - #include #include -#include + +#include #include +#include -typedef struct Metadata { - const char *key; - const char *value; -} Metadata; +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "DOTNET_INSTALLER_PLUGIN" + +bool aotPluginInstalled = false; +bool aotPluginFinished = false; extern "C" int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgId, const char *appId, GList *list) { - GList *tag = NULL; - bool mdValue = false; - Metadata *mdInfo = NULL; - tag = g_list_first(list); - while (tag) { - mdInfo = (Metadata*)tag->data; - if (mdInfo->key == AOT_METADATA_KEY && mdInfo->value == AOT_METADATA_VALUE) { - _DBG("Prefer dotnet application AOT set TRUE"); - mdValue = true; + // Can be multiple apps in one package + if (aotPluginInstalled) { + _INFO("AOT plugin already installed"); + return 0; + } + aotPluginInstalled = true; + + int skipOpt = false; + if (!pkgmgr_installer_info_get_skip_optimization(&skipOpt)) { + if (skipOpt) { + _DBG("Skip dotnet AOT"); + return 0; } - tag = g_list_next(tag); } - if (mdValue) { - NiCommonOption option = {std::string(), std::string(), std::string()}; - if (initNICommon(&option) < 0) { + std::string metaValue = getMetadataValue(std::string(pkgId), AOT_METADATA_KEY); + if (metaValue.empty()) { + _ERR("Failed to get metadata from [%s]", pkgId); + return -1; + } + + if (metaValue == METADATA_VALUE_TRUE) { + _DBG("Prefer dotnet application AOT set TRUE"); + + if (initNICommon() != NI_ERROR_NONE) { _ERR("Fail to initialize NI Common"); return -1; } - if (createNiUnderPkgRoot(pkgId, false) != 0) { - _ERR("Failed to get root path from [%s]", pkgId); + NIOption* opt = getNIOption(); + if (opt == nullptr) { + _ERR("Fail to create option structure."); return -1; - } else { - _INFO("Complete make application to native image"); } + + if (createNIUnderPkgRoot(pkgId, opt) != NI_ERROR_NONE) { + _ERR("Failed to generate application to native image [%s]", pkgId); + return -1; + } + + _INFO("Complete make application to native image"); } return 0; } @@ -69,3 +84,39 @@ extern "C" int PKGMGR_MDPARSER_PLUGIN_UPGRADE(const char *pkgId, const char *app { return PKGMGR_MDPARSER_PLUGIN_INSTALL(pkgId, appId, list); } + +extern "C" int PKGMGR_MDPARSER_PLUGIN_UNINSTALL(const char *pkgId, const char *appId, GList *list) +{ + return 0; +} + +extern "C" int PKGMGR_MDPARSER_PLUGIN_REMOVED(const char *pkgId, const char *appId, GList *list) +{ + return PKGMGR_MDPARSER_PLUGIN_UPGRADE(pkgId, appId, list); +} + +extern "C" int PKGMGR_MDPARSER_PLUGIN_CLEAN(const char *pkgId, const char *appId, GList *list) +{ + // Can be multiple apps in one package + if (aotPluginFinished) { + _INFO("AOT plugin already finished(CLEAN)"); + return 0; + } + aotPluginFinished = true; + + finalizeNICommon(); + return 0; +} + +extern "C" int PKGMGR_MDPARSER_PLUGIN_UNDO(const char *pkgId, const char *appId, GList *list) +{ + // Can be multiple apps in one package + if (aotPluginFinished) { + _INFO("AOT plugin already finished(UNDO)"); + return 0; + } + aotPluginFinished = true; + + finalizeNICommon(); + return 0; +}