From d912476dc0c756c10f75185fc951d8bad47348b8 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Wed, 23 Nov 2016 10:51:49 +0900 Subject: [PATCH] Revert "Revert "Remove pkgmgrinfo_client_xxx"" This reverts commit d07f19b2c43fdd099dd028b5dfdc83e4469927af. Conflicts: CMakeLists.txt Change-Id: I19a43692af29c8e7249c4615b5fd9e526c47788b --- CMakeLists.txt | 4 +- include/pkgmgr-info.h | 23 --------- packaging/pkgmgr-info.spec | 2 - src/pkgmgrinfo_client.c | 119 --------------------------------------------- 4 files changed, 2 insertions(+), 146 deletions(-) delete mode 100644 src/pkgmgrinfo_client.c diff --git a/CMakeLists.txt b/CMakeLists.txt index becf4be..e9b7cdb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,14 +14,14 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/parser/inclu ### Required packages INCLUDE(FindPkgConfig) -pkg_check_modules(pkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libxml-2.0 dbus-1 dbus-glib-1 libtzplatform-config libsmack bundle) +pkg_check_modules(pkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libxml-2.0 libtzplatform-config libsmack bundle) FOREACH(flag ${pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) -pkg_check_modules(libpkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util dbus-1 dbus-glib-1 libtzplatform-config libsmack bundle capi-system-info) +pkg_check_modules(libpkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libtzplatform-config libsmack bundle capi-system-info) FOREACH(flag ${libpkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") diff --git a/include/pkgmgr-info.h b/include/pkgmgr-info.h index 80a8ead..af8d9fc 100644 --- a/include/pkgmgr-info.h +++ b/include/pkgmgr-info.h @@ -5664,29 +5664,6 @@ int pkgmgrinfo_pkginfo_set_installed_storage(const char *pkgid, INSTALL_LOCATION int pkgmgrinfo_pkginfo_set_usr_installed_storage(const char *pkgid, INSTALL_LOCATION location, const char *external_pkg_path, uid_t uid); /** - * @pkgmgrinfo client API -**/ - -/** - * @brief listening status type in pkgmgrinfo. - */ -#define PMINFO_CLIENT_STATUS_ALL 0x00 -#define PMINFO_CLIENT_STATUS_INSTALL 0x01 -#define PMINFO_CLIENT_STATUS_UNINSTALL 0x02 -#define PMINFO_CLIENT_STATUS_UPGRADE 0x04 -#define PMINFO_CLIENT_STATUS_MOVE 0x08 -#define PMINFO_CLIENT_STATUS_CLEAR_DATA 0x10 -#define PMINFO_CLIENT_STATUS_INSTALL_PROGRESS 0x20 - -/** - * @brief This APIs provides pkgmgrinfo client listener - */ -pkgmgrinfo_client *pkgmgrinfo_client_new(pkgmgrinfo_client_type ctype); -int pkgmgrinfo_client_set_status_type(pkgmgrinfo_client *pc, int status_type); -int pkgmgrinfo_client_listen_status(pkgmgrinfo_client *pc, pkgmgrinfo_handler event_cb, void *data); -int pkgmgrinfo_client_free(pkgmgrinfo_client *pc); - -/** * @brief TEMP */ diff --git a/packaging/pkgmgr-info.spec b/packaging/pkgmgr-info.spec index 16e8140..a9f93a5 100644 --- a/packaging/pkgmgr-info.spec +++ b/packaging/pkgmgr-info.spec @@ -12,8 +12,6 @@ BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(db-util) BuildRequires: pkgconfig(libxml-2.0) -BuildRequires: pkgconfig(dbus-1) -BuildRequires: pkgconfig(dbus-glib-1) BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(libsmack) BuildRequires: pkgconfig(bundle) diff --git a/src/pkgmgrinfo_client.c b/src/pkgmgrinfo_client.c deleted file mode 100644 index c65b70d..0000000 --- a/src/pkgmgrinfo_client.c +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include - -#include -#include - -#include "pkgmgrinfo_type.h" -#include "pkgmgrinfo_debug.h" -#include "pkgmgrinfo_private.h" - -API pkgmgrinfo_client *pkgmgrinfo_client_new(pkgmgrinfo_client_type ctype) -{ - char *errmsg; - void *pc = NULL; - void *handle; - pkgmgrinfo_client *(*__pkgmgr_client_new)(pkgmgrinfo_client_type ctype) = NULL; - - handle = dlopen("libpkgmgr-client.so.0", RTLD_LAZY | RTLD_GLOBAL); - retvm_if(!handle, NULL, "dlopen() failed. [%s]", dlerror()); - - __pkgmgr_client_new = dlsym(handle, "pkgmgr_client_new"); - errmsg = dlerror(); - trym_if((errmsg != NULL) || (__pkgmgr_client_new == NULL), "dlsym() failed. [%s]", errmsg); - - pc = __pkgmgr_client_new(ctype); - trym_if(pc == NULL, "pkgmgr_client_new failed."); - -catch: - dlclose(handle); - return (pkgmgrinfo_client *) pc; -} - -API int pkgmgrinfo_client_set_status_type(pkgmgrinfo_client *pc, int status_type) -{ - int ret; - char *errmsg; - void *handle; - int (*__pkgmgr_client_set_status_type)(pkgmgrinfo_client *pc, int status_type) = NULL; - - handle = dlopen("libpkgmgr-client.so.0", RTLD_LAZY | RTLD_GLOBAL); - retvm_if(!handle, PMINFO_R_ERROR, "dlopen() failed. [%s]", dlerror()); - - __pkgmgr_client_set_status_type = dlsym(handle, "pkgmgr_client_set_status_type"); - errmsg = dlerror(); - tryvm_if((errmsg != NULL) || (__pkgmgr_client_set_status_type == NULL), ret = PMINFO_R_ERROR, "dlsym() failed. [%s]", errmsg); - - ret = __pkgmgr_client_set_status_type(pc, status_type); - tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "pkgmgr_client_new failed."); - -catch: - /* - * Do not close libpkgmgr-client.so.0 to avoid munmap registered callback - * - * The lib dependency chain like below - * amd --> pkgmgr-info -- dlopen --> libpkgmgr-client --> libpkgmgr-installer-client - * - * And there is a function in libpkgmgr-installer-client named _on_signal_handle_filter() - * which will registered to dbus callback in amd though in fact amd doesn't direct depends - * on libpkgmgr-installer-client. - * - * So when the dlcose happen, then libpkgmgr-installer-client been closed too since no one - * link to it then. - * - * However, when the libdbus call into the callback function, it suddenly fond that the - * function address is gone (unmapped), then we receive a SIGSEGV. - * - * I'm not sure why we're using dlopen/dlclose in this case, I think it's much simple and - * robust if we just link to the well-known lib. - * - * See https://bugs.tizen.org/jira/browse/PTREL-591 - dlclose(handle); - */ - return ret; -} - -API int pkgmgrinfo_client_listen_status(pkgmgrinfo_client *pc, pkgmgrinfo_handler event_cb, void *data) -{ - int ret = 0; - char *errmsg = NULL; - void *handle = NULL; - int (*__pkgmgr_client_listen_status)(pkgmgrinfo_client *pc, pkgmgrinfo_handler event_cb, void *data) = NULL; - - handle = dlopen("libpkgmgr-client.so.0", RTLD_LAZY | RTLD_GLOBAL); - retvm_if(!handle, PMINFO_R_ERROR, "dlopen() failed. [%s]", dlerror()); - - __pkgmgr_client_listen_status = dlsym(handle, "pkgmgr_client_listen_status"); - errmsg = dlerror(); - tryvm_if((errmsg != NULL) || (__pkgmgr_client_listen_status == NULL), ret = PMINFO_R_ERROR, "dlsym() failed. [%s]", errmsg); - - ret = __pkgmgr_client_listen_status(pc, event_cb, data); - tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "pkgmgr_client_new failed."); - -catch: - /* same as pkgmgrinfo_client_new */ - return ret; -} - -API int pkgmgrinfo_client_free(pkgmgrinfo_client *pc) -{ - int ret = 0; - char *errmsg = NULL; - void *handle = NULL; - int (*__pkgmgr_client_free)(pkgmgrinfo_client *pc) = NULL; - - handle = dlopen("libpkgmgr-client.so.0", RTLD_LAZY | RTLD_GLOBAL); - retvm_if(!handle, PMINFO_R_ERROR, "dlopen() failed. [%s]", dlerror()); - - __pkgmgr_client_free = dlsym(handle, "pkgmgr_client_free"); - errmsg = dlerror(); - tryvm_if((errmsg != NULL) || (__pkgmgr_client_free == NULL), ret = PMINFO_R_ERROR, "dlsym() failed. [%s]", errmsg); - - ret = __pkgmgr_client_free(pc); - tryvm_if(ret < 0, ret = PMINFO_R_ERROR, "pkgmgr_client_new failed."); - -catch: - /* same as pkgmgrinfo_client_new */ - return ret; -} -- 2.7.4