aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-03-14 10:26:49 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2017-03-17 13:01:40 +0100
commitfcc925c4a6d7bc82106f6c8da13b1a58a7b23115 (patch)
tree0432ba71b4449325f54caedfebfe8511f1e7a278
parentde02ff4734caf96658f40a9e352245f5046a183a (diff)
wgtpkg-install: creates the systemd units
Change-Id: Ia3cdcb76a9f7b3bda77a9d9fcb38dfd85eb85804 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/wgtpkg-install.c54
2 files changed, 35 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 83e0c39..45ac19c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,6 +44,7 @@ set(afm_prefix "urn:AGL:" CACHE STRING "Prefix for uniform resource
set(afm_prefix_binding "${afm_prefix}binding:" CACHE STRING "URN for bindings")
set(afm_user_appdir "app-data" CACHE STRING "User subdirectory for applications")
set(afm_user_appdir_label "User::App-Shared" CACHE STRING "Smack label of the user subdirectory for applications")
+set(systemd_units_root "${CMAKE_INSTALL_FULL_LIBDIR}/systemd" CACHE STRING "Place where unit files are to be set")
set(wgtpkg_trusted_cert_dir "${afm_confdir}/certs" CACHE STRING "Path to internal certificates")
if(USE_SIMULATION)
@@ -62,6 +63,7 @@ add_definitions(
-DFWK_LAUNCH_CONF="${afm_confdir}/afm-launch.conf"
-DFWK_UNIT_CONF="${afm_confdir}/afm-unit.conf"
-DFWK_USER_APP_DIR_LABEL="${afm_user_appdir_label}"
+ -DSYSTEMD_UNITS_ROOT="${systemd_units_root}"
)
add_subdirectory(src)
diff --git a/src/wgtpkg-install.c b/src/wgtpkg-install.c
index 93c2bbc..836b136 100644
--- a/src/wgtpkg-install.c
+++ b/src/wgtpkg-install.c
@@ -39,6 +39,7 @@
#include "wgtpkg-install.h"
#include "secmgr-wrap.h"
#include "utils-dir.h"
+#include "wgtpkg-unit.h"
static const char* exec_type_strings[] = {
"application/x-executable",
@@ -104,25 +105,30 @@ static int set_required_permissions(struct wgt_desc_param *params, int required)
int optional;
while (params) {
- /* check the value */
- if (!strcmp(params->value, string_required))
- optional = !required;
- else if (!strcmp(params->value, string_optional))
- optional = 1;
- else {
- ERROR("unexpected parameter value: %s found for %s", params->value, params->name);
- errno = EPERM;
- return -1;
- }
- /* set the permission */
- if (request_permission(params->name)) {
- DEBUG("granted permission: %s", params->name);
- } else if (optional) {
- INFO("optional permission ungranted: %s", params->name);
+ /* check if target */
+ if (!strcmp(params->name, string_sharp_target)) {
+ /* do nothing when #target */
} else {
- ERROR("ungranted permission required: %s", params->name);
- errno = EPERM;
- return -1;
+ /* check the value */
+ if (!strcmp(params->value, string_required))
+ optional = !required;
+ else if (!strcmp(params->value, string_optional))
+ optional = 1;
+ else {
+ ERROR("unexpected parameter value: %s found for %s", params->value, params->name);
+ errno = EPERM;
+ return -1;
+ }
+ /* set the permission */
+ if (request_permission(params->name)) {
+ DEBUG("granted permission: %s", params->name);
+ } else if (optional) {
+ INFO("optional permission ungranted: %s", params->name);
+ } else {
+ ERROR("ungranted permission required: %s", params->name);
+ errno = EPERM;
+ return -1;
+ }
}
params = params->next;
}
@@ -322,15 +328,21 @@ struct wgt_info *install_widget(const char *wgtfile, const char *root, int force
if (install_icon(desc))
goto error3;
+ if (install_security(desc))
+ goto error4;
+
if (install_exec_flag(desc))
- goto error3;
+ goto error4;
- if (install_security(desc))
- goto error3;
+ if (unit_install(ifo, installdir, FWK_ICON_DIR, 1234/*TODO*/))
+ goto error4;
file_reset();
return ifo;
+error4:
+ /* todo: cleanup */
+
error3:
wgt_info_unref(ifo);