Prepare the Integration with systemd
[src/app-framework-main.git] / conf / afm-unit.conf
diff --git a/conf/afm-unit.conf b/conf/afm-unit.conf
new file mode 100644 (file)
index 0000000..290c3e1
--- /dev/null
@@ -0,0 +1,168 @@
+;---------------------------------------------------------------------------------
+; File:
+;
+;    afm-unit.conf
+;
+; Role:
+;
+;    Configure how installation of widget produces unit files for systemd
+;
+; Processing and format:
+;
+;    1. File load
+;
+;           Lines beginning with ; are firstly removed
+;
+;    2. File instanciation
+;
+;           Mustache (extended) substitutions are applied using JSON
+;           data deduced from config.xml file of the widget.
+;
+;    3. Extraction of units
+;
+;           Extract produced units, pack it (remove empty lines and directives)
+;
+; Directives:
+;
+;    All directive occopy one whole line starting with %
+;
+;     - %nl
+;
+;             produce an empty line at the end
+;
+;     - %begin systemd-unit
+;     - %end systemd-unit
+;
+;             delimit the produced unit
+;
+;     - %systemd-unit user
+;     - %systemd-unit system
+;
+;             tells the kind of unit (user/system)
+;
+;     - %systemd-unit service NAME
+;     - %systemd-unit socket NAME
+;
+;             gives the name and type of the unit
+;
+;---------------------------------------------------------------------------------
+{{#targets}}
+%begin systemd-unit
+
+# auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
+%nl
+
+[unit]
+Description={{description}}
+X-AGL-Name={{name.content}}
+X-AGL-Name-Short={{name.short}}
+X-AGL-Id={{id}}
+X-AGL-Idaver={{idaver}}
+X-AGL-Target-Name={{:#target}}
+X-AGL-Author={{author.content}}
+X-AGL-Author-email={{author.email}}
+X-AGL-HTTP-port={{:#metadata.http-port}}
+%nl
+
+# Adds check to smack
+ConditionSecurity=smack
+%nl
+
+# Automatic bound to required bindings
+{{#required-binding}}
+BindsTo=afm-api-{{name}}
+After=afm-api-{{name}}
+{{/required-binding}}
+%nl
+
+[Service]
+SmackProcessLabel=User::App::{{id}}
+
+{{#required-permission}}
+  {{#urn:AGL:permission::platform:no-oom}}      OOMScoreAdjust=-500             {{/urn:AGL:permission::platform:no-oom}}
+  {{#urn:AGL:permission::partner:real-time}}    IOSchedulingClass=realtime      {{/urn:AGL:permission::partner:real-time}}
+  {{^urn:AGL:permission::partner:real-time}}    RestrictRealtime=on             {{/urn:AGL:permission::partner:real-time}}
+  {{#urn:AGL:permission::public:display}}       SupplementaryGroups=display     {{/urn:AGL:permission::public:display}}
+  {{^urn:AGL:permission::public:syscall:clock}} SystemCallFilter=~@clock        {{/urn:AGL:permission::public:syscall:clock}}
+  {{^urn:AGL:permission::public:internet}}      RestrictAddressFamilies=AF_UNIX {{/urn:AGL:permission::public:internet}}
+{{/required-permission}}
+%nl
+
+WorkingDirectory={{&#metadata.app-data-dir}}
+
+;---------------------------------------------------------------------------------
+{{#content.type=text/html}}
+
+%systemd-unit user
+
+%systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
+
+ExecStart=/usr/bin/afb-daemon --port={{:#metadata.http-port}} --random-token \
+       --rootdir={{:#metadata.install-dir}} \
+       --workdir={{&#metadata.app-data-dir}} \
+       --roothttp=htdocs \
+       {{#required-permission.urn:AGL:permission::public:applications:read}}\
+               --alias=/icons:{{:#metadata.icons-dir}} \
+       {{/required-permission.urn:AGL:permission::public:applications:read}}\
+       {{#required-binding}}\
+               {{#value=auto}}\
+                       --ws-client=unix:%t/apis/ws/{{name}} \
+               {{/value=auto}}\
+               {{#value=ws}}\
+                       --ws-client=unix:%t/apis/ws/{{name}} \
+               {{/value=ws}}\
+               {{#value=dbus}}\
+                       --dbus-client={{name}} \
+               {{/value=dbus}}\
+               {{#value=link}}\
+                       --binding=%t/apis/lib/{{name}} \
+               {{/value=link}}\
+               {{#value=cloud}}\
+                       --cloud-client={{name}} \
+               {{/value=cloud}}\
+       {{/required-binding}}\
+       --exec /usr/bin/web-runtime http://localhost:@p/{{content.src}}?token=@t
+
+{{/content.type=text/html}}
+
+;---------------------------------------------------------------------------------
+{{#content.type=application/vnd.agl.service}}
+
+%systemd-unit user
+%systemd-unit service afm-api-{{:#target}}
+
+ExecStart=/usr/bin/afb-daemon \
+       --rootdir={{:#metadata.install-dir}} \
+       --workdir={{&#metadata.install-dir}} \
+       {{^required-permission.urn:AGL:permission::partner:service:no-ws}}\
+               --ws-server=unix:%t/bindings/{{:#target}} \
+       {{/required-permission.urn:AGL:permission::partner:service:no-ws}}\
+       {{^required-permission.urn:AGL:permission::partner:service:no-dbus}}\
+               --dbus-server={{:#target}} \
+       {{/required-permission.urn:AGL:permission::partner:service:no-dbus}}\
+       --no-httpd 
+
+{{^required-permission.urn:AGL:permission::partner:service:no-ws}}
+
+%end systemd-unit
+%begin systemd-unit
+
+# auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
+#
+%systemd-unit user
+%systemd-unit socket afm-api-{{:#target}}
+
+
+[socket]
+SmackLabel=*
+ListenStream=%t/bindings/{{:#target}}
+
+{{/required-permission.urn:AGL:permission::partner:service:no-ws}}
+
+{{/content.type=application/vnd.agl.service}}
+
+;---------------------------------------------------------------------------------
+%end systemd-unit
+{{/targets}}
+
+