This removes the distinction between the different
versions of a widget. The boolean CMAKE option
DISTINCT_VERSIONS allows to switch between the two
possibilities:
DISTINCT_VERSIONS=OFF (default)
Widget installed in {afm_appdir}/{id}
Ids of applications have no version part: {id}
DISTINCT_VERSIONS=ON (legacy, old default)
Widget installed in {afm_appdir}/{id}/{ver}
Ids of applications have no version part: {id}@{ver}
Bug-AGL: SPEC-2538
Change-Id: I7cb54d4b296b740c553be8a627e66175107e5a4b
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
set(PROJECT_VERSION ${AGLVERSION} CACHE STRING "Version of the project can override AGLVERSION")
set(PROJECT_URL "https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-main.git;a=summary")
set(PROJECT_VERSION ${AGLVERSION} CACHE STRING "Version of the project can override AGLVERSION")
set(PROJECT_URL "https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-main.git;a=summary")
-set(USE_LIBZIP ON CACHE BOOL "should try to use libzip?")
-set(USE_SIMULATION OFF CACHE BOOL "if set simulates security manager and smack")
-set(USE_SDK OFF CACHE BOOL "if set, avoids installating system runtime files")
-set(ALLOW_NO_SIGNATURE OFF CACHE BOOL "if set, widgets without signature are accepted")
+option(DISTINCT_VERSIONS "Should the version of application be distinguished" OFF)
+option(USE_LIBZIP "Should try to use libzip?" ON)
+option(USE_SIMULATION "If set simulates security manager and smack" OFF)
+option(USE_SDK "If set, avoids installating system runtime files" OFF)
+option(ALLOW_NO_SIGNATURE "If set, widgets without signature are accepted" OFF)
-set(SIMULATE_SECMGR OFF CACHE BOOL "if set, the security manager is simulated")
-set(SIMULATE_SMACK OFF CACHE BOOL "if set, the smack environment is simulated")
+option(SIMULATE_SECMGR "If set, the security manager is simulated" OFF)
+option(SIMULATE_SMACK "If set, the smack environment is simulated" OFF)
-set(LEGACY_USER_DAEMON OFF CACHE BOOL "compile and install the legacy afm-user-daemon")
+option(LEGACY_USER_DAEMON "compile and install the legacy afm-user-daemon" OFF)
set(afm_name "afm" CACHE STRING "Name for application framework user")
set(afm_confdir "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${afm_name}" CACHE STRING "Directory for configuration files")
set(afm_name "afm" CACHE STRING "Name for application framework user")
set(afm_confdir "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${afm_name}" CACHE STRING "Directory for configuration files")
else(ALLOW_NO_SIGNATURE)
add_definitions(-DDEFAULT_ALLOW_NO_SIGNATURE=0)
endif(ALLOW_NO_SIGNATURE)
else(ALLOW_NO_SIGNATURE)
add_definitions(-DDEFAULT_ALLOW_NO_SIGNATURE=0)
endif(ALLOW_NO_SIGNATURE)
+if(DISTINCT_VERSIONS)
+ add_definitions(-DDISTINCT_VERSIONS=1)
+else(DISTINCT_VERSIONS)
+ add_definitions(-DDISTINCT_VERSIONS=0)
+endif(DISTINCT_VERSIONS)
add_subdirectory(src)
add_subdirectory(conf)
add_subdirectory(src)
add_subdirectory(conf)
static char *mkidaver(char *id, char *ver)
{
static char *mkidaver(char *id, char *ver)
{
size_t lid, lver;
char *r;
if (id && ver) {
size_t lid, lver;
char *r;
if (id && ver) {
+#else
+ return strdup(id);
+#endif
}
static void make_lowercase(char *s)
}
static void make_lowercase(char *s)
rc = snprintf(target, PATH_MAX, "%s/%s/%s", root, desc->id, desc->ver);
rc = snprintf(target, PATH_MAX, "%s/%s/%s", root, desc->id, desc->ver);
+#else
+ rc = snprintf(target, PATH_MAX, "%s/%s", root, desc->id);
+#endif
if (rc < PATH_MAX)
rc = 0;
else {
if (rc < PATH_MAX)
rc = 0;
else {
/* uninstall the widget of idaver */
int uninstall_widget(const char *idaver, const char *root)
{
/* uninstall the widget of idaver */
int uninstall_widget(const char *idaver, const char *root)
{
+#endif
+ char path[PATH_MAX];
int rc, rc2;
struct unitconf uconf;
struct wgt_info *ifo;
int rc, rc2;
struct unitconf uconf;
struct wgt_info *ifo;
NOTICE("-- UNINSTALLING widget of id %s from %s --", idaver, root);
/* find the last '@' of the id */
NOTICE("-- UNINSTALLING widget of id %s from %s --", idaver, root);
/* find the last '@' of the id */
at = strrchr(idaver, '@');
if (at == NULL) {
ERROR("bad widget id '%s', no @", idaver);
at = strrchr(idaver, '@');
if (at == NULL) {
ERROR("bad widget id '%s', no @", idaver);
/* compute the path */
rc = snprintf(path, sizeof path, "%s/%s/%s", root, id, ver);
/* compute the path */
rc = snprintf(path, sizeof path, "%s/%s/%s", root, id, ver);
+#else
+ rc = snprintf(path, sizeof path, "%s/%s", root, idaver);
+#endif
+
if (rc >= (int)sizeof path) {
ERROR("bad widget id '%s', too long", idaver);
errno = EINVAL;
if (rc >= (int)sizeof path) {
ERROR("bad widget id '%s', too long", idaver);
errno = EINVAL;
if (rc < 0 && errno != ENOENT)
ERROR("can't remove '%s': %m", path);
if (rc < 0 && errno != ENOENT)
ERROR("can't remove '%s': %m", path);
/* removes the parent directory if empty */
rc2 = snprintf(path, sizeof path, "%s/%s", root, id);
assert(rc2 < (int)sizeof path);
/* removes the parent directory if empty */
rc2 = snprintf(path, sizeof path, "%s/%s", root, id);
assert(rc2 < (int)sizeof path);
* uninstall it for the security-manager
*/
rc2 = secmgr_init(id);
* uninstall it for the security-manager
*/
rc2 = secmgr_init(id);
+#else
+ rc2 = secmgr_init(idaver);
+#endif
if (rc2) {
ERROR("can't init security manager context");
return -1;
if (rc2) {
ERROR("can't init security manager context");
return -1;