x11-base/xorg-server: fix xf86-video-nouveau build

Closes: https://bugs.gentoo.org/885763
Closes: https://github.com/gentoo/gentoo/pull/31985
Signed-off-by: Ahmed Charles <me@ahmedcharles.com>
Signed-off-by: Matt Turner <mattst88@gentoo.org>
This commit is contained in:
Ahmed Charles
2023-07-20 18:53:12 +00:00
committed by Matt Turner
parent c907a9efca
commit de718a87b2
2 changed files with 238 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
https://bugs.gentoo.org/885763
https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1114
https://gitlab.freedesktop.org/xorg/xserver/-/commit/34a430a16ec2cb9851b1f2bc7fc2117e19b9fcc7
From 34a430a16ec2cb9851b1f2bc7fc2117e19b9fcc7 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Thu, 13 Apr 2023 15:45:58 +0200
Subject: [PATCH] fb: Declare wfbFinishScreenInit, wfbScreenInit for
!FB_ACCESS_WRAPPER
xf86-video-nouveau calls wfbScreenInit without defining
FB_ACCESS_WRAPPER (which has other unintended side effects).
Presently, this compiles and links because compilers still support
implicit function declarations, but this is going to change fairly
soon. This seems to be the most straightforward change to keep
the driver building.
---
fb/fb.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/fb/fb.h b/fb/fb.h
index 08143a0d49..309f15294c 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -1027,7 +1027,6 @@ extern _X_EXPORT Bool
int dpiy, int width, /* pixel width of frame buffer */
int bpp); /* bits per pixel of frame buffer */
-#ifdef FB_ACCESS_WRAPPER
extern _X_EXPORT Bool
wfbFinishScreenInit(ScreenPtr pScreen,
void *pbits,
@@ -1049,7 +1048,6 @@ wfbScreenInit(ScreenPtr pScreen,
int width,
int bpp,
SetupWrapProcPtr setupWrap, FinishWrapProcPtr finishWrap);
-#endif
extern _X_EXPORT Bool
fbFinishScreenInit(ScreenPtr pScreen,
--
GitLab

View File

@@ -0,0 +1,195 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
XORG_TARBALL_SUFFIX="xz"
XORG_EAUTORECONF="no"
inherit flag-o-matic xorg-3 meson
EGIT_REPO_URI="https://gitlab.freedesktop.org/xorg/xserver.git"
DESCRIPTION="X.Org X servers"
SLOT="0/${PV}"
if [[ ${PV} != 9999* ]]; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
fi
IUSE_SERVERS="xephyr xnest xorg xvfb"
IUSE="${IUSE_SERVERS} debug +elogind minimal selinux suid systemd test +udev unwind xcsecurity"
RESTRICT="!test? ( test )"
CDEPEND="
media-libs/libglvnd[X]
dev-libs/libbsd
dev-libs/openssl:0=
>=x11-apps/iceauth-1.0.2
>=x11-apps/rgb-1.0.3
>=x11-apps/xauth-1.0.3
x11-apps/xkbcomp
>=x11-libs/libdrm-2.4.89
>=x11-libs/libpciaccess-0.12.901
>=x11-libs/libXau-1.0.4
>=x11-libs/libXdmcp-1.0.2
>=x11-libs/libXfont2-2.0.1
>=x11-libs/libxkbfile-1.0.4
>=x11-libs/libxshmfence-1.1
>=x11-libs/pixman-0.27.2
>=x11-misc/xbitmaps-1.0.1
>=x11-misc/xkeyboard-config-2.4.1-r3
xorg? (
>=x11-libs/libxcvt-0.1.0
)
xnest? (
>=x11-libs/libXext-1.0.99.4
>=x11-libs/libX11-1.1.5
)
xephyr? (
x11-libs/libxcb
x11-libs/xcb-util
x11-libs/xcb-util-image
x11-libs/xcb-util-keysyms
x11-libs/xcb-util-renderutil
x11-libs/xcb-util-wm
)
!minimal? (
>=media-libs/mesa-18[X(+),egl(+),gbm(+)]
>=media-libs/libepoxy-1.5.4[X,egl(+)]
)
udev? ( virtual/libudev:= )
unwind? ( sys-libs/libunwind:= )
selinux? (
sys-process/audit
sys-libs/libselinux:=
)
systemd? (
sys-apps/dbus
sys-apps/systemd
)
elogind? (
sys-apps/dbus
sys-auth/elogind[pam]
sys-auth/pambase[elogind]
)
!!x11-drivers/nvidia-drivers[-libglvnd(+)]
"
DEPEND="${CDEPEND}
>=x11-base/xorg-proto-2021.4.99.2
>=x11-libs/xtrans-1.3.5
media-fonts/font-util
test? ( >=x11-libs/libxcvt-0.1.0 )
"
RDEPEND="${CDEPEND}
!systemd? ( gui-libs/display-manager-init )
selinux? ( sec-policy/selinux-xserver )
xorg? ( >=x11-apps/xinit-1.3.3-r1 )
"
BDEPEND="
sys-devel/flex
"
PDEPEND="
xorg? ( >=x11-base/xorg-drivers-$(ver_cut 1-2) )"
REQUIRED_USE="!minimal? (
|| ( ${IUSE_SERVERS} )
)
elogind? ( udev )
?? ( elogind systemd )"
UPSTREAMED_PATCHES=(
"${FILESDIR}"/${P}-deadlock.patch
"${FILESDIR}"/${P}-wfb.patch
)
PATCHES=(
"${UPSTREAMED_PATCHES[@]}"
"${FILESDIR}"/${PN}-1.12-unloadsubmodule.patch
# needed for new eselect-opengl, bug #541232
"${FILESDIR}"/${PN}-1.18-support-multiple-Files-sections.patch
)
src_configure() {
# bug #835653
use x86 && replace-flags -Os -O2
# localstatedir is used for the log location; we need to override the default
# from ebuild.sh
# sysconfdir is used for the xorg.conf location; same applies
local emesonargs=(
--localstatedir "${EPREFIX}/var"
--sysconfdir "${EPREFIX}/etc/X11"
--buildtype $(usex debug debug plain)
-Db_ndebug=$(usex debug false true)
$(meson_use !minimal dri1)
$(meson_use !minimal dri2)
$(meson_use !minimal dri3)
$(meson_use !minimal glamor)
$(meson_use !minimal glx)
$(meson_use udev)
$(meson_use udev udev_kms)
$(meson_use unwind libunwind)
$(meson_use xcsecurity)
$(meson_use selinux xselinux)
$(meson_use xephyr)
$(meson_use xnest)
$(meson_use xorg)
$(meson_use xvfb)
-Ddocs=false
-Ddrm=true
-Ddtrace=false
-Dipv6=true
-Dhal=false
-Dlinux_acpi=false
-Dlinux_apm=false
-Dsecure-rpc=false
-Dsha1=libcrypto
-Dxkb_output_dir="${EPREFIX}/var/lib/xkb"
)
if [[ ${PV} == 9999 ]] ; then
# Gone in 21.1.x, but not in master.
emesonargs+=( -Dxwayland=false )
fi
if use systemd || use elogind; then
emesonargs+=(
-Dsystemd_logind=true
$(meson_use suid suid_wrapper)
)
else
emesonargs+=(
-Dsystemd_logind=false
-Dsuid_wrapper=false
)
fi
meson_src_configure
}
src_install() {
meson_src_install
# The meson build system does not support install-setuid
if ! use systemd && ! use elogind; then
if use suid; then
chmod u+s "${ED}"/usr/bin/Xorg
fi
fi
if ! use xorg; then
rm -f "${ED}"/usr/share/man/man1/Xserver.1x \
"${ED}"/usr/$(get_libdir)/xserver/SecurityPolicy \
"${ED}"/usr/$(get_libdir)/pkgconfig/xorg-server.pc \
"${ED}"/usr/share/man/man1/Xserver.1x || die
fi
# install the @x11-module-rebuild set for Portage
insinto /usr/share/portage/config/sets
newins "${FILESDIR}"/xorg-sets.conf xorg.conf
}
pkg_postrm() {
# Get rid of module dir to ensure opengl-update works properly
if [[ -z ${REPLACED_BY_VERSION} && -e ${EROOT}/usr/$(get_libdir)/xorg/modules ]]; then
rm -rf "${EROOT}"/usr/$(get_libdir)/xorg/modules
fi
}