scons icon indicating copy to clipboard operation
scons copied to clipboard

lxml 5.x breaks doc validation

Open mwichmann opened this issue 1 year ago • 2 comments

Tested using git head as of 15 Feb: with 5.x versions of lxml installed, the doc tree no longer validates. Used 5.0.0, 5.0.1, 5.1.0. Dropping back to any 4.9.x release lets it validate. This is in my regular work virtualenv.

$ python bin/docs-validate.py
0.46% (1/216) SCons/Action.xml
Traceback (most recent call last):
  File "/home/mats/github/scons/bin/docs-validate.py", line 21, in <module>
    if SConsDoc.validate_all_xml(
       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mats/github/scons/bin/SConsDoc.py", line 462, in validate_all_xml
    if not tf.validateXml(fp, xmlschema_context):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mats/github/scons/bin/SConsDoc.py", line 357, in validateXml
    TreeFactory.xmlschema = etree.XMLSchema(xmlschema_context)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "src/lxml/xmlschema.pxi", line 90, in lxml.etree.XMLSchema.__init__
lxml.etree.XMLSchemaParseError: local complex type: The content model is not determinist., line 2150

As a crosscheck I tried this with distro pkgs in Fedora rawhide, which has now flipped to python3-lxml at a 5.x level, with the same outcome.

At the moment, don't know how to narrow down to where the problem is.

mwichmann avatar Feb 16 '24 17:02 mwichmann

Looks like lxml is complaining about processing doc/xsd/scons.xsd and not SCons/Action.xml

Fairly certain this is an issue with line 2150 in doc/xsd/dbpoolx.xsd

The second line of this

  <!-- doc:A paragraph. -->
  <xs:element name="para" substitutionGroup="para.class">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="para.char.mix"/>
        <xs:group ref="para.mix"/>
      </xs:choice>
      <xs:attributeGroup ref="para.attlist"/>
    </xs:complexType>
  </xs:element>

bdbaddog avatar Sep 22 '24 01:09 bdbaddog

If that's commented out (the whole xs:complextype bit), then the error moves to the next xs:complextype line 2449.. Which is not the next, nor is 2150 the first use of xs:complexType..

bdbaddog avatar Sep 22 '24 01:09 bdbaddog