Add flags to the install plugin to avoid duplicate execution accepted/tizen/unified/20200413.222040 submit/tizen/20200413.110328
authorj-h.choi <j-h.choi@samsung.com>
Thu, 13 Feb 2020 06:46:55 +0000 (15:46 +0900)
committer이형주/Common Platform Lab(SR)/Staff Engineer/삼성전자 <leee.lee@samsung.com>
Mon, 13 Apr 2020 05:12:11 +0000 (14:12 +0900)
Change-Id: If3297d4939cfbbcc4be106c849bb2b1334213ede

NativeLauncher/installer-plugin/prefer_dotnet_aot_plugin.cc
NativeLauncher/installer-plugin/prefer_nuget_cache_plugin.cc
NativeLauncher/tool/tpatool.cc

index 161d8d6..9e09ad1 100644 (file)
@@ -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) {
index fbe3bd3..0d87f66 100644 (file)
@@ -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;
index 8fff878..197bf50 100644 (file)
@@ -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;
        }