Skip to content

Commit

Permalink
lockdep: 4.1.2 -> 5.0.21, fix build, enable tests
Browse files Browse the repository at this point in the history
required a bit of an overhaul to ensure we're compiling against *this*
kernel's headers, not those in glibc which are presumably from some other
random kernel version.

would be nice to update to a more recent version, the build of this tool
reportedly got broken soon after this release.
  • Loading branch information
risicle authored and Jon committed Sep 23, 2020
1 parent 4463f81 commit b3951d1
Showing 1 changed file with 37 additions and 6 deletions.
43 changes: 37 additions & 6 deletions pkgs/os-specific/linux/lockdep/default.nix
@@ -1,16 +1,47 @@
{ stdenv, fetchurl }:
{ stdenv, fetchurl, bash, flex, bison, valgrind }:

stdenv.mkDerivation rec {
pname = "lockdep";
version = "4.1.2";
fullver = "4.1.2";

# it would be nice to be able to pick a kernel version in sync with something
# else we already ship, but it seems userspace lockdep isn't very well maintained
# and appears broken in many kernel releases
version = "5.0.21";
fullver = "5.0.21";
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "1mdyjhnzhh254cblahqmpsk226z006z6sm9dmwvg6jlhpsw4cjhy";
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "1my2m9hvnvdrvzcg0fgqgaga59y2cd5zlpv7xrfj2nn98sjhglwq";
};

preConfigure = "cd tools/lib/lockdep";
# ensure *this* kernel's userspace-headers are picked up before we
# fall back to those in glibc, as they will be from a mismatched
# kernel version
postPatch = ''
substituteInPlace tools/lib/lockdep/Makefile \
--replace 'CONFIG_INCLUDES =' $'CONFIG_INCLUDES = -I../../../usr/include\n#'
'';

nativeBuildInputs = [ flex bison ];

buildPhase = ''
make defconfig
make headers_install
cd tools/lib/lockdep
make
'';

doCheck = true;
checkInputs = [ valgrind ];
checkPhase = ''
# there are more /bin/bash references than just shebangs
for f in lockdep run_tests.sh tests/*.sh; do
substituteInPlace $f \
--replace '/bin/bash' '${bash}/bin/bash'
done
./run_tests.sh
'';

installPhase = ''
mkdir -p $out/bin $out/lib $out/include
Expand Down

0 comments on commit b3951d1

Please sign in to comment.