systemctl: warn if user enables unit with no installation instructions
This commit is contained in:
parent
2cccbca4fd
commit
560d8f2381
2
TODO
2
TODO
|
@ -36,8 +36,6 @@
|
|||
|
||||
* if a service fails too often, make the service enter failed mode, and the socket, too.
|
||||
|
||||
* systemctl enable - warn about empty [Install] section
|
||||
|
||||
* bash completion a la gdbus
|
||||
|
||||
* systemctl list-jobs - show dependencies
|
||||
|
|
|
@ -3227,6 +3227,7 @@ typedef struct {
|
|||
|
||||
static Hashmap *will_install = NULL, *have_installed = NULL;
|
||||
static Set *remove_symlinks_to = NULL;
|
||||
static unsigned n_symlinks = 0;
|
||||
|
||||
static void install_info_free(InstallInfo *i) {
|
||||
assert(i);
|
||||
|
@ -3759,6 +3760,9 @@ static int install_info_apply(const char *verb, LookupPaths *paths, InstallInfo
|
|||
return r;
|
||||
}
|
||||
|
||||
n_symlinks += strv_length(i->aliases);
|
||||
n_symlinks += strv_length(i->wanted_by);
|
||||
|
||||
fclose(f);
|
||||
|
||||
if ((r = install_info_symlink_alias(verb, i, config_path)) != 0)
|
||||
|
@ -3859,19 +3863,24 @@ static int enable_unit(DBusConnection *bus, char **args, unsigned n) {
|
|||
|
||||
if (streq(verb, "is-enabled"))
|
||||
r = r > 0 ? 0 : -ENOENT;
|
||||
else if (bus &&
|
||||
/* Don't try to reload anything if the user asked us to not do this */
|
||||
!arg_no_reload &&
|
||||
/* Don't try to reload anything when updating a unit globally */
|
||||
!arg_global &&
|
||||
/* Don't try to reload anything if we are called for system changes but the system wasn't booted with systemd */
|
||||
(arg_session || sd_booted() > 0) &&
|
||||
/* Don't try to reload anything if we are running in a chroot environment */
|
||||
(arg_session || running_in_chroot() <= 0) ) {
|
||||
int q;
|
||||
else {
|
||||
if (n_symlinks <= 0)
|
||||
log_warning("Unit files contain no applicable installation information. Ignoring.");
|
||||
|
||||
if ((q = daemon_reload(bus, args, n)) < 0)
|
||||
r = q;
|
||||
if (bus &&
|
||||
/* Don't try to reload anything if the user asked us to not do this */
|
||||
!arg_no_reload &&
|
||||
/* Don't try to reload anything when updating a unit globally */
|
||||
!arg_global &&
|
||||
/* Don't try to reload anything if we are called for system changes but the system wasn't booted with systemd */
|
||||
(arg_session || sd_booted() > 0) &&
|
||||
/* Don't try to reload anything if we are running in a chroot environment */
|
||||
(arg_session || running_in_chroot() <= 0) ) {
|
||||
int q;
|
||||
|
||||
if ((q = daemon_reload(bus, args, n)) < 0)
|
||||
r = q;
|
||||
}
|
||||
}
|
||||
|
||||
finish:
|
||||
|
|
Loading…
Reference in New Issue