2017-01-16 13:24:21 -08:00
{ stdenv , fetchFromGitHub , bc , python , fuse , libarchive }:
stdenv . mkDerivation rec {
2017-08-09 07:22:26 -07:00
name = " l k l - 2 0 1 7 - 0 8 - 0 9 " ;
rev = " 0 8 3 c d e e c e 0 5 7 7 6 3 5 d 5 2 3 2 4 4 d c f 0 d a 8 6 0 7 4 e 2 3 e 4 e " ;
2017-01-16 13:24:21 -08:00
2017-05-23 15:43:22 -07:00
outputs = [ " d e v " " l i b " " o u t " ] ;
2017-05-22 16:41:22 -07:00
nativeBuildInputs = [ bc python ] ;
buildInputs = [ fuse libarchive ] ;
2017-01-16 13:24:21 -08:00
src = fetchFromGitHub {
inherit rev ;
2017-01-17 10:40:58 -08:00
owner = " l k l " ;
2017-01-16 13:24:21 -08:00
repo = " l i n u x " ;
2017-08-09 07:22:26 -07:00
sha256 = " 1 f y h 0 p 5 4 j g s q y w s w j 4 0 z b w 6 4 j b q x 2 w 1 0 w a x 1 k 3 j 2 s z z l h j r v 9 x 1 a " ;
2017-01-16 13:24:21 -08:00
} ;
2017-01-25 13:30:46 -08:00
# Fix a /usr/bin/env reference in here that breaks sandboxed builds
prePatch = " p a t c h S h e b a n g s a r c h / l k l / s c r i p t s " ;
2017-01-16 13:24:21 -08:00
installPhase = ''
2017-05-23 15:43:22 -07:00
mkdir - p $ out/bin $ lib/lib $ dev
2017-01-16 13:24:21 -08:00
cp tools/lkl/bin/lkl-hijack.sh $ out/bin
2017-05-23 15:43:22 -07:00
sed - i $ out/bin/lkl-hijack.sh \
- e " s , L D _ L I B R A R Y _ P A T H = . * , L D _ L I B R A R Y _ P A T H = $ l i b / l i b , "
2017-01-16 13:24:21 -08:00
cp tools/lkl / { cptofs , cpfromfs , fs2tar , lklfuse } $ out/bin
2017-05-23 15:43:22 -07:00
cp - r tools/lkl/include $ dev /
cp tools/lkl/liblkl * . { a , so } $ lib/lib
2017-01-16 13:24:21 -08:00
'' ;
# 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 = [ " f o r m a t " " f o r t i f y " ] ;
makeFlags = " - C t o o l s / l k l " ;
2017-05-20 06:38:01 -07:00
enableParallelBuilding = true ;
2017-01-16 13:24:21 -08:00
meta = with stdenv . lib ; {
2017-05-23 14:55:55 -07:00
description = " T h e L i n u x k e r n e l a s a l i b r a r y " ;
longDescription = ''
LKL ( Linux Kernel Library ) aims to allow reusing the Linux kernel code as
extensively as possible with minimal effort and reduced maintenance
overhead
'' ;
2017-05-21 06:25:55 -07:00
homepage = https://github.com/lkl/linux/ ;
2017-03-01 17:59:31 -08:00
platforms = [ " x 8 6 _ 6 4 - l i n u x " ] ; # Darwin probably works too but I haven't tested it
2017-01-16 13:24:21 -08:00
license = licenses . gpl2 ;
maintainers = with maintainers ; [ copumpkin ] ;
} ;
}