[Buildroot] [PATCH v2 2/2] libxkbcommon: add support for interactive-wayland test program
Arnout Vandecappelle
arnout at mind.be
Sun Oct 22 12:30:13 UTC 2017
Hi Peter,
Sorry to come back to this after so much time.
On 10-03-17 20:54, Peter Seiderer wrote:
[snip]
> diff --git a/package/libxkbcommon/0001-configure.ac-prefere-AC_PATH_PROG-for-wayland-scanne.patch b/package/libxkbcommon/0001-configure.ac-prefere-AC_PATH_PROG-for-wayland-scanne.patch
> new file mode 100644
> index 000000000..630e45d3c
> --- /dev/null
> +++ b/package/libxkbcommon/0001-configure.ac-prefere-AC_PATH_PROG-for-wayland-scanne.patch
> @@ -0,0 +1,33 @@
> +From b44b0d5323985661b508948eac725048affd3221 Mon Sep 17 00:00:00 2001
> +From: Peter Seiderer <ps.report at gmx.net>
> +Date: Wed, 8 Mar 2017 09:36:39 +0100
> +Subject: [PATCH] configure.ac: prefere AC_PATH_PROG for wayland-scanner
prefer
> +
> +Prefere AC_PATH_PROG result for wayland-scanner over the
Prefer
> +pkg-config version (when cross-compiling the .pc file might
> +point to the wrong wayland-scanner binary (target rather than
> +host) resulting in a non-executable and wrong scanner).
> +
> +Signed-off-by: Peter Seiderer <ps.report at gmx.net>
> +---
> + configure.ac | 4 +++-
> + 1 file changed, 3 insertions(+), 1 deletion(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 725915b..e4ff9d2 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -194,7 +194,9 @@ AS_IF([test "x$enable_wayland" = xyes], [
> + [AC_MSG_ERROR([Wayland utilities require libwayland-client >= 1.2 which was not found. \
> + You can disable Wayland support with --disable-wayland.])])
> + AC_PATH_PROG([wayland_scanner], [wayland-scanner])
> +- wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
> ++ if test "x$wayland_scanner" = x; then
> ++ wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
> ++ fi
I don't really agree with this fix. The output of pkg-config really should be
authorative. Can't we patch the .pc file in a WAYLAND_PROTOCOLS_POST_INSTALL_HOOK?
> + ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
> + AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
> + ], [enable_wayland=no])
> +--
> +2.11.0
> +
> diff --git a/package/libxkbcommon/Config.in b/package/libxkbcommon/Config.in
> index 4da12897f..9c15d5d41 100644
> --- a/package/libxkbcommon/Config.in
> +++ b/package/libxkbcommon/Config.in
> @@ -1,9 +1,21 @@
> config BR2_PACKAGE_LIBXKBCOMMON
> bool "libxkbcommon"
> select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XORG7
> + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND
IIUC this is only needed when BR2_PACKAGE_LIBXKBCOMMON_INTERACTIVE_WAYLAND is
selected, no? For sure it is redundant with the select below.
> help
> xkbcommon is a keymap compiler and support library which
> processes a reduced subset of keymaps as defined by the XKB
> specification.
>
> http://xkbcommon.org/
> +
> +if BR2_PACKAGE_LIBXKBCOMMON && BR2_PACKAGE_WAYLAND
The BR2_PACKAGE_WAYLAND part should be a depends of _INTERACTIVE_WAYLAND, below.
> +
> +config BR2_PACKAGE_LIBXKBCOMMON_INTERACTIVE_WAYLAND
> + bool "interactive-wayland"
> + select BR2_PACKAGE_WAYLAND_PROTOCOLS
> + help
> + interactive-wayland is a wayland test application
> + for libxkbcommon.
> +
> +endif
> diff --git a/package/libxkbcommon/libxkbcommon.mk b/package/libxkbcommon/libxkbcommon.mk
> index 601181446..c25b149ef 100644
> --- a/package/libxkbcommon/libxkbcommon.mk
> +++ b/package/libxkbcommon/libxkbcommon.mk
> @@ -11,7 +11,12 @@ LIBXKBCOMMON_LICENSE = MIT/X11
> LIBXKBCOMMON_LICENSE_FILES = LICENSE
> LIBXKBCOMMON_INSTALL_STAGING = YES
> LIBXKBCOMMON_DEPENDENCIES = host-bison host-flex
> -LIBXKBCOMMON_CONF_OPTS = --disable-wayland
> +
> +# patch 0001-configure.ac-prefere-AC_PATH_PROG-for-wayland-scanne.patch
> +# touches configure.ac
> +LIBXKBCOMMON_AUTORECONF = YES
> +LIBXKBCOMMON_DEPENDENCIES += host-xutil_util-macros
> +
> # uses C99 features
> LIBXKBCOMMON_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99"
>
> @@ -22,4 +27,21 @@ else
> LIBXKBCOMMON_CONF_OPTS += --disable-x11
> endif
>
> +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON_INTERACTIVE_WAYLAND),y)
> +LIBXKBCOMMON_CONF_OPTS += --enable-wayland
> +LIBXKBCOMMON_DEPENDENCIES += wayland wayland-protocols
> +LIBXKBCOMMON_CONF_ENV += ac_cv_path_wayland_scanner=$(HOST_DIR)/usr/bin/wayland-scanner
> +define LIBXKBCOMMON_BUILD_INTERACTIVE_WAYLAND
> + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) test/interactive-wayland
You could instead set LIBXKBCOMMON_MAKE_OPTS to 'all test/interactive-wayland'
I think.
> +endef
> +LIBXKBCOMMON_POST_BUILD_HOOKS = LIBXKBCOMMON_BUILD_INTERACTIVE_WAYLAND
> +define LIBXKBCOMMON_INSTALL_INTERACTIVE_WAYLAND
> + $(INSTALL) -D -m 0755 $(@D)/test/interactive-wayland \
> + $(TARGET_DIR)/usr/bin/interactive-wayland
> +endef
> +LIBXKBCOMMON_POST_INSTALL_TARGET_HOOKS = LIBXKBCOMMON_INSTALL_INTERACTIVE_WAYLAN> +else
> +LIBXKBCOMMON_CONF_OPTS += --disable-wayland
> +endif
> +
> $(eval $(autotools-package))
That said, I wonder if it is really worthwhile to go through all this effort to
install a test program that upstream doesn't even mean to install...
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
More information about the buildroot
mailing list