Bug 10262

Summary: input drivers not building since October 2006
Product: xorg Reporter: David S. Miller <davem>
Component: Protocol/CoreAssignee: Daniel Stone <daniel>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: dparsons
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Build patch
none
Build patch
none
Build patch
none
Build patch
none
Build patch
none
Build patch
none
Build patch none

Description David S. Miller 2007-03-11 20:25:26 UTC
Since the removal of the motion history handling by Danial
Stone, in commit 0514d53e10b3521bb708a9cbde4bab525248eadb
many input drivers are not building because they still try to
make use of ->history_size in struct _LocalDeviceRec.

I don't understand how a build regression like this can persist
in the mainline sources for months :-/  If these drivers are not
supposed to be built, take them out of the build.sh script or
something like that.

From a quick grep of drivers/xf86-input-*/*/*.c it seems like pretty
much every single xf86-input driver won't build because of this.
Comment 1 Daniel Stone 2007-03-11 23:53:51 UTC
*** Bug 10263 has been marked as a duplicate of this bug. ***
Comment 2 Daniel Stone 2007-03-11 23:55:59 UTC
yeah, i'm aware of the issue and it's on my todo list.  but quite low on my todo list, since i can virtually guarantee you don't use those drivers anyway.

also, out of interest, why are you trying to build the entire x tree from scratch? unless you're using sls or something, your distribution should have reasonably up to date sources for the large percentage of modules that haven't changed at all in years.
Comment 3 David S. Miller 2007-03-12 02:41:53 UTC
I wanted to start hacking on X, so the first thing I did was read
the documentation on how to build the tree out of GIT, using the
build.sh script, and it failed.  Part of what I wanted to improve
were any build warnings or failures specific to Linux/sparc64.

This is a serious quality control issue in my opinion.  If you change
interfaces you should either get the drivers using them fixed up
quickly or deprecate the drivers.  If you don't have time to do this,
the changes aren't ready to go in yet, ask someone for help.  For
something as important as input device hot-plug I'm sure you could
find someone if it was holding up the merge. :-)

A few weeks I could understand, especially if the infrastructure change
was enormous.  But 4 months?  You've got to be kidding me.  Also, if
you don't nip these kinds of things in the butt from the get-go, by the
time you get to it most of the context will be swapped out of your brain
and it'll be harder and more error prone to do the conversions.

If we did this in the Linux kernel people would publicly hang us.  Rarely
do the most obscure drivers go unbuildable for more than a day or two
because lots of people are doing builds with every driver enabled.
Comment 4 Daniel Stone 2007-03-20 14:19:52 UTC
welcome to the land of x, where we have a desperate developer shortage, and one of two input developers is juggling input/xkb, a reverse-engineered driver, x.org foundation board, fd.o admin, et al, and the other one is juggling a phd and multiple-cursor work.

i counted the other day and only came up with about 16 currently active developers, of which maybe half are full-time.  this isn't the kernel ...

regardless, i've added the old api back.  enjoy.
Comment 5 David S. Miller 2007-03-25 21:05:44 UTC
Please do me a real huge favor, type 'make' in a few input drivers
before closing this bug, I'd really appreciate it, thanks.

The bug isn't fixed, most of the input drivers still don't
build, and looking at your xserver changeset I don't see how
you expected it to fix the build regressions added by the input
layer hot-plug stuff.  You added the ->history_size bit back,
but you didn't add any of the other old things your removed which
these various input drivers want, such as motion_history_proc.

One example error is, with xf86-input-acecad:

acecad.c:50:1 warning: "NEED_XF86_TYPES" redefined
In file included from ../config.h:4
                 from acecad.c:29:
/opt/xorg/include/xorg/xorg-xserver.h:69:1: warning: this is the location of the previous definition
acecad.c: In function 'AceCadPreInit':
acecad.c:192: error: 'struct _LocalDeviceRec' has no member named 'motion_history_proc'
acecad.c:283: error: invalid use of void expression

But you can try just about any input driver and you'll see this failure.

Please don't rush this and fix the build regression properly, thanks
a lot.
Comment 6 Daniel Stone 2007-03-26 02:04:05 UTC
(In reply to comment #5)
> Please do me a real huge favor, type 'make' in a few input drivers
> before closing this bug, I'd really appreciate it, thanks.

i did, actually (mainly calcomp, iirc).  not that this paragraph is making me extremely keen to download all the other drivers and try those too.

> The bug isn't fixed, most of the input drivers still don't
> build, and looking at your xserver changeset I don't see how
> you expected it to fix the build regressions added by the input
> layer hot-plug stuff.  You added the ->history_size bit back,
> but you didn't add any of the other old things your removed which
> these various input drivers want, such as motion_history_proc.

i didn't realise people were setting m_h_p as well, because there's no reason i can see that they would want to.
Comment 7 Brice Goglin 2007-04-29 18:38:20 UTC
From what I saw by building the input drivers in Debian recently, the ones that still don't build with input proto 1.4 are:
xf86-input-calcomp
xf86-input-citron
xf86-input-dmc
xf86-input-dynapro
xf86-input-elo2300
xf86-input-microtouch
xf86-input-penmount
Comment 8 Sunil Amitkumar Janki 2007-05-05 04:12:31 UTC
Created attachment 9866 [details] [review]
Build patch
Comment 9 Sunil Amitkumar Janki 2007-05-05 04:13:04 UTC
Created attachment 9867 [details] [review]
Build patch
Comment 10 Sunil Amitkumar Janki 2007-05-05 04:13:30 UTC
Created attachment 9868 [details] [review]
Build patch
Comment 11 Sunil Amitkumar Janki 2007-05-05 04:13:53 UTC
Created attachment 9869 [details] [review]
Build patch
Comment 12 Sunil Amitkumar Janki 2007-05-05 04:14:18 UTC
Created attachment 9870 [details] [review]
Build patch
Comment 13 Sunil Amitkumar Janki 2007-05-05 04:14:43 UTC
Created attachment 9871 [details] [review]
Build patch
Comment 14 Sunil Amitkumar Janki 2007-05-05 04:15:54 UTC
Created attachment 9872 [details] [review]
Build patch

This one didn't compile on my computer but that may be an error on my side.
Please omit if unnecessary.
Comment 15 Drew Parsons 2007-06-14 05:37:24 UTC
Following up Brice's list of the seven broken drivers, they all have the common problem "error: 'TS_Raw' undeclared".

TS_Raw (and friends) was added to XI.h in commit 4383a95e0bbc2f09394deefc453c2edd1c813d0f, 14 Nov 2003 by Kaleb Keithley, "XFree86 4.3.0.1".

Daniel removed them in commit 7a4a2a3e733378abced0a184627adfda4ed387b9, 17 Jul 2006, "add DevicePresenceNotify event, clean up", saying "Clean up some random detritus from the MetroLink merge.".

Daniel, does this mean these MetroLink TS_ defines are needed after all?
Comment 16 Daniel Stone 2007-06-14 05:42:03 UTC
TS_Raw was ostensibly there as a wire constant, but it was unused in that sense.  if drivers need it as an internal value, they can use an enum or something else internal.  i'll fix these up when i get back from holiday.
Comment 17 Daniel Stone 2007-08-07 15:12:47 UTC
all of the drivers now build.
Comment 18 Drew Parsons 2007-08-14 20:23:39 UTC
> all of the drivers now build.

I can't see any substantial changes to the code. Testing calcomp, for instance, I still get the same error:  'TS_Raw' undeclared.  Did you need to push the fixes up to the freedesktop.org repo, or did I miss something important?
Comment 19 Brice Goglin 2007-08-15 00:12:21 UTC
Drew, TS_Raw has been re-added to xf86XInput.h in Xserver in commit 9398d62f27ee1b287e4458fd8b011c10f7b59efd
Comment 20 Drew Parsons 2007-08-15 00:43:25 UTC
Ah thanks, I see it now.  I saw that it hadn't been added back to XI.h and didn't know where else to look.

That means the fix did not make it into xserver 1.3.0.0, which is what I was building against.  Is there any sense in adding a patch to 1.3 (release a 1.3.1?), or should we just ignore the problem, especially since xserver 1.4 is nearly ready?
Comment 21 Alan Coopersmith 2007-08-31 13:50:53 UTC
After talking to daniels on IRC I pushed fixes to acecad, vmmouse, and void
based on the code he put in xf86-input-mouse to make them build without the
old motion_history stuff.     That seems to leave citron as the only driver
I can't build the current git tree of against xserver-1.4-branch - it fails with:

xf86-input-citron:
  "citron.c", line 2023: undefined symbol: xDeviceTSCalibrationCtl

Line 2023 is:
        xDeviceTSCalibrationCtl *c = (xDeviceTSCalibrationCtl *) control;
Comment 22 Daniel Stone 2007-08-31 18:02:06 UTC
that should be replaced by AbsCalibCtl, IIRC.
Comment 23 Eric Anholt 2007-09-04 17:16:46 UTC
Just one driver left isn't enough to block release.  Clearing status.
Comment 24 Alan Coopersmith 2007-09-07 10:17:55 UTC
Fix to citron pushed to git master too now.   Closing as fixed.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.