depot/third_party/nixpkgs/pkgs/by-name/ca/caper/package.nix

64 lines
1.6 KiB
Nix

{
stdenv,
lib,
ocaml,
ocamlPackages,
gnum4,
fetchFromGitLab,
}:
stdenv.mkDerivation rec {
pname = "caper";
version = "0.9";
src = fetchFromGitLab {
owner = "niksu";
repo = "caper";
rev = "v${version}";
hash = "sha256-TSryjz0NrGdkc+6vmfBqsuVpV3N9FvteTFsVqpUcm0w=";
};
nativeBuildInputs = [
ocaml
ocamlPackages.ocamlbuild
ocamlPackages.findlib
ocamlPackages.menhir
gnum4
];
buildInputs = [
ocamlPackages.angstrom
];
strictDeps = true;
buildPhase = ''
runHook preBuild
CAPER_WITH_ENGLISH=yes bash build.sh caper.native
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp caper.native $out/bin/caper
runHook postInstall
'';
meta = {
description = "Tool for understanding and processing pcap (packet capture) expressions";
longDescription = ''
Caper is a tool for understanding and processing "pcap expressions" (also known as *tcpdump filters*) which are used for network packet analysis.
Caper can be used for:
* Expanding out pcap expressions "in full" to understand their implicit features.
* Reasoning about whether two expressions accept the same set of packets, or how their accepted packets differ.
* Converting pcap expressions into BPF programs.
* Converting between pcap expressions and English.
More info can be found in the Caper paper (https://www.nik.network/caper/pcap_semantics.pdf).
'';
homepage = "https://gitlab.com/niksu/caper";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ willow_ch ];
mainProgram = "caper";
};
}