From 9c2a1ac81c620fb58024a88f0075bcf446da6623 Mon Sep 17 00:00:00 2001 From: "j-h.choi" Date: Thu, 13 Feb 2020 15:46:55 +0900 Subject: [PATCH] Add flags to the install plugin to avoid duplicate execution Change-Id: If3297d4939cfbbcc4be106c849bb2b1334213ede --- .../installer-plugin/prefer_dotnet_aot_plugin.cc | 9 ++++++ .../installer-plugin/prefer_nuget_cache_plugin.cc | 37 ++++++++++++++++++++++ NativeLauncher/tool/tpatool.cc | 2 +- 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc b/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc index 161d8d6..9e09ad1 100644 --- a/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc +++ b/NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc @@ -34,8 +34,17 @@ typedef struct Metadata { const char *value; } Metadata; +bool aotPluginInstalled = false; + extern "C" int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgId, const char *appId, GList *list) { + // 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) { diff --git a/NativeLauncher/installer-plugin/prefer_nuget_cache_plugin.cc b/NativeLauncher/installer-plugin/prefer_nuget_cache_plugin.cc index fbe3bd3..0d87f66 100644 --- a/NativeLauncher/installer-plugin/prefer_nuget_cache_plugin.cc +++ b/NativeLauncher/installer-plugin/prefer_nuget_cache_plugin.cc @@ -57,6 +57,8 @@ std::string rootPath; std::string execName; std::string binPath; static sqlite3 *tac_db = NULL; +bool tacPluginInstalled = false; +bool tacPluginFinished = false; bool metadataCheck(GList *list) { @@ -261,6 +263,13 @@ extern "C" int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgId, const char *app _DBG("[===== PKGMGR_MDPARSER_PLUGIN_INSTALL =====]"); _INFO("PackageID : %s", pkgId); + // Can be multiple apps in one package + if (tacPluginInstalled) { + _INFO("TAC plugin already installed"); + return 0; + } + tacPluginInstalled = true; + if (!appTypeCheck(std::string(pkgId))) { _INFO("App type is not dotnet"); return 0; @@ -393,6 +402,13 @@ extern "C" int PKGMGR_MDPARSER_PLUGIN_UPGRADE(const char *pkgId, const char *app _DBG("[===== PKGMGR_MDPARSER_PLUGIN_UPGRADE =====]"); _INFO("PackageID : %s", pkgId); + // Can be multiple apps in one package + if (tacPluginInstalled) { + _INFO("TAC plugin already upgraded"); + return 0; + } + tacPluginInstalled = true; + if (!appTypeCheck(std::string(pkgId))) { _INFO("App type is not dotnet"); return 0; @@ -554,6 +570,13 @@ extern "C" int PKGMGR_MDPARSER_PLUGIN_UNINSTALL(const char *pkgId, const char *a _DBG("[===== PKGMGR_MDPARSER_PLUGIN_UNINSTALL =====]"); _INFO("PackageID : %s", pkgId); + // Can be multiple apps in one package + if (tacPluginInstalled) { + _INFO("TAC plugin already uninstalled"); + return 0; + } + tacPluginInstalled = true; + status = "uninstall"; tac_db = dbOpen(TAC_APP_LIST_DB); if (!tac_db) { @@ -645,6 +668,13 @@ extern "C" int PKGMGR_MDPARSER_PLUGIN_CLEAN(const char *pkgId, const char *appId _DBG("[===== PKGMGR_MDPARSER_PLUGIN_CLEAN =====]"); _INFO("PackageID : %s", pkgId); + // Can be multiple apps in one package + if (tacPluginFinished) { + _INFO("TAC plugin already finished(CLEAN)"); + return 0; + } + tacPluginFinished = true; + if (tac_db) { dbClose(tac_db); tac_db = NULL; @@ -710,6 +740,13 @@ extern "C" int PKGMGR_MDPARSER_PLUGIN_UNDO(const char *pkgId, const char *appId, _DBG("[===== PKGMGR_MDPARSER_PLUGIN_UNDO =====]"); _INFO("PackageID : %s", pkgId); + // Can be multiple apps in one package + if (tacPluginFinished) { + _INFO("TAC plugin already finished(UNDO)"); + return 0; + } + tacPluginFinished = true; + if (tac_db) { dbRollback(tac_db); tac_db = NULL; diff --git a/NativeLauncher/tool/tpatool.cc b/NativeLauncher/tool/tpatool.cc index 8fff878..197bf50 100644 --- a/NativeLauncher/tool/tpatool.cc +++ b/NativeLauncher/tool/tpatool.cc @@ -34,7 +34,7 @@ int main(int argc, char* argv[]) out << tpaList; out.close(); } else { - fprintf(stderr, "Failed to create platform_tpa_cache. Symbolic link is detected"); + fprintf(stderr, "Failed to create platform_tpa_cache. Symbolic link is detected\n"); return -1; } -- 2.7.4