drbd-utils/0009-Do-not-hardcode-paths-in-services-and-scripts.patch

310 lines
13 KiB
Diff

by heming.zhao@suse.com
remove the patch of scripts/.gitignore for following complain msg:
```
+ /usr/lib/rpm/rpmuncompress /usr/src/packages/SOURCES/0009-Do-not-hardcode-paths-in-services-and-scripts.patch
+ /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
The text leading up to this was:
--------------------------
|diff --git a/scripts/.gitignore b/scripts/.gitignore
|index a307904047f8..ba121127c341 100644
|--- a/scripts/.gitignore
|+++ b/scripts/.gitignore
--------------------------
No file to patch. Skipping patch.
1 out of 1 hunk ignored
```
From 080e93bd9bcf546cd3a9870ae1add2469a2a4e24 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20Wanzenb=C3=B6ck?= <moritz.wanzenboeck@linbit.com>
Date: Fri, 20 Sep 2024 10:30:24 +0200
Subject: [PATCH 09/12] Do not hardcode paths in services and scripts
This fixes issues when drbd-utils get installed to non-standard locations.
Since the autoconf generated Makefile should still allow override on install,
we have to use a new target to do our own expansion. The implementation is
lifted from the autconf manual:
info autoconf "Installation Directory Variables"
# Conflicts:
# scripts/.gitignore
# scripts/Makefile.in
---
configure.ac | 2 +-
scripts/.gitignore | 8 +++++++
scripts/Makefile.in | 23 +++++++++++++++----
...ce => drbd-demote-or-escalate@.service.in} | 2 +-
...vice => drbd-graceful-shutdown.service.in} | 2 +-
scripts/drbd-promote@.service.in | 4 ++--
...-reconfigure-suspend-or-error@.service.in} | 4 ++--
...ervice-shim.sh => drbd-service-shim.sh.in} | 18 +++++++--------
...rvice => drbd-wait-promotable@.service.in} | 2 +-
scripts/{drbd.service => drbd.service.in} | 6 ++---
scripts/{drbd@.service => drbd@.service.in} | 6 ++---
.../{ocf.ra@.service => ocf.ra@.service.in} | 4 ++--
12 files changed, 51 insertions(+), 30 deletions(-)
rename scripts/{drbd-demote-or-escalate@.service => drbd-demote-or-escalate@.service.in} (92%)
rename scripts/{drbd-graceful-shutdown.service => drbd-graceful-shutdown.service.in} (88%)
rename scripts/{drbd-reconfigure-suspend-or-error@.service => drbd-reconfigure-suspend-or-error@.service.in} (71%)
rename scripts/{drbd-service-shim.sh => drbd-service-shim.sh.in} (81%)
rename scripts/{drbd-wait-promotable@.service => drbd-wait-promotable@.service.in} (84%)
rename scripts/{drbd.service => drbd.service.in} (80%)
rename scripts/{drbd@.service => drbd@.service.in} (87%)
rename scripts/{ocf.ra@.service => ocf.ra@.service.in} (85%)
diff --git a/configure.ac b/configure.ac
index cd166bbafbc0..630163cee103 100644
--- a/configure.ac
+++ b/configure.ac
@@ -525,7 +525,7 @@ fi
dnl The configuration files we create (from their .in template)
if test -z $SPECMODE; then
- AC_CONFIG_FILES(Makefile user/shared/Makefile user/v9/Makefile user/v84/Makefile scripts/Makefile scripts/drbd.rules user/windrbd/Makefile user/drbdmon/Makefile documentation/common/Makefile_v84_com documentation/common/Makefile_v9_com)
+ AC_CONFIG_FILES(Makefile user/shared/Makefile user/v9/Makefile user/v84/Makefile scripts/Makefile user/windrbd/Makefile user/drbdmon/Makefile documentation/common/Makefile_v84_com documentation/common/Makefile_v9_com)
AC_CONFIG_HEADERS(user/shared/config.h)
else
AC_CONFIG_FILES(drbd.spec)
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
index 7652ee872500..001d08da54e4 100644
--- a/scripts/Makefile.in
+++ b/scripts/Makefile.in
@@ -67,9 +67,20 @@ SYSTEMD_TEMPLATES += drbd-wait-promotable@.service
SYSTEMD_UNITS = drbd.service
SYSTEMD_UNITS += drbd-graceful-shutdown.service
-SERVICE_TEMPLATES = drbd-promote@.service
+UDEV_TEMPLATES = drbd.rules
-TEMPLATES := $(SERVICE_TEMPLATES)
+SERVICE_TEMPLATES = drbd.service
+SERVICE_TEMPLATES += drbd@.service
+SERVICE_TEMPLATES += drbd-demote-or-escalate@.service
+SERVICE_TEMPLATES += drbd-graceful-shutdown.service
+SERVICE_TEMPLATES += drbd-promote@.service
+SERVICE_TEMPLATES += drbd-reconfigure-suspend-or-error@.service
+SERVICE_TEMPLATES += drbd-wait-promotable@.service
+SERVICE_TEMPLATES += ocf.ra@.service
+
+SCRIPT_TEMPLATES = drbd-service-shim.sh
+
+TEMPLATES := $(SCRIPT_TEMPLATES) $(SERVICE_TEMPLATES) $(UDEV_TEMPLATES)
# variables meant to be overridden from the make command line
ifeq ($(WITH_WINDRBD),yes)
@@ -82,7 +93,7 @@ all: $(TEMPLATES)
install: install-utils install-udev install-xen install-heartbeat install-pacemaker install-rgmanager install-bashcompletion
-install-utils: $(SERVICE_TEMPLATES)
+install-utils: $(SERVICE_TEMPLATES) $(SCRIPT_TEMPLATES)
install -d $(DESTDIR)$(LIBDIR)
# "sysv" or "both"
ifeq ($(subst both,sysv,$(initscripttype)),sysv)
@@ -172,7 +183,7 @@ ifeq ($(WITH_XEN),yes)
install -m 755 block-drbd $(DESTDIR)$(sysconfdir)/xen/scripts
endif
-install-udev:
+install-udev: $(UDEV_TEMPLATES)
ifeq ($(WITH_UDEV),yes)
mkdir -p $(DESTDIR)$(udevrulesdir)
install -m 644 drbd.rules $(DESTDIR)$(udevrulesdir)/65-drbd.rules$(UDEV_RULE_SUFFIX)
@@ -214,7 +225,9 @@ Makefile.in: ;
Makefile: Makefile.in ../config.status
cd .. && ./config.status scripts/Makefile
-edit = sed -e ''
+edit = sed -e '' \
+ -e 's|@sbindir[@]|$(sbindir)|g' \
+ -e 's|@libdir[@]|$(LIBDIR)|g' \
ifeq ($(SYSTEMD_EXEC_CONDITION),no)
edit += -e 's|^ExecCondition=|ExecStart=|'
diff --git a/scripts/drbd-demote-or-escalate@.service b/scripts/drbd-demote-or-escalate@.service.in
similarity index 92%
rename from scripts/drbd-demote-or-escalate@.service
rename to scripts/drbd-demote-or-escalate@.service.in
index 2093223847b4..f5e123199323 100644
--- a/scripts/drbd-demote-or-escalate@.service
+++ b/scripts/drbd-demote-or-escalate@.service.in
@@ -28,5 +28,5 @@ TimeoutSec=60
# "Type=forking" would be an option to have it retry a number of times,
# and then only escalate to FailureAction if that did not help.
Type=oneshot
-ExecStart=/lib/drbd/scripts/drbd-service-shim.sh secondary-or-escalate %I
+ExecStart=@libdir@/scripts/drbd-service-shim.sh secondary-or-escalate %I
ExecStopPost=-/bin/journalctl --sync
diff --git a/scripts/drbd-graceful-shutdown.service b/scripts/drbd-graceful-shutdown.service.in
similarity index 88%
rename from scripts/drbd-graceful-shutdown.service
rename to scripts/drbd-graceful-shutdown.service.in
index b6e8a149d051..6118d880d8fb 100644
--- a/scripts/drbd-graceful-shutdown.service
+++ b/scripts/drbd-graceful-shutdown.service.in
@@ -13,4 +13,4 @@ Before=drbd.service drbd@.service
Type=oneshot
RemainAfterExit=yes
-ExecStop=/lib/drbd/scripts/drbd-service-shim.sh down all
+ExecStop=@libdir@/scripts/drbd-service-shim.sh down all
diff --git a/scripts/drbd-promote@.service.in b/scripts/drbd-promote@.service.in
index 71345d9b723d..23e74c282250 100644
--- a/scripts/drbd-promote@.service.in
+++ b/scripts/drbd-promote@.service.in
@@ -24,5 +24,5 @@ RemainAfterExit=yes
# (ab)using systemd features
# if we cannot configure and promote, that's a condition, not a failure
# See the comment above wrt. FailureAction vs OnFailure
-ExecCondition=/lib/drbd/scripts/drbd-service-shim.sh primary %I
-ExecStop=/lib/drbd/scripts/drbd-service-shim.sh secondary %I
+ExecCondition=@libdir@/scripts/drbd-service-shim.sh primary %I
+ExecStop=@libdir@/scripts/drbd-service-shim.sh secondary %I
diff --git a/scripts/drbd-reconfigure-suspend-or-error@.service b/scripts/drbd-reconfigure-suspend-or-error@.service.in
similarity index 71%
rename from scripts/drbd-reconfigure-suspend-or-error@.service
rename to scripts/drbd-reconfigure-suspend-or-error@.service.in
index c0e59e5e72d3..6a0a2584e3a6 100644
--- a/scripts/drbd-reconfigure-suspend-or-error@.service
+++ b/scripts/drbd-reconfigure-suspend-or-error@.service.in
@@ -10,5 +10,5 @@ RefuseManualStop=yes
SyslogIdentifier=drbd-%I
Type=oneshot
RemainAfterExit=yes
-ExecStop=-/usr/sbin/drbdsetup resource-options --on-no-quorum io-error --on-no-data io-error %I
-ExecStart=-/usr/sbin/drbdsetup resource-options --on-no-quorum suspend-io --on-no-data suspend-io %I
+ExecStop=-@sbindir@/drbdsetup resource-options --on-no-quorum io-error --on-no-data io-error %I
+ExecStart=-@sbindir@/drbdsetup resource-options --on-no-quorum suspend-io --on-no-data suspend-io %I
diff --git a/scripts/drbd-service-shim.sh b/scripts/drbd-service-shim.sh.in
similarity index 81%
rename from scripts/drbd-service-shim.sh
rename to scripts/drbd-service-shim.sh.in
index 786387463891..56029bdcebe2 100755
--- a/scripts/drbd-service-shim.sh
+++ b/scripts/drbd-service-shim.sh.in
@@ -14,7 +14,7 @@ secondary_check() {
local ex_secondary current_state opts
opts="$1"
- /usr/sbin/drbdsetup secondary $opts "$res"
+ @sbindir@/drbdsetup secondary $opts "$res"
ex_secondary=$?
case $ex_secondary in
0)
@@ -26,7 +26,7 @@ secondary_check() {
# any other special treatment for special exit codes?
*)
# double check for "resource does not exist"
- current_state=$(/usr/sbin/drbdsetup events2 --now "$res")
+ current_state=$(@sbindir@/drbdsetup events2 --now "$res")
if [[ $current_state = "exists -" ]]; then
echo >&2 "<7>not even configured"
return 0
@@ -40,23 +40,23 @@ secondary_check() {
case "$cmd" in
adjust)
- exec /usr/sbin/drbdadm adjust "$res"
+ exec @sbindir@/drbdadm adjust "$res"
;;
down)
- exec /usr/sbin/drbdsetup down "$res"
+ exec @sbindir@/drbdsetup down "$res"
;;
primary)
- exec /usr/sbin/drbdsetup primary "$res"
+ exec @sbindir@/drbdsetup primary "$res"
;;
secondary)
- exec /usr/sbin/drbdsetup secondary "$res"
+ exec @sbindir@/drbdsetup secondary "$res"
;;
secondary-force)
- exec /usr/sbin/drbdsetup secondary --force=yes "$res"
+ exec @sbindir@/drbdsetup secondary --force=yes "$res"
;;
secondary-secondary-force)
- /usr/sbin/drbdsetup secondary "$res" && exit 0
- exec /usr/sbin/drbdsetup secondary --force=yes "$res"
+ @sbindir@/drbdsetup secondary "$res" && exit 0
+ exec @sbindir@/drbdsetup secondary --force=yes "$res"
;;
secondary*-or-escalate)
# Log something and try to get journald to flush its logs
diff --git a/scripts/drbd-wait-promotable@.service b/scripts/drbd-wait-promotable@.service.in
similarity index 84%
rename from scripts/drbd-wait-promotable@.service
rename to scripts/drbd-wait-promotable@.service.in
index 81c3789f5a4c..f416274839e9 100644
--- a/scripts/drbd-wait-promotable@.service
+++ b/scripts/drbd-wait-promotable@.service.in
@@ -10,7 +10,7 @@ Type=oneshot
# on first start, wait for access to "good data"
# let systemd handle timeouts
-ExecStart=/lib/drbd/scripts/drbd-wait-promotable.sh %I
+ExecStart=@libdir@/scripts/drbd-wait-promotable.sh %I
RemainAfterExit=yes
[Install]
diff --git a/scripts/drbd.service b/scripts/drbd.service.in
similarity index 80%
rename from scripts/drbd.service
rename to scripts/drbd.service.in
index 96c599e75042..8bfeb17cb91d 100644
--- a/scripts/drbd.service
+++ b/scripts/drbd.service.in
@@ -12,11 +12,11 @@ RemainAfterExit=yes
# A check for INIT_VERSION already exists, just set it to something.
Environment=INIT_VERSION=systemd
-ExecStart=/lib/drbd/scripts/drbd start
-ExecStop=/lib/drbd/scripts/drbd stop
+ExecStart=@libdir@/scripts/drbd start
+ExecStop=@libdir@/scripts/drbd stop
# Re-adjust everything on reload
-ExecReload=/lib/drbd/scripts/drbd reload
+ExecReload=@libdir@/scripts/drbd reload
[Install]
WantedBy=multi-user.target
diff --git a/scripts/drbd@.service b/scripts/drbd@.service.in
similarity index 87%
rename from scripts/drbd@.service
rename to scripts/drbd@.service.in
index 0fad10be237e..ab1c044cdeb1 100644
--- a/scripts/drbd@.service
+++ b/scripts/drbd@.service.in
@@ -35,8 +35,8 @@ RemainAfterExit=yes
# depends... do we want this as ExecCondition or as ExecStart
# failed start is "failed", failed condition is just "not startable yet"
-ExecStart=/lib/drbd/scripts/drbd-service-shim.sh adjust %I
-ExecReload=/lib/drbd/scripts/drbd-service-shim.sh adjust %I
+ExecStart=@libdir@/scripts/drbd-service-shim.sh adjust %I
+ExecReload=@libdir@/scripts/drbd-service-shim.sh adjust %I
# can only succeed, if you first stop all depending services
-ExecStopPost=/lib/drbd/scripts/drbd-service-shim.sh down %I
+ExecStopPost=@libdir@/scripts/drbd-service-shim.sh down %I
diff --git a/scripts/ocf.ra@.service b/scripts/ocf.ra@.service.in
similarity index 85%
rename from scripts/ocf.ra@.service
rename to scripts/ocf.ra@.service.in
index 9c2268a615a7..4779706a8853 100644
--- a/scripts/ocf.ra@.service
+++ b/scripts/ocf.ra@.service.in
@@ -22,5 +22,5 @@ Environment=monitor_inverval=30
# Only the first argument is used by the wrapper,
# the %n is just to identify which is which in the process list.
# All parameterization is done via Environment= in per instance override.conf
-ExecStart=/lib/drbd/scripts/ocf.ra.wrapper.sh start-and-monitor %n
-ExecStopPost=/lib/drbd/scripts/ocf.ra.wrapper.sh stop %n
+ExecStart=@libdir@/scripts/ocf.ra.wrapper.sh start-and-monitor %n
+ExecStopPost=@libdir@/scripts/ocf.ra.wrapper.sh stop %n
--
2.43.0