This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 3.x development tree".
The branch, master has been updated via b91f052330367cef3ad8260735ffa45e1179b46c (commit) via c8152d106188d8fac05370a7704c4003e4722841 (commit) via 13e5c9f494c04cbb6742f49deb4c967bc2d57f46 (commit) via 5c472486ef63fbe1ebe10351dfb6d541cc375b2b (commit) via aef6765d5fc5faa607bb9d5b47a16bc70d956856 (commit) via 7d6ed06d4544e0c391bfca65e002685f1ff0ebe3 (commit) via c8880961daf39257167a414463d430434ee19b1d (commit) via 6e11f54a81ece286fc670ad65e571fc22f06741c (commit) via 9784d37738049f6f528f8a622feedaa07ccf4404 (commit) via 39b450d4de8a902cc5c69825908c8da39b950164 (commit) via 32685f255ef31fe648852d2f550672a05315a225 (commit) via ac50f5020f833dfd4bcd27532a23994beea23822 (commit) via f48a2b07a26db73343eef352097d6d8ab0a15652 (commit) via 629b98633df10f07d289a9a7ca6301b9a2897d30 (commit) via 8d92364abf0d34f16faaa3b68531b05c2e713c5d (commit) from 9eec6c0b5945014b2eb047b255efa443c83ec4ac (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit b91f052330367cef3ad8260735ffa45e1179b46c Merge: c8152d1 13e5c9f Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Aug 27 17:23:44 2010 +0200
Merge commit 'stevee/updates' into next
commit c8152d106188d8fac05370a7704c4003e4722841 Merge: 9eec6c0 9784d37 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Aug 27 17:23:24 2010 +0200
Merge commit 'stevee/x-fixes' into next
commit 13e5c9f494c04cbb6742f49deb4c967bc2d57f46 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 17:15:43 2010 +0200
sudo: Add missing URL information.
commit 5c472486ef63fbe1ebe10351dfb6d541cc375b2b Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 17:14:55 2010 +0200
sudo: Update to 1.7.4p3.
Fixes #52.
commit aef6765d5fc5faa607bb9d5b47a16bc70d956856 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 17:06:36 2010 +0200
libssh2: Update to 1.2.7. Fixes #51.
commit 7d6ed06d4544e0c391bfca65e002685f1ff0ebe3 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 16:52:43 2010 +0200
make: Add Michael Tremer as maintainer.
commit c8880961daf39257167a414463d430434ee19b1d Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 16:51:32 2010 +0200
make: Update to 3.82.
commit 6e11f54a81ece286fc670ad65e571fc22f06741c Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 16:29:12 2010 +0200
vsftpd: Update to 2.3.2.
Fixes #48.
commit 9784d37738049f6f528f8a622feedaa07ccf4404 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 15:29:53 2010 +0200
Add myself as maintainer for x-server related packages.
commit 39b450d4de8a902cc5c69825908c8da39b950164 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 15:06:14 2010 +0200
xorg-x11-server: Some small cosmetic fixes and also create a development package.
commit 32685f255ef31fe648852d2f550672a05315a225 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 14:59:57 2010 +0200
xorg-x11-server: Fix Naoki-Makefile after rename of the package.
commit ac50f5020f833dfd4bcd27532a23994beea23822 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 14:56:52 2010 +0200
xorg-x11-server: Set myself as maintainer.
commit f48a2b07a26db73343eef352097d6d8ab0a15652 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 14:48:00 2010 +0200
xorg-server: Rename package to xorg-x11-server.
commit 629b98633df10f07d289a9a7ca6301b9a2897d30 Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 14:42:36 2010 +0200
xorg-server: Add default xorg.conf to load needed modules.
We are using a BIND_NOW feature from the GNU ld, so the xorg server can't load the modules automatically and we had to load them manually.
This fixes #49.
commit 8d92364abf0d34f16faaa3b68531b05c2e713c5d Merge: e86c7a1 aebdc8e Author: Schantl Stefan Stevee@ipfire.org Date: Fri Aug 27 14:32:59 2010 +0200
Merge branch 'x-server' of ssh://git.ipfire.org/pub/git/people/stevee/ipfire-3.x into x-fixes
-----------------------------------------------------------------------
Summary of changes: pkgs/core/libX11/libX11.nm | 2 +- pkgs/core/libXau/libXau.nm | 2 +- pkgs/core/libXext/libXext.nm | 2 +- pkgs/core/libXfont/libXfont.nm | 2 +- pkgs/core/libfontenc/libfontenc.nm | 3 +- pkgs/core/libssh2/libssh2.nm | 2 +- pkgs/core/libxcb/libxcb.nm | 2 +- pkgs/core/libxkbfile/libxkbfile.nm | 2 +- pkgs/core/libxslt/libxslt.nm | 2 +- pkgs/core/make/make.nm | 4 +- .../make/patches/make-3.79.1-noclock_gettime.patch | 13 - pkgs/core/make/patches/make-3.80-getcwd.patch | 15 -- pkgs/core/make/patches/make-3.81-fdleak.patch | 60 ----- pkgs/core/make/patches/make-3.81-jobserver.patch | 18 -- pkgs/core/make/patches/make-3.81-memory.patch | 261 -------------------- pkgs/core/make/patches/make-3.81-newlines.patch | 23 -- pkgs/core/make/patches/make-3.81-rlimit.patch | 111 --------- .../make/patches/make-3.81-strcpy-overlap.patch | 16 -- ...porting.patch => make-3.82-err-reporting.patch} | 93 ++++---- pkgs/core/make/patches/make-3.82-getcwd.patch | 14 + .../{make-3.80-j8k.patch => make-3.82-j8k.patch} | 13 +- pkgs/core/make/patches/make-3.82-jobserver.patch | 19 ++ pkgs/core/make/patches/make-3.82-newlines.patch | 30 +++ .../make/patches/make-3.82-noclock_gettime.patch | 14 + pkgs/core/make/patches/make-3.82-weird-shell.patch | 16 ++ pkgs/core/sudo/sudo.nm | 4 +- pkgs/core/vsftpd/vsftpd.nm | 2 +- pkgs/core/xcb-proto/xcb-proto.nm | 2 +- pkgs/core/xkeyboard-config/xkeyboard-config.nm | 2 +- pkgs/core/xorg-x11-drv-evdev/xorg-x11-drv-evdev.nm | 2 +- .../xorg-x11-drv-keyboard/xorg-x11-drv-keyboard.nm | 2 +- pkgs/core/xorg-x11-drv-mouse/xorg-x11-drv-mouse.nm | 2 +- pkgs/core/xorg-x11-drv-vesa/xorg-x11-drv-vesa.nm | 2 +- .../xorg-x11-font-utils/xorg-x11-font-utils.nm | 2 +- pkgs/core/xorg-x11-fonts/xorg-x11-fonts.nm | 2 +- .../xorg-x11-proto-devel/xorg-x11-proto-devel.nm | 2 +- .../10-quirks.conf | 0 .../patches/xserver-1.4.99-pic-libxf86config.patch | 0 .../patches/xserver-1.4.99-ssh-isnt-local.patch | 0 .../patches/xserver-1.5.0-bg-none-root.patch | 0 .../patches/xserver-1.5.0-projector-fb-size.patch | 0 .../patches/xserver-1.5.1-mode-debug.patch | 0 .../patches/xserver-1.6.0-displayfd.patch | 0 .../xserver-1.6.0-less-acpi-brokenness.patch | 0 .../patches/xserver-1.6.1-nouveau.patch | 0 .../patches/xserver-1.6.99-default-modes.patch | 0 .../xserver-1.6.99-randr-error-debugging.patch | 0 .../patches/xserver-1.6.99-right-of.patch | 0 .../xserver-1.7.0-randr-gamma-restore.patch | 0 .../patches/xserver-1.7.1-gamma-kdm-fix.patch | 0 .../patches/xserver-1.7.1-multilib.patch | 0 .../patches/xserver-1.8-disable-vboxvideo.patch | 0 .../patches/xserver-1.8-no-connected-outputs.patch | 0 .../patches/xserver-1.8-randr-initial.patch | 0 .../patches/xserver-1.8-udev-warning.patch | 0 .../xserver-1.8.2-XTEST-PointerKeys-fixes.patch | 0 .../xorg-x11-server.nm} | 20 +- .../xorg.conf} | 8 +- .../xorg-x11-util-macros/xorg-x11-util-macros.nm | 2 +- pkgs/core/xorg-x11-xkb-utils/xorg-x11-xkb-utils.nm | 2 +- .../xorg-x11-xtrans-devel/xorg-x11-xtrans-devel.nm | 2 +- 61 files changed, 196 insertions(+), 601 deletions(-) delete mode 100644 pkgs/core/make/patches/make-3.79.1-noclock_gettime.patch delete mode 100644 pkgs/core/make/patches/make-3.80-getcwd.patch delete mode 100644 pkgs/core/make/patches/make-3.81-fdleak.patch delete mode 100644 pkgs/core/make/patches/make-3.81-jobserver.patch delete mode 100644 pkgs/core/make/patches/make-3.81-memory.patch delete mode 100644 pkgs/core/make/patches/make-3.81-newlines.patch delete mode 100644 pkgs/core/make/patches/make-3.81-rlimit.patch delete mode 100644 pkgs/core/make/patches/make-3.81-strcpy-overlap.patch rename pkgs/core/make/patches/{make-3.81-err-reporting.patch => make-3.82-err-reporting.patch} (58%) create mode 100644 pkgs/core/make/patches/make-3.82-getcwd.patch rename pkgs/core/make/patches/{make-3.80-j8k.patch => make-3.82-j8k.patch} (63%) create mode 100644 pkgs/core/make/patches/make-3.82-jobserver.patch create mode 100644 pkgs/core/make/patches/make-3.82-newlines.patch create mode 100644 pkgs/core/make/patches/make-3.82-noclock_gettime.patch create mode 100644 pkgs/core/make/patches/make-3.82-weird-shell.patch rename pkgs/core/{xorg-server => xorg-x11-server}/10-quirks.conf (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.4.99-pic-libxf86config.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.4.99-ssh-isnt-local.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.5.0-bg-none-root.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.5.0-projector-fb-size.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.5.1-mode-debug.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.6.0-displayfd.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.6.0-less-acpi-brokenness.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.6.1-nouveau.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.6.99-default-modes.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.6.99-randr-error-debugging.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.6.99-right-of.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.7.0-randr-gamma-restore.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.7.1-gamma-kdm-fix.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.7.1-multilib.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.8-disable-vboxvideo.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.8-no-connected-outputs.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.8-randr-initial.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.8-udev-warning.patch (100%) rename pkgs/core/{xorg-server => xorg-x11-server}/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch (100%) rename pkgs/core/{xorg-server/xorg-server.nm => xorg-x11-server/xorg-x11-server.nm} (87%) copy pkgs/core/{network/src/functions.ethernet => xorg-x11-server/xorg.conf} (94%)
Difference in files: diff --git a/pkgs/core/libX11/libX11.nm b/pkgs/core/libX11/libX11.nm index 760f5f9..bd618cf 100644 --- a/pkgs/core/libX11/libX11.nm +++ b/pkgs/core/libX11/libX11.nm @@ -28,7 +28,7 @@ PKG_NAME = libX11 PKG_VER = 1.3.2 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = System/Libraries PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/libXau/libXau.nm b/pkgs/core/libXau/libXau.nm index 9b5de66..1a78bf7 100644 --- a/pkgs/core/libXau/libXau.nm +++ b/pkgs/core/libXau/libXau.nm @@ -28,7 +28,7 @@ PKG_NAME = libXau PKG_VER = 1.0.6 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://xcb.freedesktop.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/libXext/libXext.nm b/pkgs/core/libXext/libXext.nm index d0bf204..0009e80 100644 --- a/pkgs/core/libXext/libXext.nm +++ b/pkgs/core/libXext/libXext.nm @@ -28,7 +28,7 @@ PKG_NAME = libXext PKG_VER = 1.1.2 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/libXfont/libXfont.nm b/pkgs/core/libXfont/libXfont.nm index ae9316f..277472b5 100644 --- a/pkgs/core/libXfont/libXfont.nm +++ b/pkgs/core/libXfont/libXfont.nm @@ -28,7 +28,7 @@ PKG_NAME = libXfont PKG_VER = 1.4.2 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/libfontenc/libfontenc.nm b/pkgs/core/libfontenc/libfontenc.nm index 91a6516..2de3e09 100644 --- a/pkgs/core/libfontenc/libfontenc.nm +++ b/pkgs/core/libfontenc/libfontenc.nm @@ -28,14 +28,13 @@ PKG_NAME = libfontenc PKG_VER = 1.0.5 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://www.x.org/ PKG_LICENSE = MIT PKG_SUMMARY = X.Org X11 libfontenc runtime library.
PKG_BUILD_DEPS+= pkg-config xorg-x11-proto-devel zlib -PKG_DEPS +=
define PKG_DESCRIPTION X.Org X11 libfontenc runtime library. diff --git a/pkgs/core/libssh2/libssh2.nm b/pkgs/core/libssh2/libssh2.nm index 7002b2c..a6ce100 100644 --- a/pkgs/core/libssh2/libssh2.nm +++ b/pkgs/core/libssh2/libssh2.nm @@ -25,7 +25,7 @@ include $(PKGROOT)/Include
PKG_NAME = libssh2 -PKG_VER = 1.2.6 +PKG_VER = 1.2.7 PKG_REL = 0
PKG_MAINTAINER = diff --git a/pkgs/core/libxcb/libxcb.nm b/pkgs/core/libxcb/libxcb.nm index d83a7f1..79736fa 100644 --- a/pkgs/core/libxcb/libxcb.nm +++ b/pkgs/core/libxcb/libxcb.nm @@ -28,7 +28,7 @@ PKG_NAME = libxcb PKG_VER = 1.7 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://xcb.freedesktop.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/libxkbfile/libxkbfile.nm b/pkgs/core/libxkbfile/libxkbfile.nm index ed2e38a..ebced19 100644 --- a/pkgs/core/libxkbfile/libxkbfile.nm +++ b/pkgs/core/libxkbfile/libxkbfile.nm @@ -28,7 +28,7 @@ PKG_NAME = libxkbfile PKG_VER = 1.0.6 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://www.x.org PKG_LICENSE = MIT diff --git a/pkgs/core/libxslt/libxslt.nm b/pkgs/core/libxslt/libxslt.nm index 89d6d87..bd3b5b4 100644 --- a/pkgs/core/libxslt/libxslt.nm +++ b/pkgs/core/libxslt/libxslt.nm @@ -28,7 +28,7 @@ PKG_NAME = libxslt PKG_VER = 1.1.26 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = Development/Libraries PKG_URL = http://xmlsoft.org/XSLT/ PKG_LICENSE = MIT diff --git a/pkgs/core/make/make.nm b/pkgs/core/make/make.nm index 7c7fd63..694a215 100644 --- a/pkgs/core/make/make.nm +++ b/pkgs/core/make/make.nm @@ -25,10 +25,10 @@ include $(PKGROOT)/Include
PKG_NAME = make -PKG_VER = 3.81 +PKG_VER = 3.82 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Michael Tremer michael.tremer@ipfire.org PKG_GROUP = Development/Tools PKG_URL = http://www.gnu.org/software/make/ PKG_LICENSE = GPLv2+ diff --git a/pkgs/core/make/patches/make-3.79.1-noclock_gettime.patch b/pkgs/core/make/patches/make-3.79.1-noclock_gettime.patch deleted file mode 100644 index 0638849..0000000 --- a/pkgs/core/make/patches/make-3.79.1-noclock_gettime.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -urp make-3.81/configure make-3.81-pm/configure ---- make-3.81/configure 2006-04-01 08:40:00.000000000 +0200 -+++ make-3.81-pm/configure 2008-09-22 10:50:40.000000000 +0200 -@@ -8018,7 +8018,7 @@ fi - rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$ac_cv_search_clock_gettime" = no; then -- for ac_lib in rt posix4; do -+ for ac_lib in posix4; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ -Only in make-3.81-pm/: configure.orig diff --git a/pkgs/core/make/patches/make-3.80-getcwd.patch b/pkgs/core/make/patches/make-3.80-getcwd.patch deleted file mode 100644 index 1e54709..0000000 --- a/pkgs/core/make/patches/make-3.80-getcwd.patch +++ /dev/null @@ -1,15 +0,0 @@ -Only in make-3.81-pm/: configure.orig -diff -urp make-3.81/make.h make-3.81-pm/make.h ---- make-3.81/make.h 2006-02-16 00:54:43.000000000 +0100 -+++ make-3.81-pm/make.h 2008-09-22 10:53:35.000000000 +0200 -@@ -488,7 +488,7 @@ extern long int lseek (); - #endif /* Not GNU C library or POSIX. */ - - #ifdef HAVE_GETCWD --# if !defined(VMS) && !defined(__DECC) -+# if !defined(VMS) && !defined(__DECC) && !defined(getcwd) - extern char *getcwd (); - # endif - #else -Only in make-3.81-pm/: make.h~ -Only in make-3.81-pm/: make.h.orig diff --git a/pkgs/core/make/patches/make-3.80-j8k.patch b/pkgs/core/make/patches/make-3.80-j8k.patch deleted file mode 100644 index 1acd4f9..0000000 --- a/pkgs/core/make/patches/make-3.80-j8k.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- make-3.80/main.c.jj 2002-08-09 21:27:17.000000000 -0400 -+++ make-3.80/main.c 2004-12-13 12:48:25.000000000 -0500 -@@ -1549,6 +1549,20 @@ int main (int argc, char ** argv) - } - } - -+#ifdef PIPE_BUF -+ if (job_slots > PIPE_BUF) -+#elif defined _POSIX_PIPE_BUF -+ if (job_slots > _POSIX_PIPE_BUF) -+#else -+ if (job_slots > 512) -+#endif -+ { -+ error (NILF, -+ _("More parallel jobs (-jN) than this platform can handle requested.")); -+ error (NILF, _("Resetting to single job (-j1) mode.")); -+ job_slots = 1; -+ } -+ - /* If we have >1 slot but no jobserver-fds, then we're a top-level make. - Set up the pipe and install the fds option for our children. */ - diff --git a/pkgs/core/make/patches/make-3.81-err-reporting.patch b/pkgs/core/make/patches/make-3.81-err-reporting.patch deleted file mode 100644 index eaee702..0000000 --- a/pkgs/core/make/patches/make-3.81-err-reporting.patch +++ /dev/null @@ -1,152 +0,0 @@ -diff -urp make-3.81/misc.c make-3.81-pm/misc.c ---- make-3.81/misc.c 2006-04-01 08:36:40.000000000 +0200 -+++ make-3.81-pm/misc.c 2008-09-22 12:45:18.000000000 +0200 -@@ -311,17 +311,31 @@ strerror (int errnum) - /* Print an error message from errno. */ - - void -+perror_with_name_err (const char *str, const char *name, int errnum) -+{ -+ error (NILF, _("%s%s: %s"), str, name, strerror (errnum)); -+} -+ -+void - perror_with_name (const char *str, const char *name) - { -- error (NILF, _("%s%s: %s"), str, name, strerror (errno)); -+ perror_with_name_err (str, name, errno); - } - - /* Print an error message from errno and exit. */ - - void -+pfatal_with_name_err (const char *name, int errnum) -+{ -+ fatal (NILF, _("%s: %s"), name, strerror (errnum)); -+ -+ /* NOTREACHED */ -+} -+ -+void - pfatal_with_name (const char *name) - { -- fatal (NILF, _("%s: %s"), name, strerror (errno)); -+ pfatal_with_name_err (name, errno); - - /* NOTREACHED */ - } -diff -urp make-3.81/main.c make-3.81-pm/main.c ---- make-3.81/main.c 2008-09-22 12:45:07.000000000 +0200 -+++ make-3.81-pm/main.c 2008-09-22 12:45:18.000000000 +0200 -@@ -1502,13 +1502,13 @@ main (int argc, char **argv, char **envp - strcat (template, DEFAULT_TMPFILE); - outfile = open_tmpfile (&stdin_nm, template); - if (outfile == 0) -- pfatal_with_name (_("fopen (temporary file)")); -+ pfatal_with_name_err (_("fopen (temporary file)"), errno); - while (!feof (stdin) && ! ferror (stdin)) - { - char buf[2048]; - unsigned int n = fread (buf, 1, sizeof (buf), stdin); - if (n > 0 && fwrite (buf, 1, n, outfile) != n) -- pfatal_with_name (_("fwrite (temporary file)")); -+ pfatal_with_name_err (_("fwrite (temporary file)"), errno); - } - (void) fclose (outfile); - -@@ -1681,7 +1681,7 @@ main (int argc, char **argv, char **envp - else if ((job_rfd = dup (job_fds[0])) < 0) - { - if (errno != EBADF) -- pfatal_with_name (_("dup jobserver")); -+ pfatal_with_name_err (_("dup jobserver"), errno); - - error (NILF, - _("warning: jobserver unavailable: using -j1. Add `+' to parent make rule.")); -@@ -1721,7 +1721,7 @@ main (int argc, char **argv, char **envp - char c = '+'; - - if (pipe (job_fds) < 0 || (job_rfd = dup (job_fds[0])) < 0) -- pfatal_with_name (_("creating jobs pipe")); -+ pfatal_with_name_err (_("creating jobs pipe"), errno); - - /* Every make assumes that it always has one job it can run. For the - submakes it's the token they were given by their parent. For the -@@ -1736,7 +1736,7 @@ main (int argc, char **argv, char **envp - - EINTRLOOP (r, write (job_fds[1], &c, 1)); - if (r != 1) -- pfatal_with_name (_("init jobserver pipe")); -+ pfatal_with_name_err (_("init jobserver pipe"), errno); - } - - /* Fill in the jobserver_fds struct for our children. */ -@@ -2151,7 +2151,7 @@ main (int argc, char **argv, char **envp - /* If there is a temp file from reading a makefile from stdin, get rid of - it now. */ - if (stdin_nm && unlink (stdin_nm) < 0 && errno != ENOENT) -- perror_with_name (_("unlink (temporary file): "), stdin_nm); -+ perror_with_name_err (_("unlink (temporary file): "), stdin_nm, errno); - - { - int status; -diff -urp make-3.81/make.h make-3.81-pm/make.h ---- make-3.81/make.h 2008-09-22 12:45:07.000000000 +0200 -+++ make-3.81-pm/make.h 2008-09-22 12:45:18.000000000 +0200 -@@ -414,6 +414,8 @@ extern void die PARAMS ((int)) __attribu - extern void log_working_directory PARAMS ((int)); - extern void pfatal_with_name PARAMS ((const char *)) __attribute__ ((noreturn)); - extern void perror_with_name PARAMS ((const char *, const char *)); -+extern void pfatal_with_name_err PARAMS ((const char *, int errnum)) __attribute__ ((noreturn)); -+extern void perror_with_name_err PARAMS ((const char *, const char *, int errnum)); - extern char *savestring PARAMS ((const char *, unsigned int)); - extern char *concat PARAMS ((const char *, const char *, const char *)); - extern char *xmalloc PARAMS ((unsigned int)); -diff -urp make-3.81/job.c make-3.81-pm/job.c ---- make-3.81/job.c 2006-03-20 04:03:04.000000000 +0100 -+++ make-3.81-pm/job.c 2008-09-22 12:45:18.000000000 +0200 -@@ -859,7 +859,7 @@ free_child (struct child *child) - - EINTRLOOP (r, write (job_fds[1], &token, 1)); - if (r != 1) -- pfatal_with_name (_("write jobserver")); -+ pfatal_with_name_err (_("write jobserver"), errno); - - DB (DB_JOBS, (_("Released token for child 0x%08lx (%s).\n"), - (unsigned long int) child, child->file->name)); -@@ -1699,6 +1699,7 @@ new_job (struct file *file) - - /* Set interruptible system calls, and read() for a job token. */ - set_child_handler_action_flags (1, waiting_jobs != NULL); -+ errno = 0; - got_token = read (job_rfd, &token, 1); - saved_errno = errno; - set_child_handler_action_flags (0, waiting_jobs != NULL); -@@ -1713,10 +1714,14 @@ new_job (struct file *file) - - /* If the error _wasn't_ expected (EINTR or EBADF), punt. Otherwise, - go back and reap_children(), and try again. */ -- errno = saved_errno; -- if (errno != EINTR && errno != EBADF) -- pfatal_with_name (_("read jobs pipe")); -- if (errno == EBADF) -+ if (saved_errno != EINTR && saved_errno != EBADF) -+ { -+ if (got_token == 0) -+ fatal (NILF, _("read jobs pipe EOF")); -+ else -+ pfatal_with_name_err (_("read jobs pipe"), saved_errno); -+ } -+ if (saved_errno == EBADF) - DB (DB_JOBS, ("Read returned EBADF.\n")); - } - #endif -@@ -1831,7 +1836,7 @@ load_too_high (void) - error (NILF, - _("cannot enforce load limits on this operating system")); - else -- perror_with_name (_("cannot enforce load limit: "), "getloadavg"); -+ perror_with_name_err (_("cannot enforce load limit: "), "getloadavg", errno); - } - lossage = errno; - load = 0; diff --git a/pkgs/core/make/patches/make-3.81-fdleak.patch b/pkgs/core/make/patches/make-3.81-fdleak.patch deleted file mode 100644 index 442ee54..0000000 --- a/pkgs/core/make/patches/make-3.81-fdleak.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff -urp make-3.81/read.c make-3.81-leak/read.c ---- make-3.81/read.c 2006-03-17 15:24:20.000000000 +0100 -+++ make-3.81-leak/read.c 2008-09-16 16:43:12.000000000 +0200 -@@ -296,6 +300,37 @@ restore_conditionals (struct conditional - conditionals = saved; - } - -+/* If possible, open the file and mark it close-on-exec, so that make -+ doesn't leak the descriptor to binaries called via $(shell ...).*/ -+static FILE * -+open_makefile (char *filename) -+{ -+ FILE *fp; -+ -+#if HAVE_FDOPEN -+ int fd = open (filename, O_RDONLY); -+ int save; -+ if (fd < 0) -+ return NULL; -+ -+ fp = fdopen (fd, "r"); -+ if (fp == NULL) -+ { -+ save = errno; -+ close (fd); -+ errno = save; -+ return NULL; -+ } -+ -+ CLOSE_ON_EXEC (fd); -+ -+#else -+ fp = fopen (filename, "r"); -+#endif -+ -+ return fp; -+} -+ - static int - eval_makefile (char *filename, int flags) - { -@@ -335,7 +376,8 @@ eval_makefile (char *filename, int flags - filename = expanded; - } - -- ebuf.fp = fopen (filename, "r"); -+ ebuf.fp = open_makefile (filename); -+ - /* Save the error code so we print the right message later. */ - makefile_errno = errno; - -@@ -348,7 +390,7 @@ eval_makefile (char *filename, int flags - for (i = 0; include_directories[i] != 0; ++i) - { - included = concat (include_directories[i], "/", filename); -- ebuf.fp = fopen (included, "r"); -+ ebuf.fp = open_makefile (included); - if (ebuf.fp) - { - filename = included; diff --git a/pkgs/core/make/patches/make-3.81-jobserver.patch b/pkgs/core/make/patches/make-3.81-jobserver.patch deleted file mode 100644 index df65107..0000000 --- a/pkgs/core/make/patches/make-3.81-jobserver.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -urp make-3.81/main.c make-3.81-pm/main.c ---- make-3.81/main.c 2007-09-24 15:28:34.000000000 +0200 -+++ make-3.81-pm/main.c 2007-09-24 15:32:50.000000000 +0200 -@@ -1669,8 +1669,12 @@ main (int argc, char **argv, char **envp - - if (job_slots > 0) - { -- close (job_fds[0]); -- close (job_fds[1]); -+ if (restarts == 0) -+ { -+ close (job_fds[0]); -+ close (job_fds[1]); -+ } -+ - job_fds[0] = job_fds[1] = -1; - free (jobserver_fds->list); - free (jobserver_fds); diff --git a/pkgs/core/make/patches/make-3.81-memory.patch b/pkgs/core/make/patches/make-3.81-memory.patch deleted file mode 100644 index 7a7bf9f..0000000 --- a/pkgs/core/make/patches/make-3.81-memory.patch +++ /dev/null @@ -1,261 +0,0 @@ -diff -Bburpd make-3.81_orig/file.c make-3.81/file.c ---- make-3.81_orig/file.c 2006-05-23 13:59:11.000000000 +0200 -+++ make-3.81/file.c 2006-05-23 14:39:34.000000000 +0200 -@@ -490,7 +490,7 @@ expand_deps (struct file *f) - - o = subst_expand (buffer, d->name, "%", "$*", 1, 2, 0); - -- free (d->name); -+ hash_strfree (d->name); - d->name = savestring (buffer, o - buffer); - d->staticpattern = 0; /* Clear staticpattern so that we don't - re-expand %s below. */ -@@ -549,7 +549,7 @@ expand_deps (struct file *f) - dp->name[0] = '\0'; - else - { -- free (dp->name); -+ hash_strfree (dp->name); - dp->name = savestring (buffer, o - buffer); - } - } -@@ -580,7 +580,7 @@ expand_deps (struct file *f) - if (d1->file == 0) - d1->file = enter_file (d1->name); - else -- free (d1->name); -+ hash_strfree (d1->name); - d1->name = 0; - d1->staticpattern = 0; - d1->need_2nd_expansion = 0; -Only in make-3.81: file.c~ -diff -Bburpd make-3.81_orig/implicit.c make-3.81/implicit.c ---- make-3.81_orig/implicit.c 2006-05-23 13:59:11.000000000 +0200 -+++ make-3.81/implicit.c 2006-05-23 14:40:01.000000000 +0200 -@@ -864,7 +864,7 @@ pattern_search (struct file *file, int a - dep->file = enter_file (dep->name); - /* enter_file uses dep->name _if_ we created a new file. */ - if (dep->name != dep->file->name) -- free (dep->name); -+ hash_strfree (dep->name); - dep->name = 0; - dep->file->tried_implicit |= dep->changed; - } -Only in make-3.81: implicit.c~ -diff -Bburpd make-3.81_orig/main.c make-3.81/main.c ---- make-3.81_orig/main.c 2006-05-23 13:59:11.000000000 +0200 -+++ make-3.81/main.c 2006-05-23 14:40:49.000000000 +0200 -@@ -540,6 +540,7 @@ initialize_global_hash_tables (void) - init_hash_files (); - hash_init_directories (); - hash_init_function_table (); -+ init_hash_strings (); - } - - static struct file * -Only in make-3.81: main.c~ -diff -Bburpd make-3.81_orig/make.h make-3.81/make.h ---- make-3.81_orig/make.h 2006-05-23 13:59:11.000000000 +0200 -+++ make-3.81/make.h 2006-05-23 14:41:21.000000000 +0200 -@@ -431,6 +431,11 @@ extern void print_spaces PARAMS ((unsign - extern char *find_percent PARAMS ((char *)); - extern FILE *open_tmpfile PARAMS ((char **, const char *)); - -+extern void init_hash_strings PARAMS ((void)); -+extern char *hash_strdup PARAMS ((const char *)); -+extern char *hash_savestring PARAMS ((const char *, unsigned int)); -+extern void hash_strfree PARAMS ((char *)); -+ - #ifndef NO_ARCHIVES - extern int ar_name PARAMS ((char *)); - extern void ar_parse_name PARAMS ((char *, char **, char **)); -Only in make-3.81: make.h~ -diff -Bburpd make-3.81_orig/misc.c make-3.81/misc.c ---- make-3.81_orig/misc.c 2006-05-23 13:59:11.000000000 +0200 -+++ make-3.81/misc.c 2006-05-23 14:42:59.000000000 +0200 -@@ -16,8 +16,10 @@ You should have received a copy of the G - GNU Make; see the file COPYING. If not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ - -+#include <assert.h> - #include "make.h" - #include "dep.h" -+#include "hash.h" - #include "debug.h" - - /* Variadic functions. We go through contortions to allow proper function -@@ -511,7 +513,7 @@ void - free_dep (struct dep *d) - { - if (d->name != 0) -- free (d->name); -+ hash_strfree (d->name); - - if (d->stem != 0) - free (d->stem); -@@ -535,7 +537,7 @@ copy_dep_chain (const struct dep *d) - bcopy ((char *) d, (char *) c, sizeof (struct dep)); - - if (c->name != 0) -- c->name = xstrdup (c->name); -+ c->name = hash_strdup (c->name); - if (c->stem != 0) - c->stem = xstrdup (c->stem); - -@@ -909,3 +911,154 @@ close_stdout (void) - exit (EXIT_FAILURE); - } - } -+ -+/* Hash table of duplicated strings. */ -+ -+struct hash_string -+{ -+ char *string; -+ unsigned int count; -+}; -+ -+static unsigned long -+string_hash_1 (key) -+ const void *key; -+{ -+ return_ISTRING_HASH_1 (((const struct hash_string *) key)->string); -+} -+ -+static unsigned long -+string_hash_2 (key) -+ const void *key; -+{ -+ return_ISTRING_HASH_2 (((const struct hash_string *) key)->string); -+} -+ -+static int -+string_hash_cmp (x, y) -+ const void *x; -+ const void *y; -+{ -+ return_ISTRING_COMPARE (((const struct hash_string *) x)->string, -+ ((const struct hash_string *) y)->string); -+} -+ -+static struct hash_table strings; -+ -+void -+init_hash_strings () -+{ -+ hash_init (&strings, 1000, string_hash_1, string_hash_2, -+ string_hash_cmp); -+} -+ -+/* Keep track duplicated string and return the old one if exists. */ -+ -+char * -+hash_strdup (ptr) -+ const char *ptr; -+{ -+ struct hash_string *h, key; -+ -+ if (*ptr == '\0') -+ return ""; -+ -+ key.string = (char *) ptr; -+ key.count = 0; -+ h = (struct hash_string *) hash_find_item (&strings, &key); -+ if (h == NULL) -+ { -+ char *result = (char *) malloc (strlen (ptr) + 1); -+ -+ if (result == NULL) -+ fatal (NILF, _("virtual memory exhausted")); -+ -+ strcpy (result, ptr); -+ -+ h = (struct hash_string *) malloc (sizeof (struct hash_string)); -+ if (h == NULL) -+ fatal (NILF, _("virtual memory exhausted")); -+ -+ h->string = result; -+ h->count = 1; -+ hash_insert (&strings, h); -+ } -+ else -+ { -+ h->count++; -+ assert (h->count != 0); -+ } -+ -+ return h->string; -+} -+ -+char * -+hash_savestring (str, length) -+ const char *str; -+ unsigned int length; -+{ -+ struct hash_string *h, key; -+ -+ if (length == 0 || *str == '\0') -+ return ""; -+ -+ key.string = alloca (length + 1); -+ key.count = 0; -+ bcopy (str, key.string, length); -+ key.string [length] = '\0'; -+ -+ h = (struct hash_string *) hash_find_item (&strings, &key); -+ if (h == NULL) -+ { -+ char *out = (char *) xmalloc (length + 1); -+ bcopy (str, out, length); -+ out[length] = '\0'; -+ -+ h = (struct hash_string *) malloc (sizeof (struct hash_string)); -+ if (h == NULL) -+ fatal (NILF, _("virtual memory exhausted")); -+ -+ h->string = out; -+ h->count = 1; -+ hash_insert (&strings, h); -+ } -+ else -+ { -+ h->count++; -+ assert (h->count != 0); -+ } -+ -+ return h->string; -+} -+ -+void -+hash_strfree (ptr) -+ char *ptr; -+{ -+ struct hash_string *h, key; -+ -+ if (*ptr == '\0') -+ return; -+ -+ key.string = ptr; -+ key.count = 0; -+ h = (struct hash_string *) hash_find_item (&strings, &key); -+ -+ /* Check if string comes from hash_strdup or hash_savestring. */ -+ if (h == NULL || h->string != ptr) -+ { -+ free (ptr); -+ return; -+ } -+ -+ h->count--; -+ if (h->count == 0) -+ { -+ struct hash_string *d; -+ -+ d = hash_delete (&strings, h); -+ assert (d == h); -+ free (h->string); -+ free (h); -+ } -+} -Only in make-3.81: misc.c~ -Only in make-3.81: read.c~ diff --git a/pkgs/core/make/patches/make-3.81-newlines.patch b/pkgs/core/make/patches/make-3.81-newlines.patch deleted file mode 100644 index d9bb313..0000000 --- a/pkgs/core/make/patches/make-3.81-newlines.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- make-3.81-orig/job.c 2007-02-21 19:10:54.000000000 +0100 -+++ make-3.81-pm/job.c 2007-02-22 18:13:59.000000000 +0100 -@@ -2706,7 +2706,7 @@ - unsigned int line_len = strlen (line); - - char *new_line = (char *) alloca (shell_len + (sizeof (minus_c) - 1) -- + (line_len * 2) + 1); -+ + (line_len * 4) + 1); - char *command_ptr = NULL; /* used for batch_mode_shell mode */ - - # ifdef __EMX__ /* is this necessary? */ -@@ -2740,9 +2740,10 @@ - #endif - if (PRESERVE_BSNL) - { -- *(ap++) = '\'; -+ *(ap++) = '''; - *(ap++) = '\'; - *(ap++) = '\n'; -+ *(ap++) = '''; - } - - ++p; diff --git a/pkgs/core/make/patches/make-3.81-rlimit.patch b/pkgs/core/make/patches/make-3.81-rlimit.patch deleted file mode 100644 index f88f0fe..0000000 --- a/pkgs/core/make/patches/make-3.81-rlimit.patch +++ /dev/null @@ -1,111 +0,0 @@ -diff -urp make-3.81/job.c make-3.81-pm/job.c ---- make-3.81/job.c 2008-03-25 18:15:38.000000000 +0100 -+++ make-3.81-pm/job.c 2008-03-25 17:51:11.000000000 +0100 -@@ -2079,6 +2079,9 @@ exec_command (char **argv, char **envp) - # else - - /* Run the program. */ -+#ifdef SET_STACK_SIZE -+ restore_original_stack_rlimit (); -+#endif - environ = envp; - execvp (argv[0], argv); - -diff -urp make-3.81/main.c make-3.81-pm/main.c ---- make-3.81/main.c 2008-03-25 18:15:38.000000000 +0100 -+++ make-3.81-pm/main.c 2008-03-25 18:14:04.000000000 +0100 -@@ -44,12 +44,53 @@ Foundation, Inc., 51 Franklin St, Fifth - # include <fcntl.h> - #endif - --#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) --# define SET_STACK_SIZE --#endif -- - #ifdef SET_STACK_SIZE - # include <sys/resource.h> -+/* Whether the rlimit was set successfuly */ -+static int setrlimit_succeeded = 0; -+/* Original rlim_cur */ -+static rlim_t setrlimit_orig_cur = 0; -+ -+/* Get rid of any avoidable limit on stack size so that alloca does -+ not fail. */ -+void -+set_max_stack_rlimit (void) -+{ -+ struct rlimit rlim; -+ -+ /* Back off if the limit is still set, probably due to failure in -+ restore_original_stack_rlimit. */ -+ if (setrlimit_succeeded) -+ return; -+ -+ if (getrlimit (RLIMIT_STACK, &rlim) == 0) -+ { -+ setrlimit_orig_cur = rlim.rlim_cur; -+ rlim.rlim_cur = rlim.rlim_max; -+ if (setrlimit (RLIMIT_STACK, &rlim) != -1) -+ setrlimit_succeeded = 1; -+ } -+} -+ -+/* Set the rlimit back to its original value. To be called before -+ process spawn. */ -+void -+restore_original_stack_rlimit (void) -+{ -+ struct rlimit rlim; -+ -+ if (!setrlimit_succeeded) -+ return; -+ -+ if (getrlimit (RLIMIT_STACK, &rlim) == 0) -+ { -+ rlim.rlim_cur = setrlimit_orig_cur; -+ setrlimit (RLIMIT_STACK, &rlim); -+ /* Don't reset the setrlimit_succeeded flag. This can be called -+ after vfork, in which case the flag is in memory shared with -+ the parent. */ -+ } -+} - #endif - - #ifdef _AMIGA -@@ -915,17 +956,7 @@ main (int argc, char **argv, char **envp - #endif - - #ifdef SET_STACK_SIZE -- /* Get rid of any avoidable limit on stack size. */ -- { -- struct rlimit rlim; -- -- /* Set the stack limit huge so that alloca does not fail. */ -- if (getrlimit (RLIMIT_STACK, &rlim) == 0) -- { -- rlim.rlim_cur = rlim.rlim_max; -- setrlimit (RLIMIT_STACK, &rlim); -- } -- } -+ set_max_stack_rlimit (); - #endif - - #ifdef HAVE_ATEXIT -diff -urp make-3.81/make.h make-3.81-pm/make.h ---- make-3.81/make.h 2008-03-25 18:15:38.000000000 +0100 -+++ make-3.81-pm/make.h 2008-03-25 17:51:10.000000000 +0100 -@@ -346,6 +346,13 @@ extern int strcmpi (const char *,const c - #define N_(msgid) gettext_noop (msgid) - #define S_(msg1,msg2,num) ngettext (msg1,msg2,num) - -+/* Handle rlimit */ -+#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) -+# define SET_STACK_SIZE -+void set_max_stack_rlimit (void); -+void restore_original_stack_rlimit (void); -+#endif -+ - /* Handle other OSs. */ - #if defined(HAVE_DOS_PATHS) - # define PATH_SEPARATOR_CHAR ';' -diff -urp make-3.81/w32/Makefile make-3.81-pm/w32/Makefile diff --git a/pkgs/core/make/patches/make-3.81-strcpy-overlap.patch b/pkgs/core/make/patches/make-3.81-strcpy-overlap.patch deleted file mode 100644 index d045737..0000000 --- a/pkgs/core/make/patches/make-3.81-strcpy-overlap.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: job.c -=================================================================== -RCS file: /sources/make/make/job.c,v -retrieving revision 1.193 -diff -u -r1.193 job.c ---- a/job.c 9 Jun 2009 15:35:38 -0000 1.193 -+++ b/job.c 31 Jul 2009 11:42:16 -0000 -@@ -1600,7 +1600,7 @@ - /* There are no more references in this line to worry about. - Copy the remaining uninteresting text to the output. */ - if (out != in) -- strcpy (out, in); -+ memmove (out, in, strlen (in) + 1); - - /* Finally, expand the line. */ - lines[i] = allocated_variable_expand_for_file (cmds->command_lines[i], diff --git a/pkgs/core/make/patches/make-3.82-err-reporting.patch b/pkgs/core/make/patches/make-3.82-err-reporting.patch new file mode 100644 index 0000000..2f5b3c6 --- /dev/null +++ b/pkgs/core/make/patches/make-3.82-err-reporting.patch @@ -0,0 +1,157 @@ +diff -urp make-3.82/misc.c make-3.82-pm/misc.c +--- make-3.82/misc.c 2010-07-19 09:10:54.000000000 +0200 ++++ make-3.82-pm/misc.c 2010-08-11 15:26:45.000000000 +0200 +@@ -342,17 +342,31 @@ strerror (int errnum) + /* Print an error message from errno. */ + + void ++perror_with_name_err (const char *str, const char *name, int errnum) ++{ ++ error (NILF, _("%s%s: %s"), str, name, strerror (errnum)); ++} ++ ++void + perror_with_name (const char *str, const char *name) + { +- error (NILF, _("%s%s: %s"), str, name, strerror (errno)); ++ perror_with_name_err (str, name, errno); + } + + /* Print an error message from errno and exit. */ + + void ++pfatal_with_name_err (const char *name, int errnum) ++{ ++ fatal (NILF, _("%s: %s"), name, strerror (errnum)); ++ ++ /* NOTREACHED */ ++} ++ ++void + pfatal_with_name (const char *name) + { +- fatal (NILF, _("%s: %s"), name, strerror (errno)); ++ pfatal_with_name_err (name, errno); + + /* NOTREACHED */ + } +diff -urp make-3.82/main.c make-3.82-pm/main.c +--- make-3.82/main.c 2010-08-11 15:34:12.000000000 +0200 ++++ make-3.82-pm/main.c 2010-08-11 15:30:11.000000000 +0200 +@@ -1536,13 +1536,13 @@ main (int argc, char **argv, char **envp + strcat (template, DEFAULT_TMPFILE); + outfile = open_tmpfile (&stdin_nm, template); + if (outfile == 0) +- pfatal_with_name (_("fopen (temporary file)")); ++ pfatal_with_name_err (_("fopen (temporary file)"), errno); + while (!feof (stdin) && ! ferror (stdin)) + { + char buf[2048]; + unsigned int n = fread (buf, 1, sizeof (buf), stdin); + if (n > 0 && fwrite (buf, 1, n, outfile) != n) +- pfatal_with_name (_("fwrite (temporary file)")); ++ pfatal_with_name_err (_("fwrite (temporary file)"), errno); + } + fclose (outfile); + +@@ -1747,7 +1747,7 @@ main (int argc, char **argv, char **envp + else if ((job_rfd = dup (job_fds[0])) < 0) + { + if (errno != EBADF) +- pfatal_with_name (_("dup jobserver")); ++ pfatal_with_name_err (_("dup jobserver"), errno); + + error (NILF, + _("warning: jobserver unavailable: using -j1. Add `+' to parent make rule.")); +@@ -1788,7 +1788,7 @@ main (int argc, char **argv, char **envp + char c = '+'; + + if (pipe (job_fds) < 0 || (job_rfd = dup (job_fds[0])) < 0) +- pfatal_with_name (_("creating jobs pipe")); ++ pfatal_with_name_err (_("creating jobs pipe"), errno); + + /* Every make assumes that it always has one job it can run. For the + submakes it's the token they were given by their parent. For the +@@ -1803,7 +1803,7 @@ main (int argc, char **argv, char **envp + + EINTRLOOP (r, write (job_fds[1], &c, 1)); + if (r != 1) +- pfatal_with_name (_("init jobserver pipe")); ++ pfatal_with_name_err (_("init jobserver pipe"), errno); + } + + /* Fill in the jobserver_fds struct for our children. */ +@@ -2226,7 +2226,7 @@ main (int argc, char **argv, char **envp + /* If there is a temp file from reading a makefile from stdin, get rid of + it now. */ + if (stdin_nm && unlink (stdin_nm) < 0 && errno != ENOENT) +- perror_with_name (_("unlink (temporary file): "), stdin_nm); ++ perror_with_name_err (_("unlink (temporary file): "), stdin_nm, errno); + + /* If there were no command-line goals, use the default. */ + if (goals == 0) +Только в make-3.82-pm: job.c~ +Только в make-3.82-pm: main.c~ +diff -urp make-3.82/make.h make-3.82-pm/make.h +--- make-3.82/make.h 2010-08-11 15:34:12.000000000 +0200 ++++ make-3.82-pm/make.h 2010-08-11 15:31:26.000000000 +0200 +@@ -385,6 +385,8 @@ void die (int) __attribute__ ((noreturn) + void log_working_directory (int); + void pfatal_with_name (const char *) __attribute__ ((noreturn)); + void perror_with_name (const char *, const char *); ++void pfatal_with_name_err (const char *, int errnum) __attribute__ ((noreturn)); ++void perror_with_name_err (const char *, const char *, int errnum); + void *xmalloc (unsigned int); + void *xcalloc (unsigned int); + void *xrealloc (void *, unsigned int); +diff -urp make-3.82/job.c make-3.82-pm/job.c +--- make-3.82/job.c 2010-07-24 10:27:50.000000000 +0200 ++++ make-3.82-pm/job.c 2010-08-11 15:33:54.000000000 +0200 +@@ -917,7 +917,7 @@ free_child (struct child *child) + + EINTRLOOP (r, write (job_fds[1], &token, 1)); + if (r != 1) +- pfatal_with_name (_("write jobserver")); ++ pfatal_with_name_err (_("write jobserver"), errno); + + DB (DB_JOBS, (_("Released token for child %p (%s).\n"), + child, child->file->name)); +@@ -1768,6 +1768,7 @@ new_job (struct file *file) + + /* Set interruptible system calls, and read() for a job token. */ + set_child_handler_action_flags (1, waiting_jobs != NULL); ++ errno = 0; + got_token = read (job_rfd, &token, 1); + saved_errno = errno; + set_child_handler_action_flags (0, waiting_jobs != NULL); +@@ -1782,10 +1783,14 @@ new_job (struct file *file) + + /* If the error _wasn't_ expected (EINTR or EBADF), punt. Otherwise, + go back and reap_children(), and try again. */ +- errno = saved_errno; +- if (errno != EINTR && errno != EBADF) +- pfatal_with_name (_("read jobs pipe")); +- if (errno == EBADF) ++ if (saved_errno != EINTR && saved_errno != EBADF) ++ { ++ if (got_token == 0) ++ fatal (NILF, _("read jobs pipe EOF")); ++ else ++ pfatal_with_name_err (_("read jobs pipe"), saved_errno); ++ } ++ if (saved_errno == EBADF) + DB (DB_JOBS, ("Read returned EBADF.\n")); + } + #endif +@@ -1909,7 +1914,8 @@ load_too_high (void) + error (NILF, + _("cannot enforce load limits on this operating system")); + else +- perror_with_name (_("cannot enforce load limit: "), "getloadavg"); ++ perror_with_name_err (_("cannot enforce load limit: "), ++ "getloadavg", errno); + } + lossage = errno; + load = 0; +Только в make-3.82-pm: make.h~ +Только в make-3.82-pm: misc.c.orig diff --git a/pkgs/core/make/patches/make-3.82-getcwd.patch b/pkgs/core/make/patches/make-3.82-getcwd.patch new file mode 100644 index 0000000..b688732 --- /dev/null +++ b/pkgs/core/make/patches/make-3.82-getcwd.patch @@ -0,0 +1,14 @@ +diff -up make-3.82/make.h~ make-3.82/make.h +--- make-3.82/make.h~ 2010-07-20 15:12:06.000000000 +0200 ++++ make-3.82/make.h 2010-08-11 15:19:09.000000000 +0200 +@@ -472,7 +472,7 @@ long int lseek (); + #endif /* Not GNU C library or POSIX. */ + + #ifdef HAVE_GETCWD +-# if !defined(VMS) && !defined(__DECC) ++# if !defined(VMS) && !defined(__DECC) && !defined(getcwd) + char *getcwd (); + # endif + #else + +Diff finished. Wed Aug 11 15:19:12 2010 diff --git a/pkgs/core/make/patches/make-3.82-j8k.patch b/pkgs/core/make/patches/make-3.82-j8k.patch new file mode 100644 index 0000000..b5fa357 --- /dev/null +++ b/pkgs/core/make/patches/make-3.82-j8k.patch @@ -0,0 +1,26 @@ +diff -up make-3.82/main.c~ make-3.82/main.c +--- make-3.82/main.c~ 2010-07-19 09:10:53.000000000 +0200 ++++ make-3.82/main.c 2010-08-11 15:12:09.000000000 +0200 +@@ -1765,6 +1765,20 @@ main (int argc, char **argv, char **envp + } + } + ++#ifdef PIPE_BUF ++ if (job_slots > PIPE_BUF) ++#elif defined _POSIX_PIPE_BUF ++ if (job_slots > _POSIX_PIPE_BUF) ++#else ++ if (job_slots > 512) ++#endif ++ { ++ error (NILF, ++ _("More parallel jobs (-jN) than this platform can handle requested.")); ++ error (NILF, _("Resetting to single job (-j1) mode.")); ++ job_slots = 1; ++ } ++ + /* If we have >1 slot but no jobserver-fds, then we're a top-level make. + Set up the pipe and install the fds option for our children. */ + + +Diff finished. Wed Aug 11 15:12:32 2010 diff --git a/pkgs/core/make/patches/make-3.82-jobserver.patch b/pkgs/core/make/patches/make-3.82-jobserver.patch new file mode 100644 index 0000000..2a85503 --- /dev/null +++ b/pkgs/core/make/patches/make-3.82-jobserver.patch @@ -0,0 +1,19 @@ +diff -up make-3.82/main.c~ make-3.82/main.c +--- make-3.82/main.c~ 2010-08-12 14:59:20.000000000 +0200 ++++ make-3.82/main.c 2010-08-12 15:00:07.000000000 +0200 +@@ -1756,8 +1756,11 @@ main (int argc, char **argv, char **envp + + if (job_slots > 0) + { +- close (job_fds[0]); +- close (job_fds[1]); ++ if (restarts == 0) ++ { ++ close (job_fds[0]); ++ close (job_fds[1]); ++ } + job_fds[0] = job_fds[1] = -1; + free (jobserver_fds->list); + free (jobserver_fds); + +Diff finished. Thu Aug 12 15:00:22 2010 diff --git a/pkgs/core/make/patches/make-3.82-newlines.patch b/pkgs/core/make/patches/make-3.82-newlines.patch new file mode 100644 index 0000000..d86018a --- /dev/null +++ b/pkgs/core/make/patches/make-3.82-newlines.patch @@ -0,0 +1,30 @@ +diff -up make-3.82/job.c~ make-3.82/job.c +--- make-3.82/job.c~ 2010-08-12 14:57:15.000000000 +0200 ++++ make-3.82/job.c 2010-08-12 14:58:23.000000000 +0200 +@@ -2876,7 +2876,7 @@ construct_command_argv_internal (char *l + } + + new_line = alloca (shell_len + 1 + sflags_len + 1 +- + (line_len*2) + 1); ++ + (line_len*4) + 1); + ap = new_line; + memcpy (ap, shell, shell_len); + ap += shell_len; +@@ -2904,13 +2904,14 @@ construct_command_argv_internal (char *l + #endif + if (PRESERVE_BSNL) + { +- *(ap++) = '\'; ++ *(ap++) = '''; + /* Only non-batch execution needs another backslash, + because it will be passed through a recursive + invocation of this function. */ + if (!batch_mode_shell) + *(ap++) = '\'; + *(ap++) = '\n'; ++ *(ap++) = '''; + } + ++p; + continue; + +Diff finished. Thu Aug 12 14:58:34 2010 diff --git a/pkgs/core/make/patches/make-3.82-noclock_gettime.patch b/pkgs/core/make/patches/make-3.82-noclock_gettime.patch new file mode 100644 index 0000000..f63e1fc --- /dev/null +++ b/pkgs/core/make/patches/make-3.82-noclock_gettime.patch @@ -0,0 +1,14 @@ +diff -up make-3.82/configure~ make-3.82/configure +--- make-3.82/configure~ 2010-07-28 07:41:51.000000000 +0200 ++++ make-3.82/configure 2010-08-11 15:07:50.000000000 +0200 +@@ -7215,7 +7215,7 @@ return clock_gettime (); + return 0; + } + _ACEOF +-for ac_lib in '' rt posix4; do ++for ac_lib in '' posix4; do + if test -z "$ac_lib"; then + ac_res="none required" + else + +Diff finished. Wed Aug 11 15:07:59 2010 diff --git a/pkgs/core/make/patches/make-3.82-weird-shell.patch b/pkgs/core/make/patches/make-3.82-weird-shell.patch new file mode 100644 index 0000000..dfdaf89 --- /dev/null +++ b/pkgs/core/make/patches/make-3.82-weird-shell.patch @@ -0,0 +1,16 @@ +diff -up make-3.82/job.c~ make-3.82/job.c +--- make-3.82/job.c~ 2010-08-11 16:13:33.000000000 +0200 ++++ make-3.82/job.c 2010-08-12 14:20:08.000000000 +0200 +@@ -2442,7 +2442,11 @@ construct_command_argv_internal (char *l + + /* See if it is safe to parse commands internally. */ + if (shell == 0) +- shell = default_shell; ++ { ++ shell = default_shell; ++ if (shellflags == 0) ++ shellflags = "-c"; ++ } + #ifdef WINDOWS32 + else if (strcmp (shell, default_shell)) + { diff --git a/pkgs/core/sudo/sudo.nm b/pkgs/core/sudo/sudo.nm index 5f3f74a..46855b8 100644 --- a/pkgs/core/sudo/sudo.nm +++ b/pkgs/core/sudo/sudo.nm @@ -25,12 +25,12 @@ include $(PKGROOT)/Include
PKG_NAME = sudo -PKG_VER = 1.7.2p1 +PKG_VER = 1.7.4p3 PKG_REL = 0
PKG_MAINTAINER = PKG_GROUP = Applications/System -PKG_URL = +PKG_URL = http://www.sudo.ws/sudo/download.html PKG_LICENSE = BSD PKG_SUMMARY = Allows restricted root access for specified users.
diff --git a/pkgs/core/vsftpd/vsftpd.nm b/pkgs/core/vsftpd/vsftpd.nm index c26ec54..70ad729 100644 --- a/pkgs/core/vsftpd/vsftpd.nm +++ b/pkgs/core/vsftpd/vsftpd.nm @@ -25,7 +25,7 @@ include $(PKGROOT)/Include
PKG_NAME = vsftpd -PKG_VER = 2.2.2 +PKG_VER = 2.3.2 PKG_REL = 0
PKG_MAINTAINER = diff --git a/pkgs/core/xcb-proto/xcb-proto.nm b/pkgs/core/xcb-proto/xcb-proto.nm index 94d84f3..ea87f4b 100644 --- a/pkgs/core/xcb-proto/xcb-proto.nm +++ b/pkgs/core/xcb-proto/xcb-proto.nm @@ -28,7 +28,7 @@ PKG_NAME = xcb-proto PKG_VER = 1.6 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Headers PKG_URL = http://xcb.freedesktop.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xkeyboard-config/xkeyboard-config.nm b/pkgs/core/xkeyboard-config/xkeyboard-config.nm index d15b1f4..4907e95 100644 --- a/pkgs/core/xkeyboard-config/xkeyboard-config.nm +++ b/pkgs/core/xkeyboard-config/xkeyboard-config.nm @@ -28,7 +28,7 @@ PKG_NAME = xkeyboard-config PKG_VER = 1.9 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Utils PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-server/10-quirks.conf b/pkgs/core/xorg-server/10-quirks.conf deleted file mode 100644 index 82d3ec2..0000000 --- a/pkgs/core/xorg-server/10-quirks.conf +++ /dev/null @@ -1,20 +0,0 @@ -# Collection of quirks and blacklist/whitelists for specific devices. - - -# Accelerometer device, posts data through ABS_X/ABS_Y, making X unusable -# http://bugs.freedesktop.org/show_bug.cgi?id=22442 -Section "InputClass" - Identifier "ThinkPad HDAPS accelerometer blacklist" - MatchProduct "ThinkPad HDAPS accelerometer data" - Option "Ignore" "on" -EndSection - -# https://bugzilla.redhat.com/show_bug.cgi?id=523914 -# Mouse does not move in PV Xen guest -# Explicitly tell evdev to not ignore the absolute axes. -Section "InputClass" - Identifier "Xen Virtual Pointer axis blacklist" - MatchProduct "Xen Virtual Pointer" - Option "IgnoreAbsoluteAxes" "off" - Option "IgnoreRelativeAxes" "off" -EndSection diff --git a/pkgs/core/xorg-server/patches/xserver-1.4.99-pic-libxf86config.patch b/pkgs/core/xorg-server/patches/xserver-1.4.99-pic-libxf86config.patch deleted file mode 100644 index d040900..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.4.99-pic-libxf86config.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 04bd8e2fa6be557f58a0e417b0f3befc56f5ef59 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas x@fedoraproject.org -Date: Thu, 1 Jul 2010 15:45:03 +1000 -Subject: [PATCH] Build libxf86config with -fPIC. - ---- - hw/xfree86/parser/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am -index caf7079..655e73f 100644 ---- a/hw/xfree86/parser/Makefile.am -+++ b/hw/xfree86/parser/Makefile.am -@@ -32,7 +32,7 @@ libxf86config_internal_la_SOURCES = \ - - libxf86config_a_SOURCES = \ - $(INTERNAL_SOURCES) --libxf86config_a_CFLAGS = $(AM_CFLAGS) -+libxf86config_a_CFLAGS = $(AM_CFLAGS) -fPIC -fvisibility=hidden - - AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \ - -DSYSCONFDIR="$(sysconfdir)" \ --- -1.7.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.4.99-ssh-isnt-local.patch b/pkgs/core/xorg-server/patches/xserver-1.4.99-ssh-isnt-local.patch deleted file mode 100644 index d532fe1..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.4.99-ssh-isnt-local.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 4306b434038de7e2b17d3c4a6cfd87db469d3bda Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Mon, 10 Dec 2007 11:26:57 -0500 -Subject: [PATCH] Hack for proper MIT-SHM rejection for ssh-forwarded clients. - ---- - Xext/shm.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -diff --git a/Xext/shm.c b/Xext/shm.c -index 5937a03..5376c19 100644 ---- a/Xext/shm.c -+++ b/Xext/shm.c -@@ -381,8 +381,21 @@ - mode_t mask; - int uidset = 0, gidset = 0; - LocalClientCredRec *lcc; -+ Bool is_ssh = FALSE; - - if (GetLocalClientCreds(client, &lcc) != -1) { -+#ifdef linux -+ if (lcc->fieldsSet & LCC_PID_SET) { -+ /* ssh isn't actually a local client */ -+ char exe[64], buf[64]; -+ -+ memset(buf, 0, 64); -+ snprintf(exe, 64, "/proc/%d/exe", lcc->pid); -+ readlink(exe, buf, 63); -+ if (strstr(buf, "/ssh")) -+ is_ssh = TRUE; -+ } -+#endif - - if (lcc->fieldsSet & LCC_UID_SET) { - uid = lcc->euid; -@@ -401,6 +414,9 @@ - } - #endif - FreeLocalClientCreds(lcc); -+ -+ if (is_ssh) -+ return -1; - - if (uidset) { - /* User id 0 always gets access */ --- -1.5.3.4 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.5.0-bg-none-root.patch b/pkgs/core/xorg-server/patches/xserver-1.5.0-bg-none-root.patch deleted file mode 100644 index ae65d0b..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.5.0-bg-none-root.patch +++ /dev/null @@ -1,155 +0,0 @@ -From eff3bb9c6f0b71a57705885a3fe6e6469d252d2b Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas x@fedoraproject.org -Date: Wed, 20 Jan 2010 14:46:12 +1300 -Subject: [PATCH] Add nr for background=none root - ---- - dix/globals.c | 1 + - dix/window.c | 12 +++++++----- - hw/xfree86/common/xf86Init.c | 11 +++++++++++ - hw/xfree86/common/xf86str.h | 5 ++++- - include/opaque.h | 1 + - os/utils.c | 3 +++ - 6 files changed, 27 insertions(+), 6 deletions(-) - -diff --git a/dix/globals.c b/dix/globals.c -index c24a94f..907a5e8 100644 ---- a/dix/globals.c -+++ b/dix/globals.c -@@ -124,6 +124,7 @@ FontPtr defaultFont; /* not declared in dix.h to avoid including font.h in - CursorPtr rootCursor; - Bool party_like_its_1989 = FALSE; - Bool whiteRoot = FALSE; -+Bool bgNoneRoot = FALSE; - - int cursorScreenDevPriv[MAXSCREENS]; - -diff --git a/dix/window.c b/dix/window.c -index caff1cb..be1d1c4 100644 ---- a/dix/window.c -+++ b/dix/window.c -@@ -466,22 +466,24 @@ InitRootWindow(WindowPtr pWin) - pWin->optional->cursor = rootCursor; - rootCursor->refcnt++; - -+ pWin->backingStore = defaultBackingStore; -+ pWin->forcedBS = (defaultBackingStore != NotUseful); - - if (party_like_its_1989) { - MakeRootTile(pWin); - backFlag |= CWBackPixmap; -+ pScreen->ChangeWindowAttributes(pWin, backFlag); -+ } else if (bgNoneRoot) { -+ /* nothing, handled in xf86CreateRootWindow */ - } else { - if (whiteRoot) - pWin->background.pixel = pScreen->whitePixel; - else - pWin->background.pixel = pScreen->blackPixel; - backFlag |= CWBackPixel; -- } - -- pWin->backingStore = defaultBackingStore; -- pWin->forcedBS = (defaultBackingStore != NotUseful); -- /* We SHOULD check for an error value here XXX */ -- (*pScreen->ChangeWindowAttributes)(pWin, backFlag); -+ pScreen->ChangeWindowAttributes(pWin, backFlag); -+ } - - MapWindow(pWin, serverClient); - } -diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c -index 6707448..776b898 100644 ---- a/hw/xfree86/common/xf86Init.c -+++ b/hw/xfree86/common/xf86Init.c -@@ -77,6 +77,7 @@ - #ifdef RENDER - #include "picturestr.h" - #endif -+#include "xace.h" - - #include "xf86VGAarbiter.h" - #include "globals.h" -@@ -254,6 +255,7 @@ xf86CreateRootWindow(WindowPtr pWin) - int ret = TRUE; - int err = Success; - ScreenPtr pScreen = pWin->drawable.pScreen; -+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - RootWinPropPtr pProp; - CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr) - dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey); -@@ -305,6 +307,15 @@ xf86CreateRootWindow(WindowPtr pWin) - } - } - -+ if (bgNoneRoot && pScrn->canDoBGNoneRoot) { -+ pWin->backgroundState = XaceBackgroundNoneState(pWin); -+ pWin->background.pixel = pScreen->whitePixel; -+ pScreen->ChangeWindowAttributes(pWin, CWBackPixmap | CWBorderPixel | CWCursor | CWBackingStore); -+ } else { -+ pWin->background.pixel = pScreen->blackPixel; -+ pScreen->ChangeWindowAttributes(pWin, CWBackPixel | CWBorderPixel | CWCursor | CWBackingStore); -+ } -+ - DebugF("xf86CreateRootWindow() returns %d\n", ret); - return (ret); - } -diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h -index de1f1b6..5c3aa00 100644 ---- a/hw/xfree86/common/xf86str.h -+++ b/hw/xfree86/common/xf86str.h -@@ -503,7 +503,7 @@ typedef struct _confdrirec { - } confDRIRec, *confDRIPtr; - - /* These values should be adjusted when new fields are added to ScrnInfoRec */ --#define NUM_RESERVED_INTS 16 -+#define NUM_RESERVED_INTS 15 - #define NUM_RESERVED_POINTERS 14 - #define NUM_RESERVED_FUNCS 11 - -@@ -775,6 +775,9 @@ typedef struct _ScrnInfoRec { - ClockRangePtr clockRanges; - int adjustFlags; - -+ /* -nr support */ -+ int canDoBGNoneRoot; -+ - /* - * These can be used when the minor ABI version is incremented. - * The NUM_* parameters must be reduced appropriately to keep the -diff --git a/include/opaque.h b/include/opaque.h -index b3c7c70..fcc8c95 100644 ---- a/include/opaque.h -+++ b/include/opaque.h -@@ -71,6 +71,7 @@ extern _X_EXPORT Bool defeatAccessControl; - extern _X_EXPORT long maxBigRequestSize; - extern _X_EXPORT Bool party_like_its_1989; - extern _X_EXPORT Bool whiteRoot; -+extern _X_EXPORT Bool bgNoneRoot; - - extern _X_EXPORT Bool CoreDump; - -diff --git a/os/utils.c b/os/utils.c -index d7c8388..40583d0 100644 ---- a/os/utils.c -+++ b/os/utils.c -@@ -513,6 +513,7 @@ void UseMsg(void) - #endif - ErrorF("-nolisten string don't listen on protocol\n"); - ErrorF("-noreset don't reset after last client exists\n"); -+ ErrorF("-nr create root window with no background\n"); - ErrorF("-reset reset after last client exists\n"); - ErrorF("-p # screen-saver pattern duration (minutes)\n"); - ErrorF("-pn accept failure to listen on all ports\n"); -@@ -856,6 +857,8 @@ ProcessCommandLine(int argc, char *argv[]) - defaultBackingStore = WhenMapped; - else if ( strcmp( argv[i], "-wr") == 0) - whiteRoot = TRUE; -+ else if ( strcmp( argv[i], "-nr") == 0) -+ bgNoneRoot = TRUE; - else if ( strcmp( argv[i], "-maxbigreqsize") == 0) { - if(++i < argc) { - long reqSizeArg = atol(argv[i]); --- -1.6.6 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.5.0-projector-fb-size.patch b/pkgs/core/xorg-server/patches/xserver-1.5.0-projector-fb-size.patch deleted file mode 100644 index c6178b8..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.5.0-projector-fb-size.patch +++ /dev/null @@ -1,32 +0,0 @@ -From dc5cedd61e00afec33cbfaa7fdfbb6c357074dbd Mon Sep 17 00:00:00 2001 -From: =?utf-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= sandmann@redhat.com -Date: Thu, 11 Sep 2008 12:51:31 -0400 -Subject: [PATCH] Make room for an external monitor if we have enough video RAM - ---- - hw/xfree86/modes/xf86Crtc.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 4de7e05..9bcf81b 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -987,6 +987,15 @@ xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp, - if (crtc_height > height) - height = crtc_height; - } -+ -+ /* Make room for an external monitor if we have enough video ram */ -+ if (scrn->videoRam >= 65536) -+ width += 1920; -+ else if (scrn->videoRam >= 32768) -+ width += 1280; -+ else if (scrn->videoRam >= 16384) -+ width += 1024; -+ - if (config->maxWidth && width > config->maxWidth) width = config->maxWidth; - if (config->maxHeight && height > config->maxHeight) height = config->maxHeight; - if (config->minWidth && width < config->minWidth) width = config->minWidth; --- -1.6.0.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.5.1-mode-debug.patch b/pkgs/core/xorg-server/patches/xserver-1.5.1-mode-debug.patch deleted file mode 100644 index 11fe5ad..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.5.1-mode-debug.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 079910986a1b8f5042e16ee2ba3ad9ed843b67ca Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Tue, 7 Oct 2008 11:09:14 -0400 -Subject: [PATCH] Force ModeDebug on. - ---- - hw/xfree86/modes/xf86Crtc.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 9bcf81b..a953c8a 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -2084,8 +2084,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - xf86ProcessOptions (scrn->scrnIndex, - scrn->options, - config->options); -- config->debug_modes = xf86ReturnOptValBool (config->options, -- OPTION_MODEDEBUG, FALSE); -+ config->debug_modes = TRUE; - - if (scrn->display->virtualX) - width = scrn->display->virtualX; --- -1.6.0.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.6.0-displayfd.patch b/pkgs/core/xorg-server/patches/xserver-1.6.0-displayfd.patch deleted file mode 100644 index 09e7b49..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.6.0-displayfd.patch +++ /dev/null @@ -1,172 +0,0 @@ -From 1766352059d0db67bff3f7dd0820563a30f54858 Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Thu, 18 Jun 2009 16:56:41 +1000 -Subject: [PATCH] displayfd hack - ---- - dix/globals.c | 1 + - include/opaque.h | 1 + - os/connection.c | 72 ++++++++++++++++++++++++++++++++++++----------------- - os/utils.c | 11 ++++++++ - 4 files changed, 62 insertions(+), 23 deletions(-) - -diff --git a/dix/globals.c b/dix/globals.c -index 907a5e8..c1e64d3 100644 ---- a/dix/globals.c -+++ b/dix/globals.c -@@ -135,6 +135,7 @@ int defaultColorVisualClass = -1; - int monitorResolution = 0; - - char *display; -+int displayfd; - char *ConnectionInfo; - - CARD32 TimeOutValue = DEFAULT_TIMEOUT * MILLI_PER_SECOND; -diff --git a/include/opaque.h b/include/opaque.h -index fcc8c95..2a08e2d 100644 ---- a/include/opaque.h -+++ b/include/opaque.h -@@ -50,6 +50,7 @@ extern _X_EXPORT int ScreenSaverAllowExposures; - extern _X_EXPORT int defaultScreenSaverBlanking; - extern _X_EXPORT int defaultScreenSaverAllowExposures; - extern _X_EXPORT char *display; -+extern _X_EXPORT int displayfd; - - extern _X_EXPORT int defaultBackingStore; - extern _X_EXPORT Bool disableBackingStore; -diff --git a/os/connection.c b/os/connection.c -index 0c72b67..05d95c4 100644 ---- a/os/connection.c -+++ b/os/connection.c -@@ -146,6 +146,7 @@ Bool NewOutputPending; /* not yet attempted to write some new output */ - Bool AnyClientsWriteBlocked; /* true if some client blocked on write */ - - static Bool RunFromSmartParent; /* send SIGUSR1 to parent process */ -+static char dynamic_display[7]; - Bool PartialNetwork; /* continue even if unable to bind all addrs */ - static Pid_t ParentProcess; - -@@ -357,9 +358,23 @@ NotifyParentProcess(void) - kill (ParentProcess, SIGUSR1); - } - } -+ if (dynamic_display[0]) -+ write(displayfd, dynamic_display, strlen(dynamic_display)); - #endif - } - -+static Bool -+TryCreateSocket(int num, int *partial) -+{ -+ char port[20]; -+ -+ sprintf(port, "%d", num); -+ -+ return _XSERVTransMakeAllCOTSServerListeners(port, partial, -+ &ListenTransCount, -+ &ListenTransConns); -+} -+ - /***************** - * CreateWellKnownSockets - * At initialization, create the sockets to listen on for new clients. -@@ -370,7 +385,6 @@ CreateWellKnownSockets(void) - { - int i; - int partial; -- char port[20]; - - FD_ZERO(&AllSockets); - FD_ZERO(&AllClients); -@@ -385,32 +399,44 @@ CreateWellKnownSockets(void) - - FD_ZERO (&WellKnownConnections); - -- sprintf (port, "%d", atoi (display)); -- -- if ((_XSERVTransMakeAllCOTSServerListeners (port, &partial, -- &ListenTransCount, &ListenTransConns) >= 0) && -- (ListenTransCount >= 1)) -+ if (display) - { -- if (!PartialNetwork && partial) -- { -- FatalError ("Failed to establish all listening sockets"); -- } -- else -+ if (TryCreateSocket(atoi(display), &partial) && -+ (ListenTransCount >= 1)) -+ if (!PartialNetwork && partial) -+ FatalError ("Failed to establish all listening sockets"); -+ } -+ else /* -displayfd */ -+ { -+ Bool found = 0; -+ for (i = 0; i < 65535 - 1024; i++) - { -- ListenTransFds = xalloc (ListenTransCount * sizeof (int)); -- -- for (i = 0; i < ListenTransCount; i++) -+ if (!TryCreateSocket(i, &partial) && !partial) - { -- int fd = _XSERVTransGetConnectionNumber (ListenTransConns[i]); -- -- ListenTransFds[i] = fd; -- FD_SET (fd, &WellKnownConnections); -- -- if (!_XSERVTransIsLocal (ListenTransConns[i])) -- { -- DefineSelf (fd); -- } -+ found = 1; -+ break; - } -+ else -+ CloseWellKnownConnections(); -+ } -+ if (!found) -+ FatalError("Failed to find a socket to listen on"); -+ sprintf(dynamic_display, "%d\n", i); -+ display = dynamic_display; -+ } -+ -+ ListenTransFds = xalloc (ListenTransCount * sizeof (int)); -+ -+ for (i = 0; i < ListenTransCount; i++) -+ { -+ int fd = _XSERVTransGetConnectionNumber (ListenTransConns[i]); -+ -+ ListenTransFds[i] = fd; -+ FD_SET (fd, &WellKnownConnections); -+ -+ if (!_XSERVTransIsLocal (ListenTransConns[i])) -+ { -+ DefineSelf (fd); - } - } - -diff --git a/os/utils.c b/os/utils.c -index 7bfdf8b..37a93b1 100644 ---- a/os/utils.c -+++ b/os/utils.c -@@ -678,6 +678,17 @@ ProcessCommandLine(int argc, char *argv[]) - else - UseMsg(); - } -+ else if (strcmp(argv[i], "-displayfd") == 0) -+ { -+ if (++i < argc) -+ { -+ displayfd = atoi(argv[i]); -+ display = NULL; -+ nolock = TRUE; -+ } -+ else -+ UseMsg(); -+ } - #ifdef DPMSExtension - else if ( strcmp( argv[i], "dpms") == 0) - /* ignored for compatibility */ ; --- -1.6.3.rc1.2.g0164.dirty - diff --git a/pkgs/core/xorg-server/patches/xserver-1.6.0-less-acpi-brokenness.patch b/pkgs/core/xorg-server/patches/xserver-1.6.0-less-acpi-brokenness.patch deleted file mode 100644 index cc80e6c..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.6.0-less-acpi-brokenness.patch +++ /dev/null @@ -1,31 +0,0 @@ -From a8079882f1884edc62a9de28af915bd8b65dfbbe Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Wed, 11 Mar 2009 14:02:11 -0400 -Subject: [PATCH] Don't build the ACPI code. - -No good can come of this. ---- - configure.ac | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 72ae67e..04716f8 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1269,13 +1269,11 @@ if test "x$XORG" = xyes; then - case $host_cpu in - ia64*) - linux_ia64=yes -- linux_acpi="yes" - ;; - alpha*) - linux_alpha=yes - ;; - i*86|amd64*|x86_64*) -- linux_acpi="yes" - ;; - *) - ;; --- -1.6.1.3 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.6.1-nouveau.patch b/pkgs/core/xorg-server/patches/xserver-1.6.1-nouveau.patch deleted file mode 100644 index 35a1ff9..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.6.1-nouveau.patch +++ /dev/null @@ -1,109 +0,0 @@ -From a685b5cf34532cef96fc9b05f735088ac0c0c7ad Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas x@fedoraproject.org -Date: Tue, 16 Feb 2010 11:38:17 +1000 -Subject: [PATCH 08/17] autoconfig: select nouveau by default for NVIDIA GPUs - -Also, don't treat DRI setup failure as an error for nouveau. ---- - glx/glxdri.c | 7 +++++-- - glx/glxdri2.c | 7 +++++-- - hw/xfree86/common/xf86AutoConfig.c | 19 ++++++++++++++++++- - 3 files changed, 28 insertions(+), 5 deletions(-) - -diff --git a/glx/glxdri.c b/glx/glxdri.c -index 21e44d1..30b820c 100644 ---- a/glx/glxdri.c -+++ b/glx/glxdri.c -@@ -968,6 +968,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) - const __DRIconfig **driConfigs; - const __DRIextension **extensions; - int i; -+ int from = X_ERROR; - - if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") || - !DRIQueryDirectRenderingCapable(pScreen, &isCapable) || -@@ -1047,7 +1048,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) - - screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); - if (screen->driver == NULL) { -- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", -+ if (!strcmp(driverName, "nouveau")) -+ from = X_INFO; -+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", - filename, dlerror()); - goto handle_error; - } -@@ -1184,7 +1187,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) - - xfree(screen); - -- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); -+ LogMessage(from, "AIGLX: reverting to software rendering\n"); - - return NULL; - } -diff --git a/glx/glxdri2.c b/glx/glxdri2.c -index 0f998de..a244809 100644 ---- a/glx/glxdri2.c -+++ b/glx/glxdri2.c -@@ -676,6 +676,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) - const __DRIextension **extensions; - const __DRIconfig **driConfigs; - int i; -+ int from = X_ERROR; - - screen = xcalloc(1, sizeof *screen); - if (screen == NULL) -@@ -702,7 +703,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) - - screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); - if (screen->driver == NULL) { -- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", -+ if (!strcmp(driverName, "nouveau")) -+ from = X_INFO; -+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", - filename, dlerror()); - goto handle_error; - } -@@ -793,7 +796,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) - - xfree(screen); - -- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); -+ LogMessage(from, "AIGLX: reverting to software rendering\n"); - - return NULL; - } -diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c -index 7f4ada8..d964c6c 100644 ---- a/hw/xfree86/common/xf86AutoConfig.c -+++ b/hw/xfree86/common/xf86AutoConfig.c -@@ -192,7 +192,24 @@ videoPtrToDriverList(struct pci_device *dev, - break; - case 0x102b: driverList[0] = "mga"; break; - case 0x10c8: driverList[0] = "neomagic"; break; -- case 0x10de: case 0x12d2: driverList[0] = "nv"; break; -+ case 0x10de: case 0x12d2: -+ switch (dev->device_id) { -+ /* NV1 */ -+ case 0x0008: -+ case 0x0009: -+ driverList[0] = "vesa"; -+ break; -+ /* NV3 */ -+ case 0x0018: -+ case 0x0019: -+ driverList[0] = "nv"; -+ break; -+ default: -+ driverList[0] = "nouveau"; -+ driverList[1] = "nv"; -+ break; -+ } -+ break; - case 0x1106: driverList[0] = "openchrome"; break; - case 0x1b36: driverList[0] = "qxl"; break; - case 0x1163: driverList[0] = "rendition"; break; --- -1.6.5.2 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.6.99-default-modes.patch b/pkgs/core/xorg-server/patches/xserver-1.6.99-default-modes.patch deleted file mode 100644 index 0f0ba27..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.6.99-default-modes.patch +++ /dev/null @@ -1,35 +0,0 @@ -From ca85ebddd804305322014c6a71b4122a56c5e634 Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Thu, 4 Mar 2010 15:18:38 +1000 -Subject: [PATCH] tweak default mode list yet again - ---- - hw/xfree86/modes/xf86Crtc.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 03277be..571ffd0 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -1582,7 +1582,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) - int min_clock = 0; - int max_clock = 0; - double clock; -- Bool add_default_modes = TRUE; -+ Bool add_default_modes; - Bool debug_modes = config->debug_modes || - xf86Initialising; - enum det_monrec_source sync_source = sync_default; -@@ -1628,6 +1628,9 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) - } - - output_modes = (*output->funcs->get_modes) (output); -+ -+ /* if the driver found modes, don't second-guess it */ -+ add_default_modes = (output_modes == NULL); - - edid_monitor = output->MonInfo; - --- -1.6.6.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.6.99-randr-error-debugging.patch b/pkgs/core/xorg-server/patches/xserver-1.6.99-randr-error-debugging.patch deleted file mode 100644 index 0e7a6ba..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.6.99-randr-error-debugging.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 16be69ef1e2ea9f19cd596b99b5ede7567d374b8 Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Mon, 27 Jul 2009 16:52:42 -0400 -Subject: [PATCH 11/16] additional randr debugging - ---- - randr/randr.c | 16 +++++++++++++++- - 1 files changed, 15 insertions(+), 1 deletions(-) - -diff --git a/randr/randr.c b/randr/randr.c -index 1c1d0c4..accf614 100644 ---- a/randr/randr.c -+++ b/randr/randr.c -@@ -477,10 +477,24 @@ RRVerticalRefresh (xRRModeInfo *mode) - static int - ProcRRDispatch (ClientPtr client) - { -+ int ret; - REQUEST(xReq); - if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data]) - return BadRequest; -- return (*ProcRandrVector[stuff->data]) (client); -+ ret = ProcRandrVector[stuff->data](client); -+ -+ if (ret) { -+ int i; -+ ErrorF("RANDR failure: %d (extension base %d)\n", ret, RRErrorBase); -+ for (i = 0; i < stuff->length; i++) { -+ ErrorF("%08x ", ((unsigned int *)stuff) + i); -+ if ((i+1) % 4 == 0) -+ ErrorF("\n"); -+ } -+ ErrorF("\n"); -+ } -+ -+ return ret; - } - - static int --- -1.6.4.2 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.6.99-right-of.patch b/pkgs/core/xorg-server/patches/xserver-1.6.99-right-of.patch deleted file mode 100644 index 06c1183..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.6.99-right-of.patch +++ /dev/null @@ -1,172 +0,0 @@ -From 1766ae8a69daa06730e41d094fdddf53db3a1a9e Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Tue, 28 Jul 2009 11:07:13 -0400 -Subject: [PATCH] RANDR: right-of placement by default - -[Enhanced to add a new prefer clone option for drivers. This -allows for servers like RN50 where two heads are disjoint. - airlied] - -[Enhanced to ignore rightof on single crtc cards - airlied] ---- - hw/xfree86/common/xf86str.h | 9 ++++- - hw/xfree86/modes/xf86Crtc.c | 77 +++++++++++++++++++++++++++++++++++++++---- - 2 files changed, 77 insertions(+), 9 deletions(-) - -diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h -index 5c3aa00..8224668 100644 ---- a/hw/xfree86/common/xf86str.h -+++ b/hw/xfree86/common/xf86str.h -@@ -503,10 +503,13 @@ typedef struct _confdrirec { - } confDRIRec, *confDRIPtr; - - /* These values should be adjusted when new fields are added to ScrnInfoRec */ --#define NUM_RESERVED_INTS 15 -+#define NUM_RESERVED_INTS 14 - #define NUM_RESERVED_POINTERS 14 - #define NUM_RESERVED_FUNCS 11 - -+/* let clients know they can use this */ -+#define XF86_SCRN_HAS_PREFER_CLONE 1 -+ - typedef pointer (*funcPointer)(void); - - /* flags for depth 24 pixmap options */ -@@ -672,7 +675,6 @@ typedef void xf86SetOverscanProc (ScrnInfoPtr, int); - * are to be dependent on compile-time defines. - */ - -- - typedef struct _ScrnInfoRec { - int driverVersion; - char * driverName; /* canonical name used in */ -@@ -778,6 +780,9 @@ typedef struct _ScrnInfoRec { - /* -nr support */ - int canDoBGNoneRoot; - -+ /* initial rightof support disable */ -+ int preferClone; -+ - /* - * These can be used when the minor ABI version is incremented. - * The NUM_* parameters must be reduced appropriately to keep the -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index a66c979..4d14f57 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -1146,6 +1146,15 @@ xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes) - int o; - int min_x, min_y; - -+ /* check for initial right-of heuristic */ -+ for (o = 0; o < config->num_output; o++) -+ { -+ xf86OutputPtr output = config->output[o]; -+ -+ if (output->initial_x || output->initial_y) -+ return TRUE; -+ } -+ - for (o = 0; o < config->num_output; o++) - { - xf86OutputPtr output = config->output[o]; -@@ -2028,6 +2037,60 @@ bestModeForAspect(xf86CrtcConfigPtr config, Bool *enabled, float aspect) - return match; - } - -+static int -+numEnabledOutputs(xf86CrtcConfigPtr config, Bool *enabled) -+{ -+ int i = 0, p; -+ -+ for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++) ; -+ -+ return i; -+} -+ -+static Bool -+xf86TargetRightOf(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, -+ DisplayModePtr *modes, Bool *enabled, -+ int width, int height) -+{ -+ int o; -+ int w = 0; -+ -+ if (config->num_crtc == 1) -+ return FALSE; -+ -+ if (scrn->preferClone) -+ return FALSE; -+ -+ if (numEnabledOutputs(config, enabled) < 2) -+ return FALSE; -+ -+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) { -+ DisplayModePtr mode = -+ xf86OutputHasPreferredMode(config->output[o], width, height); -+ -+ if (!mode) -+ return FALSE; -+ -+ w += mode->HDisplay; -+ } -+ -+ if (w > width) -+ return FALSE; -+ -+ w = 0; -+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) { -+ DisplayModePtr mode = -+ xf86OutputHasPreferredMode(config->output[o], width, height); -+ -+ config->output[o]->initial_x = w; -+ w += mode->HDisplay; -+ -+ modes[o] = mode; -+ } -+ -+ return TRUE; -+} -+ - static Bool - xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - DisplayModePtr *modes, Bool *enabled, -@@ -2085,13 +2148,9 @@ xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - * biggest mode for its aspect ratio, assuming one exists. - */ - if (!ret) do { -- int i = 0; - float aspect = 0.0; - -- /* count the number of enabled outputs */ -- for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++) ; -- -- if (i != 1) -+ if (numEnabledOutputs(config, enabled) != 1) - break; - - p = -1; -@@ -2378,6 +2437,8 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - - if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) - xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); -+ else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); - else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) - xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); - else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -@@ -2394,8 +2455,10 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - config->output[o]->name); - else - xf86DrvMsg (scrn->scrnIndex, X_INFO, -- "Output %s using initial mode %s\n", -- config->output[o]->name, modes[o]->name); -+ "Output %s using initial mode %s +%d+%d\n", -+ config->output[o]->name, modes[o]->name, -+ config->output[o]->initial_x, -+ config->output[o]->initial_y); - } - - /* --- -1.7.0.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.7.0-randr-gamma-restore.patch b/pkgs/core/xorg-server/patches/xserver-1.7.0-randr-gamma-restore.patch deleted file mode 100644 index 5206141..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.7.0-randr-gamma-restore.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 18d2bd8cb513a0436739916620532247f13dbf03 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas x@fedoraproject.org -Date: Thu, 8 Oct 2009 15:25:24 -0400 -Subject: [PATCH] randr gamma reload hack - ---- - hw/xfree86/loader/sdksyms.c | 4 ++++ - hw/xfree86/modes/xf86RandR12.c | 6 ++++++ - 2 files changed, 10 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c -index 6ea9d26..41bac11 100644 ---- a/hw/xfree86/modes/xf86RandR12.c -+++ b/hw/xfree86/modes/xf86RandR12.c -@@ -1746,12 +1746,18 @@ xf86RandR12EnterVT (int screen_index, int flags) - { - ScreenPtr pScreen = screenInfo.screens[screen_index]; - XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); -+ rrScrPrivPtr rp = rrGetScrPriv(pScreen); - - if (randrp->orig_EnterVT) { - if (!randrp->orig_EnterVT (screen_index, flags)) - return FALSE; - } - -+ /* reload gamma */ -+ int i; -+ for (i = 0; i < rp->numCrtcs; i++) -+ xf86RandR12CrtcSetGamma(pScreen, rp->crtcs[i]); -+ - return RRGetInfo (pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */ - } - --- -1.6.5.rc2 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.7.1-gamma-kdm-fix.patch b/pkgs/core/xorg-server/patches/xserver-1.7.1-gamma-kdm-fix.patch deleted file mode 100644 index c62837e..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.7.1-gamma-kdm-fix.patch +++ /dev/null @@ -1,34 +0,0 @@ -From acc64ce5be7383c09e88a23aab06ebc2403f2ca3 Mon Sep 17 00:00:00 2001 -From: Bill Nottingham notting@redhat.com -Date: Fri, 6 Nov 2009 10:32:27 +1000 -Subject: [PATCH] fix KDM gamma issue on vt switch - ---- - hw/xfree86/modes/xf86RandR12.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c -index 6ea9d26..ece12b9 100644 ---- a/hw/xfree86/modes/xf86RandR12.c -+++ b/hw/xfree86/modes/xf86RandR12.c -@@ -1761,6 +1761,7 @@ xf86RandR12Init12 (ScreenPtr pScreen) - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - rrScrPrivPtr rp = rrGetScrPriv(pScreen); - XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); -+ int i; - - rp->rrGetInfo = xf86RandR12GetInfo12; - rp->rrScreenSetSize = xf86RandR12ScreenSetSize; -@@ -1790,6 +1791,9 @@ xf86RandR12Init12 (ScreenPtr pScreen) - */ - if (!xf86RandR12SetInfo12 (pScreen)) - return FALSE; -+ for (i = 0; i < rp->numCrtcs; i++) { -+ xf86RandR12CrtcGetGamma(pScreen, rp->crtcs[i]); -+ } - return TRUE; - } - --- -1.6.5.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.7.1-multilib.patch b/pkgs/core/xorg-server/patches/xserver-1.7.1-multilib.patch deleted file mode 100644 index 6435999..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.7.1-multilib.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 6d9585ba6a5784328de479c6b648d7b7d6cec64c Mon Sep 17 00:00:00 2001 -From: Adam Jackson ajax@redhat.com -Date: Thu, 29 Oct 2009 19:04:10 -0400 -Subject: [PATCH] multilib fix for -devel subpackage - ---- - include/colormapst.h | 4 ++-- - include/xorg-server.h.in | 7 ++++--- - 2 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/include/colormapst.h b/include/colormapst.h -index f1fc8eb..274cd65 100644 ---- a/include/colormapst.h -+++ b/include/colormapst.h -@@ -103,12 +103,12 @@ typedef struct _ColormapRec - { - VisualPtr pVisual; - short class; /* PseudoColor or DirectColor */ --#if defined(_XSERVER64) -+#ifdef __LP64__ - short pad0; - XID pad1; - #endif - XID mid; /* client's name for colormap */ --#if defined(_XSERVER64) && (X_BYTE_ORDER == X_LITTLE_ENDIAN) -+#if defined(__LP64__) && (X_BYTE_ORDER == X_LITTLE_ENDIAN) - XID pad2; - #endif - ScreenPtr pScreen; /* screen map is associated with */ -diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in -index 76cab16..081b8f3 100644 ---- a/include/xorg-server.h.in -+++ b/include/xorg-server.h.in -@@ -157,9 +157,6 @@ - /* Name of X server */ - #undef __XSERVERNAME__ - --/* Define to 1 if unsigned long is 64 bits. */ --#undef _XSERVER64 -- - /* Building vgahw module */ - #undef WITH_VGAHW - -@@ -187,4 +184,8 @@ - /* X Access Control Extension */ - #undef XACE - -+#ifdef __LP64__ -+#define _XSERVER64 1 -+#endif -+ - #endif /* _XORG_SERVER_H_ */ --- -1.6.5.2 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.8-disable-vboxvideo.patch b/pkgs/core/xorg-server/patches/xserver-1.8-disable-vboxvideo.patch deleted file mode 100644 index 60c0dce..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.8-disable-vboxvideo.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1f315578bf759c85261b1f2295efbf0dba852f73 Mon Sep 17 00:00:00 2001 -From: Adam Williamson adamwill@shaw.ca -Date: Thu, 25 Feb 2010 10:34:49 -0800 -Subject: [PATCH] disable vboxvideo driver in autodetect code - ---- - hw/xfree86/common/xf86AutoConfig.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c -index 7f4ada8..4e944ea 100644 ---- a/hw/xfree86/common/xf86AutoConfig.c -+++ b/hw/xfree86/common/xf86AutoConfig.c -@@ -220,7 +220,7 @@ videoPtrToDriverList(struct pci_device *dev, - case 0x1011: driverList[0] = "tga"; break; - case 0x1023: driverList[0] = "trident"; break; - case 0x100c: driverList[0] = "tseng"; break; -- case 0x80ee: driverList[0] = "vboxvideo"; break; -+ case 0x80ee: driverList[0] = "vesa"; break; - case 0x15ad: driverList[0] = "vmware"; break; - case 0x18ca: - if (dev->device_id == 0x47) --- -1.7.0 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.8-no-connected-outputs.patch b/pkgs/core/xorg-server/patches/xserver-1.8-no-connected-outputs.patch deleted file mode 100644 index 3ee8542..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.8-no-connected-outputs.patch +++ /dev/null @@ -1,142 +0,0 @@ -From b27f93c6dbe0a6e416db2c65738e996c70a403c1 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas airlied@redhat.com -Date: Thu, 6 May 2010 12:55:34 +1000 -Subject: [PATCH] xf86: allow for no outputs connected at startup operation. - -When nothing is connected at startup and we canGrow, allow the server to start with a 1024x768 framebuffer, and when the drivers send hotplug events this will expand to the correct size dynamically. - -Signed-off-by: Dave Airlie airlied@redhat.com ---- - hw/xfree86/modes/xf86Crtc.c | 66 ++++++++++++++++++++++++++++++------------ - 1 files changed, 47 insertions(+), 19 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 571ffd0..99082ec 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -48,6 +48,8 @@ - - #include "xf86xv.h" - -+#define NO_OUTPUT_DEFAULT_WIDTH 1024 -+#define NO_OUTPUT_DEFAULT_HEIGHT 768 - /* - * Initialize xf86CrtcConfig structure - */ -@@ -1946,7 +1948,7 @@ xf86SetScrnInfoModes (ScrnInfoPtr scrn) - #endif - } - --static void -+static Bool - xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - Bool *enabled) - { -@@ -1961,8 +1963,10 @@ xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - "No outputs definitely connected, trying again...\n"); - - for (o = 0; o < config->num_output; o++) -- enabled[o] = xf86OutputEnabled(config->output[o], FALSE); -+ any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], FALSE); - } -+ -+ return any_enabled; - } - - static Bool -@@ -2409,6 +2413,8 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - Bool *enabled; - int width, height; - int i = scrn->scrnIndex; -+ Bool have_outputs = TRUE; -+ Bool ret; - - /* Set up the device options */ - config->options = xnfalloc (sizeof (xf86DeviceOptions)); -@@ -2433,20 +2439,26 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - modes = xnfcalloc (config->num_output, sizeof (DisplayModePtr)); - enabled = xnfcalloc (config->num_output, sizeof (Bool)); - -- xf86CollectEnabledOutputs(scrn, config, enabled); -- -- if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); -- else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); -- else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); -- else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); -- else if (xf86TargetFallback(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n"); -- else -- xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n"); -+ ret = xf86CollectEnabledOutputs(scrn, config, enabled); -+ if (ret == FALSE && canGrow) { -+ xf86DrvMsg(i, X_WARNING, "Unable to find connected outputs - setting %dx%d initial framebuffer\n", -+ NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT); -+ have_outputs = FALSE; -+ } -+ else { -+ if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); -+ else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); -+ else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); -+ else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); -+ else if (xf86TargetFallback(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n"); -+ else -+ xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n"); -+ } - - for (o = -1; nextEnabledOutput(config, enabled, &o); ) { - if (!modes[o]) -@@ -2479,7 +2491,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - /* - * Assign CRTCs to fit output configuration - */ -- if (!xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) -+ if (have_outputs && !xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) - { - xfree (crtcs); - xfree (modes); -@@ -2541,6 +2553,13 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - */ - xf86DefaultScreenLimits (scrn, &width, &height, canGrow); - -+ if (have_outputs == FALSE) { -+ if (width < NO_OUTPUT_DEFAULT_WIDTH && height < NO_OUTPUT_DEFAULT_HEIGHT) { -+ width = NO_OUTPUT_DEFAULT_WIDTH; -+ height = NO_OUTPUT_DEFAULT_HEIGHT; -+ } -+ } -+ - scrn->display->virtualX = width; - scrn->display->virtualY = height; - } -@@ -2566,8 +2585,17 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - width, height); - } - -- /* Mirror output modes to scrn mode list */ -- xf86SetScrnInfoModes (scrn); -+ if (have_outputs) { -+ /* Mirror output modes to scrn mode list */ -+ xf86SetScrnInfoModes (scrn); -+ } else { -+ /* Clear any existing modes from scrn->modes */ -+ while (scrn->modes != NULL) -+ xf86DeleteMode(&scrn->modes, scrn->modes); -+ scrn->modes = xf86ModesAdd(scrn->modes, -+ xf86CVTMode(width, height, 60, 0, 0)); -+ } -+ - - xfree (crtcs); - xfree (modes); --- -1.7.0.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.8-randr-initial.patch b/pkgs/core/xorg-server/patches/xserver-1.8-randr-initial.patch deleted file mode 100644 index 2db8a8c..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.8-randr-initial.patch +++ /dev/null @@ -1,35 +0,0 @@ -From f22b6f8a5899f125de63738e69aaddc2dd0a5d0a Mon Sep 17 00:00:00 2001 -From: Ben Skeggs bskeggs@redhat.com -Date: Mon, 7 Jun 2010 10:10:10 +1000 -Subject: [PATCH] randr: prevent an unnecessary screen resize with multiple displays - -crtc->{x,y} is always 0 when xf86DefaultScreenLimits() is called, so we -calculate too small an area for the initial framebuffer and force a resize -to happen. - -This commit fixes the code to use desired{X,Y} instead, which contains the -initial output positions. - -Signed-off-by: Ben Skeggs bskeggs@redhat.com ---- - hw/xfree86/modes/xf86Crtc.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 51e7b5a..c2ad7bc 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -1041,8 +1041,8 @@ xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp, - - if (crtc->enabled) - { -- crtc_width = crtc->x + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation); -- crtc_height = crtc->y + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation); -+ crtc_width = crtc->desiredX + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation); -+ crtc_height = crtc->desiredY + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation); - } - if (!canGrow) { - for (o = 0; o < config->num_output; o++) --- -1.6.6 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.8-udev-warning.patch b/pkgs/core/xorg-server/patches/xserver-1.8-udev-warning.patch deleted file mode 100644 index 93071fd..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.8-udev-warning.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 57a188877b0472edb12bdf707b1550abbeb85af8 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas x@fedoraproject.org -Date: Wed, 17 Feb 2010 11:12:36 +1000 -Subject: [PATCH] Stick giant warning into logfiles about udev configuration changes. - -Signed-off-by: Fedora X Ninjas x@fedoraproject.org ---- - hw/xfree86/common/xf86Config.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c -index 132e8bc..b1722cd 100644 ---- a/hw/xfree86/common/xf86Config.c -+++ b/hw/xfree86/common/xf86Config.c -@@ -1472,6 +1472,19 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) - "input devices.\n\tIf no devices become available, " - "reconfigure %s or disable AutoAddDevices.\n", - config_backend, config_backend); -+ -+ xf86Msg(X_INFO, "\n" -+ "***************************************************************\n" -+ "***************************************************************\n" -+ "** Fedora switched to udev-based device detection with **\n" -+ "** xorg-x11-server-1.7.99.901-1. Custom HAL configuration **\n" -+ "** stored in /etc/hal/fdi/policy will not be seen by this **\n" -+ "** server version. If you have such configuration you will **\n" -+ "** need to update it to the new format. **\n" -+ "** For more information, see the Fedora wiki page **\n" -+ "** https://fedoraproject.org/wiki/Input_device_configuration **\n" -+ "***************************************************************\n" -+ "***************************************************************\n"); - #else - xf86Msg(X_INFO, "Hotplugging is disabled and no input devices were configured.\n" - "\tTry disabling AllowEmptyInput.\n"); --- -1.6.6.1 - diff --git a/pkgs/core/xorg-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch b/pkgs/core/xorg-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch deleted file mode 100644 index ece8a6c..0000000 --- a/pkgs/core/xorg-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch +++ /dev/null @@ -1,909 +0,0 @@ -From deab888bb3bb2a56963da50ff551bd66fbd858a1 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer peter.hutterer@who-t.net -Date: Tue, 29 Jun 2010 13:49:27 +1000 -Subject: [PATCH 1/5] xkb: Mark switch case fallthrough with comment. - -Signed-off-by: Peter Hutterer peter.hutterer@who-t.net ---- - xkb/xkbActions.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 4c7bce2..6a7f36d 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -625,6 +625,8 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - break; - } - xkbi->lockedPtrButtons&= ~(1<<button); -+ -+ /* fallthrough */ - case XkbSA_PtrBtn: - XkbDDXFakeDeviceButton(xkbi->device, 0, button); - break; --- -1.7.1 - -From 50b6311dbd2594acc36d6856fdde8623459f1374 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer peter.hutterer@who-t.net -Date: Tue, 29 Jun 2010 12:12:53 +1000 -Subject: [PATCH 2/5] xkb: merge lockedPtrButtons state from all attached SDs. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Problem: -lockedPtrButtons keeps the state of the buttons locked by a PointerKeys button -press. Unconditionally clearing the bits may cause stuck buttons in this -sequence of events: - -1. type Shift + NumLock to enable PointerKeys -2. type 0/Ins on keypad to emulate Button 1 press - → button1 press event to client -3. press and release button 1 on physical mouse - → button1 release event to client - -Button 1 on the MD is now stuck and cannot be released. - -Cause: -XKB PointerKeys button events are posted through the XTEST pointer device. -Once a press is generated, the XTEST device's button is down. The DIX merges -the button state of all attached SDs, hence the MD will have a button down -while the XTEST device has a button down. - -PointerKey button events are only generated on the master device to avoid -duplicate events (see XkbFakeDeviceButton()). If the MD has the -lockedPtrButtons bit cleared by a release event on a physical device, no -such event is generated when a keyboard device triggers the PointerKey -ButtonRelease trigger. Since the event - if generated - is posted through -the XTEST pointer device, lack of a generated ButtonRelease event on the -XTEST pointer device means the button is never released, resulting in the -stuck button observed above. - -Solution: -This patch merges the MD's lockedPtrButtons with the one of all attached -slave devices on release events. Thus, as long as one attached keyboard has -a lockedPtrButtons bit set, this bit is kept in the MD. Once a PointerKey -button is released on all keyboards, the matching release event is emulated -from the MD through the XTEST pointer device, thus also releasing the button -in the DIX. - -Signed-off-by: Peter Hutterer peter.hutterer@who-t.net ---- - include/xkbsrv.h | 3 +++ - xkb/xkbAccessX.c | 18 +++++++++++++++++- - xkb/xkbActions.c | 8 ++++++++ - xkb/xkbUtils.c | 26 ++++++++++++++++++++++++++ - 4 files changed, 54 insertions(+), 1 deletions(-) - -diff --git a/include/xkbsrv.h b/include/xkbsrv.h -index c0cd501..f0db0e4 100644 ---- a/include/xkbsrv.h -+++ b/include/xkbsrv.h -@@ -933,6 +933,9 @@ extern int XkbGetEffectiveGroup( - XkbStatePtr /* xkbstate */, - CARD8 /* keycode */); - -+extern void XkbMergeLockedPtrBtns( -+ DeviceIntPtr /* master */); -+ - #include "xkbfile.h" - #include "xkbrules.h" - -diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c -index be1dcee..e3fdc06 100644 ---- a/xkb/xkbAccessX.c -+++ b/xkb/xkbAccessX.c -@@ -707,8 +707,24 @@ DeviceEvent *event = &ev->device_event; - changed |= XkbPointerButtonMask; - } - else if (event->type == ET_ButtonRelease) { -- if (xkbi) -+ if (xkbi) { - xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7)); -+ -+ /* Merge this MD's lockedPtrButtons with the one of all -+ * attached slave devices. -+ * The DIX uses a merged button state for MDs, not -+ * releasing buttons until the last SD has released -+ * thenm. If we unconditionally clear the -+ * lockedPtrButtons bit on the MD, a PointerKeys button -+ * release on the SD keyboard won't generate the required fake button -+ * event on the XTEST pointer, thus never processing the -+ * button event in the DIX and the XTEST pointer's -+ * buttons stay down - result is a stuck button. -+ */ -+ if (IsMaster(dev)) -+ XkbMergeLockedPtrBtns(dev); -+ } -+ - changed |= XkbPointerButtonMask; - } - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 6a7f36d..ab52b6a 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -626,6 +626,14 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - } - xkbi->lockedPtrButtons&= ~(1<<button); - -+ if (IsMaster(xkbi->device)) -+ { -+ XkbMergeLockedPtrBtns(xkbi->device); -+ /* One SD still has lock set, don't post event */ -+ if ((xkbi->lockedPtrButtons & (1 << button)) != 0) -+ break; -+ } -+ - /* fallthrough */ - case XkbSA_PtrBtn: - XkbDDXFakeDeviceButton(xkbi->device, 0, button); -diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c -index b1e0e55..d7d1935 100644 ---- a/xkb/xkbUtils.c -+++ b/xkb/xkbUtils.c -@@ -2190,3 +2190,29 @@ XkbGetEffectiveGroup(XkbSrvInfoPtr xkbi, XkbStatePtr xkbState, CARD8 keycode) - - return effectiveGroup; - } -+ -+/* Merge the lockedPtrButtons from all attached SDs for the given master -+ * device into the MD's state. -+ */ -+void -+XkbMergeLockedPtrBtns(DeviceIntPtr master) -+{ -+ DeviceIntPtr d = inputInfo.devices; -+ XkbSrvInfoPtr xkbi = NULL; -+ -+ if (!IsMaster(master)) -+ return; -+ -+ if (!master->key) -+ return; -+ -+ xkbi = master->key->xkbInfo; -+ xkbi->lockedPtrButtons = 0; -+ -+ for (; d; d = d->next) { -+ if (IsMaster(d) || GetMaster(d, MASTER_KEYBOARD) != master || !d->key) -+ continue; -+ -+ xkbi->lockedPtrButtons |= d->key->xkbInfo->lockedPtrButtons; -+ } -+} --- -1.7.1 - -From 4a4224f5d786035af88c251a9ee177217e8f77fd Mon Sep 17 00:00:00 2001 -From: Peter Hutterer peter.hutterer@who-t.net -Date: Wed, 14 Apr 2010 10:54:29 +1000 -Subject: [PATCH 3/5] xkb: rename XkbFakeDeviceButton and XkbFakeDeviceMotion, move into xkbActions.c - -The name XkbDDXFakeDeviceButton and XkbDDXFakeDeviceMotion is somewhat -misleading, there's no DDX involved in the game at all anymore. - -This removes XkbFakeDeviceMotion and XkbFakeDeviceButton from the API where -it arguably shouldn't have been in the first place. - -Signed-off-by: Peter Hutterer peter.hutterer@who-t.net -Reviewed-by: Daniel Stone daniel@fooishbar.org -Reviewed-by: Dan Nicholson dbn.lists@gmail.com ---- - include/xkbsrv.h | 13 ------- - xkb/Makefile.am | 4 +-- - xkb/ddxDevBtn.c | 69 -------------------------------------- - xkb/ddxFakeMtn.c | 64 ----------------------------------- - xkb/xkbActions.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++------- - 5 files changed, 85 insertions(+), 162 deletions(-) - delete mode 100644 xkb/ddxDevBtn.c - delete mode 100644 xkb/ddxFakeMtn.c - -diff --git a/include/xkbsrv.h b/include/xkbsrv.h -index f0db0e4..d1cbd1a 100644 ---- a/include/xkbsrv.h -+++ b/include/xkbsrv.h -@@ -768,19 +768,6 @@ extern _X_EXPORT void XkbDDXUpdateDeviceIndicators( - CARD32 /* newState */ - ); - --extern _X_EXPORT void XkbDDXFakePointerMotion( -- DeviceIntPtr /* dev */, -- unsigned int /* flags */, -- int /* x */, -- int /* y */ --); -- --extern _X_EXPORT void XkbDDXFakeDeviceButton( -- DeviceIntPtr /* dev */, -- Bool /* press */, -- int /* button */ --); -- - extern _X_EXPORT int XkbDDXTerminateServer( - DeviceIntPtr /* dev */, - KeyCode /* key */, -diff --git a/xkb/Makefile.am b/xkb/Makefile.am -index e54ce59..fb3ccbf 100644 ---- a/xkb/Makefile.am -+++ b/xkb/Makefile.am -@@ -5,11 +5,9 @@ AM_CFLAGS = $(DIX_CFLAGS) - DDX_SRCS = \ - ddxBeep.c \ - ddxCtrls.c \ -- ddxFakeMtn.c \ - ddxLEDs.c \ - ddxLoad.c \ -- ddxList.c \ -- ddxDevBtn.c -+ ddxList.c - - DIX_SRCS = \ - xkb.c \ -diff --git a/xkb/ddxDevBtn.c b/xkb/ddxDevBtn.c -deleted file mode 100644 -index b8a1255..0000000 ---- a/xkb/ddxDevBtn.c -+++ /dev/null -@@ -1,69 +0,0 @@ --/************************************************************ --Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc. -- --Permission to use, copy, modify, and distribute this --software and its documentation for any purpose and without --fee is hereby granted, provided that the above copyright --notice appear in all copies and that both that copyright --notice and this permission notice appear in supporting --documentation, and that the name of Silicon Graphics not be --used in advertising or publicity pertaining to distribution --of the software without specific prior written permission. --Silicon Graphics makes no representation about the suitability --of this software for any purpose. It is provided "as is" --without any express or implied warranty. -- --SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY --AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL --DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, --DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE --OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH --THE USE OR PERFORMANCE OF THIS SOFTWARE. -- --********************************************************/ -- --#ifdef HAVE_DIX_CONFIG_H --#include <dix-config.h> --#endif -- --#include "inputstr.h" --#include <xkbsrv.h> --#include "mi.h" -- --void --XkbDDXFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) --{ -- EventListPtr events; -- int nevents, i; -- DeviceIntPtr ptr; -- -- /* If dev is a slave device, and the SD is attached, do nothing. If we'd -- * post through the attached master pointer we'd get duplicate events. -- * -- * if dev is a master keyboard, post through the XTEST device -- * -- * if dev is a floating slave, post through the device itself. -- */ -- -- if (IsMaster(dev)) -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -- else if (!dev->u.master) -- ptr = dev; -- else -- return; -- -- events = InitEventList(GetMaximumEventsNum()); -- OsBlockSignals(); -- nevents = GetPointerEvents(events, ptr, -- press ? ButtonPress : ButtonRelease, button, -- 0 /* flags */, 0 /* first */, -- 0 /* num_val */, NULL); -- OsReleaseSignals(); -- -- for (i = 0; i < nevents; i++) -- mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -- -- FreeEventList(events, GetMaximumEventsNum()); --} -diff --git a/xkb/ddxFakeMtn.c b/xkb/ddxFakeMtn.c -deleted file mode 100644 -index b383716..0000000 ---- a/xkb/ddxFakeMtn.c -+++ /dev/null -@@ -1,64 +0,0 @@ --/************************************************************ --Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. -- --Permission to use, copy, modify, and distribute this --software and its documentation for any purpose and without --fee is hereby granted, provided that the above copyright --notice appear in all copies and that both that copyright --notice and this permission notice appear in supporting --documentation, and that the name of Silicon Graphics not be --used in advertising or publicity pertaining to distribution --of the software without specific prior written permission. --Silicon Graphics makes no representation about the suitability --of this software for any purpose. It is provided "as is" --without any express or implied warranty. -- --SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY --AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL --DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, --DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE --OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH --THE USE OR PERFORMANCE OF THIS SOFTWARE. -- --********************************************************/ -- --#ifdef HAVE_DIX_CONFIG_H --#include <dix-config.h> --#endif -- --#include "inputstr.h" --#include <xkbsrv.h> --#include "mi.h" -- --void --XkbDDXFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) --{ -- EventListPtr events; -- int nevents, i; -- DeviceIntPtr ptr; -- int gpe_flags = 0; -- -- if (!dev->u.master) -- ptr = dev; -- else -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -- -- if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) -- gpe_flags = POINTER_ABSOLUTE; -- else -- gpe_flags = POINTER_RELATIVE; -- -- events = InitEventList(GetMaximumEventsNum()); -- OsBlockSignals(); -- nevents = GetPointerEvents(events, ptr, -- MotionNotify, 0, -- gpe_flags, 0, 2, (int[]){x, y}); -- OsReleaseSignals(); -- -- for (i = 0; i < nevents; i++) -- mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -- -- FreeEventList(events, GetMaximumEventsNum()); --} -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index ab52b6a..2817e39 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -40,11 +40,15 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. - #include <xkbsrv.h> - #include "xkb.h" - #include <ctype.h> -+#include "mi.h" - #define EXTENSION_EVENT_BASE 64 - - static int xkbDevicePrivateKeyIndex; - DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex; - -+static void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); -+static void XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y); -+ - void - xkbUnwrapProc(DeviceIntPtr device, DeviceHandleProc proc, - pointer data) -@@ -479,7 +483,7 @@ int dx,dy; - dx= xkbi->mouseKeysDX; - dy= xkbi->mouseKeysDY; - } -- XkbDDXFakePointerMotion(xkbi->device, xkbi->mouseKeysFlags,dx,dy); -+ XkbFakePointerMotion(xkbi->device, xkbi->mouseKeysFlags,dx,dy); - return xkbi->desc->ctrls->mk_interval; - } - -@@ -507,7 +511,7 @@ Bool accel; - accel= ((pAction->ptr.flags&XkbSA_NoAcceleration)==0); - x= XkbPtrActionX(&pAction->ptr); - y= XkbPtrActionY(&pAction->ptr); -- XkbDDXFakePointerMotion(xkbi->device, pAction->ptr.flags,x,y); -+ XkbFakePointerMotion(xkbi->device, pAction->ptr.flags,x,y); - AccessXCancelRepeatKey(xkbi,keycode); - xkbi->mouseKeysAccel= accel&& - (xkbi->desc->ctrls->enabled_ctrls&XkbMouseKeysAccelMask); -@@ -554,7 +558,7 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - ((pAction->btn.flags&XkbSA_LockNoLock)==0)) { - xkbi->lockedPtrButtons|= (1<<button); - AccessXCancelRepeatKey(xkbi,keycode); -- XkbDDXFakeDeviceButton(xkbi->device, 1, button); -+ XkbFakeDeviceButton(xkbi->device, 1, button); - filter->upAction.type= XkbSA_NoAction; - } - break; -@@ -565,12 +569,12 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - if (pAction->btn.count>0) { - nClicks= pAction->btn.count; - for (i=0;i<nClicks;i++) { -- XkbDDXFakeDeviceButton(xkbi->device, 1, button); -- XkbDDXFakeDeviceButton(xkbi->device, 0, button); -+ XkbFakeDeviceButton(xkbi->device, 1, button); -+ XkbFakeDeviceButton(xkbi->device, 0, button); - } - filter->upAction.type= XkbSA_NoAction; - } -- else XkbDDXFakeDeviceButton(xkbi->device, 1, button); -+ else XkbFakeDeviceButton(xkbi->device, 1, button); - } - break; - case XkbSA_SetPtrDflt: -@@ -636,7 +640,7 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - - /* fallthrough */ - case XkbSA_PtrBtn: -- XkbDDXFakeDeviceButton(xkbi->device, 0, button); -+ XkbFakeDeviceButton(xkbi->device, 0, button); - break; - } - filter->active = 0; -@@ -974,7 +978,7 @@ int button; - if ((pAction->devbtn.flags&XkbSA_LockNoLock)|| - BitIsOn(dev->button->down, button)) - return 0; -- XkbDDXFakeDeviceButton(dev,TRUE,button); -+ XkbFakeDeviceButton(dev,TRUE,button); - filter->upAction.type= XkbSA_NoAction; - break; - case XkbSA_DeviceBtn: -@@ -982,12 +986,12 @@ int button; - int nClicks,i; - nClicks= pAction->btn.count; - for (i=0;i<nClicks;i++) { -- XkbDDXFakeDeviceButton(dev,TRUE,button); -- XkbDDXFakeDeviceButton(dev,FALSE,button); -+ XkbFakeDeviceButton(dev,TRUE,button); -+ XkbFakeDeviceButton(dev,FALSE,button); - } - filter->upAction.type= XkbSA_NoAction; - } -- else XkbDDXFakeDeviceButton(dev,TRUE,button); -+ else XkbFakeDeviceButton(dev,TRUE,button); - break; - } - } -@@ -1006,10 +1010,10 @@ int button; - if ((filter->upAction.devbtn.flags&XkbSA_LockNoUnlock)|| - !BitIsOn(dev->button->down, button)) - return 0; -- XkbDDXFakeDeviceButton(dev,FALSE,button); -+ XkbFakeDeviceButton(dev,FALSE,button); - break; - case XkbSA_DeviceBtn: -- XkbDDXFakeDeviceButton(dev,FALSE,button); -+ XkbFakeDeviceButton(dev,FALSE,button); - break; - } - filter->active = 0; -@@ -1326,3 +1330,70 @@ xkbStateNotify sn; - return; - } - -+static void -+XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) -+{ -+ EventListPtr events; -+ int nevents, i; -+ DeviceIntPtr ptr; -+ int gpe_flags = 0; -+ -+ if (!dev->u.master) -+ ptr = dev; -+ else -+ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ -+ if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) -+ gpe_flags = POINTER_ABSOLUTE; -+ else -+ gpe_flags = POINTER_RELATIVE; -+ -+ events = InitEventList(GetMaximumEventsNum()); -+ OsBlockSignals(); -+ nevents = GetPointerEvents(events, ptr, -+ MotionNotify, 0, -+ gpe_flags, 0, 2, (int[]){x, y}); -+ OsReleaseSignals(); -+ -+ for (i = 0; i < nevents; i++) -+ mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -+ -+ FreeEventList(events, GetMaximumEventsNum()); -+} -+ -+static void -+XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) -+{ -+ EventListPtr events; -+ int nevents, i; -+ DeviceIntPtr ptr; -+ -+ /* If dev is a slave device, and the SD is attached, do nothing. If we'd -+ * post through the attached master pointer we'd get duplicate events. -+ * -+ * if dev is a master keyboard, post through the XTEST device -+ * -+ * if dev is a floating slave, post through the device itself. -+ */ -+ -+ if (IsMaster(dev)) -+ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ else if (!dev->u.master) -+ ptr = dev; -+ else -+ return; -+ -+ events = InitEventList(GetMaximumEventsNum()); -+ OsBlockSignals(); -+ nevents = GetPointerEvents(events, ptr, -+ press ? ButtonPress : ButtonRelease, button, -+ 0 /* flags */, 0 /* first */, -+ 0 /* num_val */, NULL); -+ OsReleaseSignals(); -+ -+ -+ for (i = 0; i < nevents; i++) -+ mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -+ -+ FreeEventList(events, GetMaximumEventsNum()); -+} --- -1.7.1 - -From dcb46252f959893f1934232698e2ae26390a8a5b Mon Sep 17 00:00:00 2001 -From: Peter Hutterer peter.hutterer@who-t.net -Date: Tue, 29 Jun 2010 15:24:51 +1000 -Subject: [PATCH 4/5] xkb: emulate PointerKeys events only on the master device. - -This patch replicates the behaviour for button events. Only generate a -PointerKeys motion event on the master device, not on the slave device. -Fixes the current issue of PointerKey motion events generating key events as -well. - -Signed-off-by: Peter Hutterer peter.hutterer@who-t.net ---- - xkb/xkbActions.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 2817e39..391c375 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -496,9 +496,6 @@ _XkbFilterPointerMove( XkbSrvInfoPtr xkbi, - int x,y; - Bool accel; - -- if (xkbi->device == inputInfo.keyboard) -- return 0; -- - if (filter->keycode==0) { /* initial press */ - filter->keycode = keycode; - filter->active = 1; -@@ -1338,10 +1335,12 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) - DeviceIntPtr ptr; - int gpe_flags = 0; - -- if (!dev->u.master) -+ if (IsMaster(dev)) -+ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ else if (!dev->u.master) - ptr = dev; - else -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ return; - - if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) - gpe_flags = POINTER_ABSOLUTE; --- -1.7.1 - -From 40941fb2e9ae763add7b74850e8a0471ac754db6 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer peter.hutterer@who-t.net -Date: Thu, 1 Jul 2010 12:44:57 +1000 -Subject: [PATCH 5/5] xkb: release XTEST pointer buttons on physical releases. (#28808) - -If a button release event is posted for the MD pointer, post a release event -through the matching XTEST device. This way, a client who posts a button -press through the XTEST extension cannot inadvertedly lock the button. - -This behaviour is required for historical reasons, until server 1.7 the core -pointer would release a button press on physical events, regardless of the -XTEST state. Clients seem to rely on this behaviour, causing seemingly stuck -grabs. - -The merged behaviour is kept for multiple keyboard PointerKey events, if two -physical keyboards hold the button down as a result of PointerKey actions, -the button is not released until the last keyboard releases the button. - -X.Org Bug 28808 http://bugs.freedesktop.org/show_bug.cgi?id=28808 - -Signed-off-by: Peter Hutterer peter.hutterer@who-t.net ---- - include/xkbsrv.h | 6 ++++++ - xkb/xkbAccessX.c | 23 ++++++++++------------- - xkb/xkbActions.c | 4 ++-- - 3 files changed, 18 insertions(+), 15 deletions(-) - -diff --git a/include/xkbsrv.h b/include/xkbsrv.h -index d1cbd1a..a96ca56 100644 ---- a/include/xkbsrv.h -+++ b/include/xkbsrv.h -@@ -923,6 +923,12 @@ extern int XkbGetEffectiveGroup( - extern void XkbMergeLockedPtrBtns( - DeviceIntPtr /* master */); - -+extern void XkbFakeDeviceButton( -+ DeviceIntPtr /* dev */, -+ int /* press */, -+ int /* button */); -+ -+ - #include "xkbfile.h" - #include "xkbrules.h" - -diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c -index e3fdc06..d3f9652 100644 ---- a/xkb/xkbAccessX.c -+++ b/xkb/xkbAccessX.c -@@ -710,19 +710,16 @@ DeviceEvent *event = &ev->device_event; - if (xkbi) { - xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7)); - -- /* Merge this MD's lockedPtrButtons with the one of all -- * attached slave devices. -- * The DIX uses a merged button state for MDs, not -- * releasing buttons until the last SD has released -- * thenm. If we unconditionally clear the -- * lockedPtrButtons bit on the MD, a PointerKeys button -- * release on the SD keyboard won't generate the required fake button -- * event on the XTEST pointer, thus never processing the -- * button event in the DIX and the XTEST pointer's -- * buttons stay down - result is a stuck button. -- */ -- if (IsMaster(dev)) -- XkbMergeLockedPtrBtns(dev); -+ if (IsMaster(dev)) -+ { -+ DeviceIntPtr source; -+ int rc; -+ rc = dixLookupDevice(&source, event->sourceid, serverClient, DixWriteAccess); -+ if (rc != Success) -+ ErrorF("[xkb] bad sourceid '%d' on button release event.\n", event->sourceid); -+ else if (!IsXTestDevice(source, GetMaster(dev, MASTER_POINTER))) -+ XkbFakeDeviceButton(dev, FALSE, event->detail.key); -+ } - } - - changed |= XkbPointerButtonMask; -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 391c375..5d40199 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -46,7 +46,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. - static int xkbDevicePrivateKeyIndex; - DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex; - --static void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); -+void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); - static void XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y); - - void -@@ -1360,7 +1360,7 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) - FreeEventList(events, GetMaximumEventsNum()); - } - --static void -+void - XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) - { - EventListPtr events; --- -1.7.1 - -From 7273832bcdc6f43e9a5a8fdbb56844466efb710a Mon Sep 17 00:00:00 2001 -From: Peter Hutterer peter.hutterer@who-t.net -Date: Fri, 23 Jul 2010 11:46:30 +1000 -Subject: [PATCH 1/3] xkb: post-fix PointerKeys button events with a DeviceChangedEvent. - -commit 14327858391ebe929b806efb53ad79e789361883 - xkb: release XTEST pointer buttons on physical releases. (#28808) -revealed a bug with the XTEST/PointerKeys interaction. - -Events resulting from PointerKeys are injected into the event processing -stream, not appended to the event queue. The events generated for the fake -button press include a DeviceChangedEvent (DCE), a raw button event and the -button event itself. The DCE causes the master to switch classes to the -attached XTEST pointer device. - -Once the fake button is processed, normal event processing continues with -events in the EQ. The master still contains the XTEST classes, causing some -events to be dropped if e.g. the number of valuators of the event in the -queue exceeds the XTEST device's number of valuators. - -Example: the EQ contains the following events, processed one-by-one, left to -right. - -[DCE (dev)][Btn down][Btn up][Motion][Motion][...] - ^ XkbFakeDeviceButton injects [DCE (XTEST)][Btn up] - -Thus the event sequence processed looks like this: - -[DCE (dev)][Btn down][Btn up][DCE (XTEST)][Btn up][Motion][Motion][...] - -The first DCE causes the master to switch to the device. The button up event -injects a DCE to the XTEST device, causing the following Motion events to be -processed with the master still being on XTEST classes. - -This patch post-fixes the injected event sequence with a DCE to restore the -classes of the original slave device, resulting in an event sequence like -this: -[DCE (dev)][Btn down][Btn up][DCE (XTEST)][Btn up][DCE (dev)][Motion][Motion] - -Note that this is a simplified description. The event sequence injected by -the PointerKeys code is injected for the master device only and the matching -slave device that caused the injection has already finished processing on -the slave. Furthermore, the injection happens as part of the the XKB layer, -before the unwrapping of the processInputProc takes us into the DIX where -the DCE is actually handled. - -Bug reproducible with a device that reports more than 2 valuators. Simply -cause button releases on the device and wait for a "too many valuators" -warning message. - -Signed-off-by: Peter Hutterer peter.hutterer@who-t.net ---- - xkb/xkbActions.c | 26 +++++++++++++++++++------- - 1 files changed, 19 insertions(+), 7 deletions(-) - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 5d40199..2afd46d 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -1365,34 +1365,46 @@ XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) - { - EventListPtr events; - int nevents, i; -- DeviceIntPtr ptr; -+ DeviceIntPtr ptr, mpointer, lastSlave; - - /* If dev is a slave device, and the SD is attached, do nothing. If we'd - * post through the attached master pointer we'd get duplicate events. - * - * if dev is a master keyboard, post through the XTEST device -- * - * if dev is a floating slave, post through the device itself. -+ * -+ * The event is injected into the event processing, not the EQ. Thus, -+ * ensure that we restore the master after the event sequence to the -+ * original set of classes. Otherwise, the master remains on the XTEST -+ * classes and drops events that don't fit into the XTEST layout (e.g. -+ * events with more than 2 valuators). -+ * To do so, we remember the lastSlave that posted through the master -+ * and add a DeviceChangedEvent to the end of the list. - */ - -- if (IsMaster(dev)) -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -- else if (!dev->u.master) -+ if (IsMaster(dev)) { -+ mpointer = GetMaster(dev, MASTER_POINTER); -+ lastSlave = mpointer->u.lastSlave; -+ ptr = GetXTestDevice(mpointer); -+ } else if (!dev->u.master) - ptr = dev; - else - return; - -- events = InitEventList(GetMaximumEventsNum()); -+ events = InitEventList(GetMaximumEventsNum() + 1); - OsBlockSignals(); - nevents = GetPointerEvents(events, ptr, - press ? ButtonPress : ButtonRelease, button, - 0 /* flags */, 0 /* first */, - 0 /* num_val */, NULL); -+ if (IsMaster(dev) && (lastSlave && lastSlave != ptr)) -+ CreateClassesChangedEvent(&events[nevents++], mpointer, -+ lastSlave, DEVCHANGE_POINTER_EVENT); - OsReleaseSignals(); - - - for (i = 0; i < nevents; i++) - mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); - -- FreeEventList(events, GetMaximumEventsNum()); -+ FreeEventList(events, GetMaximumEventsNum() + 1); - } --- -1.7.2 - -From 817e031a996a5f5aa16fc789d7e570cc589d96cb Mon Sep 17 00:00:00 2001 -From: Peter Hutterer peter.hutterer@who-t.net -Date: Wed, 28 Jul 2010 14:24:59 +1000 -Subject: [PATCH 3/3] Xi: reset the unused classes pointer after copying - -After copying the unused_classes into the device, reset the original -pointer. Otherwise we have two pointers pointing to the same field and both -get freed on device removal. - -Some classes already have this behaviour since 51c8fd69. - -Signed-off-by: Peter Hutterer peter.hutterer@who-t.net ---- - Xi/exevents.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -diff --git a/Xi/exevents.c b/Xi/exevents.c -index 566b0ef..a6160dd 100644 ---- a/Xi/exevents.c -+++ b/Xi/exevents.c -@@ -227,6 +227,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->intfeed = classes->intfeed; -+ classes->intfeed = NULL; - } - - i = &to->intfeed; -@@ -263,6 +264,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->stringfeed = classes->stringfeed; -+ classes->stringfeed = NULL; - } - - s = &to->stringfeed; -@@ -299,6 +301,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->bell = classes->bell; -+ classes->bell = NULL; - } - - b = &to->bell; -@@ -336,6 +339,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->leds = classes->leds; -+ classes->leds = NULL; - } - - l = &to->leds; -@@ -387,6 +391,7 @@ DeepCopyKeyboardClasses(DeviceIntPtr from, DeviceIntPtr to) - to->kbdfeed = classes->kbdfeed; - if (!to->kbdfeed) - InitKeyboardDeviceStruct(to, NULL, NULL, NULL); -+ classes->kbdfeed = NULL; - } - - k = &to->kbdfeed; -@@ -517,6 +522,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->ptrfeed = classes->ptrfeed; -+ classes->ptrfeed = NULL; - } - - p = &to->ptrfeed; --- -1.7.2 - diff --git a/pkgs/core/xorg-server/xorg-server.nm b/pkgs/core/xorg-server/xorg-server.nm deleted file mode 100644 index 93cde25..0000000 --- a/pkgs/core/xorg-server/xorg-server.nm +++ /dev/null @@ -1,104 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007, 2008 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include $(PKGROOT)/Include - -PKG_NAME = xorg-server -PKG_VER = 1.8.2 -PKG_REL = 0 - -PKG_MAINTAINER = -PKG_GROUP = X/Server -PKG_URL = http://www.x.org -PKG_LICENSE = MIT -PKG_SUMMARY = X.Org X11 X server. - -PKG_BUILD_DEPS+= autoconf automake pkg-config \ - xorg-x11-font-utils \ - xorg-x11-util-macros xorg-x11-proto-devel xorg-x11-xtrans-devel -PKG_DEPS += libX11 libXau libXfont libpciaccess libxcb libxkbfile pixman udev - -define PKG_DESCRIPTION - X.org X11 is an open source implementation of the X Window System. \ - It provides the basic low level functionality which full fledged \ - graphical user interfaces (GUIs) such as GNOME and KDE are designed \ - upon. -endef - -PKG_TARBALL = $(THISAPP).tar.bz2 - -CFLAGS += -Wstrict-overflow -rdynamic - -CONFIGURE_OPTIONS += \ - --enable-xvfb \ - --disable-xnest \ - --enable-kdrive \ - --disable-xephyr \ - --disable-xsdl \ - --disable-xfake \ - --disable-xfbdev \ - --enable-xorg \ - --disable-static \ - --with-pic \ - --with-int10=x86emu \ - --with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \ - --with-module-dir=/usr/lib/xorg/modules \ - --with-builderstring="Build ID: $(PKG_NAME) $(PKG_VER)-$(PKG_REL)" \ - --with-os-name="$(hostname -s) $(uname -r)" \ - --with-xkb-output=/var/lib/xkb \ - --enable-install-libxf86config \ - --localstatedir=/var \ - --disable-aiglx \ - --disable-composite \ - --disable-xdmcp \ - --disable-xdm-auth-1 \ - --disable-glx \ - --disable-screensaver \ - --disable-dri \ - --disable-dri2 \ - --disable-xinerama \ - --disable-dbe \ - --disable-config-dbus \ - --disable-config-hal \ - --disable-xquartz \ - --enable-config-udev \ - --with-vendor-name="$(DISTRO_NAME) Project" - -define STAGE_PREPARE_CMDS - cd $(DIR_APP) && autoreconf -vfi -endef - -define STAGE_INSTALL - cd $(DIR_APP) && make install DESTDIR=$(BUILDROOT) \ - moduledir=/usr/lib/xorg/modules - - rm -vf $(BUILDROOT)/usr/lib/xorg/modules/libxf8_16bpp.so - rm -vrf $(BUILDROOT)/var/log - - -mkdir -pv $(BUILDROOT)/etc/X11/xorg.conf.d $(BUILDROOT)/usr/share/xorg - cd $(DIR_APP) && install -m 0444 hw/xfree86/common/{vesa,extra}modes \ - $(BUILDROOT)/usr/share/xorg/ - cd $(DIR_APP) && install -m 644 $(DIR_SOURCE)/10-quirks.conf \ - $(BUILDROOT)/usr/share/X11/xorg.conf.d -endef diff --git a/pkgs/core/xorg-x11-drv-evdev/xorg-x11-drv-evdev.nm b/pkgs/core/xorg-x11-drv-evdev/xorg-x11-drv-evdev.nm index c524786..4939399 100644 --- a/pkgs/core/xorg-x11-drv-evdev/xorg-x11-drv-evdev.nm +++ b/pkgs/core/xorg-x11-drv-evdev/xorg-x11-drv-evdev.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-drv-evdev PKG_VER = 2.4.99.901 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Driver PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-drv-keyboard/xorg-x11-drv-keyboard.nm b/pkgs/core/xorg-x11-drv-keyboard/xorg-x11-drv-keyboard.nm index fcab804..51353b1 100644 --- a/pkgs/core/xorg-x11-drv-keyboard/xorg-x11-drv-keyboard.nm +++ b/pkgs/core/xorg-x11-drv-keyboard/xorg-x11-drv-keyboard.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-drv-keyboard PKG_VER = 1.4.0 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Driver PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-drv-mouse/xorg-x11-drv-mouse.nm b/pkgs/core/xorg-x11-drv-mouse/xorg-x11-drv-mouse.nm index 86cf79b..0d83825 100644 --- a/pkgs/core/xorg-x11-drv-mouse/xorg-x11-drv-mouse.nm +++ b/pkgs/core/xorg-x11-drv-mouse/xorg-x11-drv-mouse.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-drv-mouse PKG_VER = 1.5.0 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Driver PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-drv-vesa/xorg-x11-drv-vesa.nm b/pkgs/core/xorg-x11-drv-vesa/xorg-x11-drv-vesa.nm index e25781f..ece63c2 100644 --- a/pkgs/core/xorg-x11-drv-vesa/xorg-x11-drv-vesa.nm +++ b/pkgs/core/xorg-x11-drv-vesa/xorg-x11-drv-vesa.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-drv-vesa PKG_VER = 2.3.0 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Driver PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-font-utils/xorg-x11-font-utils.nm b/pkgs/core/xorg-x11-font-utils/xorg-x11-font-utils.nm index b79376c..28e8dcf 100644 --- a/pkgs/core/xorg-x11-font-utils/xorg-x11-font-utils.nm +++ b/pkgs/core/xorg-x11-font-utils/xorg-x11-font-utils.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-font-utils PKG_VER = 7.4 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Fonts PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-fonts/xorg-x11-fonts.nm b/pkgs/core/xorg-x11-fonts/xorg-x11-fonts.nm index ac0c7fa..d8ec50d 100644 --- a/pkgs/core/xorg-x11-fonts/xorg-x11-fonts.nm +++ b/pkgs/core/xorg-x11-fonts/xorg-x11-fonts.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-fonts PKG_VER = 7.2 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Fonts PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-proto-devel/xorg-x11-proto-devel.nm b/pkgs/core/xorg-x11-proto-devel/xorg-x11-proto-devel.nm index 7275b12..66b22dd 100644 --- a/pkgs/core/xorg-x11-proto-devel/xorg-x11-proto-devel.nm +++ b/pkgs/core/xorg-x11-proto-devel/xorg-x11-proto-devel.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-proto-devel PKG_VER = 7.4 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = Development/System PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-server/10-quirks.conf b/pkgs/core/xorg-x11-server/10-quirks.conf new file mode 100644 index 0000000..82d3ec2 --- /dev/null +++ b/pkgs/core/xorg-x11-server/10-quirks.conf @@ -0,0 +1,20 @@ +# Collection of quirks and blacklist/whitelists for specific devices. + + +# Accelerometer device, posts data through ABS_X/ABS_Y, making X unusable +# http://bugs.freedesktop.org/show_bug.cgi?id=22442 +Section "InputClass" + Identifier "ThinkPad HDAPS accelerometer blacklist" + MatchProduct "ThinkPad HDAPS accelerometer data" + Option "Ignore" "on" +EndSection + +# https://bugzilla.redhat.com/show_bug.cgi?id=523914 +# Mouse does not move in PV Xen guest +# Explicitly tell evdev to not ignore the absolute axes. +Section "InputClass" + Identifier "Xen Virtual Pointer axis blacklist" + MatchProduct "Xen Virtual Pointer" + Option "IgnoreAbsoluteAxes" "off" + Option "IgnoreRelativeAxes" "off" +EndSection diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.4.99-pic-libxf86config.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.4.99-pic-libxf86config.patch new file mode 100644 index 0000000..d040900 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.4.99-pic-libxf86config.patch @@ -0,0 +1,25 @@ +From 04bd8e2fa6be557f58a0e417b0f3befc56f5ef59 Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas x@fedoraproject.org +Date: Thu, 1 Jul 2010 15:45:03 +1000 +Subject: [PATCH] Build libxf86config with -fPIC. + +--- + hw/xfree86/parser/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am +index caf7079..655e73f 100644 +--- a/hw/xfree86/parser/Makefile.am ++++ b/hw/xfree86/parser/Makefile.am +@@ -32,7 +32,7 @@ libxf86config_internal_la_SOURCES = \ + + libxf86config_a_SOURCES = \ + $(INTERNAL_SOURCES) +-libxf86config_a_CFLAGS = $(AM_CFLAGS) ++libxf86config_a_CFLAGS = $(AM_CFLAGS) -fPIC -fvisibility=hidden + + AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \ + -DSYSCONFDIR="$(sysconfdir)" \ +-- +1.7.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch new file mode 100644 index 0000000..d532fe1 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch @@ -0,0 +1,48 @@ +From 4306b434038de7e2b17d3c4a6cfd87db469d3bda Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Mon, 10 Dec 2007 11:26:57 -0500 +Subject: [PATCH] Hack for proper MIT-SHM rejection for ssh-forwarded clients. + +--- + Xext/shm.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +diff --git a/Xext/shm.c b/Xext/shm.c +index 5937a03..5376c19 100644 +--- a/Xext/shm.c ++++ b/Xext/shm.c +@@ -381,8 +381,21 @@ + mode_t mask; + int uidset = 0, gidset = 0; + LocalClientCredRec *lcc; ++ Bool is_ssh = FALSE; + + if (GetLocalClientCreds(client, &lcc) != -1) { ++#ifdef linux ++ if (lcc->fieldsSet & LCC_PID_SET) { ++ /* ssh isn't actually a local client */ ++ char exe[64], buf[64]; ++ ++ memset(buf, 0, 64); ++ snprintf(exe, 64, "/proc/%d/exe", lcc->pid); ++ readlink(exe, buf, 63); ++ if (strstr(buf, "/ssh")) ++ is_ssh = TRUE; ++ } ++#endif + + if (lcc->fieldsSet & LCC_UID_SET) { + uid = lcc->euid; +@@ -401,6 +414,9 @@ + } + #endif + FreeLocalClientCreds(lcc); ++ ++ if (is_ssh) ++ return -1; + + if (uidset) { + /* User id 0 always gets access */ +-- +1.5.3.4 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.5.0-bg-none-root.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.5.0-bg-none-root.patch new file mode 100644 index 0000000..ae65d0b --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.5.0-bg-none-root.patch @@ -0,0 +1,155 @@ +From eff3bb9c6f0b71a57705885a3fe6e6469d252d2b Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas x@fedoraproject.org +Date: Wed, 20 Jan 2010 14:46:12 +1300 +Subject: [PATCH] Add nr for background=none root + +--- + dix/globals.c | 1 + + dix/window.c | 12 +++++++----- + hw/xfree86/common/xf86Init.c | 11 +++++++++++ + hw/xfree86/common/xf86str.h | 5 ++++- + include/opaque.h | 1 + + os/utils.c | 3 +++ + 6 files changed, 27 insertions(+), 6 deletions(-) + +diff --git a/dix/globals.c b/dix/globals.c +index c24a94f..907a5e8 100644 +--- a/dix/globals.c ++++ b/dix/globals.c +@@ -124,6 +124,7 @@ FontPtr defaultFont; /* not declared in dix.h to avoid including font.h in + CursorPtr rootCursor; + Bool party_like_its_1989 = FALSE; + Bool whiteRoot = FALSE; ++Bool bgNoneRoot = FALSE; + + int cursorScreenDevPriv[MAXSCREENS]; + +diff --git a/dix/window.c b/dix/window.c +index caff1cb..be1d1c4 100644 +--- a/dix/window.c ++++ b/dix/window.c +@@ -466,22 +466,24 @@ InitRootWindow(WindowPtr pWin) + pWin->optional->cursor = rootCursor; + rootCursor->refcnt++; + ++ pWin->backingStore = defaultBackingStore; ++ pWin->forcedBS = (defaultBackingStore != NotUseful); + + if (party_like_its_1989) { + MakeRootTile(pWin); + backFlag |= CWBackPixmap; ++ pScreen->ChangeWindowAttributes(pWin, backFlag); ++ } else if (bgNoneRoot) { ++ /* nothing, handled in xf86CreateRootWindow */ + } else { + if (whiteRoot) + pWin->background.pixel = pScreen->whitePixel; + else + pWin->background.pixel = pScreen->blackPixel; + backFlag |= CWBackPixel; +- } + +- pWin->backingStore = defaultBackingStore; +- pWin->forcedBS = (defaultBackingStore != NotUseful); +- /* We SHOULD check for an error value here XXX */ +- (*pScreen->ChangeWindowAttributes)(pWin, backFlag); ++ pScreen->ChangeWindowAttributes(pWin, backFlag); ++ } + + MapWindow(pWin, serverClient); + } +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index 6707448..776b898 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -77,6 +77,7 @@ + #ifdef RENDER + #include "picturestr.h" + #endif ++#include "xace.h" + + #include "xf86VGAarbiter.h" + #include "globals.h" +@@ -254,6 +255,7 @@ xf86CreateRootWindow(WindowPtr pWin) + int ret = TRUE; + int err = Success; + ScreenPtr pScreen = pWin->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RootWinPropPtr pProp; + CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr) + dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey); +@@ -305,6 +307,15 @@ xf86CreateRootWindow(WindowPtr pWin) + } + } + ++ if (bgNoneRoot && pScrn->canDoBGNoneRoot) { ++ pWin->backgroundState = XaceBackgroundNoneState(pWin); ++ pWin->background.pixel = pScreen->whitePixel; ++ pScreen->ChangeWindowAttributes(pWin, CWBackPixmap | CWBorderPixel | CWCursor | CWBackingStore); ++ } else { ++ pWin->background.pixel = pScreen->blackPixel; ++ pScreen->ChangeWindowAttributes(pWin, CWBackPixel | CWBorderPixel | CWCursor | CWBackingStore); ++ } ++ + DebugF("xf86CreateRootWindow() returns %d\n", ret); + return (ret); + } +diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h +index de1f1b6..5c3aa00 100644 +--- a/hw/xfree86/common/xf86str.h ++++ b/hw/xfree86/common/xf86str.h +@@ -503,7 +503,7 @@ typedef struct _confdrirec { + } confDRIRec, *confDRIPtr; + + /* These values should be adjusted when new fields are added to ScrnInfoRec */ +-#define NUM_RESERVED_INTS 16 ++#define NUM_RESERVED_INTS 15 + #define NUM_RESERVED_POINTERS 14 + #define NUM_RESERVED_FUNCS 11 + +@@ -775,6 +775,9 @@ typedef struct _ScrnInfoRec { + ClockRangePtr clockRanges; + int adjustFlags; + ++ /* -nr support */ ++ int canDoBGNoneRoot; ++ + /* + * These can be used when the minor ABI version is incremented. + * The NUM_* parameters must be reduced appropriately to keep the +diff --git a/include/opaque.h b/include/opaque.h +index b3c7c70..fcc8c95 100644 +--- a/include/opaque.h ++++ b/include/opaque.h +@@ -71,6 +71,7 @@ extern _X_EXPORT Bool defeatAccessControl; + extern _X_EXPORT long maxBigRequestSize; + extern _X_EXPORT Bool party_like_its_1989; + extern _X_EXPORT Bool whiteRoot; ++extern _X_EXPORT Bool bgNoneRoot; + + extern _X_EXPORT Bool CoreDump; + +diff --git a/os/utils.c b/os/utils.c +index d7c8388..40583d0 100644 +--- a/os/utils.c ++++ b/os/utils.c +@@ -513,6 +513,7 @@ void UseMsg(void) + #endif + ErrorF("-nolisten string don't listen on protocol\n"); + ErrorF("-noreset don't reset after last client exists\n"); ++ ErrorF("-nr create root window with no background\n"); + ErrorF("-reset reset after last client exists\n"); + ErrorF("-p # screen-saver pattern duration (minutes)\n"); + ErrorF("-pn accept failure to listen on all ports\n"); +@@ -856,6 +857,8 @@ ProcessCommandLine(int argc, char *argv[]) + defaultBackingStore = WhenMapped; + else if ( strcmp( argv[i], "-wr") == 0) + whiteRoot = TRUE; ++ else if ( strcmp( argv[i], "-nr") == 0) ++ bgNoneRoot = TRUE; + else if ( strcmp( argv[i], "-maxbigreqsize") == 0) { + if(++i < argc) { + long reqSizeArg = atol(argv[i]); +-- +1.6.6 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.5.0-projector-fb-size.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.5.0-projector-fb-size.patch new file mode 100644 index 0000000..c6178b8 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.5.0-projector-fb-size.patch @@ -0,0 +1,32 @@ +From dc5cedd61e00afec33cbfaa7fdfbb6c357074dbd Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= sandmann@redhat.com +Date: Thu, 11 Sep 2008 12:51:31 -0400 +Subject: [PATCH] Make room for an external monitor if we have enough video RAM + +--- + hw/xfree86/modes/xf86Crtc.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 4de7e05..9bcf81b 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -987,6 +987,15 @@ xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp, + if (crtc_height > height) + height = crtc_height; + } ++ ++ /* Make room for an external monitor if we have enough video ram */ ++ if (scrn->videoRam >= 65536) ++ width += 1920; ++ else if (scrn->videoRam >= 32768) ++ width += 1280; ++ else if (scrn->videoRam >= 16384) ++ width += 1024; ++ + if (config->maxWidth && width > config->maxWidth) width = config->maxWidth; + if (config->maxHeight && height > config->maxHeight) height = config->maxHeight; + if (config->minWidth && width < config->minWidth) width = config->minWidth; +-- +1.6.0.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.5.1-mode-debug.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.5.1-mode-debug.patch new file mode 100644 index 0000000..11fe5ad --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.5.1-mode-debug.patch @@ -0,0 +1,26 @@ +From 079910986a1b8f5042e16ee2ba3ad9ed843b67ca Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Tue, 7 Oct 2008 11:09:14 -0400 +Subject: [PATCH] Force ModeDebug on. + +--- + hw/xfree86/modes/xf86Crtc.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 9bcf81b..a953c8a 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -2084,8 +2084,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + xf86ProcessOptions (scrn->scrnIndex, + scrn->options, + config->options); +- config->debug_modes = xf86ReturnOptValBool (config->options, +- OPTION_MODEDEBUG, FALSE); ++ config->debug_modes = TRUE; + + if (scrn->display->virtualX) + width = scrn->display->virtualX; +-- +1.6.0.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.6.0-displayfd.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.6.0-displayfd.patch new file mode 100644 index 0000000..09e7b49 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.6.0-displayfd.patch @@ -0,0 +1,172 @@ +From 1766352059d0db67bff3f7dd0820563a30f54858 Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Thu, 18 Jun 2009 16:56:41 +1000 +Subject: [PATCH] displayfd hack + +--- + dix/globals.c | 1 + + include/opaque.h | 1 + + os/connection.c | 72 ++++++++++++++++++++++++++++++++++++----------------- + os/utils.c | 11 ++++++++ + 4 files changed, 62 insertions(+), 23 deletions(-) + +diff --git a/dix/globals.c b/dix/globals.c +index 907a5e8..c1e64d3 100644 +--- a/dix/globals.c ++++ b/dix/globals.c +@@ -135,6 +135,7 @@ int defaultColorVisualClass = -1; + int monitorResolution = 0; + + char *display; ++int displayfd; + char *ConnectionInfo; + + CARD32 TimeOutValue = DEFAULT_TIMEOUT * MILLI_PER_SECOND; +diff --git a/include/opaque.h b/include/opaque.h +index fcc8c95..2a08e2d 100644 +--- a/include/opaque.h ++++ b/include/opaque.h +@@ -50,6 +50,7 @@ extern _X_EXPORT int ScreenSaverAllowExposures; + extern _X_EXPORT int defaultScreenSaverBlanking; + extern _X_EXPORT int defaultScreenSaverAllowExposures; + extern _X_EXPORT char *display; ++extern _X_EXPORT int displayfd; + + extern _X_EXPORT int defaultBackingStore; + extern _X_EXPORT Bool disableBackingStore; +diff --git a/os/connection.c b/os/connection.c +index 0c72b67..05d95c4 100644 +--- a/os/connection.c ++++ b/os/connection.c +@@ -146,6 +146,7 @@ Bool NewOutputPending; /* not yet attempted to write some new output */ + Bool AnyClientsWriteBlocked; /* true if some client blocked on write */ + + static Bool RunFromSmartParent; /* send SIGUSR1 to parent process */ ++static char dynamic_display[7]; + Bool PartialNetwork; /* continue even if unable to bind all addrs */ + static Pid_t ParentProcess; + +@@ -357,9 +358,23 @@ NotifyParentProcess(void) + kill (ParentProcess, SIGUSR1); + } + } ++ if (dynamic_display[0]) ++ write(displayfd, dynamic_display, strlen(dynamic_display)); + #endif + } + ++static Bool ++TryCreateSocket(int num, int *partial) ++{ ++ char port[20]; ++ ++ sprintf(port, "%d", num); ++ ++ return _XSERVTransMakeAllCOTSServerListeners(port, partial, ++ &ListenTransCount, ++ &ListenTransConns); ++} ++ + /***************** + * CreateWellKnownSockets + * At initialization, create the sockets to listen on for new clients. +@@ -370,7 +385,6 @@ CreateWellKnownSockets(void) + { + int i; + int partial; +- char port[20]; + + FD_ZERO(&AllSockets); + FD_ZERO(&AllClients); +@@ -385,32 +399,44 @@ CreateWellKnownSockets(void) + + FD_ZERO (&WellKnownConnections); + +- sprintf (port, "%d", atoi (display)); +- +- if ((_XSERVTransMakeAllCOTSServerListeners (port, &partial, +- &ListenTransCount, &ListenTransConns) >= 0) && +- (ListenTransCount >= 1)) ++ if (display) + { +- if (!PartialNetwork && partial) +- { +- FatalError ("Failed to establish all listening sockets"); +- } +- else ++ if (TryCreateSocket(atoi(display), &partial) && ++ (ListenTransCount >= 1)) ++ if (!PartialNetwork && partial) ++ FatalError ("Failed to establish all listening sockets"); ++ } ++ else /* -displayfd */ ++ { ++ Bool found = 0; ++ for (i = 0; i < 65535 - 1024; i++) + { +- ListenTransFds = xalloc (ListenTransCount * sizeof (int)); +- +- for (i = 0; i < ListenTransCount; i++) ++ if (!TryCreateSocket(i, &partial) && !partial) + { +- int fd = _XSERVTransGetConnectionNumber (ListenTransConns[i]); +- +- ListenTransFds[i] = fd; +- FD_SET (fd, &WellKnownConnections); +- +- if (!_XSERVTransIsLocal (ListenTransConns[i])) +- { +- DefineSelf (fd); +- } ++ found = 1; ++ break; + } ++ else ++ CloseWellKnownConnections(); ++ } ++ if (!found) ++ FatalError("Failed to find a socket to listen on"); ++ sprintf(dynamic_display, "%d\n", i); ++ display = dynamic_display; ++ } ++ ++ ListenTransFds = xalloc (ListenTransCount * sizeof (int)); ++ ++ for (i = 0; i < ListenTransCount; i++) ++ { ++ int fd = _XSERVTransGetConnectionNumber (ListenTransConns[i]); ++ ++ ListenTransFds[i] = fd; ++ FD_SET (fd, &WellKnownConnections); ++ ++ if (!_XSERVTransIsLocal (ListenTransConns[i])) ++ { ++ DefineSelf (fd); + } + } + +diff --git a/os/utils.c b/os/utils.c +index 7bfdf8b..37a93b1 100644 +--- a/os/utils.c ++++ b/os/utils.c +@@ -678,6 +678,17 @@ ProcessCommandLine(int argc, char *argv[]) + else + UseMsg(); + } ++ else if (strcmp(argv[i], "-displayfd") == 0) ++ { ++ if (++i < argc) ++ { ++ displayfd = atoi(argv[i]); ++ display = NULL; ++ nolock = TRUE; ++ } ++ else ++ UseMsg(); ++ } + #ifdef DPMSExtension + else if ( strcmp( argv[i], "dpms") == 0) + /* ignored for compatibility */ ; +-- +1.6.3.rc1.2.g0164.dirty + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch new file mode 100644 index 0000000..cc80e6c --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch @@ -0,0 +1,31 @@ +From a8079882f1884edc62a9de28af915bd8b65dfbbe Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Wed, 11 Mar 2009 14:02:11 -0400 +Subject: [PATCH] Don't build the ACPI code. + +No good can come of this. +--- + configure.ac | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 72ae67e..04716f8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1269,13 +1269,11 @@ if test "x$XORG" = xyes; then + case $host_cpu in + ia64*) + linux_ia64=yes +- linux_acpi="yes" + ;; + alpha*) + linux_alpha=yes + ;; + i*86|amd64*|x86_64*) +- linux_acpi="yes" + ;; + *) + ;; +-- +1.6.1.3 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.6.1-nouveau.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.6.1-nouveau.patch new file mode 100644 index 0000000..35a1ff9 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.6.1-nouveau.patch @@ -0,0 +1,109 @@ +From a685b5cf34532cef96fc9b05f735088ac0c0c7ad Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas x@fedoraproject.org +Date: Tue, 16 Feb 2010 11:38:17 +1000 +Subject: [PATCH 08/17] autoconfig: select nouveau by default for NVIDIA GPUs + +Also, don't treat DRI setup failure as an error for nouveau. +--- + glx/glxdri.c | 7 +++++-- + glx/glxdri2.c | 7 +++++-- + hw/xfree86/common/xf86AutoConfig.c | 19 ++++++++++++++++++- + 3 files changed, 28 insertions(+), 5 deletions(-) + +diff --git a/glx/glxdri.c b/glx/glxdri.c +index 21e44d1..30b820c 100644 +--- a/glx/glxdri.c ++++ b/glx/glxdri.c +@@ -968,6 +968,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + const __DRIconfig **driConfigs; + const __DRIextension **extensions; + int i; ++ int from = X_ERROR; + + if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") || + !DRIQueryDirectRenderingCapable(pScreen, &isCapable) || +@@ -1047,7 +1048,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + if (screen->driver == NULL) { +- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", + filename, dlerror()); + goto handle_error; + } +@@ -1184,7 +1187,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + xfree(screen); + +- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); ++ LogMessage(from, "AIGLX: reverting to software rendering\n"); + + return NULL; + } +diff --git a/glx/glxdri2.c b/glx/glxdri2.c +index 0f998de..a244809 100644 +--- a/glx/glxdri2.c ++++ b/glx/glxdri2.c +@@ -676,6 +676,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + const __DRIextension **extensions; + const __DRIconfig **driConfigs; + int i; ++ int from = X_ERROR; + + screen = xcalloc(1, sizeof *screen); + if (screen == NULL) +@@ -702,7 +703,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + if (screen->driver == NULL) { +- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", + filename, dlerror()); + goto handle_error; + } +@@ -793,7 +796,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + xfree(screen); + +- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); ++ LogMessage(from, "AIGLX: reverting to software rendering\n"); + + return NULL; + } +diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c +index 7f4ada8..d964c6c 100644 +--- a/hw/xfree86/common/xf86AutoConfig.c ++++ b/hw/xfree86/common/xf86AutoConfig.c +@@ -192,7 +192,24 @@ videoPtrToDriverList(struct pci_device *dev, + break; + case 0x102b: driverList[0] = "mga"; break; + case 0x10c8: driverList[0] = "neomagic"; break; +- case 0x10de: case 0x12d2: driverList[0] = "nv"; break; ++ case 0x10de: case 0x12d2: ++ switch (dev->device_id) { ++ /* NV1 */ ++ case 0x0008: ++ case 0x0009: ++ driverList[0] = "vesa"; ++ break; ++ /* NV3 */ ++ case 0x0018: ++ case 0x0019: ++ driverList[0] = "nv"; ++ break; ++ default: ++ driverList[0] = "nouveau"; ++ driverList[1] = "nv"; ++ break; ++ } ++ break; + case 0x1106: driverList[0] = "openchrome"; break; + case 0x1b36: driverList[0] = "qxl"; break; + case 0x1163: driverList[0] = "rendition"; break; +-- +1.6.5.2 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-default-modes.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-default-modes.patch new file mode 100644 index 0000000..0f0ba27 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-default-modes.patch @@ -0,0 +1,35 @@ +From ca85ebddd804305322014c6a71b4122a56c5e634 Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Thu, 4 Mar 2010 15:18:38 +1000 +Subject: [PATCH] tweak default mode list yet again + +--- + hw/xfree86/modes/xf86Crtc.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 03277be..571ffd0 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -1582,7 +1582,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) + int min_clock = 0; + int max_clock = 0; + double clock; +- Bool add_default_modes = TRUE; ++ Bool add_default_modes; + Bool debug_modes = config->debug_modes || + xf86Initialising; + enum det_monrec_source sync_source = sync_default; +@@ -1628,6 +1628,9 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) + } + + output_modes = (*output->funcs->get_modes) (output); ++ ++ /* if the driver found modes, don't second-guess it */ ++ add_default_modes = (output_modes == NULL); + + edid_monitor = output->MonInfo; + +-- +1.6.6.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-randr-error-debugging.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-randr-error-debugging.patch new file mode 100644 index 0000000..0e7a6ba --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-randr-error-debugging.patch @@ -0,0 +1,42 @@ +From 16be69ef1e2ea9f19cd596b99b5ede7567d374b8 Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Mon, 27 Jul 2009 16:52:42 -0400 +Subject: [PATCH 11/16] additional randr debugging + +--- + randr/randr.c | 16 +++++++++++++++- + 1 files changed, 15 insertions(+), 1 deletions(-) + +diff --git a/randr/randr.c b/randr/randr.c +index 1c1d0c4..accf614 100644 +--- a/randr/randr.c ++++ b/randr/randr.c +@@ -477,10 +477,24 @@ RRVerticalRefresh (xRRModeInfo *mode) + static int + ProcRRDispatch (ClientPtr client) + { ++ int ret; + REQUEST(xReq); + if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data]) + return BadRequest; +- return (*ProcRandrVector[stuff->data]) (client); ++ ret = ProcRandrVector[stuff->data](client); ++ ++ if (ret) { ++ int i; ++ ErrorF("RANDR failure: %d (extension base %d)\n", ret, RRErrorBase); ++ for (i = 0; i < stuff->length; i++) { ++ ErrorF("%08x ", ((unsigned int *)stuff) + i); ++ if ((i+1) % 4 == 0) ++ ErrorF("\n"); ++ } ++ ErrorF("\n"); ++ } ++ ++ return ret; + } + + static int +-- +1.6.4.2 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-right-of.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-right-of.patch new file mode 100644 index 0000000..06c1183 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.6.99-right-of.patch @@ -0,0 +1,172 @@ +From 1766ae8a69daa06730e41d094fdddf53db3a1a9e Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Tue, 28 Jul 2009 11:07:13 -0400 +Subject: [PATCH] RANDR: right-of placement by default + +[Enhanced to add a new prefer clone option for drivers. This +allows for servers like RN50 where two heads are disjoint. - airlied] + +[Enhanced to ignore rightof on single crtc cards - airlied] +--- + hw/xfree86/common/xf86str.h | 9 ++++- + hw/xfree86/modes/xf86Crtc.c | 77 +++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 77 insertions(+), 9 deletions(-) + +diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h +index 5c3aa00..8224668 100644 +--- a/hw/xfree86/common/xf86str.h ++++ b/hw/xfree86/common/xf86str.h +@@ -503,10 +503,13 @@ typedef struct _confdrirec { + } confDRIRec, *confDRIPtr; + + /* These values should be adjusted when new fields are added to ScrnInfoRec */ +-#define NUM_RESERVED_INTS 15 ++#define NUM_RESERVED_INTS 14 + #define NUM_RESERVED_POINTERS 14 + #define NUM_RESERVED_FUNCS 11 + ++/* let clients know they can use this */ ++#define XF86_SCRN_HAS_PREFER_CLONE 1 ++ + typedef pointer (*funcPointer)(void); + + /* flags for depth 24 pixmap options */ +@@ -672,7 +675,6 @@ typedef void xf86SetOverscanProc (ScrnInfoPtr, int); + * are to be dependent on compile-time defines. + */ + +- + typedef struct _ScrnInfoRec { + int driverVersion; + char * driverName; /* canonical name used in */ +@@ -778,6 +780,9 @@ typedef struct _ScrnInfoRec { + /* -nr support */ + int canDoBGNoneRoot; + ++ /* initial rightof support disable */ ++ int preferClone; ++ + /* + * These can be used when the minor ABI version is incremented. + * The NUM_* parameters must be reduced appropriately to keep the +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index a66c979..4d14f57 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -1146,6 +1146,15 @@ xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes) + int o; + int min_x, min_y; + ++ /* check for initial right-of heuristic */ ++ for (o = 0; o < config->num_output; o++) ++ { ++ xf86OutputPtr output = config->output[o]; ++ ++ if (output->initial_x || output->initial_y) ++ return TRUE; ++ } ++ + for (o = 0; o < config->num_output; o++) + { + xf86OutputPtr output = config->output[o]; +@@ -2028,6 +2037,60 @@ bestModeForAspect(xf86CrtcConfigPtr config, Bool *enabled, float aspect) + return match; + } + ++static int ++numEnabledOutputs(xf86CrtcConfigPtr config, Bool *enabled) ++{ ++ int i = 0, p; ++ ++ for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++) ; ++ ++ return i; ++} ++ ++static Bool ++xf86TargetRightOf(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, ++ DisplayModePtr *modes, Bool *enabled, ++ int width, int height) ++{ ++ int o; ++ int w = 0; ++ ++ if (config->num_crtc == 1) ++ return FALSE; ++ ++ if (scrn->preferClone) ++ return FALSE; ++ ++ if (numEnabledOutputs(config, enabled) < 2) ++ return FALSE; ++ ++ for (o = -1; nextEnabledOutput(config, enabled, &o); ) { ++ DisplayModePtr mode = ++ xf86OutputHasPreferredMode(config->output[o], width, height); ++ ++ if (!mode) ++ return FALSE; ++ ++ w += mode->HDisplay; ++ } ++ ++ if (w > width) ++ return FALSE; ++ ++ w = 0; ++ for (o = -1; nextEnabledOutput(config, enabled, &o); ) { ++ DisplayModePtr mode = ++ xf86OutputHasPreferredMode(config->output[o], width, height); ++ ++ config->output[o]->initial_x = w; ++ w += mode->HDisplay; ++ ++ modes[o] = mode; ++ } ++ ++ return TRUE; ++} ++ + static Bool + xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, + DisplayModePtr *modes, Bool *enabled, +@@ -2085,13 +2148,9 @@ xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, + * biggest mode for its aspect ratio, assuming one exists. + */ + if (!ret) do { +- int i = 0; + float aspect = 0.0; + +- /* count the number of enabled outputs */ +- for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++) ; +- +- if (i != 1) ++ if (numEnabledOutputs(config, enabled) != 1) + break; + + p = -1; +@@ -2378,6 +2437,8 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + + if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) + xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); ++ else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) ++ xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); + else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) + xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); + else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) +@@ -2394,8 +2455,10 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + config->output[o]->name); + else + xf86DrvMsg (scrn->scrnIndex, X_INFO, +- "Output %s using initial mode %s\n", +- config->output[o]->name, modes[o]->name); ++ "Output %s using initial mode %s +%d+%d\n", ++ config->output[o]->name, modes[o]->name, ++ config->output[o]->initial_x, ++ config->output[o]->initial_y); + } + + /* +-- +1.7.0.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.7.0-randr-gamma-restore.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.7.0-randr-gamma-restore.patch new file mode 100644 index 0000000..5206141 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.7.0-randr-gamma-restore.patch @@ -0,0 +1,36 @@ +From 18d2bd8cb513a0436739916620532247f13dbf03 Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas x@fedoraproject.org +Date: Thu, 8 Oct 2009 15:25:24 -0400 +Subject: [PATCH] randr gamma reload hack + +--- + hw/xfree86/loader/sdksyms.c | 4 ++++ + hw/xfree86/modes/xf86RandR12.c | 6 ++++++ + 2 files changed, 10 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 6ea9d26..41bac11 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -1746,12 +1746,18 @@ xf86RandR12EnterVT (int screen_index, int flags) + { + ScreenPtr pScreen = screenInfo.screens[screen_index]; + XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); ++ rrScrPrivPtr rp = rrGetScrPriv(pScreen); + + if (randrp->orig_EnterVT) { + if (!randrp->orig_EnterVT (screen_index, flags)) + return FALSE; + } + ++ /* reload gamma */ ++ int i; ++ for (i = 0; i < rp->numCrtcs; i++) ++ xf86RandR12CrtcSetGamma(pScreen, rp->crtcs[i]); ++ + return RRGetInfo (pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */ + } + +-- +1.6.5.rc2 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.7.1-gamma-kdm-fix.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.7.1-gamma-kdm-fix.patch new file mode 100644 index 0000000..c62837e --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.7.1-gamma-kdm-fix.patch @@ -0,0 +1,34 @@ +From acc64ce5be7383c09e88a23aab06ebc2403f2ca3 Mon Sep 17 00:00:00 2001 +From: Bill Nottingham notting@redhat.com +Date: Fri, 6 Nov 2009 10:32:27 +1000 +Subject: [PATCH] fix KDM gamma issue on vt switch + +--- + hw/xfree86/modes/xf86RandR12.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 6ea9d26..ece12b9 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -1761,6 +1761,7 @@ xf86RandR12Init12 (ScreenPtr pScreen) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + rrScrPrivPtr rp = rrGetScrPriv(pScreen); + XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); ++ int i; + + rp->rrGetInfo = xf86RandR12GetInfo12; + rp->rrScreenSetSize = xf86RandR12ScreenSetSize; +@@ -1790,6 +1791,9 @@ xf86RandR12Init12 (ScreenPtr pScreen) + */ + if (!xf86RandR12SetInfo12 (pScreen)) + return FALSE; ++ for (i = 0; i < rp->numCrtcs; i++) { ++ xf86RandR12CrtcGetGamma(pScreen, rp->crtcs[i]); ++ } + return TRUE; + } + +-- +1.6.5.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.7.1-multilib.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.7.1-multilib.patch new file mode 100644 index 0000000..6435999 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.7.1-multilib.patch @@ -0,0 +1,55 @@ +From 6d9585ba6a5784328de479c6b648d7b7d6cec64c Mon Sep 17 00:00:00 2001 +From: Adam Jackson ajax@redhat.com +Date: Thu, 29 Oct 2009 19:04:10 -0400 +Subject: [PATCH] multilib fix for -devel subpackage + +--- + include/colormapst.h | 4 ++-- + include/xorg-server.h.in | 7 ++++--- + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/include/colormapst.h b/include/colormapst.h +index f1fc8eb..274cd65 100644 +--- a/include/colormapst.h ++++ b/include/colormapst.h +@@ -103,12 +103,12 @@ typedef struct _ColormapRec + { + VisualPtr pVisual; + short class; /* PseudoColor or DirectColor */ +-#if defined(_XSERVER64) ++#ifdef __LP64__ + short pad0; + XID pad1; + #endif + XID mid; /* client's name for colormap */ +-#if defined(_XSERVER64) && (X_BYTE_ORDER == X_LITTLE_ENDIAN) ++#if defined(__LP64__) && (X_BYTE_ORDER == X_LITTLE_ENDIAN) + XID pad2; + #endif + ScreenPtr pScreen; /* screen map is associated with */ +diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in +index 76cab16..081b8f3 100644 +--- a/include/xorg-server.h.in ++++ b/include/xorg-server.h.in +@@ -157,9 +157,6 @@ + /* Name of X server */ + #undef __XSERVERNAME__ + +-/* Define to 1 if unsigned long is 64 bits. */ +-#undef _XSERVER64 +- + /* Building vgahw module */ + #undef WITH_VGAHW + +@@ -187,4 +184,8 @@ + /* X Access Control Extension */ + #undef XACE + ++#ifdef __LP64__ ++#define _XSERVER64 1 ++#endif ++ + #endif /* _XORG_SERVER_H_ */ +-- +1.6.5.2 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.8-disable-vboxvideo.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.8-disable-vboxvideo.patch new file mode 100644 index 0000000..60c0dce --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.8-disable-vboxvideo.patch @@ -0,0 +1,25 @@ +From 1f315578bf759c85261b1f2295efbf0dba852f73 Mon Sep 17 00:00:00 2001 +From: Adam Williamson adamwill@shaw.ca +Date: Thu, 25 Feb 2010 10:34:49 -0800 +Subject: [PATCH] disable vboxvideo driver in autodetect code + +--- + hw/xfree86/common/xf86AutoConfig.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c +index 7f4ada8..4e944ea 100644 +--- a/hw/xfree86/common/xf86AutoConfig.c ++++ b/hw/xfree86/common/xf86AutoConfig.c +@@ -220,7 +220,7 @@ videoPtrToDriverList(struct pci_device *dev, + case 0x1011: driverList[0] = "tga"; break; + case 0x1023: driverList[0] = "trident"; break; + case 0x100c: driverList[0] = "tseng"; break; +- case 0x80ee: driverList[0] = "vboxvideo"; break; ++ case 0x80ee: driverList[0] = "vesa"; break; + case 0x15ad: driverList[0] = "vmware"; break; + case 0x18ca: + if (dev->device_id == 0x47) +-- +1.7.0 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.8-no-connected-outputs.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.8-no-connected-outputs.patch new file mode 100644 index 0000000..3ee8542 --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.8-no-connected-outputs.patch @@ -0,0 +1,142 @@ +From b27f93c6dbe0a6e416db2c65738e996c70a403c1 Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas airlied@redhat.com +Date: Thu, 6 May 2010 12:55:34 +1000 +Subject: [PATCH] xf86: allow for no outputs connected at startup operation. + +When nothing is connected at startup and we canGrow, allow the server to start with a 1024x768 framebuffer, and when the drivers send hotplug events this will expand to the correct size dynamically. + +Signed-off-by: Dave Airlie airlied@redhat.com +--- + hw/xfree86/modes/xf86Crtc.c | 66 ++++++++++++++++++++++++++++++------------ + 1 files changed, 47 insertions(+), 19 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 571ffd0..99082ec 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -48,6 +48,8 @@ + + #include "xf86xv.h" + ++#define NO_OUTPUT_DEFAULT_WIDTH 1024 ++#define NO_OUTPUT_DEFAULT_HEIGHT 768 + /* + * Initialize xf86CrtcConfig structure + */ +@@ -1946,7 +1948,7 @@ xf86SetScrnInfoModes (ScrnInfoPtr scrn) + #endif + } + +-static void ++static Bool + xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, + Bool *enabled) + { +@@ -1961,8 +1963,10 @@ xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, + "No outputs definitely connected, trying again...\n"); + + for (o = 0; o < config->num_output; o++) +- enabled[o] = xf86OutputEnabled(config->output[o], FALSE); ++ any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], FALSE); + } ++ ++ return any_enabled; + } + + static Bool +@@ -2409,6 +2413,8 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + Bool *enabled; + int width, height; + int i = scrn->scrnIndex; ++ Bool have_outputs = TRUE; ++ Bool ret; + + /* Set up the device options */ + config->options = xnfalloc (sizeof (xf86DeviceOptions)); +@@ -2433,20 +2439,26 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + modes = xnfcalloc (config->num_output, sizeof (DisplayModePtr)); + enabled = xnfcalloc (config->num_output, sizeof (Bool)); + +- xf86CollectEnabledOutputs(scrn, config, enabled); +- +- if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) +- xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); +- else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) +- xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); +- else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) +- xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); +- else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) +- xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); +- else if (xf86TargetFallback(scrn, config, modes, enabled, width, height)) +- xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n"); +- else +- xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n"); ++ ret = xf86CollectEnabledOutputs(scrn, config, enabled); ++ if (ret == FALSE && canGrow) { ++ xf86DrvMsg(i, X_WARNING, "Unable to find connected outputs - setting %dx%d initial framebuffer\n", ++ NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT); ++ have_outputs = FALSE; ++ } ++ else { ++ if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) ++ xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); ++ else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) ++ xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); ++ else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) ++ xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); ++ else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) ++ xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); ++ else if (xf86TargetFallback(scrn, config, modes, enabled, width, height)) ++ xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n"); ++ else ++ xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n"); ++ } + + for (o = -1; nextEnabledOutput(config, enabled, &o); ) { + if (!modes[o]) +@@ -2479,7 +2491,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + /* + * Assign CRTCs to fit output configuration + */ +- if (!xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) ++ if (have_outputs && !xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) + { + xfree (crtcs); + xfree (modes); +@@ -2541,6 +2553,13 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + */ + xf86DefaultScreenLimits (scrn, &width, &height, canGrow); + ++ if (have_outputs == FALSE) { ++ if (width < NO_OUTPUT_DEFAULT_WIDTH && height < NO_OUTPUT_DEFAULT_HEIGHT) { ++ width = NO_OUTPUT_DEFAULT_WIDTH; ++ height = NO_OUTPUT_DEFAULT_HEIGHT; ++ } ++ } ++ + scrn->display->virtualX = width; + scrn->display->virtualY = height; + } +@@ -2566,8 +2585,17 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + width, height); + } + +- /* Mirror output modes to scrn mode list */ +- xf86SetScrnInfoModes (scrn); ++ if (have_outputs) { ++ /* Mirror output modes to scrn mode list */ ++ xf86SetScrnInfoModes (scrn); ++ } else { ++ /* Clear any existing modes from scrn->modes */ ++ while (scrn->modes != NULL) ++ xf86DeleteMode(&scrn->modes, scrn->modes); ++ scrn->modes = xf86ModesAdd(scrn->modes, ++ xf86CVTMode(width, height, 60, 0, 0)); ++ } ++ + + xfree (crtcs); + xfree (modes); +-- +1.7.0.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.8-randr-initial.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.8-randr-initial.patch new file mode 100644 index 0000000..2db8a8c --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.8-randr-initial.patch @@ -0,0 +1,35 @@ +From f22b6f8a5899f125de63738e69aaddc2dd0a5d0a Mon Sep 17 00:00:00 2001 +From: Ben Skeggs bskeggs@redhat.com +Date: Mon, 7 Jun 2010 10:10:10 +1000 +Subject: [PATCH] randr: prevent an unnecessary screen resize with multiple displays + +crtc->{x,y} is always 0 when xf86DefaultScreenLimits() is called, so we +calculate too small an area for the initial framebuffer and force a resize +to happen. + +This commit fixes the code to use desired{X,Y} instead, which contains the +initial output positions. + +Signed-off-by: Ben Skeggs bskeggs@redhat.com +--- + hw/xfree86/modes/xf86Crtc.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 51e7b5a..c2ad7bc 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -1041,8 +1041,8 @@ xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp, + + if (crtc->enabled) + { +- crtc_width = crtc->x + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation); +- crtc_height = crtc->y + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation); ++ crtc_width = crtc->desiredX + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation); ++ crtc_height = crtc->desiredY + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation); + } + if (!canGrow) { + for (o = 0; o < config->num_output; o++) +-- +1.6.6 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.8-udev-warning.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.8-udev-warning.patch new file mode 100644 index 0000000..93071fd --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.8-udev-warning.patch @@ -0,0 +1,37 @@ +From 57a188877b0472edb12bdf707b1550abbeb85af8 Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas x@fedoraproject.org +Date: Wed, 17 Feb 2010 11:12:36 +1000 +Subject: [PATCH] Stick giant warning into logfiles about udev configuration changes. + +Signed-off-by: Fedora X Ninjas x@fedoraproject.org +--- + hw/xfree86/common/xf86Config.c | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c +index 132e8bc..b1722cd 100644 +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -1472,6 +1472,19 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) + "input devices.\n\tIf no devices become available, " + "reconfigure %s or disable AutoAddDevices.\n", + config_backend, config_backend); ++ ++ xf86Msg(X_INFO, "\n" ++ "***************************************************************\n" ++ "***************************************************************\n" ++ "** Fedora switched to udev-based device detection with **\n" ++ "** xorg-x11-server-1.7.99.901-1. Custom HAL configuration **\n" ++ "** stored in /etc/hal/fdi/policy will not be seen by this **\n" ++ "** server version. If you have such configuration you will **\n" ++ "** need to update it to the new format. **\n" ++ "** For more information, see the Fedora wiki page **\n" ++ "** https://fedoraproject.org/wiki/Input_device_configuration **\n" ++ "***************************************************************\n" ++ "***************************************************************\n"); + #else + xf86Msg(X_INFO, "Hotplugging is disabled and no input devices were configured.\n" + "\tTry disabling AllowEmptyInput.\n"); +-- +1.6.6.1 + diff --git a/pkgs/core/xorg-x11-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch b/pkgs/core/xorg-x11-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch new file mode 100644 index 0000000..ece8a6c --- /dev/null +++ b/pkgs/core/xorg-x11-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch @@ -0,0 +1,909 @@ +From deab888bb3bb2a56963da50ff551bd66fbd858a1 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer peter.hutterer@who-t.net +Date: Tue, 29 Jun 2010 13:49:27 +1000 +Subject: [PATCH 1/5] xkb: Mark switch case fallthrough with comment. + +Signed-off-by: Peter Hutterer peter.hutterer@who-t.net +--- + xkb/xkbActions.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index 4c7bce2..6a7f36d 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -625,6 +625,8 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, + break; + } + xkbi->lockedPtrButtons&= ~(1<<button); ++ ++ /* fallthrough */ + case XkbSA_PtrBtn: + XkbDDXFakeDeviceButton(xkbi->device, 0, button); + break; +-- +1.7.1 + +From 50b6311dbd2594acc36d6856fdde8623459f1374 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer peter.hutterer@who-t.net +Date: Tue, 29 Jun 2010 12:12:53 +1000 +Subject: [PATCH 2/5] xkb: merge lockedPtrButtons state from all attached SDs. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Problem: +lockedPtrButtons keeps the state of the buttons locked by a PointerKeys button +press. Unconditionally clearing the bits may cause stuck buttons in this +sequence of events: + +1. type Shift + NumLock to enable PointerKeys +2. type 0/Ins on keypad to emulate Button 1 press + → button1 press event to client +3. press and release button 1 on physical mouse + → button1 release event to client + +Button 1 on the MD is now stuck and cannot be released. + +Cause: +XKB PointerKeys button events are posted through the XTEST pointer device. +Once a press is generated, the XTEST device's button is down. The DIX merges +the button state of all attached SDs, hence the MD will have a button down +while the XTEST device has a button down. + +PointerKey button events are only generated on the master device to avoid +duplicate events (see XkbFakeDeviceButton()). If the MD has the +lockedPtrButtons bit cleared by a release event on a physical device, no +such event is generated when a keyboard device triggers the PointerKey +ButtonRelease trigger. Since the event - if generated - is posted through +the XTEST pointer device, lack of a generated ButtonRelease event on the +XTEST pointer device means the button is never released, resulting in the +stuck button observed above. + +Solution: +This patch merges the MD's lockedPtrButtons with the one of all attached +slave devices on release events. Thus, as long as one attached keyboard has +a lockedPtrButtons bit set, this bit is kept in the MD. Once a PointerKey +button is released on all keyboards, the matching release event is emulated +from the MD through the XTEST pointer device, thus also releasing the button +in the DIX. + +Signed-off-by: Peter Hutterer peter.hutterer@who-t.net +--- + include/xkbsrv.h | 3 +++ + xkb/xkbAccessX.c | 18 +++++++++++++++++- + xkb/xkbActions.c | 8 ++++++++ + xkb/xkbUtils.c | 26 ++++++++++++++++++++++++++ + 4 files changed, 54 insertions(+), 1 deletions(-) + +diff --git a/include/xkbsrv.h b/include/xkbsrv.h +index c0cd501..f0db0e4 100644 +--- a/include/xkbsrv.h ++++ b/include/xkbsrv.h +@@ -933,6 +933,9 @@ extern int XkbGetEffectiveGroup( + XkbStatePtr /* xkbstate */, + CARD8 /* keycode */); + ++extern void XkbMergeLockedPtrBtns( ++ DeviceIntPtr /* master */); ++ + #include "xkbfile.h" + #include "xkbrules.h" + +diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c +index be1dcee..e3fdc06 100644 +--- a/xkb/xkbAccessX.c ++++ b/xkb/xkbAccessX.c +@@ -707,8 +707,24 @@ DeviceEvent *event = &ev->device_event; + changed |= XkbPointerButtonMask; + } + else if (event->type == ET_ButtonRelease) { +- if (xkbi) ++ if (xkbi) { + xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7)); ++ ++ /* Merge this MD's lockedPtrButtons with the one of all ++ * attached slave devices. ++ * The DIX uses a merged button state for MDs, not ++ * releasing buttons until the last SD has released ++ * thenm. If we unconditionally clear the ++ * lockedPtrButtons bit on the MD, a PointerKeys button ++ * release on the SD keyboard won't generate the required fake button ++ * event on the XTEST pointer, thus never processing the ++ * button event in the DIX and the XTEST pointer's ++ * buttons stay down - result is a stuck button. ++ */ ++ if (IsMaster(dev)) ++ XkbMergeLockedPtrBtns(dev); ++ } ++ + changed |= XkbPointerButtonMask; + } + +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index 6a7f36d..ab52b6a 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -626,6 +626,14 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, + } + xkbi->lockedPtrButtons&= ~(1<<button); + ++ if (IsMaster(xkbi->device)) ++ { ++ XkbMergeLockedPtrBtns(xkbi->device); ++ /* One SD still has lock set, don't post event */ ++ if ((xkbi->lockedPtrButtons & (1 << button)) != 0) ++ break; ++ } ++ + /* fallthrough */ + case XkbSA_PtrBtn: + XkbDDXFakeDeviceButton(xkbi->device, 0, button); +diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c +index b1e0e55..d7d1935 100644 +--- a/xkb/xkbUtils.c ++++ b/xkb/xkbUtils.c +@@ -2190,3 +2190,29 @@ XkbGetEffectiveGroup(XkbSrvInfoPtr xkbi, XkbStatePtr xkbState, CARD8 keycode) + + return effectiveGroup; + } ++ ++/* Merge the lockedPtrButtons from all attached SDs for the given master ++ * device into the MD's state. ++ */ ++void ++XkbMergeLockedPtrBtns(DeviceIntPtr master) ++{ ++ DeviceIntPtr d = inputInfo.devices; ++ XkbSrvInfoPtr xkbi = NULL; ++ ++ if (!IsMaster(master)) ++ return; ++ ++ if (!master->key) ++ return; ++ ++ xkbi = master->key->xkbInfo; ++ xkbi->lockedPtrButtons = 0; ++ ++ for (; d; d = d->next) { ++ if (IsMaster(d) || GetMaster(d, MASTER_KEYBOARD) != master || !d->key) ++ continue; ++ ++ xkbi->lockedPtrButtons |= d->key->xkbInfo->lockedPtrButtons; ++ } ++} +-- +1.7.1 + +From 4a4224f5d786035af88c251a9ee177217e8f77fd Mon Sep 17 00:00:00 2001 +From: Peter Hutterer peter.hutterer@who-t.net +Date: Wed, 14 Apr 2010 10:54:29 +1000 +Subject: [PATCH 3/5] xkb: rename XkbFakeDeviceButton and XkbFakeDeviceMotion, move into xkbActions.c + +The name XkbDDXFakeDeviceButton and XkbDDXFakeDeviceMotion is somewhat +misleading, there's no DDX involved in the game at all anymore. + +This removes XkbFakeDeviceMotion and XkbFakeDeviceButton from the API where +it arguably shouldn't have been in the first place. + +Signed-off-by: Peter Hutterer peter.hutterer@who-t.net +Reviewed-by: Daniel Stone daniel@fooishbar.org +Reviewed-by: Dan Nicholson dbn.lists@gmail.com +--- + include/xkbsrv.h | 13 ------- + xkb/Makefile.am | 4 +-- + xkb/ddxDevBtn.c | 69 -------------------------------------- + xkb/ddxFakeMtn.c | 64 ----------------------------------- + xkb/xkbActions.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++------- + 5 files changed, 85 insertions(+), 162 deletions(-) + delete mode 100644 xkb/ddxDevBtn.c + delete mode 100644 xkb/ddxFakeMtn.c + +diff --git a/include/xkbsrv.h b/include/xkbsrv.h +index f0db0e4..d1cbd1a 100644 +--- a/include/xkbsrv.h ++++ b/include/xkbsrv.h +@@ -768,19 +768,6 @@ extern _X_EXPORT void XkbDDXUpdateDeviceIndicators( + CARD32 /* newState */ + ); + +-extern _X_EXPORT void XkbDDXFakePointerMotion( +- DeviceIntPtr /* dev */, +- unsigned int /* flags */, +- int /* x */, +- int /* y */ +-); +- +-extern _X_EXPORT void XkbDDXFakeDeviceButton( +- DeviceIntPtr /* dev */, +- Bool /* press */, +- int /* button */ +-); +- + extern _X_EXPORT int XkbDDXTerminateServer( + DeviceIntPtr /* dev */, + KeyCode /* key */, +diff --git a/xkb/Makefile.am b/xkb/Makefile.am +index e54ce59..fb3ccbf 100644 +--- a/xkb/Makefile.am ++++ b/xkb/Makefile.am +@@ -5,11 +5,9 @@ AM_CFLAGS = $(DIX_CFLAGS) + DDX_SRCS = \ + ddxBeep.c \ + ddxCtrls.c \ +- ddxFakeMtn.c \ + ddxLEDs.c \ + ddxLoad.c \ +- ddxList.c \ +- ddxDevBtn.c ++ ddxList.c + + DIX_SRCS = \ + xkb.c \ +diff --git a/xkb/ddxDevBtn.c b/xkb/ddxDevBtn.c +deleted file mode 100644 +index b8a1255..0000000 +--- a/xkb/ddxDevBtn.c ++++ /dev/null +@@ -1,69 +0,0 @@ +-/************************************************************ +-Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc. +- +-Permission to use, copy, modify, and distribute this +-software and its documentation for any purpose and without +-fee is hereby granted, provided that the above copyright +-notice appear in all copies and that both that copyright +-notice and this permission notice appear in supporting +-documentation, and that the name of Silicon Graphics not be +-used in advertising or publicity pertaining to distribution +-of the software without specific prior written permission. +-Silicon Graphics makes no representation about the suitability +-of this software for any purpose. It is provided "as is" +-without any express or implied warranty. +- +-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +-THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +-********************************************************/ +- +-#ifdef HAVE_DIX_CONFIG_H +-#include <dix-config.h> +-#endif +- +-#include "inputstr.h" +-#include <xkbsrv.h> +-#include "mi.h" +- +-void +-XkbDDXFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) +-{ +- EventListPtr events; +- int nevents, i; +- DeviceIntPtr ptr; +- +- /* If dev is a slave device, and the SD is attached, do nothing. If we'd +- * post through the attached master pointer we'd get duplicate events. +- * +- * if dev is a master keyboard, post through the XTEST device +- * +- * if dev is a floating slave, post through the device itself. +- */ +- +- if (IsMaster(dev)) +- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); +- else if (!dev->u.master) +- ptr = dev; +- else +- return; +- +- events = InitEventList(GetMaximumEventsNum()); +- OsBlockSignals(); +- nevents = GetPointerEvents(events, ptr, +- press ? ButtonPress : ButtonRelease, button, +- 0 /* flags */, 0 /* first */, +- 0 /* num_val */, NULL); +- OsReleaseSignals(); +- +- for (i = 0; i < nevents; i++) +- mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); +- +- FreeEventList(events, GetMaximumEventsNum()); +-} +diff --git a/xkb/ddxFakeMtn.c b/xkb/ddxFakeMtn.c +deleted file mode 100644 +index b383716..0000000 +--- a/xkb/ddxFakeMtn.c ++++ /dev/null +@@ -1,64 +0,0 @@ +-/************************************************************ +-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. +- +-Permission to use, copy, modify, and distribute this +-software and its documentation for any purpose and without +-fee is hereby granted, provided that the above copyright +-notice appear in all copies and that both that copyright +-notice and this permission notice appear in supporting +-documentation, and that the name of Silicon Graphics not be +-used in advertising or publicity pertaining to distribution +-of the software without specific prior written permission. +-Silicon Graphics makes no representation about the suitability +-of this software for any purpose. It is provided "as is" +-without any express or implied warranty. +- +-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +-THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +-********************************************************/ +- +-#ifdef HAVE_DIX_CONFIG_H +-#include <dix-config.h> +-#endif +- +-#include "inputstr.h" +-#include <xkbsrv.h> +-#include "mi.h" +- +-void +-XkbDDXFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) +-{ +- EventListPtr events; +- int nevents, i; +- DeviceIntPtr ptr; +- int gpe_flags = 0; +- +- if (!dev->u.master) +- ptr = dev; +- else +- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); +- +- if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) +- gpe_flags = POINTER_ABSOLUTE; +- else +- gpe_flags = POINTER_RELATIVE; +- +- events = InitEventList(GetMaximumEventsNum()); +- OsBlockSignals(); +- nevents = GetPointerEvents(events, ptr, +- MotionNotify, 0, +- gpe_flags, 0, 2, (int[]){x, y}); +- OsReleaseSignals(); +- +- for (i = 0; i < nevents; i++) +- mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); +- +- FreeEventList(events, GetMaximumEventsNum()); +-} +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index ab52b6a..2817e39 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -40,11 +40,15 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. + #include <xkbsrv.h> + #include "xkb.h" + #include <ctype.h> ++#include "mi.h" + #define EXTENSION_EVENT_BASE 64 + + static int xkbDevicePrivateKeyIndex; + DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex; + ++static void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); ++static void XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y); ++ + void + xkbUnwrapProc(DeviceIntPtr device, DeviceHandleProc proc, + pointer data) +@@ -479,7 +483,7 @@ int dx,dy; + dx= xkbi->mouseKeysDX; + dy= xkbi->mouseKeysDY; + } +- XkbDDXFakePointerMotion(xkbi->device, xkbi->mouseKeysFlags,dx,dy); ++ XkbFakePointerMotion(xkbi->device, xkbi->mouseKeysFlags,dx,dy); + return xkbi->desc->ctrls->mk_interval; + } + +@@ -507,7 +511,7 @@ Bool accel; + accel= ((pAction->ptr.flags&XkbSA_NoAcceleration)==0); + x= XkbPtrActionX(&pAction->ptr); + y= XkbPtrActionY(&pAction->ptr); +- XkbDDXFakePointerMotion(xkbi->device, pAction->ptr.flags,x,y); ++ XkbFakePointerMotion(xkbi->device, pAction->ptr.flags,x,y); + AccessXCancelRepeatKey(xkbi,keycode); + xkbi->mouseKeysAccel= accel&& + (xkbi->desc->ctrls->enabled_ctrls&XkbMouseKeysAccelMask); +@@ -554,7 +558,7 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, + ((pAction->btn.flags&XkbSA_LockNoLock)==0)) { + xkbi->lockedPtrButtons|= (1<<button); + AccessXCancelRepeatKey(xkbi,keycode); +- XkbDDXFakeDeviceButton(xkbi->device, 1, button); ++ XkbFakeDeviceButton(xkbi->device, 1, button); + filter->upAction.type= XkbSA_NoAction; + } + break; +@@ -565,12 +569,12 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, + if (pAction->btn.count>0) { + nClicks= pAction->btn.count; + for (i=0;i<nClicks;i++) { +- XkbDDXFakeDeviceButton(xkbi->device, 1, button); +- XkbDDXFakeDeviceButton(xkbi->device, 0, button); ++ XkbFakeDeviceButton(xkbi->device, 1, button); ++ XkbFakeDeviceButton(xkbi->device, 0, button); + } + filter->upAction.type= XkbSA_NoAction; + } +- else XkbDDXFakeDeviceButton(xkbi->device, 1, button); ++ else XkbFakeDeviceButton(xkbi->device, 1, button); + } + break; + case XkbSA_SetPtrDflt: +@@ -636,7 +640,7 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, + + /* fallthrough */ + case XkbSA_PtrBtn: +- XkbDDXFakeDeviceButton(xkbi->device, 0, button); ++ XkbFakeDeviceButton(xkbi->device, 0, button); + break; + } + filter->active = 0; +@@ -974,7 +978,7 @@ int button; + if ((pAction->devbtn.flags&XkbSA_LockNoLock)|| + BitIsOn(dev->button->down, button)) + return 0; +- XkbDDXFakeDeviceButton(dev,TRUE,button); ++ XkbFakeDeviceButton(dev,TRUE,button); + filter->upAction.type= XkbSA_NoAction; + break; + case XkbSA_DeviceBtn: +@@ -982,12 +986,12 @@ int button; + int nClicks,i; + nClicks= pAction->btn.count; + for (i=0;i<nClicks;i++) { +- XkbDDXFakeDeviceButton(dev,TRUE,button); +- XkbDDXFakeDeviceButton(dev,FALSE,button); ++ XkbFakeDeviceButton(dev,TRUE,button); ++ XkbFakeDeviceButton(dev,FALSE,button); + } + filter->upAction.type= XkbSA_NoAction; + } +- else XkbDDXFakeDeviceButton(dev,TRUE,button); ++ else XkbFakeDeviceButton(dev,TRUE,button); + break; + } + } +@@ -1006,10 +1010,10 @@ int button; + if ((filter->upAction.devbtn.flags&XkbSA_LockNoUnlock)|| + !BitIsOn(dev->button->down, button)) + return 0; +- XkbDDXFakeDeviceButton(dev,FALSE,button); ++ XkbFakeDeviceButton(dev,FALSE,button); + break; + case XkbSA_DeviceBtn: +- XkbDDXFakeDeviceButton(dev,FALSE,button); ++ XkbFakeDeviceButton(dev,FALSE,button); + break; + } + filter->active = 0; +@@ -1326,3 +1330,70 @@ xkbStateNotify sn; + return; + } + ++static void ++XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) ++{ ++ EventListPtr events; ++ int nevents, i; ++ DeviceIntPtr ptr; ++ int gpe_flags = 0; ++ ++ if (!dev->u.master) ++ ptr = dev; ++ else ++ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); ++ ++ if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) ++ gpe_flags = POINTER_ABSOLUTE; ++ else ++ gpe_flags = POINTER_RELATIVE; ++ ++ events = InitEventList(GetMaximumEventsNum()); ++ OsBlockSignals(); ++ nevents = GetPointerEvents(events, ptr, ++ MotionNotify, 0, ++ gpe_flags, 0, 2, (int[]){x, y}); ++ OsReleaseSignals(); ++ ++ for (i = 0; i < nevents; i++) ++ mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); ++ ++ FreeEventList(events, GetMaximumEventsNum()); ++} ++ ++static void ++XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) ++{ ++ EventListPtr events; ++ int nevents, i; ++ DeviceIntPtr ptr; ++ ++ /* If dev is a slave device, and the SD is attached, do nothing. If we'd ++ * post through the attached master pointer we'd get duplicate events. ++ * ++ * if dev is a master keyboard, post through the XTEST device ++ * ++ * if dev is a floating slave, post through the device itself. ++ */ ++ ++ if (IsMaster(dev)) ++ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); ++ else if (!dev->u.master) ++ ptr = dev; ++ else ++ return; ++ ++ events = InitEventList(GetMaximumEventsNum()); ++ OsBlockSignals(); ++ nevents = GetPointerEvents(events, ptr, ++ press ? ButtonPress : ButtonRelease, button, ++ 0 /* flags */, 0 /* first */, ++ 0 /* num_val */, NULL); ++ OsReleaseSignals(); ++ ++ ++ for (i = 0; i < nevents; i++) ++ mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); ++ ++ FreeEventList(events, GetMaximumEventsNum()); ++} +-- +1.7.1 + +From dcb46252f959893f1934232698e2ae26390a8a5b Mon Sep 17 00:00:00 2001 +From: Peter Hutterer peter.hutterer@who-t.net +Date: Tue, 29 Jun 2010 15:24:51 +1000 +Subject: [PATCH 4/5] xkb: emulate PointerKeys events only on the master device. + +This patch replicates the behaviour for button events. Only generate a +PointerKeys motion event on the master device, not on the slave device. +Fixes the current issue of PointerKey motion events generating key events as +well. + +Signed-off-by: Peter Hutterer peter.hutterer@who-t.net +--- + xkb/xkbActions.c | 9 ++++----- + 1 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index 2817e39..391c375 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -496,9 +496,6 @@ _XkbFilterPointerMove( XkbSrvInfoPtr xkbi, + int x,y; + Bool accel; + +- if (xkbi->device == inputInfo.keyboard) +- return 0; +- + if (filter->keycode==0) { /* initial press */ + filter->keycode = keycode; + filter->active = 1; +@@ -1338,10 +1335,12 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) + DeviceIntPtr ptr; + int gpe_flags = 0; + +- if (!dev->u.master) ++ if (IsMaster(dev)) ++ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); ++ else if (!dev->u.master) + ptr = dev; + else +- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); ++ return; + + if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) + gpe_flags = POINTER_ABSOLUTE; +-- +1.7.1 + +From 40941fb2e9ae763add7b74850e8a0471ac754db6 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer peter.hutterer@who-t.net +Date: Thu, 1 Jul 2010 12:44:57 +1000 +Subject: [PATCH 5/5] xkb: release XTEST pointer buttons on physical releases. (#28808) + +If a button release event is posted for the MD pointer, post a release event +through the matching XTEST device. This way, a client who posts a button +press through the XTEST extension cannot inadvertedly lock the button. + +This behaviour is required for historical reasons, until server 1.7 the core +pointer would release a button press on physical events, regardless of the +XTEST state. Clients seem to rely on this behaviour, causing seemingly stuck +grabs. + +The merged behaviour is kept for multiple keyboard PointerKey events, if two +physical keyboards hold the button down as a result of PointerKey actions, +the button is not released until the last keyboard releases the button. + +X.Org Bug 28808 http://bugs.freedesktop.org/show_bug.cgi?id=28808 + +Signed-off-by: Peter Hutterer peter.hutterer@who-t.net +--- + include/xkbsrv.h | 6 ++++++ + xkb/xkbAccessX.c | 23 ++++++++++------------- + xkb/xkbActions.c | 4 ++-- + 3 files changed, 18 insertions(+), 15 deletions(-) + +diff --git a/include/xkbsrv.h b/include/xkbsrv.h +index d1cbd1a..a96ca56 100644 +--- a/include/xkbsrv.h ++++ b/include/xkbsrv.h +@@ -923,6 +923,12 @@ extern int XkbGetEffectiveGroup( + extern void XkbMergeLockedPtrBtns( + DeviceIntPtr /* master */); + ++extern void XkbFakeDeviceButton( ++ DeviceIntPtr /* dev */, ++ int /* press */, ++ int /* button */); ++ ++ + #include "xkbfile.h" + #include "xkbrules.h" + +diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c +index e3fdc06..d3f9652 100644 +--- a/xkb/xkbAccessX.c ++++ b/xkb/xkbAccessX.c +@@ -710,19 +710,16 @@ DeviceEvent *event = &ev->device_event; + if (xkbi) { + xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7)); + +- /* Merge this MD's lockedPtrButtons with the one of all +- * attached slave devices. +- * The DIX uses a merged button state for MDs, not +- * releasing buttons until the last SD has released +- * thenm. If we unconditionally clear the +- * lockedPtrButtons bit on the MD, a PointerKeys button +- * release on the SD keyboard won't generate the required fake button +- * event on the XTEST pointer, thus never processing the +- * button event in the DIX and the XTEST pointer's +- * buttons stay down - result is a stuck button. +- */ +- if (IsMaster(dev)) +- XkbMergeLockedPtrBtns(dev); ++ if (IsMaster(dev)) ++ { ++ DeviceIntPtr source; ++ int rc; ++ rc = dixLookupDevice(&source, event->sourceid, serverClient, DixWriteAccess); ++ if (rc != Success) ++ ErrorF("[xkb] bad sourceid '%d' on button release event.\n", event->sourceid); ++ else if (!IsXTestDevice(source, GetMaster(dev, MASTER_POINTER))) ++ XkbFakeDeviceButton(dev, FALSE, event->detail.key); ++ } + } + + changed |= XkbPointerButtonMask; +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index 391c375..5d40199 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -46,7 +46,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. + static int xkbDevicePrivateKeyIndex; + DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex; + +-static void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); ++void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); + static void XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y); + + void +@@ -1360,7 +1360,7 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) + FreeEventList(events, GetMaximumEventsNum()); + } + +-static void ++void + XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) + { + EventListPtr events; +-- +1.7.1 + +From 7273832bcdc6f43e9a5a8fdbb56844466efb710a Mon Sep 17 00:00:00 2001 +From: Peter Hutterer peter.hutterer@who-t.net +Date: Fri, 23 Jul 2010 11:46:30 +1000 +Subject: [PATCH 1/3] xkb: post-fix PointerKeys button events with a DeviceChangedEvent. + +commit 14327858391ebe929b806efb53ad79e789361883 + xkb: release XTEST pointer buttons on physical releases. (#28808) +revealed a bug with the XTEST/PointerKeys interaction. + +Events resulting from PointerKeys are injected into the event processing +stream, not appended to the event queue. The events generated for the fake +button press include a DeviceChangedEvent (DCE), a raw button event and the +button event itself. The DCE causes the master to switch classes to the +attached XTEST pointer device. + +Once the fake button is processed, normal event processing continues with +events in the EQ. The master still contains the XTEST classes, causing some +events to be dropped if e.g. the number of valuators of the event in the +queue exceeds the XTEST device's number of valuators. + +Example: the EQ contains the following events, processed one-by-one, left to +right. + +[DCE (dev)][Btn down][Btn up][Motion][Motion][...] + ^ XkbFakeDeviceButton injects [DCE (XTEST)][Btn up] + +Thus the event sequence processed looks like this: + +[DCE (dev)][Btn down][Btn up][DCE (XTEST)][Btn up][Motion][Motion][...] + +The first DCE causes the master to switch to the device. The button up event +injects a DCE to the XTEST device, causing the following Motion events to be +processed with the master still being on XTEST classes. + +This patch post-fixes the injected event sequence with a DCE to restore the +classes of the original slave device, resulting in an event sequence like +this: +[DCE (dev)][Btn down][Btn up][DCE (XTEST)][Btn up][DCE (dev)][Motion][Motion] + +Note that this is a simplified description. The event sequence injected by +the PointerKeys code is injected for the master device only and the matching +slave device that caused the injection has already finished processing on +the slave. Furthermore, the injection happens as part of the the XKB layer, +before the unwrapping of the processInputProc takes us into the DIX where +the DCE is actually handled. + +Bug reproducible with a device that reports more than 2 valuators. Simply +cause button releases on the device and wait for a "too many valuators" +warning message. + +Signed-off-by: Peter Hutterer peter.hutterer@who-t.net +--- + xkb/xkbActions.c | 26 +++++++++++++++++++------- + 1 files changed, 19 insertions(+), 7 deletions(-) + +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index 5d40199..2afd46d 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -1365,34 +1365,46 @@ XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) + { + EventListPtr events; + int nevents, i; +- DeviceIntPtr ptr; ++ DeviceIntPtr ptr, mpointer, lastSlave; + + /* If dev is a slave device, and the SD is attached, do nothing. If we'd + * post through the attached master pointer we'd get duplicate events. + * + * if dev is a master keyboard, post through the XTEST device +- * + * if dev is a floating slave, post through the device itself. ++ * ++ * The event is injected into the event processing, not the EQ. Thus, ++ * ensure that we restore the master after the event sequence to the ++ * original set of classes. Otherwise, the master remains on the XTEST ++ * classes and drops events that don't fit into the XTEST layout (e.g. ++ * events with more than 2 valuators). ++ * To do so, we remember the lastSlave that posted through the master ++ * and add a DeviceChangedEvent to the end of the list. + */ + +- if (IsMaster(dev)) +- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); +- else if (!dev->u.master) ++ if (IsMaster(dev)) { ++ mpointer = GetMaster(dev, MASTER_POINTER); ++ lastSlave = mpointer->u.lastSlave; ++ ptr = GetXTestDevice(mpointer); ++ } else if (!dev->u.master) + ptr = dev; + else + return; + +- events = InitEventList(GetMaximumEventsNum()); ++ events = InitEventList(GetMaximumEventsNum() + 1); + OsBlockSignals(); + nevents = GetPointerEvents(events, ptr, + press ? ButtonPress : ButtonRelease, button, + 0 /* flags */, 0 /* first */, + 0 /* num_val */, NULL); ++ if (IsMaster(dev) && (lastSlave && lastSlave != ptr)) ++ CreateClassesChangedEvent(&events[nevents++], mpointer, ++ lastSlave, DEVCHANGE_POINTER_EVENT); + OsReleaseSignals(); + + + for (i = 0; i < nevents; i++) + mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); + +- FreeEventList(events, GetMaximumEventsNum()); ++ FreeEventList(events, GetMaximumEventsNum() + 1); + } +-- +1.7.2 + +From 817e031a996a5f5aa16fc789d7e570cc589d96cb Mon Sep 17 00:00:00 2001 +From: Peter Hutterer peter.hutterer@who-t.net +Date: Wed, 28 Jul 2010 14:24:59 +1000 +Subject: [PATCH 3/3] Xi: reset the unused classes pointer after copying + +After copying the unused_classes into the device, reset the original +pointer. Otherwise we have two pointers pointing to the same field and both +get freed on device removal. + +Some classes already have this behaviour since 51c8fd69. + +Signed-off-by: Peter Hutterer peter.hutterer@who-t.net +--- + Xi/exevents.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/Xi/exevents.c b/Xi/exevents.c +index 566b0ef..a6160dd 100644 +--- a/Xi/exevents.c ++++ b/Xi/exevents.c +@@ -227,6 +227,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) + classes = dixLookupPrivate(&to->devPrivates, + UnusedClassesPrivateKey); + to->intfeed = classes->intfeed; ++ classes->intfeed = NULL; + } + + i = &to->intfeed; +@@ -263,6 +264,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) + classes = dixLookupPrivate(&to->devPrivates, + UnusedClassesPrivateKey); + to->stringfeed = classes->stringfeed; ++ classes->stringfeed = NULL; + } + + s = &to->stringfeed; +@@ -299,6 +301,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) + classes = dixLookupPrivate(&to->devPrivates, + UnusedClassesPrivateKey); + to->bell = classes->bell; ++ classes->bell = NULL; + } + + b = &to->bell; +@@ -336,6 +339,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) + classes = dixLookupPrivate(&to->devPrivates, + UnusedClassesPrivateKey); + to->leds = classes->leds; ++ classes->leds = NULL; + } + + l = &to->leds; +@@ -387,6 +391,7 @@ DeepCopyKeyboardClasses(DeviceIntPtr from, DeviceIntPtr to) + to->kbdfeed = classes->kbdfeed; + if (!to->kbdfeed) + InitKeyboardDeviceStruct(to, NULL, NULL, NULL); ++ classes->kbdfeed = NULL; + } + + k = &to->kbdfeed; +@@ -517,6 +522,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) + classes = dixLookupPrivate(&to->devPrivates, + UnusedClassesPrivateKey); + to->ptrfeed = classes->ptrfeed; ++ classes->ptrfeed = NULL; + } + + p = &to->ptrfeed; +-- +1.7.2 + diff --git a/pkgs/core/xorg-x11-server/xorg-x11-server.nm b/pkgs/core/xorg-x11-server/xorg-x11-server.nm new file mode 100644 index 0000000..7b1236a --- /dev/null +++ b/pkgs/core/xorg-x11-server/xorg-x11-server.nm @@ -0,0 +1,110 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007, 2008 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include $(PKGROOT)/Include + +PKG_NAME = xorg-x11-server +PKG_VER = 1.8.2 +PKG_REL = 0 + +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org +PKG_GROUP = X/Server +PKG_URL = http://www.x.org +PKG_LICENSE = MIT +PKG_SUMMARY = X.Org X11 X server. + +PKG_PACKAGES += $(PKG_NAME_REAL)-devel + +PKG_BUILD_DEPS+= autoconf automake pkg-config xorg-x11-font-utils \ + xorg-x11-util-macros xorg-x11-proto-devel \ + xorg-x11-xtrans-devel +PKG_DEPS += libX11 libXau libXfont libpciaccess libxcb libxkbfile pixman udev + +define PKG_DESCRIPTION + X.org X11 is an open source implementation of the X Window System. \ + It provides the basic low level functionality which full fledged \ + graphical user interfaces (GUIs) such as GNOME and KDE are designed \ + upon. +endef + +PKG_TARBALL = xorg-server-$(PKG_VER).tar.bz2 + +CFLAGS += -Wstrict-overflow -rdynamic + +DIR_APP = $(DIR_SRC)/xorg-server-$(PKG_VER) + +CONFIGURE_OPTIONS += \ + --enable-xvfb \ + --disable-xnest \ + --enable-kdrive \ + --disable-xephyr \ + --disable-xsdl \ + --disable-xfake \ + --disable-xfbdev \ + --enable-xorg \ + --disable-static \ + --with-pic \ + --with-int10=x86emu \ + --with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \ + --with-module-dir=/usr/lib/xorg/modules \ + --with-builderstring="Build ID: $(PKG_NAME) $(PKG_VER)-$(PKG_REL)" \ + --with-os-name="$(hostname -s) $(uname -r)" \ + -with-vendor-name="$(DISTRO_NAME) Project" \ + --with-xkb-output=/var/lib/xkb \ + --enable-install-libxf86config \ + --localstatedir=/var \ + --disable-aiglx \ + --disable-composite \ + --disable-xdmcp \ + --disable-xdm-auth-1 \ + --disable-glx \ + --disable-screensaver \ + --disable-dri \ + --disable-dri2 \ + --disable-xinerama \ + --disable-dbe \ + --disable-config-dbus \ + --disable-config-hal \ + --disable-xquartz \ + --enable-config-udev \ + +define STAGE_PREPARE_CMDS + cd $(DIR_APP) && autoreconf -vfi +endef + +define STAGE_INSTALL + cd $(DIR_APP) && make install DESTDIR=$(BUILDROOT) \ + moduledir=/usr/lib/xorg/modules + + rm -vf $(BUILDROOT)/usr/lib/xorg/modules/libxf8_16bpp.so + rm -vrf $(BUILDROOT)/var/log + + -mkdir -pv $(BUILDROOT)/etc/X11/xorg.conf.d $(BUILDROOT)/usr/share/xorg + cd $(DIR_APP) && install -m 0444 hw/xfree86/common/{vesa,extra}modes \ + $(BUILDROOT)/usr/share/xorg/ + cd $(DIR_APP) && install -m 644 $(DIR_SOURCE)/10-quirks.conf \ + $(BUILDROOT)/usr/share/X11/xorg.conf.d + cd $(DIR_APP) && install -m 644 $(DIR_SOURCE)/xorg.conf \ + $(BUILDROOT)/etc/X11/ +endef diff --git a/pkgs/core/xorg-x11-server/xorg.conf b/pkgs/core/xorg-x11-server/xorg.conf new file mode 100644 index 0000000..684cf4a --- /dev/null +++ b/pkgs/core/xorg-x11-server/xorg.conf @@ -0,0 +1,26 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2010 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +Section "Module" + Load "int10" + Load "vbe" + Load "fb" + Load "shadow" +EndSection diff --git a/pkgs/core/xorg-x11-util-macros/xorg-x11-util-macros.nm b/pkgs/core/xorg-x11-util-macros/xorg-x11-util-macros.nm index b966d5d..92cfbe8 100644 --- a/pkgs/core/xorg-x11-util-macros/xorg-x11-util-macros.nm +++ b/pkgs/core/xorg-x11-util-macros/xorg-x11-util-macros.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-util-macros PKG_VER = 1.10.0 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-xkb-utils/xorg-x11-xkb-utils.nm b/pkgs/core/xorg-x11-xkb-utils/xorg-x11-xkb-utils.nm index ac3e279..f61ab22 100644 --- a/pkgs/core/xorg-x11-xkb-utils/xorg-x11-xkb-utils.nm +++ b/pkgs/core/xorg-x11-xkb-utils/xorg-x11-xkb-utils.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-x11-xkb-utils PKG_VER = 7.4 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Fonts PKG_URL = http://www.x.org/ PKG_LICENSE = MIT diff --git a/pkgs/core/xorg-x11-xtrans-devel/xorg-x11-xtrans-devel.nm b/pkgs/core/xorg-x11-xtrans-devel/xorg-x11-xtrans-devel.nm index ad6df5e..c549b10 100644 --- a/pkgs/core/xorg-x11-xtrans-devel/xorg-x11-xtrans-devel.nm +++ b/pkgs/core/xorg-x11-xtrans-devel/xorg-x11-xtrans-devel.nm @@ -28,7 +28,7 @@ PKG_NAME = xorg-xtrans PKG_VER = 1.2.5 PKG_REL = 0
-PKG_MAINTAINER = +PKG_MAINTAINER = Stefan Schantl stefan.schantl@ipfire.org PKG_GROUP = X/Libraries PKG_URL = http://www.x.org/ PKG_LICENSE = MIT
hooks/post-receive -- IPFire 3.x development tree