diff --git a/src/shared/install.c b/src/shared/install.c index bc15b0e9d2..5dbc267eb8 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1980,6 +1980,13 @@ static int install_info_apply( bool force = file_flags & UNIT_FILE_FORCE; + r = install_info_symlink_link(info, lp, config_path, force, changes, n_changes); + /* Do not count links to the unit file towards the "carries_install_info" count */ + if (r < 0) + /* If linking of the file failed, do not try to create other symlinks, + * because they might would pointing to a non-existent or wrong unit. */ + return r; + r = install_info_symlink_alias(scope, info, lp, config_path, force, changes, n_changes); q = install_info_symlink_wants(scope, file_flags, info, lp, config_path, info->wanted_by, ".wants/", changes, n_changes); @@ -1990,11 +1997,6 @@ static int install_info_apply( if (r == 0) r = q; - q = install_info_symlink_link(info, lp, config_path, force, changes, n_changes); - /* Do not count links to the unit file towards the "carries_install_info" count */ - if (r == 0 && q < 0) - r = q; - return r; } diff --git a/test/test-systemctl-enable.sh b/test/test-systemctl-enable.sh index 3aa61222a8..c1fb9626ab 100644 --- a/test/test-systemctl-enable.sh +++ b/test/test-systemctl-enable.sh @@ -173,12 +173,9 @@ islink "$root/etc/systemd/system/link1.path" "/link1.path" islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" : -------enable already linked different path----------------- -# FIXME -# "$systemctl" --root="$root" enable '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } -# test -h "$root/etc/systemd/system/link1.path" -# readlink "$root/etc/systemd/system/link1.path" -# test -h "$root/etc/systemd/system/paths.target.wants/link1.path" -# readlink "$root/etc/systemd/system/paths.target.wants/link1.path" +"$systemctl" --root="$root" enable '/subdir/link1.path' && { echo "Expected failure" >&2; exit 1; } +islink "$root/etc/systemd/system/link1.path" "/link1.path" +islink "$root/etc/systemd/system/paths.target.wants/link1.path" "/link1.path" : -------enable bad suffix------------------------------------ cp "$root/link1.path" "$root/subdir/link1.suffix"