add command to nitool to remove system and app ni
[platform/core/dotnet/launcher.git] / NativeLauncher / installer-plugin / prefer_dotnet_aot_plugin.cc
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "common.h"
18 #include "log.h"
19 #include "utils.h"
20
21 #ifdef  LOG_TAG
22 #undef  LOG_TAG
23 #endif
24 #define LOG_TAG "NETCORE_INSTALLER_PLUGIN"
25
26 #include <cstring>
27 #include <vector>
28 #include <sstream>
29 #include <glib.h>
30
31 typedef struct Metadata {
32         const char *key;
33         const char *value;
34 } Metadata;
35
36 const std::string valueType = "true";
37 const std::string mdKey = "http://tizen.org/metadata/prefer_dotnet_aot";
38 extern "C" int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgId, const char *appId, GList *list)
39 {
40         GList *tag = NULL;
41         bool mdValue = false;
42         Metadata *mdInfo = NULL;
43         tag = g_list_first(list);
44         while (tag) {
45                 mdInfo = (Metadata*)tag->data;
46                 if (mdInfo->key == mdKey && mdInfo->value == valueType) {
47                         _DBG("Prefer dotnet application AOT set TRUE");
48                         mdValue = true;
49                 }
50                 tag = g_list_next(tag);
51         }
52
53         if (mdValue) {
54                 if (createNiUnderPkgRoot(pkgId) != 0) {
55                         _ERR("Failed to get root path from [%s]", pkgId);
56                         return -1;
57                 } else {
58                         _DBG("Complete make application to native image");
59                 }
60         }
61         return 0;
62 }
63
64 extern "C" int PKGMGR_MDPARSER_PLUGIN_UPGRADE(const char *pkgId, const char *appId, GList *list)
65 {
66         return PKGMGR_MDPARSER_PLUGIN_INSTALL(pkgId, appId, list);
67 }