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}}
80 SuccessExitStatus=0 SIGKILL
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}}
91 WorkingDirectory={{&#metadata.app-data-dir}}
92 Environment=AFM_APP_INSTALL_DIR={{:#metadata.install-dir}}
95 ;---------------------------------------------------------------------------------
96 {{#content.type=text/html}}
100 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
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}}\
107 {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
108 {{^required-permission.urn:AGL:permission::public:no-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}}\
116 --ws-client=unix:%t/apis/ws/{{name}} \
119 --ws-client=unix:%t/apis/ws/{{name}} \
122 --dbus-client={{name}} \
125 --binding=%t/apis/lib/{{name}} \
128 --cloud-client={{name}} \
131 --exec /usr/bin/web-runtime http://localhost:@p/{{content.src}}?token=@t
133 {{/content.type=text/html}}
135 ;---------------------------------------------------------------------------------
136 {{#content.type=application/x-executable}}
139 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
140 Environment=LD_LIBRARY_PATH=$ORIGIN/$LIB
142 ExecStart={{:#metadata.install-dir}}/{{content.src}}
144 {{/content.type=application/x-executable}}
146 ;---------------------------------------------------------------------------------
147 {{#content.type=application/vnd.agl.service}}
150 %systemd-unit service afm-api-{{:#target}}
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}}\
163 {{^required-permission.urn:AGL:permission::partner:service:no-ws}}
168 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
171 %systemd-unit socket afm-api-{{:#target}}
176 ListenStream=%t/bindings/{{:#target}}
177 FileDescriptorName={{:#target}}
179 {{/required-permission.urn:AGL:permission::partner:service:no-ws}}
181 {{/content.type=application/vnd.agl.service}}
183 ;---------------------------------------------------------------------------------
184 {{#required-permission.urn:AGL:permission::system:run-by-default}}
186 WantedBy=default.target
187 {{/required-permission.urn:AGL:permission::system:run-by-default}}
188 ;---------------------------------------------------------------------------------