Package: nvidia-graphics-drivers Version: 1.0.8776-2 Severity: wishlist Tags: patch
The nvidia-glx package performs some diversions that cause the other 3-D drivers to stop working when it is installed. This causes problems when users swap in a different video card, or move their hard drive into a different machine, or in various other situations. The attached patch to the source package removes the diversions and instead puts the files into subdirectories and modifies /etc/ld.so.conf and /etc/X11/xorg.conf to make the driver work properly. nvidia-enable and nvidia-disable scripts are included.
diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/control nvidia-graphics-drivers-1.0.8776/debian/control --- nvidia-graphics-drivers-1.0.8776.orig/debian/control 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/control 2006-11-29 08:52:00.000000000 -0500 @@ -2,13 +2,13 @@ Section: non-free/x11 Priority: optional Maintainer: Randall Donald <[EMAIL PROTECTED]> -Build-Depends: debhelper (>> 4.0.0), sed (>> 3.0) +Build-Depends: debhelper (>> 4.0.0), sed (>> 3.0), ghc6 Standards-Version: 3.6.2 Package: nvidia-glx-ia32 Architecture: amd64 -Depends: nvidia-kernel-1.0.8776, ia32-libs, ${shlibs:Depends} +Depends: nvidia-kernel-1.0.8776, nvidia-glx-support, ia32-libs, ${shlibs:Depends} Suggests: nvidia-settings, nvidia-kernel-source (>= 1.0.8776) Conflicts: nvidia-glx-src Replaces: nvidia-glx-src @@ -31,7 +31,7 @@ Package: nvidia-glx Architecture: i386 amd64 -Depends: nvidia-kernel-1.0.8776, x11-common (>= 1:7.0.0), ${shlibs:Depends} +Depends: nvidia-kernel-1.0.8776, nvidia-glx-support, x11-common (>= 1:7.0.0), ${shlibs:Depends} Suggests: nvidia-settings, nvidia-kernel-source (>= 1.0.8776) Conflicts: nvidia-glx-src, nvidia-glx-dev (<< 1.0.8774-5) Provides: xserver-xorg-video-1.0 @@ -52,7 +52,14 @@ . Please see the nvidia-kernel-source package for building the kernel module required by this package. - + +Package: nvidia-glx-support +Architecture: i386 amd64 +Description: Support scripts for enabling and disabling the nvidia drivers + In order to enable the nvidia drivers it is necessary to edit the xorg.conf + file, modify /etc/ld.so.conf, and run ldconfig. The scripts in this package + perform these tasks. + Package: nvidia-glx-dev Architecture: i386 amd64 Depends: nvidia-glx (>= 1.0.8776) diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/control.in nvidia-graphics-drivers-1.0.8776/debian/control.in --- nvidia-graphics-drivers-1.0.8776.orig/debian/control.in 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/control.in 2006-11-29 09:11:18.000000000 -0500 @@ -8,7 +8,7 @@ Package: nvidia-glx-ia32 Architecture: amd64 -Depends: nvidia-kernel-#VERSION#, ia32-libs, ${shlibs:Depends} +Depends: nvidia-kernel-#VERSION#, nvidia-glx-support, ia32-libs, ${shlibs:Depends} Suggests: nvidia-settings, nvidia-kernel-source (>= #VERSION#) Conflicts: nvidia-glx-src Replaces: nvidia-glx-src @@ -31,7 +31,7 @@ Package: nvidia-glx Architecture: i386 amd64 -Depends: nvidia-kernel-#VERSION#, x11-common (>= 1:7.0.0), ${shlibs:Depends} +Depends: nvidia-kernel-#VERSION#, nvidia-glx-support, x11-common (>= 1:7.0.0), ${shlibs:Depends} Suggests: nvidia-settings, nvidia-kernel-source (>= #VERSION#) Conflicts: nvidia-glx-src, nvidia-glx-dev (<< 1.0.8774-5) Provides: xserver-xorg-video-1.0 @@ -52,6 +52,13 @@ . Please see the nvidia-kernel-source package for building the kernel module required by this package. + +Package: nvidia-glx-support +Architecture: i386 amd64 +Description: Support scripts for enabling and disabling the nvidia drivers + In order to enable the nvidia drivers it is necessary to edit the xorg.conf + file, modify /etc/ld.so.conf, and run ldconfig. The scripts in this package + perform these tasks. Package: nvidia-glx-dev Architecture: i386 amd64 diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/editxconf.hs nvidia-graphics-drivers-1.0.8776/debian/editxconf.hs --- nvidia-graphics-drivers-1.0.8776.orig/debian/editxconf.hs 1969-12-31 19:00:00.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/editxconf.hs 2006-11-29 08:41:56.000000000 -0500 @@ -0,0 +1,240 @@ +#!/usr/bin/runhaskell + +-- Parse an xorg.conf file, modify it, and rewrite it. +-- Author: David Fox <[EMAIL PROTECTED]>, 19 Nov 2006. + +import Control.Exception +import Data.List +import Data.Maybe +import System.Cmd +import System.Console.GetOpt +import System.Directory +import System.Environment +import System.IO +import System.Posix.Files +import Text.Regex + +-- | The elements of an xorg.conf file. +data Line + = Comment String String + | Section String String String String [Line] + | SubSection String String String String [Line] + | EndSection String String + | EndSubSection String String + | Param String String String String String + deriving Eq + +-- | What we can do - change a line, section or subsection, set the +-- path of the xorg.conf file, and print the help message. +data Operation + = Function ModifyLine + | Path FilePath + | Help + +-- | The signature of a function that modifies a line or section. +type ModifyLine = Maybe String -> Maybe String -> Line -> [Line] + +instance Show Line where + show (Comment prefix suffix) = prefix ++ suffix + show (Section prefix sep name suffix lines) = + prefix ++ "Section" ++ sep ++ "\"" ++ name ++ "\"" ++ + suffix ++ concat (map show lines) + show (SubSection prefix sep name suffix lines) = + prefix ++ "SubSection" ++ sep ++ "\"" ++ name ++ "\"" ++ + suffix ++ concat (map show lines) + show (EndSection prefix suffix) = prefix ++ "EndSection" ++ suffix + show (EndSubSection prefix suffix) = prefix ++ "EndSubSection" ++ suffix + show (Param prefix name sep value suffix) = + prefix ++ name ++ sep ++ value ++ suffix + +defaultPath = "/etc/X11/xorg.conf" + +main :: IO () +main = + do + -- Process the command line arguments. + args <- System.Environment.getArgs + flags <- + case getOpt Permute optSpecs args of + (o, [], []) -> return o + (o, extra, []) -> return o + (_, _, errs) -> ioError (userError (concat errs ++ usage)) + let help = length (filter isHelp flags) > 0 + let path = maybe defaultPath id (foldl findPath Nothing flags) + let f = foldl findFunction Nothing flags + case (help, f) of + (True, _) -> + putStr usage + (False, Just f) -> + do + -- Read and parse the xorg.conf file + text <- readFile path + let conf = buildGroups . catMaybes . map parseLine . lines $ text + -- Peform the modification + let conf' = modify f Nothing Nothing conf + -- Rebuild the text file, rewrite it if it changed + let text' = concat . map show $ conf' + if text /= text' then edit path text' else hPutStrLn stderr ("No modification of " ++ path ++ " required.") + where + usage = usageInfo ("Usage: editxconf [OPTION...]") optSpecs + findPath (Just path) _ = Just path + findPath Nothing (Path path) = Just path + findPath Nothing _ = Nothing + findFunction (Just f) _ = Just f + findFunction Nothing (Function f) = Just f + findFunction Nothing _ = Nothing + isHelp Help = True + isHelp _ = False + +edit :: FilePath -> String -> IO () +-- ^ Modify the contents of a file as safely as possible. If we +-- can't write the new text into the file, leave it unchanged. +-- Assume the new text differs from the old. +edit path text = + do + -- Write the new file + writeFile (path ++ ".new") text + -- Remove any existing backup + doesFileExist (path ++ "~") >>= bool (return ()) (removeFile (path ++ "~")) + -- Move the original to the backup if it exists and remove the original + doesFileExist path >>= bool (return ()) (rename path (path ++ "~")) + -- Rename the new file + try (rename (path ++ ".new") path) >>= either (\ e -> do rename (path ++ "~") path; error (show e)) return + hPutStrLn stderr ("File " ++ path ++ " modified.") + system ("diff -ru " ++ path ++ "~ " ++ path ++ " 1>&2") + return () + +bool f _ False = f +bool _ t True = t + +parseLine :: String -> Maybe Line +-- ^ Try to parse a line of an xorg.conf file. Six different +-- regular expressions are tried in order, and the first that +-- matches is used. The result is passed to the corresponding +-- function to build the line. +parseLine line = + foldl tryRE Nothing + [(commentRE, commentFN), + (sectionRE, sectionFN), + (subSectionRE, subSectionFN), + (endSectionRE, endSectionFN), + (endSubSectionRE, endSubSectionFN), + (paramRE, paramFN)] + where + tryRE result (re, f) = + case result of + Just x -> Just x + Nothing -> maybe Nothing (Just . f) (matchRegex re line) + commentRE = mkRegex ("^" ++ groupRE optionalWhite ++ "(#.*)?$") + commentFN [prefix, suffix] = Comment prefix (suffix ++ "\n") + sectionRE = mkRegex ("^" ++ groupRE optionalWhite ++ "Section" ++ + groupRE white ++ quotedString ++ groupRE optionalWhite ++ "$") + sectionFN [prefix, sep, name, _, suffix] = Section prefix sep name (suffix ++ "\n") [] + subSectionRE = mkRegex ("^" ++ groupRE optionalWhite ++ "SubSection" ++ + groupRE white ++ quotedString ++ groupRE optionalWhite ++ "$") + subSectionFN [prefix, sep, name, _, suffix] = SubSection prefix sep name (suffix ++ "\n") [] + endSectionRE = mkRegex ("^" ++ groupRE optionalWhite ++ "EndSection" ++ + groupRE optionalWhite ++ "$") + endSectionFN [prefix, suffix] = EndSection prefix (suffix ++ "\n") + endSubSectionRE = mkRegex ("^" ++ groupRE optionalWhite ++ "EndSubSection" ++ + groupRE optionalWhite ++ "$") + endSubSectionFN [prefix, suffix] = EndSubSection prefix (suffix ++ "\n") + paramRE = mkRegex ("^" ++ groupRE optionalWhite ++ groupRE nonWhite ++ + groupRE (groupRE white ++ groupRE ".*" ++ groupRE optionalWhite) ++ "?$") + paramFN [prefix, name, _, sep, value, suffix] = Param prefix name sep value (suffix ++ "\n") + +buildGroups :: [Line] -> [Line] +-- ^ Group the lines of the sections and subsections +buildGroups (Section prefix sep name suffix [] : lines) = + case break isEndSection lines of + (section, (end : extra)) -> Section prefix sep name suffix (buildGroups section ++ [end]) : buildGroups extra + (_, []) -> error "Missing EndSection" + where + isEndSection (EndSection _ _) = True + isEndSection _ = False +buildGroups (SubSection prefix sep name suffix [] : lines) = + case break isEndSubSection lines of + (section, (end : extra)) -> SubSection prefix sep name suffix (buildGroups section ++ [end]) : buildGroups extra + (_, []) -> error "Missing EndSubSection" + where + isEndSubSection (EndSubSection _ _) = True + isEndSubSection _ = False +buildGroups (line : lines) = line : buildGroups lines +buildGroups [] = [] + +modify :: ModifyLine -> Maybe String -> Maybe String -> [Line] -> [Line] +-- ^ Map every line in the xorg.conf over f to get a modified config. +-- The function f returns a list of lines, so lines can be added or +-- eliminated by returning more or less than one line. +modify f Nothing Nothing (Section prefix sep sectionName suffix sectionLines : lines) = + let sectionLines' = modify f (Just sectionName) Nothing sectionLines in + let section' = Section prefix sep sectionName suffix sectionLines' in + f Nothing Nothing section' ++ modify f Nothing Nothing lines +modify f _ _ (Section _ _ _ _ _ : _) = error "Misplaced Section" +modify f (Just sectionName) Nothing (SubSection prefix sep subSectionName suffix subSectionLines : lines) = + let subSectionLines' = modify f (Just sectionName) (Just subSectionName) subSectionLines in + let subSection' = SubSection prefix sep subSectionName suffix subSectionLines' in + f (Just sectionName) Nothing subSection' ++ modify f (Just sectionName) Nothing lines +modify f _ _ (SubSection _ _ _ _ _ : _) = error "Misplaced SubSection" +modify f section subsection (line : lines) = f section subsection line ++ modify f section subsection lines +modify _ _ _ [] = [] + +addPrefixToModulePath :: FilePath -> Maybe String -> Maybe String -> Line -> [Line] +-- ^ A modification function to add a path to the beginning +-- of a colon separated path list, removing any instances +-- that may already be present. +addPrefixToModulePath path (Just "Files") Nothing (Param prefix "ModulePath" sep value suffix) = + let paths = parseModulePath value in + let paths' = path : filter (/= path) paths in + [Param prefix "ModulePath" sep ("\"" ++ concat (intersperse ":" paths') ++ "\"") suffix] +addPrefixToModulePath path _ _ line = [line] + +removeFromModulePath :: FilePath -> Maybe String -> Maybe String -> Line -> [Line] +-- ^ A modification function to remove a path from the ModulePath +-- value. +removeFromModulePath path (Just "Files") Nothing (Param prefix "ModulePath" sep value suffix) = + let paths = parseModulePath value in + let paths' = filter (/= path) paths in + [Param prefix "ModulePath" sep ("\"" ++ concat (intersperse ":" paths') ++ "\"") suffix] +removeFromModulePath path _ _ line = [line] + +parseModulePath :: String -> [String] +-- ^ Given a string of colon separated paths, possibly quoted, return +-- ^ a list of the paths. +parseModulePath value = + let paths = + case matchRegex modulePathRE value of + Just [s, _, ""] -> s + Just ["", _, s] -> s + _ -> error "Internal error" in + filter (/= "") . split (== ':') $ paths + where + modulePathRE = mkRegex ("^" ++ optionalWhite ++ quotedString ++ "|(.*)" ++ optionalWhite ++ "$") + +-- Some regular expression components. +quotedString = "\"" ++ groupRE ((groupRE "[^\"]|\\\"") ++ "*") ++ "\"" +white = "[ \t]+" +nonWhite = "[^ \t]+" +optionalWhite = "[ \t]*" +groupRE s = "(" ++ s ++ ")" + +split :: (a -> Bool) -> [a] -> [[a]] +-- ^ Split a list at the elements which match the predicate. +split f [] = [] +split f s = + case break f s of + (s, []) -> [s] + (s, _ : t) -> s : split f t + +optSpecs :: [OptDescr Operation] +optSpecs = + [Option ['a'] ["add-module-path"] + (ReqArg (\ path -> Function (addPrefixToModulePath path)) "PATH") + "Add a path to the beginning of the ModulePath value in the Files section.", + Option ['r'] ["remove-module-path"] + (ReqArg (\ path -> Function (removeFromModulePath path)) "PATH") + "Remove a path from the ModulePath value in the Files section.", + Option ['p'] ["xorg-conf-location"] + (ReqArg Path "PATH") + "Location of xorg.conf file, default is /etc/X11/xorg.conf.", + Option ['h', '?'] ["help"] (NoArg Help) "Print usage message."] diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-disable nvidia-graphics-drivers-1.0.8776/debian/nvidia-disable --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-disable 1969-12-31 19:00:00.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-disable 2006-11-29 08:52:28.000000000 -0500 @@ -0,0 +1,23 @@ +#!/bin/sh + +PATH=/bin:/sbin:/usr/bin:/usr/sbin + +echo "De-configuring the NVIDIA driver" 1>&2 + +editxconf --remove-module-path /usr/lib/xorg/modules/nvidia + +grep -q '^/usr/lib/nvidia$' /etc/ld.so.conf && { + rm -f /etc/ld.so.conf.orig + cp /etc/ld.so.conf /etc/ld.so.conf.orig + grep -v '^/usr/lib/nvidia$' < /etc/ld.so.conf.orig > /etc/ld.so.conf + ldconfig +} + +if [ -e /sys/module/nvidia ]; then + modprobe -r nvidia || true + modprobe -r drm || true +fi + +echo -n > /etc/modprobe.d/aliases.nvidia + +exit 0 diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-enable nvidia-graphics-drivers-1.0.8776/debian/nvidia-enable --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-enable 1969-12-31 19:00:00.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-enable 2006-11-29 08:52:21.000000000 -0500 @@ -0,0 +1,31 @@ +#!/bin/sh + +PATH=/bin:/sbin:/usr/bin:/usr/sbin + +editxconf --add-module-path /usr/lib/xorg/modules/nvidia + +grep -q '/usr/lib/nvidia' /etc/ld.so.conf || { + rm -f /etc/ld.so.conf.orig + cp /etc/ld.so.conf /etc/ld.so.conf.orig + echo '/usr/lib/nvidia' > /etc/ld.so.conf + cat /etc/ld.so.conf.orig >> /etc/ld.so.conf + ldconfig +} + +if [ ! -e /sys/module/nvidia ]; then + modprobe -r drm || true + modprobe nvidia +fi + +# The fglrx module is loaded automatically when the driver starts. +# However, it is necessary to unload any drm module that is already +# inserted because it will prevent fglrx from loading. Theoretically, +# removing drm should do it, but I've seen that fail. + +modprobe -r drm + +# This causes the nvidia kernel module to be loaded when any /dev/dri +# device is probed. +echo "alias /dev/dri* nvidia" > /etc/modprobe.d/aliases.nvidia + +exit 0 diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.dirs nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.dirs --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.dirs 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.dirs 2006-11-29 12:06:18.000000000 -0500 @@ -2,9 +2,10 @@ usr/lib usr/share/lintian/overrides usr/lib/xorg/modules/drivers -usr/lib/xorg/modules/extensions +usr/lib/xorg/modules/nvidia usr/lib/tls usr/lib/nvidia +usr/lib/nvidia/tls usr/share/bug/nvidia-glx etc etc/default diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.links nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.links --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.links 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.links 2006-11-29 08:41:56.000000000 -0500 @@ -1,4 +1,4 @@ -emul/ia32-linux/usr/lib/libGL.so.1.0.8776 emul/ia32-linux/usr/lib/libGL.so.1 -emul/ia32-linux/usr/lib/libGL.so.1.0.8776 emul/ia32-linux/usr/lib/libGL.so -emul/ia32-linux/usr/lib/libGLcore.so.1.0.8776 emul/ia32-linux/usr/lib/libGLcore.so +emul/ia32-linux/usr/lib/nvidia/libGL.so.1.0.8776 emul/ia32-linux/usr/lib/nvidia/libGL.so.1 +emul/ia32-linux/usr/lib/nvidia/libGL.so.1.0.8776 emul/ia32-linux/usr/lib/nvidia/libGL.so +emul/ia32-linux/usr/lib/nvidia/libGLcore.so.1.0.8776 emul/ia32-linux/usr/lib/nvidia/libGLcore.so emul/ia32-linux/usr/lib/libnvidia-tls.so.1.0.8776 emul/ia32-linux/usr/lib/libnvidia-tls.so.1 diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.links.in nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.links.in --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.links.in 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.links.in 2006-11-29 08:41:56.000000000 -0500 @@ -1,4 +1,4 @@ -emul/ia32-linux/usr/lib/libGL.so.#VERSION# emul/ia32-linux/usr/lib/libGL.so.1 -emul/ia32-linux/usr/lib/libGL.so.#VERSION# emul/ia32-linux/usr/lib/libGL.so -emul/ia32-linux/usr/lib/libGLcore.so.#VERSION# emul/ia32-linux/usr/lib/libGLcore.so +emul/ia32-linux/usr/lib/nvidia/libGL.so.#VERSION# emul/ia32-linux/usr/lib/nvidia/libGL.so.1 +emul/ia32-linux/usr/lib/nvidia/libGL.so.#VERSION# emul/ia32-linux/usr/lib/nvidia/libGL.so +emul/ia32-linux/usr/lib/nvidia/libGLcore.so.#VERSION# emul/ia32-linux/usr/lib/nvidia/libGLcore.so emul/ia32-linux/usr/lib/libnvidia-tls.so.#VERSION# emul/ia32-linux/usr/lib/libnvidia-tls.so.1 diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.postrm nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.postrm --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.postrm 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.postrm 2006-11-29 08:41:56.000000000 -0500 @@ -19,25 +19,25 @@ case "$1" in remove|purge) - dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null - dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null - dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so > /dev/null - - dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null - dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null - dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so > /dev/null + + #dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so > /dev/null test -d /emul/ia32-linux/usr/lib/nvidia && \ rmdir /emul/ia32-linux/usr/lib/nvidia || true; diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.preinst nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.preinst --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-ia32.preinst 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-ia32.preinst 2006-11-29 08:41:56.000000000 -0500 @@ -21,25 +21,25 @@ mkdir -p /emul/ia32-linux/usr/lib/nvidia || true # make diversions - dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null - dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null - dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so > /dev/null - - dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null - dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null - dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ - /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ - /emul/ia32-linux/usr/lib/libGL.so > /dev/null + #dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null + #dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null + #dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so > /dev/null + + #dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1 > /dev/null + #dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.1.2.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so.1.2 > /dev/null + #dpkg-divert --add --rename --package nvidia-glx-ia32 --divert \ + # /emul/ia32-linux/usr/lib/nvidia/libGL.so.ia32-libs \ + # /emul/ia32-linux/usr/lib/libGL.so > /dev/null ;; diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.init nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.init --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.init 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.init 2006-11-29 08:41:56.000000000 -0500 @@ -32,18 +32,18 @@ then echo -n "Creating NVIDIA TLS links..." # remove the symlinks - rm -f /usr/lib/tls/libGL.so - rm -f /usr/lib/tls/libGL.so.* + rm -f /usr/lib/nvidia/tls/libGL.so + rm -f /usr/lib/nvidia/tls/libGL.so.* rm -f /usr/lib/tls/libnvidia-tls.so rm -f /usr/lib/tls/libnvidia-tls.so.* - rm -f /usr/lib/tls/libGL.la + rm -f /usr/lib/nvidia/tls/libGL.la #remove old ones - rm -f /usr/lib/tls/libGLcore.so.1 - rm -f /usr/lib/tls/libGLcore.so.* + rm -f /usr/lib/nvidia/tls/libGLcore.so.1 + rm -f /usr/lib/nvidia/tls/libGLcore.so.* # create the symlinks - ln -s /usr/lib/nvidia/libnvidia-tls.so.1.0.8776 /usr/lib/tls/libnvidia-tls.so.1.0.8776 + ln -s /usr/lib/nvidia/libnvidia-tls.so.1.0.8776 /usr/lib/nvidia/tls/libnvidia-tls.so.1.0.8776 # reconfigure dynamic linker run-time bindings ldconfig echo " done." @@ -58,10 +58,10 @@ then echo -n "Removing NVIDIA TLS links..." # remove the symlinks - rm -f /usr/lib/tls/libGL.so - rm -f /usr/lib/tls/libGL.so.* - rm -f /usr/lib/tls/libGL.la - rm -f /usr/lib/tls/libGLcore.so.* + rm -f /usr/lib/nvidia/tls/libGL.so + rm -f /usr/lib/nvidia/tls/libGL.so.* + rm -f /usr/lib/nvidia/tls/libGL.la + rm -f /usr/lib/nvidia/tls/libGLcore.so.* rm -f /usr/lib/tls/libnvidia-tls.so rm -f /usr/lib/tls/libnvidia-tls.so.* # reconfigure dynamic linker run-time bindings diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.links nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.links --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.links 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.links 2006-11-29 12:06:57.000000000 -0500 @@ -1,7 +1,7 @@ -usr/lib/libGL.so.1.0.8776 usr/lib/libGL.so.1 -usr/lib/libGLcore.so.1.0.8776 usr/lib/libGLcore.so.1 +usr/lib/nvidia/libGL.so.1.0.8776 usr/lib/nvidia/libGL.so.1 +usr/lib/nvidia/libGLcore.so.1.0.8776 usr/lib/nvidia/libGLcore.so.1 usr/lib/libnvidia-tls.so.1.0.8776 usr/lib/libnvidia-tls.so.1 -usr/lib/xorg/modules/extensions/libglx.so.1.0.8776 usr/lib/xorg/modules/extensions/libglx.so +usr/lib/xorg/modules/nvidia/libglx.so.1.0.8776 usr/lib/xorg/modules/nvidia/libglx.so usr/lib/libXvMCNVIDIA.so.1.0.8776 usr/lib/libXvMCNVIDIA.so.1 usr/lib/libXvMCNVIDIA.so.1.0.8776 usr/lib/libXvMCNVIDIA_dynamic.so.1 diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.links.in nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.links.in --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.links.in 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.links.in 2006-11-29 12:07:13.000000000 -0500 @@ -1,7 +1,7 @@ -usr/lib/libGL.so.#VERSION# usr/lib/libGL.so.1 -usr/lib/libGLcore.so.#VERSION# usr/lib/libGLcore.so.1 +usr/lib/libGL.so.#VERSION# usr/lib/nvidia/libGL.so.1 +usr/lib/libGLcore.so.#VERSION# usr/lib/nvidia/libGLcore.so.1 usr/lib/libnvidia-tls.so.#VERSION# usr/lib/libnvidia-tls.so.1 -usr/lib/xorg/modules/extensions/libglx.so.#VERSION# usr/lib/xorg/modules/extensions/libglx.so +usr/lib/xorg/modules/nvidia/libglx.so.#VERSION# usr/lib/xorg/modules/nvidia/libglx.so usr/lib/libXvMCNVIDIA.so.#VERSION# usr/lib/libXvMCNVIDIA.so.1 usr/lib/libXvMCNVIDIA.so.#VERSION# usr/lib/libXvMCNVIDIA_dynamic.so.1 diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.postrm nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.postrm --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.postrm 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.postrm 2006-11-29 08:41:56.000000000 -0500 @@ -18,14 +18,14 @@ case "$1" in remove|purge) - dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.xlibmesa /usr/lib/libGL.so.1 > /dev/null - dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.2.xlibmesa /usr/lib/libGL.so.1.2 > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.xlibmesa /usr/lib/libGL.so.1 > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.2.xlibmesa /usr/lib/libGL.so.1.2 > /dev/null - dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGLcore.a.xlibmesa /usr/lib/xorg/modules/extensions/libGLcore.a > /dev/null - dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.a.xlibmesa /usr/lib/xorg/modules/extensions/libglx.a > /dev/null - dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.so.xlibmesa /usr/lib/xorg/modules/extensions/libglx.so > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGLcore.a.xlibmesa /usr/lib/xorg/modules/extensions/libGLcore.a > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.a.xlibmesa /usr/lib/xorg/modules/extensions/libglx.a > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.so.xlibmesa /usr/lib/xorg/modules/extensions/libglx.so > /dev/null - dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null + #dpkg-divert --remove --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null rm -f /usr/lib/xorg/modules/extensions/libglx.so.1.0.8776 2> /dev/null || true if [ -d /usr/lib/nvidia ]; then rmdir /usr/lib/nvidia/ || true; diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.preinst nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.preinst --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx.preinst 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx.preinst 2006-11-29 08:41:56.000000000 -0500 @@ -80,19 +80,19 @@ dpkg-divert --remove --rename --package nvidia-glx-dev --divert /usr/X11R6/lib/nvidia/libGL.a.xlibmesa /usr/X11R6/lib/libGL.a > /dev/null fi # create new diversion directories - if [ ! -d /usr/lib/nvidia ]; then - mkdir -p /usr/lib/nvidia || true - fi + #if [ ! -d /usr/lib/nvidia ]; then + # mkdir -p /usr/lib/nvidia || true + #fi # make new diversions - dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.xlibmesa /usr/lib/libGL.so.1 > /dev/null - dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.2.xlibmesa /usr/lib/libGL.so.1.2 > /dev/null + #dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.xlibmesa /usr/lib/libGL.so.1 > /dev/null + #dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.1.2.xlibmesa /usr/lib/libGL.so.1.2 > /dev/null - dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGLcore.a.xlibmesa /usr/lib/xorg/modules/extensions/libGLcore.a > /dev/null - dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.a.xlibmesa /usr/lib/xorg/modules/extensions/libglx.a > /dev/null - dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.so.xlibmesa /usr/lib/xorg/modules/extensions/libglx.so > /dev/null + #dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGLcore.a.xlibmesa /usr/lib/xorg/modules/extensions/libGLcore.a > /dev/null + #dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.a.xlibmesa /usr/lib/xorg/modules/extensions/libglx.a > /dev/null + #dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libglx.so.xlibmesa /usr/lib/xorg/modules/extensions/libglx.so > /dev/null - dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null + #dpkg-divert --add --rename --package nvidia-glx --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null ;; diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-support.dirs nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-support.dirs --- nvidia-graphics-drivers-1.0.8776.orig/debian/nvidia-glx-support.dirs 1969-12-31 19:00:00.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/nvidia-glx-support.dirs 2006-11-29 08:41:56.000000000 -0500 @@ -0,0 +1 @@ +sbin diff -ruN nvidia-graphics-drivers-1.0.8776.orig/debian/rules nvidia-graphics-drivers-1.0.8776/debian/rules --- nvidia-graphics-drivers-1.0.8776.orig/debian/rules 2006-11-29 08:41:11.000000000 -0500 +++ nvidia-graphics-drivers-1.0.8776/debian/rules 2006-11-29 12:07:30.000000000 -0500 @@ -115,6 +115,7 @@ dh_clean rm -fr $(dirname) nvidia-kernel-source.tar.gz + cd debian && rm -f editxconf editxconf.hi editxconf .o @@ -150,16 +151,16 @@ $(CURDIR)/debian/nvidia-glx-dev/usr/include/GL install -m 0644 $(dirname)/usr/lib/libGL.so.${version} \ - $(CURDIR)/debian/nvidia-glx/usr/lib + $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia install -m 0644 $(dirname)/usr/lib/libGLcore.so.${version} \ - $(CURDIR)/debian/nvidia-glx/usr/lib + $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia sed "s/__GENERATED_BY__/Debian nvidia-graphics-drivers/" $(dirname)/usr/lib/libGL.la | sed "s/__LIBGL_PATH__/\/usr\/lib/" > $(CURDIR)/debian/nvidia-glx-dev/usr/lib/libGL.la # install -m 0644 $(dirname)/usr/lib/libGL.la $(CURDIR)/debian/nvidia-glx/usr/lib/libGL.la # TLS (nvidia-tls new for 6106) - install $(dirname)/usr/lib/libnvidia-tls.so.${version} $(CURDIR)/debian/nvidia-glx/usr/lib/ + install $(dirname)/usr/lib/libnvidia-tls.so.${version} $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia/ - install $(dirname)/usr/lib/tls/libnvidia-tls.so.${version} $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia + install $(dirname)/usr/lib/tls/libnvidia-tls.so.${version} $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia/tls #sed "s/__GENERATED_BY__/Debian nvidia-graphics-drivers/" $(dirname)/usr/lib/tls/libGL.la | sed "s/__LIBGL_PATH__/\/usr\/lib\/tls/" > $(CURDIR)/debian/nvidia-glx-dev/usr/lib/nvidia/libGL.la # install -m 0644 $(dirname)/usr/lib/tls/libGL.la $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia/libGL.la @@ -167,7 +168,7 @@ install -m 0644 $(dirname)/usr/lib/libnvidia-cfg.so.${version} $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia/ - install $(dirname)/usr/X11R6/lib/modules/extensions/libglx.so.${version} $(CURDIR)/debian/nvidia-glx/usr/lib/xorg/modules/extensions/ + install $(dirname)/usr/X11R6/lib/modules/extensions/libglx.so.${version} $(CURDIR)/debian/nvidia-glx/usr/lib/xorg/modules/nvidia/libglx.so.${version} install $(dirname)/usr/bin/tls_test $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia install $(dirname)/usr/bin/tls_test_dso.so $(CURDIR)/debian/nvidia-glx/usr/lib/nvidia @@ -178,16 +179,21 @@ if [ "$(DEB_BUILD_ARCH)" == "amd64" ] ; then \ install $(dirname)/usr/lib32/libGLcore.so.${version} \ - $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib ; \ + $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib/nvidia ; \ install $(dirname)/usr/lib32/libGL.so.${version} \ - $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib ; \ + $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib/nvidia ; \ install $(dirname)/usr/lib32/libnvidia-tls.so.${version} \ - $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib ; \ + $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib/nvidia ; \ install $(dirname)/usr/lib32/tls/libnvidia-tls.so.${version} \ - $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib/tls ; \ + $(CURDIR)/debian/nvidia-glx-ia32/emul/ia32-linux/usr/lib/nvidia/tls ; \ fi install -m 755 $(dirname)/usr/bin/nvidia-bug-report.sh $(CURDIR)/debian/nvidia-glx/usr/bin/ + install -m 755 $(CURDIR)/debian/nvidia-enable $(CURDIR)/debian/nvidia-glx-support/sbin/ + install -m 755 $(CURDIR)/debian/nvidia-disable $(CURDIR)/debian/nvidia-glx-support/sbin/ + install -m 755 $(CURDIR)/debian/editxconf.hs $(CURDIR)/debian/nvidia-glx-support/sbin/ + cd $(CURDIR)/debian && ghc6 --make -O2 editxconf.hs -o editxconf && strip editxconf + install -m 755 $(CURDIR)/debian/editxconf $(CURDIR)/debian/nvidia-glx-support/sbin/ # use separate package #install -m 755 $(dirname)/usr/bin/nvidia-xconfig $(CURDIR)/debian/nvidia-glx/usr/bin/