[elrepo-devel] nvidia legacy drivers
Marco Giunta
giunta at sissa.it
Sat Dec 12 10:00:15 EST 2009
Hi at all,
I'm a sysadmin in an Italian College, and I'm using your rpms
(nvidia, ieee1394 and till CentOS 5.4, fuse) in our workstations (about
300). A lot of them have old nvidia video card, so I've adapted your spec
file to suit nvidia legacy driver 96xx; I'm using them for a couple of
months without any problem. You'll find attached two spec files:
one for the driver and one for the kmod.
I hope you'll find them useful. Regards,
Marco Giunta
On Fri, 11 Dec 2009, Akemi Yagi wrote:
> Hi all,
>
> As you may know, ELRepo provides the Nvidia driver (
> http://elrepo.org/tiki/kmod-nvidia ) which turned out to be quite
> fruitful.
>
> Now, we have been getting requests for the legacy drivers for Nvidia:
>
> http://elrepo.org/bugs/view.php?id=33 (9xxx series)
> http://elrepo.org/bugs/view.php?id=37 (173.x series)
>
> We are currently a bit short in hand and now looking for people who
> are willing to take on this work. Is anyone interested in helping?
>
> Akemi
> ELRepo Team
>
>
-------------- next part --------------
# Define the kmod package name here.
%define kmod_name nvidia-96xx
%define dist el5
Name: %{kmod_name}-kmod
Version: 96.43.13
Release: 1.%{dist}
Group: System Environment/Kernel
License: NVIDIA proprietary
Summary: NVIDIA 96xx OpenGL kernel driver module
URL: http://www.nvidia.com/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-build-%(%{__id_u} -n)
ExclusiveArch: i686 x86_64
# Sources.
Source0: ftp://download.nvidia.com/XFree86/Linux-x86/%{version}/NVIDIA-Linux-x86-%{version}-pkg0.run
Source1: ftp://download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}-pkg2.run
Source10: kmodtool-%{kmod_name}
NoSource: 0
NoSource: 1
# If kversion isn't defined on the rpmbuild line, build for the current kernel.
%{!?kversion: %define kversion %(uname -r)}
# Define the variants for each architecture.
%define basevar ""
%ifarch i686
%define paevar PAE
%endif
# If kvariants isn't defined on the rpmbuild line, build all variants for this architecture.
%{!?kvariants: %define kvariants %{?basevar} %{?paevar}}
# Magic hidden here.
%define kmodtool sh %{SOURCE10}
%{expand:%(%{kmodtool} rpmtemplate_kmp %{kmod_name} %{kversion} %{kvariants} 2>/dev/null)}
%description
This package provides the proprietary NVIDIA 96xx OpenGL kernel driver module.
It is built to depend upon the specific ABI provided by a range of releases
of the same variant of the CentOS kernel and not on any one specific build.
%prep
%setup -q -c -T
%ifarch i686
sh %{SOURCE0} --extract-only --target nvidiapkg
%endif
%ifarch x86_64
sh %{SOURCE1} --extract-only --target nvidiapkg
%endif
for kvariant in %{kvariants} ; do
%{__cp} -a nvidiapkg _kmod_build_$kvariant
%{__cat} <<-EOF >_kmod_build_$kvariant/usr/src/nv/%{kmod_name}.conf
override %{kmod_name} * weak-updates/%{kmod_name}
EOF
done
%build
for kvariant in %{kvariants} ; do
export SYSSRC=%{_usrsrc}/kernels/%{kversion}${kvariant:+-$kvariant}-%{_target_cpu}
pushd _kmod_build_$kvariant/usr/src/nv
%{__make} module
popd
done
%install
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT
export INSTALL_MOD_DIR=extra/%{kmod_name}
for kvariant in %{kvariants} ; do
pushd _kmod_build_$kvariant/usr/src/nv
ksrc=%{_usrsrc}/kernels/%{kversion}${kvariant:+-$kvariant}-%{_target_cpu}
%{__make} -C "${ksrc}" modules_install M=$PWD
%{__mkdir_p} ${INSTALL_MOD_PATH}/etc/depmod.d
%{__install} -p -m 0644 %{kmod_name}.conf ${INSTALL_MOD_PATH}/etc/depmod.d/
popd
done
%clean
%{__rm} -rf $RPM_BUILD_ROOT
%changelog
* Thu Sep 01 2009 Marco Giunta <giunta AT sissa.it>
- Downgraded and adapted to version 96.43.13.
* Mon Aug 10 2009 Philip J Perry <phil at elrepo.org> - 185.18.31-1.el5.elrepo
- Update to version 185.18.31.
- Drop bundling the source here too, it's included in nvidia-x11-drv.
* Fri Jul 10 2009 Philip J Perry <phil at elrepo.org> - 185.18.14-1.el5.elrepo
- Rebuilt against kernel-2.6.18-128.el5 for release.
- Updated kmodtool to latest specification.
- Create nvidia.conf in spec file.
* Tue Jul 07 2009 Philip J Perry <phil at elrepo.org>
- Updated sources to match nvidia-x11-drv.
- Fixed paths to extract sources.
- Don't strip the module (NVIDIA doesn't).
* Wed Jun 10 2009 Alan Bartlett <ajb at elrepo.org>
- Updated the package to 185.18.14 version.
* Thu May 21 2009 Dag Wieers <dag at wieers.com>
- Adjusted the package name.
* Tue May 19 2009 Alan Bartlett <ajb at elrepo.org>
- Total revision and re-build of the kmod packages.
* Thu May 14 2009 Alan Bartlett <ajb at elrepo.org>
- Initial build of the kmod packages.
-------------- next part --------------
%define nvidialibdir %{_libdir}/nvidia
%define nvidialib32dir %{_prefix}/lib/nvidia
%define desktop_vendor elrepo
%define dist el5
%define debug_package %{nil}
%define debug_packages %{nil}
Name: nvidia-x11-drv-96xx
Version: 96.43.13
Release: 1.%{dist}
Group: User Interface/X Hardware Support
License: Redistributable, no modification permitted
Summary: NVIDIA 96xx OpenGL X11 display driver files
URL: http://www.nvidia.com/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-build-%(%{__id_u} -n)
ExclusiveArch: i386 x86_64
# Sources.
# x86: pkg1 contains precompiled modules we don't need
Source0: ftp://download.nvidia.com/XFree86/Linux-x86/%{version}/NVIDIA-Linux-x86-%{version}-pkg0.run
# x86_64: only pkg2 contains the lib32 compatibility libs
Source1: ftp://download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}-pkg2.run
# taken from the rpmforge dkms package
Source2: nvidia.sh
Source3: nvidia.csh
Source4: nvidia-config-display
Source5: nvidia.modprobe
Source6: nvidia.nodes
# provides desktop-file-install
BuildRequires: desktop-file-utils
BuildRequires: perl
Requires: nvidia-96xx-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
Requires(post): nvidia-96xx-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
Requires(post): /sbin/ldconfig
# for nvidia-config-display
Requires(post): pyxf86config
Requires(preun): pyxf86config
%description
This package provides the proprietary NVIDIA 96xx OpenGL X11 display driver files.
%prep
%setup -q -c -T
%ifarch i386
sh %{SOURCE0} --extract-only --target nvidiapkg
%endif
%ifarch x86_64
sh %{SOURCE1} --extract-only --target nvidiapkg
%endif
%build
# Nothing to build
%install
%{__rm} -rf $RPM_BUILD_ROOT
pushd nvidiapkg
# Install nvidia tools from /bin
%{__mkdir_p} $RPM_BUILD_ROOT%{_bindir}/
%{__install} -p -m 0755 usr/bin/{nvidia-bug-report.sh,nvidia-settings,nvidia-xconfig} \
$RPM_BUILD_ROOT%{_bindir}/
# Install GL and tls libs
%{__mkdir_p} $RPM_BUILD_ROOT%{nvidialibdir}/
%{__mkdir_p} $RPM_BUILD_ROOT%{nvidialibdir}/tls/
%{__install} -p -m 0755 usr/lib/*.so.%{version} \
$RPM_BUILD_ROOT%{nvidialibdir}/
%{__install} -p -m 0755 usr/lib/libGL.la \
$RPM_BUILD_ROOT%{nvidialibdir}/
%{__install} -p -m 0755 usr/lib/tls/*.so.%{version} \
$RPM_BUILD_ROOT%{nvidialibdir}/tls/
%ifarch x86_64
# Install 32bit compat GL and tls libs
%{__mkdir_p} $RPM_BUILD_ROOT%{nvidialib32dir}/
%{__mkdir_p} $RPM_BUILD_ROOT%{nvidialib32dir}/tls/
%{__install} -p -m 0755 usr/lib32/*.so.%{version} \
$RPM_BUILD_ROOT%{nvidialib32dir}/
%{__install} -p -m 0755 usr/lib32/libGL.la \
$RPM_BUILD_ROOT%{nvidialib32dir}/
%{__install} -p -m 0755 usr/lib32/tls/*.so.%{version} \
$RPM_BUILD_ROOT%{nvidialib32dir}/tls/
%endif
# Install libXvMCNVIDIA
%{__install} -p -m 0755 usr/X11R6/lib/libXvMCNVIDIA.so.%{version} \
$RPM_BUILD_ROOT%{nvidialibdir}/
%{__install} -p -m 0644 usr/X11R6/lib/libXvMCNVIDIA.a \
$RPM_BUILD_ROOT%{nvidialibdir}/
# Install X driver and extension
%{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/
%{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/xorg/modules/extensions/nvidia/
%{__install} -p -m 0755 usr/X11R6/lib/modules/drivers/nvidia_drv.so \
$RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/
%{__install} -p -m 0755 usr/X11R6/lib/modules/extensions/libglx.so.%{version} \
$RPM_BUILD_ROOT%{_libdir}/xorg/modules/extensions/nvidia/
# Create the symlinks
%{__ln_s} libGLcore.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libGLcore.so.1
%{__ln_s} libGL.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libGL.so
%{__ln_s} libGL.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libGL.so.1
%{__ln_s} libnvidia-cfg.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libnvidia-cfg.so
%{__ln_s} libnvidia-cfg.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libnvidia-cfg.so.1
%{__ln_s} libnvidia-tls.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libnvidia-tls.so.1
%{__ln_s} libnvidia-tls.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/tls/libnvidia-tls.so.1
%{__ln_s} libXvMCNVIDIA.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libXvMCNVIDIA_dynamic.so
%{__ln_s} libXvMCNVIDIA.so.%{version} $RPM_BUILD_ROOT%{nvidialibdir}/libXvMCNVIDIA_dynamic.so.1
%{__ln_s} libglx.so.%{version} $RPM_BUILD_ROOT%{_libdir}/xorg/modules/extensions/nvidia/libglx.so
%ifarch x86_64
# Create the 32-bit symlinks
%{__ln_s} libGLcore.so.%{version} $RPM_BUILD_ROOT%{nvidialib32dir}/libGLcore.so.1
%{__ln_s} libGL.so.%{version} $RPM_BUILD_ROOT%{nvidialib32dir}/libGL.so
%{__ln_s} libGL.so.%{version} $RPM_BUILD_ROOT%{nvidialib32dir}/libGL.so.1
%{__ln_s} libnvidia-tls.so.%{version} $RPM_BUILD_ROOT%{nvidialib32dir}/libnvidia-tls.so.1
%{__ln_s} libnvidia-tls.so.%{version} $RPM_BUILD_ROOT%{nvidialib32dir}/tls/libnvidia-tls.so.1
%endif
# Install man pages
%{__mkdir_p} $RPM_BUILD_ROOT%{_mandir}/man1/
%{__install} -p -m 0644 usr/share/man/man1/nvidia-{settings,xconfig}.1.gz \
$RPM_BUILD_ROOT%{_mandir}/man1/
# Install pixmap for the desktop entry
%{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/pixmaps/
%{__install} -p -m 0644 usr/share/pixmaps/nvidia-settings.png \
$RPM_BUILD_ROOT%{_datadir}/pixmaps/
# Desktop entry for nvidia-settings
# Remove "__UTILS_PATH__/" before the Exec command name
# Replace "__PIXMAP_PATH__/" with the proper pixmaps path
%{__perl} -pi -e 's|(Exec=).*/(.*)|$1$2|g;
s|(Icon=).*/(.*)|$1%{_datadir}/pixmaps/$2|g' \
usr/share/applications/nvidia-settings.desktop
%{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/applications/
desktop-file-install --vendor %{desktop_vendor} \
--dir $RPM_BUILD_ROOT%{_datadir}/applications/ \
--add-category System \
--add-category Application \
--add-category GNOME \
usr/share/applications/nvidia-settings.desktop
# Install profile.d files
%{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/profile.d/
%{__install} -p -m 0644 %{SOURCE2} \
$RPM_BUILD_ROOT%{_sysconfdir}/profile.d/nvidia.sh
%{__install} -p -m 0644 %{SOURCE3} \
$RPM_BUILD_ROOT%{_sysconfdir}/profile.d/nvidia.csh
# Install X configuration script
%{__mkdir_p} $RPM_BUILD_ROOT%{_sbindir}/
%{__install} -p -m 0755 %{SOURCE4} \
$RPM_BUILD_ROOT%{_sbindir}/nvidia-config-display
# Install modprobe.d file
%{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/
%{__install} -p -m 0644 %{SOURCE5} \
$RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/nvidia
# Install udev configuration file
%{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/udev/makedev.d/
%{__install} -p -m 0644 %{SOURCE6} \
$RPM_BUILD_ROOT%{_sysconfdir}/udev/makedev.d/60-nvidia.nodes
# Install ld.so.conf.d file
%{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/
echo %{nvidialibdir} > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/nvidia.conf
%ifarch x86_64
echo %{nvidialib32dir} >> $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d/nvidia.conf
%endif
popd
%clean
%{__rm} -rf $RPM_BUILD_ROOT
%post
/sbin/ldconfig
# Make sure we have a Files section in xorg.conf, otherwise create an empty one
XORGCONF=/etc/X11/xorg.conf
[ -w ${XORGCONF} ] && ! grep -q 'Section "Files"' ${XORGCONF} && \
echo -e 'Section "Files"\nEndSection' >> ${XORGCONF}
# Enable the proprietary nvidia driver
%{_sbindir}/nvidia-config-display enable &>/dev/null || :
%preun
# Disable proprietary nvidia driver on uninstall
if [ "$1" -eq "0" ]; then
test -f %{_sbindir}/nvidia-config-display && %{_sbindir}/nvidia-config-display disable &>/dev/null || :
fi
%postun
/sbin/ldconfig
%triggerin -- xorg-x11-server-Xorg
# Enable the proprietary nvidia driver
# Required since xorg-x11-server-Xorg empties the "Files" section
test -f %{_sbindir}/nvidia-config-display && %{_sbindir}/nvidia-config-display enable &>/dev/null || :
%files
%defattr(-,root,root,-)
%doc nvidiapkg/usr/share/doc/*
%{_mandir}/man1/nvidia*.*
%{_datadir}/pixmaps/nvidia-settings.png
%{_datadir}/applications/*nvidia-settings.desktop
%{_sysconfdir}/profile.d/nvidia.*
%{_bindir}/nvidia*
%{_sbindir}/nvidia-config-display
%config %{_sysconfdir}/modprobe.d/nvidia
%config %{_sysconfdir}/ld.so.conf.d/nvidia.conf
%config %{_sysconfdir}/udev/makedev.d/60-nvidia.nodes
# now the libs
%dir %{nvidialibdir}
%{nvidialibdir}/lib*
%dir %{nvidialibdir}/tls
%{nvidialibdir}/tls/lib*
%{_libdir}/xorg/modules/drivers/nvidia_drv.so
%dir %{_libdir}/xorg/modules/extensions/nvidia
%{_libdir}/xorg/modules/extensions/nvidia/libglx.*
%ifarch x86_64
# 32-bit compatibility libs
%dir %{nvidialib32dir}
%{nvidialib32dir}/lib*
%dir %{nvidialib32dir}/tls
%{nvidialib32dir}/tls/lib*
%endif
%changelog
* Thu Sep 01 2009 Marco Giunta <giunta AT sissa.it>
- Downgraded and adapted to version 96.43.13.
* Mon Aug 10 2009 Philip J Perry <phil at elrepo.org> - 185.18.31-1.el5.elrepo
- Update to version 185.18.31.
* Tue Jul 14 2009 Philip J Perry <phil at elrepo.org> - 185.18.14-1.el5.elrepo
- Rebuilt for release.
* Mon Jul 13 2009 Akemi Yagi <toracat at elrepo.org>, Dag Wieers <dag at wieers.com>
- Fix udev device creation.
* Fri Jul 10 2009 Dag Wieers <dag at wieers.com>
- Fix Requires to nvidia-kmod.
* Fri Jul 10 2009 Philip J Perry <phil at elrepo.org>
- Fixed permissions on nvidia.(c)sh that cause Xorg to fail.
- Don't create debug or strip the package (NVIDIA doesn't).
* Mon Jul 06 2009 Philip J Perry <phil at elrepo.org>
- Complete rewrite of SPEC file
- Added nvidia.(c)sh, nvidia.modprobe
- Added nvidia-config-display to enable/disable driver
- Added Requires (pyxf86config) and BuildRequires (desktop-file-utils, perl)
* Wed Jun 10 2009 Alan Bartlett <ajb at elrepo.org>
- Updated the package to 185.18.14 version.
* Wed Jun 10 2009 Phil Perry <phil at elrepo.org>
- Added the Requires: /sbin/ldconfig line.
- Added the lines to create the /etc/ld.so.conf.d/nvidia.conf file.
* Wed May 27 2009 Philip J Perry <phil at elrepo.org>, Steve Tindall <s10dal at elrepo.org>
- Corrected the symlinks and their removal.
* Wed May 27 2009 Alan Bartlett <ajb at elrepo.org>
- Corrected typos in the pre & postun sections.
* Thu May 21 2009 Dag Wieers <dag at wieers.com>
- Adjusted the package name.
* Fri May 15 2009 Akemi Yagi <toracat at elrepo.org>
- Corrected the Requires: kmod-nvidia = %{?epoch:%{epoch}:}%{version}-%{release}
* Thu May 14 2009 Alan Bartlett <ajb at elrepo.org>
- Initial build of the x11-drv package.
More information about the elrepo-devel
mailing list