python3-gpiod: new package

Add a recipe for libgpiod v2 python bindings. This is a release
candidate but once the proper v2.0 is released, it will be made public
on pypi and the recipe modified accordingly.

As libgpiod python bindings now use setuptools and not make, we can
separate the recipe from the rest of the library.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Bartosz Golaszewski 2023-02-16 09:49:37 +01:00 committed by Khem Raj
parent cd26db61af
commit 941b3bc262
3 changed files with 61 additions and 0 deletions

View File

@ -157,6 +157,7 @@ RDEPENDS:packagegroup-meta-python3 = "\
python3-gmqtt \
python3-gnupg \
python3-google-api-python-client \
python3-gpiod \
python3-gpsd-py3 \
python3-graphviz \
python3-greenlet \

View File

@ -0,0 +1,15 @@
#!/bin/sh
cd $(dirname "$(readlink -f "$0")")
# python3-gpiod uses gpio-sim - a configfs-based testing module. We need to
# make sure configfs is mounted before running any tests.
modprobe configfs
mountpoint /sys/kernel/config > /dev/null || mount -t configfs configfs /sys/kernel/config
python3 -m gpiod-test -v > ./python3-gpiod.out 2>&1
if [ $? -ne 0 ]; then
echo "FAIL: python3-gpiod"
else
echo "PASS: python3-gpiod"
fi

View File

@ -0,0 +1,45 @@
SUMMARY = "Python bindings for libgpiod."
AUTHOR = "Bartosz Golaszewski <brgl@bgdev.pl>"
LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
LIC_FILES_CHKSUM = " \
file://../../LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://../../LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
file://../../LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
"
require recipes-support/libgpiod/libgpiod-src.inc
SRC_URI += "file://run-ptest"
SRC_URI[sha256sum] = "1b931bfabef897911e59d45c80b8930c43fa72f08aab9c03e8dfd4005881c09e"
S = "${WORKDIR}/libgpiod-2.0/bindings/python"
inherit setuptools3 ptest
DEPENDS += "libgpiod"
RDEPENDS:${PN} += "libgpiod (>= 2.0)"
RDEPENDS:${PN}-ptest += "python3-setuptools"
export GPIOD_WITH_TESTS = "${@bb.utils.contains("PTEST_ENABLED", "1", "1", "0", d)}"
PTEST_CFLAGS = "${@bb.utils.contains("PTEST_ENABLED", "1", "-I../../tests/gpiosim", "", d)}"
# Setuptools store full filesystem paths in DWARF files. Map them to './' to
# avoid QA warnings.
export CFLAGS = "${PTEST_CFLAGS} -fdebug-prefix-map=${B}=./"
do_install:append() {
# Python setuptools have an issue where they install C extensions even if
# they're not in the list of packages to be packaged. This is how the test
# extensions end up being installed. Remove them here.
rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/tests/
}
do_install_ptest() {
install -d ${D}${PTEST_PATH}/gpiod-test/gpiosim
install -d ${D}${PTEST_PATH}/gpiod-test/procname
install -m 0644 ${B}/tests/*.py ${D}${PTEST_PATH}/gpiod-test/
install -m 0644 ${B}/build/lib*/tests/gpiosim/_ext* ${D}${PTEST_PATH}/gpiod-test/gpiosim
install -m 0644 ${B}/tests/gpiosim/*.py ${D}${PTEST_PATH}/gpiod-test/gpiosim
install -m 0644 ${B}/build/lib*/tests/procname/_ext* ${D}${PTEST_PATH}/gpiod-test/procname
install -m 0644 ${B}/tests/procname/*.py ${D}${PTEST_PATH}/gpiod-test/procname
}