diff mbox

squid: fix automake breakage

Message ID 1420679367-24134-1-git-send-email-gustavo@zacarias.com.ar
State Accepted
Headers show

Commit Message

Gustavo Zacarias Jan. 8, 2015, 1:09 a.m. UTC
Squid bundles a copy of libltdl (from libtool) which autoreconfigures on
its own.
For some odd reason when automake was bumped to version 1.15 and if the host
system has another automake version, for example 1.14, the ACLOCAL and
AUTOMAKE variables don't expand properly when the internal autoreconf is
triggered hence calling the missing handler which in turn tries to use
an incorrect automake version.
The solution is to pass unexpanded ACLOCAL and AUTOMAKE variables that
defer the evaluation to a later moment and avoid the issue.

Fixes:
http://autobuild.buildroot.net/results/73f/73fcffafbea320f8c64378bbe8a96922b5e7c6b5/

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
 package/squid/squid.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Thomas Petazzoni Jan. 8, 2015, 8:28 a.m. UTC | #1
Dear Gustavo Zacarias,

On Wed,  7 Jan 2015 22:09:27 -0300, Gustavo Zacarias wrote:
> Squid bundles a copy of libltdl (from libtool) which autoreconfigures on
> its own.
> For some odd reason when automake was bumped to version 1.15 and if the host
> system has another automake version, for example 1.14, the ACLOCAL and
> AUTOMAKE variables don't expand properly when the internal autoreconf is
> triggered hence calling the missing handler which in turn tries to use
> an incorrect automake version.
> The solution is to pass unexpanded ACLOCAL and AUTOMAKE variables that
> defer the evaluation to a later moment and avoid the issue.
> 
> Fixes:
> http://autobuild.buildroot.net/results/73f/73fcffafbea320f8c64378bbe8a96922b5e7c6b5/
> 
> Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
> ---
>  package/squid/squid.mk | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

We seem to have the same problem with host-guile:
http://autobuild.buildroot.org/results/634/634e342f7f384fc6eba11872aa2d680c0d8dc98a/build-end.log.
So I'm not sure a package-specific solution is appropriate here, no?

Thanks,

Thomas
Gustavo Zacarias Jan. 8, 2015, 5:34 p.m. UTC | #2
On 01/08/2015 05:28 AM, Thomas Petazzoni wrote:

> We seem to have the same problem with host-guile:
> http://autobuild.buildroot.org/results/634/634e342f7f384fc6eba11872aa2d680c0d8dc98a/build-end.log.
> So I'm not sure a package-specific solution is appropriate here, no?

For guile the problem is different, it's the fact that we're patching
configure.ac without enabling AUTORECONF, hence autoreconf is triggered
internally and breaks.
For squid it seems related to the bundled libltdl (libtool). I've
already tried to unbundle it without much success, seems to be pretty
tied up.
I've sent a patch to fix guile.
Regards.
Bernd Kuhls Jan. 10, 2015, 9:30 p.m. UTC | #3
Gustavo Zacarias <gustavo@zacarias.com.ar> wrote in 
news:1420679367-24134-1-git-send-email-gustavo@zacarias.com.ar:

> Squid bundles a copy of libltdl (from libtool) which autoreconfigures on
> its own.
> For some odd reason when automake was bumped to version 1.15 and if the 
host
> system has another automake version, for example 1.14, the ACLOCAL and
> AUTOMAKE variables don't expand properly when the internal autoreconf is
> triggered hence calling the missing handler which in turn tries to use
> an incorrect automake version.
> The solution is to pass unexpanded ACLOCAL and AUTOMAKE variables that
> defer the evaluation to a later moment and avoid the issue.
> 
> Fixes:
> http://autobuild.buildroot.net/results/73f/73fcffafbea320f8c64378bbe8a969
22b5e7c6b5/
> 
> Signed-off-by: Gustavo Zacarias <gustavo-
qnBm8nLGbSGH0oMTQjrRWA@public.gmane.org>
> ---
>  package/squid/squid.mk | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/package/squid/squid.mk b/package/squid/squid.mk
> index e9e821d..403818a 100644
> --- a/package/squid/squid.mk
> +++ b/package/squid/squid.mk
> @@ -20,7 +20,9 @@ SQUID_CONF_ENV = \
>       ac_cv_func_va_copy=yes \
>       ac_cv_func___va_copy=yes \
>       ac_cv_func_strnstr=no \
> -     ac_cv_have_squid=yes
> +     ac_cv_have_squid=yes \
> +     ACLOCAL="$(ACLOCAL)" \
> +     AUTOMAKE="$(AUTOMAKE)"
>  SQUID_CONF_OPTS = \
>       --enable-async-io=8 \
>       --enable-linux-netfilter \

Tested-by: Bernd Kuhls <bernd.kuhls@t-online.de>

Only compile-tested.
Thomas Petazzoni Jan. 12, 2015, 7:58 p.m. UTC | #4
Dear Gustavo Zacarias,

On Wed,  7 Jan 2015 22:09:27 -0300, Gustavo Zacarias wrote:
> Squid bundles a copy of libltdl (from libtool) which autoreconfigures on
> its own.
> For some odd reason when automake was bumped to version 1.15 and if the host
> system has another automake version, for example 1.14, the ACLOCAL and
> AUTOMAKE variables don't expand properly when the internal autoreconf is
> triggered hence calling the missing handler which in turn tries to use
> an incorrect automake version.
> The solution is to pass unexpanded ACLOCAL and AUTOMAKE variables that
> defer the evaluation to a later moment and avoid the issue.
> 
> Fixes:
> http://autobuild.buildroot.net/results/73f/73fcffafbea320f8c64378bbe8a96922b5e7c6b5/
> 
> Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

Even though I am not too happy about the fix, I applied it in order to
fix the autobuilder issues.

I'd like to understand better why the libltdl bundled in Squid thinks
it should autoreconf itself.

Thanks!

Thomas
Gustavo Zacarias Jan. 12, 2015, 8:05 p.m. UTC | #5
On 01/12/2015 04:58 PM, Thomas Petazzoni wrote:

> Even though I am not too happy about the fix, I applied it in order to
> fix the autobuilder issues.
> 
> I'd like to understand better why the libltdl bundled in Squid thinks
> it should autoreconf itself.

I couldn't find the why yet, but i did find that the fact that we don't
autoreconf libtool causes it since libtool 2.4.4 is packaged with
automake 1.14.1.
In a project where host-libtool (i.e. autoreconfs) see:

output/target/usr/share/libtool/aclocal.m4 ->
[AM_AUTOMAKE_VERSION([1.14.1])dnl
(circa line 54)

Since libtoolize blindly copies this at some point libltdl
automatically-triggered autoreconf uses this version (actually
am__api_version='1.14' in line 35) to call it, hence breaking.

One solution would be to autoreconf libtool which doesn't seem
straightforward.
Another is to "hack" libtool and s/1.14.1/1.15/ + s/1.14/1.15/ that file
(tested to work).
We could also define ACLOCAL & co in the autotools infra, it shouldn't
hurt any package, though i haven't tested this.

In any case it seems to be a problem limited to squid only or we would
have seen more of these.

Regards.
diff mbox

Patch

diff --git a/package/squid/squid.mk b/package/squid/squid.mk
index e9e821d..403818a 100644
--- a/package/squid/squid.mk
+++ b/package/squid/squid.mk
@@ -20,7 +20,9 @@  SQUID_CONF_ENV = \
 	ac_cv_func_va_copy=yes \
 	ac_cv_func___va_copy=yes \
 	ac_cv_func_strnstr=no \
-	ac_cv_have_squid=yes
+	ac_cv_have_squid=yes \
+	ACLOCAL="$(ACLOCAL)" \
+	AUTOMAKE="$(AUTOMAKE)"
 SQUID_CONF_OPTS = \
 	--enable-async-io=8 \
 	--enable-linux-netfilter \