18ade850b6e6ddcc264edd85071b08ee9e3b7a7e
[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 api
72 {{#required-api}}
73 BindsTo=afm-api-{{name}}
74 After=afm-api-{{name}}
75 {{/required-api}}
76 %nl
77
78 [Service]
79 SmackProcessLabel=User::App::{{id}}
80 SuccessExitStatus=0 SIGKILL
81
82 {{#required-permission}}
83   {{#urn:AGL:permission::platform:no-oom}}      OOMScoreAdjust=-500             {{/urn:AGL:permission::platform:no-oom}}
84   {{#urn:AGL:permission::partner:real-time}}    IOSchedulingClass=realtime      {{/urn:AGL:permission::partner:real-time}}
85   {{^urn:AGL:permission::partner:real-time}}    RestrictRealtime=on             {{/urn:AGL:permission::partner:real-time}}
86   {{#urn:AGL:permission::public:display}}       SupplementaryGroups=display     {{/urn:AGL:permission::public:display}}
87   {{^urn:AGL:permission::public:syscall:clock}} SystemCallFilter=~@clock        {{/urn:AGL:permission::public:syscall:clock}}
88 {{/required-permission}}
89 %nl
90
91 WorkingDirectory={{&#metadata.app-data-dir}}
92 Environment=AFM_APP_INSTALL_DIR={{:#metadata.install-dir}}
93
94
95 ;---------------------------------------------------------------------------------
96 {{#content.type=text/html}}
97
98 %systemd-unit user
99
100 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
101
102 ExecStart=/usr/bin/afb-daemon --port={{:#metadata.http-port}} --random-token \
103         --rootdir={{:#metadata.install-dir}} \
104         --workdir={{&#metadata.app-data-dir}}/{{id}} \
105         {{#required-permission.urn:AGL:permission::public:no-htdocs}}\
106                 --roothttp=. \
107         {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
108         {{^required-permission.urn:AGL:permission::public:no-htdocs}}\
109                 --roothttp=htdocs \
110         {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
111         {{#required-permission.urn:AGL:permission::public:applications:read}}\
112                 --alias=/icons:{{:#metadata.icons-dir}} \
113         {{/required-permission.urn:AGL:permission::public:applications:read}}\
114         {{#required-api}}\
115                 {{#value=auto}}\
116                         --ws-client=unix:%t/apis/ws/{{name}} \
117                 {{/value=auto}}\
118                 {{#value=ws}}\
119                         --ws-client=unix:%t/apis/ws/{{name}} \
120                 {{/value=ws}}\
121                 {{#value=dbus}}\
122                         --dbus-client={{name}} \
123                 {{/value=dbus}}\
124                 {{#value=link}}\
125                         --binding=%t/apis/lib/{{name}} \
126                 {{/value=link}}\
127                 {{#value=cloud}}\
128                         --cloud-client={{name}} \
129                 {{/value=cloud}}\
130         {{/required-api}}\
131         --exec /usr/bin/web-runtime http://localhost:@p/{{content.src}}?token=@t
132
133 {{/content.type=text/html}}
134
135 ;---------------------------------------------------------------------------------
136 {{#content.type=application/x-executable}}
137
138 %systemd-unit user
139 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
140 Environment=LD_LIBRARY_PATH=$ORIGIN/$LIB
141
142 ExecStart={{:#metadata.install-dir}}/{{content.src}}
143
144 {{/content.type=application/x-executable}}
145
146 ;---------------------------------------------------------------------------------
147 {{#content.type=application/vnd.agl.service}}
148
149 %systemd-unit user
150 %systemd-unit service afm-api-{{:#target}}
151
152 ExecStart=/usr/bin/afb-daemon \
153         --rootdir={{:#metadata.install-dir}} \
154         --workdir={{&#metadata.install-dir}}/{{id}} \
155         {{^required-permission.urn:AGL:permission::partner:service:no-ws}}\
156                 --ws-server=sd:{{:#target}} \
157         {{/required-permission.urn:AGL:permission::partner:service:no-ws}}\
158         {{^required-permission.urn:AGL:permission::partner:service:no-dbus}}\
159                 --dbus-server={{:#target}} \
160         {{/required-permission.urn:AGL:permission::partner:service:no-dbus}}\
161         --no-httpd
162
163 {{^required-permission.urn:AGL:permission::partner:service:no-ws}}
164
165 %end systemd-unit
166 %begin systemd-unit
167
168 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
169 #
170 %systemd-unit user
171 %systemd-unit socket afm-api-{{:#target}}
172
173
174 [socket]
175 SmackLabel=*
176 ListenStream=%t/bindings/{{:#target}}
177 FileDescriptorName={{:#target}}
178
179 {{/required-permission.urn:AGL:permission::partner:service:no-ws}}
180
181 {{/content.type=application/vnd.agl.service}}
182
183 ;---------------------------------------------------------------------------------
184 {{#required-permission.urn:AGL:permission::system:run-by-default}}
185 [install]
186 WantedBy=default.target
187 {{/required-permission.urn:AGL:permission::system:run-by-default}}
188 ;---------------------------------------------------------------------------------
189 %end systemd-unit
190 {{/targets}}
191