Files
nixpkgs/pkgs/development/python-modules/sphinx/default.nix
Maximilian Bosch cd72014a87 python3.pkgs.jinja2: don't build offline documentation by default
E.g. `systemd` fails like this:

    last 25 log lines:
    > Checking for function "blkid_probe_set_hint" with dependency blkid: YES
    > Run-time dependency libkmod found: YES 30
    > Run-time dependency xencontrol found: NO (tried pkgconfig and cmake)
    > Run-time dependency libmicrohttpd found: NO (tried pkgconfig and cmake)
    > Checking for function "crypt_activate_by_token_pin" : NO
    > Run-time dependency libiptc found: NO (tried pkgconfig and cmake)
    > Run-time dependency libqrencode found: NO (tried pkgconfig and cmake)
    > Run-time dependency gnutls found: NO (tried pkgconfig and cmake)
    > Run-time dependency openssl found: NO (tried pkgconfig, system and cmake)
    > Run-time dependency p11-kit-1 found: NO (tried pkgconfig and cmake)
    > Run-time dependency tss2-esys tss2-rc tss2-mu found: NO (tried pkgconfig and cmake)
    > Run-time dependency libdw found: NO (tried pkgconfig and cmake)
    > Run-time dependency zlib found: NO (tried pkgconfig, cmake and system)
    > Library bz2 found: NO
    > Run-time dependency liblzma found: NO (tried pkgconfig and cmake)
    > Run-time dependency libzstd found: NO (tried pkgconfig and cmake)
    > Run-time dependency xkbcommon found: NO (tried pkgconfig and cmake)
    > Run-time dependency libpcre2-8 found: NO (tried pkgconfig and cmake)
    > Run-time dependency dbus-1 found: NO (tried pkgconfig and cmake)
    > Message: default-dnssec cannot be set to yes or allow-downgrade openssl and gcrypt are disabled. Setting default-dnssec to no.
    > Program python3 (jinja2) found: NO
    >
    > meson.build:1949:15: ERROR: python3 is missing modules: jinja2

Upon trying more packages I realized that this is not the only one (it
appears to be related to `python3.withPackages` in some cases).

For now, flip the default to unbreak a lot of stuff and remove the
`enableDocumentation = false;` hacks from a bunch of other packages.
2023-04-30 08:51:32 -04:00

160 lines
3.9 KiB
Nix

{ stdenv
, lib
, buildPythonPackage
, pythonOlder
, fetchFromGitHub
, fetchpatch
# nativeBuildInputs
, flit-core
# propagatedBuildInputs
, babel
, alabaster
, docutils
, imagesize
, importlib-metadata
, jinja2
, packaging
, pygments
, requests
, snowballstemmer
, sphinxcontrib-apidoc
, sphinxcontrib-applehelp
, sphinxcontrib-devhelp
, sphinxcontrib-htmlhelp
, sphinxcontrib-jsmath
, sphinxcontrib-qthelp
, sphinxcontrib-serializinghtml
, sphinxcontrib-websupport
# check phase
, cython
, html5lib
, pytestCheckHook
, typed-ast
}:
buildPythonPackage rec {
pname = "sphinx";
version = "5.3.0";
format = "pyproject";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "sphinx-doc";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-80bVg1rfBebgSOKbWkzP84vpm39iLgM8lWlVD64nSsQ=";
postFetch = ''
cd $out
mv tests/roots/test-images/testimäge.png \
tests/roots/test-images/testimæge.png
patch -p1 < ${./0001-test-images-Use-normalization-equivalent-character.patch}
'';
};
nativeBuildInputs = [
flit-core
];
propagatedBuildInputs = [
babel
alabaster
docutils
imagesize
jinja2
packaging
pygments
requests
snowballstemmer
sphinxcontrib-applehelp
sphinxcontrib-devhelp
sphinxcontrib-htmlhelp
sphinxcontrib-jsmath
sphinxcontrib-qthelp
sphinxcontrib-serializinghtml
# extra[docs]
sphinxcontrib-websupport
# extra plugins which are otherwise not found by sphinx-build
sphinxcontrib-apidoc
] ++ lib.optionals (pythonOlder "3.10") [
importlib-metadata
];
nativeCheckInputs = [
cython
html5lib
pytestCheckHook
] ++ lib.optionals (pythonOlder "3.8") [
typed-ast
];
preCheck = ''
export HOME=$(mktemp -d)
'';
disabledTests = [
# requires network access
"test_anchors_ignored"
"test_defaults"
"test_defaults_json"
"test_latex_images"
# requires imagemagick (increases build closure size), doesn't
# test anything substantial
"test_ext_imgconverter"
# fails with pygments 2.14
# TODO remove for sphinx 6
"test_viewcode"
"test_additional_targets_should_be_translated"
"test_additional_targets_should_not_be_translated"
# sphinx.errors.VersionRequirementError: The alabaster extension
# used by this project needs at least Sphinx v1.6; it therefore
# cannot be built with this version.
"test_needs_sphinx"
# Likely due to pygments 2.14 update
# AssertionError: assert '5:11:17\u202fAM' == '5:11:17 AM'
"test_format_date"
] ++ lib.optionals stdenv.isDarwin [
# Due to lack of network sandboxing can't guarantee port 7777 isn't bound
"test_inspect_main_url"
"test_auth_header_uses_first_match"
"test_linkcheck_allowed_redirects"
"test_linkcheck_request_headers"
"test_linkcheck_request_headers_no_slash"
"test_follows_redirects_on_HEAD"
"test_get_after_head_raises_connection_error"
"test_invalid_ssl"
"test_connect_to_selfsigned_with_tls_verify_false"
"test_connect_to_selfsigned_with_tls_cacerts"
"test_connect_to_selfsigned_with_requests_env_var"
"test_connect_to_selfsigned_nonexistent_cert_file"
"test_TooManyRedirects_on_HEAD"
"test_too_many_requests_retry_after_int_del"
"test_too_many_requests_retry_after_HTTP_date"
"test_too_many_requests_retry_after_without_header"
"test_too_many_requests_user_timeout"
"test_raises_for_invalid_status"
"test_auth_header_no_match"
"test_follows_redirects_on_GET"
"test_connect_to_selfsigned_fails"
];
meta = with lib; {
description = "Python documentation generator";
longDescription = ''
A tool that makes it easy to create intelligent and beautiful
documentation for Python projects
'';
homepage = "https://www.sphinx-doc.org";
license = licenses.bsd3;
maintainers = teams.sphinx.members;
};
}