File x11-video-nvidia.spec of Package nvidia-gfx
#
# spec file for package x11-video-nvidia (Version 96.43.23)
#
# Copyright (c) 2017 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
# nodebuginfo
Name: x11-video-nvidia
Version: 96.43.23
Release: 0
ExclusiveArch: %ix86 x86_64
BuildRequires: update-desktop-files
Requires: nvidia-gfx-kmp = %{version}
Requires: 3ddiag
%if %suse_version > 1010 || "%_repository" == "SLE_10_XORG7"
%define xlibdir /usr/%_lib/xorg
%else
%define xlibdir /usr/X11R6/%_lib
%endif
%define GENERATE_IDENTITY_MAP 1
License: SUSE-NonFree
Group: System/Libraries
Summary: NVIDIA graphics driver for GeForce4 GPUs
URL: https://www.nvidia.com/object/unix.html
Source0: http://download.nvidia.com/XFree86/Linux-x86/%{version}/NVIDIA-Linux-x86-%{version}-pkg1.run
Source1: http://download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}-pkg2.run
Source3: nvidia-settings.desktop
Source4: fetch.sh
Source5: README
Source6: pci_ids-%{version}
Source7: Xwrapper
Source8: pci_ids-%{version}.legacy
Source9: rpmlintrc
Source10: modprobe.nvidia
NoSource: 0
NoSource: 1
NoSource: 4
NoSource: 5
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
This package provides the closed-source NVIDIA graphics driver
for GeForce4 GPUs.
%prep
%setup -T -c %{name}-%{version}
%ifarch %ix86
sh %{SOURCE0} -x
%endif
%ifarch x86_64
sh %{SOURCE1} -x
%endif
%build
# nothing
%install
# no longer alter, i.e. strip NVIDIA's libraries
export NO_BRP_STRIP_DEBUG=true
cd NVIDIA-Linux-x86*-%{version}-*
# would be nice if it worked ...
#./nvidia-installer \
# --accept-license \
# --expert \
# --no-questions \
# --ui=none \
# --no-precompiled-interface \
# --no-runlevel-check \
# --no-rpms \
# --no-backup \
# --no-network \
# --no-recursion \
# --no-kernel-module \
# --log-file-name=$PWD/log \
# --x-prefix=$RPM_BUILD_ROOT/usr/X11R6 \
# --opengl-prefix=$RPM_BUILD_ROOT/usr \
# --utility-prefix=$RPM_BUILD_ROOT/usr
install -d $RPM_BUILD_ROOT/usr/bin
install -d $RPM_BUILD_ROOT/usr/X11R6/lib
install -d $RPM_BUILD_ROOT/usr/lib/tls
install -d $RPM_BUILD_ROOT/usr/X11R6/%_lib
install -d $RPM_BUILD_ROOT/usr/%_lib/tls
install -d $RPM_BUILD_ROOT/usr/X11R6/%_lib/tls
install -d $RPM_BUILD_ROOT/%{xlibdir}/modules/updates/drivers
install -d $RPM_BUILD_ROOT/%{xlibdir}/modules/updates/extensions
install -d $RPM_BUILD_ROOT/usr/include/nvidia/GL
install usr/bin/nvidia-settings $RPM_BUILD_ROOT/usr/bin
install usr/bin/nvidia-bug-report.sh $RPM_BUILD_ROOT/usr/bin
install usr/bin/nvidia-xconfig $RPM_BUILD_ROOT/usr/bin
install usr/lib/tls/libnvidia-tls.so.* $RPM_BUILD_ROOT/usr/%_lib/tls
install usr/lib/libnvidia* $RPM_BUILD_ROOT/usr/%_lib
# the GL lib from Mesa is in /usr/%_lib so we install in /usr/X11R6/%_lib
rm usr/lib*/libGL.la
install usr/lib/libGL* $RPM_BUILD_ROOT/usr/X11R6/%_lib
# still a lot of applications make a dlopen to the .so file
ln -snf libGL.so.1 $RPM_BUILD_ROOT/usr/X11R6/%_lib/libGL.so
install usr/X11R6/lib/modules/drivers/nvidia_drv.so $RPM_BUILD_ROOT/%{xlibdir}/modules/updates/drivers
install usr/X11R6/lib/modules/extensions/libglx.so.%{version} \
$RPM_BUILD_ROOT/%{xlibdir}/modules/updates/extensions
ln -sf libglx.so.%{version} $RPM_BUILD_ROOT/%{xlibdir}/modules/updates/extensions/libglx.so
install usr/X11R6/lib/libXvMCNVIDIA* $RPM_BUILD_ROOT/usr/X11R6/%_lib
chmod 644 $RPM_BUILD_ROOT/usr/X11R6/%_lib/libXvMCNVIDIA.a
%ifarch x86_64
install usr/lib32/tls/libnvidia-tls.so.* $RPM_BUILD_ROOT/usr/lib/tls
install usr/lib32/libnvidia* $RPM_BUILD_ROOT/usr/lib
install usr/lib32/libGL* $RPM_BUILD_ROOT/usr/X11R6/lib
# still a lot of applications make a dlopen to the .so file
ln -snf libGL.so.1 $RPM_BUILD_ROOT/usr/X11R6/lib/libGL.so
%endif
install -m 644 usr/include/GL/* $RPM_BUILD_ROOT/usr/include/nvidia/GL
install -d $RPM_BUILD_ROOT/usr/share/doc/packages/%name
cp -a usr/share/doc/* $RPM_BUILD_ROOT/usr/share/doc/packages/%name
install -m 644 LICENSE $RPM_BUILD_ROOT/usr/share/doc/packages/%name
install -d $RPM_BUILD_ROOT/%{_mandir}/man1
install -m 644 usr/share/man/man1/* $RPM_BUILD_ROOT/%{_mandir}/man1
%suse_update_desktop_file -i nvidia-settings System SystemSetup
install -d $RPM_BUILD_ROOT/usr/share/pixmaps
install -m 644 usr/share/pixmaps/nvidia-settings.png \
$RPM_BUILD_ROOT/usr/share/pixmaps
/sbin/ldconfig -n $RPM_BUILD_ROOT/usr/%_lib
/sbin/ldconfig -n $RPM_BUILD_ROOT/usr/X11R6/%_lib
%ifarch x86_64
/sbin/ldconfig -n $RPM_BUILD_ROOT/usr/lib
/sbin/ldconfig -n $RPM_BUILD_ROOT/usr/X11R6/lib
%endif
%if %GENERATE_IDENTITY_MAP
mkdir -p $RPM_BUILD_ROOT//usr/share/sax/sysp/maps/update/ \
$RPM_BUILD_ROOT/usr/share/sax/api/data/cdb/ \
$RPM_BUILD_ROOT/var/lib/hardware/ids
> $RPM_BUILD_ROOT/usr/share/sax/sysp/maps/update/Identity.map.%name
> $RPM_BUILD_ROOT/usr/share/sax/api/data/cdb/Cards.%name
> $RPM_BUILD_ROOT/var/lib/hardware/ids/%name
# undocumented/secret devices (Bugs #201268, #205642)
%if %suse_version > 1010
(cat %_sourcedir/pci_ids-%{version}.legacy; \
%else
(cat %_sourcedir/pci_ids-%{version}; \
echo "0x0221 GeForce 6200"; \
echo "0x0247 GeForce Go 6100"; \
%endif
) | \
while read line; do
VID=0x10de
NAME=NVIDIA
SERVER=nvidia
DEVICE=$(echo $line|awk '{for (i=2;i<NF;i++) printf("%s ",$i); printf("%s",$NF)}')
DID=$(echo $line|awk '{print $1}'|tr [[:upper:]] [[:lower:]] | sort -u)
cat >> $RPM_BUILD_ROOT/usr/share/sax/sysp/maps/update/Identity.map.%name << EOF
NAME=${NAME}&DEVICE=${DEVICE}&VID=${VID}&DID=${DID}&SERVER=${SERVER}&EXT=&OPT=&RAW=&PROFILE=&SCRIPT3D=&PACKAGE3D=&FLAG=DEFAULT
NAME=${NAME}&DEVICE=${DEVICE}&VID=${VID}&DID=${DID}&SERVER=${SERVER}&EXT=&OPT=&RAW=&PROFILE=&SCRIPT3D=&PACKAGE3D=&FLAG=3D
EOF
cat >> $RPM_BUILD_ROOT/usr/share/sax/api/data/cdb/Cards.%name << EOF
${NAME}:${DEVICE} {
Driver = ${SERVER}
Flag = 3D
3DDriver = ${SERVER}
}
EOF
cat >> $RPM_BUILD_ROOT/var/lib/hardware/ids/%name << EOF
vendor.id pci ${VID}
&device.id pci ${DID}
+device.name ${DEVICE}
+driver.xfree 4|${SERVER}
+driver.xfree 4|${SERVER}|3d
EOF
echo >> $RPM_BUILD_ROOT/var/lib/hardware/ids/%name
done
%endif
%if %suse_version > 1010
install -m 755 $RPM_SOURCE_DIR/Xwrapper $RPM_BUILD_ROOT/usr/bin/X.%name
%else
mkdir -p $RPM_BUILD_ROOT/usr/X11R6/bin
install -m 755 $RPM_SOURCE_DIR/Xwrapper $RPM_BUILD_ROOT/usr/X11R6/bin/X.%name
%endif
%if %suse_version > 1140
# Create /etc/ld.so.conf.d/nvidia-gfx
mkdir -p %{buildroot}/etc/ld.so.conf.d
cat > %{buildroot}/etc/ld.so.conf.d/nvidia-gfx.conf <<EOF
/usr/X11R6/%{_lib}
%ifarch s390x sparc64 x86_64 ppc64
/usr/X11R6/lib
%endif
%ifarch ppc
/usr/X11R6/lib64
%endif
EOF
%endif
%if 0%{?suse_version} > 1230
mkdir -p %{buildroot}%{_sysconfdir}/modprobe.d
install -m 644 $RPM_SOURCE_DIR/modprobe.nvidia %{buildroot}%{_sysconfdir}/modprobe.d/50-nvidia.conf
%endif
%post
/sbin/ldconfig
# xorg.conf no longer been used since sle12
%if 0%{?suse_version} < 1120
if [ -f etc/X11/xorg.conf ]; then
test -f etc/X11/xorg.conf.nvidia-post || \
cp etc/X11/xorg.conf etc/X11/xorg.conf.nvidia-post
fi
# if configuration for proprietary driver already exists, bring it back
# (Bug #270040, comments #91/92)
if [ -f etc/X11/xorg.conf.nvidia-postun ]; then
mv etc/X11/xorg.conf.nvidia-postun etc/X11/xorg.conf
fi
test -x usr/bin/switch2nvidia && usr/bin/switch2nvidia
%endif
if ls var/lib/hardware/ids/* &> /dev/null; then
> var/lib/hardware/hd.ids
for i in var/lib/hardware/ids/*; do
cat $i >> var/lib/hardware/hd.ids
done
fi
test -f etc/sysconfig/displaymanager && \
. etc/sysconfig/displaymanager
if [ "${DISPLAYMANAGER_XSERVER}" == "X.%name" ]; then
# broken entry in /etc/sysconfig/displaymanager:DISPLAYMANAGER_XSERVER
# use a sane default instead
DISPLAYMANAGER_XSERVER=Xorg
fi
%if %suse_version > 1010
sed -i s/REPLACE_ME/${DISPLAYMANAGER_XSERVER}/g usr/bin/X.%name
%else
sed -i s/REPLACE_ME/${DISPLAYMANAGER_XSERVER}/g usr/X11R6/bin/X.%name
%endif
test -f etc/sysconfig/displaymanager && \
sed -i 's/DISPLAYMANAGER_XSERVER=.*/DISPLAYMANAGER_XSERVER=X.%name/g' \
/etc/sysconfig/displaymanager
%if %suse_version > 1010
test -x /etc/X11/xdm/SuSEconfig.xdm && \
/etc/X11/xdm/SuSEconfig.xdm
%else
test -x /sbin/conf.d/SuSEconfig.xdm && \
SuSEconfig --module xdm
%endif
# recreate initrd without KMS, if the use of KMS is enabled in initrd
if grep -q NO_KMS_IN_INITRD=\"no\" /etc/sysconfig/kernel; then
sed -i 's/NO_KMS_IN_INITRD.*/NO_KMS_IN_INITRD="yes"/g' /etc/sysconfig/kernel
mkinitrd
fi
exit 0
%postun
/sbin/ldconfig
if [ "$1" -eq 0 ]; then
# switch2nv/switch2nv no longer available/needed since sle12
%if 0%{?suse_version} < 1120
test -x usr/bin/switch2nv && usr/bin/switch2nv
%endif
if ls var/lib/hardware/ids/* &> /dev/null; then
> var/lib/hardware/hd.ids
for i in var/lib/hardware/ids/*; do
cat $i >> var/lib/hardware/hd.ids
done
else
rm -f var/lib/hardware/hd.ids
fi
# xorg.conf no longer been used since sle12
%if 0%{?suse_version} < 1120
test -f etc/X11/xorg.conf && \
cp etc/X11/xorg.conf etc/X11/xorg.conf.nvidia-postun
if [ -r etc/X11/xorg.conf.nvidia-post ]; then
mv etc/X11/xorg.conf.nvidia-post etc/X11/xorg.conf
else
sax2 -a -r
fi
%endif
if test -x /opt/gnome/bin/gnome-xgl-switch; then
/opt/gnome/bin/gnome-xgl-switch --disable-xgl
elif test -x /usr/bin/xgl-switch; then
/usr/bin/xgl-switch --disable-xgl
# Make sure that after driver uninstall /var/lib/X11/X link points
# to a valid Xserver binary again (bnc#903732)
%if 0%{?suse_version} > 1010
test -x /etc/X11/xdm/SuSEconfig.xdm && \
/etc/X11/xdm/SuSEconfig.xdm
%else
test -x /sbin/conf.d/SuSEconfig.xdm && \
SuSEconfig --module xdm
%endif
fi
fi
exit 0
%files
%defattr(-,root,root)
%doc /usr/share/doc/packages/%{name}
%doc %{_mandir}/man1/*
%if %suse_version > 1140
%config /etc/ld.so.conf.d/nvidia-gfx.conf
%endif
%if %suse_version > 1010
/usr/bin/X.%name
%else
/usr/X11R6/bin/X.%name
%endif
/usr/bin/nvidia*
%dir /usr/include/nvidia
/usr/include/nvidia/GL
/usr/X11R6/%_lib/lib*
%dir /usr/%_lib/tls
/usr/%_lib/tls/lib*
/usr/%_lib/lib*
%ifarch x86_64
/usr/X11R6/lib/lib*
%dir /usr/lib/tls
/usr/lib/tls/lib*
/usr/lib/lib*
%endif
%if %suse_version > 1010 || "%_repository" == "SLE_10_XORG7"
%dir %{xlibdir}
%endif
%dir %{xlibdir}/modules
%dir %{xlibdir}/modules/updates
%{xlibdir}/modules/updates/drivers
%{xlibdir}/modules/updates/extensions
/usr/share/applications/*.desktop
/usr/share/pixmaps/*.png
%if %GENERATE_IDENTITY_MAP
%dir /usr/share/sax
%dir /usr/share/sax/api/
%dir /usr/share/sax/api/data
%dir /usr/share/sax/sysp
%dir /usr/share/sax/sysp/maps
%dir /var/lib/hardware
/usr/share/sax/api/data/cdb/
/usr/share/sax/sysp/maps/update/
/var/lib/hardware/ids/
%endif
%if 0%{?suse_version} > 1230
%dir %{_sysconfdir}/modprobe.d
%config %{_sysconfdir}/modprobe.d/50-nvidia.conf
%endif
%changelog