nixpkgs/pkgs/development/python-modules/scancode-toolkit/default.nix
2021-04-23 09:11:00 -07:00

123 lines
2.6 KiB
Nix

{ lib
, fetchPypi
, buildPythonPackage
, isPy3k
, markupsafe
, click
, typecode
, gemfileparser
, pefile
, fingerprints
, spdx-tools
, fasteners
, pycryptodome
, urlpy
, dparse
, jaraco_functools
, pkginfo
, debian-inspector
, extractcode
, ftfy
, pyahocorasick
, colorama
, jsonstreams
, packageurl-python
, pymaven-patch
, nltk
, pygments
, bitarray
, jinja2
, javaproperties
, boolean-py
, license-expression
, extractcode-7z
, extractcode-libarchive
, typecode-libmagic
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "scancode-toolkit";
version = "21.3.31";
disabled = !isPy3k;
src = fetchPypi {
inherit pname version;
sha256 = "7e0301031a302dedbb4304a91249534f3d036f84a119170b8a9fe70bd57cff95";
};
dontConfigure = true;
# https://github.com/nexB/scancode-toolkit/issues/2501
# * dparse2 is a "Temp fork for Python 2 support", but pdfminer requires
# Python 3, so it's "fine" to leave dparse2 unpackaged and use the "normal"
# version
# * ftfy was pinned for similar reasons (to support Python 2), but rather than
# packaging an older version, I figured it would be better to remove the
# erroneous (at least for our usage) version bound
# * bitarray's version bound appears to be unnecessary for similar reasons
postPatch = ''
substituteInPlace setup.cfg \
--replace "dparse2" "dparse" \
--replace "ftfy < 5.0.0" "ftfy" \
--replace "bitarray >= 0.8.1, < 1.0.0" "bitarray"
'';
propagatedBuildInputs = [
markupsafe
click
typecode
gemfileparser
pefile
fingerprints
spdx-tools
fasteners
pycryptodome
urlpy
dparse
jaraco_functools
pkginfo
debian-inspector
extractcode
ftfy
pyahocorasick
colorama
jsonstreams
packageurl-python
pymaven-patch
nltk
pygments
bitarray
jinja2
javaproperties
boolean-py
license-expression
extractcode-7z
extractcode-libarchive
typecode-libmagic
];
checkInputs = [
pytestCheckHook
];
# Importing scancode needs a writeable home, and preCheck happens in between
# pythonImportsCheckPhase and pytestCheckPhase.
postInstall = ''
export HOME=$(mktemp -d)
'';
pythonImportsCheck = [
"scancode"
];
# takes a long time and doesn't appear to do anything
dontStrip = true;
meta = with lib; {
description = "A tool to scan code for license, copyright, package and their documented dependencies and other interesting facts";
homepage = "https://github.com/nexB/scancode-toolkit";
license = with licenses; [ asl20 cc-by-40 ];
maintainers = teams.determinatesystems.members;
};
}