1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
{
lib,
stdenv,
# Enables some expensive tests, useful for verifying an update
afdko,
antlr4_13,
booleanoperations,
buildPythonPackage,
cmake,
defcon,
fetchFromGitHub,
fetchpatch,
fontmath,
fontpens,
fonttools,
libxml2,
mutatormath,
ninja,
pytestCheckHook,
pythonOlder,
runAllTests ? false,
scikit-build,
setuptools-scm,
tqdm,
ufonormalizer,
ufoprocessor,
}:
buildPythonPackage rec {
pname = "afdko";
version = "4.0.2";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "adobe-type-tools";
repo = "afdko";
tag = version;
hash = "sha256:0955dvbydifhgx9gswbf5drsmmghry7iyf6jwz6qczhj86clswcm";
};
build-system = [ setuptools-scm ];
nativeBuildInputs = [
scikit-build
cmake
ninja
];
buildInputs = [
antlr4_13.runtime.cpp
libxml2.dev
];
patches = [
# Don't try to install cmake and ninja using pip
./no-pypi-build-tools.patch
# Use antlr4 runtime from nixpkgs and link it dynamically
./use-dynamic-system-antlr4-runtime.patch
# Fix tests
# FIXME: remove in 5.0
(fetchpatch {
url = "https://github.com/adobe-type-tools/afdko/commit/3b78bea15245e2bd2417c25ba5c2b8b15b07793c.patch";
excludes = [
"CMakeLists.txt"
"requirements.txt"
];
hash = "sha256-Ao5AUVm1h4a3qidqlBFWdC7jiXyBfXQEnsT7XsXXXRU=";
})
];
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang (toString [
"-Wno-error=incompatible-function-pointer-types"
"-Wno-error=int-conversion"
]);
# setup.py will always (re-)execute cmake in buildPhase
dontConfigure = true;
dependencies =
[
booleanoperations
defcon
fontmath
fontpens
fonttools
mutatormath
tqdm
ufonormalizer
ufoprocessor
]
++ defcon.optional-dependencies.lxml
++ fonttools.optional-dependencies.lxml
++ fonttools.optional-dependencies.ufo
++ fonttools.optional-dependencies.unicode
++ fonttools.optional-dependencies.woff;
# Use system libxml2
FORCE_SYSTEM_LIBXML2 = true;
nativeCheckInputs = [ pytestCheckHook ];
preCheck = ''
export PATH=$PATH:$out/bin
# Remove build artifacts to prevent them from messing with the tests
rm -rf _skbuild
'';
disabledTests =
[
# broke in the fontforge 4.51 -> 4.53 update
"test_glyphs_2_7"
"test_hinting_data"
"test_waterfallplot"
# broke at some point
"test_type1_supported_hint"
]
++ lib.optionals (stdenv.cc.isGNU) [
# broke in the gcc 13 -> 14 update
"test_dump"
"test_input_formats"
"test_other_input_formats"
]
++ lib.optionals (!runAllTests) [
# Disable slow tests, reduces test time ~25 %
"test_report"
"test_post_overflow"
"test_cjk"
"test_extrapolate"
"test_filename_without_dir"
"test_overwrite"
"test_options"
]
++ lib.optionals (stdenv.hostPlatform.isAarch || stdenv.hostPlatform.isRiscV) [
# unknown reason so far
# https://github.com/adobe-type-tools/afdko/issues/1425
"test_spec"
]
++ lib.optionals (stdenv.hostPlatform.isi686) [
"test_dump_option"
"test_type1mm_inputs"
];
passthru.tests = {
fullTestsuite = afdko.override { runAllTests = true; };
};
meta = with lib; {
description = "Adobe Font Development Kit for OpenType";
changelog = "https://github.com/adobe-type-tools/afdko/blob/${version}/NEWS.md";
homepage = "https://adobe-type-tools.github.io/afdko";
license = licenses.asl20;
maintainers = with maintainers; [ sternenseemann ];
};
}
|