diff mbox

[v4] Add gpm (general purpose mouse) server package

Message ID 1391019659-3784-1-git-send-email-julien.boibessot@free.fr
State Accepted
Headers show

Commit Message

Julien Boibessot Jan. 29, 2014, 6:20 p.m. UTC
From: Julien Boibessot <julien.boibessot@armadeus.com>


Signed-off-by: Julien Boibessot <julien.boibessot@armadeus.com>
Signed-off-by: Romain Naour <romain.naour@openwide.fr>
---
 Changes since v3:
 - As recommended by Thomas:
   * cleanup Config.in menu entries

 Changes since v2:
 - As recommended by Yann:
   * spell check
   * use BR autoconf/make/libtool but in SDL package way
   * put optionnal GPM_REMOVE_TEST_TOOLS_FROM_TARGET into ifeq

 Changes since v1:
 - 80x # in gpm.mk banner
 - As recommended by Romain:
   * remove possible circular dependency with ncurses
   * don't allow package selection when BR2_PREFER_STATIC_LIB=y
   * fixes headers path when gpm wants to build its dependencies rules

 package/Config.in     |    1 +
 package/gpm/Config.in |   24 ++++++++++++++++++++++
 package/gpm/gpm.mk    |   52 +++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 77 insertions(+), 0 deletions(-)
 create mode 100644 package/gpm/Config.in
 create mode 100644 package/gpm/gpm.mk

Comments

Yann E. MORIN Jan. 29, 2014, 6:39 p.m. UTC | #1
Julien, All,

On 2014-01-29 19:20 +0100, julien.boibessot@free.fr spake thusly:
> From: Julien Boibessot <julien.boibessot@armadeus.com>
> diff --git a/package/gpm/gpm.mk b/package/gpm/gpm.mk
> new file mode 100644
> index 0000000..01b30d4
> --- /dev/null
> +++ b/package/gpm/gpm.mk
> @@ -0,0 +1,52 @@
[--SNIP--]
> +# configure is missing but gpm seems not compatible with our autoreconf
> +# mechanism so we have to do it manually instead of using GPM_AUTORECONF = YES
> +define GPM_RUN_AUTOGEN
> +	cd $(@D) && PATH=$(HOST_PATH) ./autogen.sh
> +endef
> +
> +GPM_POST_PATCH_HOOKS += GPM_RUN_AUTOGEN
> +GPM_DEPENDENCIES += host-automake host-autoconf host-libtool

Nitpick: I prefer we "coalesce" the *_HOOKS lines directly below the
define, and add an empty line _fater_ the *_HOOKS (not before liek you
did), like:

    define GPM_RUN_AUTOGEN
        cd $(@D) && PATH=$(HOST_PATH) ./autogen.sh
    endef
    GPM_POST_PATCH_HOOKS += GPM_RUN_AUTOGEN

    GPM_DEPENDENCIES += host-automake host-autoconf host-libtool

It looks more natural to me, otherwise one has to train his eyes to spot
the _HOOKS line.

Besides, in your case, the _HOOKS line is directly tied to another
assignment, which makes it look like they belong to the same 'semantic'
block, so the brain (mine, at least!) automatically skips over it,
desparately looking for the _HOOKS line later in the file... Yes, I'm a
bizare guy, but yet... ;-)

> +ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),)
> +define GPM_REMOVE_TEST_TOOLS_FROM_TARGET
> +	for tools in mev hltest mouse-test display-buttons \
> +			get-versions display-coords; do \
> +		rm -f $(TARGET_DIR)/usr/bin/$$tools ; \
> +	done
> +endef
> +

Ditto, remove this empty line

> +GPM_POST_INSTALL_TARGET_HOOKS += GPM_REMOVE_TEST_TOOLS_FROM_TARGET
> +endif
> +
> +define GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET
> +	$(INSTALL) -m 0644 -D $(@D)/conf/gpm-root.conf $(TARGET_DIR)/etc/
> +endef
> +

Ditto again.

> +GPM_POST_INSTALL_TARGET_HOOKS += GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET
> +
> +$(eval $(autotools-package))

Anyway, if Peter likes it that way, I won't object much! ;-)
So:
    Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.
Peter Korsgaard Feb. 2, 2014, 8:54 p.m. UTC | #2
>>>>> "julien" == julien boibessot <julien.boibessot@free.fr> writes:

 > From: Julien Boibessot <julien.boibessot@armadeus.com>
 > Signed-off-by: Julien Boibessot <julien.boibessot@armadeus.com>
 > Signed-off-by: Romain Naour <romain.naour@openwide.fr>
 > ---
 >  Changes since v3:
 >  - As recommended by Thomas:
 >    * cleanup Config.in menu entries

Committed with the minor whitespace fixes pointed out by Yann, thanks!
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 78c0e06..d52c65e 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -290,6 +290,7 @@  source "package/fmtools/Config.in"
 source "package/freescale-imx/Config.in"
 source "package/fxload/Config.in"
 source "package/gadgetfs-test/Config.in"
+source "package/gpm/Config.in"
 source "package/gpsd/Config.in"
 source "package/gptfdisk/Config.in"
 source "package/gvfs/Config.in"
diff --git a/package/gpm/Config.in b/package/gpm/Config.in
new file mode 100644
index 0000000..2121e71
--- /dev/null
+++ b/package/gpm/Config.in
@@ -0,0 +1,24 @@ 
+config BR2_PACKAGE_GPM
+	bool "gpm"
+	depends on !BR2_PREFER_STATIC_LIB
+	help
+	  "gpm" means general purpose mouse (server) and provides mouse support
+	  for Linux virtual consoles.
+	  gpm-root (to draw menus in current virtual console; config file in
+	  /etc/gpm-root.conf) and disable-paste (to disable paste buffer for
+	  security reasons), will also be installed.
+
+	  http://www.nico.schottelius.org/software/gpm/
+
+if BR2_PACKAGE_GPM
+
+config BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS
+	bool "install test tools"
+	help
+	  Install gpm test tools (get-versions, mev, hltest, mouse-test,
+	  display-buttons & display-coords).
+
+endif
+
+comment "gpm mouse server needs a toolchain w/ dynamic library"
+	depends on BR2_PREFER_STATIC_LIB
diff --git a/package/gpm/gpm.mk b/package/gpm/gpm.mk
new file mode 100644
index 0000000..01b30d4
--- /dev/null
+++ b/package/gpm/gpm.mk
@@ -0,0 +1,52 @@ 
+###############################################################################
+#
+# gpm
+#
+###############################################################################
+
+GPM_VERSION = 1.20.7
+GPM_SOURCE = gpm-$(GPM_VERSION).tar.bz2
+GPM_SITE = http://www.nico.schottelius.org/software/gpm/archives/
+GPM_LICENSE = GPLv2+
+GPM_LICENSE_FILES = COPYING
+GPM_INSTALL_STAGING = YES
+
+# if not already installed in staging dir, gpm Makefile may fail to find some
+# of the headers needed to generate build dependencies, the first time it is
+# built. CPPFLAGS is used to pass the right include path to dependency rules.
+GPM_CONF_ENV = CPPFLAGS="$(TARGET_CPPFLAGS) -I$(@D)/src/headers/"
+
+# gpm and ncurses have a circular dependency. As gpm function GPM_Wgetch()
+# (requiring ncurses) is not recommended for use by ncurses people themselves
+# and as it's better to have gpm support in ncurses that the contrary, we force
+# gpm to not look after ncurses explicitly.
+# http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
+GPM_CONF_OPT = --without-curses
+
+# configure is missing but gpm seems not compatible with our autoreconf
+# mechanism so we have to do it manually instead of using GPM_AUTORECONF = YES
+define GPM_RUN_AUTOGEN
+	cd $(@D) && PATH=$(HOST_PATH) ./autogen.sh
+endef
+
+GPM_POST_PATCH_HOOKS += GPM_RUN_AUTOGEN
+GPM_DEPENDENCIES += host-automake host-autoconf host-libtool
+
+ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),)
+define GPM_REMOVE_TEST_TOOLS_FROM_TARGET
+	for tools in mev hltest mouse-test display-buttons \
+			get-versions display-coords; do \
+		rm -f $(TARGET_DIR)/usr/bin/$$tools ; \
+	done
+endef
+
+GPM_POST_INSTALL_TARGET_HOOKS += GPM_REMOVE_TEST_TOOLS_FROM_TARGET
+endif
+
+define GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET
+	$(INSTALL) -m 0644 -D $(@D)/conf/gpm-root.conf $(TARGET_DIR)/etc/
+endef
+
+GPM_POST_INSTALL_TARGET_HOOKS += GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET
+
+$(eval $(autotools-package))