at 23.11-beta 128 lines 4.2 kB view raw
1{ lib 2, stdenv 3, docbook_xml_dtd_44 4, docbook_xml_dtd_45 5, docbook_xsl 6, asciidoctor 7, fetchurl 8, flex 9, kmod 10, libxslt 11, nixosTests 12, perl 13, systemd 14 15# drbd-utils are compiled twice, once with forOCF = true to extract 16# its OCF definitions for use in the ocf-resource-agents derivation, 17# then again with forOCF = false, where the ocf-resource-agents is 18# provided as the OCF_ROOT. 19, forOCF ? false 20, ocf-resource-agents 21}: 22 23stdenv.mkDerivation rec { 24 pname = "drbd"; 25 version = "9.19.1"; 26 27 src = fetchurl { 28 url = "https://pkg.linbit.com/downloads/drbd/utils/${pname}-utils-${version}.tar.gz"; 29 sha256 = "1l99kcrb0j85wxxmrdihpx9bk1a4sdi7wlp5m1x5l24k8ck1m5cf"; 30 }; 31 32 nativeBuildInputs = [ 33 flex 34 libxslt 35 docbook_xsl 36 asciidoctor 37 ]; 38 39 buildInputs = [ 40 perl 41 # perlPackages.Po4a used by ja documentation 42 ]; 43 44 configureFlags = [ 45 "--libdir=${placeholder "out"}/lib" 46 "--sbindir=${placeholder "out"}/bin" 47 "--localstatedir=/var" 48 "--sysconfdir=/etc" 49 "--without-distro" 50 ]; 51 52 makeFlags = [ 53 "SOURCE_DATE_EPOCH=1" 54 "WANT_DRBD_REPRODUCIBLE_BUILD=1" 55 ] ++ lib.optional (!forOCF) "OCF_ROOT=${ocf-resource-agents}/usr/lib/ocf}"; 56 57 installFlags = [ 58 "prefix=" 59 "DESTDIR=${placeholder "out"}" 60 "localstatedir=/var" 61 "DRBD_LIB_DIR=/var/lib" 62 "INITDIR=/etc/init.d" 63 "udevrulesdir=/etc/udev/rules.d" 64 "sysconfdir=/etc" 65 "sbindir=/bin" 66 "datadir=" 67 "LIBDIR=/lib/drbd" 68 "mandir=/share/man" 69 ]; 70 71 postPatch = '' 72 patchShebangs . 73 substituteInPlace user/v84/drbdadm_usage_cnt.c \ 74 --replace '"/lib/drbd");' \ 75 '"${placeholder "out"}/lib/drbd");' 76 substituteInPlace user/v9/drbdsetup_linux.c \ 77 --replace 'ret = system("/sbin/modprobe drbd");' \ 78 'ret = system("${kmod}/bin/modprobe drbd");' 79 substituteInPlace user/v84/drbdsetup.c \ 80 --replace 'system("/sbin/modprobe drbd")' \ 81 'system("${kmod}/bin/modprobe drbd")' 82 substituteInPlace documentation/ra2refentry.xsl \ 83 --replace "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" \ 84 "${docbook_xml_dtd_44}/xml/dtd/docbook/docbookx.dtd" 85 function patch_docbook45() { 86 substituteInPlace $1 \ 87 --replace "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \ 88 "${docbook_xml_dtd_45}/xml/dtd/docbook/docbookx.dtd" 89 } 90 patch_docbook45 documentation/v9/drbd.conf.xml.in 91 patch_docbook45 documentation/v9/drbdsetup.xml.in 92 patch_docbook45 documentation/v84/drbdsetup.xml 93 patch_docbook45 documentation/v84/drbd.conf.xml 94 # The ja documentation is disabled because: 95 # make[1]: Entering directory '/build/drbd-utils-9.16.0/documentation/ja/v84' 96 # /nix/store/wyx2nn2pjcn50lc95c6qgsgm606rn0x2-perl5.32.1-po4a-0.62/bin/po4a-translate -f docbook -M utf-8 -L utf-8 -keep 0 -m ../../v84/drbdsetup.xml -p drbdsetup.xml.po -l drbdsetup.xml 97 # Use of uninitialized value $args[1] in sprintf at /nix/store/wyx2nn2pjcn50lc95c6qgsgm606rn0x2-perl5.32.1-po4a-0.62/lib/perl5/site_perl/Locale/Po4a/Common.pm line 134. 98 # Invalid po file drbdsetup.xml.po: 99 substituteInPlace Makefile.in \ 100 --replace 'DOC_DIRS := documentation/v9 documentation/ja/v9' \ 101 'DOC_DIRS := documentation/v9' \ 102 --replace 'DOC_DIRS += documentation/v84 documentation/ja/v84' \ 103 'DOC_DIRS += documentation/v84' \ 104 --replace '$(MAKE) -C documentation/ja/v9 doc' \ 105 "" \ 106 --replace '$(MAKE) -C documentation/ja/v84 doc' \ 107 "" 108 substituteInPlace user/v9/drbdtool_common.c \ 109 --replace 'add_component_to_path("/lib/drbd");' \ 110 'add_component_to_path("${placeholder "out"}/lib/drbd");' 111 ''; 112 113 preConfigure = '' 114 export PATH=${systemd}/sbin:$PATH 115 ''; 116 117 enableParallelBuilding = true; 118 119 passthru.tests.drbd = nixosTests.drbd; 120 121 meta = with lib; { 122 homepage = "https://linbit.com/drbd/"; 123 description = "Distributed Replicated Block Device, a distributed storage system for Linux (userspace utilities)"; 124 license = licenses.gpl2Plus; 125 platforms = platforms.linux; 126 maintainers = with maintainers; [ ryantm astro ]; 127 }; 128}