depot/third_party/nixpkgs/pkgs/development/python-modules/gftools/default.nix

208 lines
4.5 KiB
Nix
Raw Normal View History

{
lib,
fetchFromGitHub,
buildPythonPackage,
pytestCheckHook,
setuptools,
setuptools-scm,
absl-py,
afdko,
axisregistry,
babelfont,
beautifulsoup4,
black,
brotli,
bumpfontversion,
coreutils,
diffenator2,
font-v,
fontbakery,
fontfeatures,
fontmake,
fonttools,
gflanguages,
gfsubsets,
glyphsets,
glyphslib,
harfbuzz,
jinja2,
nanoemoji,
networkx,
ninja,
opentype-feature-freezer,
ots-python,
packaging,
paintcompiler,
pillow,
protobuf,
pycairo,
pygit2,
pygithub,
pytest,
pyyaml,
requests,
rich,
ruamel-yaml,
skia-pathops,
statmake,
strictyaml,
tabulate,
ttfautohint-py,
ufomerge,
unidecode,
vharfbuzz,
vttlib,
python,
}:
let
fontmake' = python.withPackages (ps: [ ps.fontmake ] ++ ps.fontmake.optional-dependencies.json);
fonttools' = python.withPackages (ps: [ ps.fonttools ] ++ ps.fonttools.optional-dependencies.ufo);
in
buildPythonPackage rec {
pname = "gftools";
version = "0.9.68";
pyproject = true;
src = fetchFromGitHub {
owner = "googlefonts";
repo = "gftools";
rev = "refs/tags/v${version}";
hash = "sha256-xdpfRCtZDxRmrGodXUg8J0T5l5gd7Mvl290BXwNLzvY=";
};
postPatch = ''
substituteInPlace \
Lib/gftools/builder/operations/{buildTTF,glyphs2ds,buildVariable,buildOTF}.py \
--replace-fail '"fontmake' '"${lib.getExe' fontmake' "fontmake"}'
substituteInPlace \
Lib/gftools/builder/operations/instantiateUfo.py \
--replace-fail "'fontmake" "'${lib.getExe' fontmake' "fontmake"}"
substituteInPlace \
Lib/gftools/builder/operations/{compress,subspace}.py \
--replace-fail '"fonttools' '"${lib.getExe' fonttools' "fonttools"}'
substituteInPlace \
Lib/gftools/builder/operations/hbsubset.py \
--replace-fail '"pyftsubset"' '"${lib.getExe' fonttools' "pyftsubset"}"' \
--replace-fail '"hb-subset"' '"${lib.getExe' harfbuzz "hb-subset"}"'
substituteInPlace \
Lib/gftools/builder/operations/autohintOTF.py \
--replace-fail '"otfautohint' '"${lib.getExe' afdko "otfautohint"}'
substituteInPlace \
Lib/gftools/builder/operations/paintcompiler.py \
--replace-fail '"paintcompiler' '"${lib.getExe paintcompiler}'
substituteInPlace \
Lib/gftools/builder/operations/featureFreeze.py \
--replace-fail '"pyftfeatfreeze' '"${lib.getExe opentype-feature-freezer}'
substituteInPlace \
Lib/gftools/builder/operations/copy.py \
--replace-fail '"cp' '"${lib.getExe' coreutils "cp"}'
substituteInPlace \
Lib/gftools/builder/operations/{fix,remap,autohint,buildStat,addSubset,remapLayout,buildVTT}.py \
--replace-fail '"gftools' '"${placeholder "out"}/bin/gftools'
substituteInPlace \
Lib/gftools/builder/operations/rename.py \
--replace-fail "'gftools" "'${placeholder "out"}t/bin/gftools"
'';
pythonRelaxDeps = [
"protobuf"
"pygit2"
];
build-system = [
setuptools
setuptools-scm
];
dependencies = [
absl-py
afdko
axisregistry
babelfont
beautifulsoup4
brotli
bumpfontversion
font-v
fontfeatures
fontmake
fonttools
gflanguages
gfsubsets
glyphsets
glyphslib
jinja2
nanoemoji
networkx
ninja
ots-python
packaging
pillow
protobuf
pygit2
pygithub
pyyaml
requests
rich
ruamel-yaml
setuptools
skia-pathops
statmake
strictyaml
tabulate
ttfautohint-py
ufomerge
unidecode
vharfbuzz
vttlib
] ++ fonttools.optional-dependencies.ufo ++ fontmake.optional-dependencies.json;
optional-dependencies = {
qa = [
diffenator2
fontbakery
pycairo
];
test = [
black
pytest
];
};
nativeCheckInputs = [ pytestCheckHook ];
disabledTestPaths = [
# Wants none exsiting module
"bin/test_args.py"
# Requires internet
"tests/push/test_items.py"
"tests/test_gfgithub.py"
"tests/test_usage.py"
"tests/push/test_servers.py"
# Can't find directory
"tests/test_builder.py"
"tests/test_dependencies.py"
"tests/test_fix.py"
];
pythonImportsCheck = [ "gftools" ];
meta = with lib; {
description = "Misc tools for working with the Google Fonts library";
homepage = "https://github.com/googlefonts/gftools";
changelog = "https://github.com/googlefonts/gftools/releases/tag/v${version}";
license = licenses.asl20;
mainProgram = "gftools";
maintainers = with maintainers; [ jopejoe1 ];
};
}