Author: stsp Date: Fri Apr 12 09:27:33 2019 New Revision: 1857391 URL: http://svn.apache.org/viewvc?rev=1857391&view=rev Log: Get rid of apr_int64_t format string check in swig py configure.
This check relied on APR implementation details and broke with APR 1.7.0. Rather than trying to guess a perfect format string to use, just use the largest possible format and cast the argument accordingly. Should fix build against APR 1.7.0 and later. Suggested by: brane * build/ac-macros/swig.m4: Remove code related to SVN_APR_INT64_T_PYCFMT. * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (svn_swig_py_client_blame_receiver_func): Stop relying on the SVN_APR_INT64_T_PYCFMT constant from configure. Use "L" and acast to PY_LONG_LONG instead. Modified: subversion/trunk/build/ac-macros/swig.m4 subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Modified: subversion/trunk/build/ac-macros/swig.m4 URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/swig.m4?rev=1857391&r1=1857390&r2=1857391&view=diff ============================================================================== --- subversion/trunk/build/ac-macros/swig.m4 (original) +++ subversion/trunk/build/ac-macros/swig.m4 Fri Apr 12 09:27:33 2019 @@ -128,41 +128,6 @@ AC_DEFUN(SVN_FIND_SWIG, ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`" ]) SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`" - - dnl Sun Forte adds an extra space before substituting APR_INT64_T_FMT - dnl gcc-2.95 adds an extra space after substituting APR_INT64_T_FMT - dnl thus the egrep patterns have a + in them. - SVN_PYCFMT_SAVE_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES" - AC_CACHE_CHECK([for apr_int64_t Python/C API format string], - [svn_cv_pycfmt_apr_int64_t], [ - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_EGREP_CPP([MaTcHtHiS +\"lld\" +EnDeNd], - [#include <apr.h> - MaTcHtHiS APR_INT64_T_FMT EnDeNd], - [svn_cv_pycfmt_apr_int64_t="L"]) - fi - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_EGREP_CPP([MaTcHtHiS +\"ld\" +EnDeNd],r - [#include <apr.h> - MaTcHtHiS APR_INT64_T_FMT EnDeNd], - [svn_cv_pycfmt_apr_int64_t="l"]) - fi - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_EGREP_CPP([MaTcHtHiS +\"d\" +EnDeNd], - [#include <apr.h> - MaTcHtHiS APR_INT64_T_FMT EnDeNd], - [svn_cv_pycfmt_apr_int64_t="i"]) - fi - ]) - CPPFLAGS="$SVN_PYCFMT_SAVE_CPPFLAGS" - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_MSG_ERROR([failed to recognize APR_INT64_T_FMT on this platform]) - fi - AC_DEFINE_UNQUOTED([SVN_APR_INT64_T_PYCFMT], - ["$svn_cv_pycfmt_apr_int64_t"], - [Define to the Python/C API format character suitable] - [ for apr_int64_t]) fi if test "$PERL" != "none"; then Modified: subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1857391&r1=1857390&r2=1857391&view=diff ============================================================================== --- subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original) +++ subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Fri Apr 12 09:27:33 2019 @@ -46,7 +46,7 @@ #include "svn_mergeinfo.h" #include "svn_types.h" -#include "svn_private_config.h" /* for SVN_APR_INT64_T_PYCFMT */ +#include "svn_private_config.h" #include "swig_python_external_runtime.swg" #include "swigutil_py.h" @@ -3394,10 +3394,9 @@ svn_error_t *svn_swig_py_client_blame_re svn_swig_py_acquire_py_lock(); if ((result = PyObject_CallFunction(receiver, - (char *) - (SVN_APR_INT64_T_PYCFMT "lsssO&"), - line_no, revision, author, date, line, - make_ob_pool, pool)) == NULL) + (char *)"LlsssO&", + (PY_LONG_LONG)line_no, revision, author, + date, line, make_ob_pool, pool)) == NULL) { err = callback_exception_error(); }