Hello,

I've been trying to recompile all packages as if we were using the 3.0 (quilt)
source package by default and investigating the related build failures. In
theory all quilt-based packages should _not_ fail but all the
xserver-xorg-* (and a few other X related package) do fail because
they use some custom quilt hackery in debian/xsfbs/xsfbs.mk instead
of the plain /usr/share/quilt/quilt.make.

To reproduce the problem you can do the following:
$ apt-get source xserver-xorg-input-evdev
$ dpkg-source --format="3.0 (quil)" -b xserver-xorg-input-evdev-1.2.0
$ dpkg-source -x xserver-xorg-input-evdev_*.dsc
$ cd xserver-xorg-input-evdev-1.2.0 && debuild -us -uc
[...]
 /usr/bin/fakeroot debian/rules clean
rm -f stampdir/genscripts
rm -f debian/*.config \
              debian/*.postinst \
              debian/*.postrm \
              debian/*.preinst \
              debian/*.prerm
rm -f stampdir/patch
Unapplying patches...nothing to do.
dh_testdir
rm -f .pc patches
rm: cannot remove `.pc': Is a directory
make: *** [xsfclean] Error 1


The explanation: after dpkg-source -x, the quilt series will already have
been applied by dpkg-source, and the .pc directory will already exist.
However xsfbs.mk expect to do all the setup by itself... and believes that
.pc is the symlink that he created to $(STAMP_DIR)/patches/. He fails while
trying to remove the directory. The makefile also expect all patches to be in
"patches/" instead of "debian/patches" and creates a symlink for that. I
changed that so that quilt directly uses debian/patches/ thus removing the need
for the symlink. And instead of checking a quilt internal file
(.pc/applied-patches) I changed it to use "quilt applied".

Please find attached a suggested patch. I'd like you to apply it on all your
copies of xsfbs.mk in order to ease the transition to the new source package
format in lenny+1.

For reference here are the X related packages where I saw those failures:
xdm_1:1.1.7-1_sid32-gcc43.buildlog
xfonts-encodings_1:1.0.2-3_sid32-gcc43.buildlog
xfree86-driver-synaptics_0.14.7~git20070706-2_sid32-gcc43.buildlog
xft_2.1.12-2_sid32-gcc43.buildlog
xinit_1.0.8-1_sid32-gcc43.buildlog
xorg-docs_1:1.4-2_sid32-gcc43.buildlog
xserver-xorg-input-evdev_1:1.2.0-1_sid32-gcc43.buildlog
xserver-xorg-input-joystick_1:1.3.2-1_sid32-gcc43.buildlog
xserver-xorg-input-keyboard_1:1.2.2-3_sid32-gcc43.buildlog
xserver-xorg-input-mouse_1:1.2.3-2_sid32-gcc43.buildlog
xserver-xorg-video-apm_1:1.1.1-10_sid32-gcc43.buildlog
xserver-xorg-video-ark_1:0.6.0-9_sid32-gcc43.buildlog
xserver-xorg-video-ati_1:6.8.0-1_sid32-gcc43.buildlog
xserver-xorg-video-chips_1:1.1.1-9_sid32-gcc43.buildlog
xserver-xorg-video-cirrus_1:1.1.0-8_sid32-gcc43.buildlog
xserver-xorg-video-cyrix_1:1.1.0-8_sid32-gcc43.buildlog
xserver-xorg-video-fbdev_1:0.3.1-4_sid32-gcc43.buildlog
xserver-xorg-video-glint_1:1.1.1-8_sid32-gcc43.buildlog
xserver-xorg-video-i128_1:1.2.1-4_sid32-gcc43.buildlog
xserver-xorg-video-i740_1:1.1.0-7_sid32-gcc43.buildlog
xserver-xorg-video-imstt_1:1.1.0-7_sid32-gcc43.buildlog
xserver-xorg-video-mga_1:1.4.8.dfsg.1-1_sid32-gcc43.buildlog
xserver-xorg-video-neomagic_1:1.1.1-8_sid32-gcc43.buildlog
xserver-xorg-video-newport_1:0.2.1-4_sid32-gcc43.buildlog
xserver-xorg-video-nv_1:2.1.9-1_sid32-gcc43.buildlog
xserver-xorg-video-radeonhd_1.2.1-2_sid32-gcc43.buildlog
xserver-xorg-video-s3_1:0.5.0-4_sid32-gcc43.buildlog
xserver-xorg-video-s3virge_1:1.9.1-7_sid32-gcc43.buildlog
xserver-xorg-video-siliconmotion_1:1.5.1-3_sid32-gcc43.buildlog
xserver-xorg-video-sis_1:0.9.3-6_sid32-gcc43.buildlog
xserver-xorg-video-tdfx_1:1.3.0-6_sid32-gcc43.buildlog
xserver-xorg-video-tga_1:1.1.0-9_sid32-gcc43.buildlog
xserver-xorg-video-trident_1:1.2.4-1_sid32-gcc43.buildlog
xserver-xorg-video-tseng_1:1.1.1-4_sid32-gcc43.buildlog
xserver-xorg-video-voodoo_1:1.1.1-5_sid32-gcc43.buildlog
xtrans_1.2-1_sid32-gcc43.buildlog

Thanks for your help.
-- 
Raphaël Hertzog

Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/
diff -u xserver-xorg-input-evdev-1.2.0/debian/xsfbs/xsfbs.mk xserver-xorg-input-evdev-1.2.0/debian/xsfbs/xsfbs.mk
--- xserver-xorg-input-evdev-1.2.0/debian/xsfbs/xsfbs.mk
+++ xserver-xorg-input-evdev-1.2.0/debian/xsfbs/xsfbs.mk
@@ -21,10 +21,8 @@
 # Pass $(DH_OPTIONS) into the environment for debhelper's benefit.
 export DH_OPTIONS
 
-# force quilt to not use ~/.quiltrc
-QUILT = quilt --quiltrc /dev/null
-# force QUILT_PATCHES to the default in case it is exported in the environment
-QUILT_PATCHES = patches/
+# force quilt to not use ~/.quiltrc and to use debian/patches
+QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null
 
 # Set up parameters for the upstream build environment.
 
@@ -121,19 +119,11 @@
 # Set up the package build directory as quilt expects to find it.
 .PHONY: prepare
 stampdir_targets+=prepare
-prepare: $(STAMP_DIR)/genscripts $(STAMP_DIR)/prepare $(STAMP_DIR)/patches $(STAMP_DIR)/log
+prepare: $(STAMP_DIR)/genscripts $(STAMP_DIR)/prepare $(STAMP_DIR)/log
 $(STAMP_DIR)/prepare: $(STAMP_DIR)/stampdir
-	if [ ! -e $(STAMP_DIR)/patches ]; then \
-		mkdir $(STAMP_DIR)/patches; \
-		ln -s $(STAMP_DIR)/patches .pc; \
-		echo 2 >$(STAMP_DIR)/patches/.version; \
-	fi; \
 	if [ ! -e $(STAMP_DIR)/log ]; then \
 		mkdir $(STAMP_DIR)/log; \
 	fi; \
-	if [ -e debian/patches ] && [ ! -e patches ]; then \
-		ln -s debian/patches patches; \
-	fi; \
 	>$@
 
 # Apply all patches to the upstream source.
@@ -162,10 +152,10 @@
 
 # Revert all patches to the upstream source.
 .PHONY: unpatch
-unpatch:
+unpatch: $(STAMP_DIR)/prepare
 	rm -f $(STAMP_DIR)/patch
 	@echo -n "Unapplying patches..."; \
-	if [ -e $(STAMP_DIR)/patches/applied-patches ]; then \
+	if $(QUILT) applied >/dev/null 2>/dev/null; then \
 	  if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \
 	    cat $(STAMP_DIR)/log/unpatch; \
 	    echo "successful."; \
@@ -192,7 +182,7 @@
 .PHONY: xsfclean
 xsfclean: cleanscripts unpatch
 	dh_testdir
-	rm -f .pc patches
+	rm -rf .pc
 	rm -rf $(STAMP_DIR) $(SOURCE_DIR)
 	rm -rf imports
 	dh_clean debian/shlibs.local \

Reply via email to