From 9cd7ae4bd404010503772095d117d5aba434505d Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 08:54:14 +0200 Subject: [PATCH 1/8] Bump lxml to v6.1.0 --- doc/source/requirements.txt | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/requirements.txt b/doc/source/requirements.txt index 433189e..9c05a5c 100644 --- a/doc/source/requirements.txt +++ b/doc/source/requirements.txt @@ -1,4 +1,4 @@ -lxml==6.0.4 +lxml==6.1.0 importlib_metadata;python_version < '3.8' packaging Sphinx>=3 diff --git a/requirements.txt b/requirements.txt index 8210f05..846c6ea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -lxml==6.0.4 +lxml==6.1.0 From b54309c03518cf170500de21b1b7705349ee2b37 Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 13:10:57 +0200 Subject: [PATCH 2/8] Update workflow by configuring XML toolchain properly --- .github/workflows/linuxbrew.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index 51b0db1..0929fcb 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -28,16 +28,23 @@ jobs: - name: Install build dependencies run: | brew update - brew install python@${{ matrix.python }} gcc libxml2 libxmlsec1 pkg-config + brew install python@${{ matrix.python }} gcc libxml2 libxslt libxmlsec1 pkg-config echo "/home/linuxbrew/.linuxbrew/opt/python@${{ matrix.python }}/libexec/bin" >> $GITHUB_PATH + - name: Configure Homebrew XML toolchain + run: | + echo "PKG_CONFIG_PATH=$(brew --prefix libxml2)/lib/pkgconfig:$(brew --prefix libxslt)/lib/pkgconfig" >> $GITHUB_ENV + echo "CPPFLAGS=-I$(brew --prefix libxml2)/include -I$(brew --prefix libxslt)/include" >> $GITHUB_ENV + echo "CFLAGS=-I$(brew --prefix libxml2)/include -I$(brew --prefix libxslt)/include" >> $GITHUB_ENV + echo "LDFLAGS=-L$(brew --prefix libxml2)/lib -L$(brew --prefix libxslt)/lib" >> $GITHUB_ENV + echo "$(brew --prefix libxml2)/bin" >> $GITHUB_PATH + echo "$(brew --prefix libxslt)/bin" >> $GITHUB_PATH + - name: Build wheel run: | python3 -m venv build_venv source build_venv/bin/activate pip3 install --upgrade setuptools wheel build - export CFLAGS="-I$(brew --prefix)/include" - export LDFLAGS="-L$(brew --prefix)/lib" python3 -m build rm -rf build/ From 7927bccc061ea432d1aa5b3e8400f11a2c74f164 Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 13:23:44 +0200 Subject: [PATCH 3/8] Add logs to linuxbrew workflow for debugging --- .github/workflows/linuxbrew.yml | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index 0929fcb..3c46366 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -54,4 +54,38 @@ jobs: source test_venv/bin/activate pip3 install --upgrade --no-binary=lxml -r requirements-test.txt pip3 install xmlsec --only-binary=xmlsec --no-index --find-links=dist/ + echo "PATH=$PATH" + echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" + echo "CPPFLAGS=$CPPFLAGS" + echo "CFLAGS=$CFLAGS" + echo "LDFLAGS=$LDFLAGS" + brew list --versions libxml2 libxslt libxmlsec1 openssl@3 pkg-config python@${{ matrix.python }} + xml2-config --version || true + xslt-config --version || true + xmlsec1 --version || true + pkg-config --modversion libxml-2.0 libxslt xmlsec1 + pkg-config --modversion openssl || true + python3 - <<'PY' + import lxml.etree + import xmlsec + print('lxml.LIBXML_VERSION', lxml.etree.LIBXML_VERSION) + print('lxml.LIBXML_COMPILED_VERSION', lxml.etree.LIBXML_COMPILED_VERSION) + print('lxml.LIBXSLT_VERSION', lxml.etree.LIBXSLT_VERSION) + print('lxml.LIBXSLT_COMPILED_VERSION', lxml.etree.LIBXSLT_COMPILED_VERSION) + print('xmlsec.__file__', xmlsec.__file__) + print('xmlsec.get_libxml_version()', xmlsec.get_libxml_version()) + print('xmlsec.get_libxml_compiled_version()', xmlsec.get_libxml_compiled_version()) + print('xmlsec.get_libxmlsec_version()', xmlsec.get_libxmlsec_version()) + print('lxml.etree.__file__', lxml.etree.__file__) + PY + ldd "$(python3 - <<'PY' + import lxml.etree + print(lxml.etree.__file__) + PY + )" + ldd "$(python3 - <<'PY' + import xmlsec + print(xmlsec.__file__) + PY + )" pytest -v --color=yes From bd9ad0710b65e9caf293c33d8de6533fdc2c0b54 Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 13:32:26 +0200 Subject: [PATCH 4/8] Try to fix the LDD path issue --- .github/workflows/linuxbrew.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index 3c46366..aaf20da 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -33,10 +33,12 @@ jobs: - name: Configure Homebrew XML toolchain run: | - echo "PKG_CONFIG_PATH=$(brew --prefix libxml2)/lib/pkgconfig:$(brew --prefix libxslt)/lib/pkgconfig" >> $GITHUB_ENV + echo "PKG_CONFIG_PATH=$(brew --prefix libxml2)/lib/pkgconfig:$(brew --prefix libxslt)/lib/pkgconfig:$(brew --prefix libxmlsec1)/lib/pkgconfig:$(brew --prefix openssl@3)/lib/pkgconfig" >> $GITHUB_ENV echo "CPPFLAGS=-I$(brew --prefix libxml2)/include -I$(brew --prefix libxslt)/include" >> $GITHUB_ENV echo "CFLAGS=-I$(brew --prefix libxml2)/include -I$(brew --prefix libxslt)/include" >> $GITHUB_ENV echo "LDFLAGS=-L$(brew --prefix libxml2)/lib -L$(brew --prefix libxslt)/lib" >> $GITHUB_ENV + echo "LIBRARY_PATH=$(brew --prefix libxml2)/lib:$(brew --prefix libxslt)/lib:$(brew --prefix libxmlsec1)/lib:$(brew --prefix openssl@3)/lib" >> $GITHUB_ENV + echo "LD_LIBRARY_PATH=$(brew --prefix libxml2)/lib:$(brew --prefix libxslt)/lib:$(brew --prefix libxmlsec1)/lib:$(brew --prefix openssl@3)/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> $GITHUB_ENV echo "$(brew --prefix libxml2)/bin" >> $GITHUB_PATH echo "$(brew --prefix libxslt)/bin" >> $GITHUB_PATH @@ -59,6 +61,8 @@ jobs: echo "CPPFLAGS=$CPPFLAGS" echo "CFLAGS=$CFLAGS" echo "LDFLAGS=$LDFLAGS" + echo "LIBRARY_PATH=$LIBRARY_PATH" + echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" brew list --versions libxml2 libxslt libxmlsec1 openssl@3 pkg-config python@${{ matrix.python }} xml2-config --version || true xslt-config --version || true From a7e3e91cf65d7c6997936c685db989806f9b6126 Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 14:08:24 +0200 Subject: [PATCH 5/8] Pin ubuntu on linuxbrew workflow --- .github/workflows/linuxbrew.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index aaf20da..496a3f9 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -6,7 +6,7 @@ concurrency: jobs: linuxbrew: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: matrix: From aac0cb01627653072cdc8475f4ce05bd27c677ed Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 14:18:55 +0200 Subject: [PATCH 6/8] Pin lxml 6.0.4 to make sure it's related to lxml upgrade --- .github/workflows/linuxbrew.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index 496a3f9..041cf90 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -54,7 +54,8 @@ jobs: run: | python3 -m venv test_venv source test_venv/bin/activate - pip3 install --upgrade --no-binary=lxml -r requirements-test.txt + pip3 install --upgrade --no-binary=lxml "lxml==6.0.4" + pip3 install --upgrade -r requirements-test.txt pip3 install xmlsec --only-binary=xmlsec --no-index --find-links=dist/ echo "PATH=$PATH" echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" From 88bc0ce3af7b97eb640eaa8570d717197e34e31e Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 14:39:38 +0200 Subject: [PATCH 7/8] Reorder workflow logs to get more info --- .github/workflows/linuxbrew.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index 041cf90..a638cd3 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -72,15 +72,10 @@ jobs: pkg-config --modversion openssl || true python3 - <<'PY' import lxml.etree - import xmlsec print('lxml.LIBXML_VERSION', lxml.etree.LIBXML_VERSION) print('lxml.LIBXML_COMPILED_VERSION', lxml.etree.LIBXML_COMPILED_VERSION) print('lxml.LIBXSLT_VERSION', lxml.etree.LIBXSLT_VERSION) print('lxml.LIBXSLT_COMPILED_VERSION', lxml.etree.LIBXSLT_COMPILED_VERSION) - print('xmlsec.__file__', xmlsec.__file__) - print('xmlsec.get_libxml_version()', xmlsec.get_libxml_version()) - print('xmlsec.get_libxml_compiled_version()', xmlsec.get_libxml_compiled_version()) - print('xmlsec.get_libxmlsec_version()', xmlsec.get_libxmlsec_version()) print('lxml.etree.__file__', lxml.etree.__file__) PY ldd "$(python3 - <<'PY' @@ -88,6 +83,13 @@ jobs: print(lxml.etree.__file__) PY )" + python3 - <<'PY' + import xmlsec + print('xmlsec.__file__', xmlsec.__file__) + print('xmlsec.get_libxml_version()', xmlsec.get_libxml_version()) + print('xmlsec.get_libxml_compiled_version()', xmlsec.get_libxml_compiled_version()) + print('xmlsec.get_libxmlsec_version()', xmlsec.get_libxmlsec_version()) + PY ldd "$(python3 - <<'PY' import xmlsec print(xmlsec.__file__) From 9fe3c5ddb10af9ea3acb31157214921133c67c6d Mon Sep 17 00:00:00 2001 From: Amin Solhizadeh Date: Wed, 22 Apr 2026 14:48:18 +0200 Subject: [PATCH 8/8] Simplify linuxbrew workflow --- .github/workflows/linuxbrew.yml | 41 +-------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index a638cd3..5454b5b 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -54,45 +54,6 @@ jobs: run: | python3 -m venv test_venv source test_venv/bin/activate - pip3 install --upgrade --no-binary=lxml "lxml==6.0.4" - pip3 install --upgrade -r requirements-test.txt + pip3 install --upgrade --no-binary=lxml -r requirements-test.txt pip3 install xmlsec --only-binary=xmlsec --no-index --find-links=dist/ - echo "PATH=$PATH" - echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" - echo "CPPFLAGS=$CPPFLAGS" - echo "CFLAGS=$CFLAGS" - echo "LDFLAGS=$LDFLAGS" - echo "LIBRARY_PATH=$LIBRARY_PATH" - echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" - brew list --versions libxml2 libxslt libxmlsec1 openssl@3 pkg-config python@${{ matrix.python }} - xml2-config --version || true - xslt-config --version || true - xmlsec1 --version || true - pkg-config --modversion libxml-2.0 libxslt xmlsec1 - pkg-config --modversion openssl || true - python3 - <<'PY' - import lxml.etree - print('lxml.LIBXML_VERSION', lxml.etree.LIBXML_VERSION) - print('lxml.LIBXML_COMPILED_VERSION', lxml.etree.LIBXML_COMPILED_VERSION) - print('lxml.LIBXSLT_VERSION', lxml.etree.LIBXSLT_VERSION) - print('lxml.LIBXSLT_COMPILED_VERSION', lxml.etree.LIBXSLT_COMPILED_VERSION) - print('lxml.etree.__file__', lxml.etree.__file__) - PY - ldd "$(python3 - <<'PY' - import lxml.etree - print(lxml.etree.__file__) - PY - )" - python3 - <<'PY' - import xmlsec - print('xmlsec.__file__', xmlsec.__file__) - print('xmlsec.get_libxml_version()', xmlsec.get_libxml_version()) - print('xmlsec.get_libxml_compiled_version()', xmlsec.get_libxml_compiled_version()) - print('xmlsec.get_libxmlsec_version()', xmlsec.get_libxmlsec_version()) - PY - ldd "$(python3 - <<'PY' - import xmlsec - print(xmlsec.__file__) - PY - )" pytest -v --color=yes