about summary refs log tree commit diff
path: root/nixpkgs/pkgs/os-specific/linux/lvm2
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/lvm2')
-rw-r--r--nixpkgs/pkgs/os-specific/linux/lvm2/default.nix93
-rw-r--r--nixpkgs/pkgs/os-specific/linux/lvm2/default.upstream4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/lvm2/purity.patch44
3 files changed, 141 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/os-specific/linux/lvm2/default.nix b/nixpkgs/pkgs/os-specific/linux/lvm2/default.nix
new file mode 100644
index 000000000000..469096d014d7
--- /dev/null
+++ b/nixpkgs/pkgs/os-specific/linux/lvm2/default.nix
@@ -0,0 +1,93 @@
+{ stdenv, fetchgit, fetchpatch, pkgconfig, systemd, udev, utillinux, libuuid
+, thin-provisioning-tools, libaio
+, enable_dmeventd ? false }:
+
+let
+  version = "2.03.01";
+in
+
+stdenv.mkDerivation {
+  name = "lvm2-${version}";
+
+  src = fetchgit {
+    url = "git://sourceware.org/git/lvm2.git";
+    rev = "v${builtins.replaceStrings [ "." ] [ "_" ] version}";
+    sha256 = "0jlaswf1srdxiqpgpp97j950ddjds8z0kr4pbwmal2za2blrgvbl";
+  };
+
+  configureFlags = [
+    "--disable-readline"
+    "--enable-udev_rules"
+    "--enable-udev_sync"
+    "--enable-pkgconfig"
+    "--enable-applib"
+    "--enable-cmdlib"
+  ] ++ stdenv.lib.optional enable_dmeventd " --enable-dmeventd"
+  ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+    "ac_cv_func_malloc_0_nonnull=yes"
+    "ac_cv_func_realloc_0_nonnull=yes"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ udev libuuid thin-provisioning-tools libaio ];
+
+  preConfigure =
+    ''
+      substituteInPlace scripts/lvm2_activation_generator_systemd_red_hat.c \
+        --replace /usr/bin/udevadm ${systemd}/bin/udevadm
+
+      sed -i /DEFAULT_SYS_DIR/d Makefile.in
+      sed -i /DEFAULT_PROFILE_DIR/d conf/Makefile.in
+    '';
+
+  # gcc: error: ../../device_mapper/libdevice-mapper.a: No such file or directory
+  enableParallelBuilding = false;
+
+  #patches = [ ./purity.patch ];
+  patches = stdenv.lib.optionals stdenv.hostPlatform.isMusl [
+    (fetchpatch {
+      name = "fix-stdio-usage.patch";
+      url = "https://git.alpinelinux.org/cgit/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/cgit/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/cgit/aports/plain/main/lvm2/mlockall-default-config.patch?h=3.7-stable&id=31bd4a8c2dc00ae79a821f6fe0ad2f23e1534f50";
+      sha256 = "1ivbj3sphgf8n1ykfiv5rbw7s8dgnj5jcr9jl2v8cwf28lkacw5l";
+    })
+  ];
+
+  doCheck = false; # requires root
+
+  # To prevent make install from failing.
+  preInstall = "installFlags=\"OWNER= GROUP= confdir=$out/etc\"";
+
+  # Install systemd stuff.
+  #installTargets = "install install_systemd_generators install_systemd_units install_tmpfiles_configuration";
+
+  postInstall =
+    ''
+      substituteInPlace $out/lib/udev/rules.d/13-dm-disk.rules \
+        --replace $out/sbin/blkid ${utillinux}/sbin/blkid
+
+      # Systemd stuff
+      mkdir -p $out/etc/systemd/system $out/lib/systemd/system-generators
+      cp scripts/blk_availability_systemd_red_hat.service $out/etc/systemd/system
+      cp scripts/lvm2_activation_generator_systemd_red_hat $out/lib/systemd/system-generators
+    '';
+
+  meta = with stdenv.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];
+    inherit version;
+    downloadPage = "ftp://sources.redhat.com/pub/lvm2/";
+  };
+}
diff --git a/nixpkgs/pkgs/os-specific/linux/lvm2/default.upstream b/nixpkgs/pkgs/os-specific/linux/lvm2/default.upstream
new file mode 100644
index 000000000000..1e5aaf5ab5cf
--- /dev/null
+++ b/nixpkgs/pkgs/os-specific/linux/lvm2/default.upstream
@@ -0,0 +1,4 @@
+url ftp://sources.redhat.com/pub/lvm2/
+version_link '[.]tgz$'
+version '.*[^0-9.][^.]*[.]([0-9.]+)[.].*' '\1'
+do_overwrite () { do_overwrite_just_version; }
diff --git a/nixpkgs/pkgs/os-specific/linux/lvm2/purity.patch b/nixpkgs/pkgs/os-specific/linux/lvm2/purity.patch
new file mode 100644
index 000000000000..d6990dd9caa5
--- /dev/null
+++ b/nixpkgs/pkgs/os-specific/linux/lvm2/purity.patch
@@ -0,0 +1,44 @@
+diff -ru LVM2.2.02.95-orig/udev/10-dm.rules.in LVM2.2.02.95/udev/10-dm.rules.in
+--- LVM2.2.02.95-orig/udev/10-dm.rules.in	2011-08-11 19:55:29.000000000 +0200
++++ LVM2.2.02.95/udev/10-dm.rules.in	2012-03-19 20:12:35.000000000 +0100
+@@ -19,9 +19,8 @@
+ SUBSYSTEM!="block", GOTO="dm_end"
+ KERNEL!="dm-[0-9]*", GOTO="dm_end"
+ 
+-# Set proper sbin path, /sbin has higher priority than /usr/sbin.
+-ENV{DM_SBIN_PATH}="/sbin"
+-TEST!="$env{DM_SBIN_PATH}/dmsetup", ENV{DM_SBIN_PATH}="/usr/sbin"
++# Set proper sbin path. Exit if dmsetup is not present.
++ENV{DM_SBIN_PATH}="(sbindir)"
+ TEST!="$env{DM_SBIN_PATH}/dmsetup", GOTO="dm_end"
+ 
+ # Device created, major and minor number assigned - "add" event generated.
+diff -ru LVM2.2.02.95-orig/udev/Makefile.in LVM2.2.02.95/udev/Makefile.in
+--- LVM2.2.02.95-orig/udev/Makefile.in	2012-02-24 10:53:12.000000000 +0100
++++ LVM2.2.02.95/udev/Makefile.in	2012-03-19 20:16:09.000000000 +0100
+@@ -12,6 +12,7 @@
+ # Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ 
+ srcdir = @srcdir@
++sbindir = @sbindir@
+ top_srcdir = @top_srcdir@
+ top_builddir = @top_builddir@
+ 
+@@ -26,7 +27,7 @@
+ ifeq ("@UDEV_HAS_BUILTIN_BLKID@", "yes")
+ 	BLKID_RULE=IMPORT{builtin}=\"blkid\"
+ else
+-	BLKID_RULE=IMPORT{program}=\"\$$env{DM_SBIN_PATH}\/blkid -o udev -p \$$tempnode\"
++	BLKID_RULE=IMPORT{program}=\"\/sbin\/blkid -o udev -p \$$tempnode\"
+ endif
+ 
+ CLEAN_TARGETS = 10-dm.rules 13-dm-disk.rules
+@@ -36,7 +37,7 @@
+ vpath %.rules $(srcdir)
+ 
+ %.rules: %.rules.in
+-	$(SED) -e "s/(DM_DIR)/$(DM_DIR)/" -e "s/(BLKID_RULE)/$(BLKID_RULE)/" $< >$@
++	$(SED) -e "s/(DM_DIR)/$(DM_DIR)/" -e "s/(BLKID_RULE)/$(BLKID_RULE)/" -e "s|(sbindir)|$(sbindir)|" $< >$@
+ 
+ %_install: %.rules
+ 	$(INSTALL_DATA) -D $< $(udevdir)/$(<F)