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