dh_auto_clean, autoconf, and building packages twice (was: Potential MBF: packages failing to build twice in a row)

2024-06-23 Thread Magnus Holmgren
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 Holmgrenholmg...@debian.org
Debian Developer 

signature.asc
Description: This is a digitally signed message part.


Re: dh_auto_clean, autoconf, and building packages twice (was: Potential MBF: packages failing to build twice in a row)

2024-06-23 Thread Andrey Rakhmatullin
On Sun, Jun 23, 2024 at 02:06:04PM +0200, Magnus Holmgren wrote:
> 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? 

My autotools knowledge is rusty so I don't know what else except docs is
included here, but docs is a perfect example of a thing that we normally
*want* to rebuild.



-- 
WBR, wRAR


signature.asc
Description: PGP signature