Prepare the Integration with systemd
[src/app-framework-main.git] / conf / afm-unit.conf
1 ;---------------------------------------------------------------------------------
2 ; File:
3 ;
4 ;    afm-unit.conf
5 ;
6 ; Role:
7 ;
8 ;    Configure how installation of widget produces unit files for systemd
9 ;
10 ; Processing and format:
11 ;
12 ;    1. File load
13 ;
14 ;           Lines beginning with ; are firstly removed
15 ;
16 ;    2. File instanciation
17 ;
18 ;           Mustache (extended) substitutions are applied using JSON
19 ;           data deduced from config.xml file of the widget.
20 ;
21 ;    3. Extraction of units
22 ;
23 ;           Extract produced units, pack it (remove empty lines and directives)
24 ;
25 ; Directives:
26 ;
27 ;    All directive occopy one whole line starting with %
28 ;
29 ;     - %nl
30 ;
31 ;             produce an empty line at the end
32 ;
33 ;     - %begin systemd-unit
34 ;     - %end systemd-unit
35 ;
36 ;             delimit the produced unit
37 ;
38 ;     - %systemd-unit user
39 ;     - %systemd-unit system
40 ;
41 ;             tells the kind of unit (user/system)
42 ;
43 ;     - %systemd-unit service NAME
44 ;     - %systemd-unit socket NAME
45 ;
46 ;             gives the name and type of the unit
47 ;
48 ;---------------------------------------------------------------------------------
49 {{#targets}}
50 %begin systemd-unit
51
52 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
53 %nl
54
55 [unit]
56 Description={{description}}
57 X-AGL-Name={{name.content}}
58 X-AGL-Name-Short={{name.short}}
59 X-AGL-Id={{id}}
60 X-AGL-Idaver={{idaver}}
61 X-AGL-Target-Name={{:#target}}
62 X-AGL-Author={{author.content}}
63 X-AGL-Author-email={{author.email}}
64 X-AGL-HTTP-port={{:#metadata.http-port}}
65 %nl
66
67 # Adds check to smack
68 ConditionSecurity=smack
69 %nl
70
71 # Automatic bound to required bindings
72 {{#required-binding}}
73 BindsTo=afm-api-{{name}}
74 After=afm-api-{{name}}
75 {{/required-binding}}
76 %nl
77
78 [Service]
79 SmackProcessLabel=User::App::{{id}}
80
81 {{#required-permission}}
82   {{#urn:AGL:permission::platform:no-oom}}      OOMScoreAdjust=-500             {{/urn:AGL:permission::platform:no-oom}}
83   {{#urn:AGL:permission::partner:real-time}}    IOSchedulingClass=realtime      {{/urn:AGL:permission::partner:real-time}}
84   {{^urn:AGL:permission::partner:real-time}}    RestrictRealtime=on             {{/urn:AGL:permission::partner:real-time}}
85   {{#urn:AGL:permission::public:display}}       SupplementaryGroups=display     {{/urn:AGL:permission::public:display}}
86   {{^urn:AGL:permission::public:syscall:clock}} SystemCallFilter=~@clock        {{/urn:AGL:permission::public:syscall:clock}}
87   {{^urn:AGL:permission::public:internet}}      RestrictAddressFamilies=AF_UNIX {{/urn:AGL:permission::public:internet}}
88 {{/required-permission}}
89 %nl
90
91 WorkingDirectory={{&#metadata.app-data-dir}}
92
93 ;---------------------------------------------------------------------------------
94 {{#content.type=text/html}}
95
96 %systemd-unit user
97
98 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
99
100 ExecStart=/usr/bin/afb-daemon --port={{:#metadata.http-port}} --random-token \
101         --rootdir={{:#metadata.install-dir}} \
102         --workdir={{&#metadata.app-data-dir}} \
103         --roothttp=htdocs \
104         {{#required-permission.urn:AGL:permission::public:applications:read}}\
105                 --alias=/icons:{{:#metadata.icons-dir}} \
106         {{/required-permission.urn:AGL:permission::public:applications:read}}\
107         {{#required-binding}}\
108                 {{#value=auto}}\
109                         --ws-client=unix:%t/apis/ws/{{name}} \
110                 {{/value=auto}}\
111                 {{#value=ws}}\
112                         --ws-client=unix:%t/apis/ws/{{name}} \
113                 {{/value=ws}}\
114                 {{#value=dbus}}\
115                         --dbus-client={{name}} \
116                 {{/value=dbus}}\
117                 {{#value=link}}\
118                         --binding=%t/apis/lib/{{name}} \
119                 {{/value=link}}\
120                 {{#value=cloud}}\
121                         --cloud-client={{name}} \
122                 {{/value=cloud}}\
123         {{/required-binding}}\
124         --exec /usr/bin/web-runtime http://localhost:@p/{{content.src}}?token=@t
125
126 {{/content.type=text/html}}
127
128 ;---------------------------------------------------------------------------------
129 {{#content.type=application/vnd.agl.service}}
130
131 %systemd-unit user
132 %systemd-unit service afm-api-{{:#target}}
133
134 ExecStart=/usr/bin/afb-daemon \
135         --rootdir={{:#metadata.install-dir}} \
136         --workdir={{&#metadata.install-dir}} \
137         {{^required-permission.urn:AGL:permission::partner:service:no-ws}}\
138                 --ws-server=unix:%t/bindings/{{:#target}} \
139         {{/required-permission.urn:AGL:permission::partner:service:no-ws}}\
140         {{^required-permission.urn:AGL:permission::partner:service:no-dbus}}\
141                 --dbus-server={{:#target}} \
142         {{/required-permission.urn:AGL:permission::partner:service:no-dbus}}\
143         --no-httpd 
144
145 {{^required-permission.urn:AGL:permission::partner:service:no-ws}}
146
147 %end systemd-unit
148 %begin systemd-unit
149
150 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
151 #
152 %systemd-unit user
153 %systemd-unit socket afm-api-{{:#target}}
154
155
156 [socket]
157 SmackLabel=*
158 ListenStream=%t/bindings/{{:#target}}
159
160 {{/required-permission.urn:AGL:permission::partner:service:no-ws}}
161
162 {{/content.type=application/vnd.agl.service}}
163
164 ;---------------------------------------------------------------------------------
165 %end systemd-unit
166 {{/targets}}
167
168