Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at fix-function-merge 135 lines 4.4 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, perlPackages 14, systemd 15, keyutils 16 17# drbd-utils are compiled twice, once with forOCF = true to extract 18# its OCF definitions for use in the ocf-resource-agents derivation, 19# then again with forOCF = false, where the ocf-resource-agents is 20# provided as the OCF_ROOT. 21, forOCF ? false 22, ocf-resource-agents 23}: 24 25stdenv.mkDerivation rec { 26 pname = "drbd"; 27 version = "9.27.0"; 28 29 src = fetchurl { 30 url = "https://pkg.linbit.com/downloads/drbd/utils/${pname}-utils-${version}.tar.gz"; 31 sha256 = "1qwdrjrgas8z8vc6c85xcrqaczjwyqd61yig01n44wa5z0j3v4aq"; 32 }; 33 34 nativeBuildInputs = [ 35 flex 36 libxslt 37 docbook_xsl 38 asciidoctor 39 keyutils 40 ]; 41 42 buildInputs = [ 43 perl 44 perlPackages.Po4a 45 ]; 46 47 configureFlags = [ 48 "--libdir=${placeholder "out"}/lib" 49 "--sbindir=${placeholder "out"}/bin" 50 "--localstatedir=/var" 51 "--sysconfdir=/etc" 52 "--without-distro" 53 ]; 54 55 makeFlags = [ 56 "SOURCE_DATE_EPOCH=1" 57 "WANT_DRBD_REPRODUCIBLE_BUILD=1" 58 ] ++ lib.optional (!forOCF) "OCF_ROOT=${ocf-resource-agents}/usr/lib/ocf}"; 59 60 installFlags = [ 61 "prefix=" 62 "DESTDIR=${placeholder "out"}" 63 "localstatedir=/var" 64 "DRBD_LIB_DIR=/var/lib" 65 "INITDIR=/etc/init.d" 66 "udevrulesdir=/etc/udev/rules.d" 67 "sysconfdir=/etc" 68 "sbindir=/bin" 69 "datadir=" 70 "LIBDIR=/lib/drbd" 71 "mandir=/share/man" 72 ]; 73 74 postPatch = '' 75 patchShebangs . 76 substituteInPlace user/v84/drbdadm_usage_cnt.c \ 77 --replace '"/lib/drbd");' \ 78 '"${placeholder "out"}/lib/drbd");' 79 substituteInPlace user/v9/drbdsetup_linux.c \ 80 --replace 'ret = system("/sbin/modprobe drbd");' \ 81 'ret = system("${kmod}/bin/modprobe drbd");' 82 substituteInPlace user/v84/drbdsetup.c \ 83 --replace 'system("/sbin/modprobe drbd")' \ 84 'system("${kmod}/bin/modprobe drbd")' 85 substituteInPlace documentation/ra2refentry.xsl \ 86 --replace "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" \ 87 "${docbook_xml_dtd_44}/xml/dtd/docbook/docbookx.dtd" 88 function patch_docbook45() { 89 substituteInPlace $1 \ 90 --replace "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \ 91 "${docbook_xml_dtd_45}/xml/dtd/docbook/docbookx.dtd" 92 } 93 patch_docbook45 documentation/v9/drbd.conf.xml.in 94 patch_docbook45 documentation/v9/drbdsetup.xml.in 95 patch_docbook45 documentation/v84/drbdsetup.xml 96 patch_docbook45 documentation/v84/drbd.conf.xml 97 # The ja documentation is disabled because: 98 # make[1]: Entering directory '/build/drbd-utils-9.16.0/documentation/ja/v84' 99 # /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 100 # 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. 101 # Invalid po file drbdsetup.xml.po: 102 substituteInPlace Makefile.in \ 103 --replace 'DOC_DIRS := documentation/v9 documentation/ja/v9' \ 104 'DOC_DIRS := documentation/v9' \ 105 --replace 'DOC_DIRS += documentation/v84 documentation/ja/v84' \ 106 'DOC_DIRS += documentation/v84' \ 107 --replace '$(MAKE) -C documentation/ja/v9 doc' \ 108 "" \ 109 --replace '$(MAKE) -C documentation/ja/v84 doc' \ 110 "" 111 substituteInPlace user/v9/drbdtool_common.c \ 112 --replace 'add_component_to_path("/lib/drbd");' \ 113 'add_component_to_path("${placeholder "out"}/lib/drbd");' 114 ''; 115 116 preConfigure = '' 117 export PATH=${systemd}/sbin:$PATH 118 ''; 119 120 enableParallelBuilding = true; 121 122 passthru.tests.drbd = nixosTests.drbd; 123 124 meta = with lib; { 125 homepage = "https://linbit.com/drbd/"; 126 description = "Distributed Replicated Block Device, a distributed storage system for Linux (userspace utilities)"; 127 license = licenses.gpl2Plus; 128 platforms = platforms.linux; 129 maintainers = with maintainers; [ ryantm astro birkb ]; 130 longDescription = '' 131 DRBD is a software-based, shared-nothing, replicated storage solution 132 mirroring the content of block devices (hard disks, partitions, logical volumes, and so on) between hosts. 133 ''; 134 }; 135}