diff --git a/00-evdev.conf b/00-evdev.conf deleted file mode 100644 index 877aa4a..0000000 --- a/00-evdev.conf +++ /dev/null @@ -1,39 +0,0 @@ -# Catchall classes for input devices -# We don't simply match on any device since that also adds accelerometers -# and other devices that we don't really want to use. The list below -# matches everything but joysticks. - -Section "InputClass" - Identifier "evdev pointer catchall" - MatchIsPointer "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev keyboard catchall" - MatchIsKeyboard "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchpad catchall" - MatchIsTouchpad "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev tablet catchall" - MatchIsTablet "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchscreen catchall" - MatchIsTouchscreen "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 45631db..335e71a 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -19,7 +19,7 @@ Summary: X.Org X11 X server Name: xorg-x11-server Version: 1.8.0 -Release: 1%{?gitdate:.%{gitdate}}%{dist} +Release: 6%{?gitdate:.%{gitdate}}%{dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -35,7 +35,7 @@ Source2: commitid Source0: http://www.x.org/pub/individual/xserver/%{pkgname}-%{version}.tar.bz2 Source1: gitignore %endif -Source3: 00-evdev.conf + Source4: 10-quirks.conf Source10: xserver.pamd @@ -86,7 +86,9 @@ Patch6052: xserver-1.8-udev-warning.patch # fallback to vesa when module is missing seems broken Patch6053: xserver-1.8-disable-vboxvideo.patch -Patch6054: xserver-1.8-no-hardcoded-etc.patch +Patch6055: xserver-1.7.6-export-dix-functions.patch +Patch6056: xserver-1.7.6-export-more-dix-functions.patch +Patch6057: xserver-1.8.0-xorg.conf.d-changes.patch %define moduledir %{_libdir}/xorg/modules %define drimoduledir %{_libdir}/dri @@ -368,9 +370,12 @@ install -m 0444 hw/xfree86/common/{vesa,extra}modes $RPM_BUILD_ROOT%{_datadir}/x mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d install -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/xserver -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/xorg.conf.d -install -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/xorg.conf.d -install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/xorg.conf.d +mkdir -p $RPM_BUILD_ROOT%{_datadir}/X11/xorg.conf.d +install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/X11/xorg.conf.d + +# make sure the (empty) /etc/X11/xorg.conf.d is there, system-setup-keyboard +# relies on it more or less. +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/X11/xorg.conf.d %endif @@ -400,8 +405,6 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete rm -f $RPM_BUILD_ROOT%{_bindir}/pcitweak rm -f $RPM_BUILD_ROOT%{_mandir}/man1/pcitweak.1* find $RPM_BUILD_ROOT -type f -name '*.la' | xargs rm -f -- || : - # we install our own - rm -f $RPM_BUILD_ROOT%{_sysconfdir}/X11/xorg.conf.d/10-evdev.conf %if !%{with_hw_servers} rm -f $RPM_BUILD_ROOT%{_libdir}/pkgconfig/xorg-server.pc rm -f $RPM_BUILD_ROOT%{_datadir}/aclocal/xorg-server.m4 @@ -467,9 +470,10 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man4/fbdevhw.4* %{_mandir}/man4/exa.4* %{_mandir}/man5/xorg.conf.5* -%dir %{_sysconfdir}/xorg.conf.d -%{_sysconfdir}/xorg.conf.d/00-evdev.conf -%{_sysconfdir}/xorg.conf.d/10-quirks.conf +%dir %{_sysconfdir}/X11/xorg.conf.d +%dir %{_datadir}/X11/xorg.conf.d +%{_datadir}/X11/xorg.conf.d/10-evdev.conf +%{_datadir}/X11/xorg.conf.d/10-quirks.conf %endif @@ -526,6 +530,28 @@ rm -rf $RPM_BUILD_ROOT %{xserver_source_dir} %changelog +* Thu Apr 15 2010 Peter Hutterer 1.8.0-6 +- xserver-1.8.0-xorg.conf.d-changes.patch: push in the upcoming 1.8.1 + xorg.conf.d changes. The X server uses /etc/X11/xorg.conf now for custom + config and /usr/share/X11/xorg.conf.d for system-provided config. +- xserver-1.8-no-hardcoded-etc.patch: drop, obsolete. +- 00-evdev.conf: drop, use the upstream one. + +* Thu Apr 15 2010 Peter Hutterer 1.8.0-5 +- xserver-1.4.99-pic-libxf86config.patch: update, only merge CFLAGS for + libxf86config.a, not AM_CFLAGS. Makes patch mangling for the next set of + patches easier. + +* Wed Apr 14 2010 Adam Tkac 1.8.0-4 +- xserver-1.7.6-export-more-dix-functions.patch: export XkbCopyDeviceKeymap + function, needed by VNC + +* Mon Apr 12 2010 Peter Hutterer 1.8.0-3 +- xserver-1.7.6-export-dix-functions: export some functions in use by VNC. + +* Mon Apr 12 2010 Peter Hutterer 1.8.0-2 +- Add Xen virtual pointer quirk to 10-quirks.conf (#523914) + * Tue Apr 06 2010 Peter Hutterer 1.8.0-1 - xserver 1.8.0 - Drop merged patches. diff --git a/xserver-1.4.99-pic-libxf86config.patch b/xserver-1.4.99-pic-libxf86config.patch index 48d2e22..747a104 100644 --- a/xserver-1.4.99-pic-libxf86config.patch +++ b/xserver-1.4.99-pic-libxf86config.patch @@ -1,18 +1,22 @@ -From 4306b434038de7e2b17d3c4a6cfd87db469d3bda Mon Sep 17 00:00:00 2001 +From dc9f6e5021699fef97318ebc43f0e6c58a12d696 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 10 Dec 2007 11:26:57 -0500 Subject: [PATCH] Build libxf86config with -fPIC. + diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am -index b8fab28..ed831c9 100644 +index 49c191f..fea3b24 100644 --- a/hw/xfree86/parser/Makefile.am +++ b/hw/xfree86/parser/Makefile.am -@@ -33,7 +33,7 @@ libxf86config_a_SOURCES = \ +@@ -32,7 +32,7 @@ libxf86config_internal_la_SOURCES = \ + + libxf86config_a_SOURCES = \ $(INTERNAL_SOURCES) - libxf86config_a_CFLAGS = $(AM_CFLAGS) +-libxf86config_a_CFLAGS = $(AM_CFLAGS) ++libxf86config_a_CFLAGS = $(AM_CFLAGS) -fPIC -fvisibility=hidden --AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) -+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) -fPIC -fvisibility=hidden + AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) - EXTRA_DIST = \ - Configint.h \ +-- +1.6.6.1 + diff --git a/xserver-1.7.6-export-dix-functions.patch b/xserver-1.7.6-export-dix-functions.patch new file mode 100644 index 0000000..4bfedfd --- /dev/null +++ b/xserver-1.7.6-export-dix-functions.patch @@ -0,0 +1,58 @@ +From 7bdea0bb8f38dba2d214482301de981c3260450d Mon Sep 17 00:00:00 2001 +From: Adam Tkac +Date: Mon, 22 Mar 2010 14:52:29 +0100 +Subject: [PATCH] dix: Export AllocDevicePair GetPointerEvents, GetKeyboardEvents and generate_modkeymap functions from Xorg. + +Those functions are used by TigerVNC libvnc.so module which doesn't +use standard XInput infrastructure but uses same functions like, +for example, XTest devices. + +Signed-off-by: Adam Tkac +Signed-off-by: Peter Hutterer +--- + include/input.h | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/include/input.h b/include/input.h +index 8561308..63f981e 100644 +--- a/include/input.h ++++ b/include/input.h +@@ -432,7 +432,7 @@ extern void CreateClassesChangedEvent(EventListPtr event, + DeviceIntPtr master, + DeviceIntPtr slave, + int type); +-extern int GetPointerEvents( ++extern _X_EXPORT int GetPointerEvents( + EventListPtr events, + DeviceIntPtr pDev, + int type, +@@ -442,7 +442,7 @@ extern int GetPointerEvents( + int num_valuators, + int *valuators); + +-extern int GetKeyboardEvents( ++extern _X_EXPORT int GetKeyboardEvents( + EventListPtr events, + DeviceIntPtr pDev, + int type, +@@ -493,7 +493,7 @@ extern int AttachDevice(ClientPtr client, + extern _X_EXPORT DeviceIntPtr GetPairedDevice(DeviceIntPtr kbd); + extern DeviceIntPtr GetMaster(DeviceIntPtr dev, int type); + +-extern int AllocDevicePair(ClientPtr client, ++extern _X_EXPORT int AllocDevicePair(ClientPtr client, + char* name, + DeviceIntPtr* ptr, + DeviceIntPtr* keybd, +@@ -505,7 +505,7 @@ extern void DeepCopyDeviceClasses(DeviceIntPtr from, + DeviceChangedEvent *dce); + + /* Helper functions. */ +-extern int generate_modkeymap(ClientPtr client, DeviceIntPtr dev, ++extern _X_EXPORT int generate_modkeymap(ClientPtr client, DeviceIntPtr dev, + KeyCode **modkeymap, int *max_keys_per_mod); + extern int change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *map, + int max_keys_per_mod); +-- +1.6.6.1 + diff --git a/xserver-1.7.6-export-more-dix-functions.patch b/xserver-1.7.6-export-more-dix-functions.patch new file mode 100644 index 0000000..9592a95 --- /dev/null +++ b/xserver-1.7.6-export-more-dix-functions.patch @@ -0,0 +1,26 @@ +From 6db7cc3d3f750bbb1c170f8fe538e9fb75bc5b34 Mon Sep 17 00:00:00 2001 +From: Adam Tkac +Date: Wed, 14 Apr 2010 12:16:26 +0200 +Subject: [PATCH] Export XkbCopyDeviceKeymap from Xorg, it is needed by VNC. + +Signed-off-by: Adam Tkac +--- + include/xkbsrv.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/include/xkbsrv.h b/include/xkbsrv.h +index ebc7cdb..dc3142a 100644 +--- a/include/xkbsrv.h ++++ b/include/xkbsrv.h +@@ -936,7 +936,7 @@ extern Bool XkbCopyKeymap( + XkbDescPtr /* dst */, + XkbDescPtr /* src */); + +-extern Bool XkbCopyDeviceKeymap( ++extern _X_EXPORT Bool XkbCopyDeviceKeymap( + DeviceIntPtr /* dst */, + DeviceIntPtr /* src */); + +-- +1.7.0.1 + diff --git a/xserver-1.8-no-hardcoded-etc.patch b/xserver-1.8-no-hardcoded-etc.patch deleted file mode 100644 index b9266bb..0000000 --- a/xserver-1.8-no-hardcoded-etc.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 7fc78783018cf2ce27f8e6829f9eff1d9032541c Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Wed, 7 Apr 2010 09:27:59 +1000 -Subject: [PATCH] config: don't hardcode /etc for 10-evdev.conf - -Use sysconfdir instead to avoid amusements like /usr/etc/ and the like. - -Signed-off-by: Peter Hutterer ---- - config/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/config/Makefile.am b/config/Makefile.am -index eed7454..2e468cf 100644 ---- a/config/Makefile.am -+++ b/config/Makefile.am -@@ -9,7 +9,7 @@ AM_CFLAGS += $(UDEV_CFLAGS) - libconfig_la_SOURCES += udev.c - libconfig_la_LIBADD = $(UDEV_LIBS) - --xorgconfddir = $(prefix)/etc/X11/$(XF86CONFIGDIR) -+xorgconfddir = $(sysconfdir)/X11/$(XF86CONFIGDIR) - xorgconfd_DATA = 10-evdev.conf - - else --- -1.6.6.1 - diff --git a/xserver-1.8.0-xorg.conf.d-changes.patch b/xserver-1.8.0-xorg.conf.d-changes.patch new file mode 100644 index 0000000..836a4b0 --- /dev/null +++ b/xserver-1.8.0-xorg.conf.d-changes.patch @@ -0,0 +1,496 @@ +From ad6c5e450cacee3777e7c541d4841ee580339a5d Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Wed, 7 Apr 2010 10:04:38 +1000 +Subject: [PATCH 1/6] config: only match sane devices in 10-evdev.conf + +Having a generic catchall also adds devices like accelerometers. These +devices make X unusable, hence restrict matching to "known sane" devices +like pointers, touchpads, keyboards, tablets and touchscreens. + +Signed-off-by: Peter Hutterer +Acked-by: Julien Cristau +Acked-by: Dan Nicholson +Acked-by: James Cloos +(cherry picked from commit c8a608cb6ce8f9c86258c1ab49084f691fa9cc51) + +Signed-off-by: Peter Hutterer +--- + config/10-evdev.conf | 36 ++++++++++++++++++++++++++++++++++-- + 1 files changed, 34 insertions(+), 2 deletions(-) + +diff --git a/config/10-evdev.conf b/config/10-evdev.conf +index 7406f4e..cc83ab2 100644 +--- a/config/10-evdev.conf ++++ b/config/10-evdev.conf +@@ -1,8 +1,40 @@ + # + # Catch-all evdev loader for udev-based systems +-# ++# We don't simply match on any device since that also adds accelerometers ++# and other devices that we don't really want to use. The list below ++# matches everything but joysticks. ++ + Section "InputClass" +- Identifier "evdev-catchall" ++ Identifier "evdev pointer catchall" ++ MatchIsPointer "on" ++ MatchDevicePath "/dev/input/event*" + Driver "evdev" ++EndSection ++ ++Section "InputClass" ++ Identifier "evdev keyboard catchall" ++ MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" ++ Driver "evdev" ++EndSection ++ ++Section "InputClass" ++ Identifier "evdev touchpad catchall" ++ MatchIsTouchpad "on" ++ MatchDevicePath "/dev/input/event*" ++ Driver "evdev" ++EndSection ++ ++Section "InputClass" ++ Identifier "evdev tablet catchall" ++ MatchIsTablet "on" ++ MatchDevicePath "/dev/input/event*" ++ Driver "evdev" ++EndSection ++ ++Section "InputClass" ++ Identifier "evdev touchscreen catchall" ++ MatchIsTouchscreen "on" ++ MatchDevicePath "/dev/input/event*" ++ Driver "evdev" + EndSection +-- +1.6.6.1 + +From eb07b8606f9a1349baf8114bb36dc2712e5d3419 Mon Sep 17 00:00:00 2001 +From: Dan Nicholson +Date: Sat, 3 Apr 2010 09:33:47 -0700 +Subject: [PATCH 2/6] xfree86: Allow adding sysconfdir and datadir to config search paths + +We could just use $projectroot/etc and $projectroot/share, but the user +might have other plans for them. + +Signed-off-by: Dan Nicholson +Signed-off-by: Peter Hutterer +(cherry picked from commit 2460e921d18fd264e6f6374be0908f4100442650) + +Signed-off-by: Peter Hutterer +--- + hw/xfree86/parser/Makefile.am | 4 +++- + hw/xfree86/parser/scan.c | 14 ++++++++++++++ + 2 files changed, 17 insertions(+), 1 deletions(-) + +diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am +index 49c191f..caf7079 100644 +--- a/hw/xfree86/parser/Makefile.am ++++ b/hw/xfree86/parser/Makefile.am +@@ -34,7 +34,9 @@ libxf86config_a_SOURCES = \ + $(INTERNAL_SOURCES) + libxf86config_a_CFLAGS = $(AM_CFLAGS) -fPIC -fvisibility=hidden + +-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) ++AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \ ++ -DSYSCONFDIR=\"$(sysconfdir)\" \ ++ -DDATADIR=\"$(datadir)\" + + EXTRA_DIST = \ + Configint.h \ +diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c +index cdca9ca..8aab0cf 100644 +--- a/hw/xfree86/parser/scan.c ++++ b/hw/xfree86/parser/scan.c +@@ -599,6 +599,8 @@ xf86pathIsSafe(const char *path) + * %F config file environment ($XORGCONFIG) as a relative path + * %G config file environment ($XORGCONFIG) as a safe path + * %P projroot ++ * %C sysconfdir ++ * %D datadir + * %M major version number + * %% % + */ +@@ -615,6 +617,12 @@ xf86pathIsSafe(const char *path) + #ifndef PROJECTROOT + #define PROJECTROOT "/usr/X11R6" + #endif ++#ifndef SYSCONFDIR ++#define SYSCONFDIR PROJECTROOT "/etc" ++#endif ++#ifndef DATADIR ++#define DATADIR PROJECTROOT "/share" ++#endif + #ifndef XCONFENV + #define XCONFENV "XORGCONFIG" + #endif +@@ -755,6 +763,12 @@ DoSubstitution(const char *template, const char *cmdline, const char *projroot, + else + BAIL_OUT; + break; ++ case 'C': ++ APPEND_STR(SYSCONFDIR); ++ break; ++ case 'D': ++ APPEND_STR(DATADIR); ++ break; + case 'M': + if (!majorvers[0]) { + if (XF86_VERSION_MAJOR < 0 || XF86_VERSION_MAJOR > 99) { +-- +1.6.6.1 + +From a4516965de447332794ee0afb9503c351fff6fe8 Mon Sep 17 00:00:00 2001 +From: Dan Nicholson +Date: Sat, 3 Apr 2010 09:33:48 -0700 +Subject: [PATCH 3/6] xfree86: Document how -configdir affects the xorg.conf.d search path + +Explain the "safe" path dance for -configdir, too. + +Signed-off-by: Dan Nicholson +Signed-off-by: Peter Hutterer +(cherry picked from commit 2ac33888a9a5766aaf88bc92a8bd1d489873524c) + +Signed-off-by: Peter Hutterer +--- + hw/xfree86/doc/man/xorg.conf.man.pre | 36 +++++++++++++++++++++++++++++++++- + 1 files changed, 35 insertions(+), 1 deletions(-) + +diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre +index 93c8ac4..9a40ce3 100644 +--- a/hw/xfree86/doc/man/xorg.conf.man.pre ++++ b/hw/xfree86/doc/man/xorg.conf.man.pre +@@ -102,10 +102,12 @@ is the machine's hostname as reported by + .BR gethostname (__libmansuffix__). + .PP + Additional configuration files are searched for in the following +-directories: ++directories when the server is started as a normal user: + .PP + .RS 4 + .nf ++.IR /etc/X11/ ++.IR __projectroot__/etc/X11/ + .I /etc/X11/__xconfigdir__\-4 + .I /etc/X11/__xconfigdir__ + .I /etc/__xconfigdir__ +@@ -118,6 +120,38 @@ directories: + .fi + .RE + .PP ++where ++.I ++is a relative path (with no \(lq..\(rq components) specified with the ++.B \-configdir ++command line option. ++.PP ++When the __xservername__ server is started by the \(lqroot\(rq user, the ++config directory search locations are as follows: ++.PP ++.RS 4 ++.nf ++ ++.IR /etc/X11/ ++.IR __projectroot__/etc/X11/ ++.I /etc/X11/__xconfigdir__\-4 ++.I /etc/X11/__xconfigdir__ ++.I /etc/__xconfigdir__ ++.IR __projectroot__/etc/X11/__xconfigdir__. ++.I __projectroot__/etc/X11/__xconfigdir__\-4 ++.I __projectroot__/etc/X11/__xconfigdir__ ++.IR __projectroot__/lib/X11/__xconfigdir__. ++.I __projectroot__/lib/X11/__xconfigdir__\-4 ++.I __projectroot__/lib/X11/__xconfigdir__ ++.fi ++.RE ++.PP ++where ++.I ++is the path specified with the ++.B \-configdir ++command line option (which may be absolute or relative). ++.PP + The + .I __xconfigfile__ + and +-- +1.6.6.1 + +From 0c4a358eae0e77f389380bbbf39d4419f2dd6dcd Mon Sep 17 00:00:00 2001 +From: Dan Nicholson +Date: Sat, 3 Apr 2010 09:33:49 -0700 +Subject: [PATCH 4/6] xfree86: Set a saner search path for xorg.conf.d + +There's no reason to carry all the oddities from xorg.conf like appended +hostname to the search path for xorg.conf.d. This changes it to something +very simple: + + /etc/X11/ + $sysconfdir/X11/ + /etc/X11/xorg.conf.d + $sysconfdir/X11/xorg.conf.d + +Signed-off-by: Dan Nicholson +Signed-off-by: Peter Hutterer +(cherry picked from commit a1bae63dc634a5a79861eab128c63506081f7ed9) + +Signed-off-by: Peter Hutterer +--- + cpprules.in | 1 + + hw/xfree86/common/xf86Config.c | 16 ++++------------ + hw/xfree86/doc/man/xorg.conf.man.pre | 22 ++++------------------ + 3 files changed, 9 insertions(+), 30 deletions(-) + +diff --git a/cpprules.in b/cpprules.in +index 301305e..6e43578 100644 +--- a/cpprules.in ++++ b/cpprules.in +@@ -34,6 +34,7 @@ MANDEFS = \ + -D__adminmansuffix__=$(ADMIN_MAN_SUFFIX) \ + -D__mandir__=$(mandir) \ + -D__projectroot__=$(prefix) \ ++ -D__sysconfdir__=$(sysconfdir) \ + -D__datadir__=$(datadir) \ + -D__xconfigfile__=$(__XCONFIGFILE__) \ + -D__xconfigdir__=$(__XCONFIGDIR__) \ +diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c +index 718a078..d02c22a 100644 +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -97,20 +97,12 @@ extern DeviceAssocRec mouse_assoc; + #endif + #ifndef ROOT_CONFIGDIRPATH + #define ROOT_CONFIGDIRPATH "%A," "%R," \ +- "/etc/X11/%R," "%P/etc/X11/%R," \ +- "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ +- "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ +- "%P/etc/X11/%X," \ +- "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ +- "%P/lib/X11/%X" ++ "/etc/X11/%R," "%C/X11/%R," \ ++ "/etc/X11/%X," "%C/X11/%X" + #endif + #ifndef USER_CONFIGDIRPATH +-#define USER_CONFIGDIRPATH "/etc/X11/%S," "%P/etc/X11/%S," \ +- "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ +- "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ +- "%P/etc/X11/%X," \ +- "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ +- "%P/lib/X11/%X" ++#define USER_CONFIGDIRPATH "/etc/X11/%R," "%C/X11/%R," \ ++ "/etc/X11/%X," "%C/X11/%X" + #endif + #ifndef PROJECTROOT + #define PROJECTROOT "/usr/X11R6" +diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre +index 9a40ce3..acfa1ca 100644 +--- a/hw/xfree86/doc/man/xorg.conf.man.pre ++++ b/hw/xfree86/doc/man/xorg.conf.man.pre +@@ -107,16 +107,9 @@ directories when the server is started as a normal user: + .RS 4 + .nf + .IR /etc/X11/ +-.IR __projectroot__/etc/X11/ +-.I /etc/X11/__xconfigdir__\-4 ++.IR __sysconfdir__/X11/ + .I /etc/X11/__xconfigdir__ +-.I /etc/__xconfigdir__ +-.IR __projectroot__/etc/X11/__xconfigdir__. +-.I __projectroot__/etc/X11/__xconfigdir__\-4 +-.I __projectroot__/etc/X11/__xconfigdir__ +-.IR __projectroot__/lib/X11/__xconfigdir__. +-.I __projectroot__/lib/X11/__xconfigdir__\-4 +-.I __projectroot__/lib/X11/__xconfigdir__ ++.I __sysconfdir__/X11/__xconfigdir__ + .fi + .RE + .PP +@@ -133,16 +126,9 @@ config directory search locations are as follows: + .nf + + .IR /etc/X11/ +-.IR __projectroot__/etc/X11/ +-.I /etc/X11/__xconfigdir__\-4 ++.IR __sysconfdir__/X11/ + .I /etc/X11/__xconfigdir__ +-.I /etc/__xconfigdir__ +-.IR __projectroot__/etc/X11/__xconfigdir__. +-.I __projectroot__/etc/X11/__xconfigdir__\-4 +-.I __projectroot__/etc/X11/__xconfigdir__ +-.IR __projectroot__/lib/X11/__xconfigdir__. +-.I __projectroot__/lib/X11/__xconfigdir__\-4 +-.I __projectroot__/lib/X11/__xconfigdir__ ++.I __sysconfdir__/X11/__xconfigdir__ + .fi + .RE + .PP +-- +1.6.6.1 + +From 59f96734633fce3c2bee62bce860aed33033ce3e Mon Sep 17 00:00:00 2001 +From: Dan Nicholson +Date: Sat, 3 Apr 2010 10:08:25 -0700 +Subject: [PATCH 5/6] xfree86: Search for a system xorg.conf.d + +In addition to the conf files found in /etc/X11 or $sysconfdir/X11 used +for local administration, we also reserve a system directory for vendor +and package usage. The simple search path is: + + /usr/share/X11/xorg.conf.d + $datadir/X11/xorg.conf.d + +Files from these directories will have the lowest config priority. The +directory $datadir/X11/xorg.conf.d is exported from xorg-server.pc in +the variable "sysconfigdir". Packages should install their .conf files +to the directory specified by: + + `pkg-config --variable=sysconfigdir xorg-server` + +Signed-off-by: Dan Nicholson +Signed-off-by: Peter Hutterer +(cherry picked from commit 95f01bdfee8241371675f0089170fa6b2908d815) + +Signed-off-by: Peter Hutterer +--- + configure.ac | 2 ++ + hw/xfree86/common/xf86Config.c | 12 ++++++++++-- + hw/xfree86/doc/man/xorg.conf.man.pre | 12 ++++++++++++ + xorg-server.pc.in | 2 ++ + 4 files changed, 26 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index a76eda3..48cb724 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1792,8 +1792,10 @@ if test "x$XORG" = xyes; then + AC_SUBST([driverdir]) + sdkdir="$includedir/xorg" + extdir="$includedir/X11/extensions" ++ sysconfigdir="$datadir/X11/$XF86CONFIGDIR" + AC_SUBST([sdkdir]) + AC_SUBST([extdir]) ++ AC_SUBST([sysconfigdir]) + AC_SUBST([logdir]) + + # stuff the ABI versions into the pc file too +diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c +index d02c22a..1e9543f 100644 +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -104,6 +104,9 @@ extern DeviceAssocRec mouse_assoc; + #define USER_CONFIGDIRPATH "/etc/X11/%R," "%C/X11/%R," \ + "/etc/X11/%X," "%C/X11/%X" + #endif ++#ifndef SYS_CONFIGDIRPATH ++#define SYS_CONFIGDIRPATH "/usr/share/X11/%X," "%D/X11/%X" ++#endif + #ifndef PROJECTROOT + #define PROJECTROOT "/usr/X11R6" + #endif +@@ -2421,7 +2424,7 @@ checkInput(serverLayoutPtr layout, Bool implicit_layout) { + ConfigStatus + xf86HandleConfigFile(Bool autoconfig) + { +- const char *filename, *dirname; ++ const char *filename, *dirname, *sysdirname; + char *filesearch, *dirsearch; + MessageType filefrom = X_DEFAULT; + MessageType dirfrom = X_DEFAULT; +@@ -2444,6 +2447,8 @@ xf86HandleConfigFile(Bool autoconfig) + dirfrom = X_CMDLINE; + + xf86initConfigFiles(); ++ sysdirname = xf86openConfigDirFiles(SYS_CONFIGDIRPATH, NULL, ++ PROJECTROOT); + dirname = xf86openConfigDirFiles(dirsearch, xf86ConfigDir, PROJECTROOT); + filename = xf86openConfigFile(filesearch, xf86ConfigFile, PROJECTROOT); + if (filename) { +@@ -2464,7 +2469,10 @@ xf86HandleConfigFile(Bool autoconfig) + "Unable to locate/open config directory: \"%s\"\n", + xf86ConfigDir); + } +- if (!filename && !dirname) ++ if (sysdirname) ++ xf86MsgVerb(X_DEFAULT, 0, "Using system config directory \"%s\"\n", ++ sysdirname); ++ if (!filename && !dirname && !sysdirname) + return CONFIG_NOFILE; + } + +diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre +index acfa1ca..4782d61 100644 +--- a/hw/xfree86/doc/man/xorg.conf.man.pre ++++ b/hw/xfree86/doc/man/xorg.conf.man.pre +@@ -138,6 +138,18 @@ is the path specified with the + .B \-configdir + command line option (which may be absolute or relative). + .PP ++Finally, configuration files will also be searched for in directories ++reserved for system use. These are to separate configuration files from ++the vendor or 3rd party packages from those of local administration. ++These files are found in the following directories: ++.PP ++.RS 4 ++.nf ++.I /usr/share/X11/__xconfigdir__ ++.I __datadir__/X11/__xconfigdir__ ++.fi ++.RE ++.PP + The + .I __xconfigfile__ + and +diff --git a/xorg-server.pc.in b/xorg-server.pc.in +index 3d58dab..376cb93 100644 +--- a/xorg-server.pc.in ++++ b/xorg-server.pc.in +@@ -2,8 +2,10 @@ prefix=@prefix@ + exec_prefix=@exec_prefix@ + libdir=@libdir@ + includedir=@includedir@ ++datarootdir=@datarootdir@ + moduledir=@moduledir@ + sdkdir=@sdkdir@ ++sysconfigdir=@sysconfigdir@ + + abi_ansic=@abi_ansic@ + abi_videodrv=@abi_videodrv@ +-- +1.6.6.1 + +From 3e2ab9139b12b1239eebcbb6c6a23e7284dd7b44 Mon Sep 17 00:00:00 2001 +From: Dan Nicholson +Date: Sat, 3 Apr 2010 09:33:51 -0700 +Subject: [PATCH 6/6] Move 10-evdev.conf to system config dir $datadir/X11/xorg.conf.d + +Since the server searches in a vendor specific path now, we can install +the evdev catchall there without disturbing local administration files. + +Signed-off-by: Dan Nicholson +Signed-off-by: Peter Hutterer +(cherry picked from commit d4dd3d0085f8eaca8c989aaeace1a1a24c5ebf49) + +Signed-off-by: Peter Hutterer +--- + config/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/config/Makefile.am b/config/Makefile.am +index eed7454..675a3b2 100644 +--- a/config/Makefile.am ++++ b/config/Makefile.am +@@ -9,7 +9,7 @@ AM_CFLAGS += $(UDEV_CFLAGS) + libconfig_la_SOURCES += udev.c + libconfig_la_LIBADD = $(UDEV_LIBS) + +-xorgconfddir = $(prefix)/etc/X11/$(XF86CONFIGDIR) ++xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR) + xorgconfd_DATA = 10-evdev.conf + + else +-- +1.6.6.1 +