Merge lp:~ted/ubuntu-app-launch/install-root into lp:ubuntu-app-launch/16.10

Proposed by Ted Gould
Status: Superseded
Proposed branch: lp:~ted/ubuntu-app-launch/install-root
Merge into: lp:ubuntu-app-launch/16.10
Prerequisite: lp:~ted/ubuntu-app-launch/jobs-systemd
Diff against target: 258 lines (+85/-23)
11 files modified
docs/index.rst (+41/-0)
libubuntu-app-launch/registry-impl.cpp (+8/-0)
libubuntu-app-launch/registry-impl.h (+12/-0)
libubuntu-app-launch/ubuntu-app-launch.cpp (+5/-1)
upstart-jobs/application-click.conf.in (+4/-5)
upstart-jobs/application-failed.conf.in (+1/-1)
upstart-jobs/application-legacy.conf.in (+4/-4)
upstart-jobs/application-snap.conf.in (+4/-5)
upstart-jobs/application.conf.in (+1/-1)
upstart-jobs/untrusted-helper-type-end.conf.in (+1/-1)
upstart-jobs/untrusted-helper.conf.in (+4/-5)
To merge this branch: bzr merge lp:~ted/ubuntu-app-launch/install-root
Reviewer Review Type Date Requested Status
Ted Gould Pending
Marcus Tomlinson Pending
unity-api-1-bot continuous-integration Pending
Review via email: mp+309765@code.launchpad.net

This proposal supersedes a proposal from 2016-09-14.

This proposal has been superseded by a proposal from 2016-11-10.

Commit message

Make UAL relocatable for Snappy installs

Description of the change

For things that it makes sense to override we have an envvar to override it. For the Upstart jobs we're just relying on ${SNAP} to be set.

Also added docs for all the envvars that we use.

To post a comment you must log in.
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote : Posted in a previous version of this proposal

PASSED: Continuous integration, rev:256
https://jenkins.canonical.com/unity-api-1/job/lp-ubuntu-app-launch-ci/99/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/647
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/653
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=vivid+overlay/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=vivid+overlay/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=vivid+overlay/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=vivid+overlay/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=yakkety/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=yakkety/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=vivid+overlay/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=vivid+overlay/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/469/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/469
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/469/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-ubuntu-app-launch-ci/99/rebuild

review: Approve (continuous-integration)
Revision history for this message
Marcus Tomlinson (marcustomlinson) wrote : Posted in a previous version of this proposal

Comforting to see that all code paths are covered in the tests. Also, your bug, your fix (extra comfort) :)

LGTM

review: Approve
Revision history for this message
Ted Gould (ted) wrote : Posted in a previous version of this proposal

So further testing on real systems revealed an interesting flaw. Basically by including $SNAP in the exec line it doesn't work. Why? Because to resolve the environment variable Upstart switches from doing an exec directly, to instead using a shell which then does the exec. Not a big deal, except that there seems to be a bug in the way it works with AppArmor. So Upstart switches profiles on exec, but that is after the binary is read, so the exec-line-exec binary doesn't need to be in the Application's apparmor profile. But when the shell goes first the shell itself is exec'ing under the application's profile, and thus needs permission.

This is, at some level, a bug in Upstart. Not sure how it should be fixed. Will have to have conversations with security taking into account the maintenance level of the various packages involved.

review: Needs Fixing
258. By Ted Gould

Update to latest systemd branch

259. By Ted Gould

Pulling through updates

260. By Ted Gould

Adding an environment variable for XMir Helper

261. By Ted Gould

Pulling through trunk

262. By Ted Gould

Restructure exec line building so we can add more

263. By Ted Gould

Adding extra environment in the snap world

264. By Ted Gould

Make sure we get the other snap environment variables

265. By Ted Gould

Switch to calling legacy-exec

266. By Ted Gould

Starting utilities to put together an environment setup

267. By Ted Gould

Better exit codes

268. By Ted Gould

Fleshing out our utilities

269. By Ted Gould

Get the binaries into a deb

270. By Ted Gould

Make the command line reference the outside util

271. By Ted Gould

Call the snappy-xmir util unconfined

272. By Ted Gould

Handle write() returns

273. By Ted Gould

Disable for a moment

274. By Ted Gould

Remove the snap setting libertine launch

275. By Ted Gould

Fix command name

276. By Ted Gould

Make sure we sleep forever

277. By Ted Gould

Get negative errors as well

278. By Ted Gould

Make sure the FD stays open

279. By Ted Gould

Provide a way to test and put the fd number on the command line

280. By Ted Gould

Some basic test scripts

281. By Ted Gould

Switch to an abstract socket

282. By Ted Gould

Make sure we don't overrun sun_path

283. By Ted Gould

Clear out the MIR_* variables

284. By Ted Gould

Getting the snappy-xmir tests into the test suite

285. By Ted Gould

Check for MIR_ variables

286. By Ted Gould

Making sure we clean up the envvars utils

287. By Ted Gould

Increase output and debugging info in tests

288. By Ted Gould

Read everything in, and then start processing it into individual variables

289. By Ted Gould

Cleanup magic numbers

290. By Ted Gould

Explicitly set the DBus address as well

291. By Ted Gould

Make sure to pad with zeros

292. By Ted Gould

Test for long AppIDs

293. By Ted Gould

Removing snap variables from the Upstart jobs. If we're under a SNAP we'll be using systemd

294. By Ted Gould

Use the path in the current snap as the place to find the helper

295. By Ted Gould

Fix formatting

296. By Ted Gould

We don't need to care about the SNAP_ variables because they'll be reinserted when we come through the snap commands

297. By Ted Gould

Use a build variable to get the path

298. By Ted Gould

Switching back to setting the libertine-launch path in non-snap cases

299. By Ted Gould

Allow the legacy-exec util to be overridden

300. By Ted Gould

Merge error

301. By Ted Gould

More magic numbers brought down to Earth

302. By Ted Gould

Bigger libs warning. Like really people, read this.

303. By Ted Gould

Fix the libertine-launch case for non-snaps

304. By Ted Gould

Removing QT and XDG variables, don't think we need them

305. By Ted Gould

Removing more variables

306. By Ted Gould

Upstream changes

307. By Ted Gould

Make sure we don't have a Mir socket before checking that we don't

308. By Ted Gould

Merge upstream updates

309. By Ted Gould

Update to trunk

310. By Ted Gould

Update to current jobs-systemd

311. By Ted Gould

Grab QT_ and XDG_ for legacy apps on deb installs

312. By Ted Gould

Switching functions

313. By Ted Gould

Merge Trunk

314. By Ted Gould

Merge changes to jobs-systemd

315. By Ted Gould

Put the wrong environment var into the documentation

316. By Ted Gould

Getting these variables figured out

317. By Ted Gould

Fix docs to include default path for LEGACY_EXEC

318. By Ted Gould

Cache snap env var

319. By Ted Gould

Make sure we only use references in loops

320. By Ted Gould

Don't store if we have the variable

321. By Ted Gould

Return const pointer

322. By Ted Gould

Handle larger possible pids

323. By Ted Gould

Make sure we're gettin' data

324. By Ted Gould

Move debug outside of the print loop

325. By Ted Gould

A read failure is a helper failure

326. By Ted Gould

If we don't have a MIR_SOCKET use the default one

327. By Ted Gould

Special case legacy apps on Unity8 from debs

328. By Ted Gould

Put on the dunce cap and sit in the corner

Unmerged revisions

328. By Ted Gould

Put on the dunce cap and sit in the corner

327. By Ted Gould

Special case legacy apps on Unity8 from debs

326. By Ted Gould

If we don't have a MIR_SOCKET use the default one

325. By Ted Gould

A read failure is a helper failure

324. By Ted Gould

Move debug outside of the print loop

323. By Ted Gould

Make sure we're gettin' data

322. By Ted Gould

Handle larger possible pids

321. By Ted Gould

Return const pointer

320. By Ted Gould

Don't store if we have the variable

319. By Ted Gould

Make sure we only use references in loops

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'docs/index.rst'
--- docs/index.rst 2016-11-10 21:59:11 +0000
+++ docs/index.rst 2016-11-10 21:59:12 +0000
@@ -18,6 +18,47 @@
1818
19.. _Upstart: http://upstart.ubuntu.com/19.. _Upstart: http://upstart.ubuntu.com/
2020
21
22Environment Variables
23=====================
24
25There are a few environment variables that can effect the behavior of UAL while
26it is running.
27
28UBUNTU_APP_LAUNCH_CG_MANAGER_NAME
29 The DBus name that CG Manager registers under if it is on the session bus.
30
31UBUNTU_APP_LAUNCH_CG_MANAGER_SESSION_BUS
32 Tell UAL to look on the session bus for CG Manager.
33
34UBUNTU_APP_LAUNCH_DEMANGLER
35 Path to the UAL demangler tool that will get the Mir FD for trusted prompt session.
36
37UBUNTU_APP_LAUNCH_DISABLE_SNAPD_TIMEOUT
38 Wait as long as Snapd wants to return data instead of erroring after 100ms.
39
40UBUNTU_APP_LAUNCH_LEGACY_ROOT
41 Set the path that represents the root for legacy applications.
42
43UBUNTU_APP_LAUNCH_LIBERTINE_LAUNCH
44 Path to the libertine launch utility for setting up libertine containers and XMir based legacy apps.
45
46UBUNTU_APP_LAUNCH_LINK_FARM
47 Path to the link farm that is created by Click of all the installed Click applications.
48
49UBUNTU_APP_LAUNCH_OOM_HELPER
50 Path to the setuid helper that configures OOM values on application processes that we otherwise couldn't, mostly this is for Oxide.
51
52UBUNTU_APP_LAUNCH_OOM_PROC_PATH
53 Path to look for the files to set OOM values, defaults to /proc.
54
55UBUNTU_APP_LAUNCH_SNAP_BASEDIR
56 The place where snaps are installed in the system, /snap is the default.
57
58UBUNTU_APP_LAUNCH_SNAPD_SOCKET
59 Path to the snapd socket.
60
61
21API Documentation62API Documentation
22=================63=================
2364
2465
=== modified file 'libubuntu-app-launch/registry-impl.cpp'
--- libubuntu-app-launch/registry-impl.cpp 2016-11-10 21:59:11 +0000
+++ libubuntu-app-launch/registry-impl.cpp 2016-11-10 21:59:12 +0000
@@ -48,6 +48,14 @@
48 return std::shared_ptr<GDBusConnection>(g_bus_get_sync(G_BUS_TYPE_SESSION, cancel.get(), nullptr),48 return std::shared_ptr<GDBusConnection>(g_bus_get_sync(G_BUS_TYPE_SESSION, cancel.get(), nullptr),
49 [](GDBusConnection* bus) { g_clear_object(&bus); });49 [](GDBusConnection* bus) { g_clear_object(&bus); });
50 });50 });
51
52 /* Determine where we're getting the helper from */
53 oomHelper_ = OOM_HELPER;
54 auto goomHelper = g_getenv("UBUNTU_APP_LAUNCH_OOM_HELPER");
55 if (goomHelper != nullptr)
56 {
57 oomHelper_ = goomHelper;
58 }
51}59}
5260
53void Registry::Impl::initClick()61void Registry::Impl::initClick()
5462
=== modified file 'libubuntu-app-launch/registry-impl.h'
--- libubuntu-app-launch/registry-impl.h 2016-11-10 21:59:11 +0000
+++ libubuntu-app-launch/registry-impl.h 2016-11-10 21:59:12 +0000
@@ -83,6 +83,11 @@
83 static void watchingAppStarting(bool rWatching);83 static void watchingAppStarting(bool rWatching);
84 static bool isWatchingAppStarting();84 static bool isWatchingAppStarting();
8585
86 const std::string oomHelper()
87 {
88 return oomHelper_;
89 }
90
86private:91private:
87 Registry* _registry; /**< The Registry that we're spawned from */92 Registry* _registry; /**< The Registry that we're spawned from */
8893
@@ -97,6 +102,13 @@
97 /** All of our icon finders based on the path that they're looking102 /** All of our icon finders based on the path that they're looking
98 into */103 into */
99 std::unordered_map<std::string, std::shared_ptr<IconFinder>> _iconFinders;104 std::unordered_map<std::string, std::shared_ptr<IconFinder>> _iconFinders;
105
106 /** Getting the Upstart job path is relatively expensive in
107 that it requires a DBus call. Worth keeping a cache of. */
108 std::map<std::string, std::string> upstartJobPathCache_;
109
110 /** Path to the OOM Helper */
111 std::string oomHelper_;
100};112};
101113
102} // namespace app_launch114} // namespace app_launch
103115
=== modified file 'libubuntu-app-launch/ubuntu-app-launch.cpp'
--- libubuntu-app-launch/ubuntu-app-launch.cpp 2016-11-10 21:59:11 +0000
+++ libubuntu-app-launch/ubuntu-app-launch.cpp 2016-11-10 21:59:12 +0000
@@ -1672,7 +1672,11 @@
1672 /* The exec value */1672 /* The exec value */
1673 gchar * envstr = NULL;1673 gchar * envstr = NULL;
1674 if (demangler) {1674 if (demangler) {
1675 envstr = g_strdup_printf("APP_EXEC=%s %s", DEMANGLER_PATH, execline);1675 const gchar * demangler_path = g_getenv("UBUNTU_APP_LAUNCH_DEMANGLER");
1676 if (demangler_path == nullptr) {
1677 demangler_path = DEMANGLER_PATH;
1678 }
1679 envstr = g_strdup_printf("APP_EXEC=%s %s", demangler_path, execline);
1676 } else {1680 } else {
1677 envstr = g_strdup_printf("APP_EXEC=%s", execline);1681 envstr = g_strdup_printf("APP_EXEC=%s", execline);
1678 }1682 }
16791683
=== modified file 'upstart-jobs/application-click.conf.in'
--- upstart-jobs/application-click.conf.in 2015-08-17 21:34:39 +0000
+++ upstart-jobs/application-click.conf.in 2016-11-10 21:59:12 +0000
@@ -14,7 +14,6 @@
14env APP_XMIR_ENABLE14env APP_XMIR_ENABLE
1515
16env UBUNTU_APP_LAUNCH_ARCH="@ubuntu_app_launch_arch@"16env UBUNTU_APP_LAUNCH_ARCH="@ubuntu_app_launch_arch@"
17export UBUNTU_APP_LAUNCH_ARCH
1817
19apparmor switch ${APP_ID}18apparmor switch ${APP_ID}
20cgroup freezer19cgroup freezer
@@ -23,12 +22,12 @@
23oom score 10022oom score 100
2423
25# Remember, this is confined24# Remember, this is confined
26exec @pkglibexecdir@/exec-line-exec25exec ${SNAP}/@pkglibexecdir@/exec-line-exec
2726
28post-start exec @pkglibexecdir@/zg-report-app open27post-start exec ${SNAP}/@pkglibexecdir@/zg-report-app open
29post-stop script28post-stop script
30 @pkglibexecdir@/zg-report-app close29 ${SNAP}/@pkglibexecdir@/zg-report-app close
31 @pkglibexecdir@/cgroup-reap-all30 ${SNAP}/@pkglibexecdir@/cgroup-reap-all
3231
33 DEVELOPER_MODE=`gdbus call --system --dest com.canonical.PropertyService --object-path /com/canonical/PropertyService --method com.canonical.PropertyService.GetProperty adb`32 DEVELOPER_MODE=`gdbus call --system --dest com.canonical.PropertyService --object-path /com/canonical/PropertyService --method com.canonical.PropertyService.GetProperty adb`
34 if [ "$DEVELOPER_MODE" != "(true,)" ] ; then33 if [ "$DEVELOPER_MODE" != "(true,)" ] ; then
3534
=== modified file 'upstart-jobs/application-failed.conf.in'
--- upstart-jobs/application-failed.conf.in 2016-08-04 14:04:40 +0000
+++ upstart-jobs/application-failed.conf.in 2016-11-10 21:59:12 +0000
@@ -3,4 +3,4 @@
3start on stopped application-legacy RESULT=failed or stopped application-click RESULT=failed or stopped application-snap RESULT=failed3start on stopped application-legacy RESULT=failed or stopped application-click RESULT=failed or stopped application-snap RESULT=failed
4task4task
55
6exec @pkglibexecdir@/application-failed6exec ${SNAP}/@pkglibexecdir@/application-failed
77
=== modified file 'upstart-jobs/application-legacy.conf.in'
--- upstart-jobs/application-legacy.conf.in 2016-09-23 22:01:53 +0000
+++ upstart-jobs/application-legacy.conf.in 2016-11-10 21:59:12 +0000
@@ -22,12 +22,12 @@
22oom score 11022oom score 110
2323
24# This could be confined24# This could be confined
25exec @pkglibexecdir@/exec-line-exec25exec ${SNAP}/@pkglibexecdir@/exec-line-exec
2626
27post-start exec @pkglibexecdir@/zg-report-app open27post-start exec ${SNAP}/@pkglibexecdir@/zg-report-app open
28post-stop script28post-stop script
29 @pkglibexecdir@/zg-report-app close29 ${SNAP}/@pkglibexecdir@/zg-report-app close
30 @pkglibexecdir@/cgroup-reap-all30 ${SNAP}/@pkglibexecdir@/cgroup-reap-all
3131
32 DEVELOPER_MODE=`gdbus call --system --dest com.canonical.PropertyService --object-path /com/canonical/PropertyService --method com.canonical.PropertyService.GetProperty adb`32 DEVELOPER_MODE=`gdbus call --system --dest com.canonical.PropertyService --object-path /com/canonical/PropertyService --method com.canonical.PropertyService.GetProperty adb`
33 if [ "$DEVELOPER_MODE" != "(true,)" ] ; then33 if [ "$DEVELOPER_MODE" != "(true,)" ] ; then
3434
=== modified file 'upstart-jobs/application-snap.conf.in'
--- upstart-jobs/application-snap.conf.in 2016-09-08 15:05:06 +0000
+++ upstart-jobs/application-snap.conf.in 2016-11-10 21:59:12 +0000
@@ -15,7 +15,6 @@
15env INSTANCE_ID=""15env INSTANCE_ID=""
1616
17env UBUNTU_APP_LAUNCH_ARCH="@ubuntu_app_launch_arch@"17env UBUNTU_APP_LAUNCH_ARCH="@ubuntu_app_launch_arch@"
18export UBUNTU_APP_LAUNCH_ARCH
1918
20# apparmor is taken care of by confine19# apparmor is taken care of by confine
21cgroup freezer20cgroup freezer
@@ -24,12 +23,12 @@
24oom score 10023oom score 100
2524
26# Remember, this is confined25# Remember, this is confined
27exec @pkglibexecdir@/exec-line-exec26exec ${SNAP}/@pkglibexecdir@/exec-line-exec
2827
29post-start exec @pkglibexecdir@/zg-report-app open28post-start exec ${SNAP}/@pkglibexecdir@/zg-report-app open
30post-stop script29post-stop script
31 @pkglibexecdir@/zg-report-app close30 ${SNAP}/@pkglibexecdir@/zg-report-app close
32 @pkglibexecdir@/cgroup-reap-all31 ${SNAP}/@pkglibexecdir@/cgroup-reap-all
3332
34 DEVELOPER_MODE=`gdbus call --system --dest com.canonical.PropertyService --object-path /com/canonical/PropertyService --method com.canonical.PropertyService.GetProperty adb`33 DEVELOPER_MODE=`gdbus call --system --dest com.canonical.PropertyService --object-path /com/canonical/PropertyService --method com.canonical.PropertyService.GetProperty adb`
35 if [ "$DEVELOPER_MODE" != "(true,)" ] ; then34 if [ "$DEVELOPER_MODE" != "(true,)" ] ; then
3635
=== modified file 'upstart-jobs/application.conf.in'
--- upstart-jobs/application.conf.in 2014-02-05 20:54:29 +0000
+++ upstart-jobs/application.conf.in 2016-11-10 21:59:12 +0000
@@ -14,4 +14,4 @@
14env APP_URIS14env APP_URIS
15export APP_URIS15export APP_URIS
1616
17exec @pkglibexecdir@/application-job17exec ${SNAP}/@pkglibexecdir@/application-job
1818
=== modified file 'upstart-jobs/untrusted-helper-type-end.conf.in'
--- upstart-jobs/untrusted-helper-type-end.conf.in 2014-01-22 17:35:10 +0000
+++ upstart-jobs/untrusted-helper-type-end.conf.in 2016-11-10 21:59:12 +0000
@@ -6,4 +6,4 @@
66
7emits untrusted-helper-end7emits untrusted-helper-end
88
9exec @pkglibexecdir@/untrusted-helper-type-end9exec ${SNAP}/@pkglibexecdir@/untrusted-helper-type-end
1010
=== modified file 'upstart-jobs/untrusted-helper.conf.in'
--- upstart-jobs/untrusted-helper.conf.in 2014-08-07 16:16:05 +0000
+++ upstart-jobs/untrusted-helper.conf.in 2016-11-10 21:59:12 +0000
@@ -12,7 +12,6 @@
12env APP_URIS12env APP_URIS
1313
14env UBUNTU_APP_LAUNCH_ARCH="@ubuntu_app_launch_arch@"14env UBUNTU_APP_LAUNCH_ARCH="@ubuntu_app_launch_arch@"
15export UBUNTU_APP_LAUNCH_ARCH
1615
17apparmor switch ${APP_ID}16apparmor switch ${APP_ID}
18cgroup freezer17cgroup freezer
@@ -20,8 +19,8 @@
2019
21# This is unconfined20# This is unconfined
22pre-start script21pre-start script
23 if [ -x "@pkglibexecdir@/${HELPER_TYPE}/exec-tool" ] ; then22 if [ -x "${SNAP}/@pkglibexecdir@/${HELPER_TYPE}/exec-tool" ] ; then
24 @pkglibexecdir@/${HELPER_TYPE}/exec-tool23 ${SNAP}/@pkglibexecdir@/${HELPER_TYPE}/exec-tool
25 else24 else
26 echo "Unable to find exec tool for ${HELPER_TYPE}"25 echo "Unable to find exec tool for ${HELPER_TYPE}"
27 exit -126 exit -1
@@ -29,6 +28,6 @@
29end script28end script
3029
31# Remember, this is confined30# Remember, this is confined
32exec @pkglibexecdir@/exec-line-exec31exec ${SNAP}/@pkglibexecdir@/exec-line-exec
3332
34post-stop exec @pkglibexecdir@/cgroup-reap-all33post-stop exec ${SNAP}/@pkglibexecdir@/cgroup-reap-all

Subscribers

People subscribed via source and target branches