mirror of
https://github.com/systemd/systemd.git
synced 2025-01-26 14:04:03 +03:00
core: ensure LSB Provides are handled correctly
Let's say you have two initscripts, A and B: A contains in its LSB header: Required-Start: C and B contains in its LSB header: Provides: C When systemd is parsing /etc/rc.d/, depending on the file order, you can end up with either: - B is parsed first. An unit "C.service" will be "created" and will be added as additional name to B.service, with unit_add_name. No bug. - A is parsed first. An unit "C.service" is created for the "Required-Start" dependency (it will have no file attached, since nothing provides this dependency yet). Then B is parsed and when trying to handle "Provides: C", unit_add_name is called but will fail, because "C.service" already exists in manager->units. Therefore, a merge should occur for that case.
This commit is contained in:
parent
8cc3f8c0bc
commit
ce2c226537
@ -762,7 +762,7 @@ static int service_load_sysv_path(Service *s, const char *path) {
|
||||
continue;
|
||||
|
||||
if (unit_name_to_type(m) == UNIT_SERVICE)
|
||||
r = unit_add_name(u, m);
|
||||
r = unit_merge_by_name(u, m);
|
||||
else
|
||||
/* NB: SysV targets
|
||||
* which are provided
|
||||
|
Loading…
x
Reference in New Issue
Block a user