diff --git a/pkgs/development/tools/profiling/sysprof/configure.patch b/pkgs/development/tools/profiling/sysprof/configure.patch new file mode 100644 index 000000000000..212840ee4064 --- /dev/null +++ b/pkgs/development/tools/profiling/sysprof/configure.patch @@ -0,0 +1,17 @@ +--- sysprof-1.0.10/configure 2008-04-28 01:41:25.000000000 +0200 ++++ sysprof-1.0.10/configure 2008-06-07 15:40:07.000000000 +0200 +@@ -3342,14 +3342,6 @@ if test $kernel_module = "yes"; then + echo \* + exit 1 + fi +- +- if ! test -f /lib/modules/`uname -r`/build/Makefile ; then +- echo \* +- echo \* Sysprof requires the kernel source code to be installed. +- echo \* On a Fedora Core system the relevant package is kernel-devel +- echo \* +- exit 1 +- fi + fi + + # Pkgconfig dependencies diff --git a/pkgs/development/tools/profiling/sysprof/default.nix b/pkgs/development/tools/profiling/sysprof/default.nix new file mode 100644 index 000000000000..397a6033d626 --- /dev/null +++ b/pkgs/development/tools/profiling/sysprof/default.nix @@ -0,0 +1,47 @@ +{ fetchurl, stdenv, kernel, binutils +, pkgconfig, gtk, glib, pango, libglade }: + +stdenv.mkDerivation rec { + name = "sysprof-1.0.10"; + + src = fetchurl { + url = "http://www.daimi.au.dk/~sandmann/sysprof/${name}.tar.gz"; + sha256 = "1cdjnymd9nz72vcw6j0bbhb2ka19rjqd3scgx810a4m3qcai7irs"; + }; + + buildInputs = [ binutils pkgconfig gtk glib pango libglade ]; + + patches = [ ./configure.patch ]; + + preConfigure = '' + kernelVersion=$(cd "${kernel}/lib/modules" && echo *) + echo "assuming Linux kernel version \`$kernelVersion'" + + sed -i "module/Makefile" \ + -e"s|^[[:blank:]]*KDIR[[:blank:]]*:=.*$|KDIR := ${kernel}/lib/modules/$kernelVersion/build|g ; + s|\$(KMAKE) modules_install|install sysprof-module.ko $out/share/sysprof/module|g ; + s|\\[ -e /sbin/depmod.*$|true|g" + + # XXX: We won't run `depmod' after installing the module. + ''; + + configureFlags = "--enable-kernel-module"; + + preInstall = '' + mkdir -p "$out/share/sysprof/module" + ''; + + meta = { + homepage = http://www.daimi.au.dk/~sandmann/sysprof/; + description = "Sysprof, a system-wide profiler for Linux"; + license = "GPLv2+"; + + longDescription = '' + Sysprof is a sampling CPU profiler for Linux that uses a kernel + module to profile the entire system, not just a single + application. Sysprof handles shared libraries and applications + do not need to be recompiled. In fact they don't even have to + be restarted. + ''; + }; +} \ No newline at end of file diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7d62b5f833db..0876ece56eca 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2246,6 +2246,12 @@ let pkgs = rec { javaSupport = true; })); + sysprof = import ../development/tools/profiling/sysprof { + kernel = kernel_2_6_23; # FIXME: Allow the choice of a kernel + inherit fetchurl stdenv binutils pkgconfig; + inherit (gnome) gtk glib pango libglade; + }; + texinfo49 = import ../development/tools/misc/texinfo/4.9.nix { inherit fetchurl stdenv ncurses; };