bandwhich: 0.23.0 -> 0.23.1; move to by-name; nixfmt; useFetchCargoVendor (#356934)
[NixPkgs.git] / pkgs / by-name / ca / cantoolz / package.nix
blob7d2d8d9c8c837742d9cc5988b15490cf5579d63a
2   lib,
3   fetchFromGitHub,
4   fetchpatch,
5   python3,
6 }:
8 python3.pkgs.buildPythonApplication rec {
9   pname = "cantoolz";
10   version = "3.7.0";
12   src = fetchFromGitHub {
13     owner = "CANToolz";
14     repo = "CANToolz";
15     rev = "v${version}";
16     sha256 = "sha256-0ROWx1CsKtjxmbCgPYZpvr37VKsEsWCwMehf0/0/cnY=";
17   };
19   patches = [
20     (fetchpatch {
21       # Import Iterable from collections.abc
22       url = "https://github.com/CANToolz/CANToolz/commit/9e818946716a744b3c7356f248e24ea650791d1f.patch";
23       hash = "sha256-BTQ0Io2RF8WpWlLoYfBj8IhL92FRR8ustGClt28/R8c=";
24     })
25     (fetchpatch {
26       # Replace time.clock() which was removed, https://github.com/CANToolz/CANToolz/pull/30
27       url = "https://github.com/CANToolz/CANToolz/pull/30/commits/d75574523d3b273c40fb714532c4de27f9e6dd3e.patch";
28       sha256 = "0g91hywg5q6f2qk1awgklywigclrbhh6a6mwd0kpbkk1wawiiwbc";
29     })
30   ];
32   propagatedBuildInputs = with python3.pkgs; [
33     flask
34     pyserial
35     mido
36     numpy
37     bitstring
38   ];
40   nativeCheckInputs = with python3.pkgs; [
41     pytestCheckHook
42   ];
44   disabledTests = [
45     "test_process"
46     # Sandbox issue
47     "test_server"
48   ];
50   pythonImportsCheck = [
51     "cantoolz"
52   ];
54   meta = with lib; {
55     description = "Black-box CAN network analysis framework";
56     mainProgram = "cantoolz";
57     longDescription = ''
58       CANToolz is a framework for analysing CAN networks and devices. It
59       provides multiple modules that can be chained using CANToolz's pipe
60       system and used by security researchers, automotive/OEM security
61       testers in black-box analysis.
63       CANToolz can be used for ECU discovery, MitM testing, fuzzing, brute
64       forcing, scanning or R&D, testing and validation. More can easily be
65       implemented with a new module.
66     '';
67     homepage = "https://github.com/CANToolz/CANToolz";
68     license = with licenses; [ asl20 ];
69     maintainers = with maintainers; [ fab ];
70   };