[Build-common-hackers] Bug#521711: cdbs: Clean target is misordered when using cmake class.
Raúl Sánchez Siles
rasasi78 at gmail.com
Sun Mar 29 16:25:25 UTC 2009
Package: cdbs
Version: 0.4.54
Severity: normal
When calling clean target, the clean sequence looks wrong. This is an except:
---8<-----
fakeroot debian/rules clean
test -x debian/rules
test "`id -u`" = 0
rmdir obj-x86_64-linux-gnu
rmdir: failed to remove «obj-x86_64-linux-gnu»: No existe el fichero o el
directorio
make: [cleanbuilddir] Error 1 (no tiene efecto)
rm -rf obj-x86_64-linux-gnu
/usr/bin/make -C obj-x86_64-linux-gnu -k clean
make: *** obj-x86_64-linux-gnu: No existe el fichero o el directorio. Alto.
make: [makefile-clean] Error 2 (no tiene efecto)
rm -f debian/stamp-makefile-build
dh_clean
/usr/bin/make -f debian/rules reverse-config
------->8-----
In my case the rules file states:
include /usr/share/pkg-kde-tools/makefiles/1/cdbs/kde.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/patchsys-quilt.mk
Where kde.mk basically includes cmake class.
After having examined the cdbs sources, i found clean target to be defined
in buildcore.mk like this:
----(buildcore.mk)----
clean:: testdir testroot cleanbuilddir reverse-config
cleanbuilddir:: $(patsubst %,cleanbuilddir/%,$(DEB_ALL_PACKAGES))
-$(if $(call cdbs_streq,$(DEB_BUILDDIR),$(DEB_SRCDIR)),,rmdir
$(DEB_BUILDDIR))
----(buildcore.mk)----
Whereas in cmake.mk:
----(cmake.mk)----
cleanbuilddir::
-$(if $(call cdbs_streq,$(DEB_BUILDDIR),$(DEB_SRCDIR)),,rm -rf
$(DEB_BUILDDIR))
----(cmake.mk)----
Also cmake class include makefile class, makefile.mk which defines:
-------(makefile.mk)------------
clean:: makefile-clean
makefile-clean::
$(if $(DEB_MAKE_CLEAN_TARGET),+-$(DEB_MAKE_INVOKE) -k
$(DEB_MAKE_CLEAN_TARGET), at echo "DEB_MAKE_CLEAN_TARGET unset, not running
clean")
rm -f debian/stamp-makefile-build
-------(makefile.mk)------------
So what's happening is that makefile.mk makefile-clean target is being added
to clean target
and this target is being called after cleanbuilddir, unfortunately too late.
IMHO, makefile-clean
should be invoked before cleanbuilddir, or as the first action of
cleanbuilddir
I'm not sure how to proceed in this case, because I don¡'t think it's
feasible redefining clean target in buildcore.mk
A possible solution would be redifining cleanbuilddir in cmake.mk like this:
cleanbuilddir:: makefile-clean
-$(if $(call cdbs_streq,$(DEB_BUILDDIR),$(DEB_SRCDIR)),,rm -rf
$(DEB_BUILDDIR))
Not sure is this is sensible though. Hope you have better ideas.
Regards,
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (900, 'unstable'), (500, 'testing'), (100, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.29-toi3head (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=es_ES.UTF-8, LC_CTYPE=es_ES.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages cdbs depends on:
ii debhelper 7.2.7 helper programs for debian/rules
Versions of packages cdbs recommends:
ii autotools-dev 20080123.2 Update infrastructure for config.
{
Versions of packages cdbs suggests:
ii devscripts 2.10.47 scripts to make the life of a
Debi
pn doc-base <none> (no description available)
-- no debconf information
More information about the Build-common-hackers
mailing list