From 5718140bfe41f22bb2a5010168fa4aaa02e759fe Mon Sep 17 00:00:00 2001 From: Chris PeBenito Date: Tue, 23 Apr 2024 08:25:23 -0400 Subject: [PATCH] setup.py: Clean up implementation. Also use pathlib.Path to better handle path manipulations. Signed-off-by: Chris PeBenito --- setup.py | 55 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/setup.py b/setup.py index 3df21c72..0b8e3e96 100644 --- a/setup.py +++ b/setup.py @@ -1,37 +1,34 @@ #!/usr/bin/env python3 -import glob -from setuptools import Extension, setup import sys import os -from os.path import join -from contextlib import suppress +import glob +from pathlib import Path + +from setuptools import Extension, setup from Cython.Build import cythonize -import os.path # Library linkage -lib_dirs = ['.', '/usr/lib64', '/usr/lib', '/usr/local/lib'] -include_dirs = [] +lib_dirs: list[str] = ['.', '/usr/lib64', '/usr/lib', '/usr/local/lib'] +include_dirs: list[str] = [] -with suppress(KeyError): - userspace_src = os.environ["USERSPACE_SRC"] - include_dirs.insert(0, userspace_src + "/libsepol/include") - include_dirs.insert(1, userspace_src + "/libselinux/include") - lib_dirs.insert(0, userspace_src + "/libsepol/src") - lib_dirs.insert(1, userspace_src + "/libselinux/src") +userspace_src = os.getenv("USERSPACE_SRC", "") +if userspace_src: + userspace_path = Path(userspace_src) + include_dirs.insert(0, str(userspace_path / "libsepol/include")) + include_dirs.insert(1, str(userspace_path / "libselinux/include")) + lib_dirs.insert(0, str(userspace_path / "libsepol/src")) + lib_dirs.insert(1, str(userspace_path / "libselinux/src")) -if sys.platform.startswith('darwin'): - macros=[('DARWIN',1)] -else: - macros=[] +macros: list[tuple[str, str | int]] = [('DARWIN',1)] if sys.platform.startswith('darwin') else [] # Code coverage. Enable this to get coverage in the cython code. -enable_coverage = bool(os.environ.get("SETOOLS_COVERAGE", False)) +enable_coverage = bool(os.getenv("SETOOLS_COVERAGE", "")) if enable_coverage: macros.append(("CYTHON_TRACE", 1)) -cython_annotate = bool(os.environ.get("SETOOLS_ANNOTATE", False)) +cython_annotate = bool(os.getenv("SETOOLS_ANNOTATE", "")) ext_py_mods = [Extension('setools.policyrep', ['setools/policyrep.pyx'], include_dirs=include_dirs, @@ -53,16 +50,20 @@ '-Wwrite-strings', '-fno-exceptions'])] -installed_data = [('share/man/man1', glob.glob("man/*.1"))] - -linguas = ["ru"] - -with suppress(KeyError): - linguas = os.environ["LINGUAS"].split(" ") +linguas: set[Path] = set(Path(p) for p in os.getenv("LINGUAS", "").split(" ") if p) +if not linguas: + linguas.add(Path("ru")) +linguas.add(Path(".")) +base_source_path = Path("man") # below source root +base_target_path = Path("share/man") # below prefixdir, usually /usr or /usr/local +installed_data = list[tuple]() for lang in linguas: - if lang and os.path.exists(join("man", lang)): - installed_data.append((join('share/man', lang, 'man1'), glob.glob(join("man", lang, "*.1")))) + source_path = base_source_path / lang + if source_path.exists(): + for i in range(1, 9): + installed_data.append((base_target_path / lang / f"man{i}", + glob.glob(str(source_path / f"*.{i}")))) # see pyproject.toml for most package options. setup(data_files=installed_data,