Add multi-user support 59/18259/3 submit/tizen_common/20140521.163740 submit/tizen_common/20140522.130648 submit/tizen_common/20140522.135644
authorKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Wed, 19 Mar 2014 14:31:08 +0000 (15:31 +0100)
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Wed, 19 Mar 2014 15:20:19 +0000 (16:20 +0100)
Bug-Tizen: PTREL-343
Change-Id: Ia704dfec14515e05b81a26fbabf78ad28281464d
Signed-off-by: Kévin THIERRY <kevin.thierry@open.eurogiciel.org>
CMakeLists.txt
packaging/pkgmgr-info.spec
parser/pkgmgr_parser.c
parser/pkgmgr_parser_db.c
src/pkgmgr-info.c

index 41c1f9f..49c22ed 100644 (file)
@@ -18,7 +18,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src ${CMAKE_
 
 ### 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)
+pkg_check_modules(pkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libxml-2.0 dbus-1 dbus-glib-1 libtzplatform-config)
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
index b0bc5dd..a7e345a 100755 (executable)
@@ -1,19 +1,20 @@
 Name:       pkgmgr-info
 Summary:    Packager Manager infomation api for package
 Version:    0.0.134
-Release:    1
+Release:    0
 Group:      Application Framework/Package Management
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
-Source1001:    pkgmgr-info.manifest
-BuildRequires: cmake
-BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(vconf)
-BuildRequires: pkgconfig(sqlite3)
-BuildRequires: pkgconfig(db-util)
-BuildRequires:pkgconfig(libxml-2.0)
-BuildRequires: pkgconfig(dbus-1)
-BuildRequires: pkgconfig(dbus-glib-1)
+Source1001: pkgmgr-info.manifest
+BuildRequires: cmake
+BuildRequires: pkgconfig(dlog)
+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)
 
 %description
 Packager Manager infomation api for packaging
@@ -49,11 +50,9 @@ make %{?jobs:-j%jobs}
 
 %install
 %make_install
-mkdir -p %{buildroot}/opt/usr/apps/tmp
-touch %{buildroot}/opt/usr/apps/tmp/pkgmgr_tmp.txt
 
 # create the directory for hosting Read-Write application manifest files
-mkdir -p %{buildroot}/opt/share/packages/
+mkdir -p %{buildroot}%{TZ_SYS_RW_PACKAGES}
 
 %post -p /sbin/ldconfig
 
@@ -67,9 +66,7 @@ mkdir -p %{buildroot}/opt/share/packages/
 %manifest %{name}.manifest
 %defattr(-,root,root,-)
 %{_libdir}/libpkgmgr-info.so.*
-%dir %attr(771,app,app) /opt/usr/apps/tmp
-/opt/usr/apps/tmp/pkgmgr_tmp.txt
-%dir /opt/share/packages
+%dir %{TZ_SYS_RW_PACKAGES}
 
 %files devel
 %manifest %{name}.manifest
@@ -82,13 +79,13 @@ mkdir -p %{buildroot}/opt/share/packages/
 %manifest %{name}.manifest
 %defattr(-,root,root,-)
 %{_libdir}/libpkgmgr_parser.so.*
-%{_sysconfdir}/package-manager/preload/preload_list.txt
-%{_sysconfdir}/package-manager/preload/manifest.xsd
-%{_sysconfdir}/package-manager/preload/xml.xsd
-%{_sysconfdir}/package-manager/parser_path.conf
-%{_sysconfdir}/package-manager/parserlib/metadata/mdparser_list.txt
-%{_sysconfdir}/package-manager/parserlib/category/category_parser_list.txt
-%{_sysconfdir}/package-manager/parserlib/tag_parser_list.txt
+%config %{_sysconfdir}/package-manager/preload/preload_list.txt
+%config %{_sysconfdir}/package-manager/preload/manifest.xsd
+%config %{_sysconfdir}/package-manager/preload/xml.xsd
+%config %{_sysconfdir}/package-manager/parser_path.conf
+%config %{_sysconfdir}/package-manager/parserlib/metadata/mdparser_list.txt
+%config %{_sysconfdir}/package-manager/parserlib/category/category_parser_list.txt
+%config %{_sysconfdir}/package-manager/parserlib/tag_parser_list.txt
 
 %files parser-devel
 %manifest %{name}.manifest
index d97fad6..12bdd9e 100755 (executable)
@@ -34,6 +34,9 @@
 #include <vconf.h>
 #include <glib.h>
 
+/* For multi-user support */
+#include <tzplatform_config.h>
+
 #include "pkgmgr_parser.h"
 #include "pkgmgr_parser_internal.h"
 #include "pkgmgr_parser_db.h"
@@ -46,8 +49,8 @@
 #endif
 #define LOG_TAG "PKGMGR_PARSER"
 
-#define MANIFEST_RW_DIRECTORY "/opt/share/packages"
-#define MANIFEST_RO_DIRECTORY "/usr/share/packages"
+#define MANIFEST_RW_DIRECTORY tzplatform_getenv(TZ_SYS_RW_PACKAGES)
+#define MANIFEST_RO_DIRECTORY tzplatform_getenv(TZ_SYS_RO_PACKAGES)
 #define ASCII(s) (const char *)s
 #define XMLCHAR(s) (const xmlChar *)s
 
@@ -636,10 +639,10 @@ static char *__pkgid_to_manifest(const char *pkgid)
                return NULL;
        }
        memset(manifest, '\0', size);
-       snprintf(manifest, size, MANIFEST_RW_DIRECTORY "/%s.xml", pkgid);
+       snprintf(manifest, size, "%s/%s.xml", MANIFEST_RW_DIRECTORY, pkgid);
 
        if (access(manifest, F_OK)) {
-               snprintf(manifest, size, MANIFEST_RO_DIRECTORY "/%s.xml", pkgid);
+               snprintf(manifest, size, "%s/%s.xml", MANIFEST_RO_DIRECTORY, pkgid);
        }
 
        return manifest;
@@ -4255,7 +4258,7 @@ static int __process_manifest(xmlTextReaderPtr reader, manifest_x * mfx)
        return ret;
 }
 
-#define DESKTOP_RW_PATH "/opt/share/applications/"
+#define DESKTOP_RW_PATH tzplatform_mkpath(TZ_SYS_SHARE, "applications/")
 #define DESKTOP_RO_PATH "/usr/share/applications/"
 #define MANIFEST_RO_PREFIX "/usr/share/packages/"
 
index 3a65f26..04228c9 100755 (executable)
 #include <unistd.h>
 #include <db-util.h>
 #include <glib.h>
+
+/* For multi-user support */
+#include <tzplatform_config.h>
+
 #include "pkgmgr-info.h"
 #include "pkgmgr_parser_internal.h"
 #include "pkgmgr_parser_db.h"
@@ -39,8 +43,8 @@
 #endif
 #define LOG_TAG "PKGMGR_PARSER"
 
-#define PKGMGR_PARSER_DB_FILE "/opt/dbspace/.pkgmgr_parser.db"
-#define PKGMGR_CERT_DB_FILE "/opt/dbspace/.pkgmgr_cert.db"
+#define PKGMGR_PARSER_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db")
+#define PKGMGR_CERT_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db")
 #define MAX_QUERY_LEN          4096
 
 sqlite3 *pkgmgr_parser_db;
@@ -1530,6 +1534,7 @@ static int __insert_manifest_info_in_db(manifest_x *mfx)
        const char *auth_name = NULL;
        const char *auth_email = NULL;
        const char *auth_href = NULL;
+       const char *apps_path = NULL;
 
        GList *pkglocale = NULL;
        GList *applocale = NULL;
@@ -1554,10 +1559,13 @@ static int __insert_manifest_info_in_db(manifest_x *mfx)
        if (mfx->root_path)
                path = strdup(mfx->root_path);
        else{
-               if (strcmp(type,"rpm")==0)
-                       snprintf(root, MAX_QUERY_LEN - 1, "/usr/apps/%s", mfx->package);
-               else
-                       snprintf(root, MAX_QUERY_LEN - 1, "/opt/usr/apps/%s", mfx->package);
+               if (strcmp(type,"rpm")==0) {
+                       apps_path = tzplatform_getenv(TZ_SYS_RO_APP);
+                       snprintf(root, MAX_QUERY_LEN - 1, "%s/%s", apps_path, mfx->package);
+               } else {
+                       apps_path = tzplatform_getenv(TZ_USER_APP);
+                       snprintf(root, MAX_QUERY_LEN - 1, "%s/%s", apps_path, mfx->package);
+               }
 
                path = strdup(root);
        }
index f9f2b1f..ee3d782 100755 (executable)
@@ -39,6 +39,9 @@
 #include <dbus/dbus.h>
 #include <dbus/dbus-glib-lowlevel.h>
 
+/* For multi-user support */
+#include <tzplatform_config.h>
+
 #include "pkgmgr_parser.h"
 #include "pkgmgr-info-internal.h"
 #include "pkgmgr-info-debug.h"
 #define ASC_CHAR(s) (const char *)s
 #define XML_CHAR(s) (const xmlChar *)s
 
-#define MANIFEST_DB    "/opt/dbspace/.pkgmgr_parser.db"
+#define MANIFEST_DB    tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db")
 #define MAX_QUERY_LEN  4096
 #define MAX_CERT_TYPE  9
-#define CERT_DB                "/opt/dbspace/.pkgmgr_cert.db"
-#define DATACONTROL_DB "/opt/usr/dbspace/.app-package.db"
+#define CERT_DB                tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db")
+#define DATACONTROL_DB tzplatform_mkpath(TZ_USER_DB, ".app-package.db")
 #define PKG_TYPE_STRING_LEN_MAX                128
 #define PKG_VERSION_STRING_LEN_MAX     128
 #define PKG_VALUE_STRING_LEN_MAX               512
 #define PKG_LOCALE_STRING_LEN_MAX              8
-#define PKG_RW_PATH "/opt/usr/apps/"
-#define PKG_RO_PATH "/usr/apps/"
+#define PKG_RW_PATH tzplatform_mkpath(TZ_USER_APP, "")
+#define PKG_RO_PATH tzplatform_mkpath(TZ_SYS_RO_APP, "")
 #define BLOCK_SIZE      4096 /*in bytes*/
 
-#define MMC_PATH "/opt/storage/sdcard"
-#define PKG_SD_PATH MMC_PATH"/app2sd/"
-#define PKG_INSTALLATION_PATH "/opt/usr/apps/"
+#define MMC_PATH tzplatform_mkpath(TZ_SYS_STORAGE, "sdcard")
+#define PKG_SD_PATH tzplatform_mkpath3(TZ_SYS_STORAGE, "sdcard", "app2sd/")
+#define PKG_INSTALLATION_PATH tzplatform_mkpath(TZ_USER_APP, "")
 
 #define FILTER_QUERY_COUNT_PACKAGE     "select count(DISTINCT package_info.package) " \
                                "from package_info LEFT OUTER JOIN package_localized_info " \