Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F109844072
D35661.id107638.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
90 KB
Referenced Files
None
Subscribers
None
D35661.id107638.diff
View Options
Index: Mk/Uses/display.mk
===================================================================
--- Mk/Uses/display.mk
+++ Mk/Uses/display.mk
@@ -14,7 +14,7 @@
. endif
. if !defined(DISPLAY)
-BUILD_DEPENDS+= Xvfb:x11-servers/xorg-vfbserver \
+BUILD_DEPENDS+= Xvfb:x11-servers/xorg-server@Xvfb \
${LOCALBASE}/share/fonts/misc/8x13O.pcf.gz:x11-fonts/xorg-fonts-miscbitmaps \
${LOCALBASE}/share/fonts/misc/fonts.alias:x11-fonts/font-alias \
${LOCALBASE}/share/X11/xkb/rules/base:x11/xkeyboard-config \
Index: Mk/Uses/xorg-cat.mk
===================================================================
--- Mk/Uses/xorg-cat.mk
+++ Mk/Uses/xorg-cat.mk
@@ -17,7 +17,6 @@
# * proto install .pc file, needs pathfix, most only needed at
# build time.
# * util no particular notes
-# * xserver xorg x servers
#
# These categories has to match upstream categories. Don't invent
# your own.
@@ -35,7 +34,7 @@
.if !defined(_INCLUDE_USES_XORG_CAT_MK)
_INCLUDE_USES_XORG_CAT_MK=yes
-_XORG_CATEGORIES= app data doc driver font lib proto util xserver
+_XORG_CATEGORIES= app data doc driver font lib proto util
_XORG_BUILDSYSTEMS= autotools meson
_XORG_CAT= # empty
@@ -163,21 +162,6 @@
. elif ${_XORG_CAT} == proto
.include "${USESDIR}/pathfix.mk"
-. elif ${_XORG_CAT} == xserver
-DISTNAME?= xorg-server-${PORTVERSION}
-CFLAGS+= -Werror=uninitialized
-.include "${USESDIR}/pathfix.mk"
-. if ${_XORG_BUILDSYS} == meson
-# put meson stuff here
-. else
-CONFIGURE_ARGS+= --with-xkb-path=${LOCALBASE}/share/X11/xkb \
- --with-fontrootdir=${LOCALBASE}/share/fonts
-libtool_ARGS?= # empty
-.include "${USESDIR}/libtool.mk"
-. endif
-LIB_PC_DEPENDS+= ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri
-USE_XORG+= fontutil
-
. endif # ${_XORG_CAT} == <category>
# We only need to include xorg.mk if we want USE_XORG modules
Index: net/tsclient/Makefile
===================================================================
--- net/tsclient/Makefile
+++ net/tsclient/Makefile
@@ -34,7 +34,7 @@
.endif
.if ${PORT_OPTIONS:MXNEST}
-RUN_DEPENDS+= Xnest:x11-servers/xorg-nestserver
+RUN_DEPENDS+= Xnest:x11-servers/xorg-server@Xnest
.endif
.include <bsd.port.pre.mk>
Index: www/selenium/Makefile
===================================================================
--- www/selenium/Makefile
+++ www/selenium/Makefile
@@ -1,5 +1,6 @@
PORTNAME= selenium
PORTVERSION= 4.1.3
+PORTREVISION= 1
CATEGORIES= www devel java
MASTER_SITES= https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.1.0/
DISTNAME= selenium-server-${PORTVERSION}
Index: www/selenium/pkg-message
===================================================================
--- www/selenium/pkg-message
+++ www/selenium/pkg-message
@@ -7,7 +7,7 @@
With one or more of these complementary ports:
www/geckodriver
-x11-servers/xorg-vfbserver
+x11-servers/xorg-server@Xvfb
x11-fonts/xorg-fonts
x11-fonts/webfonts
x11/xauth
Index: x11-servers/Makefile
===================================================================
--- x11-servers/Makefile
+++ x11-servers/Makefile
@@ -5,10 +5,7 @@
SUBDIR += x2x
SUBDIR += xarcan
SUBDIR += xephyr
- SUBDIR += xorg-dmx
- SUBDIR += xorg-nestserver
SUBDIR += xorg-server
- SUBDIR += xorg-vfbserver
SUBDIR += xwayland
SUBDIR += xwayland-devel
Index: x11-servers/xephyr/Makefile
===================================================================
--- x11-servers/xephyr/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-PORTNAME= xephyr
-PORTREVISION= 0
-
-COMMENT= X server from X.Org based on kdrive
-
-LICENSE= MIT
-
-LIB_DEPENDS+= libxcb-image.so:x11/xcb-util-image \
- libxcb-icccm.so:x11/xcb-util-wm \
- libxcb-keysyms.so:x11/xcb-util-keysyms \
- libxcb-render-util.so:x11/xcb-util-renderutil \
- libxcb-util.so:x11/xcb-util
-
-MASTERDIR= ${.CURDIR}/../xorg-server
-DESCR= ${.CURDIR}/pkg-descr
-
-SLAVE_PORT= yes
-USE_XORG= x11 xcb
-
-CONFIGURE_ARGS+=--enable-xephyr --disable-dmx --disable-xnest --disable-xvfb \
- --enable-kdrive --disable-xwayland
-
-PLIST_FILES= bin/Xephyr man/man1/Xephyr.1.gz
-
-do-install:
- cd ${WRKSRC}/hw/kdrive/ephyr; DESTDIR=${STAGEDIR} ${MAKE} install
-
-.include "${MASTERDIR}/Makefile"
Index: x11-servers/xephyr/pkg-descr
===================================================================
--- /dev/null
+++ x11-servers/xephyr/pkg-descr
@@ -1,5 +0,0 @@
-Xephyr is a kdrive server that outputs to a window on a pre-existing
-'host' X display. Think Xnest but with support for modern extensions
-like composite, damage and randr.
-
-WWW: https://www.x.org/
Index: x11-servers/xorg-dmx/Makefile
===================================================================
--- x11-servers/xorg-dmx/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Created by: lesi@FreeBSD.org
-
-PORTNAME= xorg-dmx
-PORTREVISION= 0
-
-COMMENT= Distributed Multihead X from X.Org
-
-LICENSE= MIT
-
-MASTERDIR= ${.CURDIR}/../xorg-server
-DESCR= ${.CURDIR}/pkg-descr
-
-SLAVE_PORT= yes
-USE_XORG= dmx xorgproto x11 xaw7 xext xfixes xi xmu xpm xrender xres xt xtst
-
-CONFIGURE_ARGS+=--enable-dmx --disable-xephyr --disable-xnest --disable-xvfb \
- --disable-xwayland
-
-do-install:
- cd ${WRKSRC}/hw/dmx; DESTDIR=${STAGEDIR} ${MAKE} install
-
-.include "${MASTERDIR}/Makefile"
Index: x11-servers/xorg-dmx/pkg-descr
===================================================================
--- x11-servers/xorg-dmx/pkg-descr
+++ /dev/null
@@ -1,6 +0,0 @@
-Xdmx is proxy X server that provides multi-head support for multiple displays
-attached to different machines (each of which is running a typical X server).
-When Xinerama is used with Xdmx, the multiple displays on multiple machines
-are presented to the user as a single unified screen.
-
-WWW: https://www.x.org/
Index: x11-servers/xorg-dmx/pkg-plist
===================================================================
--- x11-servers/xorg-dmx/pkg-plist
+++ /dev/null
@@ -1,16 +0,0 @@
-bin/Xdmx
-bin/dmxaddinput
-bin/dmxaddscreen
-bin/dmxinfo
-bin/dmxreconfig
-bin/dmxresize
-bin/dmxrminput
-bin/dmxrmscreen
-bin/dmxtodmx
-bin/dmxwininfo
-bin/vdltodmx
-bin/xdmxconfig
-man/man1/Xdmx.1.gz
-man/man1/dmxtodmx.1.gz
-man/man1/vdltodmx.1.gz
-man/man1/xdmxconfig.1.gz
Index: x11-servers/xorg-nestserver/pkg-descr
===================================================================
--- /dev/null
+++ x11-servers/xorg-nestserver/pkg-descr
@@ -1,3 +0,0 @@
-This package contains Xnest, a nesting X Server that displays on an X Server.
-
-WWW: https://www.x.org/
Index: x11-servers/xorg-server/Makefile
===================================================================
--- x11-servers/xorg-server/Makefile
+++ x11-servers/xorg-server/Makefile
@@ -1,7 +1,7 @@
# Created by: Eric Anholt <anholt@FreeBSD.org>
-PORTNAME?= xorg-server
-PORTVERSION?= 1.20.14
+PORTNAME?= xorg
+PORTVERSION?= 21.1.3
PORTREVISION?= 0
PORTEPOCH?= 1
CATEGORIES= x11-servers
@@ -13,31 +13,88 @@
LICENSE= MIT
+FLAVORS= xorg Xnest Xephyr Xvfb
+FLAVOR?= ${FLAVORS:[1]}
+
+EXTRA_PATCHES= ${FILESDIR}/0001-xkb-fix-XkbSetMap-when-changing-a-keysym-without-cha.patch:-p1 \
+ ${FILESDIR}/0003-dix_Correctly_save_replayed_event_into_GrabInfoRec.patch:-p1 \
+ ${FILESDIR}/0002-xephyr_Dont_check_for_SeatId_anymore.patch:-p1 \
+ ${FILESDIR}/0004-present_Check_for_NULL_to_prevent_crash.patch:-p1
+
+USES= compiler:c11 cpe gl meson pkgconfig ssl tar:xz xorg
+USE_GL+= gl
+
+.if ${FLAVOR} == Xephyr
+PORTNAME= xephyr
+.elif ${FLAVOR} == xorg
+PKGNAMESUFFIX= -server
+.elif ${FLAVOR} == Xnest
+PORTEPOCH= 2
+PKGNAMESUFFIX= -nestserver
+.elif ${FLAVOR} == Xvfb
+PKGNAMESUFFIX= -vfbserver
+.endif
+
+.if ${FLAVOR} != xorg
+PLIST=
+PKGMESSAGE=
+PLIST_FILES= bin/${FLAVOR} \
+ man/man1/${FLAVOR}.1.gz
+PLIST_DIRS= /var/db/xkb
+.endif
+
+DESCR= ${.CURDIR}/pkg-descr-${FLAVOR}
+
+BUILD_DEPENDS+= ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri
RUN_DEPENDS+= xkeyboard-config>=2.5:x11/xkeyboard-config \
xkbcomp:x11/xkbcomp
-SLAVE_PORT?= no
+MESON_ARGS+= -Dxwin=false \
+ -Dxquartz=false \
+ -Ddtrace=false \
+ -Dhal=false \
+ -Dsystemd_logind=false \
+ -Dxselinux=false \
+ -Dfallback_input_driver=libinput \
+ -Ddocs=false \
+ -Dudev_kms=false \
+ -Dxcsecurity=true \
+ -Dsha1=libmd \
+ -Dxkb_dir=${LOCALBASE}/share/X11/xkb \
+ -Dxkb_output_dir=/var/db/xkb \
+ -D${FLAVOR:tl}=true
+
+.for f in ${FLAVORS:N${FLAVOR}}
+MESON_ARGS+= -D${f:tl}=false
+.endfor
+
+.if ${FLAVOR} == xorg
+LIB_DEPENDS+= libudev.so:devel/libudev-devd \
+ libxcvt.so:x11/libxcvt
+MESON_ARGS+= -Dudev=true
OPTIONS_SUB= yes
OPTIONS_DEFINE+= SUID
-OPTIONS_RADIO= CONF
-OPTIONS_RADIO_CONF= DEVD UDEV
-OPTIONS_DEFAULT= SUID UDEV
-OPTIONS_DEFAULT+= ${OPTIONS_DEFAULT_${OPSYS}_${OSREL:R}}
SUID_DESC= Install setuid wrapper to allow startx as non-root
-CONF_DESC= Backend to use for input device configuration
-DEVD_DESC= Use devd for autoconfiguration of input devices
-UDEV_DESC= Use udev via libudev-devd for autoconfiguration of input devices
-DEVD_CONFIGURE_ENABLE= config-devd
-SUID_CONFIGURE_ENABLE= suid-wrapper
-SUID_CONFIGURE_ON= --libexecdir=${PREFIX}/bin # set SUID_WRAPPER_DIR
-UDEV_CONFIGURE_ENABLE= config-udev
-UDEV_CONFIGURE_ON= --disable-config-udev-kms
-UDEV_LIB_DEPENDS= libudev.so:devel/libudev-devd
+SUID_MESON_TRUE= suid_wrapper
+.else
+MESON_ARGS+= -Dudev=false
+.endif
-.include <bsd.port.options.mk>
+.if ${FLAVOR} == xorg || ${FLAVOR} == Xephyr
+MESON_ARGS+= -Ddrm=true
+LIB_DEPENDS+= libdrm.so:graphics/libdrm \
+ libepoxy.so:graphics/libepoxy
+.endif
+
+.if ${FLAVOR} == Xephyr
+LIB_DEPENDS+= libxcb-render-util.so:x11/xcb-util-renderutil \
+ libxcb-image.so:x11/xcb-util-image \
+ libxcb-icccm.so:x11/xcb-util-wm \
+ libxcb-keysyms.so:x11/xcb-util-keysyms
+.endif
FONTPATH_ROOT?= ${LOCALBASE}/share/fonts
FONTPATHD?= ${PREFIX}/etc/X11/fontpath.d
@@ -49,39 +106,17 @@
${FONTPATH_ROOT}/100dpi/ \
${FONTPATH_ROOT}/75dpi/ \
catalogue:${FONTPATHD}
+MESON_ARGS+= -Ddefault_font_path=${DEFAULT_FONTPATH_LIST:ts,}
PLIST_SUB+= FONTPATHD="${FONTPATHD:S,^${PREFIX}/,,}"
-USES= compiler:c11 cpe gl gmake perl5 ssl tar:xz xorg xorg-cat:xserver
-USE_PERL5= build
USE_GL+= gl
USE_XORG+= pixman xau xdmcp xfont2 xkbfile xorgproto xshmfence xtrans
-CONFIGURE_ARGS+=--without-doxygen --without-xmlto --without-fop \
- --with-default-font-path="${DEFAULT_FONTPATH_LIST:ts,}" \
- --without-dtrace --disable-config-hal \
- --disable-install-setuid --disable-unit-tests \
- --with-fallback-input-driver=libinput
-INSTALL_TARGET= install-strip
CPE_VENDOR= x.org
CPE_PRODUCT= xorg-server
-.if ${SLAVE_PORT} == "no" || ${PORTNAME} == "xephyr" || ${PORTNAME} == "xwayland"
-LIB_DEPENDS+= libdrm.so:graphics/libdrm \
- libepoxy.so:graphics/libepoxy
-.else
-BUILD_DEPENDS+= libepoxy>0:graphics/libepoxy # only for configure
-.endif
-
-.if ${SLAVE_PORT} == "no"
+.if ${FLAVOR} == xorg
USE_GL+= gbm
USE_XORG+= pciaccess
-CONFIGURE_ARGS+=--disable-dmx --disable-xephyr --disable-xnest --disable-xvfb \
- --disable-xwayland --enable-xcsecurity
-SUB_FILES= pkg-install pkg-deinstall
-.else
-CONFIGURE_ARGS+= --disable-xorg
-OPTIONS_EXCLUDE= DEVD UDEV SUID
-# Set PLIST for slave ports so they only need to set PLIST_FILES
-PLIST= ${.CURDIR}/pkg-plist
.endif
.include <bsd.port.pre.mk>
@@ -103,11 +138,7 @@
PLIST_SUB+= SPARC64="@comment "
.endif
-post-patch:
- @${REINPLACE_CMD} 's/test.*-traditional.*;/true;/' \
- ${WRKSRC}/configure
-
-.if ${SLAVE_PORT} == "no"
+.if ${FLAVOR} == xorg
post-install:
# Avoid conflict with nvidia-driver, move libglx.so into .xorg directory
@${MKDIR} ${STAGEDIR}${PREFIX}/lib/xorg/modules/extensions/.xorg
@@ -118,6 +149,18 @@
@${MKDIR} ${STAGEDIR}${PREFIX}/share/X11/xorg.conf.d
@${INSTALL_DATA} ${FILESDIR}/20-evdev-kbd.conf \
${STAGEDIR}${PREFIX}/share/X11/xorg.conf.d
-.endif # ! SLAVE_PORT
+ ${MKDIR} -p ${STAGEDIR}/var/db/xkb
+.else
+post-install:
+ ${RM} -r ${STAGEDIR}${PREFIX}/lib/xorg/protocol.txt
+ ${RMDIR} ${STAGEDIR}${PREFIX}/lib/xorg
+ ${RM} ${STAGEDIR}${PREFIX}/man/man1/Xserver.1
+ ${MKDIR} -p ${STAGEDIR}/var/db/xkb
+.endif
+
+post-install-SUID-on:
+ ${RM} ${STAGEDIR}${PREFIX}/bin/X
+ ${RLN} ${STAGEDIR}${PREFIX}/libexec/Xorg.wrap ${STAGEDIR}${PREFIX}/bin/X
+ ${MV} -f ${STAGEDIR}${PREFIX}/libexec/Xorg ${STAGEDIR}${PREFIX}/bin/Xorg
.include <bsd.port.post.mk>
Index: x11-servers/xorg-server/distinfo
===================================================================
--- x11-servers/xorg-server/distinfo
+++ x11-servers/xorg-server/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1639835065
-SHA256 (xorg/xserver/xorg-server-1.20.14.tar.xz) = 5cc5b70b9be89443e2594b93656c60bd5e82cd7f01deb4ce4faf81dcf546a16b
-SIZE (xorg/xserver/xorg-server-1.20.14.tar.xz) = 5178288
+TIMESTAMP = 1656505333
+SHA256 (xorg-server-21.1.3.tar.xz) = 61d6aad5b6b47a116b960bd7f0cba4ee7e6da95d6bb0b127bde75d7d1acdebe5
+SIZE (xorg-server-21.1.3.tar.xz) = 4955948
Index: x11-servers/xorg-server/files/0001-xkb-fix-XkbSetMap-when-changing-a-keysym-without-cha.patch
===================================================================
--- /dev/null
+++ x11-servers/xorg-server/files/0001-xkb-fix-XkbSetMap-when-changing-a-keysym-without-cha.patch
@@ -0,0 +1,87 @@
+From 0217cc6e0cf5013366105a90f5f91ccc4bab5425 Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Wed, 26 Jan 2022 00:05:55 +0100
+Subject: [PATCH] xkb: fix XkbSetMap when changing a keysym without changing a
+ keytype
+
+As the comment says:
+
+"symsPerKey/mapWidths must be filled regardless of client-side flags"
+
+so we always have to call CheckKeyTypes which will notably fill mapWidths
+and nTypes. That is needed for CheckKeySyms to work since it checks the
+width. Without it, any request with XkbKeySymsMask but not
+XkbKeyTypesMask will fail because of the missing width information, for
+instance this:
+
+ XkbDescPtr xkb;
+ if (!(xkb = XkbGetMap (dpy, XkbKeyTypesMask|XkbKeySymsMask, XkbUseCoreKbd))) {
+ fprintf (stderr, "ERROR getting map\n");
+ exit(1);
+ }
+ XFlush (dpy);
+ XSync (dpy, False);
+
+ XkbMapChangesRec changes = { .changed = 0 };
+ int oneGroupType[XkbNumKbdGroups] = { XkbOneLevelIndex };
+
+ if (XkbChangeTypesOfKey(xkb, keycode, 1, XkbGroup1Mask, oneGroupType, &changes)) {
+ fprintf(stderr, "ERROR changing type of key\n");
+ exit(1);
+ }
+ XkbKeySymEntry(xkb,keycode,0,0) = keysym;
+
+ if (!XkbChangeMap(dpy,xkb,&changes)) {
+ fprintf(stderr, "ERROR changing map\n");
+ exit(1);
+ }
+
+ XkbFreeKeyboard (xkb, 0, TRUE);
+ XFlush (dpy);
+ XSync (dpy, False);
+
+This had being going under the radar since about ever until commit
+de940e06f8733d87bbb857aef85d830053442cfe ("xkb: fix key type index check
+in _XkbSetMapChecks") fixed checking the values of kt_index, which was
+previously erroneously ignoring errors and ignoring all other checks, just
+because nTypes was not set, precisely because CheckKeyTypes was not called.
+
+Note: yes, CheckKeyTypes is meant to be callable without XkbKeyTypesMask, it
+does properly check for that and just fills nTypes and mapWidths in that
+case.
+
+Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Signed-off-by: Laurent Carlier <lordheavym@gmail.com>
+---
+ xkb/xkb.c | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/xkb/xkb.c b/xkb/xkb.c
+index bfc21de00..820cd7166 100644
+--- a/xkb/xkb.c
++++ b/xkb/xkb.c
+@@ -2511,16 +2511,15 @@ _XkbSetMapChecks(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq * req,
+ }
+ }
+
+- if (!(req->present & XkbKeyTypesMask)) {
+- nTypes = xkb->map->num_types;
+- }
+- else if (!CheckKeyTypes(client, xkb, req, (xkbKeyTypeWireDesc **) &values,
+- &nTypes, mapWidths, doswap)) {
++ /* nTypes/mapWidths/symsPerKey must be filled for further tests below,
++ * regardless of client-side flags */
++
++ if (!CheckKeyTypes(client, xkb, req, (xkbKeyTypeWireDesc **) &values,
++ &nTypes, mapWidths, doswap)) {
+ client->errorValue = nTypes;
+ return BadValue;
+ }
+
+- /* symsPerKey/mapWidths must be filled regardless of client-side flags */
+ map = &xkb->map->key_sym_map[xkb->min_key_code];
+ for (i = xkb->min_key_code; i < xkb->max_key_code; i++, map++) {
+ register int g, ng, w;
+--
+2.35.1
+
Index: x11-servers/xorg-server/files/0002-xephyr_Dont_check_for_SeatId_anymore.patch
===================================================================
--- /dev/null
+++ x11-servers/xorg-server/files/0002-xephyr_Dont_check_for_SeatId_anymore.patch
@@ -0,0 +1,63 @@
+From 4c03b67d334b05b814239420776f2fdd4c4a98ac Mon Sep 17 00:00:00 2001
+From: nerdopolis <bluescreen_avenger@verizon.net>
+Date: Tue, 11 Jan 2022 18:41:42 -0500
+Subject: [PATCH] xephyr: Don't check for SeatId anymore
+
+After a change for the xserver to automatically determine the seat
+based on the XDG_SEAT variable, xephyr stopped working. This was
+because of an old feature where xephyr used to handle evdev
+directly. This was dropped some time ago, and now this check is
+not needed
+---
+ hw/kdrive/ephyr/ephyrinit.c | 34 ++++++++++++++++------------------
+ 1 file changed, 16 insertions(+), 18 deletions(-)
+
+diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
+index 020461db2..09cd28cb3 100644
+--- a/hw/kdrive/ephyr/ephyrinit.c
++++ b/hw/kdrive/ephyr/ephyrinit.c
+@@ -70,25 +70,23 @@ InitInput(int argc, char **argv)
+ KdKeyboardInfo *ki;
+ KdPointerInfo *pi;
+
+- if (!SeatId) {
+- KdAddKeyboardDriver(&EphyrKeyboardDriver);
+- KdAddPointerDriver(&EphyrMouseDriver);
+-
+- if (!kdHasKbd) {
+- ki = KdNewKeyboard();
+- if (!ki)
+- FatalError("Couldn't create Xephyr keyboard\n");
+- ki->driver = &EphyrKeyboardDriver;
+- KdAddKeyboard(ki);
+- }
++ KdAddKeyboardDriver(&EphyrKeyboardDriver);
++ KdAddPointerDriver(&EphyrMouseDriver);
++
++ if (!kdHasKbd) {
++ ki = KdNewKeyboard();
++ if (!ki)
++ FatalError("Couldn't create Xephyr keyboard\n");
++ ki->driver = &EphyrKeyboardDriver;
++ KdAddKeyboard(ki);
++ }
+
+- if (!kdHasPointer) {
+- pi = KdNewPointer();
+- if (!pi)
+- FatalError("Couldn't create Xephyr pointer\n");
+- pi->driver = &EphyrMouseDriver;
+- KdAddPointer(pi);
+- }
++ if (!kdHasPointer) {
++ pi = KdNewPointer();
++ if (!pi)
++ FatalError("Couldn't create Xephyr pointer\n");
++ pi->driver = &EphyrMouseDriver;
++ KdAddPointer(pi);
+ }
+
+ KdInitInput();
+--
+GitLab
+
Index: x11-servers/xorg-server/files/0003-dix_Correctly_save_replayed_event_into_GrabInfoRec.patch
===================================================================
--- /dev/null
+++ x11-servers/xorg-server/files/0003-dix_Correctly_save_replayed_event_into_GrabInfoRec.patch
@@ -0,0 +1,98 @@
+From 6ef5c05728f8b18170fbc8415d7502495a08670b Mon Sep 17 00:00:00 2001
+From: Povilas Kanapickas <povilas@radix.lt>
+Date: Sun, 23 Jan 2022 22:18:52 +0200
+Subject: [PATCH] dix: Correctly save replayed event into GrabInfoRec
+
+When processing events we operate on InternalEvent pointers. They may
+actually refer to a an instance of DeviceEvent, GestureEvent or any
+other event that comprises the InternalEvent union. This works well in
+practice because we always look into event type before doing anything,
+except in the case of copying the event.
+
+*dst_event = *src_event would copy whole InternalEvent event and would
+cause out of bounds read in case the pointed to event was not
+InternalEvent but e.g. DeviceEvent.
+
+This regression has been introduced in
+23a8b62d34344575f9df9d057fb74bfefa94a77b.
+
+Fixes https://gitlab.freedesktop.org/xorg/xserver/-/issues/1261
+
+Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
+---
+ Xi/exevents.c | 2 +-
+ dix/events.c | 18 ++++++++++++++++--
+ include/input.h | 1 +
+ 3 files changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/Xi/exevents.c b/Xi/exevents.c
+index 94b9983bd..217baa956 100644
+--- a/Xi/exevents.c
++++ b/Xi/exevents.c
+@@ -1524,7 +1524,7 @@ DeliverTouchEmulatedEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
+ g = AllocGrab(devgrab);
+ BUG_WARN(!g);
+
+- *dev->deviceGrab.sync.event = *ev;
++ CopyPartialInternalEvent(dev->deviceGrab.sync.event, ev);
+
+ /* The listener array has a sequence of grabs and then one event
+ * selection. Implicit grab activation occurs through delivering an
+diff --git a/dix/events.c b/dix/events.c
+index 341c746d4..28d7d177c 100644
+--- a/dix/events.c
++++ b/dix/events.c
+@@ -467,6 +467,20 @@ WindowXI2MaskIsset(DeviceIntPtr dev, WindowPtr win, xEvent *ev)
+ return xi2mask_isset(inputMasks->xi2mask, dev, evtype);
+ }
+
++/**
++ * When processing events we operate on InternalEvent pointers. They may actually refer to a
++ * an instance of DeviceEvent, GestureEvent or any other event that comprises the InternalEvent
++ * union. This works well in practice because we always look into event type before doing anything,
++ * except in the case of copying the event. Any copying of InternalEvent should use this function
++ * instead of doing *dst_event = *src_event whenever it's not clear whether source event actually
++ * points to full InternalEvent instance.
++ */
++void
++CopyPartialInternalEvent(InternalEvent* dst_event, const InternalEvent* src_event)
++{
++ memcpy(dst_event, src_event, src_event->any.length);
++}
++
+ Mask
+ GetEventMask(DeviceIntPtr dev, xEvent *event, InputClients * other)
+ {
+@@ -3873,7 +3887,7 @@ void ActivateGrabNoDelivery(DeviceIntPtr dev, GrabPtr grab,
+
+ if (grabinfo->sync.state == FROZEN_NO_EVENT)
+ grabinfo->sync.state = FROZEN_WITH_EVENT;
+- *grabinfo->sync.event = *real_event;
++ CopyPartialInternalEvent(grabinfo->sync.event, real_event);
+ }
+
+ static BOOL
+@@ -4455,7 +4469,7 @@ FreezeThisEventIfNeededForSyncGrab(DeviceIntPtr thisDev, InternalEvent *event)
+ case FREEZE_NEXT_EVENT:
+ grabinfo->sync.state = FROZEN_WITH_EVENT;
+ FreezeThaw(thisDev, TRUE);
+- *grabinfo->sync.event = *event;
++ CopyPartialInternalEvent(grabinfo->sync.event, event);
+ break;
+ }
+ }
+diff --git a/include/input.h b/include/input.h
+index b1aef3663..cdb5d5a90 100644
+--- a/include/input.h
++++ b/include/input.h
+@@ -676,6 +676,7 @@ extern void GestureEmitGestureEndToOwner(DeviceIntPtr dev, GestureInfoPtr gi);
+ extern void ProcessGestureEvent(InternalEvent *ev, DeviceIntPtr dev);
+
+ /* misc event helpers */
++extern void CopyPartialInternalEvent(InternalEvent* dst_event, const InternalEvent* src_event);
+ extern Mask GetEventMask(DeviceIntPtr dev, xEvent *ev, InputClientsPtr clients);
+ extern Mask GetEventFilter(DeviceIntPtr dev, xEvent *event);
+ extern Bool WindowXI2MaskIsset(DeviceIntPtr dev, WindowPtr win, xEvent *ev);
+--
+GitLab
+
Index: x11-servers/xorg-server/files/0004-present_Check_for_NULL_to_prevent_crash.patch
===================================================================
--- /dev/null
+++ x11-servers/xorg-server/files/0004-present_Check_for_NULL_to_prevent_crash.patch
@@ -0,0 +1,43 @@
+From 69774044716039fa70655b3bc6dd6a4ff4535cfd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?B=C5=82a=C5=BCej=20Szczygie=C5=82?= <spaz16@wp.pl>
+Date: Thu, 13 Jan 2022 00:47:27 +0100
+Subject: [PATCH] present: Check for NULL to prevent crash
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1275
+Signed-off-by: Błażej Szczygieł <spaz16@wp.pl>
+Tested-by: Aaron Plattner <aplattner@nvidia.com>
+(cherry picked from commit 22d5818851967408bb7c903cb345b7ca8766094c)
+---
+ present/present_scmd.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/present/present_scmd.c b/present/present_scmd.c
+index da836ea6b..239055bc1 100644
+--- a/present/present_scmd.c
++++ b/present/present_scmd.c
+@@ -158,6 +158,9 @@ present_scmd_get_crtc(present_screen_priv_ptr screen_priv, WindowPtr window)
+ if (!screen_priv->info)
+ return NULL;
+
++ if (!screen_priv->info->get_crtc)
++ return NULL;
++
+ return (*screen_priv->info->get_crtc)(window);
+ }
+
+@@ -196,6 +199,9 @@ present_flush(WindowPtr window)
+ if (!screen_priv->info)
+ return;
+
++ if (!screen_priv->info->flush)
++ return;
++
+ (*screen_priv->info->flush) (window);
+ }
+
+--
+GitLab
+
Index: x11-servers/xorg-server/files/config_Makefile.am
===================================================================
--- x11-servers/xorg-server/files/config_Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-* Build the devd config backend if activated
-*
---- config/Makefile.am.orig 2017-03-16 05:24:43 UTC
-+++ config/Makefile.am
-@@ -4,6 +4,11 @@ noinst_LTLIBRARIES = libconfig.la
- libconfig_la_SOURCES = config.c config-backends.h
- libconfig_la_LIBADD =
-
-+if CONFIG_DEVD
-+libconfig_la_SOURCES += devd.c
-+libconfig_la_LIBADD += -lusbhid
-+endif
-+
- if NEED_DBUS
- AM_CFLAGS += $(DBUS_CFLAGS)
- libconfig_la_SOURCES += dbus-core.c
Index: x11-servers/xorg-server/files/configure.ac
===================================================================
--- x11-servers/xorg-server/files/configure.ac
+++ /dev/null
@@ -1,97 +0,0 @@
-* Plumb the devd config backend into configure
-*
-* define USE_DEV_IO for ARM platforms
-*
-* Only run pkg-config for udev if it is not disabled to prevent over-linking
-*
-* Automatically use systemd/logind only on Linux
-*
---- configure.ac.orig 2017-03-15 18:05:25 UTC
-+++ configure.ac
-@@ -266,9 +266,12 @@ case $host_cpu in
- esac
- GLX_ARCH_DEFINES="-D__GLX_ALIGN64 -mieee"
- ;;
-- arm*)
-+ arm*|aarch64*|riscv*)
- ARM_VIDEO=yes
- DEFAULT_INT10="stub"
-+ case $host_os in
-+ *freebsd*) AC_DEFINE(USE_DEV_IO) ;;
-+ esac
- ;;
- i*86)
- I386_VIDEO=yes
-@@ -565,6 +568,7 @@ AC_ARG_ENABLE(xcsecurity, AS_HELP_ST
- AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
- AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--enable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no])
- AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
-+AC_ARG_ENABLE(config-devd, AS_HELP_STRING([--enable-config-devd], [Build devd support (default: auto)]), [CONFIG_DEVD=$enableval], [CONFIG_DEVD=auto])
- AC_ARG_ENABLE(config-udev, AS_HELP_STRING([--enable-config-udev], [Build udev support (default: auto)]), [CONFIG_UDEV=$enableval], [CONFIG_UDEV=auto])
- AC_ARG_ENABLE(config-udev-kms, AS_HELP_STRING([--enable-config-udev-kms], [Build udev kms support (default: auto)]), [CONFIG_UDEV_KMS=$enableval], [CONFIG_UDEV_KMS=auto])
- AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
-@@ -856,10 +860,27 @@ if test "x$CONFIG_UDEV" = xyes && test "
- AC_MSG_ERROR([Hotplugging through both libudev and hal not allowed])
- fi
-
--PKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
--if test "x$CONFIG_UDEV" = xauto; then
-- CONFIG_UDEV="$HAVE_LIBUDEV"
-- AC_DEFINE(HAVE_LIBUDEV, 1, [Define to 1 if libudev is available.])
-+if test "x$CONFIG_DEVD" = xauto; then
-+ case $host_os in
-+ *freebsd*)
-+ CONFIG_DEVD=yes
-+ ;;
-+ *)
-+ CONFIG_DEVD=no
-+ ;;
-+ esac
-+fi
-+AM_CONDITIONAL(CONFIG_DEVD, [test "x$CONFIG_DEVD" = xyes])
-+if test "x$CONFIG_DEVD" = xyes; then
-+ AC_DEFINE(CONFIG_DEVD, 1, [Use devd for input auto configuration])
-+fi
-+
-+if test "x$CONFIG_UDEV" != xno; then
-+ PKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
-+ if test "x$CONFIG_UDEV" = xauto; then
-+ CONFIG_UDEV="$HAVE_LIBUDEV"
-+ AC_DEFINE(HAVE_LIBUDEV, 1, [Define to 1 if libudev is available.])
-+ fi
- fi
- AM_CONDITIONAL(CONFIG_UDEV, [test "x$CONFIG_UDEV" = xyes])
- if test "x$CONFIG_UDEV" = xyes; then
-@@ -907,7 +928,14 @@ AM_CONDITIONAL(CONFIG_HAL, [test "x$CONF
-
- if test "x$SYSTEMD_LOGIND" = xauto; then
- if test "x$HAVE_DBUS" = xyes -a "x$CONFIG_UDEV" = xyes ; then
-- SYSTEMD_LOGIND=yes
-+ case $host_os in
-+ *linux*)
-+ SYSTEMD_LOGIND=yes
-+ ;;
-+ *)
-+ SYSTEMD_LOGIND=no
-+ ;;
-+ esac
- else
- SYSTEMD_LOGIND=no
- fi
-@@ -2467,12 +2495,12 @@ AC_SUBST([prefix])
-
- AC_CONFIG_COMMANDS([sdksyms], [touch hw/xfree86/sdksyms.dep])
-
--if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno; then
-+if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno && test "x$CONFIG_DEVD" = xno; then
- AC_MSG_WARN([
-- ***********************************************
-- Neither HAL nor udev backend will be enabled.
-+ *****************************************************
-+ Neither HAL, devd, nor udev backend will be enabled.
- Input device hotplugging will not be available!
-- ***********************************************])
-+ *****************************************************])
- fi
-
- AC_CONFIG_FILES([
Index: x11-servers/xorg-server/files/hw_xfree86_Makefile.am
===================================================================
--- x11-servers/xorg-server/files/hw_xfree86_Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-* Don't overwrite Xorg binary with Xorg.sh when SUID_WRAPPER_DIR == bindir
-* Instead, relink bin/X to Xorg.wrap rather than to Xorg (which isn't Xorg.sh)
-*
---- hw/xfree86/Makefile.am.orig 2017-03-16 05:24:43 UTC
-+++ hw/xfree86/Makefile.am
-@@ -114,7 +114,7 @@ endif
- if SUID_WRAPPER
- $(MKDIR_P) $(DESTDIR)$(SUID_WRAPPER_DIR)
- mv $(DESTDIR)$(bindir)/Xorg $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg
-- ${INSTALL} -m 755 Xorg.sh $(DESTDIR)$(bindir)/Xorg
-+ (test ! -f $(DESTDIR)$(bindir)/Xorg && ${INSTALL} -m 755 Xorg.sh $(DESTDIR)$(bindir)/Xorg || cd $(DESTDIR)$(bindir) && rm -f X && $(LN_S) Xorg.wrap$(EXEEXT) X)
- -chown 0 $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.wrap && chmod u+s $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.wrap
- endif
-
Index: x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-os-support-misc-Makefile.in
===================================================================
--- x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-os-support-misc-Makefile.in
+++ /dev/null
@@ -1,12 +0,0 @@
---- hw/xfree86/os-support/misc/Makefile.in.orig 2015-09-23 10:21:18.470900000 +0200
-+++ hw/xfree86/os-support/misc/Makefile.in 2015-09-23 10:22:34.979974000 +0200
-@@ -543,7 +543,8 @@
-
- #AM_LDFLAGS = -r
- AM_CPPFLAGS = $(XORG_INCS)
--AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-+@I386_VIDEO_TRUE@I386_VIDEO_CFLAGS = -mno-sse
-+AM_CFLAGS = $(I386_VIDEO_CFLAGS) $(XORG_CFLAGS) $(DIX_CFLAGS)
- EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS)
- all: all-am
-
Index: x11-servers/xorg-server/files/patch-config_Makefile.in
===================================================================
--- x11-servers/xorg-server/files/patch-config_Makefile.in
+++ /dev/null
@@ -1,100 +0,0 @@
-* generated from patched Makefile.am; revise and regen instead of editing
-*
-* Build the devd config backend if activated
-*
---- config/Makefile.in.orig 2017-03-16 05:24:43 UTC
-+++ config/Makefile.in
-@@ -89,16 +89,18 @@ PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
--@NEED_DBUS_TRUE@am__append_1 = $(DBUS_CFLAGS)
--@NEED_DBUS_TRUE@am__append_2 = dbus-core.c
--@NEED_DBUS_TRUE@am__append_3 = $(DBUS_LIBS)
--@CONFIG_UDEV_TRUE@am__append_4 = $(UDEV_CFLAGS)
--@CONFIG_UDEV_TRUE@am__append_5 = udev.c
--@CONFIG_UDEV_TRUE@am__append_6 = $(UDEV_LIBS)
--@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_7 = $(HAL_CFLAGS)
--@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_8 = hal.c
--@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_9 = $(HAL_LIBS)
--@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__append_10 = wscons.c
-+@CONFIG_DEVD_TRUE@am__append_1 = devd.c
-+@CONFIG_DEVD_TRUE@am__append_2 = -lusbhid
-+@NEED_DBUS_TRUE@am__append_3 = $(DBUS_CFLAGS)
-+@NEED_DBUS_TRUE@am__append_4 = dbus-core.c
-+@NEED_DBUS_TRUE@am__append_5 = $(DBUS_LIBS)
-+@CONFIG_UDEV_TRUE@am__append_6 = $(UDEV_CFLAGS)
-+@CONFIG_UDEV_TRUE@am__append_7 = udev.c
-+@CONFIG_UDEV_TRUE@am__append_8 = $(UDEV_LIBS)
-+@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_9 = $(HAL_CFLAGS)
-+@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_10 = hal.c
-+@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_11 = $(HAL_LIBS)
-+@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__append_12 = wscons.c
- subdir = config
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
-@@ -126,16 +128,18 @@ am__DEPENDENCIES_1 =
- @CONFIG_UDEV_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
- @CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__DEPENDENCIES_4 = \
- @CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@ $(am__DEPENDENCIES_1)
--libconfig_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
-- $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4)
--am__libconfig_la_SOURCES_DIST = config.c config-backends.h dbus-core.c \
-- udev.c hal.c wscons.c
--@NEED_DBUS_TRUE@am__objects_1 = dbus-core.lo
--@CONFIG_UDEV_TRUE@am__objects_2 = udev.lo
--@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__objects_3 = hal.lo
--@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__objects_4 = wscons.lo
-+libconfig_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-+ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
-+ $(am__DEPENDENCIES_4)
-+am__libconfig_la_SOURCES_DIST = config.c config-backends.h devd.c \
-+ dbus-core.c udev.c hal.c wscons.c
-+@CONFIG_DEVD_TRUE@am__objects_1 = devd.lo
-+@NEED_DBUS_TRUE@am__objects_2 = dbus-core.lo
-+@CONFIG_UDEV_TRUE@am__objects_3 = udev.lo
-+@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__objects_4 = hal.lo
-+@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__objects_5 = wscons.lo
- am_libconfig_la_OBJECTS = config.lo $(am__objects_1) $(am__objects_2) \
-- $(am__objects_3) $(am__objects_4)
-+ $(am__objects_3) $(am__objects_4) $(am__objects_5)
- libconfig_la_OBJECTS = $(am_libconfig_la_OBJECTS)
- AM_V_lt = $(am__v_lt_@AM_V@)
- am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-@@ -157,7 +161,7 @@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top
- depcomp = $(SHELL) $(top_srcdir)/depcomp
- am__maybe_remake_depfiles = depfiles
- am__depfiles_remade = ./$(DEPDIR)/config.Plo ./$(DEPDIR)/dbus-core.Plo \
-- ./$(DEPDIR)/hal.Plo ./$(DEPDIR)/udev.Plo \
-+ ./$(DEPDIR)/devd.Plo ./$(DEPDIR)/hal.Plo ./$(DEPDIR)/udev.Plo \
- ./$(DEPDIR)/wscons.Plo
- am__mv = mv -f
- COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-@@ -593,12 +597,14 @@ target_alias = @target_alias@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--AM_CFLAGS = $(DIX_CFLAGS) $(am__append_1) $(am__append_4) \
-- $(am__append_7)
-+AM_CFLAGS = $(DIX_CFLAGS) $(am__append_3) $(am__append_6) \
-+ $(am__append_9)
- noinst_LTLIBRARIES = libconfig.la
--libconfig_la_SOURCES = config.c config-backends.h $(am__append_2) \
-- $(am__append_5) $(am__append_8) $(am__append_10)
--libconfig_la_LIBADD = $(am__append_3) $(am__append_6) $(am__append_9)
-+libconfig_la_SOURCES = config.c config-backends.h $(am__append_1) \
-+ $(am__append_4) $(am__append_7) $(am__append_10) \
-+ $(am__append_12)
-+libconfig_la_LIBADD = $(am__append_2) $(am__append_5) $(am__append_8) \
-+ $(am__append_11)
- @CONFIG_UDEV_TRUE@@XORG_TRUE@xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR)
- @CONFIG_UDEV_TRUE@@XORG_TRUE@xorgconfd_DATA = 10-quirks.conf
- EXTRA_DIST = x11-input.fdi fdi2iclass.py 10-quirks.conf
-@@ -658,6 +664,7 @@ distclean-compile:
-
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-core.Plo@am__quote@ # am--include-marker
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devd.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hal.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udev.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wscons.Plo@am__quote@ # am--include-marker
Index: x11-servers/xorg-server/files/patch-config_config-backends.h
===================================================================
--- x11-servers/xorg-server/files/patch-config_config-backends.h
+++ /dev/null
@@ -1,12 +0,0 @@
-* Define required functions for devd config backend
-*
---- config/config-backends.h.orig 2017-03-15 18:05:25 UTC
-+++ config/config-backends.h
-@@ -43,4 +43,7 @@ void config_hal_fini(void);
- #elif defined(CONFIG_WSCONS)
- int config_wscons_init(void);
- void config_wscons_fini(void);
-+#elif defined(CONFIG_DEVD)
-+int config_devd_init(void);
-+void config_devd_fini(void);
- #endif
Index: x11-servers/xorg-server/files/patch-config_config.c
===================================================================
--- x11-servers/xorg-server/files/patch-config_config.c
+++ /dev/null
@@ -1,23 +0,0 @@
-* Call the devd config backend functions if activated
-*
---- config/config.c.orig 2017-03-15 18:05:25 UTC
-+++ config/config.c
-@@ -55,6 +55,9 @@ config_init(void)
- #elif defined(CONFIG_WSCONS)
- if (!config_wscons_init())
- ErrorF("[config] failed to initialise wscons\n");
-+#elif defined(CONFIG_DEVD)
-+ if (!config_devd_init())
-+ ErrorF("[config] failed to initialise devd\n");
- #endif
- }
-
-@@ -67,6 +70,8 @@ config_fini(void)
- config_hal_fini();
- #elif defined(CONFIG_WSCONS)
- config_wscons_fini();
-+#elif defined(CONFIG_DEVD)
-+ config_devd_fini();
- #endif
- }
-
Index: x11-servers/xorg-server/files/patch-config_devd.c
===================================================================
--- x11-servers/xorg-server/files/patch-config_devd.c
+++ /dev/null
@@ -1,858 +0,0 @@
---- config/devd.c.orig 2017-03-16 05:24:43 UTC
-+++ config/devd.c
-@@ -0,0 +1,855 @@
-+/*
-+ * Copyright (c) 2012 Baptiste Daroussin
-+ * Copyright (c) 2013, 2014 Alex Kozlov
-+ * Copyright (c) 2014 Robert Millan
-+ * Copyright (c) 2014 Jean-Sebastien Pedron
-+ * Copyright (c) 2015 Hans Petter Selasky
-+ * Copyright (c) 2015-2017 Rozhuk Ivan
-+ * Copyright (c) 2016, 2017 Vladimir Kondratyev
-+ * Copyright (c) 2017 Matthew Rezny
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the "Software"),
-+ * to deal in the Software without restriction, including without limitation
-+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+ * and/or sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the next
-+ * paragraph) shall be included in all copies or substantial portions of the
-+ * Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+ * DEALINGS IN THE SOFTWARE.
-+ *
-+ * Author: Baptiste Daroussin <bapt@FreeBSD.org>
-+ */
-+
-+#ifdef HAVE_DIX_CONFIG_H
-+#include <dix-config.h>
-+#endif
-+
-+#include <sys/types.h>
-+#include <sys/kbio.h>
-+#include <sys/socket.h>
-+#include <sys/stat.h>
-+#include <sys/sysctl.h>
-+#include <sys/un.h>
-+#include <sys/mouse.h>
-+#include <sys/consio.h>
-+#include <sys/ioctl.h>
-+#include <dev/evdev/input.h>
-+#include <dev/usb/usb_ioctl.h>
-+#include <dev/usb/usbhid.h>
-+
-+#include <ctype.h>
-+#include <dirent.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <stdbool.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <paths.h>
-+#include <usbhid.h>
-+
-+#include "input.h"
-+#include "inputstr.h"
-+#include "hotplug.h"
-+#include "config-backends.h"
-+#include "os.h"
-+
-+#define _IOC_READ IOC_OUT
-+
-+#define ULONG_BITS (sizeof(unsigned long) * 8)
-+#define ULONG_CNT(__x) (((__x) + ULONG_BITS - 1) / ULONG_BITS)
-+#define ULONG_IS_BIT_SET(__x, __bit) (((const unsigned long*)(__x))[(__bit) / ULONG_BITS] & (1UL << (__bit % ULONG_BITS)))
-+
-+/* from: <linux/joystick.h> */
-+#define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) /* get identifier string */
-+
-+/* WebCamD specific. */
-+#define WEBCAMD_IOCTL_GET_USB_VENDOR_ID _IOR('q', 250, unsigned short)
-+#define WEBCAMD_IOCTL_GET_USB_PRODUCT_ID _IOR('q', 251, unsigned short)
-+#define WEBCAMD_IOCTL_GET_USB_SPEED _IOR('q', 252, unsigned int)
-+
-+#ifdef COMPAT_32BIT
-+ #define hid_pass_ptr(ptr) ((uint64_t)(uintptr_t)(ptr))
-+#else
-+ #define hid_pass_ptr(ptr) (ptr)
-+#endif
-+
-+#define _PATH_DEV_LEN (sizeof(_PATH_DEV) - 1)
-+#define DEVD_PATH_DEV "devd:" _PATH_DEV
-+#define DEVD_PATH_DEV_LEN (sizeof(DEVD_PATH_DEV) - 1)
-+#define DEVD_PATH_LEN (DEVD_PATH_DEV_LEN - _PATH_DEV_LEN)
-+
-+#define DEVD_SOCK_PATH _PATH_VARRUN "devd.pipe"
-+
-+#define DEVD_EVENT_ADD '+'
-+#define DEVD_EVENT_REMOVE '-'
-+#define DEVD_EVENT_NOTIFY '!'
-+
-+#define RECONNECT_DELAY (5 * 1000)
-+
-+#define is_meuqual(__v1, __v1sz, __v2, __v2sz) \
-+ ((__v1sz) == (__v2sz) && NULL != (__v1) && NULL != (__v2) && \
-+ 0 == memcmp((__v1), (__v2), (__v1sz)))
-+
-+#define is_meuqual_cstr(__cstr, __v, __vsz) \
-+ is_meuqual(__cstr, (sizeof(__cstr) - 1), __v, __vsz)
-+
-+#define is_de_euqual_cstr(__de, __cstr) \
-+ (NULL != (__de) && \
-+ is_meuqual((__de)->d_name, (__de)->d_namlen, __cstr, (sizeof(__cstr) - 1)))
-+
-+#define devd_get_val_cstr(__cstr, __buf, __bufsz, __valsz) \
-+ devd_get_val((__buf), (__bufsz), __cstr, (sizeof(__cstr) - 1), \
-+ (__valsz))
-+
-+static int devd_skt = 0;
-+static char devd_buf[4096];
-+static size_t devd_buf_used = 0;
-+static int is_kbdmux = 0;
-+static int evdev_support = 0;
-+static OsTimerPtr rtimer = NULL;
-+
-+/* Input devices. */
-+typedef struct hw_type_s {
-+ const char *dev_name;
-+ size_t dev_name_size;
-+ size_t path_offset;
-+ int is_hybrid; /* has both evdev and traditional interfaces */
-+ int flags;
-+ const char *xdriver;
-+} hw_type_t, *hw_type_p;
-+
-+/* xdriver can be set via config "InputClass" section.
-+ * Do not set xdriver name if device have more than one
-+ * xf86-input-* drivers.
-+ * "input/event" can be handled by: xf86-input-libinput,
-+ * xf86-input-evdev and xf86-input-wacom, let user choose.
-+ */
-+static hw_type_t hw_types[] = {
-+ { "uhid", 4, 0, 0, 0, NULL },
-+ { "ukbd", 4, 0, 1, ATTR_KEY | ATTR_KEYBOARD, "kbd" },
-+ { "atkbd", 5, 0, 1, ATTR_KEY | ATTR_KEYBOARD, "kbd" },
-+ { "kbdmux", 6, 0, 1, ATTR_KEY | ATTR_KEYBOARD, "kbd" },
-+ { "sysmouse", 8, 0, 1, ATTR_POINTER, "mouse" },
-+ { "ums", 3, 0, 1, ATTR_POINTER, "mouse" },
-+ { "psm", 3, 0, 1, ATTR_POINTER, "mouse" },
-+ { "vboxguest", 9, 0, 0, ATTR_POINTER, "vboxmouse" },
-+ { "joy", 3, 0, 0, ATTR_JOYSTICK, NULL },
-+ { "atp", 3, 0, 0, ATTR_TOUCHPAD, NULL },
-+ { "uep", 3, 0, 0, ATTR_TOUCHSCREEN, NULL },
-+ { "input/event",5, 6, 0, 0, NULL },
-+ { "input/js", 2, 6, 0, ATTR_JOYSTICK, NULL },
-+ { NULL, 0, 0, 0, NULL },
-+};
-+
-+/* Input devices paths. */
-+static hw_type_t hw_type_path[] = {
-+ { "input/", 0, 6, 0, NULL },
-+ { NULL, 0, 0, 0, NULL },
-+};
-+
-+static size_t
-+bits_calc(const unsigned long *bits, size_t off_start, size_t off_stop)
-+{
-+ size_t count = 0;
-+
-+ for (size_t i = off_start; i < off_stop; ++i) {
-+ if (ULONG_IS_BIT_SET(bits, i)) {
-+ ++count;
-+ }
-+ }
-+ return count;
-+}
-+
-+static hw_type_p
-+get_dev_type_by_name(const char *dev_name, size_t dev_name_size)
-+{
-+ if (!dev_name || !dev_name_size)
-+ return NULL;
-+
-+ for (size_t i = 0; hw_types[i].dev_name; ++i) {
-+ if (dev_name_size >= (hw_types[i].dev_name_size + hw_types[i].path_offset) &&
-+ !memcmp(dev_name, hw_types[i].dev_name, (hw_types[i].path_offset + hw_types[i].dev_name_size))) {
-+ return &hw_types[i];
-+ }
-+ }
-+ return NULL;
-+}
-+
-+static hw_type_p
-+get_dev_type_by_path(const char *dev_name, size_t dev_name_size, hw_type_p hw_type_cust)
-+{
-+ if (!dev_name || !dev_name_size || !hw_type_cust)
-+ return NULL;
-+
-+ for (size_t i = 0; hw_type_path[i].dev_name; ++i) {
-+ if (dev_name_size <= hw_type_path[i].path_offset ||
-+ memcmp(dev_name, hw_type_path[i].dev_name, hw_type_path[i].path_offset))
-+ continue;
-+ /* Path in white list. */
-+ hw_type_cust->dev_name = dev_name;
-+ hw_type_cust->flags = hw_type_path[i].flags;
-+ hw_type_cust->xdriver = hw_type_path[i].xdriver;
-+ hw_type_cust->path_offset = hw_type_path[i].path_offset;
-+ size_t name_end = hw_type_cust->path_offset;
-+ while (name_end < dev_name_size && !isdigit(dev_name[name_end]))
-+ ++name_end;
-+ hw_type_cust->dev_name_size = (name_end - hw_type_cust->path_offset);
-+ return hw_type_cust;
-+ }
-+ return NULL;
-+}
-+
-+static int
-+is_kbdmux_enabled(void)
-+{
-+ /* Xorg uses /dev/ttyv0 as a console device */
-+ /* const char device[]="/dev/console"; */
-+ static const char *device = _PATH_TTY "v0";
-+
-+ int fd = open(device, O_RDONLY);
-+ if (fd < 0)
-+ return 0;
-+
-+ keyboard_info_t info;
-+ int ret = (ioctl(fd, KDGKBINFO, &info) == -1 ||
-+ memcmp(info.kb_name, "kbdmux", 6)) ? 0 : 1;
-+ close(fd);
-+ return ret;
-+}
-+
-+/* Derived from EvdevProbe() function of xf86-input-evdev driver */
-+static int
-+get_evdev_flags(int fd)
-+{
-+ if (fd<0)
-+ return 0;
-+
-+ unsigned long key_bits[ULONG_CNT(KEY_CNT)], rel_bits[ULONG_CNT(REL_CNT)], abs_bits[ULONG_CNT(ABS_CNT)];
-+ size_t has_keys = 0, has_buttons = 0, has_lmr = 0, has_rel_axes = 0, has_abs_axes = 0, has_mt = 0;
-+ if (ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(key_bits)), key_bits) != -1) {
-+ has_keys = bits_calc(key_bits, 0, BTN_MISC);
-+ has_buttons = bits_calc(key_bits, BTN_MISC, BTN_JOYSTICK);
-+ has_lmr = bits_calc(key_bits, BTN_LEFT, BTN_MIDDLE + 1);
-+ }
-+ if (ioctl(fd, EVIOCGBIT(EV_REL, sizeof(rel_bits)), rel_bits) != -1) {
-+ has_rel_axes = bits_calc(rel_bits, 0, REL_CNT);
-+ }
-+ if (ioctl(fd, EVIOCGBIT(EV_ABS, sizeof(abs_bits)), abs_bits) != -1) {
-+ has_abs_axes = bits_calc(abs_bits, 0, ABS_CNT);
-+ has_mt = bits_calc(abs_bits, ABS_MT_SLOT, ABS_CNT);
-+ }
-+
-+ int flags = 0;
-+ if (has_abs_axes) {
-+ if (has_mt) {
-+ if (!has_buttons) {
-+ /*
-+ * XXX: I'm not sure that joystick detection is
-+ * done right. xf86-input-evdev does not support them.
-+ */
-+ if (ULONG_IS_BIT_SET(key_bits, BTN_JOYSTICK))
-+ flags = ATTR_JOYSTICK;
-+ else
-+ ++has_buttons;
-+ }
-+ }
-+ if (!flags && ULONG_IS_BIT_SET(abs_bits, ABS_X) && ULONG_IS_BIT_SET(abs_bits, ABS_Y)) {
-+ if (ULONG_IS_BIT_SET(key_bits, BTN_TOOL_PEN) ||
-+ ULONG_IS_BIT_SET(key_bits, BTN_STYLUS) ||
-+ ULONG_IS_BIT_SET(key_bits, BTN_STYLUS2))
-+ flags = ATTR_TABLET;
-+ else if (ULONG_IS_BIT_SET(abs_bits, ABS_PRESSURE) ||
-+ ULONG_IS_BIT_SET(key_bits, BTN_TOUCH)) {
-+ if (has_lmr || ULONG_IS_BIT_SET(key_bits, BTN_TOOL_FINGER))
-+ flags = ATTR_TOUCHPAD;
-+ else
-+ flags = ATTR_TOUCHSCREEN;
-+ } else if (!(ULONG_IS_BIT_SET(rel_bits, REL_X) &&
-+ ULONG_IS_BIT_SET(rel_bits, REL_Y)) &&
-+ has_lmr) /* some touchscreens use BTN_LEFT rather than BTN_TOUCH */
-+ flags = ATTR_TOUCHSCREEN;
-+ }
-+ }
-+ if (!flags) {
-+ if (has_keys)
-+ flags = ATTR_KEY | ATTR_KEYBOARD;
-+ else if (has_rel_axes || has_abs_axes || has_buttons)
-+ flags = ATTR_POINTER;
-+ }
-+ return flags;
-+}
-+
-+/* From: sys/dev/usb/usb_hid.c */
-+static int
-+hid_is_collection(report_desc_t s, uint32_t usage)
-+{
-+ struct hid_data* hd = hid_start_parse(s, ~0, -1);
-+ if (!hd)
-+ return 0;
-+
-+ struct hid_item hi;
-+ int rc;
-+ while ((rc = hid_get_item(hd, &hi))) {
-+ if (hi.kind == hid_collection && hi.usage == usage)
-+ break;
-+ }
-+ hid_end_parse(hd);
-+ return rc;
-+}
-+
-+static int
-+hid_is_mouse(report_desc_t s)
-+{
-+ struct hid_data* hd = hid_start_parse(s, (1 << hid_input), -1);
-+ if (!hd)
-+ return 0;
-+
-+ struct hid_item hi;
-+ int found = 0, mdepth = 0;
-+ while (hid_get_item(hd, &hi)) {
-+ switch (hi.kind) {
-+ case hid_collection:
-+ if (mdepth != 0)
-+ ++mdepth;
-+ else if (hi.collection == 1 &&
-+ hi.usage == HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE))
-+ ++mdepth;
-+ break;
-+ case hid_endcollection:
-+ if (mdepth)
-+ --mdepth;
-+ break;
-+ case hid_input:
-+ if (!mdepth)
-+ break;
-+ if (hi.usage == HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X) &&
-+ (hi.flags & (HIO_CONST|HIO_RELATIVE)) == HIO_RELATIVE)
-+ ++found;
-+ if (hi.usage == HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y) &&
-+ (hi.flags & (HIO_CONST|HIO_RELATIVE)) == HIO_RELATIVE)
-+ ++found;
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+ hid_end_parse(hd);
-+ return found;
-+}
-+
-+static char *
-+sysctl_get_str(const char *sysctlname, size_t *size_ret)
-+{
-+ if (!sysctlname)
-+ return NULL;
-+
-+ size_t len = 0;
-+ if (sysctlbyname(sysctlname, NULL, &len, NULL, 0) || !len)
-+ return NULL;
-+
-+ char* dest = malloc(len + 1);
-+ if (!dest)
-+ return NULL;
-+
-+ if (sysctlbyname(sysctlname, dest, &len, NULL, 0)) {
-+ free(dest);
-+ return NULL;
-+ }
-+ dest[len] = 0;
-+ if (size_ret)
-+ *size_ret = len;
-+ return dest;
-+}
-+
-+static char *
-+devd_get_val(char *buf, size_t buf_size, const char *val_name, size_t val_name_size, size_t *val_size)
-+{
-+ if (!buf || !buf_size || !val_name || !val_name_size)
-+ return NULL;
-+
-+ char *ret = buf, *buf_end = (buf + buf_size);
-+ while (ret && ret < buf_end) {
-+ ret = memmem(ret, (buf_end - ret), val_name, val_name_size);
-+ if (!ret)
-+ return NULL;
-+ /* Found. */
-+ /* Check: space before or buf+1. */
-+ if ((buf + 1) < ret && ret[-1] != ' ') {
-+ ret += val_name_size;
-+ continue;
-+ }
-+ /* Check: = after name and size for value. */
-+ ret += val_name_size;
-+ if ((ret + 1) >= buf_end)
-+ return NULL;
-+ if (ret[0] != '=')
-+ continue;
-+ ++ret;
-+ break;
-+ }
-+ if (!ret || !val_size)
-+ return ret;
-+ /* Calc value data size. */
-+ char* ptr = memchr(ret, ' ', (buf_end - ret));
-+ if (!ptr) /* End of string/last value. */
-+ ptr = buf_end;
-+ *val_size = (ptr - ret);
-+ return ret;
-+}
-+
-+static void
-+device_added(const char *dev_name, size_t dev_name_size, int allow_no_device)
-+{
-+ if (!dev_name || !dev_name_size || dev_name_size > PATH_MAX)
-+ return;
-+
-+ char config_info[PATH_MAX + 32];
-+ /* Make dev_name null ended string. */
-+ snprintf(config_info, sizeof(config_info), DEVD_PATH_DEV"%.*s", (int)dev_name_size, dev_name);
-+ /* Set / update pointers to dev_name and dev_path. */
-+ char* dev_path = (config_info + DEVD_PATH_LEN); /* Skip: "devd:" */
-+ dev_name = (dev_path + _PATH_DEV_LEN); /* Skip: "/dev/" */
-+
-+ /* Is known input device or path? */
-+ hw_type_t *hwtype = get_dev_type_by_name(dev_name, dev_name_size);
-+ if (!hwtype) {
-+ hw_type_t hwtype_cust;
-+ hwtype = get_dev_type_by_path(dev_name, dev_name_size, &hwtype_cust);
-+ }
-+ if (!hwtype) /* Not found in white list. */
-+ return;
-+
-+ /* Skip legacy interfaces if EVDEV_SUPPORT is compiled into kernel */
-+ if (evdev_support && hwtype->is_hybrid) {
-+ LogMessage(X_INFO, "config/devd: EVDEV_SUPPORT is enabled, ignoring device %s\n", dev_name);
-+ return;
-+ }
-+ /* Skip keyboard devices if kbdmux is enabled */
-+ if (is_kbdmux && !allow_no_device && (hwtype->flags & ATTR_KEYBOARD)) {
-+ LogMessage(X_INFO, "config/devd: kbdmux is enabled, ignoring device %s\n", dev_name);
-+ return;
-+ }
-+ /* Skip duplicate devices. */
-+ if (device_is_duplicate(config_info)) {
-+ LogMessage(X_WARNING, "config/devd: device %s already added. ignoring\n", dev_path);
-+ return;
-+ }
-+
-+ /* Init and set attributes. */
-+ char pnp_usb_id[PATH_MAX], product[PATH_MAX], vendor[PATH_MAX];
-+ InputAttributes attrs;
-+ memset(&attrs, 0, sizeof(attrs));
-+ attrs.device = dev_path;
-+ attrs.flags = hwtype->flags;
-+
-+ /* Try to open device. */
-+ int fd = open(dev_path, O_RDONLY);
-+ if (fd < 0) {
-+ if (!(hwtype->flags & (ATTR_KEY | ATTR_KEYBOARD))) {
-+ /*
-+ * Fail if cannot open device, it breaks AllowMouseOpenFail,
-+ * but it should not matter when config/devd is enabled
-+ */
-+ LogMessage(X_WARNING, "config/devd: device %s already opened\n", dev_path);
-+ return;
-+ }
-+ if (!allow_no_device) {
-+ /*
-+ * There can be only one keyboard attached to console and
-+ * it is already added.
-+ */
-+ LogMessage(X_WARNING, "config/devd: console keyboard is already added, ignoring %s\n", dev_path);
-+ return;
-+ }
-+ } else {
-+ /* Try to get device info via ioctl(). */
-+ keyboard_info_t kbdi;
-+ mousehw_t mshw;
-+ struct input_id iid;
-+ report_desc_t rep_desc;
-+
-+ if (ioctl(fd, KDGKBINFO, &kbdi) != -1) { /* Is this keyboard? */
-+ memcpy(product, kbdi.kb_name, sizeof(kbdi.kb_name));
-+ attrs.product = product;
-+ attrs.flags = ATTR_KEY | ATTR_KEYBOARD;
-+ LogMessage(X_INFO, "config/devd: detected keyboard: %s, kb_index=%i, kb_unit=%i, kb_type=%i, kb_config=%i\n",
-+ kbdi.kb_name, kbdi.kb_index, kbdi.kb_unit, kbdi.kb_type, kbdi.kb_config);
-+ } else if (ioctl(fd, MOUSE_GETHWINFO, &mshw) != -1) { /* Is this mouse? */
-+ /* FreeBSD mouse drivers does not return real vid+pid. */
-+ /* construct USB ID in lowercase hex - "0000:ffff" */
-+ if (mshw.iftype != MOUSE_IF_USB && mshw.model > 0) {
-+ snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%04x:%04x", mshw.hwid, mshw.model);
-+ attrs.usb_id = pnp_usb_id;
-+ }
-+ if (mshw.type == MOUSE_PAD)
-+ attrs.flags = ATTR_TOUCHPAD;
-+ else
-+ attrs.flags = ATTR_POINTER;
-+ LogMessage(X_INFO, "config/devd: detected mouse: hwid=%04x, model=%04x, type=%04x, iftype=%04x, buttons=%d\n",
-+ mshw.hwid, mshw.model, mshw.type, mshw.iftype, mshw.buttons);
-+ } else if (ioctl(fd, JSIOCGNAME((sizeof(product) - 1)), product) != -1) { /* Is this joystick? */
-+ attrs.product = product;
-+ attrs.flags = ATTR_JOYSTICK;
-+ LogMessage(X_INFO, "config/devd: detected joystick: %s\n", product);
-+ } else if (ioctl(fd, EVIOCGID, &iid) != -1 &&
-+ ioctl(fd, EVIOCGNAME((sizeof(product) - 1)), product) != -1) { /* Is this event? */
-+ /* construct USB ID in lowercase hex - "0000:ffff" */
-+ snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%04x:%04x", iid.vendor, iid.product);
-+ attrs.usb_id = pnp_usb_id;
-+ attrs.product = product;
-+ /* Detect device type. */
-+ attrs.flags = get_evdev_flags(fd);
-+ /* Skip keyboard devices if kbdmux is enabled and EVDEV_SUPPORT is not compiled into kernel*/
-+ if (is_kbdmux && !evdev_support && (attrs.flags & ATTR_KEYBOARD)) {
-+ close(fd);
-+ LogMessage(X_INFO, "config/devd: kbdmux is enabled, ignoring device %s\n", dev_name);
-+ return;
-+ }
-+ LogMessage(X_INFO, "config/devd: detected event input: %s, bustype=%04x, vendor=%04x, product=%04x, version=%04x\n",
-+ product, iid.bustype, iid.vendor, iid.product, iid.version);
-+ } else if ((rep_desc = hid_get_report_desc(fd))) { /* Is USB HID? */
-+ if (hid_is_mouse(rep_desc)) {
-+ attrs.flags = ATTR_POINTER;
-+ LogMessage(X_INFO, "config/devd: detected USB HID mouse\n");
-+ } else if (hid_is_collection(rep_desc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_KEYBOARD))) {
-+ /* Skip keyboard devices if kbdmux is enabled */
-+ if (is_kbdmux) {
-+ hid_dispose_report_desc(rep_desc);
-+ close(fd);
-+ LogMessage(X_INFO, "config/devd: kbdmux is enabled, ignoring device %s\n", dev_name);
-+ return;
-+ }
-+ attrs.flags = ATTR_KEY | ATTR_KEYBOARD;
-+ LogMessage(X_INFO, "config/devd: detected USB HID keyboard\n");
-+ } else if (hid_is_collection(rep_desc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_JOYSTICK)) ||
-+ hid_is_collection(rep_desc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_GAME_PAD))) {
-+ attrs.flags = ATTR_JOYSTICK;
-+ LogMessage(X_INFO, "config/devd: detected USB HID joystick\n");
-+ } else
-+ LogMessage(X_INFO, "config/devd: detected USB HID of unknown type\n");
-+ hid_dispose_report_desc(rep_desc);
-+ }
-+
-+ if (!attrs.usb_id) { /* Is this webcamd device? */
-+ unsigned short vid, pid;
-+ if (ioctl(fd, WEBCAMD_IOCTL_GET_USB_VENDOR_ID, &vid) != -1 &&
-+ ioctl(fd, WEBCAMD_IOCTL_GET_USB_PRODUCT_ID, &pid) != -1) {
-+ snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%04x:%04x", vid, pid);
-+ attrs.usb_id = pnp_usb_id;
-+ LogMessage(X_INFO, "config/devd: webcamd device: %s\n", pnp_usb_id);
-+ }
-+ }
-+ }
-+ close(fd);
-+
-+ /* Try to get device info via sysctl(). */
-+ if (!attrs.usb_id && !attrs.pnp_id) {
-+ char sysctlname[PATH_MAX];
-+ snprintf(sysctlname, sizeof(sysctlname), "dev.%.*s.%s.%%pnpinfo",
-+ (int)hwtype->dev_name_size,
-+ (hwtype->dev_name + hwtype->path_offset),
-+ (dev_name + hwtype->path_offset + hwtype->dev_name_size));
-+ size_t sdata_size;
-+ char* sdata = sysctl_get_str(sysctlname, &sdata_size);
-+ if (sdata) {
-+ size_t pid_size, vid_size;
-+ char* ptr_vid = devd_get_val_cstr("vendor", sdata, sdata_size, &vid_size);
-+ char* ptr_pid = devd_get_val_cstr("product", sdata, sdata_size, &pid_size);
-+ if (ptr_vid && ptr_pid) { /* usb_id */
-+ ptr_vid[vid_size] = 0;
-+ ptr_pid[pid_size] = 0;
-+ snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%s:%s", ptr_vid, ptr_pid);
-+ attrs.usb_id = pnp_usb_id;
-+ LogMessage(X_INFO, "config/devd: [sysctl] usb_id: %s\n", pnp_usb_id);
-+ } else { /* pnp_id */
-+ strlcpy(pnp_usb_id, sdata, sizeof(pnp_usb_id));
-+ attrs.pnp_id = pnp_usb_id;
-+ }
-+ free(sdata);
-+ }
-+ }
-+ if (!attrs.vendor || !attrs.product) {
-+ char sysctlname[PATH_MAX];
-+ snprintf(sysctlname, sizeof(sysctlname), "dev.%.*s.%s.%%desc",
-+ (int)hwtype->dev_name_size,
-+ (hwtype->dev_name + hwtype->path_offset),
-+ (dev_name + hwtype->path_offset + hwtype->dev_name_size));
-+ size_t sdata_size;
-+ char* sdata = sysctl_get_str(sysctlname, &sdata_size);
-+ if (sdata) {
-+ /* Vendor. */
-+ char* ptr_pid = memchr(sdata, ' ', sdata_size);
-+ if (ptr_pid)
-+ ptr_pid[0] = 0;
-+ strlcpy(vendor, sdata, sizeof(vendor));
-+ attrs.vendor = vendor;
-+ /* Product. */
-+ if (!attrs.product && ptr_pid) {
-+ ++ptr_pid;
-+ char* ptr_vid = memchr(ptr_pid, ',', (sdata_size - (ptr_pid - sdata)));
-+ if (ptr_vid)
-+ ptr_vid[0] = 0;
-+ strlcpy(product, ptr_pid, sizeof(product));
-+ attrs.product = product;
-+ } else
-+ product[0] = 0;
-+ free(sdata);
-+ LogMessage(X_INFO, "config/devd: [sysctl] vendor: %s, product: %s\n", vendor, product);
-+ }
-+ }
-+
-+ /* Init options. */
-+ InputOption *option = NULL, *options = NULL;
-+ if ((option = input_option_new(options, "_source", "server/devd")))
-+ options = option;
-+ if (option && (option = input_option_new(options, "config_info", config_info)))
-+ options = option;
-+ if (option && (option = input_option_new(options, "name", (attrs.product ? attrs.product : dev_name))))
-+ options = option;
-+ if (option && hwtype->xdriver && (option = input_option_new(options, "driver", hwtype->xdriver)))
-+ options = option;
-+ /*
-+ * Don't pass "device" option if the keyboard is already attached to the console (ie. open() failed)
-+ * This would activate a special logic in xf86-input-keyboard. Prevent any other attached to console
-+ * keyboards being processed. There can be only one such device.
-+ */
-+ if (option && fd >= 0 && (option = input_option_new(options, "device", dev_path)))
-+ options = option;
-+ /* Most drivers just use "device" but evdev also uses "path" so populate both */
-+ if (option && (option = input_option_new(options, "path", dev_path)))
-+ options = option;
-+ if (option) {
-+ LogMessage(X_INFO, "config/devd: adding input device %s\n", dev_path);
-+ DeviceIntPtr dev_iptr = NULL;
-+ int rc;
-+ if ((rc = NewInputDeviceRequest(options, &attrs, &dev_iptr)) != Success)
-+ LogMessage(X_ERROR, "config/devd: error %d adding device %s\n", rc, dev_path);
-+ } else
-+ LogMessage(X_ERROR, "config/devd: error adding device %s\n", dev_path);
-+ if (options)
-+ input_option_free_list(&options);
-+ return;
-+}
-+
-+static void
-+device_removed(const char *dev_name, size_t dev_name_size)
-+{
-+
-+ if (!dev_name || !dev_name_size || dev_name_size > PATH_MAX)
-+ return;
-+
-+ hw_type_t hwtype_cust;
-+ if (!get_dev_type_by_name(dev_name, dev_name_size) &&
-+ !get_dev_type_by_path(dev_name, dev_name_size, &hwtype_cust))
-+ return; /* Device not in list - unknown. */
-+
-+ char config_info[PATH_MAX + 32];
-+ snprintf(config_info, sizeof(config_info), DEVD_PATH_DEV"%.*s", (int)dev_name_size, dev_name);
-+ if (device_is_duplicate(config_info))
-+ LogMessage(X_INFO, "config/devd: removing input device %s\n", (config_info + DEVD_PATH_LEN));
-+ else
-+ LogMessage(X_INFO, "config/devd: removing nonexistent device %s\n", (config_info + DEVD_PATH_LEN));
-+ remove_devices("devd", config_info);
-+ return;
-+}
-+
-+static void socket_handler(int fd, int ready, void *data);
-+
-+static int
-+connect_devd(void)
-+{
-+ int sock = socket(AF_UNIX, SOCK_STREAM, 0);
-+ if (sock < 0) {
-+ LogMessage(X_ERROR, "config/devd: failed opening stream socket: %s\n", strerror(errno));
-+ return -1;
-+ }
-+
-+ struct sockaddr_un devd;
-+ devd.sun_family = AF_UNIX;
-+ memcpy(devd.sun_path, DEVD_SOCK_PATH, sizeof(DEVD_SOCK_PATH));
-+ if (connect(sock, (struct sockaddr*)&devd, sizeof(devd)) < 0) {
-+ int error = errno;
-+ close(sock);
-+ LogMessage(X_ERROR, "config/devd: failed to connect to devd: %s)\n", strerror(error));
-+ return -1;
-+ }
-+
-+ SetNotifyFd(sock, socket_handler, X_NOTIFY_READ, NULL);
-+ return sock;
-+}
-+
-+static void
-+disconnect_devd(int sock)
-+{
-+ if (sock < 0)
-+ return;
-+ RemoveNotifyFd(sock);
-+ close(sock);
-+ return;
-+}
-+
-+static CARD32
-+reconnect_handler(OsTimerPtr timer, CARD32 time, void *arg)
-+{
-+ devd_buf_used = 0;
-+ devd_skt = connect_devd();
-+ if (devd_skt < 0) /* Try again after RECONNECT_DELAY */
-+ return RECONNECT_DELAY;
-+ TimerFree(rtimer);
-+ rtimer = NULL;
-+ LogMessage(X_INFO, "config/devd: reopened devd socket\n");
-+ return 0;
-+}
-+
-+static void
-+socket_handler(int fd, int ready, void *data)
-+{
-+ /* Read new data. */
-+ while (1) {
-+ ssize_t ios = recv(devd_skt, (devd_buf + devd_buf_used), (sizeof(devd_buf) - devd_buf_used), MSG_DONTWAIT);
-+ if (ios > 0) { /* Read OK. */
-+ devd_buf_used += ios;
-+ continue; /* Try to read more. */
-+ }
-+ /* Something wrong. */
-+ int error = errno;
-+ if (error == EAGAIN)
-+ break; /* All available data read. */
-+ if (error == EINTR)
-+ continue;
-+ if (devd_buf_used >= sizeof(devd_buf)) {
-+ devd_buf_used = 0; /* Message too long, reset buf. */
-+ continue;
-+ }
-+ /* devd socket is lost */
-+ disconnect_devd(devd_skt);
-+ rtimer = TimerSet(NULL, 0, 1, reconnect_handler, NULL);
-+ LogMessage(X_WARNING, "config/devd: devd socket read error: %s\n", strerror(error));
-+ return;
-+ }
-+
-+ /* Process data. */
-+ char *ptr, *line = (devd_buf + 1);
-+ size_t line_size = 0;
-+ while((ptr = memchr(line, '\n', (devd_buf_used - line_size)))) {
-+ line_size = (ptr - line);
-+ do {
-+ if (*(line - 1) != DEVD_EVENT_NOTIFY)
-+ break; /* Handle only notify. */
-+ /* Check: is system=DEVFS. */
-+ size_t val_size;
-+ char* val = devd_get_val_cstr("system", line, line_size, &val_size);
-+ if (!is_meuqual_cstr("DEVFS", val, val_size))
-+ break;
-+ /* Check: is subsystem=CDEV. */
-+ val = devd_get_val_cstr("subsystem", line, line_size, &val_size);
-+ if (!is_meuqual_cstr("CDEV", val, val_size))
-+ break;
-+ /* Get device name. */
-+ size_t cdev_size;
-+ char* cdev = devd_get_val_cstr("cdev", line, line_size, &cdev_size);
-+ if (!cdev)
-+ break;
-+ /* Get event type. */
-+ val = devd_get_val_cstr("type", line, line_size, &val_size);
-+ if (is_meuqual_cstr("CREATE", val, val_size)) {
-+ device_added(cdev, cdev_size, 0);
-+ } else if (is_meuqual_cstr("DESTROY", val, val_size)) {
-+ device_removed(cdev, cdev_size);
-+ }
-+ } while(0);
-+
-+ line += (line_size + 2); /* Skip '\n' and event type byte. */
-+ line_size = (line - devd_buf);
-+ if (devd_buf_used <= line_size) {
-+ devd_buf_used = 0;
-+ return;
-+ }
-+ }
-+ /* Save line without end marker. */
-+ if (line_size) {
-+ devd_buf_used -= (line_size - 1);
-+ memmove(devd_buf, (line - 1), devd_buf_used);
-+ }
-+ return;
-+}
-+
-+int
-+config_devd_init(void)
-+{
-+ LogMessage(X_INFO, "config/devd: probing input devices...\n");
-+
-+ /* Check if kernel is compiled with evdev support in hybrid drivers */
-+ evdev_support = feature_present("evdev_support");
-+
-+ /*
-+ * Add fake keyboard and give up on keyboards management
-+ * if kbdmux is enabled and not exported through evdev
-+ */
-+ is_kbdmux = is_kbdmux_enabled();
-+ if (is_kbdmux && !evdev_support)
-+ device_added("kbdmux0", 7, 1);
-+
-+ /* Scan /dev/ for devices. */
-+ struct dirent** namelist;
-+ size_t dir_cnt = scandir(_PATH_DEV, &namelist, 0, alphasort);
-+ for (size_t i = 0; i < dir_cnt; ++i) {
-+ struct dirent* de = namelist[i];
-+ if (is_de_euqual_cstr(de, ".") ||
-+ is_de_euqual_cstr(de, "..")) {
-+ free(de);
-+ continue;
-+ }
-+ if (de->d_type != DT_DIR) {
-+ device_added(de->d_name, de->d_namlen, 0);
-+ } else { /* Sub folder. */
-+ char devicename[PATH_MAX];
-+ snprintf(devicename, sizeof(devicename), _PATH_DEV "%s", de->d_name);
-+ struct dirent** snamelist;
-+ size_t sdir_cnt = scandir(devicename, &snamelist, 0, alphasort);
-+ for (size_t j = 0; j < sdir_cnt; ++j) {
-+ struct dirent* sde = snamelist[j];
-+ if (!is_de_euqual_cstr(sde, ".") &&
-+ !is_de_euqual_cstr(sde, "..") &&
-+ sde->d_type != DT_DIR) {
-+ size_t tm = snprintf(devicename, sizeof(devicename), "%s/%s", de->d_name, sde->d_name);
-+ device_added(devicename, tm, 0);
-+ }
-+ free(sde);
-+ }
-+ free(snamelist);
-+ }
-+ free(de);
-+ }
-+ free(namelist);
-+
-+ devd_buf_used = 0;
-+ devd_skt = connect_devd();
-+ return (devd_skt < 0) ? 0 : 1;
-+}
-+
-+void
-+config_devd_fini(void)
-+{
-+ LogMessage(X_INFO, "config/devd: terminating backend...\n");
-+
-+ if (rtimer) {
-+ TimerFree(rtimer);
-+ rtimer = NULL;
-+ }
-+
-+ disconnect_devd(devd_skt);
-+ return;
-+}
Index: x11-servers/xorg-server/files/patch-configure
===================================================================
--- x11-servers/xorg-server/files/patch-configure
+++ /dev/null
@@ -1,165 +0,0 @@
-* generated from patched configure.ac; revise and regen instead of editing
-*
-* Plumb the devd config backend into configure
-*
-* define USE_DEV_IO for ARM platforms
-*
-* Only run pkg-config for udev if it is not disabled to prevent over-linking
-*
-* Automatically use systemd/logind only on Linux
-*
---- configure.orig 2017-03-15 18:05:39 UTC
-+++ configure
-@@ -1032,6 +1032,8 @@ CONFIG_UDEV_FALSE
- CONFIG_UDEV_TRUE
- UDEV_LIBS
- UDEV_CFLAGS
-+CONFIG_DEVD_FALSE
-+CONFIG_DEVD_TRUE
- HAVE_SYSTEMD_DAEMON_FALSE
- HAVE_SYSTEMD_DAEMON_TRUE
- SYSTEMD_DAEMON_LIBS
-@@ -1367,6 +1369,7 @@ enable_tslib
- enable_dbe
- enable_xf86bigfont
- enable_dpms
-+enable_config_devd
- enable_config_udev
- enable_config_udev_kms
- enable_config_hal
-@@ -2191,6 +2194,7 @@ Optional Features:
- --disable-dbe Build DBE extension (default: enabled)
- --enable-xf86bigfont Build XF86 Big Font extension (default: disabled)
- --disable-dpms Build DPMS extension (default: enabled)
-+ --enable-config-devd Build devd support (default: auto)
- --enable-config-udev Build udev support (default: auto)
- --enable-config-udev-kms
- Build udev kms support (default: auto)
-@@ -23280,9 +23284,13 @@ $as_echo "#define USE_ALPHA_PIO 1" >>con
- esac
- GLX_ARCH_DEFINES="-D__GLX_ALIGN64 -mieee"
- ;;
-- arm*)
-+ arm*|aarch64*|riscv*)
- ARM_VIDEO=yes
- DEFAULT_INT10="stub"
-+ case $host_os in
-+ *freebsd*) $as_echo "#define USE_DEV_IO 1" >>confdefs.h
-+ ;;
-+ esac
- ;;
- i*86)
- I386_VIDEO=yes
-@@ -24053,6 +24061,13 @@ else
- DPMSExtension=yes
- fi
-
-+# Check whether --enable-config-devd was given.
-+if test "${enable_config_devd+set}" = set; then :
-+ enableval=$enable_config_devd; CONFIG_DEVD=$enableval
-+else
-+ CONFIG_DEVD=auto
-+fi
-+
- # Check whether --enable-config-udev was given.
- if test "${enable_config_udev+set}" = set; then :
- enableval=$enable_config_udev; CONFIG_UDEV=$enableval
-@@ -25813,6 +25828,31 @@ if test "x$CONFIG_UDEV" = xyes && test "
- as_fn_error $? "Hotplugging through both libudev and hal not allowed" "$LINENO" 5
- fi
-
-+if test "x$CONFIG_DEVD" = xauto; then
-+ case $host_os in
-+ *freebsd*)
-+ CONFIG_DEVD=yes
-+ ;;
-+ *)
-+ CONFIG_DEVD=no
-+ ;;
-+ esac
-+fi
-+ if test "x$CONFIG_DEVD" = xyes; then
-+ CONFIG_DEVD_TRUE=
-+ CONFIG_DEVD_FALSE='#'
-+else
-+ CONFIG_DEVD_TRUE='#'
-+ CONFIG_DEVD_FALSE=
-+fi
-+
-+if test "x$CONFIG_DEVD" = xyes; then
-+
-+$as_echo "#define CONFIG_DEVD 1" >>confdefs.h
-+
-+fi
-+
-+if test "x$CONFIG_UDEV" != xno; then
-
- pkg_failed=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UDEV" >&5
-@@ -25884,11 +25924,12 @@ else
- printf "%s\n" "yes" >&6; }
- HAVE_LIBUDEV=yes
- fi
--if test "x$CONFIG_UDEV" = xauto; then
-- CONFIG_UDEV="$HAVE_LIBUDEV"
-+ if test "x$CONFIG_UDEV" = xauto; then
-+ CONFIG_UDEV="$HAVE_LIBUDEV"
-
- printf "%s\n" "#define HAVE_LIBUDEV 1" >>confdefs.h
-
-+ fi
- fi
- if test "x$CONFIG_UDEV" = xyes; then
- CONFIG_UDEV_TRUE=
-@@ -26132,7 +26173,14 @@ fi
-
- if test "x$SYSTEMD_LOGIND" = xauto; then
- if test "x$HAVE_DBUS" = xyes -a "x$CONFIG_UDEV" = xyes ; then
-- SYSTEMD_LOGIND=yes
-+ case $host_os in
-+ *linux*)
-+ SYSTEMD_LOGIND=yes
-+ ;;
-+ *)
-+ SYSTEMD_LOGIND=no
-+ ;;
-+ esac
- else
- SYSTEMD_LOGIND=no
- fi
-@@ -32849,17 +32897,17 @@ DIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER
- ac_config_commands="$ac_config_commands sdksyms"
-
-
--if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno; then
-+if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno && test "x$CONFIG_DEVD" = xno; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
-- ***********************************************
-- Neither HAL nor udev backend will be enabled.
-+ *****************************************************
-+ Neither HAL, devd, nor udev backend will be enabled.
- Input device hotplugging will not be available!
-- ***********************************************" >&5
-+ *****************************************************" >&5
- printf "%s\n" "$as_me: WARNING:
-- ***********************************************
-- Neither HAL nor udev backend will be enabled.
-+ *****************************************************
-+ Neither HAL, devd, nor udev backend will be enabled.
- Input device hotplugging will not be available!
-- ***********************************************" >&2;}
-+ *****************************************************" >&2;}
- fi
-
- ac_config_files="$ac_config_files Makefile glx/Makefile include/Makefile composite/Makefile damageext/Makefile dbe/Makefile dix/Makefile doc/Makefile doc/dtrace/Makefile man/Makefile fb/Makefile glamor/Makefile record/Makefile config/Makefile mi/Makefile miext/Makefile miext/sync/Makefile miext/damage/Makefile miext/shadow/Makefile miext/rootless/Makefile os/Makefile pseudoramiX/Makefile randr/Makefile render/Makefile xkb/Makefile Xext/Makefile Xi/Makefile xfixes/Makefile exa/Makefile dri3/Makefile present/Makefile hw/Makefile hw/xfree86/Makefile hw/xfree86/Xorg.sh hw/xfree86/common/Makefile hw/xfree86/common/xf86Build.h hw/xfree86/ddc/Makefile hw/xfree86/dixmods/Makefile hw/xfree86/doc/Makefile hw/xfree86/dri/Makefile hw/xfree86/dri2/Makefile hw/xfree86/dri2/pci_ids/Makefile hw/xfree86/drivers/Makefile hw/xfree86/drivers/modesetting/Makefile hw/xfree86/exa/Makefile hw/xfree86/exa/man/Makefile hw/xfree86/fbdevhw/Makefile hw/xfree86/fbdevhw/man/Makefile hw/xfree86/glamor_egl/Makefile hw/xfree86/i2c/Makefile hw/xfree86/int10/Makefile hw/xfree86/loader/Makefile hw/xfree86/man/Makefile hw/xfree86/modes/Makefile hw/xfree86/os-support/Makefile hw/xfree86/os-support/bsd/Makefile hw/xfree86/os-support/bus/Makefile hw/xfree86/os-support/hurd/Makefile hw/xfree86/os-support/misc/Makefile hw/xfree86/os-support/linux/Makefile hw/xfree86/os-support/solaris/Makefile hw/xfree86/os-support/stub/Makefile hw/xfree86/parser/Makefile hw/xfree86/ramdac/Makefile hw/xfree86/shadowfb/Makefile hw/xfree86/vbe/Makefile hw/xfree86/vgahw/Makefile hw/xfree86/x86emu/Makefile hw/xfree86/utils/Makefile hw/xfree86/utils/man/Makefile hw/xfree86/utils/cvt/Makefile hw/xfree86/utils/gtf/Makefile hw/dmx/config/Makefile hw/dmx/config/man/Makefile hw/dmx/doc/Makefile hw/dmx/doxygen/doxygen.conf hw/dmx/doxygen/Makefile hw/dmx/examples/Makefile hw/dmx/input/Makefile hw/dmx/glxProxy/Makefile hw/dmx/Makefile hw/dmx/man/Makefile hw/vfb/Makefile hw/vfb/man/Makefile hw/xnest/Makefile hw/xnest/man/Makefile hw/xwin/Makefile hw/xwin/dri/Makefile hw/xwin/glx/Makefile hw/xwin/man/Makefile hw/xwin/winclipboard/Makefile hw/xquartz/Makefile hw/xquartz/GL/Makefile hw/xquartz/bundle/Makefile hw/xquartz/man/Makefile hw/xquartz/mach-startup/Makefile hw/xquartz/pbproxy/Makefile hw/xquartz/xpr/Makefile hw/kdrive/Makefile hw/kdrive/ephyr/Makefile hw/kdrive/ephyr/man/Makefile hw/kdrive/fake/Makefile hw/kdrive/fbdev/Makefile hw/kdrive/linux/Makefile hw/kdrive/src/Makefile hw/xwayland/Makefile test/Makefile test/xi1/Makefile test/xi2/Makefile xserver.ent xorg-server.pc"
-@@ -33122,6 +33170,10 @@ if test -z "${HAVE_SYSTEMD_DAEMON_TRUE}"
- as_fn_error $? "conditional \"HAVE_SYSTEMD_DAEMON\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-+if test -z "${CONFIG_DEVD_TRUE}" && test -z "${CONFIG_DEVD_FALSE}"; then
-+ as_fn_error $? "conditional \"CONFIG_DEVD\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${CONFIG_UDEV_TRUE}" && test -z "${CONFIG_UDEV_FALSE}"; then
- as_fn_error $? "conditional \"CONFIG_UDEV\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
Index: x11-servers/xorg-server/files/patch-hw_xfree86_Makefile.in
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_Makefile.in
+++ /dev/null
@@ -1,14 +0,0 @@
-* Don't overwrite Xorg binary with Xorg.sh when SUID_WRAPPER_DIR == bindir
-* Instead, relink bin/X to Xorg.wrap rather than to Xorg (which isn't Xorg.sh)
-*
---- hw/xfree86/Makefile.in.orig 2017-03-16 05:24:43 UTC
-+++ hw/xfree86/Makefile.in
-@@ -1156,7 +1156,7 @@ install-exec-hook:
- @INSTALL_SETUID_TRUE@ chmod u+s $(DESTDIR)$(bindir)/Xorg
- @SUID_WRAPPER_TRUE@ $(MKDIR_P) $(DESTDIR)$(SUID_WRAPPER_DIR)
- @SUID_WRAPPER_TRUE@ mv $(DESTDIR)$(bindir)/Xorg $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg
--@SUID_WRAPPER_TRUE@ ${INSTALL} -m 755 Xorg.sh $(DESTDIR)$(bindir)/Xorg
-+@SUID_WRAPPER_TRUE@ (test ! -f $(DESTDIR)$(bindir)/Xorg && ${INSTALL} -m 755 Xorg.sh $(DESTDIR)$(bindir)/Xorg || cd $(DESTDIR)$(bindir) && rm -f X && $(LN_S) Xorg.wrap$(EXEEXT) X)
- @SUID_WRAPPER_TRUE@ -chown 0 $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.wrap && chmod u+s $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.wrap
-
- uninstall-local:
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86AutoConfig.c
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86AutoConfig.c
+++ x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86AutoConfig.c
@@ -2,9 +2,9 @@
*
* Use our scfb driver as fallback instead of Linux's fbdev
*
---- hw/xfree86/common/xf86AutoConfig.c.orig 2017-03-15 18:05:25 UTC
-+++ hw/xfree86/common/xf86AutoConfig.c
-@@ -294,7 +294,7 @@ listPossibleVideoDrivers(XF86MatchedDriv
+--- hw/xfree86/common/xf86AutoConfig.c.orig 2022-01-02 23:41:56.000000000 +0100
++++ hw/xfree86/common/xf86AutoConfig.c 2022-06-29 11:57:25.400030000 +0200
+@@ -294,7 +294,7 @@ listPossibleVideoDrivers(XF86MatchedDrivers *md)
xf86PciMatchDriver(md);
#endif
@@ -13,7 +13,7 @@
xf86AddMatchedDriver(md, "modesetting");
#endif
-@@ -302,8 +302,10 @@ listPossibleVideoDrivers(XF86MatchedDriv
+@@ -302,8 +302,10 @@ listPossibleVideoDrivers(XF86MatchedDrivers *md)
/* Fallback to platform default frame buffer driver */
#if !defined(__linux__) && defined(__sparc__)
xf86AddMatchedDriver(md, "wsfb");
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Config.c
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Config.c
+++ /dev/null
@@ -1,22 +0,0 @@
-* Select the devd config backend if it is activated
-*
---- hw/xfree86/common/xf86Config.c.orig 2017-03-15 18:05:25 UTC
-+++ hw/xfree86/common/xf86Config.c
-@@ -1375,13 +1375,16 @@ checkCoreInputDevices(serverLayoutPtr se
- }
-
- if (!xf86Info.forceInputDevices && !(foundPointer && foundKeyboard)) {
--#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS)
-+#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || \
-+ defined(CONFIG_DEVD)
- const char *config_backend;
-
- #if defined(CONFIG_HAL)
- config_backend = "HAL";
- #elif defined(CONFIG_UDEV)
- config_backend = "udev";
-+#elif defined(CONFIG_DEVD)
-+ config_backend = "devd";
- #else
- config_backend = "wscons";
- #endif
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Globals.c
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Globals.c
+++ /dev/null
@@ -1,14 +0,0 @@
-* Include devd in the set of config backends
-*
---- hw/xfree86/common/xf86Globals.c.orig 2017-03-15 18:05:25 UTC
-+++ hw/xfree86/common/xf86Globals.c
-@@ -119,7 +119,8 @@ xf86InfoRec xf86Info = {
- .miscModInDevEnabled = TRUE,
- .miscModInDevAllowNonLocal = FALSE,
- .pmFlag = TRUE,
--#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS)
-+#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || \
-+ defined(CONFIG_DEVD)
- .forceInputDevices = FALSE,
- .autoAddDevices = TRUE,
- .autoEnableDevices = TRUE,
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Xinput.c
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Xinput.c
+++ /dev/null
@@ -1,21 +0,0 @@
-* Recognize devd backend as a source of auto-configured devices
-*
---- hw/xfree86/common/xf86Xinput.c.orig 2017-03-15 18:05:25 UTC
-+++ hw/xfree86/common/xf86Xinput.c
-@@ -871,7 +871,7 @@ xf86NewInputDevice(InputInfoPtr pInfo, D
- {
- InputDriverPtr drv = NULL;
- DeviceIntPtr dev = NULL;
-- Bool paused;
-+ Bool paused = 0;
- int rval;
- char *path = NULL;
-
-@@ -1034,6 +1034,7 @@ NewInputDeviceRequest(InputOption *optio
- if (strcmp(key, "_source") == 0 &&
- (strcmp(value, "server/hal") == 0 ||
- strcmp(value, "server/udev") == 0 ||
-+ strcmp(value, "server/devd") == 0 ||
- strcmp(value, "server/wscons") == 0)) {
- is_auto = 1;
- if (!xf86Info.autoAddDevices) {
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86str.h
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86str.h
+++ x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86str.h
@@ -1,5 +1,5 @@
---- hw/xfree86/common/xf86str.h.orig 2020-02-23 17:34:26 UTC
-+++ hw/xfree86/common/xf86str.h
+--- hw/xfree86/common/xf86str.h.orig 2022-01-02 23:41:56.000000000 +0100
++++ hw/xfree86/common/xf86str.h 2022-06-29 11:57:25.502421000 +0200
@@ -249,7 +249,7 @@ typedef struct _DriverRec {
*/
Index: x11-servers/xorg-server/files/patch-hw_xfree86_meson.build
===================================================================
--- /dev/null
+++ x11-servers/xorg-server/files/patch-hw_xfree86_meson.build
@@ -0,0 +1,11 @@
+--- hw/xfree86/meson.build.orig 2022-06-29 14:37:28.042085000 +0000
++++ hw/xfree86/meson.build 2022-06-29 14:37:36.259147000 +0000
+@@ -152,7 +152,7 @@ if get_option('suid_wrapper')
+ c_args: xorg_c_args,
+ install: true,
+ install_dir: get_option('libexecdir'),
+- install_mode: ['r-sr-xr-x', 0, 0],
++ # install_mode: ['r-sr-xr-x', 0, 0],
+ )
+
+ # meson gets confused when there are two targets of the same name
Index: x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_bsd__init.c
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_bsd__init.c
+++ x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_bsd__init.c
@@ -1,6 +1,6 @@
---- hw/xfree86/os-support/bsd/bsd_init.c.orig 2017-03-15 18:05:25 UTC
-+++ hw/xfree86/os-support/bsd/bsd_init.c
-@@ -48,6 +48,8 @@ static int devConsoleFd = -1;
+--- hw/xfree86/os-support/bsd/bsd_init.c.orig 2022-01-02 23:41:56.000000000 +0100
++++ hw/xfree86/os-support/bsd/bsd_init.c 2022-06-29 11:57:25.596851000 +0200
+@@ -48,6 +48,8 @@ static int initialVT = -1;
#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
static int VTnum = -1;
static int initialVT = -1;
Index: x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_ppc__video.c
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_ppc__video.c
+++ x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_ppc__video.c
@@ -1,5 +1,5 @@
---- hw/xfree86/os-support/bsd/ppc_video.c.orig 2016-07-15 16:18:11 UTC
-+++ hw/xfree86/os-support/bsd/ppc_video.c
+--- hw/xfree86/os-support/bsd/ppc_video.c.orig 2022-01-02 23:41:56.000000000 +0100
++++ hw/xfree86/os-support/bsd/ppc_video.c 2022-06-29 11:57:25.691481000 +0200
@@ -79,7 +79,11 @@ xf86DisableIO()
{
Index: x11-servers/xorg-server/files/patch-hw_xfree86_xorg-wrapper.c
===================================================================
--- x11-servers/xorg-server/files/patch-hw_xfree86_xorg-wrapper.c
+++ x11-servers/xorg-server/files/patch-hw_xfree86_xorg-wrapper.c
@@ -1,27 +1,23 @@
* Skip the detection of root rights requirement, the assumption that presence
* of KMS drivers removes the root requirement is only valid for Linux
*
---- hw/xfree86/xorg-wrapper.c.orig 2017-03-15 18:05:25 UTC
-+++ hw/xfree86/xorg-wrapper.c
-@@ -188,9 +188,6 @@ static int on_console(int fd)
+--- hw/xfree86/xorg-wrapper.c.orig 2022-01-02 23:41:56.000000000 +0100
++++ hw/xfree86/xorg-wrapper.c 2022-06-29 16:28:24.797008000 +0200
+@@ -191,7 +191,7 @@ int main(int argc, char *argv[])
int main(int argc, char *argv[])
{
-#ifdef WITH_LIBDRM
-- struct drm_mode_card_res res;
--#endif
++#ifdef WITH_LIBDRM && defined(__linux__)
+ struct drm_mode_card_res res;
+ #endif
char buf[PATH_MAX];
- int i, r, fd;
- int kms_cards = 0;
-@@ -227,9 +224,10 @@ int main(int argc, char *argv[])
+@@ -230,7 +230,7 @@ int main(int argc, char *argv[])
}
}
-#ifdef WITH_LIBDRM
-+#if defined(WITH_LIBDRM) && defined(__linux__)
- /* Detect if we need root rights, except when overriden by the config */
++#ifdef WITH_LIBDRM && defined(__linux__)
+ /* Detect if we need root rights, except when overridden by the config */
if (needs_root_rights == -1) {
-+ struct drm_mode_card_res res;
for (i = 0; i < 16; i++) {
- snprintf(buf, sizeof(buf), DRM_DEV_NAME, DRM_DIR_NAME, i);
- fd = open(buf, O_RDWR);
Index: x11-servers/xorg-server/files/patch-include_dix-config.h.in
===================================================================
--- x11-servers/xorg-server/files/patch-include_dix-config.h.in
+++ /dev/null
@@ -1,14 +0,0 @@
-* Add a define which will be toggled by configure when devd backend is activated
-*
---- include/dix-config.h.in.orig 2017-03-15 18:05:25 UTC
-+++ include/dix-config.h.in
-@@ -433,6 +433,9 @@
- /* Support D-Bus */
- #undef HAVE_DBUS
-
-+/* Use devd for input hotplug */
-+#undef CONFIG_DEVD
-+
- /* Use libudev for input hotplug */
- #undef CONFIG_UDEV
-
Index: x11-servers/xorg-server/files/patch-test_xtest.c
===================================================================
--- x11-servers/xorg-server/files/patch-test_xtest.c
+++ /dev/null
@@ -1,17 +0,0 @@
---- test/xtest.c.orig 2019-04-30 16:40:02.828913000 -0700
-+++ test/xtest.c 2019-04-30 16:40:42.769713000 -0700
-@@ -59,10 +59,10 @@
- static void
- xtest_init_devices(void)
- {
-- ScreenRec screen = {0};
-- ClientRec server_client = {0};
-- WindowRec root = {0};
-- WindowOptRec optional = {0};
-+ ScreenRec screen = {{0}};
-+ ClientRec server_client = {{0}};
-+ WindowRec root = {{0}};
-+ WindowOptRec optional = {{0}};
-
- /* random stuff that needs initialization */
- root.drawable.id = 0xab;
Index: x11-servers/xorg-server/files/patch-xkb_Makefile.in
===================================================================
--- x11-servers/xorg-server/files/patch-xkb_Makefile.in
+++ /dev/null
@@ -1,16 +0,0 @@
-* Skip installing a README into a directory which is actually a symlink created
-* by another port. If this file is installed, then upon uninstall pkg will
-* delete the directory under the symlink, which would cause a reinstall to fail
-* as the target directory is not remade until reinstalling the other port
-*
---- xkb/Makefile.in.orig 2017-03-16 05:24:43 UTC
-+++ xkb/Makefile.in
-@@ -886,7 +886,7 @@ info: info-am
-
- info-am:
-
--install-data-am: install-dist_xkbcompiledDATA
-+install-data-am:
-
- install-dvi: install-dvi-am
-
Index: x11-servers/xorg-server/files/xkb_Makefile.am
===================================================================
--- x11-servers/xorg-server/files/xkb_Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-* Skip installing a README into a directory which is actually a symlink created
-* by another port. If this file is installed, then upon uninstall pkg will
-* delete the directory under the symlink, which would cause a reinstall to fail
-* as the target directory is not remade until reinstalling the other port
-*
---- xkb/Makefile.am.orig 2017-03-16 05:24:43 UTC
-+++ xkb/Makefile.am
-@@ -39,4 +39,4 @@ libxkbstubs_la_SOURCES = ddxVT.c ddxPriv
- EXTRA_DIST = xkbDflts.h xkbgeom.h xkb.h
-
- xkbcompileddir = $(XKB_COMPILED_DIR)
--dist_xkbcompiled_DATA = README.compiled
-+#dist_xkbcompiled_DATA = README.compiled
Index: x11-servers/xorg-server/pkg-descr
===================================================================
--- /dev/null
+++ x11-servers/xorg-server/pkg-descr
@@ -1,3 +0,0 @@
-This package contains the X.Org X server and some associated programs.
-
-WWW: http://www.freedesktop.org/Software/xorg
Index: x11-servers/xorg-server/pkg-plist
===================================================================
--- x11-servers/xorg-server/pkg-plist
+++ x11-servers/xorg-server/pkg-plist
@@ -1,11 +1,6 @@
bin/X
bin/Xorg
-%%SUID%%@(,,4555) bin/Xorg.wrap
-bin/cvt
bin/gtf
-include/xorg/BT.h
-include/xorg/IBM.h
-include/xorg/TI.h
include/xorg/XIstubs.h
include/xorg/Xprintf.h
include/xorg/callback.h
@@ -109,7 +104,6 @@
include/xorg/shadow.h
include/xorg/shadowfb.h
include/xorg/shmint.h
-include/xorg/site.h
include/xorg/syncsdk.h
include/xorg/validate.h
include/xorg/vbe.h
@@ -137,7 +131,6 @@
include/xorg/xf86PciInfo.h
include/xorg/xf86Priv.h
include/xorg/xf86Privstr.h
-include/xorg/xf86RamDac.h
include/xorg/xf86RandR12.h
%%SPARC64%%include/xorg/xf86Sbus.h
include/xorg/xf86VGAarbiter.h
@@ -165,33 +158,35 @@
include/xorg/xserver_poll.h
include/xorg/xvdix.h
include/xorg/xvmcext.h
+include/xorg/xf86-input-inputtest-protocol.h
lib/xorg/modules/drivers/modesetting_drv.so
lib/xorg/modules/extensions/.xorg/libglx.so
+lib/xorg/modules/input/inputtest_drv.so
lib/xorg/modules/libexa.so
-lib/xorg/modules/libfb.so
-lib/xorg/modules/libfbdevhw.so
lib/xorg/modules/libglamoregl.so
lib/xorg/modules/libint10.so
lib/xorg/modules/libshadow.so
lib/xorg/modules/libshadowfb.so
-lib/xorg/modules/libvbe.so
+lib/xorg/modules/libfbdevhw.so
lib/xorg/modules/libvgahw.so
lib/xorg/modules/libwfb.so
lib/xorg/protocol.txt
libdata/pkgconfig/xorg-server.pc
+%%SUID%%@(,,4555) libexec/Xorg.wrap
man/man1/Xorg.1.gz
%%SUID%%man/man1/Xorg.wrap.1.gz
man/man1/Xserver.1.gz
-man/man1/cvt.1.gz
man/man1/gtf.1.gz
man/man4/exa.4.gz
man/man4/fbdevhw.4.gz
+man/man4/inputtestdrv.4.gz
man/man4/modesetting.4.gz
%%SUID%%man/man5/Xwrapper.config.5.gz
man/man5/xorg.conf.5.gz
man/man5/xorg.conf.d.5.gz
-%%UDEV%%share/X11/xorg.conf.d/10-quirks.conf
+share/X11/xorg.conf.d/10-quirks.conf
share/X11/xorg.conf.d/20-evdev-kbd.conf
share/aclocal/xorg-server.m4
@dir etc/X11/xorg.conf.d
@dir %%FONTPATHD%%
+@dir /var/db/xkb
Index: x11-servers/xorg-vfbserver/Makefile
===================================================================
--- x11-servers/xorg-vfbserver/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Created by: Eric Anholt <anholt@FreeBSD.org>
-
-PORTNAME= xorg-vfbserver
-PORTREVISION= 0
-PORTEPOCH= 1
-
-COMMENT= X virtual framebuffer server from X.Org
-
-LICENSE= MIT
-
-MASTERDIR= ${.CURDIR}/../xorg-server
-DESCR= ${.CURDIR}/pkg-descr
-
-SLAVE_PORT= yes
-
-CONFIGURE_ARGS+=--enable-xvfb --disable-dmx --disable-xephyr --disable-xnest \
- --disable-xwayland
-
-PLIST_FILES= bin/Xvfb man/man1/Xvfb.1.gz
-
-do-install:
- cd ${WRKSRC}/hw/vfb; DESTDIR=${STAGEDIR} ${MAKE} install
-
-.include "${MASTERDIR}/Makefile"
Index: x11-servers/xorg-vfbserver/pkg-descr
===================================================================
--- /dev/null
+++ x11-servers/xorg-vfbserver/pkg-descr
@@ -1,3 +0,0 @@
-This package contains Xvfb, a virtual framebuffer X server.
-
-WWW: https://www.x.org/
Index: x11/py-pyvirtualdisplay/Makefile
===================================================================
--- x11/py-pyvirtualdisplay/Makefile
+++ x11/py-pyvirtualdisplay/Makefile
@@ -31,10 +31,10 @@
XEPHYR_DESC= Install Xephyr backend
XVNC_DESC= Install Xvnc backend
-XVFB_RUN_DEPENDS= xorg-vfbserver>0:x11-servers/xorg-vfbserver
-XEPHYR_RUN_DEPENDS= xephyr>=0:x11-servers/xephyr
+XVFB_RUN_DEPENDS= Xvfb:x11-servers/xorg-server@Xvfb
+XEPHYR_RUN_DEPENDS= Xephyr>=0:x11-servers/xorg-server@Xvfb
XVNC_RUN_DEPENDS= tightvnc>=0:net/tightvnc
NO_ARCH= yes
-.include <bsd.port.mk>
+hanninclude <bsd.port.mk>
Index: x11/xorg/Makefile
===================================================================
--- x11/xorg/Makefile
+++ x11/xorg/Makefile
@@ -27,9 +27,8 @@
xorg-drivers>0:x11-drivers/xorg-drivers
.if defined(XORG_COMPLETE)
-RUN_DEPENDS+= Xnest:x11-servers/xorg-nestserver \
- Xdmx:x11-servers/xorg-dmx \
- Xvfb:x11-servers/xorg-vfbserver
+RUN_DEPENDS+= Xnest:x11-servers/xorg-server@Xnest \
+ Xvfb:x11-servers/xorg-server@Xvfb
.endif
.include <bsd.port.mk>
Index: x11/xpra/Makefile
===================================================================
--- x11/xpra/Makefile
+++ x11/xpra/Makefile
@@ -30,7 +30,7 @@
ssh-askpass:security/openssh-askpass \
xauth:x11/xauth \
xkbcomp:x11/xkbcomp \
- Xvfb:x11-servers/xorg-vfbserver
+ Xvfb:x11-servers/xorg-server@Xvfb
USES= desktop-file-utils gettext-runtime gnome pkgconfig \
python:3.6+ shared-mime-info shebangfix tar:xz xorg
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Feb 11, 6:36 AM (2 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16590079
Default Alt Text
D35661.id107638.diff (90 KB)
Attached To
Mode
D35661: xorg: upgrade to 21.1.3
Attached
Detach File
Event Timeline
Log In to Comment