at 17.09-beta 81 lines 2.5 kB view raw
1{stdenv, fetchurl, fetchFromGitHub, cmake, luajit, kernel, zlib, ncurses, perl, jsoncpp, libb64, openssl, curl, jq, gcc, fetchpatch}: 2 3with stdenv.lib; 4stdenv.mkDerivation rec { 5 name = "sysdig-${version}"; 6 version = "0.17.0"; 7 8 src = fetchFromGitHub { 9 owner = "draios"; 10 repo = "sysdig"; 11 rev = version; 12 sha256 = "0xw4in2yb3ynpc8jwl95j92kbyr7fzda3mab8nyxcyld7gshrlvd"; 13 }; 14 15 buildInputs = [ 16 cmake zlib luajit ncurses perl jsoncpp libb64 openssl curl jq gcc 17 ]; 18 19 hardeningDisable = [ "pic" ]; 20 21 cmakeFlags = [ 22 "-DUSE_BUNDLED_DEPS=OFF" 23 "-DSYSDIG_VERSION=${version}" 24 ] ++ optional (kernel == null) "-DBUILD_DRIVER=OFF"; 25 26 # needed since luajit-2.1.0-beta3 27 NIX_CFLAGS_COMPILE = [ 28 "-DluaL_reg=luaL_Reg" 29 "-DluaL_getn(L,i)=((int)lua_objlen(L,i))" 30 ]; 31 32 postPatch = '' 33 sed 's|curl/curlbuild\.h|curl/system.h|' -i \ 34 userspace/libsinsp/marathon_http.cpp \ 35 userspace/libsinsp/mesos_http.cpp 36 ''; 37 38 preConfigure = '' 39 export INSTALL_MOD_PATH="$out" 40 '' + optionalString (kernel != null) '' 41 export KERNELDIR="${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" 42 ''; 43 44 libPath = makeLibraryPath [ 45 zlib 46 luajit 47 ncurses 48 jsoncpp 49 curl 50 jq 51 openssl 52 libb64 53 gcc 54 stdenv.cc.cc 55 ]; 56 57 postInstall = optionalString (!stdenv.isDarwin) '' 58 patchelf --set-rpath "$libPath" "$out/bin/sysdig" 59 patchelf --set-rpath "$libPath" "$out/bin/csysdig" 60 '' + optionalString (kernel != null) '' 61 make install_driver 62 kernel_dev=${kernel.dev} 63 kernel_dev=''${kernel_dev#/nix/store/} 64 kernel_dev=''${kernel_dev%%-linux*dev*} 65 if test -f "$out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko"; then 66 sed -i "s#$kernel_dev#................................#g" $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko 67 else 68 xz -d $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko.xz 69 sed -i "s#$kernel_dev#................................#g" $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko 70 xz $out/lib/modules/${kernel.modDirVersion}/extra/sysdig-probe.ko 71 fi 72 ''; 73 74 meta = { 75 description = "A tracepoint-based system tracing tool for Linux (with clients for other OSes)"; 76 license = licenses.gpl2; 77 maintainers = [maintainers.raskin]; 78 platforms = platforms.linux ++ platforms.darwin; 79 downloadPage = "https://github.com/draios/sysdig/releases"; 80 }; 81}