1{
2 lib,
3 appdirs,
4 buildPythonPackage,
5 configargparse,
6 decorator,
7 dict2xml,
8 fetchFromGitHub,
9 google-i18n-address,
10 html5lib,
11 intervaltree,
12 jinja2,
13 lxml,
14 markupsafe,
15 platformdirs,
16 pycairo,
17 pycountry,
18 pyflakes,
19 pypdf2,
20 pytestCheckHook,
21 python-fontconfig,
22 pythonOlder,
23 pyyaml,
24 requests,
25 six,
26 wcwidth,
27}:
28
29buildPythonPackage rec {
30 pname = "xml2rfc";
31 version = "3.21.0";
32 format = "setuptools";
33
34 disabled = pythonOlder "3.8";
35
36 src = fetchFromGitHub {
37 owner = "ietf-tools";
38 repo = "xml2rfc";
39 rev = "refs/tags/v${version}";
40 hash = "sha256-7lYNEyoLYbxn1ld08eXaN8BumYhN9EftpHQKxdu64MY=";
41 };
42
43 postPatch = ''
44 substituteInPlace Makefile \
45 --replace "SHELL := /bin/bash" "SHELL := bash" \
46 --replace "test flaketest" "test"
47 substituteInPlace setup.py \
48 --replace "'tox'," ""
49 '';
50
51 propagatedBuildInputs = [
52 appdirs
53 configargparse
54 dict2xml
55 google-i18n-address
56 html5lib
57 intervaltree
58 jinja2
59 lxml
60 markupsafe
61 platformdirs
62 pycountry
63 pyflakes
64 pypdf2
65 pyyaml
66 requests
67 six
68 wcwidth
69 ];
70
71 nativeCheckInputs = [
72 decorator
73 pycairo
74 pytestCheckHook
75 python-fontconfig
76 ];
77
78 # Requires Noto Serif and Roboto Mono font
79 doCheck = false;
80
81 checkPhase = ''
82 make tests-no-network
83 '';
84
85 pythonImportsCheck = [ "xml2rfc" ];
86
87 meta = with lib; {
88 description = "Tool generating IETF RFCs and drafts from XML sources";
89 mainProgram = "xml2rfc";
90 homepage = "https://github.com/ietf-tools/xml2rfc";
91 changelog = "https://github.com/ietf-tools/xml2rfc/blob/v${version}/CHANGELOG.md";
92 # Well, parts might be considered unfree, if being strict; see:
93 # http://metadata.ftp-master.debian.org/changelogs/non-free/x/xml2rfc/xml2rfc_2.9.6-1_copyright
94 license = licenses.bsd3;
95 maintainers = with maintainers; [
96 vcunat
97 yrashk
98 ];
99 };
100}