~ruther/guix-local

cfdd023bed634040ab3256680aebc8e06c134bd1 — Marius Bakke 6 years ago d1ed1d7
gnu: multipath-tools: Update to 0.8.4.

* gnu/packages/patches/multipath-tools-sans-systemd.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/linux.scm (multipath-tools): Update to 0.8.4.
[source](patches): New field.
[arguments]: Add #:parallel-build?.  Add phase to fix erroneous compiler warning.
3 files changed, 99 insertions(+), 2 deletions(-)

M gnu/local.mk
M gnu/packages/linux.scm
A gnu/packages/patches/multipath-tools-sans-systemd.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 1275,6 1275,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/mozjs38-version-detection.patch		\
  %D%/packages/patches/mrrescue-support-love-11.patch		\
  %D%/packages/patches/mtools-mformat-uninitialized.patch	\
  %D%/packages/patches/multipath-tools-sans-systemd.patch	\
  %D%/packages/patches/mumps-build-parallelism.patch		\
  %D%/packages/patches/mumps-shared-libseq.patch		\
  %D%/packages/patches/mumps-shared-mumps.patch			\

M gnu/packages/linux.scm => gnu/packages/linux.scm +15 -2
@@ 4182,7 4182,7 @@ arrays when needed.")
(define-public multipath-tools
  (package
    (name "multipath-tools")
    (version "0.8.3")
    (version "0.8.4")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 4191,7 4191,8 @@ arrays when needed.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "02kdbk3gv3fx5dg445scz3l4lg0sznlv037qkjgpw9xkw4l50cfd"))
                "14n8pcgnliicqxzc40xvjxk4cafm4qx7a3rsx5qva74r3ydzx8rn"))
              (patches (search-patches "multipath-tools-sans-systemd.patch"))
              (modules '((guix build utils)))
              (snippet
               '(begin


@@ 4205,9 4206,12 @@ arrays when needed.")
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f                      ; no tests
       #:parallel-build? #f             ;XXX: broken in 0.8.4
       #:make-flags (list "CC=gcc"
                          (string-append "DESTDIR="
                                         (assoc-ref %outputs "out"))
                          ;; Install Udev rules below this directory, relative
                          ;; to the prefix.
                          "SYSTEMDPATH=lib"
                          (string-append "LDFLAGS=-Wl,-rpath="
                                         (assoc-ref %outputs "out")


@@ 4229,6 4233,15 @@ arrays when needed.")
                 (("/usr/include/libudev.h")
                  (string-append udev "/include/libudev.h")))
               #t)))
         (add-after 'unpack 'fix-maybe-uninitialized-variable
           (lambda _
             ;; This variable gets initialized later if needed, but GCC 7
             ;; fails to notice.  Should be fixed for > 0.8.4.
             ;; https://www.redhat.com/archives/dm-devel/2020-March/msg00137.html
             (substitute* "libmultipath/structs_vec.c"
               (("bool is_queueing;")
                "bool is_queueing = false;"))
             #t))
         (delete 'configure))))         ; no configure script
    (native-inputs
     `(("perl" ,perl)

A gnu/packages/patches/multipath-tools-sans-systemd.patch => gnu/packages/patches/multipath-tools-sans-systemd.patch +83 -0
@@ 0,0 1,83 @@
Fix various compiler warnings when built without systemd.

Submitted upstream at <https://www.redhat.com/archives/dm-devel/2020-May/thread.html>.

diff --git a/libmultipath/config.c b/libmultipath/config.c
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
@@ -696,7 +696,7 @@ process_config_dir(struct config *conf, char *dir)
 	pthread_cleanup_pop(1);
 }
 
-static void set_max_checkint_from_watchdog(struct config *conf)
+static void set_max_checkint_from_watchdog(__attribute__((unused)) struct config *conf)
 {
 #ifdef USE_SYSTEMD
 	char *envp = getenv("WATCHDOG_USEC");
diff --git a/multipathd/main.c b/multipathd/main.c
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -176,6 +176,7 @@ daemon_status(void)
 /*
  * I love you too, systemd ...
  */
+#ifdef USE_SYSTEMD
 static const char *
 sd_notify_status(enum daemon_status state)
 {
@@ -195,7 +196,6 @@ sd_notify_status(enum daemon_status state)
 	return NULL;
 }
 
-#ifdef USE_SYSTEMD
 static void do_sd_notify(enum daemon_status old_state,
 			 enum daemon_status new_state)
 {
@@ -247,7 +247,9 @@ enum daemon_status wait_for_state_change_if(enum daemon_status oldstate,
 static void __post_config_state(enum daemon_status state)
 {
 	if (state != running_state && running_state != DAEMON_SHUTDOWN) {
-		enum daemon_status old_state = running_state;
+		/* save state for sd_notify */
+		enum daemon_status
+			__attribute__((unused)) old_state = running_state;
 
 		running_state = state;
 		pthread_cond_broadcast(&config_cond);
@@ -272,7 +274,9 @@ int set_config_state(enum daemon_status state)
 	pthread_cleanup_push(config_cleanup, NULL);
 	pthread_mutex_lock(&config_lock);
 	if (running_state != state) {
-		enum daemon_status old_state = running_state;
+		/* save state for sd_notify */
+		enum daemon_status
+			__attribute__((unused)) old_state = running_state;
 
 		if (running_state == DAEMON_SHUTDOWN)
 			rc = EINVAL;
@@ -2280,7 +2284,6 @@ checkerloop (void *ap)
 	struct timespec last_time;
 	struct config *conf;
 	int foreign_tick = 0;
-	bool use_watchdog;
 
 	pthread_cleanup_push(rcu_unregister, NULL);
 	rcu_register_thread();
@@ -2292,11 +2295,15 @@ checkerloop (void *ap)
 	get_monotonic_time(&last_time);
 	last_time.tv_sec -= 1;
 
-	/* use_watchdog is set from process environment and never changes */
 	conf = get_multipath_config();
-	use_watchdog = conf->use_watchdog;
 	put_multipath_config(conf);
 
+#ifdef USE_SYSTEMD
+	/* use_watchdog is set from process environment and never changes */
+	bool use_watchdog;
+	use_watchdog = conf->use_watchdog;
+#endif
+
 	while (1) {
 		struct timespec diff_time, start_time, end_time;
 		int num_paths = 0, strict_timing, rc = 0;