1{
2 lib,
3 buildPythonPackage,
4 snap7,
5 fetchFromGitHub,
6 setuptools,
7 pythonOlder,
8}:
9
10buildPythonPackage rec {
11 pname = "python-snap7";
12 version = "1.3";
13 format = "setuptools";
14
15 disabled = pythonOlder "3.6";
16
17 src = fetchFromGitHub {
18 owner = "gijzelaerr";
19 repo = "python-snap7";
20 rev = "refs/tags/${version}";
21 hash = "sha256-90WwgqPHsHbuQUY49cSQblN1jfoLydiG0dm1aMF/NCA=";
22 };
23
24 propagatedBuildInputs = [ setuptools ];
25
26 prePatch = ''
27 substituteInPlace snap7/common.py \
28 --replace "lib_location = None" "lib_location = '${snap7}/lib/libsnap7.so'"
29 '';
30
31 # Tests require root privileges to open privilaged ports
32 doCheck = false;
33
34 pythonImportsCheck = [
35 "snap7"
36 "snap7.util"
37 ];
38
39 meta = with lib; {
40 description = "Python wrapper for the snap7 PLC communication library";
41 mainProgram = "snap7-server";
42 homepage = "https://github.com/gijzelaerr/python-snap7";
43 license = licenses.mit;
44 maintainers = with maintainers; [ freezeboy ];
45 };
46}