diff options
author | Herwig Hochleitner <herwig@bendlas.net> | 2016-09-16 01:08:36 +0200 |
---|---|---|
committer | Herwig Hochleitner <herwig@bendlas.net> | 2016-09-16 12:19:59 +0200 |
commit | b019424e5da3eb499d0f910e6bf677a53ba37846 (patch) | |
tree | 29ee573b1bcaeefdc8ae8bc033d996cc0b976b5d | |
parent | a6581d825df846d8b847b030a19dce6ffa2f8dab (diff) | |
download | nixlib-b019424e5da3eb499d0f910e6bf677a53ba37846.tar nixlib-b019424e5da3eb499d0f910e6bf677a53ba37846.tar.gz nixlib-b019424e5da3eb499d0f910e6bf677a53ba37846.tar.bz2 nixlib-b019424e5da3eb499d0f910e6bf677a53ba37846.tar.lz nixlib-b019424e5da3eb499d0f910e6bf677a53ba37846.tar.xz nixlib-b019424e5da3eb499d0f910e6bf677a53ba37846.tar.zst nixlib-b019424e5da3eb499d0f910e6bf677a53ba37846.zip |
systemtap: init at 51b7ca
master needs to be tracked in order to support recent kernels
-rw-r--r-- | pkgs/development/tools/profiling/systemtap/default.nix | 56 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
2 files changed, 58 insertions, 0 deletions
diff --git a/pkgs/development/tools/profiling/systemtap/default.nix b/pkgs/development/tools/profiling/systemtap/default.nix new file mode 100644 index 000000000000..615ad3464793 --- /dev/null +++ b/pkgs/development/tools/profiling/systemtap/default.nix @@ -0,0 +1,56 @@ +{ fetchurl, linuxPackages, makeWrapper, runCommand, fetchgit +, elfutils, pkgconfig, gettext, stow, gnumake }: +let + ## fetchgit info + url = git://sourceware.org/git/systemtap.git; + rev = "51b7cae3023adf137081059c7cc44a13f652ba4c"; + sha256 = "18m3lf11r99f4yr1m172548lghc0i22zqbys1fwlwakbczz0a2lz"; + + inherit (linuxPackages) kernel; + version = kernel.stdenv.lib.substring 0 6 rev; + + ## stap binaries + stapBuild = kernel.stdenv.mkDerivation { + name = "systemtap-${version}"; + src = fetchgit { inherit url rev sha256; }; + buildInputs = [ elfutils pkgconfig gettext ]; + enableParallelBuilding = true; + }; + + ## a kernel build dir as expected by systemtap + kernelBuildDir = runCommand "kbuild-${kernel.version}-merged" { + buildInputs = [ stow ]; + } '' + mkdir -p $out + stowFrom () { + D="$(dirname $1)" + P="$(basename $1)" + shift + stow -d $D -t $out -v "$@" -S $P + } + stowFrom ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build --ignore=source + ln -s ${kernel.dev}/vmlinux $out/vmlinux + ln -s ${kernel}/System.map $out/System.map + ln -s ${kernel.dev}/lib/modules/${kernel.modDirVersion}/source $out/source + ''; + +in runCommand "systemtap-${kernel.version}-${version}" { + inherit stapBuild kernelBuildDir; + buildInputs = [ makeWrapper ]; + meta = with kernel.stdenv.lib; { + homepage = https://sourceware.org/systemtap/; + repositories.git = git://sourceware.org/git/systemtap.git; + description = "SystemTap provides a simple command line interface and scripting language for writing instrumentation for a live running kernel plus user-space applications."; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} '' + mkdir -p $out/bin + for bin in $stapBuild/bin/*; do # hello emacs */ + ln -s $bin $out/bin/$(basename $bin) + done + rm $out/bin/stap + makeWrapper $stapBuild/bin/stap $out/bin/stap \ + --add-flags "-r $kernelBuildDir" \ + --prefix PATH : ${kernel.stdenv.cc.cc}/bin:${elfutils}/bin:${gnumake}/bin +'' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b77bcb54f7aa..5c9f8de15dc3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14963,6 +14963,8 @@ in # linux only by now synergy = callPackage ../applications/misc/synergy { }; + systemtap = callPackage ../development/tools/profiling/systemtap { }; + tabbed = callPackage ../applications/window-managers/tabbed { # if you prefer a custom config, write the config.h in tabbed.config.h # and enable |