]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/shared/install.h
shared/install,systemctl,core: report offending file on installation error
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 17 Apr 2016 14:16:44 +0000 (10:16 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 19 Apr 2016 12:58:00 +0000 (08:58 -0400)
commitaf3d811352094f3f1304bdf8ba9cdd2b4b03b55c
treeed4ded67db03941683d54251bfa6805280128e7c
parent795ff6d5d827eb5743d9e37c4acaee4bdeff58b4
shared/install,systemctl,core: report offending file on installation error

Fixes #2191:

$ systemctl --root=/ enable sddm
Created symlink /etc/systemd/system/display-manager.service, pointing to /usr/lib/systemd/system/sddm.service.
$ sudo build/systemctl --root=/ enable gdm
Failed to enable unit, file /etc/systemd/system/display-manager.service already exists and is a symlink to /usr/lib/systemd/system/sddm.service.
$ sudo build/systemctl --root= enable sddm
$ sudo build/systemctl --root= enable gdm
Failed to enable unit: File /etc/systemd/system/display-manager.service already exists and is a symlink to /usr/lib/systemd/system/sddm.service.

(I tried a few different approaches to pass the error information back to the
caller. Adding a new parameter to hold the error results in a gigantic patch
and a lot of hassle to pass the args arounds. Adding this information to the
changes array is straightforward and can be more easily extended in the
future.)

In case local installation is performed, the full set of errors can be reported
and we do that. When running over dbus, only the first error is reported.
src/core/dbus-manager.c
src/shared/bus-util.c
src/shared/install.c
src/shared/install.h
src/systemctl/systemctl.c