diff mbox

[v2,1/2] libgpiod: new package

Message ID 1484827310-13779-2-git-send-email-bgolaszewski@baylibre.com
State Accepted
Headers show

Commit Message

Bartosz Golaszewski Jan. 19, 2017, 12:01 p.m. UTC
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@baylibre.com>
---
 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

Comments

Romain Naour Jan. 21, 2017, 9:49 p.m. UTC | #1
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@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))
>
Thomas Petazzoni Jan. 23, 2017, 10:17 a.m. UTC | #2
Hello,

On Thu, 19 Jan 2017 13:01:49 +0100, Bartosz Golaszewski wrote:
> 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@baylibre.com>
> ---
>  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

Applied to master, with the following changes:

    [Thomas:
     - add comment about autoreconf=yes (suggested by Romain Naour)
     - add more conventional syntax for the --{enable,disable}-tools usage
       (suggested by Romain Naour)
     - add patch to fix musl build.]

Thanks!

Thomas
diff mbox

Patch

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
+	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
+LIBGPIOD_CONF_OPTS += --$(if $(BR2_PACKAGE_LIBGPIOD_TOOLS),enable,disable)-tools
+
+$(eval $(autotools-package))