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:
parent
79ff5b7f95
commit
e8e53c5c8c
|
@ -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";
|
||||
|
|
Loading…
Reference in a new issue