~ubuntu-branches/ubuntu/precise/nvidia-graphics-drivers-340-updates/precise-updates

« back to all changes in this revision

Viewing changes to debian/templates/nvidia-graphics-drivers.preinst.in

  • Committer: Package Import Robot
  • Author(s): Alberto Milone
  • Date: 2015-08-27 16:59:02 UTC
  • Revision ID: package-import@ubuntu.com-20150827165902-je7xc80q6s7yttng
Tags: 340.93-0ubuntu0.0.0.1
* Initial release (replaces nvidia-graphics-drivers-331-updates).
* SECURITY UPDATE:
  - CVE-2015-5950 (LP: #1489391).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /bin/sh
 
2
# preinst script for #DRIVERNAME#
 
3
#
 
4
# see: dh_installdeb(1)
 
5
#
 
6
# Copyright (C) 2009 Canonical Ltd
 
7
# Authors: Alberto Milone
 
8
 
 
9
set -e
 
10
 
 
11
# summary of how this script can be called:
 
12
#        * <new-preinst> `install'
 
13
#        * <new-preinst> `install' <old-version>
 
14
#        * <new-preinst> `upgrade' <old-version>
 
15
#        * <old-preinst> `abort-upgrade' <new-version>
 
16
#
 
17
# For details see /usr/share/doc/packaging-manual/
 
18
 
 
19
if [ `dpkg --print-architecture` = "amd64" ]; then
 
20
    HAS_LIB32="yes"
 
21
fi
 
22
 
 
23
case "$1" in
 
24
    install|upgrade)
 
25
 
 
26
    # Attempt to remove a .run file installation of the driver before installing the package
 
27
    if [ -x /usr/bin/nvidia-uninstall ]; then
 
28
        /usr/bin/nvidia-uninstall -s || :
 
29
    fi;
 
30
 
 
31
    # Attempt to stop the nvidia-persistenced process from the currently
 
32
    # installed package.  This is needed to work-around the broken postrm script
 
33
    # introduced in 331.89-0ubuntu3.  Without this, you can't upgrade from, say,
 
34
    # nvidia-331 to nvidia-343 (although you could still upgrade to a newer
 
35
    # nvidia-331 version/revision without error).  For details, see:
 
36
    #   https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-331/+bug/1394348
 
37
    if [ -x /usr/bin/stop-nvidia-persistenced ]; then
 
38
            echo "Stopping previous nvidia-persistenced"
 
39
            /usr/bin/stop-nvidia-persistenced || true
 
40
            echo "Done."
 
41
    fi;
 
42
 
 
43
    # We need to remove diversions from previous versions of the package
 
44
 
 
45
    # clean up from old diversions
 
46
    if [ -d /usr/share/nvidia-glx/diversions ]; then
 
47
        rm -f /usr/lib/libGL.so.1
 
48
        rm -f /usr/lib/libGL.so.1.2
 
49
        
 
50
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/share/nvidia-glx/diversions/libGL.so.1 /usr/lib/libGL.so.1 > /dev/null
 
51
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/share/nvidia-glx/diversions/libGL.so.1.2 /usr/lib/libGL.so.1.2 > /dev/null
 
52
 
 
53
        rm -f /usr/lib/xorg/modules/extensions/libGLcore.a
 
54
        rm -f /usr/lib/xorg/modules/extensions/libglx.a
 
55
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/share/nvidia-glx/diversions/libGLcore.a /usr/lib/xorg/modules/extensions/libGLcore.a > /dev/null
 
56
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/share/nvidia-glx/diversions/libglx.a /usr/lib/xorg/modules/extensions/libglx.a > /dev/null
 
57
 
 
58
        rmdir /usr/share/nvidia-glx/diversions || true;
 
59
        rmdir /usr/share/nvidia-glx || true;
 
60
    fi
 
61
 
 
62
    if [ -d /usr/share/nvidia-glx/diversions-X11R6 ]; then
 
63
 
 
64
        rm -f /usr/X11R6/lib/libGL.so.1
 
65
        rm -f /usr/X11R6/lib/libGL.so.1.2
 
66
        
 
67
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/share/nvidia-glx/diversions-X11R6/libGL.so.1 /usr/X11R6/lib/libGL.so.1 > /dev/null
 
68
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/share/nvidia-glx/diversions-X11R6/libGL.so.1.2 /usr/X11R6/lib/libGL.so.1.2 > /dev/null
 
69
 
 
70
        rmdir /usr/share/nvidia-glx/diversions-X11R6 || true;
 
71
        rmdir /usr/share/nvidia-glx || true;
 
72
    fi
 
73
    # remove X11R6 diversions
 
74
    
 
75
    if dpkg-divert --list /usr/X11R6/lib/libGL.so.1 | grep 'nvidia-glx' > /dev/null ; then
 
76
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/X11R6/lib/nvidia/libGL.so.1.xlibmesa /usr/X11R6/lib/libGL.so.1 > /dev/null
 
77
    fi
 
78
    
 
79
    if dpkg-divert --list /usr/X11R6/lib/libGL.so.1.2 | grep 'nvidia-glx' > /dev/null ; then
 
80
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/X11R6/lib/nvidia/libGL.so.1.2.xlibmesa /usr/X11R6/lib/libGL.so.1.2 > /dev/null
 
81
    fi
 
82
    if dpkg-divert --list /usr/X11R6/lib/modules/extensions/libGLcore.a | grep 'nvidia-glx' > /dev/null ; then
 
83
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/X11R6/lib/nvidia/libGLcore.a.xlibmesa /usr/X11R6/lib/modules/extensions/libGLcore.a > /dev/null
 
84
    fi
 
85
    if dpkg-divert --list /usr/X11R6/lib/modules/extensions/libglx.a | grep 'nvidia-glx' > /dev/null ; then
 
86
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/X11R6/lib/nvidia/libglx.a.xlibmesa /usr/X11R6/lib/modules/extensions/libglx.a > /dev/null
 
87
    fi
 
88
    if dpkg-divert --list /usr/X11R6/lib/modules/extensions/libglx.so | grep 'nvidia-glx' > /dev/null ; then
 
89
        dpkg-divert --remove --rename --package nvidia-glx --divert /usr/X11R6/lib/nvidia/libglx.so.xlibmesa /usr/X11R6/lib/modules/extensions/libglx.so > /dev/null
 
90
    fi
 
91
 
 
92
    # make sure these diversions don't exist anymore
 
93
    if dpkg-divert --list /usr/lib/libGL.so | grep 'nvidia-glx-dev' > /dev/null ; then
 
94
        dpkg-divert --remove --rename --package nvidia-glx-dev --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null || true
 
95
        dpkg-divert --remove --rename --package nvidia-glx-dev-envy --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null || true
 
96
    fi
 
97
    if dpkg-divert --list /usr/lib/libGL.so | grep 'nvidia-glx-177-dev' > /dev/null ; then
 
98
        dpkg-divert --remove --rename --package nvidia-glx-177-dev --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null || true
 
99
    fi
 
100
    if dpkg-divert --list /usr/lib/libGL.so | grep 'nvidia-glx-new-dev' > /dev/null ; then
 
101
        dpkg-divert --remove --rename --package nvidia-glx-new-dev --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null || true
 
102
        dpkg-divert --remove --rename --package nvidia-glx-new-dev-envy --divert /usr/lib/nvidia/libGL.so.xlibmesa /usr/lib/libGL.so > /dev/null || true
 
103
    fi
 
104
    if dpkg-divert --list /usr/lib/libGL.a | grep 'nvidia-glx-dev' > /dev/null ; then
 
105
        dpkg-divert --remove --rename --package nvidia-glx-dev --divert /usr/lib/nvidia/libGL.a.xlibmesa /usr/lib/libGL.a > /dev/null || true
 
106
        dpkg-divert --remove --rename --package nvidia-glx-dev-envy --divert /usr/lib/nvidia/libGL.a.xlibmesa /usr/lib/libGL.a > /dev/null || true
 
107
    fi
 
108
    if dpkg-divert --list /usr/lib/libGL.a | grep 'nvidia-glx-new-dev' > /dev/null ; then
 
109
        dpkg-divert --remove --rename --package nvidia-glx-new-dev --divert /usr/lib/nvidia/libGL.a.xlibmesa /usr/lib/libGL.a > /dev/null || true
 
110
        dpkg-divert --remove --rename --package nvidia-glx-new-dev-envy --divert /usr/lib/nvidia/libGL.a.xlibmesa /usr/lib/libGL.a > /dev/null || true
 
111
    fi
 
112
    if dpkg-divert --list /usr/X11R6/lib/libGL.so | grep 'nvidia-glx-dev' > /dev/null ; then
 
113
        dpkg-divert --remove --rename --package nvidia-glx-dev --divert /usr/X11R6/lib/nvidia/libGL.so.xlibmesa /usr/X11R6/lib/libGL.so > /dev/null || true
 
114
        dpkg-divert --remove --rename --package nvidia-glx-dev-envy --divert /usr/X11R6/lib/nvidia/libGL.so.xlibmesa /usr/X11R6/lib/libGL.so > /dev/null || true
 
115
    fi
 
116
    if dpkg-divert --list /usr/X11R6/lib/libGL.so | grep 'nvidia-glx-new-dev' > /dev/null ; then
 
117
        dpkg-divert --remove --rename --package nvidia-glx-new-dev --divert /usr/X11R6/lib/nvidia/libGL.so.xlibmesa /usr/X11R6/lib/libGL.so > /dev/null || true
 
118
        dpkg-divert --remove --rename --package nvidia-glx-new-dev-envy --divert /usr/X11R6/lib/nvidia/libGL.so.xlibmesa /usr/X11R6/lib/libGL.so > /dev/null || true
 
119
    fi
 
120
    if dpkg-divert --list /usr/X11R6/lib/libGL.so | grep 'nvidia-glx-dev' > /dev/null ; then
 
121
        dpkg-divert --remove --rename --package nvidia-glx-dev --divert /usr/X11R6/lib/nvidia/libGL.a.xlibmesa /usr/X11R6/lib/libGL.a > /dev/null || true
 
122
        dpkg-divert --remove --rename --package nvidia-glx-dev-envy --divert /usr/X11R6/lib/nvidia/libGL.a.xlibmesa /usr/X11R6/lib/libGL.a > /dev/null || true
 
123
    fi
 
124
    if dpkg-divert --list /usr/X11R6/lib/libGL.so | grep 'nvidia-glx-new-dev' > /dev/null ; then
 
125
        dpkg-divert --remove --rename --package nvidia-glx-new-dev --divert /usr/X11R6/lib/nvidia/libGL.a.xlibmesa /usr/X11R6/lib/libGL.a > /dev/null || true
 
126
        dpkg-divert --remove --rename --package nvidia-glx-new-dev-envy --divert /usr/X11R6/lib/nvidia/libGL.a.xlibmesa /usr/X11R6/lib/libGL.a > /dev/null || true
 
127
    fi
 
128
 
 
129
 
 
130
    # Make sure that no diversion is still there
 
131
    set -a "nvidia-glx" "nvidia-glx-new" "nvidia-glx-legacy" "nvidia-glx-envy"\
 
132
            "nvidia-glx-new-envy" "nvidia-glx-legacy-envy" "nvidia-glx-180" \
 
133
            "nvidia-glx-177" "nvidia-glx-173" "nvidia-glx-96" "nvidia-glx-71" \
 
134
            "nvidia-glx-185" "nvidia-glx-190"
 
135
 
 
136
    while [ $# -ge 1 ]; do
 
137
        glxname=$1
 
138
        glxdevname="$glxname-dev"
 
139
    
 
140
        if [ -n "$HAS_LIB32" ]; then
 
141
            #Remove diversions of /usr/lib32/libGL.so -- only for the new name schemes (nvidia-glx-VER)
 
142
            if dpkg-divert --list $glxname | grep "/usr/lib32/libGL.so " > /dev/null ; then
 
143
                rm -f /usr/lib32/libGL.so > /dev/null || true
 
144
                dpkg-divert --remove --rename --package $glxname --divert /usr/lib32/nvidia/libGL.so.xlibmesa /usr/lib32/libGL.so > /dev/null || true
 
145
            fi
 
146
 
 
147
            #Remove diversion of /usr/lib32/libGL.so.1
 
148
            if dpkg-divert --list $glxname | grep /usr/lib32/libGL.so.1 > /dev/null ; then
 
149
                rm -f /usr/lib32/libGL.so.1 > /dev/null || true
 
150
                dpkg-divert --remove --rename --package $glxname --divert /usr/lib32/nvidia/libGL.so.1.xlibmesa /usr/lib32/libGL.so.1 > /dev/null || true
 
151
            fi
 
152
            
 
153
            #Remove diversion of /usr/lib32/libGL.so.1.2
 
154
            if dpkg-divert --list $glxname | grep /usr/lib32/libGL.so.1.2 > /dev/null ; then
 
155
                rm -f /usr/lib32/libGL.so.1.2 > /dev/null || true
 
156
                dpkg-divert --remove --rename --package $glxname --divert /usr/lib32/nvidia/libGL.so.1.2.xlibmesa /usr/lib32/libGL.so.1.2 > /dev/null || true
 
157
            fi
 
158
            
 
159
        fi
 
160
            
 
161
 
 
162
        #Remove diversion of /usr/lib/xorg/modules/extensions/libGLcore.so
 
163
        if dpkg-divert --list $glxname | grep /usr/lib/xorg/modules/extensions/libGLcore.so > /dev/null ; then
 
164
            dpkg-divert --remove --rename --package $glxname --divert /usr/lib/nvidia/libGLcore.so.xlibmesa /usr/lib/xorg/modules/extensions/libGLcore.so > /dev/null || true
 
165
        fi
 
166
 
 
167
        #Remove diversion of /usr/lib/xorg/modules/extensions/libglx.so
 
168
        if dpkg-divert --list $glxname | grep /usr/lib/xorg/modules/extensions/libglx.so > /dev/null ; then
 
169
            rm -f /usr/lib/xorg/modules/extensions/libglx.so > /dev/null || true
 
170
            dpkg-divert --remove --rename --package $glxname --divert /usr/lib/nvidia/libglx.so.xserver-xorg-core /usr/lib/xorg/modules/extensions/libglx.so > /dev/null || true
 
171
        fi
 
172
 
 
173
        #Remove diversion of /usr/lib/libGL.so.1
 
174
        if dpkg-divert --list $glxname | grep "/usr/lib/libGL.so.1 " > /dev/null ; then
 
175
            rm -f /usr/lib/libGL.so.1 > /dev/null || true
 
176
            dpkg-divert --remove --rename --package $glxname --divert /usr/lib/nvidia/libGL.so.1.xlibmesa /usr/lib/libGL.so.1 > /dev/null || true
 
177
        fi
 
178
 
 
179
        #Remove diversion of /usr/lib/libGL.so.1.2
 
180
        if dpkg-divert --list $glxname | grep /usr/lib/libGL.so.1.2 > /dev/null ; then
 
181
            rm -f /usr/lib/libGL.so.1.2 > /dev/null || true
 
182
            dpkg-divert --remove --rename --package $glxname --divert /usr/lib/nvidia/libGL.so.1.2.xlibmesa /usr/lib/libGL.so.1.2 > /dev/null || true
 
183
        fi
 
184
 
 
185
 
 
186
        shift
 
187
    done
 
188
 
 
189
    ;;
 
190
 
 
191
    abort-upgrade)
 
192
    ;;
 
193
 
 
194
    *)
 
195
        echo "preinst called with unknown argument \`$1'" >&2
 
196
        exit 0
 
197
    ;;
 
198
esac
 
199
 
 
200
 
 
201
 
 
202
# dh_installdeb will replace this with shell code automatically
 
203
# generated by other debhelper scripts.
 
204
 
 
205
#DEBHELPER#
 
206
 
 
207
exit 0