replay-io: init at 20220516-372662e7c79d-a9c63f38ea9b, replay-node-cli: init at 20220506-096c12cb47eb-a1d05f422dff (#166813)
* replay-io: init at 20220401-29dd94a55ca4 * init replay-node-cli at 20220404-dfd3123c41e3-4e44aca4c7ee * replay-io: init at 20220422-1d46e798ffbf-3eecf49b757b, replay-node-cli: init at 0.1.7-20220422-a26b4562ebf7-3eecf49b757b * fixup * apply feedback * replay-io: init at 20220516-372662e7c79d-a9c63f38ea9b, replay-node-cli: init at 20220506-096c12cb47eb-a1d05f422dff * use `stripRoot: false`
This commit is contained in:
parent
958fcfb4fa
commit
f51cb36f2c
141
pkgs/development/tools/replay-io/default.nix
Normal file
141
pkgs/development/tools/replay-io/default.nix
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
{ stdenv, lib, fetchurl, fetchFromGitHub, autoPatchelfHook, makeWrapper, libcxx
|
||||||
|
, libX11, libXt, libXdamage, glib, gtk3, dbus-glib, openssl, nodejs, zlib
|
||||||
|
, fetchzip }:
|
||||||
|
let metadata = lib.importJSON ./meta.json;
|
||||||
|
in rec {
|
||||||
|
replay-recordreplay = stdenv.mkDerivation rec {
|
||||||
|
pname = "replay-recordreplay";
|
||||||
|
version = builtins.head (builtins.match ".*/linux-recordreplay-(.*).tgz"
|
||||||
|
metadata.recordreplay.url);
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook ];
|
||||||
|
buildInputs = [ stdenv.cc.cc.lib openssl zlib ];
|
||||||
|
|
||||||
|
src = (fetchzip metadata.recordreplay);
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
cp linux-recordreplay.so $out
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
meta = with lib; {
|
||||||
|
description = "RecordReplay internal recording library";
|
||||||
|
homepage = "https://www.replay.io/";
|
||||||
|
license = lib.licenses.unfree;
|
||||||
|
maintainers = with maintainers; [ phryneas ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
replay-io = stdenv.mkDerivation rec {
|
||||||
|
pname = "replay-io";
|
||||||
|
version = builtins.head
|
||||||
|
(builtins.match ".*/linux-gecko-(.*).tar.bz2" metadata.replay.url);
|
||||||
|
srcs = fetchurl metadata.replay;
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
|
||||||
|
buildInputs = [ dbus-glib glib gtk3 libX11 libXdamage libXt ];
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/opt/replay-io
|
||||||
|
cp -r * $out/opt/replay-io
|
||||||
|
mkdir $out/bin
|
||||||
|
makeWrapper $out/opt/replay-io/replay \
|
||||||
|
$out/bin/replay-io \
|
||||||
|
--set "RECORD_REPLAY_DRIVER" "${replay-recordreplay}"
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = ./update.sh;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "The Time Travel Debugger for Web Development";
|
||||||
|
longDescription = ''
|
||||||
|
Replay allows you to record and replay web applications with familiar browser dev tools.
|
||||||
|
You can access the browser DevTools at any point of the recording, adding new logger
|
||||||
|
statements and inspecting the status of the DOM, variables and the current call stack.
|
||||||
|
Your recordings can be shared with other users for collaborative debugging.
|
||||||
|
'';
|
||||||
|
homepage = "https://www.replay.io/";
|
||||||
|
downloadPage = "https://www.replay.io/";
|
||||||
|
mainProgram = "replay-io";
|
||||||
|
license = lib.licenses.mpl20;
|
||||||
|
maintainers = with maintainers; [ phryneas ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
replay-node = stdenv.mkDerivation rec {
|
||||||
|
pname = "replay-node";
|
||||||
|
version = builtins.head
|
||||||
|
(builtins.match ".*/linux-node-(.*)" metadata.replay-node.url);
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
|
||||||
|
buildInputs = [ stdenv.cc.cc.lib ];
|
||||||
|
|
||||||
|
src = (fetchurl metadata.replay-node);
|
||||||
|
dontUnpack = true;
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/bin $out/opt/replay-node
|
||||||
|
cp $src $out/opt/replay-node/node-unwrapped
|
||||||
|
chmod +x $out/opt/replay-node/node-unwrapped
|
||||||
|
|
||||||
|
makeWrapper $out/opt/replay-node/node-unwrapped \
|
||||||
|
$out/opt/replay-node/node \
|
||||||
|
--set "RECORD_REPLAY_DRIVER" "${replay-recordreplay}"
|
||||||
|
|
||||||
|
ln -s $out/opt/replay-node/node $out/bin/replay-node
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Event-driven I/O framework for the V8 JavaScript engine, patched for replay";
|
||||||
|
homepage = "https://github.com/RecordReplay/node";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ phryneas ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "replay-node";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
replay-node-cli = stdenv.mkDerivation {
|
||||||
|
pname = "replay-node-cli";
|
||||||
|
version = "0.1.7-" + builtins.head
|
||||||
|
(builtins.match ".*/linux-node-(.*)" metadata.replay-node.url);
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "RecordReplay";
|
||||||
|
repo = "replay-node-cli";
|
||||||
|
rev = "5269c8b8e7c5c7a9618a68f883d19c11a68be837";
|
||||||
|
sha256 = "04d22q3dvs9vxpb9ps64pdxq9ziwgvnzdgsn6p9p0lzjagh0f5n0";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
buildInputs = [ stdenv.cc.cc.lib nodejs ];
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/opt/replay-node-cli
|
||||||
|
cp -r * $out/opt/replay-node-cli
|
||||||
|
makeWrapper $out/opt/replay-node-cli/bin/replay-node \
|
||||||
|
$out/bin/replay-node \
|
||||||
|
--prefix "PATH" ":" "${nodejs}/bin" \
|
||||||
|
--set "RECORD_REPLAY_NODE_DIRECTORY" "${replay-node}/opt/replay-node"
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "The Time Travel Debugger for Web Development - Node Command Line";
|
||||||
|
longDescription = ''
|
||||||
|
The Replay Node Command Line allows you to record node applications and debug them
|
||||||
|
with familiar browser dev tools.
|
||||||
|
You can access the browser DevTools at any point of the recording, adding new logger
|
||||||
|
statements and inspecting the status of variables and the current call stack.
|
||||||
|
Your recordings can be shared with other users for collaborative debugging.
|
||||||
|
'';
|
||||||
|
homepage = "https://www.replay.io/";
|
||||||
|
mainProgram = "replay-node";
|
||||||
|
license = lib.licenses.bsd3;
|
||||||
|
maintainers = with maintainers; [ phryneas ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
15
pkgs/development/tools/replay-io/meta.json
Normal file
15
pkgs/development/tools/replay-io/meta.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"replay": {
|
||||||
|
"url": "https://static.replay.io/downloads/linux-gecko-20220516-372662e7c79d-a9c63f38ea9b.tar.bz2",
|
||||||
|
"sha256": "151k0ykd2mn722zk7n902si6llcsrqnhgjb5bs4wgn9rik9advbi"
|
||||||
|
},
|
||||||
|
"recordreplay": {
|
||||||
|
"url": "https://static.replay.io/downloads/linux-recordreplay-a9c63f38ea9b.tgz",
|
||||||
|
"sha256": "032x9wiw4jcdkn0wjgr5j3pc4parrdy5n4r8bgmfxsldg5j48hmk",
|
||||||
|
"stripRoot": false
|
||||||
|
},
|
||||||
|
"replay-node": {
|
||||||
|
"url": "https://static.replay.io/downloads/linux-node-20220506-096c12cb47eb-a1d05f422dff",
|
||||||
|
"sha256": "1fbqlx01vp6llbvvz285brmz86jxc989v0cw6s06jk0657g87inq"
|
||||||
|
}
|
||||||
|
}
|
32
pkgs/development/tools/replay-io/update.sh
Executable file
32
pkgs/development/tools/replay-io/update.sh
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p curl jq gnused
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# e.g. linux-gecko-20220331-59d0a686993f-ffd8d6280276
|
||||||
|
BUILD_ID=$(curl https://static.replay.io/downloads/linux-replay.json | jq .buildId -r)
|
||||||
|
REVISION=$(echo $BUILD_ID | sed 's/^.*-//')
|
||||||
|
NODE_BUILD_ID=$(curl https://static.replay.io/downloads/linux-replay-node.json | jq .buildId -r)
|
||||||
|
|
||||||
|
REPLAY_DL=https://static.replay.io/downloads/${BUILD_ID}.tar.bz2
|
||||||
|
LIB_DL=https://static.replay.io/downloads/linux-recordreplay-${REVISION}.tgz
|
||||||
|
NODE_DL=https://static.replay.io/downloads/${NODE_BUILD_ID}
|
||||||
|
|
||||||
|
|
||||||
|
cat >"${BASH_SOURCE%/*}/meta.json" <<EOF
|
||||||
|
{
|
||||||
|
"replay": {
|
||||||
|
"url": "${REPLAY_DL}",
|
||||||
|
"sha256": "$(nix-prefetch-url --type sha256 "${REPLAY_DL}")"
|
||||||
|
},
|
||||||
|
"recordreplay": {
|
||||||
|
"url": "${LIB_DL}",
|
||||||
|
"sha256": "$(nix-prefetch-url --type sha256 --unpack "${LIB_DL}")",
|
||||||
|
"stripRoot": false
|
||||||
|
},
|
||||||
|
"replay-node": {
|
||||||
|
"url": "${NODE_DL}",
|
||||||
|
"sha256": "$(nix-prefetch-url --type sha256 "${NODE_DL}")"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
|
@ -16115,6 +16115,9 @@ with pkgs;
|
||||||
|
|
||||||
replacement = callPackage ../development/tools/misc/replacement { };
|
replacement = callPackage ../development/tools/misc/replacement { };
|
||||||
|
|
||||||
|
inherit (callPackage ../development/tools/replay-io { })
|
||||||
|
replay-io replay-node-cli;
|
||||||
|
|
||||||
retdec = callPackage ../development/tools/analysis/retdec {
|
retdec = callPackage ../development/tools/analysis/retdec {
|
||||||
stdenv = gcc8Stdenv;
|
stdenv = gcc8Stdenv;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue