#include <cstring>
#include <vector>
-#include <sstream>
+
+#include <vconf.h>
#include <glib.h>
#include <pkgmgr_installer_info.h>
#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)
{
std::string metaValue = getMetadataValue(std::string(pkgId), AOT_METADATA_KEY);
if (metaValue.empty()) {
_ERR("Failed to get metadata from [%s]", pkgId);
- return 0;
+ return -1;
}
- if (metaValue == METADATA_VALUE) {
+ if (metaValue == METADATA_VALUE_TRUE) {
_DBG("Prefer dotnet application AOT set TRUE");
if (initNICommon() != NI_ERROR_NONE) {
return -1;
}
- if (createNIUnderPkgRoot(pkgId, 0) != NI_ERROR_NONE) {
- _ERR("Failed to get root path from [%s]", pkgId);
+ NIOption* opt = getNIOption();
+ if (opt == nullptr) {
+ _ERR("Fail to create option structure.");
+ return -1;
+ }
+
+ if (createNIUnderPkgRoot(pkgId, opt) != NI_ERROR_NONE) {
+ _ERR("Failed to generate application to native image [%s]", pkgId);
return -1;
}
extern "C" int PKGMGR_MDPARSER_PLUGIN_CLEAN(const char *pkgId, const char *appId, GList *list)
{
- // it can be call without initializeNICommon()
+ // 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;
}