]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sysv-generator: make sysv deprecation message a bit "louder"
authorLennart Poettering <lennart@poettering.net>
Tue, 27 Jun 2023 16:46:28 +0000 (18:46 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 27 Jun 2023 21:21:03 +0000 (23:21 +0200)
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.

catalog/systemd.catalog.in
src/systemd/sd-messages.h
src/sysv-generator/sysv-generator.c

index 913d4987ac712bc7aa6a51a3d920c9f887c7ab3c..8ca0b4d227c6c28ac96b28060cae3c60a940b1ea 100644 (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.
index 39f56240fe92e40284d8f893a239be075f3deeaa..3bb83ecb4ee4880c71f1db357d88f97587ca1467 100644 (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
index 42aa123de6b586ddc1c06bda6583d7fa37ac1303..ea5f47321c214f01a9fdba41521e45446fb6febb 100644 (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)