Skip to content

Commit

Permalink
setup.py: Clean up implementation.
Browse files Browse the repository at this point in the history
Also use pathlib.Path to better handle path manipulations.

Signed-off-by: Chris PeBenito <[email protected]>
  • Loading branch information
pebenito committed Apr 23, 2024
1 parent 2661b1a commit 5718140
Showing 1 changed file with 28 additions and 27 deletions.
55 changes: 28 additions & 27 deletions setup.py
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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,
Expand Down

0 comments on commit 5718140

Please sign in to comment.