X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=NativeLauncher%2Ftool%2Fni_common.cc;h=bacf9238789b80aa798f82ec3496ac77f9639027;hb=cc0b219c237b8b49cd92408911bbe7d8c72f8a4b;hp=6ab3e10d7d4bda1539ef2594f8395a54b9df678c;hpb=18bd8723ac6603b9a5ad549ebb293b8af39b5d6a;p=platform%2Fcore%2Fdotnet%2Flauncher.git diff --git a/NativeLauncher/tool/ni_common.cc b/NativeLauncher/tool/ni_common.cc index 6ab3e10..bacf923 100644 --- a/NativeLauncher/tool/ni_common.cc +++ b/NativeLauncher/tool/ni_common.cc @@ -233,6 +233,7 @@ static bool createDirsAndCopyOwnerShip(std::string& target_path, const std::stri static std::string getNIFilePath(const std::string& absDllPath, NIOption* opt) { std::string dllPath = absDllPath; + std::string fileName = getFileName(absDllPath); if (opt->flags & NI_FLAGS_APPNI) { std::string niDirPath; std::string niTmpDirPath; @@ -253,10 +254,13 @@ static std::string getNIFilePath(const std::string& absDllPath, NIOption* opt) niTmpDirPath = prevPath; _SERR("fail to create dir (%s)", niTmpDirPath.c_str()); } - dllPath = concatPath(niTmpDirPath, getFileName(absDllPath)); + dllPath = concatPath(niTmpDirPath, fileName); } else { - dllPath = concatPath(niDirPath, getFileName(absDllPath)); + dllPath = concatPath(niDirPath, fileName); } + } else if (opt->flags & NI_FLAGS_RESOURCE_NI) { + std::string rpkDir = concatPath(__pm->getAppRootPath(), APP_NI_SUB_DIR); + dllPath = createDir(rpkDir) ? concatPath(rpkDir, fileName) : concatPath(__pm->getAppRootPath(), fileName); } size_t index = dllPath.find_last_of("."); @@ -466,6 +470,11 @@ static ni_error_e crossgen2PostAction(const std::string& dllPath, const std::str } } + if (opt->flags & NI_FLAGS_RESOURCE_NI) { + moveFile(niPath, changeExtension(dllPath, ".dll", ".ni.dll")); + removeAll(concatPath(__pm->getAppRootPath(), APP_NI_SUB_DIR)); + } + if (!(opt->flags & NI_FLAGS_INPUT_BUBBLE && opt->flags & NI_FLAGS_NO_PIPELINE)) { _SOUT("Native image %s generated successfully.", outFile.c_str()); } @@ -825,7 +834,7 @@ static ni_error_e removeAndCreateNI(const char* pkgId, NIOption* pOptions) } _SOUT("Complete make native image for pkg (%s)", pkgId); - return NI_ERROR_NONE; + return NI_ERROR_NONE; } static bool isReadOnlyPkg(std::string pkgId) @@ -1026,7 +1035,6 @@ ni_error_e createNIUnderTAC(const std::string& targetPath, const std::string& re return NI_ERROR_NONE; } - ni_error_e createNIUnderDirs(const std::string& rootPaths, NIOption* opt) { ni_error_e ret = NI_ERROR_NONE; @@ -1082,6 +1090,7 @@ ni_error_e createNIUnderPkgRoot(const std::string& pkgId, NIOption* opt) _SERR("Failed to get root path from [%s]", pkgId.c_str()); return NI_ERROR_INVALID_PACKAGE; } + __pm->setAppRootPath(rootPath); char* extraDllPaths = pluginGetExtraDllPath(); if (extraDllPaths && extraDllPaths[0] != '\0') { @@ -1091,7 +1100,10 @@ ni_error_e createNIUnderPkgRoot(const std::string& pkgId, NIOption* opt) std::string targetDirs; if (isRPK(pkgId)) { - opt->flags &= ~NI_FLAGS_APPNI; + opt->flags &= ~NI_FLAGS_APPNI; // added to exclude logic of APP_NI + opt->flags |= NI_FLAGS_RESOURCE_NI; // added flag for RPK type + opt->flags |= NI_FLAGS_NO_PIPELINE; // added the flag to set the output path + std::string paths = getResourcePaths(rootPath); if (paths.empty()) { _SERR("Failed to get rpk paths from [%s]", pkgId.c_str()); @@ -1099,9 +1111,8 @@ ni_error_e createNIUnderPkgRoot(const std::string& pkgId, NIOption* opt) } targetDirs = paths; } else { - __pm->setAppRootPath(rootPath); - opt->flags |= NI_FLAGS_APPNI; + opt->flags &= ~NI_FLAGS_RESOURCE_NI; // added to exclude logic of RESOURCE_NI if (isReadOnlyArea(rootPath)) { opt->flags |= NI_FLAGS_APP_UNDER_RO_AREA; @@ -1189,7 +1200,7 @@ ni_error_e removeNIUnderPkgRoot(const std::string& pkgId) if (isDirectory(path)) { removeNIUnderDirs(path); } - } + } } else { __pm->setAppRootPath(rootPath);