2020-06-19 19:42:09 +02:00
|
|
|
{ lib, stdenv, fetchurl, runCommand, makeWrapper, python3Packages, docutils, help2man
|
2020-05-30 01:25:14 +02:00
|
|
|
, abootimg, acl, apktool, binutils-unwrapped, build-tools, bzip2, cbfstool, cdrkit, colord, colordiff, coreutils, cpio, db, diffutils, dtc
|
2020-06-13 04:31:01 +02:00
|
|
|
, e2fsprogs, file, findutils, fontforge-fonttools, ffmpeg, fpc, gettext, ghc, ghostscriptX, giflib, gnumeric, gnupg, gnutar
|
2020-05-30 01:25:14 +02:00
|
|
|
, gzip, hdf5, imagemagick, jdk, libarchive, libcaca, llvm, lz4, mono, openssh, openssl, pdftk, pgpdump, poppler_utils, qemu, R
|
|
|
|
, sng, sqlite, squashfsTools, tcpdump, odt2txt, unzip, wabt, xxd, xz, zip, zstd
|
2016-01-12 14:25:26 +01:00
|
|
|
, enableBloat ? false
|
2015-08-04 05:04:12 +02:00
|
|
|
}:
|
|
|
|
|
2018-07-19 01:31:23 +02:00
|
|
|
# Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
|
2020-05-30 01:25:14 +02:00
|
|
|
let
|
|
|
|
apksigner = runCommand "apksigner" { nativeBuildInputs = [ makeWrapper ]; } ''
|
|
|
|
mkdir -p $out/bin
|
|
|
|
makeWrapper "${jdk}/bin/java" "$out/bin/apksigner" \
|
|
|
|
--add-flags "-jar ${builtins.head build-tools}/libexec/android-sdk/build-tools/28.0.3/lib/apksigner.jar"
|
|
|
|
'';
|
|
|
|
in
|
2017-08-31 09:53:02 +02:00
|
|
|
python3Packages.buildPythonApplication rec {
|
2019-10-04 12:40:43 +02:00
|
|
|
pname = "diffoscope";
|
2020-09-12 02:39:53 +02:00
|
|
|
version = "160";
|
2015-08-04 05:04:12 +02:00
|
|
|
|
2019-10-04 12:40:43 +02:00
|
|
|
src = fetchurl {
|
|
|
|
url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
|
2020-09-12 02:39:53 +02:00
|
|
|
sha256 = "1nshcgq31nrbh4r70i5azs7s0wfc4llb60ka1w8rncy22rg8rabc";
|
2015-08-04 05:04:12 +02:00
|
|
|
};
|
|
|
|
|
2020-04-25 01:26:01 +02:00
|
|
|
outputs = [ "out" "man" ];
|
|
|
|
|
2017-08-31 09:53:02 +02:00
|
|
|
patches = [
|
2017-09-13 16:03:38 +02:00
|
|
|
./ignore_links.patch
|
2020-05-30 01:25:14 +02:00
|
|
|
./skip-failing-test.patch
|
2017-08-31 09:53:02 +02:00
|
|
|
];
|
2016-01-12 17:00:24 +01:00
|
|
|
|
2015-08-04 05:04:12 +02:00
|
|
|
postPatch = ''
|
|
|
|
# Upstream doesn't provide a PKG-INFO file
|
2015-09-27 06:10:25 +02:00
|
|
|
sed -i setup.py -e "/'rpm-python',/d"
|
2018-07-18 23:36:15 +02:00
|
|
|
|
|
|
|
# When generating manpage, use the installed version
|
|
|
|
substituteInPlace doc/Makefile --replace "../bin" "$out/bin"
|
2015-08-04 05:04:12 +02:00
|
|
|
'';
|
|
|
|
|
2017-12-26 17:25:27 +01:00
|
|
|
nativeBuildInputs = [ docutils help2man ];
|
|
|
|
|
2018-07-19 01:31:23 +02:00
|
|
|
# Most of the non-Python dependencies here are optional command-line tools for various file-format parsers.
|
|
|
|
# To help figuring out what's missing from the list, run: ./pkgs/tools/misc/diffoscope/list-missing-tools.sh
|
|
|
|
#
|
2020-05-30 01:25:14 +02:00
|
|
|
# Still missing these tools: docx2txt dumppdf dumpxsb enjarify lipo ocamlobjinfo oggDump otool procyon
|
2020-01-14 10:56:52 +01:00
|
|
|
pythonPath = [
|
|
|
|
binutils-unwrapped bzip2 colordiff coreutils cpio db diffutils
|
2018-03-03 21:30:00 +01:00
|
|
|
dtc e2fsprogs file findutils fontforge-fonttools gettext gnutar gzip
|
2020-05-30 01:25:14 +02:00
|
|
|
libarchive libcaca lz4 openssl pgpdump sng sqlite squashfsTools unzip xxd
|
|
|
|
xz zip zstd
|
2020-01-14 10:56:52 +01:00
|
|
|
]
|
2020-05-30 01:25:14 +02:00
|
|
|
++ (with python3Packages; [
|
|
|
|
argcomplete debian defusedxml jsondiff jsbeautifier libarchive-c
|
|
|
|
python_magic progressbar33 pypdf2 rpm tlsh
|
|
|
|
])
|
2020-01-14 10:56:52 +01:00
|
|
|
++ lib.optionals stdenv.isLinux [ python3Packages.pyxattr acl cdrkit ]
|
2020-05-30 01:25:14 +02:00
|
|
|
++ lib.optionals enableBloat ([
|
2020-06-13 04:31:01 +02:00
|
|
|
abootimg apksigner apktool cbfstool colord ffmpeg fpc ghc ghostscriptX giflib gnupg gnumeric
|
2020-05-30 01:25:14 +02:00
|
|
|
hdf5 imagemagick llvm jdk mono odt2txt openssh pdftk poppler_utils qemu R tcpdump wabt
|
|
|
|
] ++ (with python3Packages; [ binwalk guestfs h5py ]));
|
2017-03-20 14:19:50 +01:00
|
|
|
|
2020-05-30 01:25:14 +02:00
|
|
|
checkInputs = with python3Packages; [ pytest ] ++ pythonPath;
|
2015-08-04 05:04:12 +02:00
|
|
|
|
|
|
|
postInstall = ''
|
2017-12-26 17:25:27 +01:00
|
|
|
make -C doc
|
2015-08-04 05:04:12 +02:00
|
|
|
mkdir -p $out/share/man/man1
|
2017-12-26 17:25:27 +01:00
|
|
|
cp doc/diffoscope.1 $out/share/man/man1/diffoscope.1
|
2015-08-04 05:04:12 +02:00
|
|
|
'';
|
|
|
|
|
|
|
|
meta = with stdenv.lib; {
|
|
|
|
description = "Perform in-depth comparison of files, archives, and directories";
|
|
|
|
longDescription = ''
|
|
|
|
diffoscope will try to get to the bottom of what makes files or directories
|
|
|
|
different. It will recursively unpack archives of many kinds and transform
|
|
|
|
various binary formats into more human readable form to compare them. It can
|
|
|
|
compare two tarballs, ISO images, or PDF just as easily. The differences can
|
|
|
|
be shown in a text or HTML report.
|
|
|
|
|
|
|
|
diffoscope is developed as part of the "reproducible builds" Debian
|
|
|
|
project and was formerly known as "debbindiff".
|
|
|
|
'';
|
2020-02-23 23:22:46 +01:00
|
|
|
homepage = "https://diffoscope.org/";
|
2017-08-31 09:53:02 +02:00
|
|
|
license = licenses.gpl3Plus;
|
2020-06-12 18:23:16 +02:00
|
|
|
maintainers = with maintainers; [ dezgeg ma27 danielfullmer ];
|
2020-01-14 10:56:52 +01:00
|
|
|
platforms = platforms.unix;
|
2015-08-04 05:04:12 +02:00
|
|
|
};
|
|
|
|
}
|