From bf5c33b76f814cd6da839068c79b84d8f63bb310 Mon Sep 17 00:00:00 2001 From: =?utf8?q?K=C3=A9vin=20THIERRY?= Date: Wed, 19 Mar 2014 15:31:08 +0100 Subject: [PATCH] Add multi-user support MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bug-Tizen: PTREL-343 Change-Id: Ia704dfec14515e05b81a26fbabf78ad28281464d Signed-off-by: Kévin THIERRY --- CMakeLists.txt | 2 +- packaging/pkgmgr-info.spec | 43 ++++++++++++++++++++----------------------- parser/pkgmgr_parser.c | 13 ++++++++----- parser/pkgmgr_parser_db.c | 20 ++++++++++++++------ src/pkgmgr-info.c | 19 +++++++++++-------- 5 files changed, 54 insertions(+), 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 41c1f9f..49c22ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}") diff --git a/packaging/pkgmgr-info.spec b/packaging/pkgmgr-info.spec index b0bc5dd..a7e345a 100755 --- a/packaging/pkgmgr-info.spec +++ b/packaging/pkgmgr-info.spec @@ -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 diff --git a/parser/pkgmgr_parser.c b/parser/pkgmgr_parser.c index d97fad6..12bdd9e 100755 --- a/parser/pkgmgr_parser.c +++ b/parser/pkgmgr_parser.c @@ -34,6 +34,9 @@ #include #include +/* For multi-user support */ +#include + #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/" diff --git a/parser/pkgmgr_parser_db.c b/parser/pkgmgr_parser_db.c index 3a65f26..04228c9 100755 --- a/parser/pkgmgr_parser_db.c +++ b/parser/pkgmgr_parser_db.c @@ -28,6 +28,10 @@ #include #include #include + +/* For multi-user support */ +#include + #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); } diff --git a/src/pkgmgr-info.c b/src/pkgmgr-info.c index f9f2b1f..ee3d782 100755 --- a/src/pkgmgr-info.c +++ b/src/pkgmgr-info.c @@ -39,6 +39,9 @@ #include #include +/* For multi-user support */ +#include + #include "pkgmgr_parser.h" #include "pkgmgr-info-internal.h" #include "pkgmgr-info-debug.h" @@ -55,22 +58,22 @@ #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 " \ -- 2.7.4