feat: reduce size of binaries · python-zeroconf/python-zeroconf@16f3564
@@ -5,8 +5,44 @@
55from distutils.command.build_ext import build_ext
66from typing import Any
778+try:
9+from setuptools import Extension
10+except ImportError:
11+from distutils.core import Extension
12+813_LOGGER = logging.getLogger(__name__)
91415+TO_CYTHONIZE = [
16+"src/zeroconf/_dns.py",
17+"src/zeroconf/_cache.py",
18+"src/zeroconf/_history.py",
19+"src/zeroconf/_record_update.py",
20+"src/zeroconf/_listener.py",
21+"src/zeroconf/_protocol/incoming.py",
22+"src/zeroconf/_protocol/outgoing.py",
23+"src/zeroconf/_handlers/answers.py",
24+"src/zeroconf/_handlers/record_manager.py",
25+"src/zeroconf/_handlers/multicast_outgoing_queue.py",
26+"src/zeroconf/_handlers/query_handler.py",
27+"src/zeroconf/_services/__init__.py",
28+"src/zeroconf/_services/browser.py",
29+"src/zeroconf/_services/info.py",
30+"src/zeroconf/_services/registry.py",
31+"src/zeroconf/_updates.py",
32+"src/zeroconf/_utils/ipaddress.py",
33+"src/zeroconf/_utils/time.py",
34+]
35+36+EXTENSIONS = [
37+Extension(
38+ext.removeprefix("src/").removesuffix(".py").replace("/", "."),
39+ [ext],
40+language="c",
41+extra_compile_args=["-O3", "-g0"],
42+ )
43+for ext in TO_CYTHONIZE
44+]
45+10461147class BuildExt(build_ext):
1248def build_extensions(self) -> None:
@@ -25,26 +61,7 @@ def build(setup_kwargs: Any) -> None:
2561setup_kwargs.update(
2662 {
2763"ext_modules": cythonize(
28- [
29-"src/zeroconf/_dns.py",
30-"src/zeroconf/_cache.py",
31-"src/zeroconf/_history.py",
32-"src/zeroconf/_record_update.py",
33-"src/zeroconf/_listener.py",
34-"src/zeroconf/_protocol/incoming.py",
35-"src/zeroconf/_protocol/outgoing.py",
36-"src/zeroconf/_handlers/answers.py",
37-"src/zeroconf/_handlers/record_manager.py",
38-"src/zeroconf/_handlers/multicast_outgoing_queue.py",
39-"src/zeroconf/_handlers/query_handler.py",
40-"src/zeroconf/_services/__init__.py",
41-"src/zeroconf/_services/browser.py",
42-"src/zeroconf/_services/info.py",
43-"src/zeroconf/_services/registry.py",
44-"src/zeroconf/_updates.py",
45-"src/zeroconf/_utils/ipaddress.py",
46-"src/zeroconf/_utils/time.py",
47- ],
64+EXTENSIONS,
4865compiler_directives={"language_level": "3"}, # Python 3
4966 ),
5067"cmdclass": {"build_ext": BuildExt},