[Build-common-hackers] waf.mk and broken fakeroot debian/rules clean call in packaging-only branches.

Emilio Pozuelo Monfort pochu at debian.org
Wed Mar 30 08:27:28 UTC 2011

On 29/03/11 18:42, Krzysztof Klimonda wrote:
> I can only assume that, as the problem seems new to you, the issue of
> d/rules clean not working has never been raised here. So it means that
> either all other maintainers are copying full source to the packaging
> branch for the duration of work, only to remove it before commiting
> changes, or it has always worked this way for other packages, and waf.mk
> does things differently.

It has always worked fine, because historically the clean target has
ignored errors, see e.g. autotools.mk:

	$(if $(cdbs_make_flavors),-rmdir --ignore-fail-on-non-empty debian/stamp-autotools,rm -f debian/stamp-autotools)

	$(if $(call cdbs_streq,$(cdbs_make_curbuilddir),$(DEB_BUILDDIR_$(cdbs_curpkg))),,-rmdir --ignore-fail-on-non-empty $(cdbs_make_curbuilddir))
	$(if $(cdbs_make_flavors),rm -f $(@:makefile-clean%=debian/stamp-autotools%))

or makefile.mk

cleanbuilddir:: makefile-clean
makefile-clean:: $(if $(cdbs_make_flavors),$(cdbs_make_clean_nonstamps))
        $(if $(cdbs_make_flavors),-rmdir --ignore-fail-on-non-empty debian/stamp-makefile-build debian/stamp-makefile-install,rm -f debian/stamp-makefile-build debian/stamp-makefile-install)

        $(if $(DEB_MAKE_CLEAN_TARGET),+-$(DEB_MAKE_INVOKE) -k $(DEB_MAKE_CLEAN_TARGET), at echo "DEB_MAKE_CLEAN_TARGET unset, not running clean")
        $(if $(cdbs_make_flavors),rm -f $(@:makefile-clean%=debian/stamp-makefile-build%) $(@:makefile-clean%=debian/stamp-makefile-install%))

or python-distutils:

$(patsubst %,python-module-clean/%,$(cdbs_python_indep_packages)) :: python-module-clean/%:
        -cd $(DEB_SRCDIR) && \
                $(cdbs_curpythonindepbinary) $(cdbs_python_setup_cmd) clean \

$(patsubst %,python-module-clean/%,$(cdbs_python_arch_packages)) :: python-module-clean/%:
        -for buildver in $(cdbs_curpythonbuildversions); do \
                cd $(CURDIR) && cd $(DEB_SRCDIR) && \
                        $(call cdbs_python_binary,python$$buildver) $(cdbs_python_setup_cmd) clean \
                        $(cdbs_python_clean_args); \

and all the others.

I can't find anything in policy that says clean shouldn't fail if there
are missing files, but I thought it did, given e.g. dpkg source format
1 will ignore removed files when generating the diff.gz. I think waf.mk
should do the same and not fail if some files are missing, just try to
run "-./waf clean" or whatever it has to do, ignoring errors.


More information about the Build-common-hackers mailing list