diff mbox series

[1/2] progs: autoconf fails during debian package builds

Message ID 20230119233906.2055062-2-david@fromorbit.com (mailing list archive)
State Accepted
Headers show
Series xfsprogs: fix libtoolize issues | expand

Commit Message

Dave Chinner Jan. 19, 2023, 11:39 p.m. UTC
From: Dave Chinner <dchinner@redhat.com>

For some reason, a current debian testing build system will fail to
build debian packages because the build environment is not correctly
detecting that libtoolize needs the "-i" parameter to copy in the
files needed by autoconf.

My build scripts run "make -j 16 realclean; make -j 16 deb", and the
second step is failing immediately with:

libtoolize -c `libtoolize -n -i >/dev/null 2>/dev/null && echo -i` -f
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
cp include/install-sh .
aclocal -I m4
autoconf
./configure $LOCAL_CONFIGURE_OPTIONS
configure: error: cannot find required auxiliary files: config.guess config.sub
make: *** [Makefile:131: include/builddefs] Error 1

If I run 'make realclean; make deb' from the command line, the
package build runs to completion.  I have not been able to work out
why the initial build fails, but then succeeds after a 'make
realclean' has been run, and I don't feel like spending hours
running down this rabbit hole.

This conditional "-i" flag detection was added back in *2009* when
default libtoolize behaviour was changed to not copy the config
files into the build area, and the "-i" flag was added to provide
that behaviour. It is detecting that the "-i" flag is needed that is
now failing, but it is most definitely still needed.

Rather than ispending lots of time trying to understand this and
then making the detection more complex, just use the "-i" flag
unconditionally and require any userspace that this now breaks on to
upgrade their 15+ year old version of libtoolize something a little
more modern.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
 Makefile | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

Comments

Carlos Maiolino Jan. 20, 2023, 2:15 p.m. UTC | #1
On Fri, Jan 20, 2023 at 10:39:05AM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
> 
> For some reason, a current debian testing build system will fail to
> build debian packages because the build environment is not correctly
> detecting that libtoolize needs the "-i" parameter to copy in the
> files needed by autoconf.
> 
> My build scripts run "make -j 16 realclean; make -j 16 deb", and the
> second step is failing immediately with:
> 
> libtoolize -c `libtoolize -n -i >/dev/null 2>/dev/null && echo -i` -f
> libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'.
> libtoolize: copying file './ltmain.sh'
> libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
> libtoolize: copying file 'm4/libtool.m4'
> libtoolize: copying file 'm4/ltoptions.m4'
> libtoolize: copying file 'm4/ltsugar.m4'
> libtoolize: copying file 'm4/ltversion.m4'
> libtoolize: copying file 'm4/lt~obsolete.m4'
> libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
> cp include/install-sh .
> aclocal -I m4
> autoconf
> ./configure $LOCAL_CONFIGURE_OPTIONS
> configure: error: cannot find required auxiliary files: config.guess config.sub
> make: *** [Makefile:131: include/builddefs] Error 1
> 
> If I run 'make realclean; make deb' from the command line, the
> package build runs to completion.  I have not been able to work out
> why the initial build fails, but then succeeds after a 'make
> realclean' has been run, and I don't feel like spending hours
> running down this rabbit hole.
> 
> This conditional "-i" flag detection was added back in *2009* when
> default libtoolize behaviour was changed to not copy the config
> files into the build area, and the "-i" flag was added to provide
> that behaviour. It is detecting that the "-i" flag is needed that is
> now failing, but it is most definitely still needed.
> 
> Rather than ispending lots of time trying to understand this and
> then making the detection more complex, just use the "-i" flag
> unconditionally and require any userspace that this now breaks on to
> upgrade their 15+ year old version of libtoolize something a little
> more modern.
> 
> Signed-off-by: Dave Chinner <dchinner@redhat.com>

Seems fair enough.
It's still working on debian 11 stable, I'm curious to understand what breaks
the detection of -i argument for libtoolize, I'm gonna give it a try on testing.

Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
> ---
>  Makefile | 8 +-------
>  1 file changed, 1 insertion(+), 7 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 0edc2700933d..c8455a9e665f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -115,14 +115,8 @@ else
>  clean:	# if configure hasn't run, nothing to clean
>  endif
> 
> -
> -# Recent versions of libtool require the -i option for copying auxiliary
> -# files (config.sub, config.guess, install-sh, ltmain.sh), while older
> -# versions will copy those files anyway, and don't understand -i.
> -LIBTOOLIZE_INSTALL = `$(LIBTOOLIZE_BIN) -n -i >/dev/null 2>/dev/null && echo -i`
> -
>  configure: configure.ac
> -	$(LIBTOOLIZE_BIN) -c $(LIBTOOLIZE_INSTALL) -f
> +	$(LIBTOOLIZE_BIN) -c -i -f
>  	cp include/install-sh .
>  	aclocal -I m4
>  	autoconf
> --
> 2.39.0
>
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index 0edc2700933d..c8455a9e665f 100644
--- a/Makefile
+++ b/Makefile
@@ -115,14 +115,8 @@  else
 clean:	# if configure hasn't run, nothing to clean
 endif
 
-
-# Recent versions of libtool require the -i option for copying auxiliary
-# files (config.sub, config.guess, install-sh, ltmain.sh), while older
-# versions will copy those files anyway, and don't understand -i.
-LIBTOOLIZE_INSTALL = `$(LIBTOOLIZE_BIN) -n -i >/dev/null 2>/dev/null && echo -i`
-
 configure: configure.ac
-	$(LIBTOOLIZE_BIN) -c $(LIBTOOLIZE_INSTALL) -f
+	$(LIBTOOLIZE_BIN) -c -i -f
 	cp include/install-sh .
 	aclocal -I m4
 	autoconf