SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -Werror")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall")
SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
IF("${ARCH}" STREQUAL "arm")
CLEAN_DIRECT_OUTPUT 1
)
-INSTALL(TARGETS ${fw_name} DESTINATION lib)
+INSTALL(TARGETS ${fw_name} DESTINATION ${LIB_INSTALL_DIR})
INSTALL(
DIRECTORY ${INC_DIR}/ DESTINATION include/appfw
FILES_MATCHING
${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc
@ONLY
)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION lib/pkgconfig)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
IF(UNIX)
/**
+ * @brief Gets whether the package is preload or not
+ * @param [in] package_info The package information
+ * @param [out] preload The preload info of the package
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR IO error
+ */
+int package_info_is_preload_package(package_info_h package_info, bool *preload);
+
+
+/**
* @brief Checks whether two package information are equal.
* @param [in] lhs The first package information to compare
* @param [in] rhs The second package information to compare
* @brief Enumeration of event type
*/
typedef enum {
- PACAKGE_MANAGER_EVENT_TYPE_INSTALL,
+ PACKAGE_MANAGER_EVENT_TYPE_INSTALL = 0,
+ PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL,
+ PACKAGE_MANAGER_EVENT_TYPE_UPDATE,
+
+ /* These enum will be deprecated. Use above enum instead. */
+ PACAKGE_MANAGER_EVENT_TYPE_INSTALL = 0,
PACAKGE_MANAGER_EVENT_TYPE_UNINSTALL,
PACAKGE_MANAGER_EVENT_TYPE_UPDATE,
} package_manager_event_type_e;
* @brief Enumeration of event state
*/
typedef enum {
- PACAKGE_MANAGER_EVENT_STATE_STARTED,
+ PACKAGE_MANAGER_EVENT_STATE_STARTED = 0,
+ PACKAGE_MANAGER_EVENT_STATE_PROCESSING,
+ PACKAGE_MANAGER_EVENT_STATE_COMPLETED,
+ PACKAGE_MANAGER_EVENT_STATE_FAILED,
+
+ /* These enum will be deprecated. Use above enum instead. */
+ PACAKGE_MANAGER_EVENT_STATE_STARTED = 0,
PACAKGE_MANAGER_EVENT_STATE_PROCESSING,
PACAKGE_MANAGER_EVENT_STATE_COMPLETED,
PACAKGE_MANAGER_EVENT_STATE_FAILED,
* @brief Enumeration of request mode
*/
typedef enum {
- PACAKGE_MANAGER_REQUEST_MODE_DEFAULT,
+ PACKAGE_MANAGER_REQUEST_MODE_DEFAULT = 0,
+ PACKAGE_MANAGER_REQUEST_MODE_QUIET,
+
+ /* These enum will be deprecated. Use above enum instead. */
+ PACAKGE_MANAGER_REQUEST_MODE_DEFAULT = 0,
PACAKGE_MANAGER_REQUEST_MODE_QUIET,
} package_manager_request_mode_e;
* @brief Enumeration of move type
*/
typedef enum {
+ PACKAGE_MANAGER_REQUEST_MOVE_TO_INTERNAL = 0,
+ PACKAGE_MANAGER_REQUEST_MOVE_TO_EXTERNAL,
+
+ /* These enum will be deprecated. Use above enum instead. */
PACAKGE_MANAGER_REQUEST_MOVE_TO_INTERNAL = 0,
- PACAKGE_MANAGER_REQUEST_MOVE_TO_EXTERNAL = 1,
+ PACAKGE_MANAGER_REQUEST_MOVE_TO_EXTERNAL,
} package_manager_move_type_e;
/**
* @brief Enumeration of certification compare type
*/
typedef enum {
- PACAKGE_MANAGER_COMPARE_MATCH,
+ PACKAGE_MANAGER_COMPARE_MATCH = 0,
+ PACKAGE_MANAGER_COMPARE_MISMATCH,
+ PACKAGE_MANAGER_COMPARE_LHS_NO_CERT,
+ PACKAGE_MANAGER_COMPARE_RHS_NO_CERT,
+ PACKAGE_MANAGER_COMPARE_BOTH_NO_CERT,
+
+ /* These enum will be deprecated. Use above enum instead. */
+ PACAKGE_MANAGER_COMPARE_MATCH = 0,
PACAKGE_MANAGER_COMPARE_MISMATCH,
PACAKGE_MANAGER_COMPARE_LHS_NO_CERT,
PACAKGE_MANAGER_COMPARE_RHS_NO_CERT,
} package_manager_compare_result_type_e;
/**
+ * @brief Enumeration of permission type
+ */
+typedef enum {
+ PACKAGE_MANAGER_PERMISSION_NORMAL = 0,
+ PACKAGE_MANAGER_PERMISSION_SIGNATURE,
+ PACKAGE_MANAGER_PERMISSION_PRIVILEGE,
+} package_manager_permission_type_e;
+
+/**
* @brief Package manager handle
*/
typedef struct package_manager_s *package_manager_h;
/**
* @brief Creates a request handle to the package manager.
*
- * @remarks The @a request must be released with package_manager_reqeust_destroy() by you.
+ * @remarks The @a request must be released with package_manager_request_destroy() by you.
* @param [out] request A request handle to be newly created on success
* @return 0 on success, otherwise a negative error value.
* @retval #PACKAGE_MANAGER_ERROR_NONE Successful
* @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
* @retval #PACKAGE_MANAGER_ERROR_IO_ERROR Internal I/O error
- * @see package_manager_reqeust_destroy()
+ * @see package_manager_request_destroy()
*/
int package_manager_request_create(package_manager_request_h *request);
* @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
* @see package_manager_request_create()
*/
-int package_manager_reqeust_destroy(package_manager_request_h request);
+int package_manager_request_destroy(package_manager_request_h request);
/**
* @brief Registers a callback function to be invoked when the progress of the request changes.
*/
int package_manager_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, package_manager_compare_result_type_e *compare_result);
+/**
+ * @brief Gets whether the package is preload or not by app_id
+ * @param [in] app_id The ID of the application
+ * @param [out] preload The preload info of the package
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR IO error
+ */
+int package_manager_is_preload_package_by_app_id(const char *app_id, bool *preload);
+
+/**
+ * @brief Gets the package permission type by app_id
+ * @param [in] app_id The ID of the application
+ * @param [out] permission_type The package permission type
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR IO error
+ */
+int package_manager_get_permission_type(const char *app_id, package_manager_permission_type_e *permission_type);
+
#ifdef __cplusplus
}
#endif
-#sbs-git:slp/api/package-manager capi-appfw-package-manager 0.1.0 76739af2bfbeb46dc9db0cb3e044f880ddcb9440
Name: capi-appfw-package-manager
Summary: Package Manager API
-Version: 0.0.22
+Version: 0.0.26
Release: 1
-Group: TO_BE/FILLED_IN
-License: TO BE FILLED IN
+Group: API
+License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
BuildRequires: cmake
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(aul)
BuildRequires: pkgconfig(capi-base-common)
-Requires(post): /sbin/ldconfig
-Requires(postun): /sbin/ldconfig
%description
The Package Manager API provides functions to install, uninstall the package,
%package devel
Summary: Package Manager API (Development)
-Group: TO_BE/FILLED_IN
+Group: API
Requires: %{name} = %{version}-%{release}
%description devel
%build
MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
-cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%cmake . -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
make %{?jobs:-j%jobs}
return PACKAGE_MANAGER_ERROR_NONE;
}
+int package_info_is_preload_package(package_info_h package_info, bool *preload)
+{
+ bool pkg_info_value = false;
+
+ if (package_info == NULL || preload == NULL)
+ {
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+ }
+
+ if (pkgmgr_pkginfo_is_preload(package_info->pkgmgr_pkginfo, &pkg_info_value) != PKGMGR_R_OK)
+ {
+ return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+ }
+
+ *preload = pkg_info_value;
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
int package_info_is_equal(package_info_h lhs, package_info_h rhs, bool *equal)
{
if (lhs == NULL || rhs == NULL || equal == NULL)
return PACKAGE_MANAGER_ERROR_NONE;
}
+int package_manager_request_destroy(package_manager_request_h request)
+{
+ if (package_manager_client_valiate_handle(request)) {
+ return
+ package_manager_error
+ (PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__,
+ NULL);
+ }
+
+ pkgmgr_client_free(request->pc);
+ request->pc = NULL;
+ free(request);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
int package_manager_request_set_event_cb(package_manager_request_h request,
package_manager_request_event_cb
callback, void *user_data)
NULL);
}
- if (mode == PACAKGE_MANAGER_REQUEST_MODE_QUIET)
+ if (mode == PACKAGE_MANAGER_REQUEST_MODE_QUIET)
request->mode = PM_QUIET;
else
request->mode = PM_DEFAULT;
return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
if (strcasecmp(key, "install") == 0)
- *event_type = PACAKGE_MANAGER_EVENT_TYPE_INSTALL;
+ *event_type = PACKAGE_MANAGER_EVENT_TYPE_INSTALL;
else if (strcasecmp(key, "uninstall") == 0)
- *event_type = PACAKGE_MANAGER_EVENT_TYPE_UNINSTALL;
+ *event_type = PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL;
else if (strcasecmp(key, "undate") == 0)
- *event_type = PACAKGE_MANAGER_EVENT_TYPE_UPDATE;
+ *event_type = PACKAGE_MANAGER_EVENT_TYPE_UPDATE;
else
return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
__add_event_info(&(request->head), req_id, event_type,
- PACAKGE_MANAGER_EVENT_STATE_STARTED);
+ PACKAGE_MANAGER_EVENT_STATE_STARTED);
if (request->event_cb)
request->event_cb(req_id, pkg_type, pkg_name,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_STARTED,
+ PACKAGE_MANAGER_EVENT_STATE_STARTED,
0, PACKAGE_MANAGER_ERROR_NONE, request->user_data);
} else if (strcasecmp(key, "install_percent") == 0
&event_state) == 0) {
__update_event_info(&(request->head), req_id,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_PROCESSING);
+ PACKAGE_MANAGER_EVENT_STATE_PROCESSING);
if (request->event_cb)
request->event_cb(req_id, pkg_type, pkg_name,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_PROCESSING,
+ PACKAGE_MANAGER_EVENT_STATE_PROCESSING,
atoi(val),
PACKAGE_MANAGER_ERROR_NONE,
request->user_data);
&event_state) == 0) {
__update_event_info(&(request->head), req_id,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_FAILED);
+ PACKAGE_MANAGER_EVENT_STATE_FAILED);
}
if (request->event_cb)
request->event_cb(req_id, pkg_type,
pkg_name, event_type,
- PACAKGE_MANAGER_EVENT_STATE_FAILED,
+ PACKAGE_MANAGER_EVENT_STATE_FAILED,
0,
PACKAGE_MANAGER_ERROR_NONE,
request->user_data);
if (__find_event_info
(&(request->head), req_id, &event_type,
&event_state) == 0) {
- if (event_state != PACAKGE_MANAGER_EVENT_STATE_FAILED) {
+ if (event_state != PACKAGE_MANAGER_EVENT_STATE_FAILED) {
if (request->event_cb)
request->event_cb(req_id, pkg_type,
pkg_name, event_type,
- PACAKGE_MANAGER_EVENT_STATE_COMPLETED,
+ PACKAGE_MANAGER_EVENT_STATE_COMPLETED,
100,
PACKAGE_MANAGER_ERROR_NONE,
request->user_data);
if (request->event_cb)
request->event_cb(req_id, pkg_type,
pkg_name, event_type,
- PACAKGE_MANAGER_EVENT_STATE_FAILED,
+ PACKAGE_MANAGER_EVENT_STATE_FAILED,
0,
PACKAGE_MANAGER_ERROR_NONE,
request->user_data);
return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
__add_event_info(&(manager->head), req_id, event_type,
- PACAKGE_MANAGER_EVENT_STATE_STARTED);
+ PACKAGE_MANAGER_EVENT_STATE_STARTED);
if (manager->event_cb)
manager->event_cb(pkg_type, pkg_name,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_STARTED,
+ PACKAGE_MANAGER_EVENT_STATE_STARTED,
0, PACKAGE_MANAGER_ERROR_NONE, manager->user_data);
} else if (strcasecmp(key, "install_percent") == 0
&event_state) == 0) {
__update_event_info(&(manager->head), req_id,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_PROCESSING);
+ PACKAGE_MANAGER_EVENT_STATE_PROCESSING);
if (manager->event_cb)
manager->event_cb(pkg_type, pkg_name,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_PROCESSING,
+ PACKAGE_MANAGER_EVENT_STATE_PROCESSING,
atoi(val),
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
&event_state) == 0) {
__update_event_info(&(manager->head), req_id,
event_type,
- PACAKGE_MANAGER_EVENT_STATE_FAILED);
+ PACKAGE_MANAGER_EVENT_STATE_FAILED);
}
if (manager->event_cb)
manager->event_cb(pkg_type,
pkg_name, event_type,
- PACAKGE_MANAGER_EVENT_STATE_FAILED,
+ PACKAGE_MANAGER_EVENT_STATE_FAILED,
0,
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
if (__find_event_info
(&(manager->head), req_id, &event_type,
&event_state) == 0) {
- if (event_state != PACAKGE_MANAGER_EVENT_STATE_FAILED) {
+ if (event_state != PACKAGE_MANAGER_EVENT_STATE_FAILED) {
if (manager->event_cb)
manager->event_cb(pkg_type,
pkg_name, event_type,
- PACAKGE_MANAGER_EVENT_STATE_COMPLETED,
+ PACKAGE_MANAGER_EVENT_STATE_COMPLETED,
100,
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
if (manager->event_cb)
manager->event_cb(pkg_type,
pkg_name, event_type,
- PACAKGE_MANAGER_EVENT_STATE_FAILED,
+ PACKAGE_MANAGER_EVENT_STATE_FAILED,
0,
PACKAGE_MANAGER_ERROR_NONE,
manager->user_data);
return PACKAGE_MANAGER_ERROR_NONE;
}
+int package_manager_is_preload_package_by_app_id(const char *app_id, bool *preload)
+{
+ pkgmgrinfo_appinfo_h pkgmgrinfo_appinfo = NULL;
+ pkgmgrinfo_pkginfo_h pkgmgrinfo_pkginfo = NULL;
+
+ int retval =0;
+ char *pkg_id = NULL;
+ bool is_preload = 0;
+
+ if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ {
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
+
+ retval = pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo, &pkg_id);
+ if (retval != PMINFO_R_OK)
+ {
+ pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
+
+ if (pkgmgrinfo_pkginfo_get_pkginfo(pkg_id, &pkgmgrinfo_pkginfo) != PMINFO_R_OK)
+ {
+ pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo);
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
+
+ if (pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo, &is_preload) != PMINFO_R_OK)
+ {
+ pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo);
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
+
+ if (is_preload)
+ *preload = 1;
+ else
+ *preload = 0;
+
+ pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+int package_manager_get_permission_type(const char *app_id, package_manager_permission_type_e *permission_type)
+{
+ int retval = 0;
+ pkgmgrinfo_appinfo_h pkgmgrinfo_appinfo =NULL;
+ pkgmgrinfo_permission_type permission = 0;
+
+ if (pkgmgrinfo_appinfo_get_appinfo(app_id, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
+ {
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
+
+ retval = pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo, &permission);
+ if (retval != PMINFO_R_OK)
+ {
+ return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
+ }
+
+ if (permission == PMINFO_PERMISSION_NORMAL)
+ *permission_type = PACKAGE_MANAGER_PERMISSION_NORMAL;
+ else if (permission == PMINFO_PERMISSION_SIGNATURE)
+ *permission_type = PACKAGE_MANAGER_PERMISSION_SIGNATURE;
+ else if (permission == PMINFO_PERMISSION_PRIVILEGE)
+ *permission_type = PACKAGE_MANAGER_PERMISSION_PRIVILEGE;
+ else
+ *permission_type = PACKAGE_MANAGER_PERMISSION_NORMAL;
+
+ pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
package_info_installed_storage_type_e storage;
bool system;
bool removable;
+ bool preload;
ret = package_manager_get_package_info(package, &package_info);
package_info_get_installed_storage(package_info, &storage);
package_info_is_system_package(package_info, &system);
package_info_is_removable_package(package_info, &removable);
+ package_info_is_preload_package(package_info, &preload);
fprintf(stderr, "pkg \t= [%s]\n", pkg);
fprintf(stderr, "label \t= [%s]\n", label);
fprintf(stderr, "storage \t= [%d]\n", storage);
fprintf(stderr, "system \t= [%d]\n", system);
fprintf(stderr, "removable \t= [%d]\n", removable);
+ fprintf(stderr, "preload \t= [%d]\n", preload);
package_info_foreach_cert_info(package_info, _cert_info_cb, NULL);