From: jongmyeongko Date: Mon, 26 Dec 2016 16:08:42 +0000 (+0900) Subject: Support legacy image for backward-compatibility X-Git-Tag: accepted/tizen/3.0/ivi/20170109.073416 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Ftags%2Faccepted%2Ftizen%2F3.0%2Fivi%2F20170109.073416;p=platform%2Fcore%2Fappfw%2Fslp-pkgmgr.git Support legacy image for backward-compatibility Refer to: https://review.tizen.org/gerrit/#/c/104823/ Change-Id: I384e0b4d3e9a80e12bf1810c791f2fa317e947a1 Signed-off-by: jongmyeongko --- diff --git a/client/include/package-manager.h b/client/include/package-manager.h index f859bd9..d91872c 100644 --- a/client/include/package-manager.h +++ b/client/include/package-manager.h @@ -999,6 +999,19 @@ int pkgmgr_client_usr_set_app_label(pkgmgr_client *pc, char *appid, char *label, */ int pkgmgr_client_set_debug_mode(pkgmgr_client *pc, bool debug_mode); +/** + * @brief Migrate legacy external image which is generated under 3.0 + * + * This API request the migration of external image.\n + * + * @param[in] pc The pointer to pkgmgr_client instance + * @param[in] pkgid pkg id which have legacy image + * @return 0 if success, error code(<0) if fail\n + * @retval PKGMGR_R_OK success + * @retval PKGMGR_R_EINVAL invalid argument + */ +int pkgmgr_client_usr_migrate_external_image(pkgmgr_client *pc, const char *pkgid, uid_t uid); + /** @} */ diff --git a/client/src/pkgmgr.c b/client/src/pkgmgr.c index c594e1f..7fd16d5 100644 --- a/client/src/pkgmgr.c +++ b/client/src/pkgmgr.c @@ -2128,3 +2128,29 @@ API int pkgmgr_client_set_debug_mode(pkgmgr_client *pc, bool debug_mode) return PKGMGR_R_OK; } + +API int pkgmgr_client_usr_migrate_external_image(pkgmgr_client *pc, + const char *pkgid, uid_t uid) +{ + GVariant *result; + int ret = PKGMGR_R_ECOMM; + struct pkgmgr_client_t *client = (struct pkgmgr_client_t *)pc; + + if (pc == NULL) { + ERR("invalid parameter"); + return PKGMGR_R_EINVAL; + } + + ret = pkgmgr_client_connection_send_request(client, + "migrate_external_image", + g_variant_new("(us)", uid, pkgid), &result); + if (ret != PKGMGR_R_OK) { + ERR("request failed: %d", ret); + return ret; + } + + g_variant_get(result, "(i)", &ret); + g_variant_unref(result); + + return ret; +} diff --git a/installer/pkgmgr_installer.c b/installer/pkgmgr_installer.c index bfdd7f5..443bad5 100644 --- a/installer/pkgmgr_installer.c +++ b/installer/pkgmgr_installer.c @@ -58,6 +58,7 @@ #define OPTVAL_NO_REMOVAL 1003 #define OPTVAL_KEEP_RWDATA 1004 #define OPTVAL_PARTIAL_RW 1005 +#define OPTVAL_MIGRATE_EXTIMG 1006 /* Supported options */ const char *short_opts = "k:l:i:d:c:m:t:o:r:p:s:b:e:M:y:u:w:D:A:qG"; @@ -85,6 +86,7 @@ const struct option long_opts[] = { { "no-remove", 0, NULL, OPTVAL_NO_REMOVAL }, /* for preload RW */ { "keep-rwdata", 0, NULL, OPTVAL_KEEP_RWDATA }, /* for preload RW */ { "partial-rw", 0, NULL, OPTVAL_PARTIAL_RW }, /* for preload RO */ + { "migrate-extimg", 1, NULL, OPTVAL_MIGRATE_EXTIMG }, { 0, 0, 0, 0 } /* sentinel */ }; @@ -405,6 +407,19 @@ pkgmgr_installer_receive_request(pkgmgr_installer *pi, pi->partial_rw = 1; DBG("partial-rw request [%d]", pi->partial_rw); break; + case OPTVAL_MIGRATE_EXTIMG: + /* request for legacy extimg migration */ + if (mode) { + r = -EINVAL; + goto RET; + } + mode = OPTVAL_MIGRATE_EXTIMG; + pi->request_type = PKGMGR_REQ_MIGRATE_EXTIMG; + if (pi->pkgmgr_info) + free(pi->pkgmgr_info); + pi->pkgmgr_info = strndup(optarg, MAX_STRLEN); + DBG("legacy extimg migration requested"); + break; case 'k': /* session id */ if (pi->session_id) free(pi->session_id); diff --git a/installer/pkgmgr_installer.h b/installer/pkgmgr_installer.h index 11a49d5..c108979 100644 --- a/installer/pkgmgr_installer.h +++ b/installer/pkgmgr_installer.h @@ -92,7 +92,8 @@ enum { PKGMGR_REQ_DISABLE_APP_SPLASH_SCREEN = 14, PKGMGR_REQ_MOUNT_INSTALL = 15, PKGMGR_REQ_DISABLE_PKG = 16, - PKGMGR_REQ_ENABLE_PKG = 17 + PKGMGR_REQ_ENABLE_PKG = 17, + PKGMGR_REQ_MIGRATE_EXTIMG = 18 }; enum { diff --git a/packaging/pkgmgr.spec b/packaging/pkgmgr.spec index 229a957..6b6caa1 100644 --- a/packaging/pkgmgr.spec +++ b/packaging/pkgmgr.spec @@ -2,7 +2,7 @@ Name: pkgmgr Summary: Packager Manager client library package -Version: 0.2.90 +Version: 0.2.91 Release: 0 Group: Application Framework/Package Management License: Apache-2.0