depot/third_party/nixpkgs/pkgs/by-name/bi/binwalk/package.nix

125 lines
2.6 KiB
Nix

{
bzip2,
cabextract,
dmg2img,
dtc,
dumpifs,
enableUnfree ? false,
fetchFromGitHub,
fontconfig,
gnutar,
jefferson,
lib,
lzfse,
lzo,
lzop,
lz4,
openssl_3,
pkg-config,
python3,
rustPlatform,
sasquatch,
sleuthkit,
srec2bin,
stdenv,
ubi_reader,
ucl,
uefi-firmware-parser,
unrar,
unyaffs,
unzip,
versionCheckHook,
vmlinux-to-elf,
xz,
zlib,
zstd,
_7zz,
}:
rustPlatform.buildRustPackage rec {
pname = "binwalk";
version = "3.1.0";
src = fetchFromGitHub {
owner = "ReFirmLabs";
repo = "binwalk";
tag = "v${version}";
hash = "sha256-em+jOnhCZH5EEJrhXTHmxiwpMcBr5oNU1+5IJ1H/oco=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-cnJVeuvNNApEHqgZDcSgqkH3DKAr8+HkqXUH9defTCA=";
nativeBuildInputs = [ pkg-config ];
# https://github.com/ReFirmLabs/binwalk/commits/master/dependencies
buildInputs = [
bzip2
cabextract
dmg2img
dtc
dumpifs
fontconfig
gnutar
jefferson
lzfse
lzo
lzop
lz4
openssl_3
python3.pkgs.python-lzo
sasquatch
sleuthkit
srec2bin
ubi_reader
ucl
uefi-firmware-parser
unyaffs
unzip
vmlinux-to-elf
xz
zlib
zstd
_7zz
] ++ lib.optionals enableUnfree [ unrar ];
# skip broken tests
checkFlags =
[
"--skip=binwalk::Binwalk"
"--skip=binwalk::Binwalk::scan"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"--skip=binwalk::Binwalk::analyze"
"--skip=binwalk::Binwalk::extract"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
"--skip=extractors::common::Chroot::append_to_file"
"--skip=extractors::common::Chroot::carve_file"
"--skip=extractors::common::Chroot::create_block_device"
"--skip=extractors::common::Chroot::create_character_device"
"--skip=extractors::common::Chroot::create_directory"
"--skip=extractors::common::Chroot::create_fifo"
"--skip=extractors::common::Chroot::create_file"
"--skip=extractors::common::Chroot::create_socket"
"--skip=extractors::common::Chroot::create_symlink"
"--skip=extractors::common::Chroot::make_executable"
];
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
versionCheckProgramArg = "-V";
meta = {
description = "Firmware Analysis Tool";
homepage = "https://github.com/ReFirmLabs/binwalk";
changelog = "https://github.com/ReFirmLabs/binwalk/releases/tag/v${version}";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
koral
felbinger
];
mainProgram = "binwalk";
};
}