Describe the bug/problem
When following the directions in the README, the pip3 command fails to finish because lxml doesn't build.
To Reproduce
Steps to reproduce the behavior:
- Follow the steps in the README
Logfile
`Building wheels for collected packages: lxml
Building wheel for lxml (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for lxml (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [135 lines of output]
/tmp/pip-build-env-1zrj5dee/overlay/lib/python3.14/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!
********************************************************************************
Please consider removing the following classifiers in favor of a SPDX license expression:
License :: OSI Approved :: BSD License
See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************
!!
self._finalize_license_expression()
Building lxml version 5.3.2.
Building without Cython.
Building against libxml2 2.15.3 and libxslt 1.1.45
running bdist_wheel
running build
running build_py
creating build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/sax.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/cssselect.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/builder.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/__init__.py -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-cpython-314/lxml
creating build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-cpython-314/lxml/includes
creating build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/diff.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/defs.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/clean.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/builder.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-cpython-314/lxml/html
copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-cpython-314/lxml/html
creating build/lib.linux-x86_64-cpython-314/lxml/isoschematron
copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron
copying src/lxml/etree.h -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/etree_api.h -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/objectify.pyx -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/etree.pyx -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/xsltext.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/xslt.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/xpath.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/xmlschema.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/xmlid.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/xmlerror.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/xinclude.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/serializer.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/schematron.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/saxparser.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/relaxng.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/readonlytree.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/public-api.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/proxy.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/parsertarget.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/parser.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/objectpath.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/nsclasses.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/iterparse.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/extensions.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/dtd.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/docloader.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/debug.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/cleanup.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/classlookup.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/apihelpers.pxi -> build/lib.linux-x86_64-cpython-314/lxml
copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/__init__.pxd -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-cpython-314/lxml/includes
copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-cpython-314/lxml/includes
creating build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/rng
copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/rng
creating build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl
copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl
copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl
creating build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-cpython-314/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
running build_ext
building 'lxml.etree' extension
creating build/temp.linux-x86_64-cpython-314/src/lxml
gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -ffat-lto-objects -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -I/usr/include/libxml2 -Isrc -Isrc/lxml/includes -I/home/Flying/calibre-web-env/include -I/usr/include/python3.14 -c src/lxml/etree.c -o build/temp.linux-x86_64-cpython-314/src/lxml/etree.o -w
src/lxml/etree.c: In function ‘__pyx_f_4lxml_5etree_fixThreadDictNamesForDtd’:
src/lxml/etree.c:28111:49: error: passing argument 1 of ‘__pyx_f_4lxml_5etree__fixThreadDictPtr’ from incompatible pointer type [-Wincompatible-pointer-types]
28111 | __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->defaultValue), __pyx_v_c_src_dict, __pyx_v_c_dict);
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| xmlChar ** {aka unsigned char **}
src/lxml/etree.c:27454:82: note: expected ‘const xmlChar **’ {aka ‘const unsigned char **’} but argument is of type ‘xmlChar **’ {aka ‘unsigned char **’}
27454 | static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar **__pyx_v_c_ptr, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
Compile failed: command '/usr/bin/gcc' failed with exit code 1
creating tmp
cc -I/usr/include/libxml2 -I/usr/include/libxml2 -c /tmp/xmlXPathInitfe9a9uck.c -o tmp/xmlXPathInitfe9a9uck.o
/tmp/xmlXPathInitfe9a9uck.c: In function ‘main’:
/tmp/xmlXPathInitfe9a9uck.c:3:5: warning: ‘xmlXPathInit’ is deprecated: See https://gnome.pages.gitlab.gnome.org/libxml2/html/deprecated.html [-Wdeprecated-declarations]
3 | xmlXPathInit();
| ^~~~~~~~~~~~
In file included from /tmp/xmlXPathInitfe9a9uck.c:1:
/usr/include/libxml2/libxml/xpath.h:561:21: note: declared here
561 | xmlXPathInit (void);
| ^~~~~~~~~~~~
cc tmp/xmlXPathInitfe9a9uck.o -lxml2 -o a.out
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for lxml
Failed to build lxml
`
Expected behavior
It should install
- OS: Manjaro
- Python version: 3.14.4
- Calibre-Web version: n/a
- Docker container: none
- Special Hardware: n/a
- Browser: n/a
Describe the bug/problem
When following the directions in the README, the pip3 command fails to finish because lxml doesn't build.
To Reproduce
Steps to reproduce the behavior:
Logfile
`Building wheels for collected packages: lxml
Building wheel for lxml (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for lxml (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [135 lines of output]
/tmp/pip-build-env-1zrj5dee/overlay/lib/python3.14/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for lxml
Failed to build lxml
`
Expected behavior
It should install