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 ; - %systemd-unit wanted-by NAME
50 ; tells to install a link to unit in the wants of NAME
52 ;---------------------------------------------------------------------------------
56 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
60 Description={{description}}
61 X-AGL-Name={{name.content}}
62 X-AGL-Name-Short={{name.short}}
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}}
72 ConditionSecurity=smack
75 # Automatic bound to required api
77 BindsTo=afm-api-{{name}}
78 After=afm-api-{{name}}
83 SmackProcessLabel=User::App::{{id}}
84 SuccessExitStatus=0 SIGKILL
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}}
95 WorkingDirectory={{&#metadata.app-data-dir}}
96 Environment=AFM_APP_INSTALL_DIR={{:#metadata.install-dir}}
99 ;---------------------------------------------------------------------------------
100 {{#content.type=text/html}}
104 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
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}}\
111 {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
112 {{^required-permission.urn:AGL:permission::public:no-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}}\
120 --ws-client=unix:%t/apis/ws/{{name}} \
123 --ws-client=unix:%t/apis/ws/{{name}} \
126 --dbus-client={{name}} \
129 --binding=%t/apis/lib/{{name}} \
132 --cloud-client={{name}} \
135 --exec /usr/bin/web-runtime http://localhost:@p/{{content.src}}?token=@t
137 {{/content.type=text/html}}
139 ;---------------------------------------------------------------------------------
140 {{#content.type=application/x-executable}}
143 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
144 Environment=LD_LIBRARY_PATH=$ORIGIN/$LIB
146 ExecStart={{:#metadata.install-dir}}/{{content.src}}
148 {{/content.type=application/x-executable}}
150 ;---------------------------------------------------------------------------------
151 {{#content.type=application/vnd.agl.service}}
154 %systemd-unit service afm-service-{{:#target}}
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}}\
167 {{^required-permission.urn:AGL:permission::partner:service:no-ws}}
172 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
175 %systemd-unit socket afm-service-{{:#target}}
179 ListenStream=%t/bindings/{{:#target}}
180 FileDescriptorName={{:#target}}
182 {{/required-permission.urn:AGL:permission::partner:service:no-ws}}
184 {{/content.type=application/vnd.agl.service}}
186 ;---------------------------------------------------------------------------------
187 {{#required-permission.urn:AGL:permission::system:run-by-default}}
189 WantedBy=default.target
190 %systemd-unit wanted-by default.target
191 {{/required-permission.urn:AGL:permission::system:run-by-default}}
192 ;---------------------------------------------------------------------------------