187 lines
8.7 KiB
Diff
187 lines
8.7 KiB
Diff
From 3e49abe2fbae626c61af73d163f6e74be54fed2b Mon Sep 17 00:00:00 2001
|
|
From: Franck Bui <fbui@suse.com>
|
|
Date: Wed, 30 Sep 2020 21:20:32 +0200
|
|
Subject: [PATCH 1007/1007] sysv: restore support for halt.local
|
|
|
|
This patch basically reverts the following commits:
|
|
|
|
- commit 44508946534eee032927c263b79464832656dd6e.
|
|
"Drop support for /usr/sbin/halt.local"
|
|
|
|
- commit c0d11245d2bdcf2a4333c3d49c973d83dfbe3791.
|
|
"Drop no longer needed halt-local.service.in"
|
|
|
|
The paths of the scripts in man/systemd-rc-local-generator.xml have been
|
|
changed to match those used by SUSE.
|
|
|
|
The use of halt.local is now deprecated and its usage is logged at notice
|
|
level.
|
|
---
|
|
docs/DISTRO_PORTING.md | 1 +
|
|
man/custom-entities.ent.in | 1 +
|
|
man/systemd-rc-local-generator.xml | 17 +++++++++++++---
|
|
meson.build | 2 ++
|
|
meson_options.txt | 2 ++
|
|
src/rc-local-generator/rc-local-generator.c | 8 ++++++++
|
|
units/halt-local.service.in | 22 +++++++++++++++++++++
|
|
units/meson.build | 1 +
|
|
8 files changed, 51 insertions(+), 3 deletions(-)
|
|
create mode 100644 units/halt-local.service.in
|
|
|
|
diff --git a/docs/DISTRO_PORTING.md b/docs/DISTRO_PORTING.md
|
|
index 2e4782f401..8c2af4f82f 100644
|
|
--- a/docs/DISTRO_PORTING.md
|
|
+++ b/docs/DISTRO_PORTING.md
|
|
@@ -17,6 +17,7 @@ distribution:
|
|
* `-Dsysvinit-path=`
|
|
* `-Dsysvrcnd-path=`
|
|
* `-Drc-local=`
|
|
+ * `-Dhalt-local=`
|
|
* `-Dloadkeys-path=`
|
|
* `-Dsetfont-path=`
|
|
* `-Dtty-gid=`
|
|
diff --git a/man/custom-entities.ent.in b/man/custom-entities.ent.in
|
|
index 0e9a1b84e3..8da038c991 100644
|
|
--- a/man/custom-entities.ent.in
|
|
+++ b/man/custom-entities.ent.in
|
|
@@ -11,6 +11,7 @@
|
|
<!ENTITY KILL_USER_PROCESSES "{{ 'yes' if KILL_USER_PROCESSES else 'no' }}">
|
|
<!ENTITY DEBUGTTY "{{DEBUGTTY}}">
|
|
<!ENTITY RC_LOCAL_PATH "{{RC_LOCAL_PATH}}">
|
|
+<!ENTITY RC_LOCAL_SCRIPT_PATH_STOP "{{RC_LOCAL_SCRIPT_PATH_STOP}}">
|
|
<!ENTITY HIGH_RLIMIT_NOFILE "{{HIGH_RLIMIT_NOFILE}}">
|
|
<!ENTITY DEFAULT_DNSSEC_MODE "{{DEFAULT_DNSSEC_MODE_STR}}">
|
|
<!ENTITY DEFAULT_DNS_OVER_TLS_MODE "{{DEFAULT_DNS_OVER_TLS_MODE_STR}}">
|
|
diff --git a/man/systemd-rc-local-generator.xml b/man/systemd-rc-local-generator.xml
|
|
index f0e38ead47..39c1fc9340 100644
|
|
--- a/man/systemd-rc-local-generator.xml
|
|
+++ b/man/systemd-rc-local-generator.xml
|
|
@@ -20,7 +20,7 @@
|
|
<refnamediv>
|
|
<refname>systemd-rc-local-generator</refname>
|
|
<refname>rc-local.service</refname>
|
|
- <refpurpose>Compatibility generator and service to start <filename>&RC_LOCAL_PATH;</filename> during boot</refpurpose>
|
|
+ <refpurpose>Compatibility generator and service to start <filename>&RC_LOCAL_PATH;</filename> and <filename>&RC_LOCAL_SCRIPT_PATH_STOP;</filename> during boot and shutdown</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
@@ -53,11 +53,22 @@ Wants=network-online.target
|
|
After=network-online.target
|
|
</programlisting>
|
|
|
|
- <para>Support for <filename>&RC_LOCAL_PATH;</filename> is provided for compatibility with specific System
|
|
- V systems only. However, it is strongly recommended to avoid making use of this script today, and instead
|
|
+ <para><filename>systemd-rc-local-generator</filename> also checks whether
|
|
+ <filename>&RC_LOCAL_SCRIPT_PATH_STOP;</filename> exists and is executable, and if it is pulls the
|
|
+ <filename>halt-local.service</filename> unit into the shutdown process. This unit is responsible for
|
|
+ running this script during later shutdown.</para>
|
|
+
|
|
+ <para>Support for <filename>&RC_LOCAL_PATH;</filename> and
|
|
+ <filename>&RC_LOCAL_SCRIPT_PATH_STOP;</filename> is provided for compatibility with specific System V
|
|
+ systems only. However, it is strongly recommended to avoid making use of this script today, and instead
|
|
provide proper unit files with appropriate dependencies for any scripts to run during the boot process.
|
|
Note that the path to the script is set at compile time and varies between distributions.</para>
|
|
|
|
+ <para>Please note that the support for <filename>&RC_LOCAL_SCRIPT_PATH_STOP;</filename> will be removed in
|
|
+ the future. It is recommended to use the use the mechanism described in
|
|
+ <citerefentry><refentrytitle>systemd-shutdown</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
|
+ instead.</para>
|
|
+
|
|
<para><filename>systemd-rc-local-generator</filename> implements
|
|
<citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
|
|
</refsect1>
|
|
diff --git a/meson.build b/meson.build
|
|
index 511024f28e..09f90c8bcf 100644
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -227,6 +227,7 @@ conf.set_quoted('PREFIX', prefixdir)
|
|
conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
|
|
conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
|
|
conf.set_quoted('RC_LOCAL_PATH', get_option('rc-local'))
|
|
+conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
|
|
conf.set_quoted('ROOTBINDIR', rootbindir)
|
|
conf.set_quoted('ROOTLIBDIR', rootlibdir)
|
|
conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
|
|
@@ -3758,6 +3759,7 @@ status = [
|
|
'bash completions directory: @0@'.format(bashcompletiondir),
|
|
'zsh completions directory: @0@'.format(zshcompletiondir),
|
|
'extra start script: @0@'.format(get_option('rc-local')),
|
|
+ 'extra stop script: @0@'.format(get_option('halt-local')),
|
|
'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
|
|
get_option('debug-tty')),
|
|
'system UIDs: <=@0@ (alloc >=@1@)'.format(conf.get('SYSTEM_UID_MAX'),
|
|
diff --git a/meson_options.txt b/meson_options.txt
|
|
index cbefe7aa83..88fb91d5ec 100644
|
|
--- a/meson_options.txt
|
|
+++ b/meson_options.txt
|
|
@@ -40,6 +40,8 @@ option('telinit-path', type : 'string', value : '/lib/sysvinit/telinit',
|
|
description : 'path to telinit')
|
|
option('rc-local', type : 'string',
|
|
value : '/etc/rc.local')
|
|
+option('halt-local', type : 'string',
|
|
+ value : '/usr/sbin/halt.local')
|
|
option('initrd', type : 'boolean',
|
|
description : 'install services for use when running systemd in initrd')
|
|
option('compat-mutable-uid-boundaries', type : 'boolean', value : 'false',
|
|
diff --git a/src/rc-local-generator/rc-local-generator.c b/src/rc-local-generator/rc-local-generator.c
|
|
index 99cffee3ec..96ee56854c 100644
|
|
--- a/src/rc-local-generator/rc-local-generator.c
|
|
+++ b/src/rc-local-generator/rc-local-generator.c
|
|
@@ -65,6 +65,14 @@ static int run(const char *dest, const char *dest_early, const char *dest_late)
|
|
r = add_symlink("rc-local.service", "multi-user.target");
|
|
}
|
|
|
|
+ if (check_executable(RC_LOCAL_SCRIPT_PATH_STOP) >= 0) {
|
|
+ log_debug("Automatically adding halt-local.service.");
|
|
+ log_notice("Use of %s is deprecated, see systemd-shutdown(8) man page for an alternative.",
|
|
+ RC_LOCAL_SCRIPT_PATH_STOP);
|
|
+
|
|
+ k = add_symlink("halt-local.service", "final.target");
|
|
+ }
|
|
+
|
|
return r < 0 ? r : k;
|
|
}
|
|
|
|
diff --git a/units/halt-local.service.in b/units/halt-local.service.in
|
|
new file mode 100644
|
|
index 0000000000..5fc78b5580
|
|
--- /dev/null
|
|
+++ b/units/halt-local.service.in
|
|
@@ -0,0 +1,22 @@
|
|
+# SPDX-License-Identifier: LGPL-2.1+
|
|
+#
|
|
+# This file is part of systemd.
|
|
+#
|
|
+# systemd is free software; you can redistribute it and/or modify it
|
|
+# under the terms of the GNU Lesser General Public License as published by
|
|
+# the Free Software Foundation; either version 2.1 of the License, or
|
|
+# (at your option) any later version.
|
|
+
|
|
+[Unit]
|
|
+Description={{RC_LOCAL_SCRIPT_PATH_STOP}} Compatibility
|
|
+ConditionFileIsExecutable={{RC_LOCAL_SCRIPT_PATH_STOP}}
|
|
+DefaultDependencies=no
|
|
+After=shutdown.target
|
|
+Before=final.target
|
|
+
|
|
+[Service]
|
|
+Type=oneshot
|
|
+ExecStart={{RC_LOCAL_SCRIPT_PATH_STOP}}
|
|
+TimeoutSec=0
|
|
+StandardOutput=tty
|
|
+RemainAfterExit=yes
|
|
diff --git a/units/meson.build b/units/meson.build
|
|
index 72d9a48a60..c2364da948 100644
|
|
--- a/units/meson.build
|
|
+++ b/units/meson.build
|
|
@@ -175,6 +175,7 @@ in_units = [
|
|
'sysinit.target.wants/'],
|
|
['quotaon.service', 'ENABLE_QUOTACHECK'],
|
|
['rc-local.service', 'HAVE_SYSV_COMPAT'],
|
|
+ ['halt-local.service', 'HAVE_SYSV_COMPAT'],
|
|
['rescue.service', ''],
|
|
['serial-getty@.service', ''],
|
|
['systemd-backlight@.service', 'ENABLE_BACKLIGHT'],
|
|
--
|
|
2.31.1
|
|
|