1{ lib, stdenv, fetchgit, python3Packages, docutils, help2man
2, acl, apktool, binutils-unwrapped, bzip2, cbfstool, cdrkit, colord, colordiff, coreutils, cpio, db, diffutils, dtc
3, e2fsprogs, file, findutils, fontforge-fonttools, fpc, gettext, ghc, ghostscriptX, giflib, gnupg1, gnutar
4, gzip, imagemagick, jdk, libarchive, libcaca, llvm, mono, openssh, pdftk, pgpdump, poppler_utils, sng, sqlite
5, squashfsTools, tcpdump, unoconv, unzip, xxd, xz
6, enableBloat ? false
7}:
8
9python3Packages.buildPythonApplication rec {
10 name = "diffoscope-${version}";
11 version = "91";
12
13 src = fetchgit {
14 url = "git://anonscm.debian.org/reproducible/diffoscope.git";
15 rev = "refs/tags/${version}";
16 sha256 = "16xqy71115cj4kws6bkcjm98nlaff3a32fz82rn2l1xk9w9n3dnz";
17 };
18
19 patches = [
20 ./ignore_links.patch
21 ];
22
23 postPatch = ''
24 # Upstream doesn't provide a PKG-INFO file
25 sed -i setup.py -e "/'rpm-python',/d"
26 '';
27
28 nativeBuildInputs = [ docutils help2man ];
29
30 # Still missing these tools: abootimg docx2txt dumpxsb enjarify js-beautify lipo oggDump otool procyon-decompiler Rscript
31 # Also these libraries: python3-guestfs
32 pythonPath = with python3Packages; [ debian libarchive-c python_magic tlsh rpm ] ++ [
33 acl binutils-unwrapped bzip2 cdrkit colordiff coreutils cpio db diffutils
34 dtc e2fsprogs file findutils fontforge-fonttools gettext gnutar gzip
35 libarchive libcaca pgpdump sng sqlite squashfsTools unzip xxd xz
36 ] ++ lib.optionals enableBloat [
37 apktool cbfstool colord fpc ghc ghostscriptX giflib gnupg1 imagemagick
38 llvm jdk mono openssh pdftk poppler_utils tcpdump unoconv
39 ];
40
41 doCheck = false; # Calls 'mknod' in squashfs tests, which needs root
42 checkInputs = with python3Packages; [ pytest ];
43
44 postInstall = ''
45 make -C doc
46 mkdir -p $out/share/man/man1
47 cp doc/diffoscope.1 $out/share/man/man1/diffoscope.1
48 '';
49
50 meta = with stdenv.lib; {
51 description = "Perform in-depth comparison of files, archives, and directories";
52 longDescription = ''
53 diffoscope will try to get to the bottom of what makes files or directories
54 different. It will recursively unpack archives of many kinds and transform
55 various binary formats into more human readable form to compare them. It can
56 compare two tarballs, ISO images, or PDF just as easily. The differences can
57 be shown in a text or HTML report.
58
59 diffoscope is developed as part of the "reproducible builds" Debian
60 project and was formerly known as "debbindiff".
61 '';
62 homepage = https://wiki.debian.org/ReproducibleBuilds;
63 license = licenses.gpl3Plus;
64 maintainers = with maintainers; [ dezgeg ];
65 platforms = platforms.linux;
66 };
67}