nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 61 lines 1.6 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 libunwind, 6 cmake, 7 pcre, 8 gdb, 9}: 10 11stdenv.mkDerivation rec { 12 version = "5.9.18"; 13 pname = "igprof"; 14 15 src = fetchFromGitHub { 16 owner = "igprof"; 17 repo = "igprof"; 18 rev = "v${version}"; 19 sha256 = "sha256-UTrAaH8C79km78Z/7NxvQ6dnl4u4Ki80nORf4bsoSNw="; 20 }; 21 22 postPatch = '' 23 substituteInPlace src/igprof --replace libigprof.so $out/lib/libigprof.so 24 ''; 25 26 buildInputs = [ 27 libunwind 28 gdb 29 pcre 30 ]; 31 nativeBuildInputs = [ cmake ]; 32 CXXFLAGS = [ 33 "-fPIC" 34 "-O2" 35 "-w" 36 "-fpermissive" 37 ]; 38 39 meta = { 40 broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64); 41 description = "Ignominous Profiler"; 42 43 longDescription = '' 44 IgProf is a fast and light weight profiler. It correctly handles 45 dynamically loaded shared libraries, threads and sub-processes started by 46 the application. We have used it routinely with large C++ applications 47 consisting of many hundreds of shared libraries and thousands of symbols 48 from millions of source lines of code. It requires no special privileges 49 to run. The performance reports provide full navigable call stacks and 50 can be customised by applying filters. Results from any number of 51 profiling runs can be included. This means you can both dig into the 52 details and see the big picture from combined workloads. 53 ''; 54 55 license = lib.licenses.gpl2; 56 57 homepage = "https://igprof.org/"; 58 platforms = lib.platforms.linux; 59 maintainers = with lib.maintainers; [ ktf ]; 60 }; 61}