diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/lvm2')
-rw-r--r-- | nixpkgs/pkgs/os-specific/linux/lvm2/default.nix | 93 | ||||
-rw-r--r-- | nixpkgs/pkgs/os-specific/linux/lvm2/default.upstream | 4 | ||||
-rw-r--r-- | nixpkgs/pkgs/os-specific/linux/lvm2/purity.patch | 44 |
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) |