File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 4040 required : false
4141 type : string
4242 WIN_OPENSSL_VERSION :
43- default : " 3.0.16.pl1 "
43+ default : " 3.5.6 "
4444 required : false
4545 type : string
4646 WIN_XMLSEC1_VERSION :
47- default : " 1.3.7 "
47+ default : " 1.3.10 "
4848 required : false
4949 type : string
5050 WIN_ZLIB_VERSION :
@@ -110,7 +110,8 @@ jobs:
110110 libs/*.xz
111111 libs/*.gz
112112 libs/*.zip
113- key : libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}
113+ key : >-
114+ libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBICONV_VERSION }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.XMLSEC1_VERSION }}-${{ env.ZLIB_VERSION }}
114115
115116 - uses : actions/setup-python@v6
116117 with :
Original file line number Diff line number Diff line change 1414 runs-on : macos-latest
1515
1616 env :
17+ LIBICONV_VERSION : ${{ needs.cache_libs.outputs.LIBICONV_VERSION }}
1718 LIBXML2_VERSION : ${{ needs.cache_libs.outputs.LIBXML2_VERSION }}
1819 LIBXSLT_VERSION : ${{ needs.cache_libs.outputs.LIBXSLT_VERSION }}
20+ OPENSSL_VERSION : ${{ needs.cache_libs.outputs.OPENSSL_VERSION }}
21+ XMLSEC1_VERSION : ${{ needs.cache_libs.outputs.XMLSEC1_VERSION }}
22+ ZLIB_VERSION : ${{ needs.cache_libs.outputs.ZLIB_VERSION }}
1923
2024 strategy :
2125 matrix :
3337 libs/*.xz
3438 libs/*.gz
3539 libs/*.zip
36- key : libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}
40+ key : >-
41+ libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBICONV_VERSION }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.XMLSEC1_VERSION }}-${{ env.ZLIB_VERSION }}
3742
3843 - uses : actions/setup-python@v4
3944 with :
Original file line number Diff line number Diff line change 1414 runs-on : ubuntu-latest
1515
1616 env :
17+ LIBICONV_VERSION : ${{ needs.cache_libs.outputs.LIBICONV_VERSION }}
1718 LIBXML2_VERSION : ${{ needs.cache_libs.outputs.LIBXML2_VERSION }}
1819 LIBXSLT_VERSION : ${{ needs.cache_libs.outputs.LIBXSLT_VERSION }}
20+ OPENSSL_VERSION : ${{ needs.cache_libs.outputs.OPENSSL_VERSION }}
21+ XMLSEC1_VERSION : ${{ needs.cache_libs.outputs.XMLSEC1_VERSION }}
22+ ZLIB_VERSION : ${{ needs.cache_libs.outputs.ZLIB_VERSION }}
1923
2024 strategy :
2125 matrix :
3741 libs/*.xz
3842 libs/*.gz
3943 libs/*.zip
40- key : libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}
44+ key : >-
45+ libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBICONV_VERSION }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.XMLSEC1_VERSION }}-${{ env.ZLIB_VERSION }}
4146
4247 # Keep this job on the host runner so JS-based actions (for example actions/cache)
4348 # can run, then execute build/test inside the target manylinux/musllinux container.
Original file line number Diff line number Diff line change @@ -110,8 +110,12 @@ jobs:
110110 runs-on : ${{ matrix.os }}
111111
112112 env :
113+ LIBICONV_VERSION : ${{ contains(matrix.os, 'windows-') && needs.cache_libs.outputs.WIN_LIBICONV_VERSION || needs.cache_libs.outputs.LIBICONV_VERSION }}
113114 LIBXML2_VERSION : ${{ contains(matrix.os, 'windows-') && needs.cache_libs.outputs.WIN_LIBXML2_VERSION || needs.cache_libs.outputs.LIBXML2_VERSION }}
114115 LIBXSLT_VERSION : ${{ contains(matrix.os, 'windows-') && needs.cache_libs.outputs.WIN_LIBXSLT_VERSION || needs.cache_libs.outputs.LIBXSLT_VERSION }}
116+ OPENSSL_VERSION : ${{ contains(matrix.os, 'windows-') && needs.cache_libs.outputs.WIN_OPENSSL_VERSION || needs.cache_libs.outputs.OPENSSL_VERSION }}
117+ XMLSEC1_VERSION : ${{ contains(matrix.os, 'windows-') && needs.cache_libs.outputs.WIN_XMLSEC1_VERSION || needs.cache_libs.outputs.XMLSEC1_VERSION }}
118+ ZLIB_VERSION : ${{ contains(matrix.os, 'windows-') && needs.cache_libs.outputs.WIN_ZLIB_VERSION || needs.cache_libs.outputs.ZLIB_VERSION }}
115119
116120 strategy :
117121 fail-fast : false
@@ -131,7 +135,8 @@ jobs:
131135 libs/*.xz
132136 libs/*.gz
133137 libs/*.zip
134- key : libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}
138+ key : >-
139+ libs-${{ runner.os }}-${{ runner.arch }}-${{ env.LIBICONV_VERSION }}-${{ env.LIBXML2_VERSION }}-${{ env.LIBXSLT_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.XMLSEC1_VERSION }}-${{ env.ZLIB_VERSION }}
135140
136141 - name : Set up QEMU
137142 if : runner.os == 'Linux'
Original file line number Diff line number Diff line change 1414* .pyo
1515* .egg *
1616* .so
17+
18+ # Downloaded dependency archives
19+ /libs /*
20+ ! /libs /README.md
Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ def triplet(self) -> str:
3535
3636
3737class LibXmlsecDependencyBuilder :
38- WINDOWS_LIBS_DOWNLOAD_RELEASE_URL = 'https://github.com/mxamin/python-xmlsec-win-binaries/releases/download/2025.07.10 /'
38+ WINDOWS_LIBS_DOWNLOAD_RELEASE_URL = 'https://github.com/mxamin/python-xmlsec-win-binaries/releases/download/2026.04.20 /'
3939 LIB_VERSION_ENV_VARS : ClassVar [dict [str , str ]] = {
4040 'libiconv_version' : 'PYXMLSEC_LIBICONV_VERSION' ,
4141 'libxml2_version' : 'PYXMLSEC_LIBXML2_VERSION' ,
@@ -56,8 +56,8 @@ class LibXmlsecDependencyBuilder:
5656 'libiconv_version' : '1.18-1' ,
5757 'libxml2_version' : '2.11.9-3' , # Make sure it matches with lxml
5858 'libxslt_version' : '1.1.39' ,
59- 'openssl_version' : '3.0.16.pl1 ' ,
60- 'xmlsec1_version' : '1.3.7 ' ,
59+ 'openssl_version' : '3.5.6 ' ,
60+ 'xmlsec1_version' : '1.3.10 ' ,
6161 'zlib_version' : '1.3.1' ,
6262 }
6363
Original file line number Diff line number Diff line change 1+ # Dependency archive cache
2+
3+ This directory is used as the local cache for third-party libraries needed by
4+ the static build tooling.
5+
6+ ## How it works
7+
8+ ` build_libs_xmlsec.py ` and ` LibXmlsecDependencyBuilder ` look in ` libs/ ` first.
9+ If a matching archive is already present here, that file is reused. If not, the
10+ build tooling downloads the archive into this directory and then continues.
11+
12+ The default lookup path is:
13+
14+ ``` bash
15+ libs/
16+ ```
17+
18+ You can override it with either:
19+
20+ ``` bash
21+ python build_libs_xmlsec.py --libs-dir /path/to/cache
22+ ```
23+
24+ or:
25+
26+ ``` bash
27+ export PYXMLSEC_LIBS_DIR=/path/to/cache
28+ ```
29+
30+ ## What belongs here
31+
32+ Store downloaded source or binary archives here, for example:
33+
34+ - ` openssl*.tar.gz `
35+ - ` zlib*.tar.gz `
36+ - ` libiconv*.tar.gz `
37+ - ` libxml2*.tar.xz `
38+ - ` libxslt*.tar.xz `
39+ - ` xmlsec1*.tar.gz `
40+ - Windows binary archives such as ` libxml2-<version>.<suffix>.zip `
41+
42+ Extracted build artifacts do not belong in this directory. Those are created
43+ under ` build/tmp/libs/ ` .
44+
45+ ## Why keep this directory
46+
47+ - Speeds up local rebuilds by reusing previously downloaded archives.
48+ - Matches the CI cache strategy in ` .github/workflows/cache_libs.yml ` .
49+ - Makes it possible to pre-populate dependency archives for offline or
50+ repeatable builds.
You can’t perform that action at this time.
0 commit comments