[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Backported features from xserver 1.8




Ok, since this made the headlines on Phoronix I should probably correct some misconceptions and explain a bit more to the greater public.

First of all, backporting xorg.conf.d/inputclass was discussed already in December when the support was merged upstream. I backported these then and tried them out, and it worked fine. I think the only blocker, as Debian is concerned, was that the video driver autoconfig fallbacks had never worked when there was an xorg.conf present, and with xorg.conf.d config snippets, that condition would've always been true. The new patch from SUSE seems to fix that, so the blocker is gone (and release blockers remain ;).

Debian & Ubuntu have shipped an older version of the udev support patch-set by Julien Cristau for months now. The main diff versus the upstream version is that the vendor/driver matching is done by udev rules and not by xorg.conf.d config snippets as in 1.8 (where udev config is ignored). So the way how the input drivers are loaded has not been changed here, only the mechanism of telling the xserver about the drivers (and which is already used by Fedora 13 and openSUSE, possibly others).

There's more to 1.8 than just these features. Here's the diffstat of only these patches applied on top of 1.7.6:

 Xi/stubs.c                           |    3
 config/Makefile.am                   |   20 +
 config/config-backends.h             |   21 +
 config/config.c                      |   77 +++++++
 config/dbus.c                        |    2
 config/hal.c                         |   97 +++------
 configure.ac                         |   27 ++
 cpprules.in                          |    3
 hw/dmx/dmxinput.c                    |    3
 hw/kdrive/src/kinput.c               |   11 -
 hw/xfree86/common/xf86AutoConfig.c   |   79 ++++---
 hw/xfree86/common/xf86Config.c       |  172 +++++++++++-----
 hw/xfree86/common/xf86Globals.c      |    3
 hw/xfree86/common/xf86Init.c         |   15 +
 hw/xfree86/common/xf86Option.c       |   25 --
 hw/xfree86/common/xf86Priv.h         |    1
 hw/xfree86/common/xf86Xinput.c       |  223 +++++++++++++++++++--
 hw/xfree86/doc/man/Xorg.man.pre      |   34 ++-
 hw/xfree86/doc/man/xorg.conf.man.pre |  196 +++++++++++++++++-
 hw/xfree86/parser/Configint.h        |    2
 hw/xfree86/parser/Layout.c           |   79 +++++--
 hw/xfree86/parser/Makefile.am        |    1
 hw/xfree86/parser/configProcs.h      |    4
 hw/xfree86/parser/read.c             |    8
 hw/xfree86/parser/scan.c             |  370 ++++++++++++++++++++++++++---------
 hw/xfree86/parser/write.c            |    2
 hw/xfree86/parser/xf86Parser.h       |   48 +++-
 hw/xfree86/parser/xf86tokens.h       |   14 +
 hw/xquartz/darwinXinput.c            |    3
 hw/xwin/InitOutput.c                 |    3
 hw/xwin/winconfig.c                  |   40 +++
 hw/xwin/winconfig.h                  |    1
 hw/xwin/winprocarg.c                 |   18 +
 include/dix-config.h.in              |    6
 include/input.h                      |   17 +
 include/misc.h                       |    3
 include/xorg-config.h.in             |    3
 os/utils.c                           |   40 +++
 39 files changed, 1348 insertions(+), 344 deletions(-)

the libudev change alone is 415 insertions, 81 deletions - roughly a third of the total, and something we already had. Compare that to the diff between 1.7.6 and 1.7.99.902 (diff'ing the git tags):

 608 files changed, 12060 insertions(+), 56398 deletions(-)

So it's not like there's nothing else in 1.8 ;)

The backport was not hard to create, it's just a bunch of commits on top of each other. The tagging support needed one cleanup commit, so it's included to minimize the diff and effort. The only real change was to not bump the input ABI in the inputclass diff just because of the wacom driver - the driver only needs to drop the check for the new ABI (and build-depend on the new headers). TTBOMK, there are no other input drivers needing the same.

Here's the full list of the backported patches with a short description of what it does:

config-xorg-conf-d.diff			"Merge dbn/xorg.conf.d"
inputclass-sans-abi9.diff		"Merge dbn/inputclass"
config-libudev-backend.diff 		"config: add libudev config backend"
config-dont-filter-input-subsys.diff	udeb backend fix (already in D/U)
xfree86-move-sanitycheck.diff		inputclass fix
xfree86-init-pointer-feedback.diff	more pointer accel defaults
xfree86-replace-true-false.diff		xkb cleanup for the tagging support
xfree86-make-docs-match-reality.diff	Ignore and tagging support 1/7
xfree86-handle-files-without-newline.diff	2/7
xfree86-add-ignore-option.diff			3/7
xfree86-allow-multiple-args.diff		4/7
xfree86-set-fnmatch-pathname-flag.diff		5/7
add-xstrtokenize-to-the-dix.diff		6/7
add-tag-matching-to-attrs.diff			7/7
xfree86-reorder-option-priorities.diff	fixes config priority order
xfree86-fix-video-fallback.diff		fix for the video fallbacks
xfree86-dont-complain-about-missing-coredevices.diff	silence the useless error

I/T patches could've been lumped together, but didn't bother.

And let's not forget that this is just a proposal that needs to pass _both_ Debian and Ubuntu devs. And while people are rightfully concerned about stability (shouldn't be a problem here as pointed out above), I'm concerned about the stability of the interfaces the users/admins need to configure their systems. We've come a full circle from xorg.conf via hal fdi-files to udev rules, and now back to xorg.conf{,.d}. It's mostly a matter of deciding should we stick to the udev rules for squeeze & lucid or not..

I've pushed the xserver and evdev/wacom/synaptics drivers to a PPA, but the build queue is quite long. Local builds are working for me though..


--
Timo Aaltonen
Systems Specialist
IT Services, Aalto University School of Science and Technology


Reply to: