File: rules

package info (click to toggle)
nvidia-graphics-drivers 195.36.31-6squeeze2
  • links: PTS, VCS
  • area: non-free
  • in suites: squeeze
  • size: 65,936 kB
  • ctags: 141
  • sloc: sh: 234,580; makefile: 404; ansic: 192; perl: 18
file content (273 lines) | stat: -rwxr-xr-x 10,189 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

DEB_HOST_ARCH		?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

include debian/rules.defs
version			 = $(NVIDIA_RELEASE)
legacy			 = $(if $(NVIDIA_LEGACY),-legacy-$(NVIDIA_LEGACY)xx)
legacy_description	 = $(if $(NVIDIA_LEGACY), ($(NVIDIA_LEGACY)xx legacy version))
perfkit			 =
watch_pattern		 = $(or $(WATCH_PATTERN),$(if $(NVIDIA_LEGACY),$(NVIDIA_LEGACY)\.[\d\.\-]+),[\d\.\-]+)
filename_x86		 = $(NVIDIA_FILENAME_X86)
filename_x86_64		 = $(NVIDIA_FILENAME_X86_64)
dirname_x86		 = $(NVIDIA_DIRNAME_X86)
dirname_x86_64		 = $(NVIDIA_DIRNAME_X86_64)

ALL_CONTROL	:= $(wildcard debian/nvidia-glx* debian/libgl1-nvidia* debian/nvidia-kernel*)
LEGACY_CONTROL	:= $(wildcard debian/nvidia-glx$(legacy)* debian/libgl1-nvidia$(legacy)* debian/nvidia-kernel$(legacy)*)
RENAME_CONTROL	 = $(filter-out $(LEGACY_CONTROL),$(ALL_CONTROL))
RENAMED_CONTROL	 = $(patsubst debian/nvidia-glx%,debian/nvidia-glx$(legacy)%,\
			$(patsubst debian/libgl1-nvidia%,debian/libgl1-nvidia$(legacy)%,\
			$(patsubst debian/nvidia-kernel%,debian/nvidia-kernel$(legacy)%,\
				$(RENAME_CONTROL))))
TEMPLATES	:= $(wildcard debian/*.in debian/module/debian/*.in)
AUTOGEN		+= $(patsubst %.in,%,$(TEMPLATES))
AUTOGEN		+= debian/module/debian/changelog
AUTOGEN		+= $(patsubst %.in,%,$(RENAMED_CONTROL))
AUTOKEEP	 = debian/watch
AUTOCLEAN	 = $(filter-out $(AUTOKEEP),$(AUTOGEN))

module_source	 = debian/nvidia-kernel$(legacy)-source/usr/src/modules/nvidia-kernel$(legacy)
module_tbz	 = $(subst /modules/,/,$(module_source)).tar.bz2
dkms_source	 = debian/nvidia-kernel$(legacy)-dkms/usr/src/nvidia-$(version)

.PHONY: autogen prepare
autogen: $(AUTOGEN)
prepare: autogen unpack-stamp nvidia.ids


unpack-stamp: ${filename_x86} ${filename_x86_64}
	dh_testdir
	# extract both so we can fetch the kernel object code for both arches
	sh ${filename_x86} --extract-only
	sh ${filename_x86_64} --extract-only
	ln -s ${dirname_x86} NVIDIA-Linux-i386
	ln -s ${dirname_x86_64} NVIDIA-Linux-amd64
	ln -s NVIDIA-Linux-$(DEB_HOST_ARCH) NVIDIA-Linux
	test -d NVIDIA-Linux-i386/usr || \
		$(MAKE) -C NVIDIA-Linux-i386 -f ../debian/restore-upstream-directory-structure
	test -d NVIDIA-Linux-amd64/usr || \
		$(MAKE) -C NVIDIA-Linux-amd64 -f ../debian/restore-upstream-directory-structure
	test -f NVIDIA-Linux/usr/share/doc/README.txt || \
		mv NVIDIA-Linux/usr/share/doc/README NVIDIA-Linux/usr/share/doc/README.txt
	ls -al
	touch $@

nv-kernel.ids: unpack-stamp
	sh debian/extract-pci-ids.sh NVIDIA-Linux/usr/src/nv/nv-kernel.o \
		| tr a-f A-F | sort -u > $@
	@set -e -x ; \
	if ! cmp -s debian/nv-kernel.ids nv-kernel.ids ; then \
		diff -u debian/nv-kernel.ids nv-kernel.ids || true ; \
		: "*** Supported PCI IDs have changed. See diff above. Aborting. ***"; \
		exit 1 ; \
	fi

nvidia.ids: nv-kernel.ids
	cp $< $@

.PHONY: binary binary-arch binary-indep build clean install
binary binary-arch binary-indep build clean install:
	dh $@

override_dh_auto_clean:
	rm -f NVIDIA-Linux-i386 NVIDIA-Linux-amd64 NVIDIA-Linux
	rm -fr $(dirname_x86) $(dirname_x86_64)
	rm -fr debian/temp
	rm -fr kernel-source-tree
	rm -f nvidia.ids nv-kernel.ids pci.ids.nvidia*

override_dh_clean:
	dh_clean
	rm -f $(AUTOCLEAN)
	$(MAKE) -f debian/rules $(AUTOKEEP)

override_dh_auto_configure: prepare

# Build two kernel module source tarballs for use with
#  - module-assistant and make-kpkg
#  - dkms
.PHONY: install-into-tmp build-kernel-source-tree build-kernel-dkms-tree kernel-source-tree
override_dh_auto_install: install-into-tmp build-kernel-source-tree build-kernel-dkms-tree

install-into-tmp:
	# "Install" into debian/tmp.
	cp -al NVIDIA-Linux/ debian/tmp

	# Create xorg.conf.sample
	test ! -f debian/tmp/usr/share/doc/XF86Config.sample || \
	sed \
	    -e 's/XF86Config(4\/5)/xorg.conf(5)/g' \
	    -e 's/XF86Config/xorg.conf/g' \
	    -e 's/XFree86/Xorg/g' \
	    < debian/tmp/usr/share/doc/XF86Config.sample \
	    > debian/tmp/usr/share/doc/xorg.conf.sample

build-kernel-source-tree: install-into-tmp
	# Build the nvidia-kernel-source tree.
	mkdir -p $(module_source)
	mv debian/tmp/usr/src/nv/* $(module_source)/
	# This copy of the changelog is going to be installed into the module
	# binary packages.
	cp -a debian/tmp/usr/share/doc/NVIDIA_Changelog $(module_source)/

	# We don't want these makefiles that don't work with kbuild.
	rm $(module_source)/makefile
	rm $(module_source)/Makefile.nvidia

	# We want both 32 and 64 bit versions of nv-kernel.o.  Do not use a
	# name matching *.o to prevent accidental deletion by some clean
	# target.
	cp -a NVIDIA-Linux-i386/usr/src/nv/nv-kernel.o \
	    $(module_source)/nv-kernel.o.i386
	cp -a NVIDIA-Linux-amd64/usr/src/nv/nv-kernel.o \
	    $(module_source)/nv-kernel.o.x86_64
	rm -f $(module_source)/nv-kernel.o

	# Install a debian/ tree and new conftest files that work purely
	# with kbuild and don't require root into the module package.
	cp -a debian/module/* $(module_source)/
	cp -a debian/copyright $(module_source)/debian/
	cp -a debian/bug-script $(module_source)/debian/
	cp -a debian/bug-control $(module_source)/debian/

	# Fix permissions.
	chmod -R a-sx,u=rwX,go=rX $(module_source)/../..
	chmod a+x $(module_source)/debian/rules
	chmod a+x $(module_source)/conftest.sh

	# Build the tarball.
	tar cfj $(module_tbz) \
	    --owner=root --group=src -C $(module_source)/../.. \
	    --exclude '*.in' --exclude '.svn' modules
	tar tfvj $(module_tbz)

build-kernel-dkms-tree: build-kernel-source-tree
	# Use the nvidia-kernel-source source to create the DKMS tree.
	mkdir -p $(dir $(dkms_source))
	mv $(module_source) $(dkms_source)
	rmdir $(dir $(module_source))
	cd $(dkms_source) \
	    && QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null push -a || test $$? = 2 \
	    && rm -rf .pc debian
	ls -la $(dkms_source)
	dh_dkms -V $(version)

# This target is not used by the package build process.  You can use it if
# you want to work with the patches that get applied to the module source.
kernel-source-tree: prepare build-kernel-source-tree
	rm -rf $@
	cp -a $(module_source) $@
	cd $@ && QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null push -a || test $$? = 2

override_dh_install:
	dh_install --list-missing

override_dh_installchangelogs:
	dh_installchangelogs debian/tmp/usr/share/doc/NVIDIA_Changelog

override_dh_bugfiles:
	dh_bugfiles -A

override_dh_makeshlibs:
	dh_makeshlibs -Xvdpau/libvdpau_nvidia.so -Xtls/libnvidia-tls.so
	# Redirect shlibs for libGL.so.1 to libgl1-mesa-glx | libgl1.
	test ! -d debian/libgl1-nvidia$(legacy)-glx || \
		sed -i -e '/^libGL 1 /s/.*/libGL 1 libgl1-mesa-glx | libgl1/' debian/libgl1-nvidia$(legacy)-glx/DEBIAN/shlibs
	test ! -d debian/libgl1-nvidia$(legacy)-glx-ia32 || \
		sed -i -e '/^libGL 1 /s/.*/libGL 1 ia32-libs (>= 20090804)/' debian/libgl1-nvidia$(legacy)-glx-ia32/DEBIAN/shlibs
	# Remove libGL.so from symbols files in order not to override our special shlibs files.
	test ! -d debian/libgl1-nvidia$(legacy)-glx || \
		sed -i -e '/^libGL\.so/,/^lib/{/^libGL\.so\|^ /d}' debian/libgl1-nvidia$(legacy)-glx/DEBIAN/symbols
	test ! -d debian/libgl1-nvidia$(legacy)-glx-ia32 || \
		sed -i -e '/^libGL\.so/,/^lib/{/^libGL\.so\|^ /d}' debian/libgl1-nvidia$(legacy)-glx-ia32/DEBIAN/symbols

override_dh_gencontrol:
	dh_gencontrol -- -V'nvidia:Version=$(version)' -V'nvidia:Legacy=$(legacy)' \
		-V'nvidia:LegacyDesc=$(legacy_description)' -V'nvidia:Perfkit=$(perfkit)' \
		-Vnvidia:Models="`cat debian/control.models`"

# Do not run dh_strip here.  The NVIDIA license says:
#
#     2.1.2 Linux/FreeBSD Exception.  Notwithstanding the foregoing terms of
#     Section 2.1.1, SOFTWARE designed exclusively for use on the Linux or
#     FreeBSD operating systems, or other operating systems derived from the
#     source code to these operating systems, may be copied and
#     redistributed, provided that the binary files thereof are not modified
#     in any way (except for unzipping of compressed files).
#
# Stripping the binary modules would constitute modifying the binary files
# in a way other than unzipping of compressed files.
override_dh_strip:


# Generating control files
%::	%.in debian/rules.defs
	perl -p \
	-e 's{#VERSION#}{$(version)}g;' \
	-e 's{#LEGACY#}{$(legacy)}g;' \
	-e 's{#!i386#}{$(if $(filter i386,$(DEB_HOST_ARCH)),#)}g;' \
	-e 's{#!amd64#}{$(if $(filter amd64,$(DEB_HOST_ARCH)),#)}g;' \
	-e 's{#WATCH_PATTERN#}{$(subst \,\\,$(watch_pattern))}g;' \
	< $< > $@

debian/module/debian/changelog: debian/changelog
	sed '1s/^nvidia-graphics-drivers/nvidia-kernel/g' $< > $@

# only invoked manually
%.txt: %.list
	cat $< \
	| sed -e 's/^10DE.... *//; /^$$/d' \
	| uniq \
	| sed -e 's/ /#/g; s/#*$$/,/; $$ s/,$$/./' \
	| ( tr '\n' ' '; echo ) \
	| fold -s -w 78 \
	| sed -e 's/#/ /g; s/ *$$//' > $@

# only invoked manually
pci.ids.nvidia: /usr/share/misc/pci.ids
	sed -nr '/^10de/,/^10df/ { /^\t\t/d; /\t/ { s/  (.*) \[(.*)\]$$/  \2 [\1]/; s/^\t/10de/; p} }' $< > $@.tmp
	cut -c 1-8 $@.tmp | tr a-f A-F > $@.tmp1
	cut -c 9- $@.tmp | paste -d '' $@.tmp1 - > $@
	$(RM) $@.tmp $@.tmp1

# only invoked manually
%.names: %.ids pci.ids.nvidia
	cat $< | \
	while read id ; do \
		grep ^$$id pci.ids.nvidia || echo $$id ; \
	done > $@

# Renaming control files for legacy packaging
ifneq (,$(legacy))
nvidia-glx$(legacy)%: nvidia-glx%
	cp -a $< $@

libgl1-nvidia$(legacy)%: libgl1-nvidia%
	cp -a $< $@

nvidia-kernel$(legacy)%: nvidia-kernel%
	cp -a $< $@
endif


.PHONY: get-orig-source
get-orig-source:
	rm -rf get-orig-source || true
	mkdir get-orig-source
	uscan --no-symlink --download-current-version --pasv \
	    --destdir get-orig-source
	test `ls get-orig-source/* | wc -l` = 2  # we need exactly 2 downloaded files
	@set -e -x ; \
	    cd get-orig-source ; \
	    newversion=$$(ls *-x86-*.run | sed -e 's/.*-\([0-9.]*\)\(-.*\)\?\.run/\1/') ; \
	    mkdir nvidia-graphics-drivers-$${newversion}.orig ; \
	    mv *.run nvidia-graphics-drivers-$${newversion}.orig/ ; \
	    chmod 0755 nvidia-graphics-drivers-$${newversion}.orig/* ; \
	    tar cfvz ../nvidia-graphics-drivers$(legacy)_$$newversion.orig.tar.gz \
		--owner=root --group=src \
		nvidia-graphics-drivers-$${newversion}.orig
	rm -rf get-orig-source