toxic: 0.15.1 -> 0.16.0
[NixPkgs.git] / pkgs / by-name / ig / igprof / package.nix
blob2b5d3cf946a04f6f6170799ddc5387236f8d9eb4
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   libunwind,
6   cmake,
7   pcre,
8   gdb,
9 }:
11 stdenv.mkDerivation rec {
12   version = "5.9.18";
13   pname = "igprof";
15   src = fetchFromGitHub {
16     owner = "igprof";
17     repo = "igprof";
18     rev = "v${version}";
19     sha256 = "sha256-UTrAaH8C79km78Z/7NxvQ6dnl4u4Ki80nORf4bsoSNw=";
20   };
22   postPatch = ''
23     substituteInPlace src/igprof --replace libigprof.so $out/lib/libigprof.so
24   '';
26   buildInputs = [
27     libunwind
28     gdb
29     pcre
30   ];
31   nativeBuildInputs = [ cmake ];
32   CXXFLAGS = [
33     "-fPIC"
34     "-O2"
35     "-w"
36     "-fpermissive"
37   ];
39   meta = {
40     broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
41     description = "Ignominous Profiler";
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     '';
55     license = lib.licenses.gpl2;
57     homepage = "https://igprof.org/";
58     platforms = lib.platforms.linux;
59     maintainers = with lib.maintainers; [ ktf ];
60   };