diff mbox series

[1/2] package: Add libmanette

Message ID 20220601210939.2350383-1-aperez@igalia.com
State New
Headers show
Series [1/2] package: Add libmanette | expand

Commit Message

Adrian Perez de Castro June 1, 2022, 9:09 p.m. UTC
libmanette is a library which provides a higher level interface to
enumerate and make use of game controllers (gamepads, joysticks).
WebKitGTK can use libmanette to expose controllers to web content,
which will be enabled on a follow-up patch.

Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
---
 DEVELOPERS                         |  1 +
 package/Config.in                  |  1 +
 package/libmanette/Config.in       | 15 +++++++++++
 package/libmanette/libmanette.hash |  5 ++++
 package/libmanette/libmanette.mk   | 42 ++++++++++++++++++++++++++++++
 5 files changed, 64 insertions(+)
 create mode 100644 package/libmanette/Config.in
 create mode 100644 package/libmanette/libmanette.hash
 create mode 100644 package/libmanette/libmanette.mk

Comments

Romain Naour July 27, 2022, 8:27 a.m. UTC | #1
Hello Adrian,

Le 01/06/2022 à 23:09, Adrian Perez de Castro a écrit :
> libmanette is a library which provides a higher level interface to
> enumerate and make use of game controllers (gamepads, joysticks).
> WebKitGTK can use libmanette to expose controllers to web content,
> which will be enabled on a follow-up patch.
> 
> Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
> ---
>  DEVELOPERS                         |  1 +
>  package/Config.in                  |  1 +
>  package/libmanette/Config.in       | 15 +++++++++++
>  package/libmanette/libmanette.hash |  5 ++++
>  package/libmanette/libmanette.mk   | 42 ++++++++++++++++++++++++++++++
>  5 files changed, 64 insertions(+)
>  create mode 100644 package/libmanette/Config.in
>  create mode 100644 package/libmanette/libmanette.hash
>  create mode 100644 package/libmanette/libmanette.mk
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 71cc3da6d7..740e9a3ca7 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -35,6 +35,7 @@ F:	package/bubblewrap/
>  F:	package/cage/
>  F:	package/cog/
>  F:	package/libepoxy/
> +F:	package/libmanette/
>  F:	package/libpsl/
>  F:	package/libwpe/
>  F:	package/webkitgtk/
> diff --git a/package/Config.in b/package/Config.in
> index 00f061015f..2242ad409e 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -506,6 +506,7 @@ endmenu
>  	source "package/kbd/Config.in"
>  	source "package/lcdproc/Config.in"
>  	source "package/libiec61850/Config.in"
> +	source "package/libmanette/Config.in"
>  	source "package/libubootenv/Config.in"
>  	source "package/libuio/Config.in"
>  	source "package/linux-backports/Config.in"
> diff --git a/package/libmanette/Config.in b/package/libmanette/Config.in
> new file mode 100644
> index 0000000000..8297d8c7f4
> --- /dev/null
> +++ b/package/libmanette/Config.in
> @@ -0,0 +1,15 @@
> +config BR2_PACKAGE_LIBMANETTE
> +	bool "libmanette"
> +	depends on BR2_USE_WCHAR # gettext
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	depends on BR2_USE_MMU # fork()

These "depends on" seems to be reverse dependencies of libglib2, so update the
comment to # libglib2

I build tested with an "old" toolchain with kernel-headers 4.9:

https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2020.08-1.tar.bz2

But it fail to build due to the following error:

./src/manette-device.c: In function ‘on_evdev_event’:
../src/manette-device.c:380:39: error: ‘struct input_event’ has no member named
‘input_event_sec’
  380 |   manette_event.any.time = evdev_event->input_event_sec * 1000 +
      |                                       ^~
../src/manette-device.c:381:39: error: ‘struct input_event’ has no member named
‘input_event_usec’
  381 |                            evdev_event->input_event_usec / 1000;
      |                                       ^~

libmanette requires a toolchain with kernel-headers at least 4.16:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=152194fe9c3f03232b9c0d0264793a7fa4af82f8

Best regards,
Romain


> +	select BR2_PACKAGE_LIBEVDEV
> +	select BR2_PACKAGE_LIBGLIB2
> +	help
> +	  GObject library which provides access to game controllers.
> +
> +	  https://gitlab.gnome.org/GNOME/libmanette
> +
> +comment "libmanette needs a toolchain w/ wchar, threads"
> +	depends on BR2_USE_MMU
> +	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/libmanette/libmanette.hash b/package/libmanette/libmanette.hash
> new file mode 100644
> index 0000000000..96089f971a
> --- /dev/null
> +++ b/package/libmanette/libmanette.hash
> @@ -0,0 +1,5 @@
> +# From https://download.gnome.org/sources/libmanette/0.2/libmanette-0.2.6.sha256sum
> +sha256  63653259a821ec7d90d681e52e757e2219d462828c9d74b056a5f53267636bac  libmanette-0.2.6.tar.xz
> +
> +# Locally calculated
> +sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING
> diff --git a/package/libmanette/libmanette.mk b/package/libmanette/libmanette.mk
> new file mode 100644
> index 0000000000..10f2b8a466
> --- /dev/null
> +++ b/package/libmanette/libmanette.mk
> @@ -0,0 +1,42 @@
> +################################################################################
> +#
> +# libmanette
> +#
> +################################################################################
> +
> +LIBMANETTE_VERSION_MAJOR = 0.2
> +LIBMANETTE_VERSION = $(LIBMANETTE_VERSION_MAJOR).6
> +LIBMANETTE_SOURCE = libmanette-$(LIBMANETTE_VERSION).tar.xz
> +LIBMANETTE_SITE = https://download.gnome.org/sources/libmanette/$(LIBMANETTE_VERSION_MAJOR)
> +LIBMANETTE_LICENSE = LGPL-2.1+
> +LIBMANETTE_LICENSE_FILES = COPYING
> +LIBMANETTE_INSTALL_STAGING = YES
> +LIBMANETTE_DEPENDENCIES = \
> +	libevdev \
> +	libglib2 \
> +	$(TARGET_NLS_DEPENDENCIES)
> +
> +LIBMANETTE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)
> +
> +LIBMANETTE_CONF_OPTS = \
> +	-Ddemos=false \
> +	-Dbuild-tests=false \
> +	-Dinstall-tests=false \
> +	-Ddoc=false \
> +	-Dvapi=false
> +
> +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)
> +LIBMANETTE_CONF_OPTS += -Dintrospection=true
> +LIBMANETTE_DEPENDENCIES += gobject-introspection
> +else
> +LIBMANETTE_CONF_OPTS += -Dintrospection=false
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBGUDEV),y)
> +LIBMANETTE_CONF_OPTS += -Dgudev=enabled
> +LIBMANETTE_DEPENDENCIES += libgudev
> +else
> +LIBMANETTE_CONF_OPTS += -Dgudev=disabled
> +endif
> +
> +$(eval $(meson-package))
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 71cc3da6d7..740e9a3ca7 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -35,6 +35,7 @@  F:	package/bubblewrap/
 F:	package/cage/
 F:	package/cog/
 F:	package/libepoxy/
+F:	package/libmanette/
 F:	package/libpsl/
 F:	package/libwpe/
 F:	package/webkitgtk/
diff --git a/package/Config.in b/package/Config.in
index 00f061015f..2242ad409e 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -506,6 +506,7 @@  endmenu
 	source "package/kbd/Config.in"
 	source "package/lcdproc/Config.in"
 	source "package/libiec61850/Config.in"
+	source "package/libmanette/Config.in"
 	source "package/libubootenv/Config.in"
 	source "package/libuio/Config.in"
 	source "package/linux-backports/Config.in"
diff --git a/package/libmanette/Config.in b/package/libmanette/Config.in
new file mode 100644
index 0000000000..8297d8c7f4
--- /dev/null
+++ b/package/libmanette/Config.in
@@ -0,0 +1,15 @@ 
+config BR2_PACKAGE_LIBMANETTE
+	bool "libmanette"
+	depends on BR2_USE_WCHAR # gettext
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_USE_MMU # fork()
+	select BR2_PACKAGE_LIBEVDEV
+	select BR2_PACKAGE_LIBGLIB2
+	help
+	  GObject library which provides access to game controllers.
+
+	  https://gitlab.gnome.org/GNOME/libmanette
+
+comment "libmanette needs a toolchain w/ wchar, threads"
+	depends on BR2_USE_MMU
+	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/libmanette/libmanette.hash b/package/libmanette/libmanette.hash
new file mode 100644
index 0000000000..96089f971a
--- /dev/null
+++ b/package/libmanette/libmanette.hash
@@ -0,0 +1,5 @@ 
+# From https://download.gnome.org/sources/libmanette/0.2/libmanette-0.2.6.sha256sum
+sha256  63653259a821ec7d90d681e52e757e2219d462828c9d74b056a5f53267636bac  libmanette-0.2.6.tar.xz
+
+# Locally calculated
+sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING
diff --git a/package/libmanette/libmanette.mk b/package/libmanette/libmanette.mk
new file mode 100644
index 0000000000..10f2b8a466
--- /dev/null
+++ b/package/libmanette/libmanette.mk
@@ -0,0 +1,42 @@ 
+################################################################################
+#
+# libmanette
+#
+################################################################################
+
+LIBMANETTE_VERSION_MAJOR = 0.2
+LIBMANETTE_VERSION = $(LIBMANETTE_VERSION_MAJOR).6
+LIBMANETTE_SOURCE = libmanette-$(LIBMANETTE_VERSION).tar.xz
+LIBMANETTE_SITE = https://download.gnome.org/sources/libmanette/$(LIBMANETTE_VERSION_MAJOR)
+LIBMANETTE_LICENSE = LGPL-2.1+
+LIBMANETTE_LICENSE_FILES = COPYING
+LIBMANETTE_INSTALL_STAGING = YES
+LIBMANETTE_DEPENDENCIES = \
+	libevdev \
+	libglib2 \
+	$(TARGET_NLS_DEPENDENCIES)
+
+LIBMANETTE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)
+
+LIBMANETTE_CONF_OPTS = \
+	-Ddemos=false \
+	-Dbuild-tests=false \
+	-Dinstall-tests=false \
+	-Ddoc=false \
+	-Dvapi=false
+
+ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)
+LIBMANETTE_CONF_OPTS += -Dintrospection=true
+LIBMANETTE_DEPENDENCIES += gobject-introspection
+else
+LIBMANETTE_CONF_OPTS += -Dintrospection=false
+endif
+
+ifeq ($(BR2_PACKAGE_LIBGUDEV),y)
+LIBMANETTE_CONF_OPTS += -Dgudev=enabled
+LIBMANETTE_DEPENDENCIES += libgudev
+else
+LIBMANETTE_CONF_OPTS += -Dgudev=disabled
+endif
+
+$(eval $(meson-package))