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}

Reply via email to