commit: 0671a09797e58cfe79df93de1ddde1dccf86b76a Author: stefson <herrtimson <AT> yahoo <DOT> de> AuthorDate: Tue Jan 14 08:10:15 2020 +0000 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> CommitDate: Fri Jan 17 00:01:17 2020 +0000 URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=0671a097
Revert "x11-base/xorg-server: bump to v1.20.6" This reverts commit c6cdc79a4c4289d8212269ba51ea0c79434fff3b. the draft was accidently merged, this is unfinished and needs to be re-evaluated. Signed-off-by: Steffen Kuhn <nielson2 <AT> yandex.com> Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org> x11-base/xorg-server/Manifest | 2 +- ...ck-the-shm-dir-at-run-time-not-build-time.patch | 174 +++++++++++++++++++++ ...1.20.4-shm-Use-memfd_create-when-possible.patch | 89 +++++++++++ ...ndent-shm_tmpfile-to-follow-our-standards.patch | 72 +++++++++ ...ver-1.20.6.ebuild => xorg-server-1.20.5.ebuild} | 35 +++-- 5 files changed, 354 insertions(+), 18 deletions(-) diff --git a/x11-base/xorg-server/Manifest b/x11-base/xorg-server/Manifest index 6f02874..f978f86 100644 --- a/x11-base/xorg-server/Manifest +++ b/x11-base/xorg-server/Manifest @@ -1 +1 @@ -DIST xorg-server-1.20.6.tar.bz2 6298697 BLAKE2B 30e505cf83bb2b20e17533b89b81521d029412ea6bd804ecf20458af20364172eb7b21561f14c885d5e16597e6d09985b255b6cec2beb30662658d9e316bc953 SHA512 9aa0ba4aee92fe628f2b8c41e4fe0134dc86154bb8787f907884ef2fd970e18e68e72ea8a1beb706d11ecf155b2abc9731f1abadff251ed592f8cca3b1240dd6 +DIST xorg-server-1.20.5.tar.bz2 6126757 BLAKE2B 2374c6f39acd80174d9cf9c15b6a75f420de3a9b7b51a41385a326fed106fc57fdc5a0a4a08beba36a8d65bff1c8c8d35bb50c73c5285ee206f3293a212369be SHA512 625f0626b122cf95600abe382c3217348999357a0e2d2443092f1b67cff1c98d7ef09303884ceaeac181e0555dc56b0d4d44bda45cc464dac2d9a50c5b32d631 diff --git a/x11-base/xorg-server/files/xorg-server-1.20.4-shm-Pick-the-shm-dir-at-run-time-not-build-time.patch b/x11-base/xorg-server/files/xorg-server-1.20.4-shm-Pick-the-shm-dir-at-run-time-not-build-time.patch new file mode 100644 index 0000000..54ed629 --- /dev/null +++ b/x11-base/xorg-server/files/xorg-server-1.20.4-shm-Pick-the-shm-dir-at-run-time-not-build-time.patch @@ -0,0 +1,174 @@ +From 19f6cb570becbc4e355807199c6e251fc7935132 Mon Sep 17 00:00:00 2001 +From: Eric Anholt <[email protected]> +Date: Wed, 19 Sep 2018 13:28:06 -0700 +Subject: [PATCH xserver] shm: Pick the shm dir at run time, not build time. + +Prodding the builder's filesystem for tmp dirs doesn't necessarily +tell you anything about what the actual host's filesystem is going to +look like, so we should just try the dirs at runtime. + +Signed-off-by: Eric Anholt <[email protected]> +--- + Xext/shm.c | 48 +++++++++++++++++++++++++---------------- + configure.ac | 43 ------------------------------------ + include/dix-config.h.in | 3 --- + include/meson.build | 5 ----- + 4 files changed, 29 insertions(+), 70 deletions(-) + +diff --git a/Xext/shm.c b/Xext/shm.c +index ed43b9202..2739a59e7 100644 +--- a/Xext/shm.c ++++ b/Xext/shm.c +@@ -1194,36 +1194,46 @@ ProcShmAttachFd(ClientPtr client) + static int + shm_tmpfile(void) + { +-#ifdef SHMDIR ++ const char *shmdirs[] = { ++ "/run/shm", ++ "/var/tmp", ++ "/tmp", ++ }; + int fd; +- char template[] = SHMDIR "/shmfd-XXXXXX"; ++ + #ifdef O_TMPFILE +- fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666); +- if (fd >= 0) { +- DebugF ("Using O_TMPFILE\n"); +- return fd; ++ for (int i = 0; i < ARRAY_SIZE(shmdirs); i++) { ++ fd = open(shmdirs[i], O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666); ++ if (fd >= 0) { ++ DebugF ("Using O_TMPFILE\n"); ++ return fd; ++ } + } + ErrorF ("Not using O_TMPFILE\n"); + #endif ++ ++ for (int i = 0; i < ARRAY_SIZE(shmdirs); i++) { ++ char template[PATH_MAX]; ++ snprintf(template, ARRAY_SIZE(template), "%s/shmfd-XXXXXX", shmdirs[i]); + #ifdef HAVE_MKOSTEMP +- fd = mkostemp(template, O_CLOEXEC); ++ fd = mkostemp(template, O_CLOEXEC); + #else +- fd = mkstemp(template); ++ fd = mkstemp(template); + #endif +- if (fd < 0) +- return -1; +- unlink(template); ++ if (fd < 0) ++ continue; ++ unlink(template); + #ifndef HAVE_MKOSTEMP +- int flags = fcntl(fd, F_GETFD); +- if (flags != -1) { +- flags |= FD_CLOEXEC; +- (void) fcntl(fd, F_SETFD, &flags); +- } ++ int flags = fcntl(fd, F_GETFD); ++ if (flags != -1) { ++ flags |= FD_CLOEXEC; ++ (void) fcntl(fd, F_SETFD, &flags); ++ } + #endif +- return fd; +-#else ++ return fd; ++ } ++ + return -1; +-#endif + } + + static int +diff --git a/configure.ac b/configure.ac +index 359b62cb5..57a233102 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1115,49 +1115,6 @@ case "$DRI2,$HAVE_DRI2PROTO" in + esac + AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes) + +-dnl +-dnl Locate a suitable tmp file system for creating shared memeory files +-dnl +- +-AC_ARG_WITH(shared-memory-dir, AS_HELP_STRING([--with-shared-memory-dir=PATH], [Path to directory in a world-writable temporary directory for anonymous shared memory (default: auto)]), +-[], +-[with_shared_memory_dir=yes]) +- +-shmdirs="/run/shm /var/tmp /tmp" +- +-case x"$with_shared_memory_dir" in +-xyes) +- for dir in $shmdirs; do +- case x"$with_shared_memory_dir" in +- xyes) +- echo Checking temp dir "$dir" +- if test -d "$dir"; then +- with_shared_memory_dir="$dir" +- fi +- ;; +- esac +- done +- ;; +-x/*) +- ;; +-xno) +- ;; +-*) +- AC_MSG_ERROR([Invalid directory specified for --with-shared-memory-dir: $with_shared_memory_dir]) +- ;; +-esac +- +-case x"$with_shared_memory_dir" in +-xyes) +- AC_MSG_ERROR([No directory found for shared memory temp files.]) +- ;; +-xno) +- ;; +-*) +- AC_DEFINE_UNQUOTED(SHMDIR, ["$with_shared_memory_dir"], [Directory for shared memory temp files]) +- ;; +-esac +- + AC_ARG_ENABLE(xtrans-send-fds, AS_HELP_STRING([--disable-xtrans-send-fds], [Use Xtrans support for fd passing (default: auto)]), [XTRANS_SEND_FDS=$enableval], [XTRANS_SEND_FDS=auto]) + + case "x$XTRANS_SEND_FDS" in +diff --git a/include/dix-config.h.in b/include/dix-config.h.in +index f8df86608..3bd22b8bb 100644 +--- a/include/dix-config.h.in ++++ b/include/dix-config.h.in +@@ -452,9 +452,6 @@ + /* Wrap SIGBUS to catch MIT-SHM faults */ + #undef BUSFAULT + +-/* Directory for shared memory temp files */ +-#undef SHMDIR +- + /* Don't let Xdefs.h define 'pointer' */ + #define _XTYPEDEF_POINTER 1 + +diff --git a/include/meson.build b/include/meson.build +index 4a0c12f5a..04c41e999 100644 +--- a/include/meson.build ++++ b/include/meson.build +@@ -91,11 +91,6 @@ conf_data.set('SYSTEMD_LOGIND', build_systemd_logind) + conf_data.set('NEED_DBUS', build_systemd_logind or build_hal) + conf_data.set('CONFIG_WSCONS', host_machine.system() == 'openbsd') + +-# XXX: SHMDIR is weird in autoconf, probing the build system for +-# various tmp directories. Could we replace it with C code at runtime +-# that just uses whatever directory works? +-conf_data.set_quoted('SHMDIR', '/tmp') +- + conf_data.set('HAVE_XSHMFENCE', xshmfence_dep.found()) + conf_data.set('WITH_LIBDRM', libdrm_dep.found()) + conf_data.set('GLAMOR_HAS_EGL_QUERY_DMABUF', +-- +2.19.2 + diff --git a/x11-base/xorg-server/files/xorg-server-1.20.4-shm-Use-memfd_create-when-possible.patch b/x11-base/xorg-server/files/xorg-server-1.20.4-shm-Use-memfd_create-when-possible.patch new file mode 100644 index 0000000..fce2594 --- /dev/null +++ b/x11-base/xorg-server/files/xorg-server-1.20.4-shm-Use-memfd_create-when-possible.patch @@ -0,0 +1,89 @@ +From f6753c117ef0f83499d5e2d6dda226fec9ddf803 Mon Sep 17 00:00:00 2001 +From: Alexander Volkov <[email protected]> +Date: Mon, 11 Feb 2019 18:54:10 +0300 +Subject: [PATCH xserver] shm: Use memfd_create when possible + +It doesn't require shared memory dir and thus allows +to avoid cases when this dir is detected incorrectly, +as in https://bugreports.qt.io/browse/QTBUG-71440 + +Signed-off-by: Alexander Volkov <[email protected]> +--- + Xext/shm.c | 12 ++++++++++++ + configure.ac | 2 +- + include/dix-config.h.in | 3 +++ + include/meson.build | 1 + + 4 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/Xext/shm.c b/Xext/shm.c +index 2739a59e7..506fd4df1 100644 +--- a/Xext/shm.c ++++ b/Xext/shm.c +@@ -35,6 +35,9 @@ in this Software without prior written authorization from The Open Group. + #include <sys/types.h> + #include <sys/ipc.h> + #include <sys/shm.h> ++#ifdef HAVE_MEMFD_CREATE ++#include <sys/mman.h> ++#endif + #include <unistd.h> + #include <sys/stat.h> + #include <fcntl.h> +@@ -1201,6 +1204,15 @@ shm_tmpfile(void) + }; + int fd; + ++#ifdef HAVE_MEMFD_CREATE ++ fd = memfd_create("xorg", MFD_CLOEXEC|MFD_ALLOW_SEALING); ++ if (fd != -1) { ++ fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK); ++ DebugF ("Using memfd_create\n"); ++ return fd; ++ } ++#endif ++ + #ifdef O_TMPFILE + for (int i = 0; i < ARRAY_SIZE(shmdirs); i++) { + fd = open(shmdirs[i], O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666); +diff --git a/configure.ac b/configure.ac +index 0ca96aeb8..79ff7fa64 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -159,7 +159,7 @@ dnl Checks for library functions. + AC_CHECK_FUNCS([backtrace geteuid getuid issetugid getresuid \ + getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \ + mmap posix_fallocate seteuid shmctl64 strncasecmp vasprintf vsnprintf \ +- walkcontext setitimer poll epoll_create1 mkostemp]) ++ walkcontext setitimer poll epoll_create1 mkostemp memfd_create]) + AC_CONFIG_LIBOBJ_DIR([os]) + AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup\ + timingsafe_memcmp]) +diff --git a/include/dix-config.h.in b/include/dix-config.h.in +index 855b3d50c..9eb1a924e 100644 +--- a/include/dix-config.h.in ++++ b/include/dix-config.h.in +@@ -128,6 +128,9 @@ + /* Define to 1 if you have the <linux/fb.h> header file. */ + #undef HAVE_LINUX_FB_H + ++/* Define to 1 if you have the `memfd_create' function. */ ++#undef HAVE_MEMFD_CREATE ++ + /* Define to 1 if you have the `mkostemp' function. */ + #undef HAVE_MKOSTEMP + +diff --git a/include/meson.build b/include/meson.build +index 04c41e999..bbd5a6690 100644 +--- a/include/meson.build ++++ b/include/meson.build +@@ -141,6 +141,7 @@ conf_data.set('HAVE_GETPEEREID', cc.has_function('getpeereid')) + conf_data.set('HAVE_GETPEERUCRED', cc.has_function('getpeerucred')) + conf_data.set('HAVE_GETPROGNAME', cc.has_function('getprogname')) + conf_data.set('HAVE_GETZONEID', cc.has_function('getzoneid')) ++conf_data.set('HAVE_MEMFD_CREATE', cc.has_function('memfd_create')) + conf_data.set('HAVE_MKOSTEMP', cc.has_function('mkostemp')) + conf_data.set('HAVE_MMAP', cc.has_function('mmap')) + conf_data.set('HAVE_POLL', cc.has_function('poll')) +-- +2.19.2 + diff --git a/x11-base/xorg-server/files/xorg-server-1.20.4-shm-reindent-shm_tmpfile-to-follow-our-standards.patch b/x11-base/xorg-server/files/xorg-server-1.20.4-shm-reindent-shm_tmpfile-to-follow-our-standards.patch new file mode 100644 index 0000000..1ce9e13 --- /dev/null +++ b/x11-base/xorg-server/files/xorg-server-1.20.4-shm-reindent-shm_tmpfile-to-follow-our-standards.patch @@ -0,0 +1,72 @@ +From 804a9b4f57107fa2d0ed1ae0becda5bebaffe6e1 Mon Sep 17 00:00:00 2001 +From: Eric Anholt <[email protected]> +Date: Wed, 19 Sep 2018 13:20:12 -0700 +Subject: [PATCH xserver] shm: reindent shm_tmpfile to follow our standards. + +Signed-off-by: Eric Anholt <[email protected]> +--- + Xext/shm.c | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) + +diff --git a/Xext/shm.c b/Xext/shm.c +index 589ed0b4d..ed43b9202 100644 +--- a/Xext/shm.c ++++ b/Xext/shm.c +@@ -1195,34 +1195,34 @@ static int + shm_tmpfile(void) + { + #ifdef SHMDIR +- int fd; +- char template[] = SHMDIR "/shmfd-XXXXXX"; ++ int fd; ++ char template[] = SHMDIR "/shmfd-XXXXXX"; + #ifdef O_TMPFILE +- fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666); +- if (fd >= 0) { +- DebugF ("Using O_TMPFILE\n"); +- return fd; +- } +- ErrorF ("Not using O_TMPFILE\n"); ++ fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666); ++ if (fd >= 0) { ++ DebugF ("Using O_TMPFILE\n"); ++ return fd; ++ } ++ ErrorF ("Not using O_TMPFILE\n"); + #endif + #ifdef HAVE_MKOSTEMP +- fd = mkostemp(template, O_CLOEXEC); ++ fd = mkostemp(template, O_CLOEXEC); + #else +- fd = mkstemp(template); ++ fd = mkstemp(template); + #endif +- if (fd < 0) +- return -1; +- unlink(template); ++ if (fd < 0) ++ return -1; ++ unlink(template); + #ifndef HAVE_MKOSTEMP +- int flags = fcntl(fd, F_GETFD); +- if (flags != -1) { +- flags |= FD_CLOEXEC; +- (void) fcntl(fd, F_SETFD, &flags); +- } ++ int flags = fcntl(fd, F_GETFD); ++ if (flags != -1) { ++ flags |= FD_CLOEXEC; ++ (void) fcntl(fd, F_SETFD, &flags); ++ } + #endif +- return fd; ++ return fd; + #else +- return -1; ++ return -1; + #endif + } + +-- +2.19.2 + diff --git a/x11-base/xorg-server/xorg-server-1.20.6.ebuild b/x11-base/xorg-server/xorg-server-1.20.5.ebuild similarity index 87% rename from x11-base/xorg-server/xorg-server-1.20.6.ebuild rename to x11-base/xorg-server/xorg-server-1.20.5.ebuild index edf3db9..dfc7110 100644 --- a/x11-base/xorg-server/xorg-server-1.20.6.ebuild +++ b/x11-base/xorg-server/xorg-server-1.20.5.ebuild @@ -1,9 +1,10 @@ -# Copyright 1999-2020 Gentoo Authors +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 XORG_DOC=doc +XORG_EAUTORECONF="yes" inherit xorg-3 multilib flag-o-matic EGIT_REPO_URI="https://gitlab.freedesktop.org/xorg/xserver.git" @@ -14,13 +15,9 @@ if [[ ${PV} != 9999* ]]; then fi IUSE_SERVERS="dmx kdrive wayland xephyr xnest xorg xvfb" -IUSE="${IUSE_SERVERS} debug elogind ipv6 libressl libglvnd minimal selinux +suid systemd +udev unwind xcsecurity" +IUSE="${IUSE_SERVERS} debug elogind +glamor ipv6 libressl minimal selinux +suid systemd +udev unwind xcsecurity" -CDEPEND="libglvnd? ( - media-libs/libglvnd - !app-eselect/eselect-opengl - ) - !libglvnd? ( >=app-eselect/eselect-opengl-1.3.0 ) +CDEPEND=">=app-eselect/eselect-opengl-1.3.0 !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) >=x11-apps/iceauth-1.0.2 @@ -51,6 +48,11 @@ CDEPEND="libglvnd? ( >=x11-libs/libXres-1.0.3 >=x11-libs/libXtst-1.0.99.2 ) + glamor? ( + media-libs/libepoxy[X] + >=media-libs/mesa-18[egl,gbm] + !x11-libs/glamor + ) kdrive? ( >=x11-libs/libXext-1.0.5 x11-libs/libXv @@ -66,14 +68,13 @@ CDEPEND="libglvnd? ( !minimal? ( >=x11-libs/libX11-1.1.5 >=x11-libs/libXext-1.0.5 - >=media-libs/mesa-18[X(+),egl,gbm] - media-libs/libepoxy[X,egl(+)] + >=media-libs/mesa-18 ) udev? ( virtual/libudev:= ) unwind? ( sys-libs/libunwind ) wayland? ( >=dev-libs/wayland-1.3.0 - media-libs/libepoxy[egl(+)] + media-libs/libepoxy >=dev-libs/wayland-protocols-1.1 ) >=x11-apps/xinit-1.3.3-r1 @@ -114,10 +115,13 @@ REQUIRED_USE="!minimal? ( ) elogind? ( udev ) ?? ( elogind systemd ) - minimal? ( !wayland ) + minimal? ( !glamor !wayland ) xephyr? ( kdrive )" UPSTREAMED_PATCHES=( + "${FILESDIR}"/${PN}-1.20.4-shm-reindent-shm_tmpfile-to-follow-our-standards.patch + "${FILESDIR}"/${PN}-1.20.4-shm-Pick-the-shm-dir-at-run-time-not-build-time.patch + "${FILESDIR}"/${PN}-1.20.4-shm-Use-memfd_create-when-possible.patch ) PATCHES=( @@ -129,10 +133,9 @@ PATCHES=( ) pkg_setup() { - if use wayland && use minimal; then + if use wayland && ! use glamor; then ewarn "glamor is necessary for acceleration under Xwayland." ewarn "Performance may be unacceptable without it." - ewarn "Build with USE=-minimal to enable glamor." fi # localstatedir is used for the log location; we need to override the default @@ -144,6 +147,7 @@ pkg_setup() { $(use_enable ipv6) $(use_enable debug) $(use_enable dmx) + $(use_enable glamor) $(use_enable kdrive) $(use_enable unwind libunwind) $(use_enable wayland xwayland) @@ -152,7 +156,6 @@ pkg_setup() { $(use_enable !minimal dri) $(use_enable !minimal dri2) $(use_enable !minimal dri3) - $(use_enable !minimal glamor) $(use_enable !minimal glx) $(use_enable xcsecurity) $(use_enable xephyr) @@ -204,9 +207,7 @@ src_install() { pkg_postinst() { if ! use minimal; then # sets up libGL and DRI2 symlinks if needed (ie, on a fresh install) - if ! use libglvnd; then - eselect opengl set xorg-x11 --use-old - fi + eselect opengl set xorg-x11 --use-old fi }
