rr: encode gdb dep with wrapProgram instead of propagatedBuildInputs

Except in special wrapper environments like `python3.withPackages`,
where all "build" dependencies are also runtime dependencies,
`propagatedBuildInputs` doesn't actually encode runtime dependencies.

It's meant to propagate build dependencies to dependants, so the
dependants don't have to explicitly add them to their `buildInputs`.

With `wrapProgram`, you can now run rr without having gdb
installed (eg. `nix run nixpkgs#rr replay`).
This commit is contained in:
Kira Bruneau 2023-04-26 12:16:04 -04:00
parent 79ff5b7f95
commit e8e53c5c8c

View File

@ -1,5 +1,6 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch
, cmake, libpfm, zlib, pkg-config, python3Packages, which, procps, gdb, capnproto
, cmake, pkg-config, which, makeWrapper
, libpfm, zlib, python3Packages, procps, gdb, capnproto
}:
stdenv.mkDerivation rec {
@ -38,11 +39,11 @@ stdenv.mkDerivation rec {
# See also https://github.com/NixOS/nixpkgs/pull/110846
preConfigure = ''substituteInPlace CMakeLists.txt --replace "-flto" ""'';
nativeBuildInputs = [ cmake pkg-config which ];
nativeBuildInputs = [ cmake pkg-config which makeWrapper ];
buildInputs = [
libpfm zlib python3Packages.python python3Packages.pexpect procps gdb capnproto
libpfm zlib python3Packages.python python3Packages.pexpect procps capnproto
];
propagatedBuildInputs = [ gdb ]; # needs GDB to replay programs at runtime
cmakeFlags = [
"-Ddisable32bit=ON"
];
@ -57,6 +58,14 @@ stdenv.mkDerivation rec {
preCheck = "export HOME=$TMPDIR";
# needs GDB to replay programs at runtime
preFixup = ''
wrapProgram "$out/bin/rr" \
--prefix PATH ":" "${lib.makeBinPath [
gdb
]}";
'';
meta = {
homepage = "https://rr-project.org/";
description = "Records nondeterministic executions and debugs them deterministically";