Add attribute for lib rpk 85/303785/7
authorSangyoon Jang <jeremy.jang@samsung.com>
Fri, 5 Jan 2024 01:28:52 +0000 (10:28 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 8 Jan 2024 06:02:19 +0000 (15:02 +0900)
Change-Id: Ia85734e3fdbd7f3bb21d43f043820902bff51e78
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
include/pkgmgr-info.h
include/pkgmgrinfo_basic.h
parser/include/pkgmgr_parser_db_queries.h
pkg_db_version.txt.in
src/common/parcel/pkginfo_parcelable.cc
src/pkgmgrinfo_basic.c
src/pkgmgrinfo_pkginfo.c
src/server/pkginfo_internal.cc
test/unit_tests/parcel_utils.cc

index 9a856d6..ee8cb74 100644 (file)
@@ -2172,6 +2172,43 @@ int pkgmgrinfo_pkginfo_is_support_disable(pkgmgrinfo_pkginfo_h handle, bool *sup
 int pkgmgrinfo_pkginfo_is_global(pkgmgrinfo_pkginfo_h handle, bool *global);
 
 /**
 int pkgmgrinfo_pkginfo_is_global(pkgmgrinfo_pkginfo_h handle, bool *global);
 
 /**
+ * @fn int pkgmgrinfo_pkginfo_is_lib(pkgmgrinfo_pkginfo_h handle, bool *lib)
+ * @brief      This API gets whether the given package is lib resource package or not
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  handle  pointer to package info handle
+ * @param[in]  global  pointer to hold package global value
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post               pkgmgrinfo_pkginfo_destroy_pkginfo()
+ * @see                pkgmgrinfo_pkginfo_get_pkgid()
+static int get_pkg_is_lib(const char *pkgid)
+{
+       int ret = 0;
+       bool lib;
+       pkgmgrinfo_pkginfo_h handle = NULL;
+       ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_pkginfo_is_lib(handle, &lib);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return -1;
+       }
+       printf("pkg lib: %d\n", lib);
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_is_lib(pkgmgrinfo_pkginfo_h handle, bool *lib);
+
+/**
  * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
  * @brief      This API gets the package 'accessible' value from the package ID
  *
  * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
  * @brief      This API gets the package 'accessible' value from the package ID
  *
index d75c33f..9623cb6 100644 (file)
@@ -243,6 +243,7 @@ typedef struct package_x {
        char *locale;   /*no xml part*/
        char *res_type; /**< res type, attr*/
        char *res_version;      /**< res version, attr*/
        char *locale;   /*no xml part*/
        char *res_type; /**< res type, attr*/
        char *res_version;      /**< res version, attr*/
+       char *lib;      /**< whether lib rpk or not, attr*/
        char *is_disabled; /**< Flag that indicates if the package is disabled or not, no xml part*/
        char *light_user_switch_mode;   /**< light_user_switch_mode flag, attr, default: "dafault"*/
        GList *icon;            /**< package icon, element*/
        char *is_disabled; /**< Flag that indicates if the package is disabled or not, no xml part*/
        char *light_user_switch_mode;   /**< light_user_switch_mode flag, attr, default: "dafault"*/
        GList *icon;            /**< package icon, element*/
index d3bf46e..649bd64 100644 (file)
        "  package TEXT NOT NULL,\n" \
        "  res_type TEXT NOT NULL,\n" \
        "  res_version TEXT NOT NULL,\n" \
        "  package TEXT NOT NULL,\n" \
        "  res_type TEXT NOT NULL,\n" \
        "  res_version TEXT NOT NULL,\n" \
+       "  lib TEXT NOT NULL DEFAULT 'false',\n" \
        "  PRIMARY KEY(res_type, res_version)\n" \
        "  FOREIGN KEY(package)\n" \
        "  REFERENCES package_info(package) ON DELETE CASCADE)"
        "  PRIMARY KEY(res_type, res_version)\n" \
        "  FOREIGN KEY(package)\n" \
        "  REFERENCES package_info(package) ON DELETE CASCADE)"
index 4ae0e53..a23d04a 100644 (file)
@@ -1 +1 @@
-30009
+30010
index e0f35d3..6154c49 100644 (file)
@@ -231,6 +231,7 @@ void PkgInfoParcelable::WritePackage(tizen_base::Parcel* parcel,
   WriteString(parcel, package->locale);
   WriteString(parcel, package->res_type);
   WriteString(parcel, package->res_version);
   WriteString(parcel, package->locale);
   WriteString(parcel, package->res_type);
   WriteString(parcel, package->res_version);
+  WriteString(parcel, package->lib);
   WriteString(parcel, package->is_disabled);
   WriteString(parcel, package->light_user_switch_mode);
   WriteIcon(parcel, package->icon);
   WriteString(parcel, package->is_disabled);
   WriteString(parcel, package->light_user_switch_mode);
   WriteIcon(parcel, package->icon);
@@ -500,6 +501,7 @@ package_x* PkgInfoParcelable::ReadPackage(tizen_base::Parcel* parcel) {
   ReadString(parcel, &package->locale);
   ReadString(parcel, &package->res_type);
   ReadString(parcel, &package->res_version);
   ReadString(parcel, &package->locale);
   ReadString(parcel, &package->res_type);
   ReadString(parcel, &package->res_version);
+  ReadString(parcel, &package->lib);
   ReadString(parcel, &package->is_disabled);
   ReadString(parcel, &package->light_user_switch_mode);
   ReadIcon(parcel, &package->icon);
   ReadString(parcel, &package->is_disabled);
   ReadString(parcel, &package->light_user_switch_mode);
   ReadIcon(parcel, &package->icon);
index df90d39..cd1b3e2 100644 (file)
@@ -555,6 +555,8 @@ API void pkgmgrinfo_basic_free_package(package_x *package)
                free((void *)package->res_type);
        if (package->res_version)
                free((void *)package->res_version);
                free((void *)package->res_type);
        if (package->res_version)
                free((void *)package->res_version);
+        if (package->lib)
+                free((void *)package->lib);
        if (package->is_disabled)
                free((void *)package->is_disabled);
        if (package->light_user_switch_mode)
        if (package->is_disabled)
                free((void *)package->is_disabled);
        if (package->light_user_switch_mode)
@@ -594,4 +596,3 @@ API void pkgmgrinfo_basic_free_package(package_x *package)
        g_list_free_full(package->metadata, __ps_free_metadata);
        free((void *)package);
 }
        g_list_free_full(package->metadata, __ps_free_metadata);
        free((void *)package);
 }
-
index 2c9bfb5..8d7a8a3 100644 (file)
@@ -1149,6 +1149,22 @@ API int pkgmgrinfo_pkginfo_is_for_all_users(pkgmgrinfo_pkginfo_h handle, bool *f
        return pkgmgrinfo_pkginfo_is_global(handle, for_all_users);
 }
 
        return pkgmgrinfo_pkginfo_is_global(handle, for_all_users);
 }
 
+API int pkgmgrinfo_pkginfo_is_lib(pkgmgrinfo_pkginfo_h handle, bool *lib)
+{
+       pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
+
+       retvm_if(handle == NULL, PMINFO_R_EINVAL, "pkginfo handle is NULL\n");
+       retvm_if(lib == NULL, PMINFO_R_EINVAL,
+                       "Argument supplied to hold return value is NULL\n");
+
+       if (info->pkg_info == NULL || info->pkg_info->lib == NULL)
+               return PMINFO_R_ERROR;
+
+       *lib = _get_bool_value(info->pkg_info->lib);
+
+       return PMINFO_R_OK;
+}
+
 API int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
 {
        pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
 API int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h handle)
 {
        pkgmgr_pkginfo_x *info = (pkgmgr_pkginfo_x *)handle;
index 40492ad..334d354 100644 (file)
@@ -1792,12 +1792,16 @@ int InsertPackageResInfo(const tizen_base::Database& db, manifest_x* mfx) {
   if (mfx->res_type == nullptr || mfx->res_version == nullptr)
     return 0;
 
   if (mfx->res_type == nullptr || mfx->res_version == nullptr)
     return 0;
 
+  if (mfx->lib == nullptr)
+    mfx->lib = strdup("false");
+
   auto q = tizen_base::Database::Sql(
       "INSERT INTO package_res_info (package, res_type,"
   auto q = tizen_base::Database::Sql(
       "INSERT INTO package_res_info (package, res_type,"
-      "  res_version) VALUES (?, ?, ?)")
+      "  res_version, lib) VALUES (?, ?, ?, ?)")
       .Bind(mfx->package)
       .Bind(mfx->res_type)
       .Bind(mfx->package)
       .Bind(mfx->res_type)
-      .Bind(mfx->res_version);
+      .Bind(mfx->res_version)
+      .Bind(mfx->lib);
 
   auto r = db.Exec(q);
   if (!r) {
 
   auto r = db.Exec(q);
   if (!r) {
index 984f226..ce14d77 100644 (file)
@@ -448,6 +448,7 @@ package_x* GetTestPackage(std::string pkgid) {
   package->use_system_certs = strdup("test_use_system_certs");
   package->res_type = strdup("test_res_type");
   package->res_version = strdup("test_res_version");
   package->use_system_certs = strdup("test_use_system_certs");
   package->res_type = strdup("test_res_type");
   package->res_version = strdup("test_res_version");
+  package->lib = strdup("false");
   package->light_user_switch_mode = strdup("default");
 
   icon_x* icon = reinterpret_cast<icon_x*>(calloc(1, sizeof(icon_x)));
   package->light_user_switch_mode = strdup("default");
 
   icon_x* icon = reinterpret_cast<icon_x*>(calloc(1, sizeof(icon_x)));