Hi, I'm very late to the party, but after reading the entire thread, I'd like to discuss a more specific, but perhaps not uncommon, situation with regard to cleaning and building again:
We have a [still fairly] typical upstream package using Autotools. The tarball includes some built files (e.g. documentation), i.e. make dist builds them (as long as the right tools are installed) and make distclean deletes them. dh_auto_clean by default runs make distclean if such a target exists. But that's not the case until ./configure has been run, because until then, there are no makefiles. So The first time you run debian/rules build, the shipped version of the files will be untouched and used in the final package, but when you then clean and build again, they will be deleted and rebuilt (or the second build fails because of missing build dependencies). Besides building a package twice potentially failing, this can lead to the second build being different from the first. So I'm thinking: 1. Do we generally want dh_auto_build to run make distclean, deleting files that we otherwise wouldn't need to build? dh_autoreconf regenerating configure and Makefile.in is another thing, I think, because those files aren't part of the final binary package, and dh_autoreconf tracks which files are changed so dh_autoreconf_clean can remove them. 2. In my case, I think I want those files (manpages) to be rebuilt already the first time, because the configured ${sysconfdir} is injected into them. But to get them rebuilt, I either need to run make distclean and then ./configure again, or explicitly delete those specific files, neither option being completely elegant. Perhaps I'm missing some better option? 3. But if we do want to build as much as possible from scratch, wouldn't it make some sense to run dh_auto_configure an extra time before dh_auto_clean, to ensure that the latter actually does something (which it otherwise shouldn't have to, when building freshly unpacked source)? -- Magnus Holmgren holmg...@debian.org Debian Developer
signature.asc
Description: This is a digitally signed message part.