summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/libraries/libpfm/default.nix26
-rw-r--r--pkgs/development/tools/analysis/rr/default.nix31
-rw-r--r--pkgs/top-level/all-packages.nix4
3 files changed, 61 insertions, 0 deletions
diff --git a/pkgs/development/libraries/libpfm/default.nix b/pkgs/development/libraries/libpfm/default.nix
new file mode 100644
index 00000000000..cbb314a7bb7
--- /dev/null
+++ b/pkgs/development/libraries/libpfm/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "4.5.0";
+  name = "libpfm-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/perfmon2/libpfm4/${name}.tar.gz";
+    sha1 = "857eb066724e2a5b723d6802d217c8eddff79082";
+  };
+
+  installFlags = "DESTDIR=\${out} PREFIX= LDCONFIG=true";
+
+  meta = {
+    description = "Helper library to program the performance monitoring events";
+    longDescription = ''
+      This package provides a library, called libpfm4 which is used to
+      develop monitoring tools exploiting the performance monitoring
+      events such as those provided by the Performance Monitoring Unit
+      (PMU) of modern processors.
+    '';
+    licence = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.pierron ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/tools/analysis/rr/default.nix b/pkgs/development/tools/analysis/rr/default.nix
new file mode 100644
index 00000000000..c2ab7a334fe
--- /dev/null
+++ b/pkgs/development/tools/analysis/rr/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, libpfm, zlib }:
+
+stdenv.mkDerivation rec {
+  version = "2.0.0";
+  name = "rr-${version}";
+
+  src = fetchFromGitHub {
+    owner = "mozilla";
+    repo = "rr";
+    rev = version;
+    sha256 = "0mlxkj35zmm15dgnc7rfynnh2s2hpym01147vwc8pwv8qgab903s";
+  };
+
+  buildInputs = [ cmake libpfm zlib ];
+  cmakeFlags = "-DCMAKE_C_FLAGS_RELEASE:STRING= -DCMAKE_CXX_FLAGS_RELEASE:STRING=";
+
+  meta = {
+    homepage = http://rr-project.org/;
+    description = "Records nondeterministic executions and debugs them deterministically";
+    longDescription = ''
+      rr aspires to be your primary debugging tool, replacing -- well,
+      enhancing -- gdb. You record a failure once, then debug the
+      recording, deterministically, as many times as you want. Every
+      time the same execution is replayed.
+    '';
+
+    license = "custom";
+    maintainers = [ stdenv.lib.maintainers.pierron ];
+    platforms = [ "i686-linux" ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 08b4f903027..d04106e95c8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4690,6 +4690,8 @@ let
 
   remake = callPackage ../development/tools/build-managers/remake { };
 
+  rr = callPackage_i686 ../development/tools/analysis/rr { };
+
   saleae-logic = callPackage ../development/tools/misc/saleae-logic { };
 
   # couldn't find the source yet
@@ -6105,6 +6107,8 @@ let
 
   libpaper = callPackage ../development/libraries/libpaper { };
 
+  libpfm = callPackage ../development/libraries/libpfm { };
+
   libproxy = callPackage ../development/libraries/libproxy {
     stdenv = if stdenv.isDarwin
       then overrideGCC stdenv gcc