- Issue #3754: Use readelf instead of ldd for the cross build readline check
This commit is contained in:
parent
f2967c73ad
commit
5884449539
|
@ -34,6 +34,7 @@ MAINCC= @MAINCC@
|
||||||
LINKCC= @LINKCC@
|
LINKCC= @LINKCC@
|
||||||
AR= @AR@
|
AR= @AR@
|
||||||
RANLIB= @RANLIB@
|
RANLIB= @RANLIB@
|
||||||
|
READELF= @READELF@
|
||||||
SOABI= @SOABI@
|
SOABI= @SOABI@
|
||||||
LDVERSION= @LDVERSION@
|
LDVERSION= @LDVERSION@
|
||||||
HGVERSION= @HGVERSION@
|
HGVERSION= @HGVERSION@
|
||||||
|
|
|
@ -646,6 +646,8 @@ INSTALL_SCRIPT
|
||||||
INSTALL_PROGRAM
|
INSTALL_PROGRAM
|
||||||
HAS_PYTHON
|
HAS_PYTHON
|
||||||
DISABLE_ASDLGEN
|
DISABLE_ASDLGEN
|
||||||
|
ac_ct_READELF
|
||||||
|
READELF
|
||||||
ARFLAGS
|
ARFLAGS
|
||||||
ac_ct_AR
|
ac_ct_AR
|
||||||
AR
|
AR
|
||||||
|
@ -5742,6 +5744,115 @@ then
|
||||||
ARFLAGS="rc"
|
ARFLAGS="rc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -n "$ac_tool_prefix"; then
|
||||||
|
for ac_prog in readelf
|
||||||
|
do
|
||||||
|
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
|
||||||
|
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||||
|
$as_echo_n "checking for $ac_word... " >&6; }
|
||||||
|
if ${ac_cv_prog_READELF+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
if test -n "$READELF"; then
|
||||||
|
ac_cv_prog_READELF="$READELF" # Let the user override the test.
|
||||||
|
else
|
||||||
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||||
|
ac_cv_prog_READELF="$ac_tool_prefix$ac_prog"
|
||||||
|
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
READELF=$ac_cv_prog_READELF
|
||||||
|
if test -n "$READELF"; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
|
||||||
|
$as_echo "$READELF" >&6; }
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
test -n "$READELF" && break
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if test -z "$READELF"; then
|
||||||
|
ac_ct_READELF=$READELF
|
||||||
|
for ac_prog in readelf
|
||||||
|
do
|
||||||
|
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||||
|
set dummy $ac_prog; ac_word=$2
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||||
|
$as_echo_n "checking for $ac_word... " >&6; }
|
||||||
|
if ${ac_cv_prog_ac_ct_READELF+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
if test -n "$ac_ct_READELF"; then
|
||||||
|
ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
|
||||||
|
else
|
||||||
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
|
||||||
|
ac_cv_prog_ac_ct_READELF="$ac_prog"
|
||||||
|
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
|
||||||
|
if test -n "$ac_ct_READELF"; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5
|
||||||
|
$as_echo "$ac_ct_READELF" >&6; }
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
test -n "$ac_ct_READELF" && break
|
||||||
|
done
|
||||||
|
|
||||||
|
if test "x$ac_ct_READELF" = x; then
|
||||||
|
READELF=":"
|
||||||
|
else
|
||||||
|
case $cross_compiling:$ac_tool_warned in
|
||||||
|
yes:)
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
|
||||||
|
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
|
||||||
|
ac_tool_warned=yes ;;
|
||||||
|
esac
|
||||||
|
READELF=$ac_ct_READELF
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$cross_compiling" = yes; then
|
||||||
|
case "$READELF" in
|
||||||
|
readelf|:)
|
||||||
|
as_fn_error $? "readelf for the host is required for cross builds" "$LINENO" 5
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DISABLE_ASDLGEN=""
|
DISABLE_ASDLGEN=""
|
||||||
# Extract the first word of "python", so it can be a program name with args.
|
# Extract the first word of "python", so it can be a program name with args.
|
||||||
|
|
10
configure.ac
10
configure.ac
|
@ -926,6 +926,16 @@ then
|
||||||
ARFLAGS="rc"
|
ARFLAGS="rc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_CHECK_TOOLS([READELF], [readelf], [:])
|
||||||
|
if test "$cross_compiling" = yes; then
|
||||||
|
case "$READELF" in
|
||||||
|
readelf|:)
|
||||||
|
AC_MSG_ERROR([readelf for the host is required for cross builds])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
AC_SUBST(READELF)
|
||||||
|
|
||||||
AC_SUBST(DISABLE_ASDLGEN)
|
AC_SUBST(DISABLE_ASDLGEN)
|
||||||
DISABLE_ASDLGEN=""
|
DISABLE_ASDLGEN=""
|
||||||
AC_CHECK_PROG(HAS_PYTHON, python, found, not-found)
|
AC_CHECK_PROG(HAS_PYTHON, python, found, not-found)
|
||||||
|
|
11
setup.py
11
setup.py
|
@ -590,13 +590,20 @@ class PyBuildExt(build_ext):
|
||||||
do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
|
do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
|
||||||
readline_termcap_library = ""
|
readline_termcap_library = ""
|
||||||
curses_library = ""
|
curses_library = ""
|
||||||
# Determine if readline is already linked against curses or tinfo.
|
|
||||||
if do_readline and find_executable('ldd'):
|
|
||||||
# Cannot use os.popen here in py3k.
|
# Cannot use os.popen here in py3k.
|
||||||
tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib')
|
tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib')
|
||||||
if not os.path.exists(self.build_temp):
|
if not os.path.exists(self.build_temp):
|
||||||
os.makedirs(self.build_temp)
|
os.makedirs(self.build_temp)
|
||||||
|
# Determine if readline is already linked against curses or tinfo.
|
||||||
|
if do_readline:
|
||||||
|
if cross_compiling:
|
||||||
|
ret = os.system("%s -d %s | grep '(NEEDED)' > %s" \
|
||||||
|
% (sysconfig.get_config_var('READELF'),
|
||||||
|
do_readline, tmpfile))
|
||||||
|
elif find_executable('ldd'):
|
||||||
ret = os.system("ldd %s > %s" % (do_readline, tmpfile))
|
ret = os.system("ldd %s > %s" % (do_readline, tmpfile))
|
||||||
|
else:
|
||||||
|
ret = 256
|
||||||
if ret >> 8 == 0:
|
if ret >> 8 == 0:
|
||||||
with open(tmpfile) as fp:
|
with open(tmpfile) as fp:
|
||||||
for ln in fp:
|
for ln in fp:
|
||||||
|
|
Loading…
Reference in New Issue