Skip to contentSkip to conversation

squid: fix automake breakage

PATCH New Gustavo Zacarias 3 participants 6 messages Jan 8, 2015 – Jan 12, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 squid: fix automake breakage

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/

---
 package/squid/squid.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
package/squid/squid.mk +3 -1
index e9e821d..403818a 100644
@@ -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 \
Signature · 1 line
2.0.5
#1 lore raw

PATCH 1/1 squid: fix automake breakage

Dear Gustavo Zacarias,

Quoted 10 lines · Gustavo Zacarias

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.

Quoted 7 lines

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

---
 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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 squid: fix automake breakage

Quoted 3 lines · Thomas Petazzoni

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.

#3 lore raw

PATCH 1/1 squid: fix automake breakage

In reply to Gustavo Zacarias

Gustavo Zacarias <[email protected]> wrote in news:1420679367-24134-1-git-send-email-gustavo at zacarias.com.ar:

Quoted 3 lines

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

Quoted 9 lines

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/

Quoted 2 lines
Signed-off-by Gustavo Zacarias <gustavo-

[email protected]>

Quoted 9 lines
---
 package/squid/squid.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
package/squid/squid.mk +0 -0
index e9e821d..403818a 100644

package/squid/squid.mk SQUID_CONF_ENV = \ · line 28

Quoted 10 lines
package/squid/squid.mk +3 -1
@@ -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 \

Only compile-tested.

#4 lore raw

PATCH 1/1 squid: fix automake breakage

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

Quoted 10 lines · Gustavo Zacarias

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.

Quoted 4 lines

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

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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH 1/1 squid: fix automake breakage

Quoted 5 lines · Thomas Petazzoni

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.