setup.py: Clean up implementation.
Also use pathlib.Path to better handle path manipulations. Signed-off-by: Chris PeBenito <chpebeni@linux.microsoft.com>
This commit is contained in:
parent
2661b1af6d
commit
5718140bfe
55
setup.py
55
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 @@ ext_py_mods = [Extension('setools.policyrep', ['setools/policyrep.pyx'],
|
|||
'-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,
|
||||
|
|
Loading…
Reference in New Issue