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:
Lenz Weber-Tronic 2022-05-31 14:36:05 +02:00 committed by GitHub
parent 958fcfb4fa
commit f51cb36f2c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 191 additions and 0 deletions

View 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" ];
};
};
}

View 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"
}
}

View 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

View file

@ -16115,6 +16115,9 @@ with pkgs;
replacement = callPackage ../development/tools/misc/replacement { };
inherit (callPackage ../development/tools/replay-io { })
replay-io replay-node-cli;
retdec = callPackage ../development/tools/analysis/retdec {
stdenv = gcc8Stdenv;
};