nixpkgs/pkgs/os-specific/linux/mdadm/default.nix
aszlig 011c149ed5
mdadm: Set allowedReferences to only include libc.
The updates we had in the past (7719f7f and 1faf610) broke the mdadm
installer test and systems in the wild using mdraid because newer mdadm
versions contained a self-referenc to its own store path.

Instead of putting a big warning about updating in the package
expression, let's just add allowedReferences so the build immediately
fails if there is a self-reference.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2016-01-18 04:21:16 +01:00

38 lines
1 KiB
Nix

{ stdenv, fetchurl, groff }:
stdenv.mkDerivation rec {
name = "mdadm-3.3.4";
src = fetchurl {
url = "mirror://kernel/linux/utils/raid/mdadm/${name}.tar.xz";
sha256 = "0s6a4bq7v7zxiqzv6wn06fv9f6g502dp047lj471jwxq0r9z9rca";
};
# This is to avoid self-references, which causes the initrd to explode
# in size and in turn prevents mdraid systems from booting.
allowedReferences = [ stdenv.glibc ];
patches = [ ./no-self-references.patch ];
makeFlags = [
"NIXOS=1" "INSTALL=install" "INSTALL_BINDIR=$(out)/sbin"
"MANDIR=$(out)/share/man" "RUN_DIR=/dev/.mdadm"
] ++ stdenv.lib.optionals (stdenv ? cross) [
"CROSS_COMPILE=${stdenv.cross.config}-"
];
nativeBuildInputs = [ groff ];
# Attempt removing if building with gcc5 when updating
NIX_CFLAGS_COMPILE = "-std=gnu89";
preConfigure = ''
sed -e 's@/lib/udev@''${out}/lib/udev@' -e 's@ -Werror @ @' -i Makefile
'';
meta = {
description = "Programs for managing RAID arrays under Linux";
homepage = http://neil.brown.name/blog/mdadm;
};
}