1{
2 lib,
3 attrs,
4 beautifulsoup4,
5 bitarray,
6 boolean-py,
7 buildPythonPackage,
8 chardet,
9 click,
10 colorama,
11 commoncode,
12 container-inspector,
13 debian-inspector,
14 dparse2,
15 extractcode,
16 extractcode-7z,
17 extractcode-libarchive,
18 fasteners,
19 fetchPypi,
20 fingerprints,
21 ftfy,
22 gemfileparser2,
23 html5lib,
24 importlib-metadata,
25 intbitset,
26 jaraco-functools,
27 javaproperties,
28 jinja2,
29 jsonstreams,
30 license-expression,
31 lxml,
32 markupsafe,
33 packageurl-python,
34 packaging,
35 parameter-expansion-patched,
36 pefile,
37 pip-requirements-parser,
38 pkginfo2,
39 pluggy,
40 plugincode,
41 publicsuffix2,
42 pyahocorasick,
43 pycryptodome,
44 pygmars,
45 pygments,
46 pymaven-patch,
47 pytestCheckHook,
48 pythonOlder,
49 requests,
50 saneyaml,
51 setuptools,
52 spdx-tools,
53 text-unidecode,
54 toml,
55 typecode,
56 typecode-libmagic,
57 urlpy,
58 xmltodict,
59 zipp,
60}:
61
62buildPythonPackage rec {
63 pname = "scancode-toolkit";
64 version = "32.4.1";
65 pyproject = true;
66
67 disabled = pythonOlder "3.7";
68
69 src = fetchPypi {
70 inherit pname version;
71 hash = "sha256-qZUILeB1lGv0V9Uq81/aOI9pJTtayfZH/O5kwNnpf28=";
72 };
73
74 dontConfigure = true;
75
76 build-system = [ setuptools ];
77
78 dependencies = [
79 attrs
80 beautifulsoup4
81 bitarray
82 boolean-py
83 chardet
84 click
85 colorama
86 commoncode
87 container-inspector
88 debian-inspector
89 dparse2
90 extractcode
91 extractcode-7z
92 extractcode-libarchive
93 fasteners
94 fingerprints
95 ftfy
96 gemfileparser2
97 html5lib
98 importlib-metadata
99 intbitset
100 jaraco-functools
101 javaproperties
102 jinja2
103 jsonstreams
104 license-expression
105 lxml
106 markupsafe
107 packageurl-python
108 packaging
109 parameter-expansion-patched
110 pefile
111 pip-requirements-parser
112 pkginfo2
113 pluggy
114 plugincode
115 publicsuffix2
116 pyahocorasick
117 pycryptodome
118 pygmars
119 pygments
120 pymaven-patch
121 requests
122 saneyaml
123 spdx-tools
124 text-unidecode
125 toml
126 typecode
127 typecode-libmagic
128 urlpy
129 xmltodict
130 ]
131 ++ lib.optionals (pythonOlder "3.9") [ zipp ];
132
133 nativeCheckInputs = [ pytestCheckHook ];
134
135 # Importing scancode needs a writeable home, and preCheck happens in between
136 # pythonImportsCheckPhase and pytestCheckPhase.
137 postInstall = ''
138 export HOME=$(mktemp -d)
139 '';
140
141 pythonImportsCheck = [ "scancode" ];
142
143 disabledTestPaths = [
144 # Tests are outdated
145 "src/formattedcode/output_spdx.py"
146 "src/scancode/cli.py"
147 ];
148
149 # Takes a long time and doesn't appear to do anything
150 dontStrip = true;
151
152 meta = with lib; {
153 description = "Tool to scan code for license, copyright, package and their documented dependencies and other interesting facts";
154 homepage = "https://github.com/nexB/scancode-toolkit";
155 changelog = "https://github.com/nexB/scancode-toolkit/blob/v${version}/CHANGELOG.rst";
156 license = with licenses; [
157 asl20
158 cc-by-40
159 ];
160 maintainers = [ ];
161 };
162}