Skip to content

Commit 31d7b24

Browse files
committed
use env variables for both windows and unix
1 parent 365c59e commit 31d7b24

File tree

1 file changed

+45
-16
lines changed

1 file changed

+45
-16
lines changed

build_support/static_build.py

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,34 @@ def triplet(self):
3333

3434

3535
class StaticBuildHelper:
36+
WINDOWS_LIBS_DOWNLOAD_RELEASE_URL = (
37+
'https://github.com/mxamin/python-xmlsec-win-binaries/releases/download/2025.07.10/'
38+
)
39+
LIB_VERSION_ENV_VARS = {
40+
'openssl_version': 'PYXMLSEC_OPENSSL_VERSION',
41+
'libiconv_version': 'PYXMLSEC_LIBICONV_VERSION',
42+
'libxml2_version': 'PYXMLSEC_LIBXML2_VERSION',
43+
'libxslt_version': 'PYXMLSEC_LIBXSLT_VERSION',
44+
'zlib_version': 'PYXMLSEC_ZLIB_VERSION',
45+
'xmlsec1_version': 'PYXMLSEC_XMLSEC1_VERSION',
46+
}
47+
UNIX_DEFAULT_LIB_VERSIONS = {
48+
'openssl_version': '3.6.0',
49+
'libiconv_version': '1.18',
50+
'libxml2_version': '2.14.6',
51+
'libxslt_version': '1.1.43',
52+
'zlib_version': '1.3.1',
53+
'xmlsec1_version': '1.3.9',
54+
}
55+
WINDOWS_DEFAULT_LIB_VERSIONS = {
56+
'openssl_version': '3.0.16.pl1',
57+
'libiconv_version': '1.18-1',
58+
'libxml2_version': '2.11.9-3',
59+
'libxslt_version': '1.1.39',
60+
'zlib_version': '1.3.1',
61+
'xmlsec1_version': '1.3.7',
62+
}
63+
3664
def __init__(self, builder):
3765
self.builder = builder
3866
self.ext = builder.ext_map['xmlsec']
@@ -69,7 +97,8 @@ def _prepare_directories(self):
6997
self.builder.libs_dir = self.libs_dir
7098

7199
def _prepare_windows_build(self):
72-
release_url = 'https://github.com/mxamin/python-xmlsec-win-binaries/releases/download/2025.07.10/'
100+
self._set_library_versions(build_platform='windows')
101+
73102
if platform.machine() == 'ARM64':
74103
suffix = 'win-arm64'
75104
elif sys.maxsize > 2**32:
@@ -78,16 +107,16 @@ def _prepare_windows_build(self):
78107
suffix = 'win32'
79108

80109
libs = [
81-
f'libxml2-2.11.9-3.{suffix}.zip',
82-
f'libxslt-1.1.39.{suffix}.zip',
83-
f'zlib-1.3.1.{suffix}.zip',
84-
f'iconv-1.18-1.{suffix}.zip',
85-
f'openssl-3.0.16.pl1.{suffix}.zip',
86-
f'xmlsec-1.3.7.{suffix}.zip',
110+
f'libxml2-{self.builder.libxml2_version}.{suffix}.zip',
111+
f'libxslt-{self.builder.libxslt_version}.{suffix}.zip',
112+
f'zlib-{self.builder.zlib_version}.{suffix}.zip',
113+
f'iconv-{self.builder.libiconv_version}.{suffix}.zip',
114+
f'openssl-{self.builder.openssl_version}.{suffix}.zip',
115+
f'xmlsec-{self.builder.xmlsec1_version}.{suffix}.zip',
87116
]
88117

89118
for libfile in libs:
90-
url = urljoin(release_url, libfile)
119+
url = urljoin(self.WINDOWS_LIBS_DOWNLOAD_RELEASE_URL, libfile)
91120
destfile = self.libs_dir / libfile
92121
if destfile.is_file():
93122
self.info(f'Using local copy of "{url}"')
@@ -138,21 +167,21 @@ def _prepare_windows_build(self):
138167
self.ext.include_dirs = [str(path.absolute()) for path in includes]
139168

140169
def _prepare_unix_build(self, build_platform):
141-
self._capture_version_overrides()
170+
self._set_library_versions(build_platform=build_platform)
142171
archives = self._ensure_source_archives()
143172
self._extract_archives(archives)
144173

145174
env, prefix_arg, ldflags, cross_compile = self._prepare_build_environment(build_platform)
146175
self._build_dependencies(env, prefix_arg, ldflags, cross_compile)
147176
self._configure_extension_for_static(build_platform)
148177

149-
def _capture_version_overrides(self):
150-
self.builder.openssl_version = os.environ.get('PYXMLSEC_OPENSSL_VERSION', '3.6.0')
151-
self.builder.libiconv_version = os.environ.get('PYXMLSEC_LIBICONV_VERSION', '1.18')
152-
self.builder.libxml2_version = os.environ.get('PYXMLSEC_LIBXML2_VERSION', '2.14.6')
153-
self.builder.libxslt_version = os.environ.get('PYXMLSEC_LIBXSLT_VERSION', '1.1.43')
154-
self.builder.zlib_version = os.environ.get('PYXMLSEC_ZLIB_VERSION', '1.3.1')
155-
self.builder.xmlsec1_version = os.environ.get('PYXMLSEC_XMLSEC1_VERSION', '1.3.9')
178+
def _set_library_versions(self, build_platform):
179+
defaults = self.UNIX_DEFAULT_LIB_VERSIONS
180+
if build_platform == 'windows':
181+
defaults = self.WINDOWS_DEFAULT_LIB_VERSIONS
182+
183+
for version_attr, env_var in self.LIB_VERSION_ENV_VARS.items():
184+
setattr(self.builder, version_attr, os.environ.get(env_var, defaults[version_attr]))
156185

157186
def _ensure_source_archives(self):
158187
return [

0 commit comments

Comments
 (0)