nixpkgs-suyu/pkgs/applications/virtualization/lkl/default.nix
Yuriy Taraday 691fe19db9 lkl: 2017-11-10 -> 2018-03-10
Bump lkl version to latest that includes merge of Linux 4.15 and fix for
an issue where cptofs wasn't returning failure when image size was too
small and file copying failed with:

  error writing file: No space left on device

(see lkl/linux#427)
2018-03-18 08:38:26 +02:00

57 lines
2 KiB
Nix

{ stdenv, fetchFromGitHub, bc, python, fuse, libarchive }:
stdenv.mkDerivation rec {
name = "lkl-2018-03-10";
rev = "8772a4da6064444c5b70766b806fe272b0287c31";
outputs = [ "dev" "lib" "out" ];
nativeBuildInputs = [ bc python ];
buildInputs = [ fuse libarchive ];
src = fetchFromGitHub {
inherit rev;
owner = "lkl";
repo = "linux";
sha256 = "1m6gh4zcx1q7rv05d0knjpk3ivk2b3kc0kwjndciadqc45kws4wh";
};
# Fix a /usr/bin/env reference in here that breaks sandboxed builds
prePatch = "patchShebangs arch/lkl/scripts";
installPhase = ''
mkdir -p $out/bin $lib/lib $dev
cp tools/lkl/bin/lkl-hijack.sh $out/bin
sed -i $out/bin/lkl-hijack.sh \
-e "s,LD_LIBRARY_PATH=.*,LD_LIBRARY_PATH=$lib/lib,"
cp tools/lkl/{cptofs,fs2tar,lklfuse} $out/bin
ln -s cptofs $out/bin/cpfromfs
cp -r tools/lkl/include $dev/
cp tools/lkl/liblkl*.{a,so} $lib/lib
'';
# We turn off format and fortify because of these errors (fortify implies -O2, which breaks the jitter entropy code):
# fs/xfs/xfs_log_recover.c:2575:3: error: format not a string literal and no format arguments [-Werror=format-security]
# crypto/jitterentropy.c:54:3: error: #error "The CPU Jitter random number generator must not be compiled with optimizations. See documentation. Use the compiler switch -O0 for compiling jitterentropy.c."
hardeningDisable = [ "format" "fortify" ];
makeFlags = "-C tools/lkl";
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "The Linux kernel as a library";
longDescription = ''
LKL (Linux Kernel Library) aims to allow reusing the Linux kernel code as
extensively as possible with minimal effort and reduced maintenance
overhead
'';
homepage = https://github.com/lkl/linux/;
platforms = [ "x86_64-linux" "aarch64-linux" ]; # Darwin probably works too but I haven't tested it
license = licenses.gpl2;
maintainers = with maintainers; [ copumpkin ];
};
}