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}