1 ;---------------------------------------------------------------------------------
8 ; Configure how installation of widget produces unit files for systemd
10 ; Processing and format:
14 ; Lines beginning with ; are firstly removed
16 ; 2. File instanciation
18 ; Mustache (extended) substitutions are applied using JSON
19 ; data deduced from config.xml file of the widget.
21 ; 3. Extraction of units
23 ; Extract produced units, pack it (remove empty lines and directives)
27 ; All directive occopy one whole line starting with %
31 ; produce an empty line at the end
33 ; - %begin systemd-unit
36 ; delimit the produced unit
38 ; - %systemd-unit user
39 ; - %systemd-unit system
41 ; tells the kind of unit (user/system)
43 ; - %systemd-unit service NAME
44 ; - %systemd-unit socket NAME
46 ; gives the name and type of the unit
48 ;---------------------------------------------------------------------------------
52 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
56 Description={{description}}
57 X-AGL-Name={{name.content}}
58 X-AGL-Name-Short={{name.short}}
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}}
68 ConditionSecurity=smack
71 # Automatic bound to required api
73 BindsTo=afm-api-{{name}}
74 After=afm-api-{{name}}
79 SmackProcessLabel=User::App::{{id}}
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 {{/required-permission}}
90 WorkingDirectory={{&#metadata.app-data-dir}}
91 SuccessExitStatus=0 SIGKILL
93 ;---------------------------------------------------------------------------------
94 {{#content.type=text/html}}
98 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
100 ExecStart=/usr/bin/afb-daemon --port={{:#metadata.http-port}} --random-token \
101 --rootdir={{:#metadata.install-dir}} \
102 --workdir={{&#metadata.app-data-dir}}/{{id}} \
103 {{#required-permission.urn:AGL:permission::public:no-htdocs}}\
105 {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
106 {{^required-permission.urn:AGL:permission::public:no-htdocs}}\
108 {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
109 {{#required-permission.urn:AGL:permission::public:applications:read}}\
110 --alias=/icons:{{:#metadata.icons-dir}} \
111 {{/required-permission.urn:AGL:permission::public:applications:read}}\
114 --ws-client=unix:%t/apis/ws/{{name}} \
117 --ws-client=unix:%t/apis/ws/{{name}} \
120 --dbus-client={{name}} \
123 --binding=%t/apis/lib/{{name}} \
126 --cloud-client={{name}} \
129 --exec /usr/bin/web-runtime http://localhost:@p/{{content.src}}?token=@t
131 {{/content.type=text/html}}
133 ;---------------------------------------------------------------------------------
134 {{#content.type=application/vnd.agl.service}}
137 %systemd-unit service afm-api-{{:#target}}
139 ExecStart=/usr/bin/afb-daemon \
140 --rootdir={{:#metadata.install-dir}} \
141 --workdir={{&#metadata.install-dir}}/{{id}} \
142 {{^required-permission.urn:AGL:permission::partner:service:no-ws}}\
143 --ws-server=sd:{{:#target}} \
144 {{/required-permission.urn:AGL:permission::partner:service:no-ws}}\
145 {{^required-permission.urn:AGL:permission::partner:service:no-dbus}}\
146 --dbus-server={{:#target}} \
147 {{/required-permission.urn:AGL:permission::partner:service:no-dbus}}\
150 {{^required-permission.urn:AGL:permission::partner:service:no-ws}}
155 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
158 %systemd-unit socket afm-api-{{:#target}}
163 ListenStream=%t/bindings/{{:#target}}
164 FileDescriptorName={{:#target}}
166 {{/required-permission.urn:AGL:permission::partner:service:no-ws}}
168 {{/content.type=application/vnd.agl.service}}
170 ;---------------------------------------------------------------------------------
171 {{#required-permission.urn:AGL:permission::system:run-by-default}}
173 WantedBy=default.target
174 {{/required-permission.urn:AGL:permission::system:run-by-default}}
175 ;---------------------------------------------------------------------------------