From 390da478ac096ad853bee98b2676e0dc6af448a9 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Wed, 9 Dec 2015 15:19:50 -0800 Subject: [PATCH] xorg-server: allow using multiple nvidia drivers --- packages/x11/xserver/xorg-server/package.mk | 5 +++++ .../xorg-server/scripts/xorg-configure | 20 +++++++++++++++++++ .../system.d/xorg-configure@.service | 4 ++-- .../xserver/xorg-server/udev.d/97-xorg.rules | 6 ------ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/packages/x11/xserver/xorg-server/package.mk b/packages/x11/xserver/xorg-server/package.mk index 22f960198c..83f9dddd96 100644 --- a/packages/x11/xserver/xorg-server/package.mk +++ b/packages/x11/xserver/xorg-server/package.mk @@ -148,6 +148,11 @@ post_makeinstall_target() { mkdir -p $INSTALL/usr/lib/xorg cp -P $PKG_DIR/scripts/xorg-configure $INSTALL/usr/lib/xorg + . $ROOT/packages/x11/driver/xf86-video-nvidia/package.mk + sed -i -e "s|@NVIDIA_VERSION@|${PKG_VERSION}|g" $INSTALL/usr/lib/xorg/xorg-configure + . $ROOT/packages/x11/driver/xf86-video-nvidia-legacy/package.mk + sed -i -e "s|@NVIDIA_LEGACY_VERSION@|${PKG_VERSION}|g" $INSTALL/usr/lib/xorg/xorg-configure + . $ROOT/packages/x11/xserver/xorg-server/package.mk if [ ! "$OPENGL" = "no" ]; then if [ -f $INSTALL/usr/lib/xorg/modules/extensions/libglx.so ]; then diff --git a/packages/x11/xserver/xorg-server/scripts/xorg-configure b/packages/x11/xserver/xorg-server/scripts/xorg-configure index 32f0384b2a..738d84e7d3 100755 --- a/packages/x11/xserver/xorg-server/scripts/xorg-configure +++ b/packages/x11/xserver/xorg-server/scripts/xorg-configure @@ -73,6 +73,26 @@ logger -t Xorg "### creating needed directories and symlinks ###" if [ "$1" = "nvidia" ]; then ln -sf /usr/lib/libGL_nvidia.so.1 /var/lib/libGL.so ln -sf /usr/lib/xorg/modules/extensions/libglx_nvidia.so /var/lib/libglx.so + ln -sf /usr/lib/libnvidia-ml.so.@NVIDIA_VERSION@ /var/lib/libnvidia-ml.so.1 + ln -sf /usr/lib/xorg/modules/drivers/nvidia-main_drv.so /var/lib/nvidia_drv.so + ln -sf /usr/lib/nvidia/nvidia.ko /var/lib/nvidia.ko + ln -sf /usr/lib/vdpau/libvdpau_nvidia-main.so.1 /var/lib/libvdpau_nvidia.so.1 + ln -sf /usr/lib/vdpau/libvdpau_nvidia-main.so.1 /var/lib/libvdpau_nvidia.so + ln -sf /usr/bin/nvidia-main-smi /var/lib/nvidia-smi + ln -sf /usr/bin/nvidia-main-xconfig /var/lib/nvidia-xconfig + insmod /var/lib/nvidia.ko + XORG_ARGS="$XORG_ARGS -ignoreABI" + elif [ "$1" = "nvidia-legacy" ]; then + ln -sf /usr/lib/libGL_nvidia-legacy.so.1 /var/lib/libGL.so + ln -sf /usr/lib/xorg/modules/extensions/libglx_nvidia-legacy.so /var/lib/libglx.so + ln -sf /usr/lib/libnvidia-ml.so.@NVIDIA_LEGACY_VERSION@ /var/lib/libnvidia-ml.so.1 + ln -sf /usr/lib/xorg/modules/drivers/nvidia-legacy_drv.so /var/lib/nvidia_drv.so + ln -sf /usr/lib/nvidia-legacy/nvidia.ko /var/lib/nvidia.ko + ln -sf /usr/lib/vdpau/libvdpau_nvidia-legacy.so.1 /var/lib/libvdpau_nvidia.so.1 + ln -sf /usr/lib/vdpau/libvdpau_nvidia-legacy.so.1 /var/lib/libvdpau_nvidia.so + ln -sf /usr/bin/nvidia-legacy-smi /var/lib/nvidia-smi + ln -sf /usr/bin/nvidia-legacy-xconfig /var/lib/nvidia-xconfig + insmod /var/lib/nvidia.ko XORG_ARGS="$XORG_ARGS -ignoreABI" else ln -sf /usr/lib/libGL_mesa.so.1 /var/lib/libGL.so diff --git a/packages/x11/xserver/xorg-server/system.d/xorg-configure@.service b/packages/x11/xserver/xorg-server/system.d/xorg-configure@.service index 6e036bfcc3..25725f647e 100644 --- a/packages/x11/xserver/xorg-server/system.d/xorg-configure@.service +++ b/packages/x11/xserver/xorg-server/system.d/xorg-configure@.service @@ -1,9 +1,9 @@ [Unit] -Description=configure Xorg Server for %I +Description=configure Xorg Server for %i ConditionKernelCommandLine=!installer [Service] Type=oneshot -ExecStart=/usr/lib/xorg/xorg-configure %I +ExecStart=/usr/lib/xorg/xorg-configure %i RemainAfterExit=yes diff --git a/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules b/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules index 4dfbd29530..3ea84ec984 100644 --- a/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules +++ b/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules @@ -20,12 +20,6 @@ ACTION!="add|change", GOTO="end_video" # xorg_start only does something for subsystem "pci" and "video" class. SUBSYSTEM=="pci", ATTR{class}=="0x030000", GOTO="subsystem_pci" -SUBSYSTEM=="drivers", GOTO="subsystem_drivers" -GOTO="end_video" - -# check for drivers dont use the pci substem -LABEL="subsystem_drivers" -KERNEL=="nvidia", ENV{xorg_driver}="nvidia", TAG+="systemd", ENV{SYSTEMD_WANTS}+="xorg-configure@nvidia.service" GOTO="end_video" # check for drivers using the pci substem