pacemaker: enable strictDeps, add versionCheckHook, add manpages (#509354)

This commit is contained in:
Guillaume Girol
2026-06-01 19:29:19 +00:00
committed by GitHub
+49 -11
View File
@@ -7,9 +7,13 @@
bzip2,
corosync,
dbus,
docbook_xsl,
fetchFromGitHub,
getopt,
gettext,
glib,
gnutls,
help2man,
libqb,
libtool,
libuuid,
@@ -19,6 +23,7 @@
pkg-config,
python3,
nixosTests,
versionCheckHook,
# Pacemaker is compiled twice, once with forOCF = true to extract its
# OCF definitions for use in the ocf-resource-agents derivation, then
@@ -26,6 +31,7 @@
# as the OCF_ROOT.
forOCF ? false,
ocf-resource-agents,
withManpages ? !forOCF,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -35,32 +41,54 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchFromGitHub {
owner = "ClusterLabs";
repo = "pacemaker";
rev = "Pacemaker-${finalAttrs.version}";
sha256 = "sha256-23YkNzqiimLy/KjO+hxVQQ4rUhSEhn5Oc2jUJO/VRo0=";
tag = "Pacemaker-${finalAttrs.version}";
hash = "sha256-23YkNzqiimLy/KjO+hxVQQ4rUhSEhn5Oc2jUJO/VRo0=";
};
outputs = [ "out" ] ++ lib.optionals withManpages [ "man" ];
nativeBuildInputs = [
autoconf
automake
gettext
getopt
libtool
pkg-config
python3
]
++ lib.optionals withManpages [
# If we don't supply the dependencies the manpage build will be silently skipped
help2man # for tool man pages (see mk/man.mk)
libxml2 # for other man pages (xmllint)
libxslt # for other man pages (xsltproc)
];
buildInputs = [
bash
bzip2
corosync
dbus.dev
dbus
glib
gnutls
libqb
libtool
libuuid
libxml2.dev
libxslt.dev
libxml2
libxslt
pam
python3
];
strictDeps = true;
# If we do this unconditionally the build will fail because it sees a valid MANPAGE_XSLT
# but required executables are not available.
postPatch = lib.optionalString withManpages ''
# Avoid the use of xmlcatalog to resolve stylesheet for manpages, but set the path directly
substituteInPlace configure.ac \
--replace-fail 'MANPAGE_XSLT=""' 'MANPAGE_XSLT="${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl"' \
--replace-fail 'AS_IF([test x"''${XSLTPROC}" != x""],' 'AS_IF([false],'
'';
preConfigure = ''
./autogen.sh --prefix="$out"
'';
@@ -87,11 +115,21 @@ stdenv.mkDerivation (finalAttrs: {
enableParallelBuilding = true;
postInstall = ''
# pacemaker's install linking requires a weirdly nested hierarchy
mv $out$out/* $out
rm -r $out/nix
'';
# pacemaker's install linking requires a weirdly nested hierarchy
postInstall =
lib.optionalString withManpages ''
mkdir -p $man
mv $out$man/* $man
''
+ ''
mv $out$out/* $out
rm -r $out/nix
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgram = [ "${placeholder "out"}/sbin/pacemakerd" ];
versionCheckProgramArg = "--version";
passthru.tests = {
inherit (nixosTests) pacemaker;