Files
Bartosz Golaszewski 9796702aa7 libgpiod: update to v2.3.1
This bugfix release addresses several build issues after the transision
to meson. These bugs didn't really affect the yocto recipe but let's
update the package for completness.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-07-07 00:29:01 -07:00

133 lines
5.2 KiB
BlitzBasic

require libgpiod.inc
inherit meson systemd update-rc.d useradd gobject-introspection
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 \
"
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}-2.x:"
SRC_URI += " \
file://gpio-manager.init \
"
SRC_URI[sha256sum] = "e3a358a90a9204ff16f92b6f4028ed91460b1926f10589eb54b3566484650a30"
# Always build tools - they don't have any additional
# requirements over the library.
EXTRA_OEMESON = "-Dtools=enabled"
# Enable all project features for ptest
PACKAGECONFIG[tests] = " \
-Dtests=enabled -Dtools=enabled -Dbindings-cxx=enabled -Dbindings-glib=enabled -Dgpioset-interactive=enabled -Ddbus=enabled, \
-Dtests=disabled, \
kmod util-linux glib-2.0 catch2 libedit glib-2.0-native libgudev, \
bash ${VIRTUAL-RUNTIME_dbus} glib-2.0-utils libgpiod-manager-cfg shunit2 \
"
PACKAGECONFIG[cxx] = "-Dbindings-cxx=enabled,-Dbindings-cxx=disabled"
PACKAGECONFIG[gpioset-interactive] = "-D=gpioset-interactive=enabled,-Dgpioset-interactive=disabled,libedit"
PACKAGECONFIG[glib] = "-Dbindings-glib=enabled,-Dbindings-glib=disabled,glib-2.0 glib-2.0-native"
PACKAGECONFIG[dbus] = "-Ddbus=enabled,-Ddbus=disabled,glib-2.0 glib-2.0-native libgudev,${VIRTUAL-RUNTIME_dbus}"
GIR_MESON_ENABLE_FLAG = "enabled"
GIR_MESON_DISABLE_FLAG = "disabled"
PACKAGES =+ " \
${PN}-gpiosim \
${PN}-glib \
${PN}-manager \
${PN}-manager-cfg \
${PN}-cli \
libgpiotools \
libgpiodbus \
"
FILES:${PN}-tools += "${bindir}/gpionotify"
FILES:${PN}-gpiosim += "${libdir}/libgpiosim.so.*"
FILES:${PN}-gpiosim-dev += "${includedir}/gpiosim.h"
FILES:${PN}-glib += " \
${libdir}/libgpiod-glib.so.* \
${libdir}/girepository-1.0/* \
"
FILES:${PN}-manager += " \
${bindir}/gpio-manager \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_system_unitdir}/gpio-manager.service', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '${sysconfdir}/init.d/gpio-manager', '', d)} \
"
FILES:${PN}-manager-cfg += " \
${sysconfdir}/dbus-1/system.d/io.gpiod1.conf \
${datadir}/dbus-1/interfaces/io.gpiod1.xml \
${nonarch_base_libdir}/udev/rules.d/90-gpio.rules \
"
FILES:${PN}-cli += "${bindir}/gpiocli"
FILES:libgpiotools += "${libdir}/libgpiotools.so.*"
FILES:libgpiodbus += "${libdir}/libgpiodbus.so.*"
RDEPENDS:${PN}-manager += " \
${VIRTUAL-RUNTIME_dbus} \
${PN}-manager-cfg \
libgpiodbus \
"
RDEPENDS:${PN}-cli += "${PN}-manager libgpiodbus"
RDEPENDS:${PN}-tools += "libgpiotools"
SYSTEMD_PACKAGES = "${PN}-manager"
python __anonymous() {
distro_features = d.getVar("DISTRO_FEATURES").split()
packageconfig = d.getVar("PACKAGECONFIG").split()
pn = d.getVar("PN")
if "systemd" in distro_features and "dbus" in packageconfig:
d.appendVar("EXTRA_OEMESON", " -Dsystemd=enabled")
# We need to set it conditionally or else the systemd class will look
# for the file that we don't install with systemd support disabled.
d.setVar("SYSTEMD_SERVICE:{}-manager".format(pn), "gpio-manager.service")
else:
d.appendVar("EXTRA_OECONF", " -Dsystemd=disabled")
# Disable gobject introspection set by the bbclass if we don't want it.
if not any(cfg in ["glib", "dbus", "ptest"] for cfg in packageconfig):
d.setVar("GI_DATA_ENABLED", "False")
}
UPDATERCPN = "${PN}-manager"
INITSCRIPT_NAME = "gpio-manager"
INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 20 0 1 6 ."
USERADD_PACKAGES = "${PN}-manager"
GROUPADD_PARAM:${PN}-manager = "--system gpio"
USERADD_PARAM:${PN}-manager = "--system -M -s /bin/nologin -g gpio gpio-manager"
RDEPENDS:${PN}-ptest += " \
${@bb.utils.contains('PTEST_ENABLED', '1', 'shunit2 bash', '', d)} \
"
RRECOMMENDS:${PN}-gpiosim += "kernel-module-gpio-sim kernel-module-configfs"
INSANE_SKIP:${PN}-ptest += "buildpaths"
do_install:append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${UNPACKDIR}/gpio-manager.init ${D}${sysconfdir}/init.d/gpio-manager
fi
}
do_install_ptest:append() {
install -m 0755 ${B}/tests/gpiod-test ${D}${PTEST_PATH}/tests/
for tool in ${FILES:${PN}-tools}; do
install ${B}/tools/$(basename $tool) ${D}${PTEST_PATH}/tests/
done
install -m 0755 ${B}/bindings/cxx/tests/gpiod-cxx-test ${D}${PTEST_PATH}/tests/
install -m 0755 ${S}/tools/gpio-tools-test.bash ${D}${PTEST_PATH}/tests/
install -m 0644 ${S}/tests/scripts/gpiod-bash-test-helper.inc ${D}${PTEST_PATH}/tests/
install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
install -m 0755 ${B}/bindings/glib/tests/gpiod-glib-test ${D}${PTEST_PATH}/tests/
install -m 0755 ${B}/dbus/tests/gpiodbus-test ${D}${PTEST_PATH}/tests/
install -m 0755 ${S}/dbus/client/gpiocli-test.bash ${D}${PTEST_PATH}/tests/
install -m 0755 ${B}/dbus/manager/gpio-manager ${D}${PTEST_PATH}/tests/
install -m 0755 ${B}/dbus/client/gpiocli ${D}${PTEST_PATH}/tests/
}