diff mbox

Add gpm (general purpose mouse) server package

Message ID 1389806830-24712-1-git-send-email-julien.boibessot@free.fr
State Superseded
Headers show

Commit Message

Julien Boibessot Jan. 15, 2014, 5:27 p.m. UTC
From: Julien Boibessot <julien.boibessot@armadeus.com>

To test it:
* configure a getty on tty1 (virtual Framebuffer terminal)
* plug USB keyboard and mouse, login in tty1
* launch gpm: gpm -m /dev/input/mouse0 -t imps2
* mouse cut & paste should work on terminal
* launch gpm-root from this terminal
* Ctrl+mouse buttons should open text menus

Signed-off-by: Julien Boibessot <julien.boibessot@armadeus.com>
---
 package/Config.in     |    1 +
 package/gpm/Config.in |   20 ++++++++++++++++++++
 package/gpm/gpm.mk    |   39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 60 insertions(+), 0 deletions(-)
 create mode 100644 package/gpm/Config.in
 create mode 100644 package/gpm/gpm.mk

Comments

Romain Naour Jan. 15, 2014, 9:31 p.m. UTC | #1
Hi,

Le 15/01/2014 18:27, julien.boibessot@free.fr a écrit :
> From: Julien Boibessot <julien.boibessot@armadeus.com>
>
> To test it:
> * configure a getty on tty1 (virtual Framebuffer terminal)
> * plug USB keyboard and mouse, login in tty1
> * launch gpm: gpm -m /dev/input/mouse0 -t imps2
> * mouse cut & paste should work on terminal
> * launch gpm-root from this terminal
> * Ctrl+mouse buttons should open text menus
>
> Signed-off-by: Julien Boibessot <julien.boibessot@armadeus.com>
> ---
>   package/Config.in     |    1 +
>   package/gpm/Config.in |   20 ++++++++++++++++++++
>   package/gpm/gpm.mk    |   39 +++++++++++++++++++++++++++++++++++++++
>   3 files changed, 60 insertions(+), 0 deletions(-)
>   create mode 100644 package/gpm/Config.in
>   create mode 100644 package/gpm/gpm.mk
>
> 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..b60f4a3
> --- /dev/null
> +++ b/package/gpm/Config.in
> @@ -0,0 +1,20 @@
> +config BR2_PACKAGE_GPM
> +	bool "gpm mouse server"
> +	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 gpm test tools also"
> +	help
> +	  Install gpm test tools (get-versions, mev, hltest, mouse-test,
> +	  display-buttons & display-coords).
> +
> +endif
> diff --git a/package/gpm/gpm.mk b/package/gpm/gpm.mk
> new file mode 100644
> index 0000000..49ac8df
> --- /dev/null
> +++ b/package/gpm/gpm.mk
> @@ -0,0 +1,39 @@
> +#############################################################
> +#
> +# 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
> +
> +# To generate missing configure:
> +define GPM_AUTOGEN_CALL
> +	cd $(@D); ./autogen.sh
> +endef
> +
> +GPM_PRE_CONFIGURE_HOOKS += GPM_AUTOGEN_CALL
> +
> +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
> +
> +ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),)
> +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))
May I suggest you to test gpm package with different toolchain 
configuration ?

It won't build in static case (BR2_PREFER_STATIC_LIB=y):
"i686-buildroot-linux-uclibc/bin/ld: attempted static link of dynamic 
object `lib/libgpm.so.2'
collect2: error: ld returned 1 exit status"

There is also some errors about missing gpm.h in these files: (wrong path)
display-buttons.c
display-coords.c
get-versions.c
||
And It would be good to disable the doc installation on target.

Thank for your contribution (I was working on gpm package too ;-) )

Best regards,
Romain Naour
Julien Boibessot Jan. 16, 2014, 7:16 p.m. UTC | #2
Hello Romain,

and thanks for the review !

On 01/15/2014 10:31 PM, Romain Naour wrote:
> Hi,
>
> Le 15/01/2014 18:27, julien.boibessot@free.fr a écrit :
>> From: Julien Boibessot <julien.boibessot@armadeus.com>
>>
>> To test it:
>> * configure a getty on tty1 (virtual Framebuffer terminal)
>> * plug USB keyboard and mouse, login in tty1
>> * launch gpm: gpm -m /dev/input/mouse0 -t imps2
>> * mouse cut & paste should work on terminal
>> * launch gpm-root from this terminal
>> * Ctrl+mouse buttons should open text menus
>>
>> Signed-off-by: Julien Boibessot <julien.boibessot@armadeus.com>
>> ---
>>  package/Config.in     |    1 +
>>  package/gpm/Config.in |   20 ++++++++++++++++++++
>>  package/gpm/gpm.mk    |   39 +++++++++++++++++++++++++++++++++++++++
>>  3 files changed, 60 insertions(+), 0 deletions(-)
>>  create mode 100644 package/gpm/Config.in
>>  create mode 100644 package/gpm/gpm.mk
>>
>> 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..b60f4a3
>> --- /dev/null
>> +++ b/package/gpm/Config.in
>> @@ -0,0 +1,20 @@
>> +config BR2_PACKAGE_GPM
>> +	bool "gpm mouse server"
>> +	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 gpm test tools also"
>> +	help
>> +	  Install gpm test tools (get-versions, mev, hltest, mouse-test,
>> +	  display-buttons & display-coords).
>> +
>> +endif
>> diff --git a/package/gpm/gpm.mk b/package/gpm/gpm.mk
>> new file mode 100644
>> index 0000000..49ac8df
>> --- /dev/null
>> +++ b/package/gpm/gpm.mk
>> @@ -0,0 +1,39 @@
>> +#############################################################
>> +#
>> +# 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
>> +
>> +# To generate missing configure:
>> +define GPM_AUTOGEN_CALL
>> +	cd $(@D); ./autogen.sh
>> +endef
>> +
>> +GPM_PRE_CONFIGURE_HOOKS += GPM_AUTOGEN_CALL
>> +
>> +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
>> +
>> +ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),)
>> +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))
> May I suggest you to test gpm package with different toolchain
> configuration ?
>
> It won't build in static case (BR2_PREFER_STATIC_LIB=y):
> "i686-buildroot-linux-uclibc/bin/ld: attempted static link of dynamic
> object `lib/libgpm.so.2'
> collect2: error: ld returned 1 exit status"

When I send patches they have been tested on different ARM target with
mainly 2 uClibc configs ("default" and "with large file, threads and
Co"), but not the one you mentionned (static lib)... sorry :-(
Have you other configs that could lead to compilation problems ?

>
> There is also some errors about missing gpm.h in these files: (wrong path)
> display-buttons.c
> display-coords.c
> get-versions.c

where do you see that error ? (for me these tools are compiling fine and
working on target)

> ||
> And It would be good to disable the doc installation on target.

why ?
/usr/share/info/ and /usr/share/man/ are cleaned by Buildroot before
generating root filesystem images.
Am I wrong ?

>
> Thank for your contribution (I was working on gpm package too ;-) )

Is yours very different from mine ? I'm not against merging your work
and sharing the credits or vis et versa.

Best regards,
Julien
Romain Naour Jan. 16, 2014, 11:17 p.m. UTC | #3
Hi Julien,

Le 16/01/2014 20:16, Julien Boibessot a écrit :
> Hello Romain,
>
> and thanks for the review !
>

You're welcome.

>> May I suggest you to test gpm package with different toolchain 
>> configuration ?
>>
>> It won't build in static case (BR2_PREFER_STATIC_LIB=y):
>> "i686-buildroot-linux-uclibc/bin/ld: attempted static link of dynamic 
>> object `lib/libgpm.so.2'
>> collect2: error: ld returned 1 exit status"
>
> When I send patches they have been tested on different ARM target with 
> mainly 2 uClibc configs ("default" and "with large file, threads and 
> Co"), but not the one you mentionned (static lib)... sorry :-(
> Have you other configs that could lead to compilation problems ?

It's common source of failure in autobuilder, especially with new packages.
I'm not sure about mmu less case (BR2_USE_MMU=n)...

>
>>
>> There is also some errors about missing gpm.h in these files: (wrong 
>> path)
>> display-buttons.c
>> display-coords.c
>> get-versions.c
>
> where do you see that error ? (for me these tools are compiling fine 
> and working on target)
I get these error when ncurses is missing (see below):
prog/display-buttons.c:39:57: fatal error: gpm.h: no such file or directory
compilation terminated.
prog/display-coords.c:40:57: fatal error: gpm.h: no such file or directory
compilation terminated.
prog/get-versions.c:25:57: fatal error: gpm.h: no such file or directory
compilation terminated.

I need to add "headers/" before gpm.h

There is an optional dependency on ncurses:
ifeq ($(BR2_PACKAGE_NCURSES),y)
GPM_DEPENDENCIES += ncurses
GPM_CONF_OPT += --with-curses
else
GPM_CONF_OPT += --without-curses
endif
>
>> ||
>> And It would be good to disable the doc installation on target.
>
> why ?
> /usr/share/info/ and /usr/share/man/ are cleaned by Buildroot before 
> generating root filesystem images.
> Am I wrong ?
Sorry your right, I was abused by my command line :
"make toolchain gpm" which doesn't run target-finalize.

But this script (/usr/share/emacs/site-lisp/t-mouse.el) remain on target
I'm not sure it is really useful.
You can remove it with:
GPM_CONF_OPT += ac_cv_path_emacs=no

Be careful with makeinfo, because some host don't have it and fail to 
build the documentation.
Normally you can disable makeinfo with:
GPM_CONF_OPT += ac_cv_path_MAKEINFO=no
But I get an error during install...

>
>>
>> Thank for your contribution (I was working on gpm package too ;-) )
>
> Is yours very different from mine ? I'm not against merging your work 
> and sharing the credits or vis et versa.
Thanks, I gave you all my notes :)

Best regards,
Romain Naour
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..b60f4a3
--- /dev/null
+++ b/package/gpm/Config.in
@@ -0,0 +1,20 @@ 
+config BR2_PACKAGE_GPM
+	bool "gpm mouse server"
+	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 gpm test tools also"
+	help
+	  Install gpm test tools (get-versions, mev, hltest, mouse-test,
+	  display-buttons & display-coords).
+
+endif
diff --git a/package/gpm/gpm.mk b/package/gpm/gpm.mk
new file mode 100644
index 0000000..49ac8df
--- /dev/null
+++ b/package/gpm/gpm.mk
@@ -0,0 +1,39 @@ 
+#############################################################
+#
+# 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
+
+# To generate missing configure:
+define GPM_AUTOGEN_CALL
+	cd $(@D); ./autogen.sh
+endef
+
+GPM_PRE_CONFIGURE_HOOKS += GPM_AUTOGEN_CALL
+
+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
+
+ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),)
+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))