Make isolated source changes @ PEP 517 backend (#80253)

pull/80255/head
Sviatoslav Sydorenko 2 years ago committed by GitHub
parent 1491ec8019
commit 888abf5d6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -7,10 +7,24 @@ import subprocess
import sys import sys
import typing as t import typing as t
from configparser import ConfigParser from configparser import ConfigParser
from contextlib import suppress from contextlib import contextmanager, suppress
from importlib.metadata import import_module from importlib.metadata import import_module
from io import StringIO from io import StringIO
from pathlib import Path from pathlib import Path
from shutil import copytree
from tempfile import TemporaryDirectory
try:
from contextlib import chdir as _chdir_cm
except ImportError:
@contextmanager
def _chdir_cm(path: os.PathLike) -> t.Iterator[None]:
original_wd = Path.cwd()
os.chdir(path)
try:
yield
finally:
os.chdir(original_wd)
from setuptools.build_meta import ( from setuptools.build_meta import (
build_sdist as _setuptools_build_sdist, build_sdist as _setuptools_build_sdist,
@ -33,6 +47,13 @@ BUILD_MANPAGES_CONFIG_SETTING = '--build-manpages'
"""Config setting name toggle that is used to request manpage in sdists.""" """Config setting name toggle that is used to request manpage in sdists."""
@contextmanager
def _run_in_temporary_directory() -> t.Iterator[Path]:
with TemporaryDirectory(prefix='.tmp-ansible-pep517-') as tmp_dir:
with _chdir_cm(tmp_dir):
yield Path(tmp_dir)
def _make_in_tree_ansible_importable() -> None: def _make_in_tree_ansible_importable() -> None:
"""Add the library directory to module lookup paths.""" """Add the library directory to module lookup paths."""
lib_path = str(Path.cwd() / 'lib/') lib_path = str(Path.cwd() / 'lib/')
@ -93,21 +114,29 @@ def build_sdist( # noqa: WPS210, WPS430
build_manpages_requested = BUILD_MANPAGES_CONFIG_SETTING in ( build_manpages_requested = BUILD_MANPAGES_CONFIG_SETTING in (
config_settings or {} config_settings or {}
) )
if build_manpages_requested: original_src_dir = Path.cwd().resolve()
Path('docs/man/man1/').mkdir(exist_ok=True, parents=True) with _run_in_temporary_directory() as tmp_dir:
version_number = _get_package_distribution_version() tmp_src_dir = Path(tmp_dir) / 'src'
for rst_in in _generate_rst_in_templates(): copytree(original_src_dir, tmp_src_dir)
_convert_rst_in_template_to_manpage( os.chdir(tmp_src_dir)
rst_doc_template=rst_in.read_text(),
destination_path=rst_in.with_suffix('').with_suffix(''), if build_manpages_requested:
version_number=version_number, Path('docs/man/man1/').mkdir(exist_ok=True, parents=True)
) version_number = _get_package_distribution_version()
rst_in.unlink() for rst_in in _generate_rst_in_templates():
_convert_rst_in_template_to_manpage(
return _setuptools_build_sdist( rst_doc_template=rst_in.read_text(),
sdist_directory=sdist_directory, destination_path=rst_in.with_suffix('').with_suffix(''),
config_settings=config_settings, version_number=version_number,
) )
rst_in.unlink()
built_sdist_basename = _setuptools_build_sdist(
sdist_directory=sdist_directory,
config_settings=config_settings,
)
return built_sdist_basename
def get_requires_for_build_sdist( def get_requires_for_build_sdist(

Loading…
Cancel
Save