[Pdns-dev] Bug in "pdns-3.4.8" in m4/boost.m4 ?
Michael Egan
megan at edgewave.com
Fri Feb 19 06:15:25 UTC 2016
When trying to build pdns-3.4.8, I encountered a problem during boost version detection, which looked something like this when ./configure (with all options I wanted, run)
...
pdns: checking for Boost headers version >= 1.35.0... /usr/include
pdns: checking for Boost's header version...
pdns: configure: error: invalid value: boost_major_version=''
...
I think I tracked down the cause of this to m4/boost.m4
See this section of code in m4/boost.m4:
...
---- cut here ----
dnl # 1 "conftest.cc"
dnl # 1 "<built-in>"
dnl # 1 "<command-line>"
dnl # 1 "conftest.cc"
dnl # 1 "/opt/local/include/boost/version.hpp" 1 3
dnl # 2 "conftest.cc" 2
dnl boost-lib-version =
dnl # 2 "conftest.cc" 3
dnl "1_56"
dnl
dnl So get rid of the # lines, and glue the remaining ones together.
(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
grep -v '#' |
tr -d '\r' |
tr -s '\n' ' ' |
$SED -n -e "$1" >conftest.i 2>&1],
[$3],
[$4])
rm -rf conftest*
AC_LANG_POP([C++])dnl
])# _BOOST_SED_CPP
# BOOST_REQUIRE([VERSION], [ACTION-IF-NOT-FOUND])
---- cut here ----
...
Notice the line:
"rm -rf conftest*"
This removes not only "conftest.$ac_ext" but also removes "conftest.i"
But we still need "conftest.i" later in the script in this section:
...
---- cut here ----
AC_CACHE_CHECK([for Boost's header version],
[boost_cv_lib_version],
[m4_pattern_allow([^BOOST_LIB_VERSION$])dnl
_BOOST_SED_CPP([[/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}]],
[#include <boost/version.hpp>
boost-lib-version = BOOST_LIB_VERSION],
[boost_cv_lib_version=`cat conftest.i`])])
---- cut here ----
...
Without "conftest.i" present, the detected version ends up being '' (empty)
A suggested change?
---- cut here ----
--- pdns-3.4.8-orig/m4/boost.m4 2016-02-02 20:31:19.000000000 +0000
+++ pdns-3.4.8/m4/boost.m4 2016-02-19 06:11:51.832492331 +0000
@@ -94,12 +94,10 @@
$SED -n -e "$1" >conftest.i 2>&1],
[$3],
[$4])
-rm -rf conftest*
+rm -rf conftest.$ac_ext
AC_LANG_POP([C++])dnl
])# _BOOST_SED_CPP
-
-
# BOOST_REQUIRE([VERSION], [ACTION-IF-NOT-FOUND])
# -----------------------------------------------
# Look for Boost. If version is given, it must either be a literal of the form
@@ -229,6 +227,7 @@
[#include <boost/version.hpp>
boost-lib-version = BOOST_LIB_VERSION],
[boost_cv_lib_version=`cat conftest.i`])])
+ rm -rf conftest.*
# e.g. "134" for 1_34_1 or "135" for 1_35
boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'`
case $boost_major_version in #(
---- cut here ----
Feedback welcome.
Hope this helps,
-ME
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.powerdns.com/pipermail/pdns-dev/attachments/20160219/e4e2e7fb/attachment.html>
More information about the Pdns-dev
mailing list