sysv-generator: make sysv deprecation message a bit "louder"

Let's add a catalog entry, make the log record structured, and most
importantly, let's add warning emojis.

Just to underline that this stuff should really go away.
This commit is contained in:
Lennart Poettering 2023-06-27 18:46:28 +02:00
parent fba84e121b
commit f4d4ca6e2b
3 changed files with 35 additions and 3 deletions

View file

@ -564,3 +564,23 @@ the OS.
@TRIMMED_BYTES@ of memory were returned to the OS, which took @TRIMMED_USEC@
micro-seconds (μs).
-- a8fa8dacdb1d443e9503b8be367a6adb
Subject: SysV Service Found
Defined-By: systemd
Support: %SUPPORT_URL%
A System V service script @SYSVSCRIPT@ has been found on the system that lacks
a native systemd unit. An automatic unit file @UNIT@ has been generated for
compatibility.
Note that these automatically generated compatibility unit files cannot replace
native unit files as they generally slow down the system (by creating
unnecessary, additional synchronization points), are less robust (as SysV services
cannot properly be life-cycle tracked or automatically restarted) and less
secure (as no sandboxing restrictions can be enforced).
Compatibility support for System V services in systemd is deprecated. Please
make sure to update the package in question to provide proper, native systemd
unit files. Contact vendor if necesssary. Compatibility support for System V
services is deprecated and will be removed soon.

View file

@ -198,6 +198,9 @@ _SD_BEGIN_DECLARATIONS;
#define SD_MESSAGE_MEMORY_TRIM SD_ID128_MAKE(f9,b0,be,46,5a,d5,40,d0,85,0a,d3,21,72,d5,7c,21)
#define SD_MESSAGE_MEMORY_TRIM_STR SD_ID128_MAKE_STR(f9,b0,be,46,5a,d5,40,d0,85,0a,d3,21,72,d5,7c,21)
#define SD_MESSAGE_SYSV_GENERATOR_DEPRECATED SD_ID128_MAKE(a8,fa,8d,ac,db,1d,44,3e,95,03,b8,be,36,7a,6a,db)
#define SD_MESSAGE_SYSV_GENERATOR_DEPRECATED_STR SD_ID128_MAKE_STR(a8,fa,8d,ac,db,1d,44,3e,95,03,b8,be,36,7a,6a,db)
_SD_END_DECLARATIONS;
#endif

View file

@ -4,6 +4,8 @@
#include <stdio.h>
#include <unistd.h>
#include "sd-messages.h"
#include "alloc-util.h"
#include "dirent-util.h"
#include "exit-status.h"
@ -758,9 +760,16 @@ static int enumerate_sysv(const LookupPaths *lp, Hashmap *all_services) {
if (!fpath)
return log_oom();
log_warning("SysV service '%s' lacks a native systemd unit file. "
"Automatically generating a unit file for compatibility. "
"Please update package to include a native systemd unit file, in order to make it more safe and robust.", fpath);
log_struct(LOG_WARNING,
LOG_MESSAGE("SysV service '%s' lacks a native systemd unit file. "
"%s Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it safe, robust and future-proof. "
"%s This compatibility logic is deprecated, expect removal soon. %s",
fpath,
special_glyph(SPECIAL_GLYPH_RECYCLING),
special_glyph(SPECIAL_GLYPH_WARNING_SIGN), special_glyph(SPECIAL_GLYPH_WARNING_SIGN)),
"MESSAGE_ID=" SD_MESSAGE_SYSV_GENERATOR_DEPRECATED_STR,
"SYSVSCRIPT=%s", fpath,
"UNIT=%s", name);
service = new(SysvStub, 1);
if (!service)