[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

debian/xsfbs/xsfbs.mk and 3.0 (quilt) source packages



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 to: