mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-29 17:14:33 +00:00
2982fa466e
https://github.com/lvmteam/lvm2/blob/v2_03_11/WHATS_NEW [VDO](https://github.com/dm-vdo/vdo) support is built by default now, but is disabled in nixpkgs, because it can't find `vdoformat`. AFAICT the kernel support for that still isn't upstream and it still seems kind of experimental, so I'd just ignore that for now and add it once it's either upstream of if anyone actually wants to use it.
129 lines
4.3 KiB
Nix
129 lines
4.3 KiB
Nix
{ lib, stdenv
|
|
, fetchpatch
|
|
, fetchurl
|
|
, pkgconfig
|
|
, util-linux
|
|
, libuuid
|
|
, thin-provisioning-tools, libaio
|
|
, enableCmdlib ? false
|
|
, enableDmeventd ? false
|
|
, udev ? null
|
|
, nixosTests
|
|
}:
|
|
|
|
# configure: error: --enable-dmeventd requires --enable-cmdlib to be used as well
|
|
assert enableDmeventd -> enableCmdlib;
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "lvm2" + stdenv.lib.optionalString enableDmeventd "with-dmeventd";
|
|
version = "2.03.11";
|
|
|
|
src = fetchurl {
|
|
url = "https://mirrors.kernel.org/sourceware/lvm2/LVM2.${version}.tgz";
|
|
sha256 = "1m4xpda8vbyd89ca0w8nacvnl4j34yzsa625gn990fb5sh84ab44";
|
|
};
|
|
|
|
nativeBuildInputs = [ pkgconfig ];
|
|
buildInputs = [ udev libuuid thin-provisioning-tools libaio ];
|
|
|
|
configureFlags = [
|
|
"--disable-readline"
|
|
"--enable-pkgconfig"
|
|
"--with-default-locking-dir=/run/lock/lvm"
|
|
"--with-default-run-dir=/run/lvm"
|
|
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
|
|
] ++ stdenv.lib.optionals (!enableCmdlib) [
|
|
"--bindir=${placeholder "bin"}/bin"
|
|
"--sbindir=${placeholder "bin"}/bin"
|
|
"--libdir=${placeholder "lib"}/lib"
|
|
] ++ stdenv.lib.optional enableCmdlib "--enable-cmdlib"
|
|
++ stdenv.lib.optionals enableDmeventd [
|
|
"--enable-dmeventd"
|
|
"--with-dmeventd-pidfile=/run/dmeventd/pid"
|
|
"--with-default-dm-run-dir=/run/dmeventd"
|
|
] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
|
"ac_cv_func_malloc_0_nonnull=yes"
|
|
"ac_cv_func_realloc_0_nonnull=yes"
|
|
] ++
|
|
stdenv.lib.optionals (udev != null) [
|
|
"--enable-udev_rules"
|
|
"--enable-udev_sync"
|
|
];
|
|
|
|
preConfigure = ''
|
|
sed -i /DEFAULT_SYS_DIR/d Makefile.in
|
|
sed -i /DEFAULT_PROFILE_DIR/d conf/Makefile.in
|
|
substituteInPlace scripts/lvm2_activation_generator_systemd_red_hat.c \
|
|
--replace /usr/bin/udevadm /run/current-system/systemd/bin/udevadm
|
|
# https://github.com/lvmteam/lvm2/issues/36
|
|
substituteInPlace udev/69-dm-lvm-metad.rules.in \
|
|
--replace "(BINDIR)/systemd-run" /run/current-system/systemd/bin/systemd-run
|
|
|
|
substituteInPlace make.tmpl.in --replace "@systemdsystemunitdir@" "$out/lib/systemd/system"
|
|
substituteInPlace libdm/make.tmpl.in --replace "@systemdsystemunitdir@" "$out/lib/systemd/system"
|
|
'';
|
|
|
|
postConfigure = ''
|
|
sed -i 's|^#define LVM_CONFIGURE_LINE.*$|#define LVM_CONFIGURE_LINE "<removed>"|g' ./include/configure.h
|
|
'';
|
|
|
|
|
|
patches = stdenv.lib.optionals stdenv.hostPlatform.isMusl [
|
|
(fetchpatch {
|
|
name = "fix-stdio-usage.patch";
|
|
url = "https://git.alpinelinux.org/aports/plain/main/lvm2/fix-stdio-usage.patch?h=3.7-stable&id=31bd4a8c2dc00ae79a821f6fe0ad2f23e1534f50";
|
|
sha256 = "0m6wr6qrvxqi2d2h054cnv974jq1v65lqxy05g1znz946ga73k3p";
|
|
})
|
|
(fetchpatch {
|
|
name = "mallinfo.patch";
|
|
url = "https://git.alpinelinux.org/aports/plain/main/lvm2/mallinfo.patch?h=3.7-stable&id=31bd4a8c2dc00ae79a821f6fe0ad2f23e1534f50";
|
|
sha256 = "0g6wlqi215i5s30bnbkn8w7axrs27y3bnygbpbnf64wwx7rxxlj0";
|
|
})
|
|
(fetchpatch {
|
|
name = "mlockall-default-config.patch";
|
|
url = "https://git.alpinelinux.org/aports/plain/main/lvm2/mlockall-default-config.patch?h=3.7-stable&id=31bd4a8c2dc00ae79a821f6fe0ad2f23e1534f50";
|
|
sha256 = "1ivbj3sphgf8n1ykfiv5rbw7s8dgnj5jcr9jl2v8cwf28lkacw5l";
|
|
})
|
|
];
|
|
|
|
doCheck = false; # requires root
|
|
|
|
makeFlags = stdenv.lib.optionals (udev != null) [
|
|
"SYSTEMD_GENERATOR_DIR=$(out)/lib/systemd/system-generators"
|
|
];
|
|
|
|
# To prevent make install from failing.
|
|
installFlags = [ "OWNER=" "GROUP=" "confdir=$(out)/etc" ];
|
|
|
|
# Install systemd stuff.
|
|
installTargets = [ "install" ] ++ stdenv.lib.optionals (udev != null) [
|
|
"install_systemd_generators"
|
|
"install_systemd_units"
|
|
"install_tmpfiles_configuration"
|
|
];
|
|
|
|
# only split bin and lib out from out if cmdlib isn't enabled
|
|
outputs = [
|
|
"out"
|
|
"dev"
|
|
"man"
|
|
] ++ stdenv.lib.optionals (enableCmdlib != true) [
|
|
"bin"
|
|
"lib"
|
|
];
|
|
|
|
postInstall = stdenv.lib.optionalString (enableCmdlib != true) ''
|
|
moveToOutput lib/libdevmapper.so $lib
|
|
'';
|
|
|
|
passthru.tests.installer = nixosTests.installer.lvm;
|
|
|
|
meta = with lib; {
|
|
homepage = "http://sourceware.org/lvm2/";
|
|
description = "Tools to support Logical Volume Management (LVM) on Linux";
|
|
platforms = platforms.linux;
|
|
license = with licenses; [ gpl2 bsd2 lgpl21 ];
|
|
maintainers = with maintainers; [ raskin ajs124 ];
|
|
};
|
|
}
|