diff --git a/docs/PORTABILITY_AND_STABILITY.md b/docs/PORTABILITY_AND_STABILITY.md index 7de60066e4..da545f7c01 100644 --- a/docs/PORTABILITY_AND_STABILITY.md +++ b/docs/PORTABILITY_AND_STABILITY.md @@ -71,8 +71,7 @@ Note that the promise of stability applies only after an interface has been part `emergency.target`, `poweroff.target`, `reboot.target`, - `halt.target`, - `runlevel[1-5].target`. + `halt.target`. We try to always preserve backward compatibility in programmatic interfaces and intentional breakage is never introduced. diff --git a/meson.build b/meson.build index e091631ca8..67c495155d 100644 --- a/meson.build +++ b/meson.build @@ -1597,6 +1597,7 @@ foreach tuple : [ ['backlight'], ['binfmt'], ['compat-mutable-uid-boundaries'], + ['compat-sysv-interfaces'], ['coredump'], ['efi'], ['environment-d'], @@ -3185,6 +3186,7 @@ foreach tuple : [ ['html pages', want_html], ['man page indices', want_man and have_lxml], ['compat-mutable-uid-boundaries'], + ['compat-sysv-interfaces'], ['utmp'], ['ldconfig'], ['adm group', get_option('adm-group')], diff --git a/meson_options.txt b/meson_options.txt index 93c264488c..4d13d2866d 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -52,6 +52,8 @@ option('initrd', type : 'boolean', description : 'install services for use when running systemd in initrd') option('compat-mutable-uid-boundaries', type : 'boolean', value : false, description : 'look at uid boundaries in /etc/login.defs for compatibility') +option('compat-sysv-interfaces', type : 'boolean', value : true, + description : 'keep legacy SysV interfaces for compatibility') option('quotaon-path', type : 'string', description : 'path to quotaon') option('quotacheck-path', type : 'string', description : 'path to quotacheck') diff --git a/units/meson.build b/units/meson.build index d64edec884..113a935c90 100644 --- a/units/meson.build +++ b/units/meson.build @@ -1,5 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later +runlevels = conf.get('ENABLE_COMPAT_SYSV_INTERFACES') == 1 + units = [ { 'file' : 'basic.target' }, { 'file' : 'blockdev@.target' }, @@ -46,7 +48,7 @@ units = [ { 'file' : 'getty@.service.in' }, { 'file' : 'graphical.target', - 'symlinks' : ['default.target'], + 'symlinks' : ['default.target'] + (runlevels ? ['runlevel5.target'] : []), }, { 'file' : 'halt.target' }, { @@ -139,7 +141,10 @@ units = [ 'conditions' : ['ENABLE_MACHINED'], }, { 'file' : 'modprobe@.service' }, - { 'file' : 'multi-user.target' }, + { + 'file' : 'multi-user.target', + 'symlinks' : runlevels ? ['runlevel2.target', 'runlevel3.target', 'runlevel4.target'] : [], + }, { 'file' : 'systemd-mute-console.socket', 'symlinks' : ['sockets.target.wants/'] @@ -152,7 +157,10 @@ units = [ { 'file' : 'nss-lookup.target' }, { 'file' : 'nss-user-lookup.target' }, { 'file' : 'paths.target' }, - { 'file' : 'poweroff.target' }, + { + 'file' : 'poweroff.target', + 'symlinks' : runlevels ? ['runlevel0.target'] : [], + }, { 'file' : 'printer.target' }, { 'file' : 'proc-sys-fs-binfmt_misc.automount', @@ -173,7 +181,7 @@ units = [ }, { 'file' : 'reboot.target', - 'symlinks' : ['ctrl-alt-del.target'], + 'symlinks' : ['ctrl-alt-del.target'] + (runlevels ? ['runlevel6.target'] : []), }, { 'file' : 'remote-cryptsetup.target', @@ -193,7 +201,10 @@ units = [ 'symlinks' : ['initrd-root-device.target.wants/'], }, { 'file' : 'rescue.service.in' }, - { 'file' : 'rescue.target' }, + { + 'file' : 'rescue.target', + 'symlinks' : runlevels ? ['runlevel1.target'] : [], + }, { 'file' : 'rpcbind.target' }, { 'file' : 'serial-getty@.service.in' }, { 'file' : 'shutdown.target' },