pikvm/pikvm#1037: Fixed building with setuptools 68.0.0

This commit is contained in:
Maxim Devaev
2023-06-28 14:39:38 +03:00
parent a74044b086
commit c129f54efa

View File

@@ -28,41 +28,31 @@ from setuptools import setup
# ===== # =====
class _Template(str):
def __init__(self, text: str) -> None:
self.__text = textwrap.dedent(text).strip()
def __mod__(self, kv: dict) -> None:
kv = {"module_name": kv["ep"].module_name, **kv}
return (self.__text % (kv))
class _ScriptWriter(setuptools.command.easy_install.ScriptWriter): class _ScriptWriter(setuptools.command.easy_install.ScriptWriter):
template = textwrap.dedent(""" template = _Template("""
# EASY-INSTALL-ENTRY-SCRIPT: {spec},{group},{name} # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
__requires__ = "{spec}" __requires__ = %(spec)r
from {module} import main from %(module_name)s import main
if __name__ == "__main__": if __name__ == '__main__':
main() main()
""").strip() """)
@classmethod
def get_args(cls, dist, header=None): # type: ignore
if header is None:
header = cls.get_header()
spec = str(dist.as_requirement())
for group_type in ["console", "gui"]:
group = group_type + "_scripts"
for (name, ep) in dist.get_entry_map(group).items():
cls._ensure_safe_name(name)
script_text = cls.template.format(
spec=spec,
group=group,
name=name,
module=ep.module_name,
)
yield from cls._get_script_args(group_type, name, header, script_text)
# ===== # =====
def main() -> None: def main() -> None:
setuptools.command.easy_install.ScriptWriter = _ScriptWriter setuptools.command.easy_install.ScriptWriter = _ScriptWriter
setuptools.command.easy_install.get_script_args = _ScriptWriter.get_script_args
setuptools.command.easy_install.get_script_header = _ScriptWriter.get_script_header
setup( setup(
name="kvmd", name="kvmd",