1
0
mirror of https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git synced 2026-10-24 00:48:53 +03:00
Files
libgpiod/bindings/python/build_tests.py
Vincent Fazio ddca805d92 bindings: python: build_tests: simplify the Distribution
The version, package, and platform information is not necessary to
compile and stage the extensions, so drop that information.

If we need to add it back, we can use `dist.parse_config_files()` to
parse information from the pyproject.toml.

Signed-off-by: Vincent Fazio <vfazio@gmail.com>
Link: https://patch.msgid.link/20260401001459.19159-2-vfazio@gmail.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
2026-04-03 11:00:36 +02:00

83 lines
2.0 KiB
Python

# SPDX-License-Identifier: GPL-2.0-or-later
# SPDX-FileCopyrightText: 2023 Phil Howard <phil@gadgetoid.com>
"""
Bring up just enough of setuptools/distutils in order to build the gpiod
test module C extensions.
Set "build_temp" and "build_lib" so that our source directory is not
polluted with artefacts in build/
Builds:
tests/gpiosim/_ext.<target>.so
tests/system/_ext.<target>.so
"""
import glob
import tempfile
from os import getenv, path
from setuptools import Distribution, Extension, logging
from setuptools.command.build_ext import build_ext
logging.configure()
TOP_SRCDIR = getenv("TOP_SRCDIR", "../../")
TOP_BUILDDIR = getenv("TOP_BUILDDIR", "../../")
# The tests are run in-place with PYTHONPATH set to bindings/python
# so we need the gpiod extension module too.
gpiod_ext = Extension(
"gpiod._ext",
sources=glob.glob("gpiod/ext/*.c"),
define_macros=[("_GNU_SOURCE", "1")],
libraries=["gpiod"],
extra_compile_args=["-Wall", "-Wextra"],
include_dirs=[
path.join(TOP_SRCDIR, "include"),
],
library_dirs=[
path.join(TOP_BUILDDIR, "lib/.libs"),
],
)
gpiosim_ext = Extension(
"tests.gpiosim._ext",
sources=["tests/gpiosim/ext.c"],
define_macros=[("_GNU_SOURCE", "1")],
libraries=["gpiosim"],
extra_compile_args=["-Wall", "-Wextra"],
include_dirs=[
path.join(TOP_SRCDIR, "include"),
path.join(TOP_SRCDIR, "tests/gpiosim"),
],
library_dirs=[
path.join(TOP_BUILDDIR, "lib/.libs"),
path.join(TOP_BUILDDIR, "tests/gpiosim/.libs"),
],
)
system_ext = Extension(
"tests.system._ext",
sources=["tests/system/ext.c"],
define_macros=[("_GNU_SOURCE", "1")],
extra_compile_args=["-Wall", "-Wextra"],
)
dist = Distribution(
{
"ext_modules": [gpiosim_ext, system_ext, gpiod_ext],
}
)
with tempfile.TemporaryDirectory(prefix="libgpiod-") as temp_dir:
command = build_ext(dist)
command.inplace = True
command.build_temp = temp_dir
command.build_lib = temp_dir
command.finalize_options()
command.run()