Package: nvidia-graphics-drivers
Version: 185.18.14-1
Severity: normal
Tags: patch
Hi,
here comes a patch that improves handling of generated files:
* do not regenerate debian/control during build (using code inspired by
and stolen from linux-support)
* no longer ship generated files in the source package, they are
regenerated during build anyway
* no more messsing around with debian.binary/changelog
After applying the patch, the following changes have to be made:
* rename debian/control.in to debian/control.gen.in
* remove all generated files (also from svn repository)
except debian/control (removing everything that's missing after
running debian/rules clean should be fine)
* there is a new generated file debian/control.md5sum (generated and
updated during debian/rules clean) that needs to be added to the svn
repository
debian/rules clean will now regenerate debian/control and
debian/control.md5sum (if neccessary) and the build will bomb if
debian/control{,.md5sum} is not up-to-date
Andreas
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (800, 'testing'), (800, 'stable'), (600, 'unstable'), (130,
'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.28-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Index: debian/rules
===================================================================
--- debian/rules (revision 758)
+++ debian/rules (working copy)
@@ -27,14 +27,15 @@
dirname_x86:=$(shell sh debian/upstream_info DIRNAME_X86)
dirname_x86_64:=$(shell sh debian/upstream_info DIRNAME_X86_64)
-AUTOGEN=debian/nvidia-kernel-source.README.Debian debian/control \
+AUTOGEN=debian/nvidia-kernel-source.README.Debian \
debian/copyright debian/nvidia-glx.links debian/nvidia-glx-dev.links \
debian/nvidia-libvdpau.links debian/nvidia-libvdpau-ia32.links \
debian/nvidia-glx.override debian/nvidia-glx.docs debian/nvidia-glx.examples \
debian/nvidia-libvdpau.docs \
debian/nvidia-glx.postrm debian/nvidia-glx.init \
debian/nvidia-glx-ia32.override debian/nvidia-glx-ia32.links \
-debian/nvidia-kernel-source.docs debian/nvidia-glx-dev.preinst
+debian/nvidia-kernel-source.docs debian/nvidia-glx-dev.preinst \
+debian.binary/changelog
@@ -51,12 +52,12 @@
INSTALL_PROGRAM += -s
endif
-version-change: version-clean $(AUTOGEN) clean
+version-change: version-clean debian/control $(AUTOGEN) clean
configure: configure-stamp
.PHONY: configure-stamp
-configure-stamp: version-clean $(AUTOGEN)
+configure-stamp: version-clean debian/control $(AUTOGEN)
dh_testdir
# extract both so we can fetch the kernel object code for both arches
./${filename_x86} --extract-only
@@ -71,11 +72,11 @@
# done; \
fi
- sed 's/^nvidia-graphics-drivers/nvidia-kernel/g' debian/changelog > debian.binary/changelog
+ touch configure-stamp
+debian.binary/changelog: debian/changelog
+ sed 's/^nvidia-graphics-drivers/nvidia-kernel/g' $< > $@
- touch configure-stamp
-
.PHONY: build
build: configure-stamp build-stamp
@@ -87,7 +88,7 @@
build-kernel:
.PHONY: build-kernel-stamp
-build-kernel-stamp:
+build-kernel-stamp: debian.binary/changelog
dh_testroot
dh_testdir
@@ -133,7 +134,7 @@
touch build-kernel-stamp
.PHONY: clean
-clean:
+clean: version-clean
dh_testdir
dh_testroot
rm -f build-stamp build-kernel-stamp configure-stamp
@@ -142,7 +143,10 @@
rm -fr $(dirname_x86) $(dirname_x86_64) nvidia-kernel.tar.bz2
rm -fr debian/temp
+ $(MAKE) -f debian/rules debian/control
+ rm -f debian/control.gen
+
.PHONY: install
install: build-stamp build-kernel-stamp
dh_testdir
@@ -308,6 +312,35 @@
< $< > $@
+__BINNMU := $(shell dpkg-parsechangelog | sed -ne 's,^Version: .*+b\(.*\)$$,\1,p')
+
+CONTROL_FILES += debian/changelog debian/control.gen.in debian/rules debian/upstream_info
+debian/control: $(CONTROL_FILES)
+ifeq ($(wildcard debian/control.md5sum),)
+ $(MAKE) -f debian/rules debian/control-real
+else ifeq ($(__BINNMU),)
+ md5sum --check debian/control.md5sum --status || \
+ $(MAKE) -f debian/rules debian/control-real
+else
+ grep -v debian/changelog debian/control.md5sum | md5sum --check - --status || \
+ $(MAKE) -f debian/rules debian/control-real
+endif
+
+debian/control-real: $(CONTROL_FILES)
+ rm -f debian/control.gen
+ $(MAKE) -f debian/rules debian/control.gen
+ mv debian/control.gen debian/control
+ md5sum debian/control $^ > debian/control.md5sum
+ @echo
+ @echo This target is made to fail intentionally, to make sure
+ @echo that it is NEVER run during the automated build. Please
+ @echo ignore the following error, the debian/control file has
+ @echo been generated SUCCESSFULLY.
+ @echo
+ exit 1
+
+
+
# Build architecture dependant packages using the common target.
.PHONY: binary-arch
binary-arch: build-stamp build-kernel-stamp install
@@ -318,5 +351,11 @@
.PHONY: version-clean
version-clean:
- rm -f ${AUTOGEN} || true
-
+ rm -f ${AUTOGEN} || true
+
+.PHONY: maintainer-clean
+maintainer-clean: clean
+ rm -f debian/control debian/control.md5sum
+
+.PHONY: autogen
+autogen: debian/control ${AUTOGEN}