summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Lirzin <mthl@gnu.org>2026-02-08 23:15:54 +0100
committerSharlatan Hellseher <sharlatanus@gmail.com>2026-02-25 22:06:21 +0000
commit0d52bda71c985d397bb8889f6a9145c7564990e5 (patch)
tree6dee8dba6d74df06dba68377c90c067fc1ba3f72
parent625ee243a6e7fa0bc6960f39be937a05cfa61661 (diff)
gnu: rabbitmq: Define rabbitmq-programs only once.
* gnu/packages/high-availability.scm (rabbitmq): Define rabbitmq-programs only once. Change-Id: I6d7e22b2984d3dfe590f31531587e09873c5eede Reviewed-by: Nguyễn Gia Phong <cnx@loang.net> Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
-rw-r--r--gnu/packages/high-availability.scm142
1 files changed, 68 insertions, 74 deletions
diff --git a/gnu/packages/high-availability.scm b/gnu/packages/high-availability.scm
index 5acdba9ac11..36db6760ee9 100644
--- a/gnu/packages/high-availability.scm
+++ b/gnu/packages/high-availability.scm
@@ -560,80 +560,74 @@ Virtually anything that can be scripted can be managed as part of a Pacemaker cl
560 (string-append "RABBITMQ_VERSION=" 560 (string-append "RABBITMQ_VERSION="
561 #$version)) 561 #$version))
562 #:phases 562 #:phases
563 #~(modify-phases %standard-phases 563 #~(let ((rabbitmq-programs (list "rabbitmqctl"
564 ;; erlang.mk contains the entries 564 "rabbitmq-diagnostics"
565 ;; 565 "rabbitmq-plugins"
566 ;; ELIXIR_BIN ?= $(shell readlink -f `which elixir`) 566 "rabbitmq-queues"
567 ;; ELIXIR_LIBS ?= $(abspath $(dir $(ELIXIR_BIN))/../lib) 567 "rabbitmq-server"
568 ;; 568 "rabbitmq-streams"
569 ;; but fails to find elixir.app when building plugins. 569 "rabbitmq-upgrade")))
570 ;; 570 (modify-phases %standard-phases
571 ;; Despite the failures, the build is reported successful while some 571 ;; erlang.mk contains the entries
572 ;; plugins are not built. For example, running rabbitmqctl 572 ;;
573 ;; command-line utility gives error 573 ;; ELIXIR_BIN ?= $(shell readlink -f `which elixir`)
574 ;; 574 ;; ELIXIR_LIBS ?= $(abspath $(dir $(ELIXIR_BIN))/../lib)
575 ;; undefined function Elixir.RabbitMQCtl':main/1 575 ;;
576 ;; 576 ;; but fails to find elixir.app when building plugins.
577 ;; After changing `dir` to `dirname`, all plugins build successfully 577 ;;
578 ;; and it is possible to use the command-line utilities. 578 ;; Despite the failures, the build is reported successful while some
579 (add-after 'unpack 'extract-rabbitmq-sources 579 ;; plugins are not built. For example, running rabbitmqctl
580 (lambda _ 580 ;; command-line utility gives error
581 (substitute* "erlang.mk" 581 ;;
582 (("dir \\$\\(ELIXIR_BIN\\)") 582 ;; undefined function Elixir.RabbitMQCtl':main/1
583 "shell dirname \\$\\(ELIXIR_BIN\\)")))) 583 ;;
584 (add-after 'install 'wrap-rabbitmq 584 ;; After changing `dir` to `dirname`, all plugins build successfully
585 (lambda* (#:key outputs inputs #:allow-other-keys) 585 ;; and it is possible to use the command-line utilities.
586 (let ((sbindir (string-append #$output "/lib/rabbitmq_server-" 586 (add-after 'unpack 'extract-rabbitmq-sources
587 #$version "/sbin")) 587 (lambda _
588 (rabbitmq-programs (list "rabbitmqctl" 588 (substitute* "erlang.mk"
589 "rabbitmq-diagnostics" 589 (("dir \\$\\(ELIXIR_BIN\\)")
590 "rabbitmq-plugins" 590 "shell dirname \\$\\(ELIXIR_BIN\\)"))))
591 "rabbitmq-queues" 591 (add-after 'install 'wrap-rabbitmq
592 "rabbitmq-server" 592 (lambda* (#:key outputs inputs #:allow-other-keys)
593 "rabbitmq-streams" 593 (let ((sbindir (string-append #$output "/lib/rabbitmq_server-"
594 "rabbitmq-upgrade"))) 594 #$version "/sbin")))
595 ;; Starting RabbitMQ server requires: getconf, df, erl. 595 ;; Starting RabbitMQ server requires: getconf, df, erl.
596 (wrap-program (string-append sbindir "/rabbitmq-server") 596 (wrap-program (string-append sbindir "/rabbitmq-server")
597 `("PATH" ":" prefix 597 `("PATH" ":" prefix
598 (,(dirname (search-input-file inputs "bin/getconf")) 598 (,(dirname (search-input-file inputs "bin/getconf"))
599 ,(dirname (search-input-file inputs "bin/df")) 599 ,(dirname (search-input-file inputs "bin/df"))
600 ,(dirname (search-input-file inputs "bin/erl"))))) 600 ,(dirname (search-input-file inputs "bin/erl")))))
601 ;; Each of the RabbitMQ programs requires Erlang cookie 601 ;; Each of the RabbitMQ programs requires Erlang cookie
602 ;; stored in RabbitMQ'S user home directory. 602 ;; stored in RabbitMQ'S user home directory.
603 (for-each (lambda (prog) 603 (for-each (lambda (prog)
604 (wrap-program (string-append sbindir "/" prog) 604 (wrap-program (string-append sbindir "/" prog)
605 `("PATH" suffix 605 `("PATH" suffix
606 (,(string-append #$erlang "/bin"))) 606 (,(string-append #$erlang "/bin")))
607 `("HOME" = 607 `("HOME" =
608 ("/var/lib/rabbitmq")))) rabbitmq-programs)))) 608 ("/var/lib/rabbitmq"))))
609 (delete 'configure) 609 rabbitmq-programs))))
610 (add-after 'install 'patch-scripts 610 (delete 'configure)
611 (lambda* (#:key inputs outputs #:allow-other-keys) 611 (add-after 'install 'patch-scripts
612 (substitute* (string-append #$output "/lib/rabbitmq_server-" 612 (lambda* (#:key inputs outputs #:allow-other-keys)
613 #$version "/sbin/rabbitmq-env") 613 (substitute* (string-append #$output "/lib/rabbitmq_server-"
614 (("basename") 614 #$version "/sbin/rabbitmq-env")
615 (which "basename")) 615 (("basename")
616 (("dirname") 616 (which "basename"))
617 (which "dirname")) 617 (("dirname")
618 (("readlink") 618 (which "dirname"))
619 (which "readlink"))))) 619 (("readlink")
620 (add-after 'install 'install-bin 620 (which "readlink")))))
621 (lambda* (#:key inputs outputs #:allow-other-keys) 621 (add-after 'install 'install-bin
622 (let ((target (string-append #$output "/sbin")) 622 (lambda* (#:key inputs outputs #:allow-other-keys)
623 (sbindir (string-append #$output "/lib/rabbitmq_server-" 623 (let ((target (string-append #$output "/sbin"))
624 #$version "/sbin")) 624 (sbindir (string-append #$output "/lib/rabbitmq_server-"
625 (rabbitmq-programs (list "rabbitmqctl" 625 #$version "/sbin")))
626 "rabbitmq-diagnostics" 626 (mkdir-p target)
627 "rabbitmq-plugins" 627 (for-each (lambda (prog)
628 "rabbitmq-queues" 628 (symlink (string-append sbindir "/" prog)
629 "rabbitmq-server" 629 (string-append target "/" prog)))
630 "rabbitmq-streams" 630 rabbitmq-programs))))))))
631 "rabbitmq-upgrade")))
632 (mkdir-p target)
633 (for-each (lambda (prog)
634 (symlink (string-append sbindir "/" prog)
635 (string-append target "/" prog)))
636 rabbitmq-programs)))))))
637 (inputs (list bash-minimal)) 631 (inputs (list bash-minimal))
638 (native-inputs (list erlang elixir python-wrapper which p7zip)) 632 (native-inputs (list erlang elixir python-wrapper which p7zip))
639 (synopsis 633 (synopsis