ports/120783: [patch] Synaptics Xorg driver chooses wrong input device on amd64
Eygene Ryabinkin
rea-fbsd at codelabs.ru
Mon Feb 18 07:10:03 UTC 2008
>Number: 120783
>Category: ports
>Synopsis: [patch] Synaptics Xorg driver chooses wrong input device on amd64
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Feb 18 07:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Eygene Ryabinkin
>Release: FreeBSD 7.0-PRERELEASE amd64
>Organization:
Code Labs
>Environment:
System: FreeBSD XXX 7.0-PRERELEASE FreeBSD 7.0-PRERELEASE #15: Wed Jan 30 19:24:48 MSK 2008 root at XXX:/usr/obj/usr/src/sys/XXX amd64
>Description:
When one tries to use Synaptics driver for Xorg (ports/x11-drivers/synaptics)
on amd64, he faces the problem that the driver tries to use /dev/input/event*
node to communicate with the touchpad, even when explicitely told to use
psm device.
This problem was discuissed in the following thread:
http://lists.freebsd.org/pipermail/freebsd-hackers/2007-December/022536.html
http://lists.freebsd.org/pipermail/freebsd-hackers/2008-January/022964.html
http://lists.freebsd.org/pipermail/freebsd-hackers/2008-February/023263.html
>How-To-Repeat:
Find amd64 machine, compile Xorg and Synaptics driver, enable it in the
xorg.conf (as described in /usr/ports/x11-drivers/synaptics/pkg-message)
and try to start Xorg. You'll see in your Xorg.log messages like this:
-----
(II) Synaptics touchpad driver version 0.14.6 (1406)
Synaptics_Touchpad no synaptics event device found (checked 10 nodes)
Synaptics_Touchpad The /dev/input/event* device nodes seem to be missing
(EE) xf86OpenSerial: No Device specified.
Synaptics driver unable to open device
(EE) PreInit failed for input device "Synaptics_Touchpad"
(II) UnloadModule: "synaptics"
-----
Xorg will refuse to start. You don't need to have touchpad in your
system in order to verify the bug's existence. But you'll need the
touchpad to verify that the patch below eliminates the problem.
>Fix:
The real problem is that port's make instance defines ARCH variable
to be 'amd64'. Next, it is passed to the child GNU make via
MAKEOPTIONS, so GNU make refuses to modify the ARCH variable following
the Makefile statements, because they use plain 'ARCH = something'
assignments. Thus, ARCH is not rewritten as 'x86_64' and port is
compiled with i386 architecture defaults. And then the option
parsing goes mad and sees no 'Protocol' statements from xorg.conf.
The following patch to the 'files/patch-Makefile' fixes the Synaptics
startup: it uses the correct driver and device. Please, note that
I have no hardware with amd64 and Synaptics touchpad at hand, so
can not verify that the driver works correctly. But
1) the driver initializes correctly for me;
2) the mentioned problem should be fixed anyway;
3) at least Cristian Klein and rik@ have the needed hardware
and (I hope) will try to fully test the patch.
--- synaptics-amd64-ARCH.patch begins here ---
>From 083c1be4c91da739436f2b1e509a96512ac05867 Mon Sep 17 00:00:00 2001
From: Eygene Ryabinkin <rea-fbsd at codelabs.ru>
Date: Mon, 4 Feb 2008 19:17:43 +0300
FreeBSD make sets ARCH variable to 'amd64' [1] and invokes GNU
make. It inherits the ARCH variable and refuses to set it via
ordinary '=' operator. So we must force ARCH assignments.
[1] Try 'make -V ARCH' in the port directory.
Signed-off-by: Eygene Ryabinkin <rea-fbsd at codelabs.ru>
---
files/patch-Makefile | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/files/patch-Makefile b/files/patch-Makefile
index 1ae3cbe..90870c5 100644
--- a/files/patch-Makefile
+++ b/files/patch-Makefile
@@ -1,5 +1,5 @@
---- Makefile.orig Sun Jul 16 00:58:26 2006
-+++ Makefile Sun Aug 13 10:47:35 2006
+--- Makefile.orig 2006-07-15 19:58:26.000000000 +0400
++++ Makefile 2008-02-04 19:11:33.000000000 +0300
@@ -12,14 +12,14 @@
MANDIR = $(DESTDIR)$(PREFIX)/man
@@ -8,7 +8,8 @@
+ ARCH = $(shell uname -m)
endif
ifeq ($(ARCH),amd64)
- ARCH = x86_64
+- ARCH = x86_64
++ override ARCH = x86_64
endif
ifeq ($(ARCH),x86_64)
ARCH_DEFINES = -D__x86_64__ -D_XSERVER64
--
1.5.3.8
--- synaptics-amd64-ARCH.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list