Merge lp:~xnox/upstart/lp1433013 into lp:upstart

Proposed by Dimitri John Ledkov
Status: Merged
Merged at revision: 1667
Proposed branch: lp:~xnox/upstart/lp1433013
Merge into: lp:upstart
Diff against target: 255 lines (+83/-2)
4 files modified
dbus/Makefile.am (+1/-0)
dbus/org.freedesktop.DBus.xml (+9/-0)
init/Makefile.am (+33/-0)
init/control.c (+40/-2)
To merge this branch: bzr merge lp:~xnox/upstart/lp1433013
Reviewer Review Type Date Requested Status
Marco Trevisan (Treviño) (community) Approve
Upstart Reviewers Pending
Review via email: mp+259317@code.launchpad.net

Description of the change

This resolves the nasty https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/1433013

To test in Unity, check that environment variables are sane in the terminal started from the left launcher, application lense, and Alt-F2.

In principle, variables that are set with initctl set-env --global should propagate to the DBus activation environment and hence to processes that are dbus activated there after - i.e. all the unity shell components.

To post a comment you must log in.
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Hey, any news on this?

Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

It looks to fix at least one issue with GTK_MODULES not being properly set for dbus activation runner when loading unity-gtk-module.conf, so it's nice for me.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'dbus/Makefile.am'
--- dbus/Makefile.am 2009-07-02 17:31:25 +0000
+++ dbus/Makefile.am 2015-05-16 19:16:03 +0000
@@ -7,6 +7,7 @@
77
8EXTRA_DIST = \8EXTRA_DIST = \
9 upstart.h \9 upstart.h \
10 org.freedesktop.DBus.xml \
10 com.ubuntu.Upstart.xml \11 com.ubuntu.Upstart.xml \
11 com.ubuntu.Upstart.Job.xml \12 com.ubuntu.Upstart.Job.xml \
12 com.ubuntu.Upstart.Instance.xml13 com.ubuntu.Upstart.Instance.xml
1314
=== added file 'dbus/org.freedesktop.DBus.xml'
--- dbus/org.freedesktop.DBus.xml 1970-01-01 00:00:00 +0000
+++ dbus/org.freedesktop.DBus.xml 2015-05-16 19:16:03 +0000
@@ -0,0 +1,9 @@
1<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
2"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
3<node>
4 <interface name="org.freedesktop.DBus">
5 <method name="UpdateActivationEnvironment">
6 <arg name="vars" direction="in" type="a{ss}"/>
7 </method>
8 </interface>
9</node>
010
=== modified file 'init/Makefile.am'
--- init/Makefile.am 2014-07-11 19:18:09 +0000
+++ init/Makefile.am 2015-05-16 19:16:03 +0000
@@ -64,6 +64,7 @@
64 errors.h \64 errors.h \
65 apparmor.c apparmor.h65 apparmor.c apparmor.h
66nodist_init_SOURCES = \66nodist_init_SOURCES = \
67 $(org_freedesktop_DBus_OUTPUTS) \
67 $(com_ubuntu_Upstart_OUTPUTS) \68 $(com_ubuntu_Upstart_OUTPUTS) \
68 $(com_ubuntu_Upstart_Job_OUTPUTS) \69 $(com_ubuntu_Upstart_Job_OUTPUTS) \
69 $(com_ubuntu_Upstart_Instance_OUTPUTS)70 $(com_ubuntu_Upstart_Instance_OUTPUTS)
@@ -125,14 +126,30 @@
125 --default-interface=com.ubuntu.Upstart0_6.Instance \126 --default-interface=com.ubuntu.Upstart0_6.Instance \
126 --output=$@ $<127 --output=$@ $<
127128
129org_freedesktop_DBus_OUTPUTS = \
130 org.freedesktop.DBus.c \
131 org.freedesktop.DBus.h
132
133org_freedesktop_DBus_XML = \
134 ../dbus/org.freedesktop.DBus.xml
135
136$(org_freedesktop_DBus_OUTPUTS): $(org_freedesktop_DBus_XML)
137 $(AM_V_GEN)$(NIH_DBUS_TOOL) \
138 --package=$(PACKAGE) \
139 --mode=proxy --prefix=control_dbus \
140 --default-interface=org.freedesktop.DBus \
141 --output=$@ $<
142
128# These have to be built sources because we can't compile object files143# These have to be built sources because we can't compile object files
129# without the header file existing first144# without the header file existing first
130BUILT_SOURCES = \145BUILT_SOURCES = \
146 $(org_freedesktop_DBus_OUTPUTS) \
131 $(com_ubuntu_Upstart_OUTPUTS) \147 $(com_ubuntu_Upstart_OUTPUTS) \
132 $(com_ubuntu_Upstart_Job_OUTPUTS) \148 $(com_ubuntu_Upstart_Job_OUTPUTS) \
133 $(com_ubuntu_Upstart_Instance_OUTPUTS)149 $(com_ubuntu_Upstart_Instance_OUTPUTS)
134150
135CLEANFILES = \151CLEANFILES = \
152 $(org_freedesktop_DBus_OUTPUTS) \
136 $(com_ubuntu_Upstart_OUTPUTS) \153 $(com_ubuntu_Upstart_OUTPUTS) \
137 $(com_ubuntu_Upstart_Job_OUTPUTS) \154 $(com_ubuntu_Upstart_Job_OUTPUTS) \
138 $(com_ubuntu_Upstart_Instance_OUTPUTS)155 $(com_ubuntu_Upstart_Instance_OUTPUTS)
@@ -231,6 +248,7 @@
231 job_class.o job_process.o job.o event.o event_operator.o blocked.o \248 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
232 parse_job.o parse_conf.o conf.o control.o quiesce.o \249 parse_job.o parse_conf.o conf.o control.o quiesce.o \
233 session.o log.o state.o xdg.o apparmor.o \250 session.o log.o state.o xdg.o apparmor.o \
251 org.freedesktop.DBus.o \
234 com.ubuntu.Upstart.o \252 com.ubuntu.Upstart.o \
235 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \253 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
236 $(top_builddir)/test/libtest_util_common.a \254 $(top_builddir)/test/libtest_util_common.a \
@@ -249,6 +267,7 @@
249 job_class.o job_process.o job.o event.o event_operator.o blocked.o \267 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
250 parse_job.o parse_conf.o conf.o control.o quiesce.o \268 parse_job.o parse_conf.o conf.o control.o quiesce.o \
251 session.o log.o state.o xdg.o apparmor.o \269 session.o log.o state.o xdg.o apparmor.o \
270 org.freedesktop.DBus.o \
252 com.ubuntu.Upstart.o \271 com.ubuntu.Upstart.o \
253 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \272 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
254 $(NIH_LIBS) \273 $(NIH_LIBS) \
@@ -266,6 +285,7 @@
266 job_class.o job_process.o job.o event.o event_operator.o blocked.o \285 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
267 parse_job.o parse_conf.o conf.o control.o quiesce.o \286 parse_job.o parse_conf.o conf.o control.o quiesce.o \
268 session.o log.o state.o xdg.o apparmor.o \287 session.o log.o state.o xdg.o apparmor.o \
288 org.freedesktop.DBus.o \
269 com.ubuntu.Upstart.o \289 com.ubuntu.Upstart.o \
270 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \290 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
271 $(top_builddir)/test/libtest_util_common.a \291 $(top_builddir)/test/libtest_util_common.a \
@@ -284,6 +304,7 @@
284 job_class.o job_process.o job.o event.o event_operator.o blocked.o \304 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
285 parse_job.o parse_conf.o conf.o control.o quiesce.o \305 parse_job.o parse_conf.o conf.o control.o quiesce.o \
286 session.o log.o state.o xdg.o apparmor.o \306 session.o log.o state.o xdg.o apparmor.o \
307 org.freedesktop.DBus.o \
287 com.ubuntu.Upstart.o \308 com.ubuntu.Upstart.o \
288 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \309 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
289 $(top_builddir)/test/libtest_util_common.a \310 $(top_builddir)/test/libtest_util_common.a \
@@ -302,6 +323,7 @@
302 job_class.o job_process.o job.o event.o event_operator.o blocked.o \323 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
303 parse_job.o parse_conf.o conf.o control.o quiesce.o \324 parse_job.o parse_conf.o conf.o control.o quiesce.o \
304 session.o log.o state.o xdg.o apparmor.o \325 session.o log.o state.o xdg.o apparmor.o \
326 org.freedesktop.DBus.o \
305 com.ubuntu.Upstart.o \327 com.ubuntu.Upstart.o \
306 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \328 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
307 $(top_builddir)/test/libtest_util_common.a \329 $(top_builddir)/test/libtest_util_common.a \
@@ -320,6 +342,7 @@
320 job_class.o job_process.o job.o event.o event_operator.o blocked.o \342 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
321 parse_job.o parse_conf.o conf.o control.o quiesce.o \343 parse_job.o parse_conf.o conf.o control.o quiesce.o \
322 session.o log.o state.o xdg.o apparmor.o \344 session.o log.o state.o xdg.o apparmor.o \
345 org.freedesktop.DBus.o \
323 com.ubuntu.Upstart.o \346 com.ubuntu.Upstart.o \
324 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \347 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
325 $(top_builddir)/test/libtest_util_common.a \348 $(top_builddir)/test/libtest_util_common.a \
@@ -338,6 +361,7 @@
338 job_class.o job_process.o job.o event.o event_operator.o blocked.o \361 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
339 parse_job.o parse_conf.o conf.o control.o quiesce.o \362 parse_job.o parse_conf.o conf.o control.o quiesce.o \
340 session.o log.o state.o xdg.o apparmor.o \363 session.o log.o state.o xdg.o apparmor.o \
364 org.freedesktop.DBus.o \
341 com.ubuntu.Upstart.o \365 com.ubuntu.Upstart.o \
342 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \366 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
343 $(NIH_LIBS) \367 $(NIH_LIBS) \
@@ -355,6 +379,7 @@
355 job_class.o job_process.o job.o event.o event_operator.o blocked.o \379 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
356 parse_job.o parse_conf.o conf.o control.o quiesce.o \380 parse_job.o parse_conf.o conf.o control.o quiesce.o \
357 session.o log.o state.o xdg.o apparmor.o \381 session.o log.o state.o xdg.o apparmor.o \
382 org.freedesktop.DBus.o \
358 com.ubuntu.Upstart.o \383 com.ubuntu.Upstart.o \
359 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \384 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
360 $(top_builddir)/test/libtest_util_common.a \385 $(top_builddir)/test/libtest_util_common.a \
@@ -373,6 +398,7 @@
373 job_class.o job_process.o job.o event.o event_operator.o blocked.o \398 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
374 parse_job.o parse_conf.o conf.o control.o quiesce.o \399 parse_job.o parse_conf.o conf.o control.o quiesce.o \
375 session.o log.o state.o xdg.o apparmor.o \400 session.o log.o state.o xdg.o apparmor.o \
401 org.freedesktop.DBus.o \
376 com.ubuntu.Upstart.o \402 com.ubuntu.Upstart.o \
377 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \403 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
378 $(NIH_LIBS) \404 $(NIH_LIBS) \
@@ -390,6 +416,7 @@
390 job_class.o job_process.o job.o event.o event_operator.o blocked.o \416 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
391 parse_job.o parse_conf.o conf.o control.o quiesce.o \417 parse_job.o parse_conf.o conf.o control.o quiesce.o \
392 session.o log.o state.o xdg.o apparmor.o \418 session.o log.o state.o xdg.o apparmor.o \
419 org.freedesktop.DBus.o \
393 com.ubuntu.Upstart.o \420 com.ubuntu.Upstart.o \
394 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \421 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
395 $(top_builddir)/test/libtest_util_common.a \422 $(top_builddir)/test/libtest_util_common.a \
@@ -408,6 +435,7 @@
408 job_class.o job_process.o job.o event.o event_operator.o blocked.o \435 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
409 parse_job.o parse_conf.o conf.o control.o quiesce.o \436 parse_job.o parse_conf.o conf.o control.o quiesce.o \
410 session.o log.o state.o xdg.o apparmor.o \437 session.o log.o state.o xdg.o apparmor.o \
438 org.freedesktop.DBus.o \
411 com.ubuntu.Upstart.o \439 com.ubuntu.Upstart.o \
412 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \440 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
413 $(NIH_LIBS) \441 $(NIH_LIBS) \
@@ -430,6 +458,7 @@
430 job_class.o job_process.o job.o event.o event_operator.o blocked.o \458 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
431 parse_job.o parse_conf.o conf.o control.o quiesce.o \459 parse_job.o parse_conf.o conf.o control.o quiesce.o \
432 session.o log.o state.o xdg.o apparmor.o \460 session.o log.o state.o xdg.o apparmor.o \
461 org.freedesktop.DBus.o \
433 com.ubuntu.Upstart.o \462 com.ubuntu.Upstart.o \
434 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \463 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
435 $(top_builddir)/test/libtest_util_common.a \464 $(top_builddir)/test/libtest_util_common.a \
@@ -448,6 +477,7 @@
448 job_class.o job_process.o job.o event.o event_operator.o blocked.o \477 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
449 parse_job.o parse_conf.o control.o quiesce.o \478 parse_job.o parse_conf.o control.o quiesce.o \
450 session.o log.o state.o xdg.o apparmor.o \479 session.o log.o state.o xdg.o apparmor.o \
480 org.freedesktop.DBus.o \
451 com.ubuntu.Upstart.o \481 com.ubuntu.Upstart.o \
452 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \482 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
453 $(NIH_LIBS) \483 $(NIH_LIBS) \
@@ -479,6 +509,7 @@
479 job_class.o job_process.o job.o event.o event_operator.o blocked.o \509 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
480 parse_job.o parse_conf.o conf.o control.o quiesce.o \510 parse_job.o parse_conf.o conf.o control.o quiesce.o \
481 session.o log.o state.o xdg.o apparmor.o cgroup.o \511 session.o log.o state.o xdg.o apparmor.o cgroup.o \
512 org.freedesktop.DBus.o \
482 com.ubuntu.Upstart.o \513 com.ubuntu.Upstart.o \
483 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \514 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
484 $(top_builddir)/test/libtest_util_common.a \515 $(top_builddir)/test/libtest_util_common.a \
@@ -495,6 +526,7 @@
495 job_class.o job_process.o job.o event.o event_operator.o blocked.o \526 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
496 parse_job.o parse_conf.o conf.o control.o quiesce.o \527 parse_job.o parse_conf.o conf.o control.o quiesce.o \
497 session.o log.o state.o xdg.o apparmor.o \528 session.o log.o state.o xdg.o apparmor.o \
529 org.freedesktop.DBus.o \
498 com.ubuntu.Upstart.o \530 com.ubuntu.Upstart.o \
499 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \531 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
500 $(NIH_LIBS) \532 $(NIH_LIBS) \
@@ -512,6 +544,7 @@
512 job_class.o job_process.o job.o event.o event_operator.o blocked.o \544 job_class.o job_process.o job.o event.o event_operator.o blocked.o \
513 parse_job.o parse_conf.o conf.o control.o quiesce.o \545 parse_job.o parse_conf.o conf.o control.o quiesce.o \
514 session.o log.o state.o xdg.o apparmor.o \546 session.o log.o state.o xdg.o apparmor.o \
547 org.freedesktop.DBus.o \
515 com.ubuntu.Upstart.o \548 com.ubuntu.Upstart.o \
516 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \549 com.ubuntu.Upstart.Job.o com.ubuntu.Upstart.Instance.o \
517 $(top_builddir)/test/libtest_util_common.a \550 $(top_builddir)/test/libtest_util_common.a \
518551
=== modified file 'init/control.c'
--- init/control.c 2014-08-14 11:19:43 +0000
+++ init/control.c 2015-05-16 19:16:03 +0000
@@ -62,6 +62,7 @@
62#include "xdg.h"62#include "xdg.h"
6363
64#include "com.ubuntu.Upstart.h"64#include "com.ubuntu.Upstart.h"
65#include "org.freedesktop.DBus.h"
6566
66#ifdef ENABLE_CGROUPS67#ifdef ENABLE_CGROUPS
67#include "cgroup.h"68#include "cgroup.h"
@@ -1421,8 +1422,45 @@
1421 nih_assert (job->env);1422 nih_assert (job->env);
14221423
1423 NIH_MUST (environ_add (&job->env, job, NULL, replace, envvar));1424 NIH_MUST (environ_add (&job->env, job, NULL, replace, envvar));
1424 } else if (job_class_environment_set (envvar, replace) < 0) {1425 } else {
1425 nih_return_no_memory_error (-1);1426 if (job_class_environment_set (envvar, replace) < 0) {
1427 nih_return_no_memory_error (-1);
1428 }
1429 if (job_name == NULL && user_mode && control_bus ) {
1430 ControlDbusUpdateActivationEnvironmentVarsElement **dbus_vars = NULL;
1431 NihDBusProxy *dbus_proxy = NULL;
1432 char ** split_vars = NULL;
1433 dbus_vars = NIH_MUST (nih_alloc (NULL, sizeof (ControlDbusUpdateActivationEnvironmentVarsElement *) * 2));
1434 dbus_vars[0] = NIH_MUST (nih_new (dbus_vars, ControlDbusUpdateActivationEnvironmentVarsElement));
1435 dbus_vars[1] = NULL;
1436 split_vars = NIH_MUST (nih_str_split (dbus_vars[0], envvar, "=", FALSE));
1437 if (*split_vars && *split_vars[0]) {
1438 dbus_vars[0]->item0 = *split_vars;
1439 } else {
1440 dbus_vars[0]->item0 = nih_strdup (dbus_vars[0], "");
1441 }
1442 if (*(split_vars+1) && *(split_vars+1)[0]) {
1443 dbus_vars[0]->item1 = *(split_vars+1);
1444 } else {
1445 dbus_vars[0]->item1 = nih_strdup (dbus_vars[0], "");
1446 }
1447
1448 dbus_proxy = NIH_SHOULD (nih_dbus_proxy_new (dbus_vars, control_bus, "org.freedesktop.DBus", "/", NULL, NULL));
1449 if (! dbus_proxy) {
1450 nih_warn (_("Failed to get dbus_proxy"));
1451 } else {
1452 if (control_dbus_update_activation_environment_sync (dbus_vars, dbus_proxy, dbus_vars) != 0) {
1453 NihDBusError *dbus_err;
1454 dbus_err = (NihDBusError *)nih_error_get ();
1455 nih_error ("%s", dbus_err->message);
1456 nih_free (dbus_err);
1457 nih_warn ("dbus_vars[0] item0: %s", dbus_vars[0]->item0);
1458 nih_warn ("dbus_vars[0] item1: %s", dbus_vars[0]->item1);
1459 nih_warn (_("Failed to update DBus activation environment"));
1460 }
1461 }
1462 nih_free(dbus_vars);
1463 }
1426 }1464 }
1427 }1465 }
14281466

Subscribers

People subscribed via source and target branches