[Buildroot] [PATCH v2 1/2] libgpiod: new package

Romain Naour romain.naour at gmail.com
Sat Jan 21 21:49:19 UTC 2017


Hi Bartosz,

Le 19/01/2017 à 13:01, Bartosz Golaszewski a écrit :
> Add a package containing a C library and a set of command-line tools
> for controlling GPIOs from user space using the new character device
> interface on linux.
> 
> Signed-off-by: Bartosz Golaszewski <bgolaszewski at baylibre.com>

libgpiod doesn't build with a musl toolchain:

../../include/gpiod.h:232:49: warning: its scope is only this definition or
declaration, which is probably not what you want
../../include/gpiod.h:249:8: warning: ‘struct timespec’ declared inside
parameter list
        gpiod_event_cb callback, void *cbdata) GPIOD_API;
        ^
../../include/gpiod.h:683:18: error: field ‘ts’ has incomplete type
  struct timespec ts;

Can you take a look ?

> ---
>  package/Config.in              |  1 +
>  package/libgpiod/Config.in     | 20 ++++++++++++++++++++
>  package/libgpiod/libgpiod.hash |  2 ++
>  package/libgpiod/libgpiod.mk   | 14 ++++++++++++++
>  4 files changed, 37 insertions(+)
>  create mode 100644 package/libgpiod/Config.in
>  create mode 100644 package/libgpiod/libgpiod.hash
>  create mode 100644 package/libgpiod/libgpiod.mk
> 
> diff --git a/package/Config.in b/package/Config.in
> index 8c8c33e..2100bc7 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1045,6 +1045,7 @@ menu "Hardware handling"
>  	source "package/libfreefare/Config.in"
>  	source "package/libftdi/Config.in"
>  	source "package/libftdi1/Config.in"
> +	source "package/libgpiod/Config.in"
>  	source "package/libgudev/Config.in"
>  	source "package/libhid/Config.in"
>  	source "package/libiio/Config.in"
> diff --git a/package/libgpiod/Config.in b/package/libgpiod/Config.in
> new file mode 100644
> index 0000000..63a7cb6
> --- /dev/null
> +++ b/package/libgpiod/Config.in
> @@ -0,0 +1,20 @@
> +config BR2_PACKAGE_LIBGPIOD
> +	bool "libgpiod"
> +	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8

Why it depend on kernel headers 4.8 ?

> +	help
> +	  This is a C library that abstracts the GPIO character
> +	  device operations on linux.
> +
> +	  https://github.com/brgl/libgpiod
> +
> +if BR2_PACKAGE_LIBGPIOD
> +
> +config BR2_PACKAGE_LIBGPIOD_TOOLS
> +	bool "install tools"
> +	help
> +	  Include a set of command-line tools for managing GPIOs.
> +
> +endif
> +
> +comment "libgpiod needs kernel headers >= 4.8"
> +	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
> diff --git a/package/libgpiod/libgpiod.hash b/package/libgpiod/libgpiod.hash
> new file mode 100644
> index 0000000..7de17bb
> --- /dev/null
> +++ b/package/libgpiod/libgpiod.hash
> @@ -0,0 +1,2 @@
> +# Locally computed
> +sha256 0f9f5215d0100a8066f4e6b064892747720e556cbb83f6c05d6151d68ec2025b libgpiod-v0.1.tar.gz
> diff --git a/package/libgpiod/libgpiod.mk b/package/libgpiod/libgpiod.mk
> new file mode 100644
> index 0000000..aca3d5d
> --- /dev/null
> +++ b/package/libgpiod/libgpiod.mk
> @@ -0,0 +1,14 @@
> +################################################################################
> +#
> +# libgpiod
> +#
> +################################################################################
> +
> +LIBGPIOD_VERSION = v0.1
> +LIBGPIOD_SITE = $(call github,brgl,libgpiod,$(LIBGPIOD_VERSION))
> +LIBGPIOD_LICENSE = GPLv3+
> +LIBGPIOD_LICENSE_FILES = COPYING
> +LIBGPIOD_AUTORECONF = YES

A comment must be added to explain why the package use autoreconf.

> +LIBGPIOD_CONF_OPTS += --$(if $(BR2_PACKAGE_LIBGPIOD_TOOLS),enable,disable)-tools

I'm not sure this coding style will be accepted as is, maybe you can do like
util-linux package:

$(if $(BR2_PACKAGE_LIBGPIOD_TOOLS),--enable-tools,--disable-tools)

Best regards,
Romain

> +
> +$(eval $(autotools-package))
> 



More information about the buildroot mailing list