You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2018/11/07 12:30:11 UTC

svn commit: r1846002 [3/44] - in /subversion/branches/ra-git: ./ build/ build/ac-macros/ build/generator/ build/generator/swig/ build/generator/templates/ build/generator/util/ build/win32/ contrib/client-side/ contrib/client-side/svn_load_dirs/ contri...

Modified: subversion/branches/ra-git/build/ac-macros/swig.m4
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/ac-macros/swig.m4?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/ac-macros/swig.m4 (original)
+++ subversion/branches/ra-git/build/ac-macros/swig.m4 Wed Nov  7 12:30:06 2018
@@ -98,200 +98,207 @@ AC_DEFUN(SVN_FIND_SWIG,
       AC_MSG_WARN([Detected SWIG version $SWIG_VERSION_RAW])
       AC_MSG_WARN([Subversion requires SWIG >= 1.3.24])
     fi
+  fi
+ 
+  SWIG_PY_COMPILE="none"
+  SWIG_PY_LINK="none"
+  if test "$PYTHON" != "none"; then
+    AC_MSG_NOTICE([Configuring python swig binding])
+
+    AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
+      ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`"
+    ])
+    SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes"
 
-    SWIG_PY_COMPILE="none"
-    SWIG_PY_LINK="none"
-    if test "$PYTHON" != "none"; then
-      AC_MSG_NOTICE([Configuring python swig binding])
-
-      AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
-        ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`"
-      ])
-      SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes"
+    if test "$ac_cv_python_includes" = "none"; then
+      AC_MSG_WARN([python bindings cannot be built without distutils module])
+    fi
 
-      if test "$ac_cv_python_includes" = "none"; then
-        AC_MSG_WARN([python bindings cannot be built without distutils module])
+    AC_CACHE_CHECK([for compiling Python extensions], [ac_cv_python_compile],[
+      ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`"
+    ])
+    SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS"
+
+    AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[
+      ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`"
+    ])
+    SWIG_PY_LINK="$ac_cv_python_link"
+
+    AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[
+      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
-
-      AC_CACHE_CHECK([for compiling Python extensions], [ac_cv_python_compile],[
-        ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`"
-      ])
-      SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS"
-
-      AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[
-        ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`"
-      ])
-      SWIG_PY_LINK="$ac_cv_python_link"
-
-      AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[
-        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])
+        AC_EGREP_CPP([MaTcHtHiS +\"ld\" +EnDeNd],r
+                     [#include <apr.h>
+                      MaTcHtHiS APR_INT64_T_FMT EnDeNd],
+                     [svn_cv_pycfmt_apr_int64_t="l"])
       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])
+      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
-      AC_MSG_CHECKING([perl version])
-      dnl Note that the q() bit is there to avoid unbalanced brackets
-      dnl which m4 really doesn't like.
-      PERL_VERSION="`$PERL -e 'q([[); print $]] * 1000000,$/;'`"
-      AC_MSG_RESULT([$PERL_VERSION])
-      if test "$PERL_VERSION" -ge "5008000"; then
-        SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`"
-      else
-        AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
-      fi
+  if test "$PERL" != "none"; then
+    AC_MSG_CHECKING([perl version])
+    dnl Note that the q() bit is there to avoid unbalanced brackets
+    dnl which m4 really doesn't like.
+    PERL_VERSION="`$PERL -e 'q([[); print $]] * 1000000,$/;'`"
+    AC_MSG_RESULT([$PERL_VERSION])
+    if test "$PERL_VERSION" -ge "5008000"; then
+      SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`"
+      SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`"
+      SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
+    else
+      AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
     fi
+  fi
+
+  SWIG_RB_COMPILE="none"
+  SWIG_RB_LINK="none"
+  if test "$RUBY" != "none"; then
+    if test x"$SWIG_VERSION" = x"3""00""008"; then
+      # Use a local variable to escape the '#' sign.
+      ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602'
+      AC_MSG_WARN([Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602])
+    fi
+    rbconfig="$RUBY -rrbconfig -e "
 
-    SWIG_RB_COMPILE="none"
-    SWIG_RB_LINK="none"
-    if test "$RUBY" != "none"; then
-      rbconfig="$RUBY -rrbconfig -e "
-
-      for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \
-                      rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir
-      do
-        rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG@<:@'$var_name'@:>@"`
-        eval "rbconfig_$var_name=\"$rbconfig_tmp\""
-      done
-
-      AC_MSG_NOTICE([Configuring Ruby SWIG binding])
-
-      AC_CACHE_CHECK([for Ruby include path], [svn_cv_ruby_includes],[
-      if test -d "$rbconfig_rubyhdrdir"; then
-        dnl Ruby >=1.9
-        svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir -I$rbconfig_rubyhdrdir/ruby -I$rbconfig_rubyhdrdir/ruby/backward"
-        if test -d "$rbconfig_rubyarchhdrdir"; then
-          dnl Ruby >=2.0
-          svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir"
-        else
-          svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch"
-        fi
+    for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \
+                    rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir
+    do
+      rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG@<:@'$var_name'@:>@"`
+      eval "rbconfig_$var_name=\"$rbconfig_tmp\""
+    done
+
+    AC_MSG_NOTICE([Configuring Ruby SWIG binding])
+
+    AC_CACHE_CHECK([for Ruby include path], [svn_cv_ruby_includes],[
+    if test -d "$rbconfig_rubyhdrdir"; then
+      dnl Ruby >=1.9
+      svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir -I$rbconfig_rubyhdrdir/ruby -I$rbconfig_rubyhdrdir/ruby/backward"
+      if test -d "$rbconfig_rubyarchhdrdir"; then
+        dnl Ruby >=2.0
+        svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir"
       else
-        dnl Ruby 1.8
-        svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
+        svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch"
       fi
-      ])
-      SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
+    else
+      dnl Ruby 1.8
+      svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
+    fi
+    ])
+    SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
 
-      AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[
-        svn_cv_ruby_compile="$rbconfig_CC $CFLAGS"
-      ])
-      SWIG_RB_COMPILE="$svn_cv_ruby_compile"
-      SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi])
-      SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89])
-      SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90])
-      dnl FIXME: Check that the compiler for Ruby actually supports this flag
-      SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast"
-
-      AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[
-        svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \
-                             $rbconfig_LDSHARED`"
-        svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link"
-        svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT"
-      ])
-      SWIG_RB_LINK="$svn_cv_ruby_link"
-
-      AC_CACHE_CHECK([how to link Ruby libraries], [ac_cv_ruby_libs], [
-        ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS"
-      ])
-      SWIG_RB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_ruby_libs)`"
-
-      AC_MSG_CHECKING([for rb_errinfo])
-      old_CFLAGS="$CFLAGS"
-      old_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $svn_cv_ruby_includes"
-      SVN_STRIP_FLAG([CFLAGS], [-ansi])
-      SVN_STRIP_FLAG([CFLAGS], [-std=c89])
-      SVN_STRIP_FLAG([CFLAGS], [-std=c90])
-      LIBS="$SWIG_RB_LIBS"
-      AC_LINK_IFELSE([AC_LANG_SOURCE([[
+    AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[
+      svn_cv_ruby_compile="$rbconfig_CC $CFLAGS"
+    ])
+    SWIG_RB_COMPILE="$svn_cv_ruby_compile"
+    SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi])
+    SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89])
+    SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90])
+    dnl FIXME: Check that the compiler for Ruby actually supports this flag
+    SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast"
+
+    AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[
+      svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \
+                           $rbconfig_LDSHARED`"
+      svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link"
+      svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT"
+    ])
+    SWIG_RB_LINK="$svn_cv_ruby_link"
+
+    AC_CACHE_CHECK([how to link Ruby libraries], [ac_cv_ruby_libs], [
+      ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS"
+    ])
+    SWIG_RB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_ruby_libs)`"
+
+    AC_MSG_CHECKING([for rb_errinfo])
+    old_CFLAGS="$CFLAGS"
+    old_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $svn_cv_ruby_includes"
+    SVN_STRIP_FLAG([CFLAGS], [-ansi])
+    SVN_STRIP_FLAG([CFLAGS], [-std=c89])
+    SVN_STRIP_FLAG([CFLAGS], [-std=c90])
+    LIBS="$SWIG_RB_LIBS"
+    AC_LINK_IFELSE([AC_LANG_SOURCE([[
 #include <ruby.h>
 int main()
 {rb_errinfo();}]])], have_rb_errinfo="yes", have_rb_errinfo="no")
-      if test "$have_rb_errinfo" = "yes"; then
-        AC_MSG_RESULT([yes])
-        AC_DEFINE([HAVE_RB_ERRINFO], [1],
-                  [Define to 1 if you have the `rb_errinfo' function.])
-      else
-        AC_MSG_RESULT([no])
-      fi
-      CFLAGS="$old_CFLAGS"
-      LIBS="$old_LIBS"
-
-      AC_CACHE_VAL([svn_cv_ruby_sitedir],[
-        svn_cv_ruby_sitedir="$rbconfig_sitedir"
-      ])
-      AC_ARG_WITH([ruby-sitedir],
-      AS_HELP_STRING([--with-ruby-sitedir=SITEDIR],
-                                 [install Ruby bindings in SITEDIR
-                                  (default is same as ruby's one)]),
-      [svn_ruby_installdir="$withval"],
-      [svn_ruby_installdir="$svn_cv_ruby_sitedir"])
-
-      AC_MSG_CHECKING([where to install Ruby scripts])
-      AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[
-        svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
-                                          $SED -e "s,^$rbconfig_sitedir,,"`"
-      ])
-      SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}"
-      AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR])
-
-      AC_MSG_CHECKING([where to install Ruby extensions])
-      AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[
-        svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
-                                          $SED -e "s,^$rbconfig_sitedir,,"`"
-      ])
-      SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}"
-      AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR])
-
-      AC_MSG_CHECKING([how to use output level for Ruby bindings tests])
-      AC_CACHE_VAL([svn_cv_ruby_test_verbose],[
-        svn_cv_ruby_test_verbose="normal"
-      ])
-      AC_ARG_WITH([ruby-test-verbose],
-      AS_HELP_STRING([--with-ruby-test-verbose=LEVEL],
-                                 [how to use output level for Ruby bindings tests
-                                  (default is normal)]),
-      [svn_ruby_test_verbose="$withval"],
-                    [svn_ruby_test_verbose="$svn_cv_ruby_test_verbose"])
-        SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose"
-        AC_MSG_RESULT([$SWIG_RB_TEST_VERBOSE])
+    if test "$have_rb_errinfo" = "yes"; then
+      AC_MSG_RESULT([yes])
+      AC_DEFINE([HAVE_RB_ERRINFO], [1],
+                [Define to 1 if you have the `rb_errinfo' function.])
+    else
+      AC_MSG_RESULT([no])
     fi
+    CFLAGS="$old_CFLAGS"
+    LIBS="$old_LIBS"
+
+    AC_CACHE_VAL([svn_cv_ruby_sitedir],[
+      svn_cv_ruby_sitedir="$rbconfig_sitedir"
+    ])
+    AC_ARG_WITH([ruby-sitedir],
+    AS_HELP_STRING([--with-ruby-sitedir=SITEDIR],
+                               [install Ruby bindings in SITEDIR
+                                (default is same as ruby's one)]),
+    [svn_ruby_installdir="$withval"],
+    [svn_ruby_installdir="$svn_cv_ruby_sitedir"])
+
+    AC_MSG_CHECKING([where to install Ruby scripts])
+    AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[
+      svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
+                                        $SED -e "s,^$rbconfig_sitedir,,"`"
+    ])
+    SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}"
+    AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR])
+
+    AC_MSG_CHECKING([where to install Ruby extensions])
+    AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[
+      svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
+                                        $SED -e "s,^$rbconfig_sitedir,,"`"
+    ])
+    SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}"
+    AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR])
+
+    AC_MSG_CHECKING([how to use output level for Ruby bindings tests])
+    AC_CACHE_VAL([svn_cv_ruby_test_verbose],[
+      svn_cv_ruby_test_verbose="normal"
+    ])
+    AC_ARG_WITH([ruby-test-verbose],
+    AS_HELP_STRING([--with-ruby-test-verbose=LEVEL],
+                               [how to use output level for Ruby bindings tests
+                                (default is normal)]),
+    [svn_ruby_test_verbose="$withval"],
+                  [svn_ruby_test_verbose="$svn_cv_ruby_test_verbose"])
+      SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose"
+      AC_MSG_RESULT([$SWIG_RB_TEST_VERBOSE])
   fi
   AC_SUBST(SWIG)
   AC_SUBST(SWIG_PY_INCLUDES)
@@ -299,6 +306,7 @@ int main()
   AC_SUBST(SWIG_PY_LINK)
   AC_SUBST(SWIG_PY_LIBS)
   AC_SUBST(SWIG_PL_INCLUDES)
+  AC_SUBST(SWIG_PL_LINK)
   AC_SUBST(SWIG_RB_LINK)
   AC_SUBST(SWIG_RB_LIBS)
   AC_SUBST(SWIG_RB_INCLUDES)

Modified: subversion/branches/ra-git/build/buildcheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/buildcheck.sh?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/buildcheck.sh (original)
+++ subversion/branches/ra-git/build/buildcheck.sh Wed Nov  7 12:30:06 2018
@@ -76,26 +76,12 @@ fi
 echo "buildcheck: autoheader version $ah_version (ok)"
 
 #--------------------------------------------------------------------------
-# libtool 1.4 or newer
+# libtool 2.0 or newer
 #
-LIBTOOL_WANTED_MAJOR=1
-LIBTOOL_WANTED_MINOR=4
+LIBTOOL_WANTED_MAJOR=2
+LIBTOOL_WANTED_MINOR=0
 LIBTOOL_WANTED_PATCH=
-LIBTOOL_WANTED_VERSION=1.4
-
-# The minimum version for source releases is 1.4.3,
-# because it's required by (at least) Solaris.
-if test "$VERSION_CHECK" = "--release"; then
-  LIBTOOL_WANTED_PATCH=3
-  LIBTOOL_WANTED_VERSION=1.4.3
-else
-  case `uname -sr` in
-    SunOS\ 5.*)
-      LIBTOOL_WANTED_PATCH=3
-      LIBTOOL_WANTED_VERSION=1.4.3
-      ;;
-  esac
-fi
+LIBTOOL_WANTED_VERSION=2.0
 
 # Much like APR except we do not prefer libtool 1 over libtool 2.
 libtoolize=${LIBTOOLIZE:-`./build/PrintPath glibtoolize libtoolize glibtoolize1 libtoolize15 libtoolize14`}

Modified: subversion/branches/ra-git/build/generator/extractor.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/extractor.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/extractor.py (original)
+++ subversion/branches/ra-git/build/generator/extractor.py Wed Nov  7 12:30:06 2018
@@ -69,4 +69,6 @@ if __name__ == '__main__':
     if os.path.basename(fname) == 'svn_ctype.h':
       print('svn_ctype_table = svn_ctype_table_internal CONSTANT')
     elif os.path.basename(fname) == 'svn_wc_private.h':
+      # svn_wc__internal_walk_children() is now internal to libsvn_wc
+      # but entries-dump.c still calls it
       print('svn_wc__internal_walk_children')

Modified: subversion/branches/ra-git/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/gen_base.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/gen_base.py (original)
+++ subversion/branches/ra-git/build/generator/gen_base.py Wed Nov  7 12:30:06 2018
@@ -288,7 +288,7 @@ class GeneratorBase:
             '  { %d, "%s" },' % (num, val),
           ])
 
-       # Remove ',' for c89 compatibility
+      # Remove ',' for c89 compatibility
       lines[-1] = lines[-1][0:-1]
 
       lines.extend([
@@ -296,7 +296,14 @@ class GeneratorBase:
           '',
         ])
 
-    write_struct('svn__errno', errno.errorcode.items())
+    # errno names can vary depending on the Python, and possibly the
+    # OS, version and they are not even used by normal release builds
+    # so omit them from the tarball. We always want the struct itself
+    # so that SVN_DEBUG builds still compile and it needs a dummy
+    # entry to avoid a zero-sized array.
+    write_struct('svn__errno',
+                 [(0, "success")] if self.release_mode
+                                  else errno.errorcode.items())
 
     # Fetch and write apr_errno.h codes.
     aprerr = []
@@ -324,7 +331,8 @@ class GeneratorBase:
                                '\n'.join(lines))
 
   def errno_filter(self, codes):
-    return codes
+    # list() to force the generator under python3
+    return list(codes)
 
   class FileSectionOptionEnum(object):
     # These are accessed via getattr() later on
@@ -719,6 +727,22 @@ class TargetApacheMod(TargetLib):
     self.compile_cmd = '$(COMPILE_APACHE_MOD)'
     self.link_cmd = '$(LINK_APACHE_MOD)'
 
+class TargetSharedOnlyLib(TargetLib):
+
+  def __init__(self, name, options, gen_obj):
+    TargetLib.__init__(self, name, options, gen_obj)
+
+    self.compile_cmd = '$(COMPILE_SHARED_ONLY_LIB)'
+    self.link_cmd = '$(LINK_SHARED_ONLY_LIB)'
+
+class TargetSharedOnlyCxxLib(TargetLib):
+
+  def __init__(self, name, options, gen_obj):
+    TargetLib.__init__(self, name, options, gen_obj)
+
+    self.compile_cmd = '$(COMPILE_SHARED_ONLY_CXX_LIB)'
+    self.link_cmd = '$(LINK_SHARED_ONLY_CXX_LIB)'
+
 class TargetRaModule(TargetLib):
   pass
 
@@ -876,115 +900,67 @@ class TargetJava(TargetLinked):
   def __init__(self, name, options, gen_obj):
     TargetLinked.__init__(self, name, options, gen_obj)
     self.link_cmd = options.get('link-cmd')
-    self.packages = options.get('package-roots', '').split()
+    self.package = options.get('package')
     self.jar = options.get('jar')
     self.deps = [ ]
-
-class TargetJavaHeaders(TargetJava):
-  def __init__(self, name, options, gen_obj):
-    TargetJava.__init__(self, name, options, gen_obj)
     self.objext = '.class'
-    self.javah_objext = '.h'
     self.headers = options.get('headers')
     self.classes = options.get('classes')
-    self.package = options.get('package')
-    self.output_dir = self.headers
+    self.native = options.get('native', '')
+    self.output_dir = self.classes
+    self.headers_dir = self.headers
 
   def add_dependencies(self):
     sources = _collect_paths(self.sources, self.path)
+    native = _collect_paths(self.native, self.path)
+
+    class_pkg_list = self.package.split('.')
+    sourcepath = build_path_split(self.path)[:-len(class_pkg_list)]
+    sourcepath = build_path_join(*sourcepath)
 
     for src, reldir in sources:
       if src[-5:] != '.java':
         raise GenError('ERROR: unknown file extension on ' + src)
 
+      sfile = SourceFile(src, reldir)
+      sfile.sourcepath = sourcepath
+
       class_name = build_path_basename(src[:-5])
 
-      class_header = build_path_join(self.headers, class_name + '.h')
-      class_header_win = build_path_join(self.headers,
-                                         self.package.replace(".", "_")
-                                         + "_" + class_name + '.h')
-      class_pkg_list = self.package.split('.')
       class_pkg = build_path_join(*class_pkg_list)
       class_file = ObjectFile(build_path_join(self.classes, class_pkg,
                                               class_name + self.objext),
-                              self.when)
+                              self.compile_cmd, self.when)
       class_file.source_generated = 1
       class_file.class_name = class_name
-      hfile = HeaderFile(class_header, self.package + '.' + class_name,
-                         self.compile_cmd)
-      hfile.filename_win = class_header_win
-      hfile.source_generated = 1
-      self.gen_obj.graph.add(DT_OBJECT, hfile, class_file)
-      self.deps.append(hfile)
-
-      # target (a linked item) depends upon object
-      self.gen_obj.graph.add(DT_LINK, self.name, hfile)
-
-
-    # collect all the paths where stuff might get built
-    ### we should collect this from the dependency nodes rather than
-    ### the sources. "what dir are you going to put yourself into?"
-    self.gen_obj.target_dirs.append(self.path)
-    self.gen_obj.target_dirs.append(self.classes)
-    self.gen_obj.target_dirs.append(self.headers)
-    for pattern in self.sources.split():
-      dirname = build_path_dirname(pattern)
-      if dirname:
-        self.gen_obj.target_dirs.append(build_path_join(self.path, dirname))
-
-    self.gen_obj.graph.add(DT_INSTALL, self.name, self)
-
-class TargetJavaClasses(TargetJava):
-  def __init__(self, name, options, gen_obj):
-    TargetJava.__init__(self, name, options, gen_obj)
-    self.objext = '.class'
-    self.lang = 'java'
-    self.classes = options.get('classes')
-    self.output_dir = self.classes
 
-  def add_dependencies(self):
-    sources = []
-    for p in self.path.split():
-      sources.extend(_collect_paths(self.sources, p))
-
-    for src, reldir in sources:
-      if src[-5:] == '.java':
-        objname = src[:-5] + self.objext
+      self.gen_obj.graph.add(DT_OBJECT, class_file, sfile)
+      self.gen_obj.graph.add(DT_LINK, self.name, class_file)
+      self.deps.append(class_file)
+
+      if (src, reldir) in native:
+        class_header = build_path_join(self.headers, class_name + '.h')
+        class_header_win = build_path_join(self.headers,
+                                           self.package.replace(".", "_")
+                                           + "_" + class_name + '.h')
+        hfile = HeaderFile(class_header, self.package + '.' + class_name,
+                           self.compile_cmd)
+        hfile.filename_win = class_header_win
+        hfile.source_generated = 1
+        self.gen_obj.graph.add(DT_OBJECT, hfile, sfile)
+        self.deps.append(hfile)
 
-        # As .class files are likely not generated into the same
-        # directory as the source files, the object path may need
-        # adjustment.  To this effect, take "target_ob.classes" into
-        # account.
-        dirs = build_path_split(objname)
-        sourcedirs = dirs[:-1]  # Last element is the .class file name.
-        while sourcedirs:
-          if sourcedirs.pop() in self.packages:
-            sourcepath = build_path_join(*sourcedirs)
-            objname = build_path_join(self.classes, *dirs[len(sourcedirs):])
-            break
-        else:
-          raise GenError('Unable to find Java package root in path "%s"' % objname)
-      else:
-        raise GenError('ERROR: unknown file extension on "' + src + '"')
+        # target (a linked item) depends upon object
+        self.gen_obj.graph.add(DT_LINK, self.name, hfile)
 
-      ofile = ObjectFile(objname, self.compile_cmd, self.when)
-      sfile = SourceFile(src, reldir)
-      sfile.sourcepath = sourcepath
-
-      # object depends upon source
-      self.gen_obj.graph.add(DT_OBJECT, ofile, sfile)
-
-      # target (a linked item) depends upon object
-      self.gen_obj.graph.add(DT_LINK, self.name, ofile)
-
-      # Add the class file to the dependency tree for this target
-      self.deps.append(ofile)
 
     # collect all the paths where stuff might get built
     ### we should collect this from the dependency nodes rather than
     ### the sources. "what dir are you going to put yourself into?"
-    self.gen_obj.target_dirs.extend(self.path.split())
+    self.gen_obj.target_dirs.append(self.path)
     self.gen_obj.target_dirs.append(self.classes)
+    if self.headers:
+      self.gen_obj.target_dirs.append(self.headers)
     for pattern in self.sources.split():
       dirname = build_path_dirname(pattern)
       if dirname:
@@ -1031,8 +1007,9 @@ _build_types = {
   'ra-module': TargetRaModule,
   'fs-module': TargetFsModule,
   'apache-mod': TargetApacheMod,
-  'javah' : TargetJavaHeaders,
-  'java' : TargetJavaClasses,
+  'shared-only-lib': TargetSharedOnlyLib,
+  'shared-only-cxx-lib': TargetSharedOnlyCxxLib,
+  'java' : TargetJava,
   'i18n' : TargetI18N,
   'sql-header' : TargetSQLHeader,
   }

Modified: subversion/branches/ra-git/build/generator/gen_make.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/gen_make.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/gen_make.py (original)
+++ subversion/branches/ra-git/build/generator/gen_make.py Wed Nov  7 12:30:06 2018
@@ -309,6 +309,8 @@ class Generator(gen_base.GeneratorBase):
         ezt_target.link_cmd = target_ob.link_cmd
       if hasattr(target_ob, 'output_dir'):
         ezt_target.output_dir = target_ob.output_dir
+      if hasattr(target_ob, 'headers_dir'):
+        ezt_target.headers_dir = target_ob.headers_dir
 
       # Add additional install dependencies if necessary
       if target_ob.add_install_deps:
@@ -507,7 +509,7 @@ class Generator(gen_base.GeneratorBase):
     standalone.write('top_srcdir = .\n')
     standalone.write('top_builddir = .\n')
     standalone.write('SWIG = swig\n')
-    standalone.write('PYTHON = python\n')
+    standalone.write('PYTHON = ' + sys.executable + '\n')
     standalone.write('\n')
     standalone.write(open("build-outputs.mk","r").read())
     standalone.close()

Modified: subversion/branches/ra-git/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/gen_win.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/gen_win.py (original)
+++ subversion/branches/ra-git/build/generator/gen_win.py Wed Nov  7 12:30:06 2018
@@ -79,11 +79,15 @@ class WinGeneratorBase(gen_win_dependenc
 
     # Print list of identified libraries
     printed = []
-    for lib in sorted(self._libraries.values(), key = lambda s: s.name):
+    for lib in sorted(self._libraries.values(),
+                      key = lambda s: (s.internal, s.name)):
       if lib.name in printed:
         continue
       printed.append(lib.name)
-      print('Found %s %s' % (lib.name, lib.version))
+      if lib.internal:
+        print('Using bundled %s %s' % (lib.name, lib.version))
+      else:
+        print('Found %s %s' % (lib.name, lib.version))
 
     #Make some files for the installer so that we don't need to
     #require sed or some other command to do it
@@ -220,7 +224,6 @@ class WinGeneratorBase(gen_win_dependenc
     if 'java_sdk' not in self._libraries:
       install_targets = [x for x in install_targets
                                      if not (isinstance(x, gen_base.TargetJava)
-                                             or isinstance(x, gen_base.TargetJavaHeaders)
                                              or x.name == '__JAVAHL__'
                                              or x.name == '__JAVAHL_TESTS__'
                                              or x.name == 'libsvnjavahl')]
@@ -335,11 +338,9 @@ class WinGeneratorBase(gen_win_dependenc
     sources = [ ]
 
     javac_exe = "javac"
-    javah_exe = "javah"
     jar_exe = "jar"
     if self.jdk_path:
       javac_exe = os.path.join(self.jdk_path, "bin", javac_exe)
-      javah_exe = os.path.join(self.jdk_path, "bin", javah_exe)
       jar_exe = os.path.join(self.jdk_path, "bin", jar_exe)
 
     if not isinstance(target, gen_base.TargetProject):
@@ -348,25 +349,13 @@ class WinGeneratorBase(gen_win_dependenc
         ctarget = None
         cdesc = None
         cignore = None
-        if isinstance(target, gen_base.TargetJavaHeaders):
-          classes = self.path(target.classes)
-          if self.junit_path is not None:
-            classes = "%s;%s" % (classes, self.junit_path)
-
-          headers = self.path(target.headers)
-          classname = target.package + "." + source.class_name
-
-          cbuild = "%s -verbose -force -classpath %s -d %s %s" \
-                   % (self.quote(javah_exe), self.quote(classes),
-                      self.quote(headers), classname)
-
-          ctarget = self.path(object.filename_win)
-          cdesc = "Generating %s" % (object.filename_win)
-
-        elif isinstance(target, gen_base.TargetJavaClasses):
+        if isinstance(target, gen_base.TargetJava):
           classes = targetdir = self.path(target.classes)
           if self.junit_path is not None:
             classes = "%s;%s" % (classes, self.junit_path)
+          headers = ''
+          if target.headers is not None:
+            headers = '-h %s' % self.quote(self.path(target.headers))
 
           sourcepath = self.path(source.sourcepath)
 
@@ -376,17 +365,21 @@ class WinGeneratorBase(gen_win_dependenc
             per_project_flags += "-Xlint:-deprecation -Xlint:-dep-ann" \
                                  " -Xlint:-rawtypes"
 
-          cbuild = ("%s -g -Xlint -Xlint:-options " +
-                    per_project_flags +
-                    " -target 1.5 -source 1.5 -classpath "
+          cbuild = ("%s -g -Xlint -Xlint:-options %s %s "
+                    " -target 1.8 -source 1.8 -classpath "
                     " %s -d %s "
                     " -sourcepath %s $(InputPath)") \
-                   % tuple(map(self.quote, (javac_exe, classes,
-                                            targetdir, sourcepath)))
+                   % (self.quote(javac_exe), per_project_flags, headers,
+                      self.quote(classes), self.quote(targetdir),
+                      self.quote(sourcepath))
 
 
-          ctarget = self.path(object.filename)
-          cdesc = "Compiling %s" % (source)
+          if isinstance(object, gen_base.HeaderFile):
+            ctarget = self.path(object.filename_win)
+            cdesc = "Generating %s" % (object.filename_win)
+          else:
+            ctarget = self.path(object.filename)
+            cdesc = "Compiling %s" % (source)
 
         rsrc = self.path(str(source))
         if quote_path and '-' in rsrc:
@@ -406,7 +399,7 @@ class WinGeneratorBase(gen_win_dependenc
                                    custom_desc=cdesc, ignored = cignore,
                                    extension=os.path.splitext(rsrc)[1]))
 
-    if isinstance(target, gen_base.TargetJavaClasses) and target.jar:
+    if isinstance(target, gen_base.TargetJava) and target.jar:
       classdir = self.path(target.classes)
       jarfile = msvc_path_join(classdir, target.jar)
       cbuild = "%s cf %s -C %s %s" \
@@ -510,9 +503,7 @@ class WinGeneratorBase(gen_win_dependenc
     return name[0] + '.pdb'
 
   def get_output_dir(self, target):
-    if isinstance(target, gen_base.TargetJavaHeaders):
-      return msvc_path("../" + target.headers)
-    elif isinstance(target, gen_base.TargetJavaClasses):
+    if isinstance(target, gen_base.TargetJava):
       return msvc_path("../" + target.classes)
     else:
       return msvc_path(target.path)

Modified: subversion/branches/ra-git/build/generator/gen_win_dependencies.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/gen_win_dependencies.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/gen_win_dependencies.py (original)
+++ subversion/branches/ra-git/build/generator/gen_win_dependencies.py Wed Nov  7 12:30:06 2018
@@ -51,7 +51,7 @@ class SVNCommonLibrary:
   def __init__(self, name, include_dirs, lib_dir, lib_name, version=None,
                debug_lib_dir=None, debug_lib_name=None, dll_dir=None,
                dll_name=None, debug_dll_dir=None, debug_dll_name=None,
-               defines=[], forced_includes=[], extra_bin=[]):
+               defines=[], forced_includes=[], extra_bin=[], internal=False):
     self.name = name
     if include_dirs:
       self.include_dirs = include_dirs if isinstance(include_dirs, list) \
@@ -90,6 +90,7 @@ class SVNCommonLibrary:
       self.debug_dll_name = dll_name
 
     self.extra_bin = extra_bin
+    self.internal = internal
 
 class GenDependenciesBase(gen_base.GeneratorBase):
   """This intermediate base class exists to be instantiated by win-tests.py,
@@ -264,6 +265,11 @@ class GenDependenciesBase(gen_base.Gener
           self.sln_version = '12.00'
           self.vcproj_version = '14.0'
           self.vcproj_extension = '.vcxproj'
+        elif val == '2017' or val == '15':
+          self.vs_version = '2017'
+          self.sln_version = '12.00'
+          self.vcproj_version = '14.1'
+          self.vcproj_extension = '.vcxproj'
         elif re.match('^20\d+$', val):
           print('WARNING: Unknown VS.NET version "%s",'
                 ' assuming VS2012. Your VS can probably upgrade')
@@ -305,6 +311,8 @@ class GenDependenciesBase(gen_base.Gener
     self._find_apr_util_etc()
     self._find_zlib()
     self._find_sqlite(show_warnings)
+    self._find_lz4()
+    self._find_utf8proc()
 
     # Optional dependencies
     self._find_httpd(show_warnings)
@@ -713,6 +721,9 @@ class GenDependenciesBase(gen_base.Gener
       if os.path.exists(os.path.join(lib_path, 'zlibstatic.lib')):
         # CMake default: zlibstatic.lib (static) and zlib.lib (dll)
         lib_name = 'zlibstatic.lib'
+      elif os.path.exists(os.path.join(lib_path, 'zlibstat.lib')):
+        # Visual Studio project file default: zlibstat.lib (static) and zlibwapi.lib (dll)
+        lib_name = 'zlibstat.lib'
       else:
         # Standard makefile produces zlib.lib (static) and zdll.lib (dll)
         lib_name = 'zlib.lib'
@@ -873,16 +884,26 @@ class GenDependenciesBase(gen_base.Gener
                int(vermatch.group(4)))
     openssl_version = vermatch.group(1)
 
+    libcrypto = 'libcrypto'
+    libssl = 'libssl'
+    versuffix = '-%d_%d' % version[0:2]
+    if version < (1, 1, 0):
+      libcrypto = 'libeay32'
+      libssl = 'ssleay32'
+      versuffix = ''
+
     self._libraries['openssl'] = SVNCommonLibrary('openssl', inc_dir, lib_dir,
-                                                  'ssleay32.lib',
+                                                  '%s.lib' % (libssl,),
                                                   openssl_version,
-                                                  dll_name='ssleay32.dll',
+                                                  dll_name='%s%s.dll' %
+                                                      (libssl, versuffix),
                                                   dll_dir=bin_dir)
 
-    self._libraries['libeay32'] = SVNCommonLibrary('openssl', inc_dir, lib_dir,
-                                                    'libeay32.lib',
+    self._libraries['libcrypto'] = SVNCommonLibrary('openssl', inc_dir, lib_dir,
+                                                    '%s.lib' % (libcrypto,),
                                                     openssl_version,
-                                                    dll_name='libeay32.dll',
+                                                    dll_name='%s%s.dll' %
+                                                      (libcrypto, versuffix),
                                                     dll_dir=bin_dir)
 
   def _find_perl(self, show_warnings):
@@ -1052,11 +1073,15 @@ class GenDependenciesBase(gen_base.Gener
       return
 
     try:
-      outfp = subprocess.Popen([os.path.join(jdk_path, 'bin', 'javah.exe'),
-                               '-version'], stdout=subprocess.PIPE).stdout
+      # Apparently a 1.8 javac writes its version output to stderr, while
+      # a 1.10 javac writes it to stdout. To catch them all, we redirect
+      # stderr to stdout.
+      outfp = subprocess.Popen([os.path.join(jdk_path, 'bin', 'javac.exe'),
+                               '-version'], stdout=subprocess.PIPE,
+                               stderr=subprocess.STDOUT).stdout
       line = outfp.read()
       if line:
-        vermatch = re.search(r'"(([0-9]+(\.[0-9]+)+)(_[._0-9]+)?)"', line, re.M)
+        vermatch = re.search(r'(([0-9]+(\.[0-9]+)+)(_[._0-9]+)?)', line, re.M)
       else:
         vermatch = None
 
@@ -1419,7 +1444,7 @@ class GenDependenciesBase(gen_base.Gener
   def _find_sqlite(self, show_warnings):
     "Find the Sqlite library and version"
 
-    minimal_sqlite_version = (3, 7, 12)
+    minimal_sqlite_version = (3, 8, 2)
 
     # For SQLite we support 3 scenarios:
     # - Installed in standard directory layout
@@ -1495,6 +1520,57 @@ class GenDependenciesBase(gen_base.Gener
                                                  dll_name=dll_name,
                                                  defines=defines)
 
+  def _find_lz4(self):
+    "Find the LZ4 library"
+
+    # For now, we always use the internal (bundled) library.
+    version_file_path = os.path.join('subversion', 'libsvn_subr',
+                                     'lz4', 'lz4internal.h')
+    txt = open(version_file_path).read()
+
+    vermatch = re.search(r'^\s*#define\s+LZ4_VERSION_MAJOR\s+(\d+)',
+                         txt, re.M)
+    major = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+LZ4_VERSION_MINOR\s+(\d+)',
+                         txt, re.M)
+    minor = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+LZ4_VERSION_RELEASE\s+(\d+)',
+                         txt, re.M)
+    rel = vermatch.group(1)
+
+    lz4_version = '%d.%d.%s' % (major, minor, rel)
+    self._libraries['lz4'] = SVNCommonLibrary('lz4', None, None, None,
+                                              lz4_version, internal=True,
+                                              defines=['SVN_INTERNAL_LZ4'])
+
+  def _find_utf8proc(self):
+    "Find the Utf8proc library"
+
+    # For now, we always use the internal (bundled) library.
+    version_file_path = os.path.join('subversion', 'libsvn_subr',
+                                     'utf8proc', 'utf8proc_internal.h')
+    txt = open(version_file_path).read()
+
+    vermatch = re.search(r'^\s*#define\s+UTF8PROC_VERSION_MAJOR\s+(\d+)',
+                         txt, re.M)
+    major = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+UTF8PROC_VERSION_MINOR\s+(\d+)',
+                         txt, re.M)
+    minor = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+UTF8PROC_VERSION_PATCH\s+(\d+)',
+                         txt, re.M)
+    patch = int(vermatch.group(1))
+
+    utf8proc_version = '%d.%d.%d' % (major, minor, patch)
+    self._libraries['utf8proc'] = SVNCommonLibrary('utf8proc', None, None,
+                                                   None, utf8proc_version,
+                                                   internal=True,
+                                        defines=['SVN_INTERNAL_UTF8PROC'])
+
 # ============================================================================
 # This is a cut-down and modified version of code from:
 #   subversion/subversion/bindings/swig/python/svn/core.py

Modified: subversion/branches/ra-git/build/generator/swig/__init__.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/swig/__init__.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/swig/__init__.py (original)
+++ subversion/branches/ra-git/build/generator/swig/__init__.py Wed Nov  7 12:30:06 2018
@@ -25,7 +25,7 @@
 import os
 import re
 import shutil
-import generator.util.executable as _exec
+import subprocess
 from generator.gen_base import _collect_paths
 try:
   # Python >=3.0
@@ -59,14 +59,19 @@ class Generator:
 
     # Calculate SWIG paths
     self.swig_path = swig_path
-    self.swig_libdir = _exec.output([self.swig_path, "-swiglib"], strip=1)
+    if os.access(self.swig_path, os.X_OK):
+      # ### TODO: What's the reason for this os.access() check?  It was added
+      # ### in r873265 (== r33191).
+      self.swig_libdir = subprocess.check_output([self.swig_path, "-swiglib"]).strip()
+    else:
+      self.swig_libdir = None
 
   _swigVersion = None
   def version(self):
     """Get the version number of SWIG"""
 
     if not self._swigVersion:
-      swig_version = _exec.output([self.swig_path, "-version"])
+      swig_version = subprocess.check_output([self.swig_path, "-version"])
       m = re.search("Version (\d+).(\d+).(\d+)", swig_version)
       if m:
         self._swigVersion = tuple(map(int, m.groups()))

Modified: subversion/branches/ra-git/build/generator/swig/checkout_swig_header.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/swig/checkout_swig_header.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/swig/checkout_swig_header.py (original)
+++ subversion/branches/ra-git/build/generator/swig/checkout_swig_header.py Wed Nov  7 12:30:06 2018
@@ -23,13 +23,12 @@
 # Checkout files from the SWIG library into Subversion's proxy directory
 #
 
-import sys, os, re, fileinput, shutil
+import sys, os, re, fileinput, shutil, subprocess
 if __name__ == "__main__":
   parent_dir = os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))
   sys.path[0:0] = [ parent_dir, os.path.dirname(parent_dir) ]
 import generator.swig
 from gen_base import build_path_splitfile, build_path_join
-from generator.util.executable import run
 
 class Generator(generator.swig.Generator):
 
@@ -63,7 +62,7 @@ class Generator(generator.swig.Generator
     elif self.version() == (1, 3, 24):
       shutil.copy(build_path_join(self.swig_libdir, path), out)
     else:
-      run("%s -o %s -co %s" % (self.swig_path, out, path))
+      subprocess.check_call([self.swig_path, "-o", out, "-co", path])
 
   def _skip_checkout(self, path):
     """Should we skip this checkout?"""

Modified: subversion/branches/ra-git/build/generator/swig/external_runtime.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/swig/external_runtime.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/swig/external_runtime.py (original)
+++ subversion/branches/ra-git/build/generator/swig/external_runtime.py Wed Nov  7 12:30:06 2018
@@ -29,13 +29,12 @@ import os
 import re
 import fileinput
 import filecmp
+import subprocess
 
 if __name__ == "__main__":
   parent_dir = os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))
   sys.path[0:0] = [ parent_dir, os.path.dirname(parent_dir) ]
 import generator.swig
-import generator.util.executable
-_exec = generator.util.executable
 
 class Generator(generator.swig.Generator):
   """Generate external runtime files for SWIG"""
@@ -82,7 +81,7 @@ class Generator(generator.swig.Generator
         out_file.write(open("%s/runtime.swg" % self.proxy_dir).read())
       out_file.close()
     else:
-      _exec.run("%s -%s -external-runtime %s" % (self.swig_path, lang, out))
+      subprocess.check_call([self.swig_path, "-"+lang, "-external-runtime", out])
 
     # SWIG 1.3.24-27 should include rubyhead.swg in their
     # external runtime, but they don't.

Modified: subversion/branches/ra-git/build/generator/templates/build-outputs.mk.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/templates/build-outputs.mk.ezt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/templates/build-outputs.mk.ezt (original)
+++ subversion/branches/ra-git/build/generator/templates/build-outputs.mk.ezt Wed Nov  7 12:30:06 2018
@@ -102,13 +102,9 @@ install-[target.install]: [target.instal
 [target.varname]_OBJECTS = [for target.objects][if-index target.objects first][else] [end][target.objects][end]
 [target.varname]_DEPS = $([target.varname]_HEADERS) $([target.varname]_OBJECTS)[for target.add_deps] [target.add_deps][end][for target.deps][if-index target.deps first][else] [end][target.deps][end]
 [target.name]: $([target.varname]_DEPS)
-[if-any target.headers][target.varname]_CLASS_FILENAMES =[for target.header_class_filenames] [target.header_class_filenames][end]
-[target.varname]_CLASSES =[for target.header_classes] [target.header_classes][end]
-$([target.varname]_HEADERS): $([target.varname]_CLASS_FILENAMES)
-	[target.link_cmd] -d [target.output_dir] -classpath [target.classes]:$([target.varname]_CLASSPATH) $([target.varname]_CLASSES)
-[end][if-any target.sources][target.varname]_SRC =[for target.sources] [target.sources][end]
-$([target.varname]_OBJECTS): $([target.varname]_SRC)
-	[target.link_cmd] -d [target.output_dir] -classpath [target.classes]:$([target.varname]_CLASSPATH) $([target.varname]_SRC)
+[if-any target.sources][target.varname]_SRC =[for target.sources] [target.sources][end]
+$([target.varname]_HEADERS) $([target.varname]_OBJECTS): $([target.varname]_SRC)
+	[target.link_cmd][if-any target.headers] -h [target.headers_dir][end] -d [target.output_dir] -classpath [target.classes]:$([target.varname]_CLASSPATH) $([target.varname]_SRC)
 [if-any target.jar]
 	$(JAR) cf [target.jar_path] -C [target.classes][for target.packages] [target.packages][end][end][end]
 [else][is target.type "i18n"][target.varname]_DEPS =[for target.add_deps] [target.add_deps][end][for target.objects] [target.objects][end][for target.deps] [target.deps][end]

Modified: subversion/branches/ra-git/build/generator/templates/vcnet_vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/generator/templates/vcnet_vcxproj.ezt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/generator/templates/vcnet_vcxproj.ezt (original)
+++ subversion/branches/ra-git/build/generator/templates/vcnet_vcxproj.ezt Wed Nov  7 12:30:06 2018
@@ -62,7 +62,6 @@
       <PreprocessorDefinitions>[if-any instrument_apr_pools]APR_POOL_DEBUG=[instrument_apr_pools];[end][is platforms "x64"]WIN64;[end][for configs.defines][configs.defines];[end]%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level4</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
       <DisableSpecificWarnings>4100;4127;4206;4512;4701;4706;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <TreatSpecificWarningsAsErrors>4002;4003;4013;4020;4022;4024;4028;4029;4030;4031;4033;4047;4089;4113;4115;4133;4204;4700;4715;4789;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
 [if-any configs.forced_include_files]      <ForcedIncludeFiles>[for configs.forced_include_files][configs.forced_include_files];[end]%(ForcedIncludeFiles)</ForcedIncludeFiles>

Modified: subversion/branches/ra-git/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/run_tests.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/run_tests.py (original)
+++ subversion/branches/ra-git/build/run_tests.py Wed Nov  7 12:30:06 2018
@@ -24,7 +24,7 @@
 #
 
 '''usage: python run_tests.py
-            [--verbose] [--log-to-stdout] [--cleanup]
+            [--verbose] [--log-to-stdout] [--cleanup] [--bin=<path>]
             [--parallel | --parallel=<n>] [--global-scheduler]
             [--url=<base-url>] [--http-library=<http-library>] [--enable-sasl]
             [--fs-type=<fs-type>] [--fsfs-packing] [--fsfs-sharding=<n>]
@@ -33,6 +33,8 @@
             [--httpd-version=<version>] [--httpd-whitelist=<version>]
             [--config-file=<file>] [--ssl-cert=<file>]
             [--exclusive-wc-locks] [--memcached-server=<url:port>]
+            [--fsfs-compression=<type>] [--fsfs-dir-deltification=<true|false>]
+            [--allow-remote-http-connection]
             <abs_srcdir> <abs_builddir>
             <prog ...>
 
@@ -275,6 +277,12 @@ class TestHarness:
       cmdline.append('--exclusive-wc-locks')
     if self.opts.memcached_server is not None:
       cmdline.append('--memcached-server=%s' % self.opts.memcached_server)
+    if self.opts.fsfs_compression is not None:
+      cmdline.append('--fsfs-compression=%s' % self.opts.fsfs_compression)
+    if self.opts.fsfs_dir_deltification is not None:
+      cmdline.append('--fsfs-dir-deltification=%s' % self.opts.fsfs_dir_deltification)
+    if self.opts.allow_remote_http_connection is not None:
+      cmdline.append('--allow-remote-http-connection')
 
     self.py_test_cmdline = cmdline
 
@@ -322,7 +330,7 @@ class TestHarness:
     def _command_line(self, harness):
       if self.is_python:
         cmdline = list(harness.py_test_cmdline)
-        cmdline.insert(0, 'python')
+        cmdline.insert(0, sys.executable)
         cmdline.insert(1, self.progabs)
         # Run the test apps in "child process" mode,
         # i.e. w/o cleaning up global directories etc.
@@ -370,7 +378,7 @@ class TestHarness:
 
     def _count_py_tests(self, progabs, progdir, progbase):
       'Run a c test, escaping parameters as required.'
-      cmdline = [ 'python', progabs, '--list' ]
+      cmdline = [ sys.executable, progabs, '--list' ]
       prog = subprocess.Popen(cmdline, stdout=subprocess.PIPE, cwd=progdir)
       lines = prog.stdout.readlines()
 
@@ -421,7 +429,7 @@ class TestHarness:
           os.write(sys.stdout.fileno(), b'.' * job.test_count())
 
 
-  def _run_global_sheduler(self, testlist, has_py_tests):
+  def _run_global_scheduler(self, testlist, has_py_tests):
     # Collect all tests to execute (separate jobs for each test in python
     # test cases, one job for each c test case).  Do that concurrently to
     # mask latency.  This takes .5s instead of about 3s.
@@ -443,7 +451,8 @@ class TestHarness:
     job_queue = queue.Queue()
     total_count = 0
     scrambled = list(jobs)
-    scrambled.sort(key=lambda x: str(x.number))
+    # TODO: What's this line doing, and what's the magic number?
+    scrambled.sort(key=lambda x: ("1" if x.test_count() < 30 else "0") + str(x.number))
     for job in scrambled:
       total_count += job.test_count()
       job_queue.put(job)
@@ -573,7 +582,7 @@ class TestHarness:
     if self.opts.global_scheduler is None:
       failed = self._run_local_schedulers(testlist)
     else:
-      failed = self._run_global_sheduler(testlist, len(py_tests) > 0)
+      failed = self._run_global_scheduler(testlist, len(py_tests) > 0)
 
     # Open the log again to for filtering.
     if self.logfile:
@@ -1023,6 +1032,12 @@ def create_parser():
                     help='Use sqlite exclusive locking for working copies')
   parser.add_option('--memcached-server', action='store',
                     help='Use memcached server at specified URL (FSFS only)')
+  parser.add_option('--fsfs-compression', action='store', type='str',
+                    help='Set compression type (for fsfs)')
+  parser.add_option('--fsfs-dir-deltification', action='store', type='str',
+                    help='Set directory deltification option (for fsfs)')
+  parser.add_option('--allow-remote-http-connection', action='store_true',
+                    help='Run tests that connect to remote HTTP(S) servers')
 
   parser.set_defaults(set_log_level=None)
   return parser
@@ -1031,7 +1046,9 @@ def main():
   (opts, args) = create_parser().parse_args(sys.argv[1:])
 
   if len(args) < 3:
-    print(__doc__)
+    print("{}: at least three positional arguments required; got {!r}".format(
+      os.path.basename(sys.argv[0]), args
+    ))
     sys.exit(2)
 
   if opts.log_to_stdout:

Modified: subversion/branches/ra-git/build/transform_sql.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/build/transform_sql.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/build/transform_sql.py (original)
+++ subversion/branches/ra-git/build/transform_sql.py Wed Nov  7 12:30:06 2018
@@ -274,7 +274,7 @@ def main(input_filepath, output):
     '/* This file is automatically generated from %s and %s.\n'
     ' * Do not edit this file -- edit the source and rerun gen-make.py */\n'
     '\n'
-    % (filename, token_map_filename))
+    % (filename, os.path.basename(token_map_filename)))
 
   proc = Processor(os.path.dirname(input_filepath), output, var_name, token_map)
   proc.process_file(input)

Modified: subversion/branches/ra-git/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/configure.ac?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/configure.ac (original)
+++ subversion/branches/ra-git/configure.ac Wed Nov  7 12:30:06 2018
@@ -23,7 +23,7 @@ AC_PREREQ(2.59)
 dnl Get the version of Subversion, using m4's esyscmd() command to do this
 dnl at m4-time, since AC_INIT() requires it then.
 AC_INIT([subversion],
-     [esyscmd(python build/getversion.py SVN subversion/include/svn_version.h)],
+     [esyscmd($PYTHON build/getversion.py SVN subversion/include/svn_version.h)],
      [http://subversion.apache.org/])
 
 AC_CONFIG_SRCDIR(subversion/include/svn_types.h)
@@ -155,9 +155,11 @@ SVN_FIND_APACHE(20051115, $apache_whitel
 dnl Search for SQLite.  If you change SQLITE_URL from a .zip to
 dnl something else also update build/ac-macros/sqlite.m4 to reflect
 dnl the correct command to unpack the downloaded file.
-SQLITE_MINIMUM_VER="3.7.12"
-SQLITE_RECOMMENDED_VER="3.7.15.1"
-SQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
+SQLITE_MINIMUM_VER="3.8.2"
+SQLITE_RECOMMENDED_VER="3.8.11.1"
+dnl Used to construct the SQLite download URL.
+SQLITE_RECOMMENDED_VER_REL_YEAR="2015"
+SQLITE_URL="https://www.sqlite.org/$SQLITE_RECOMMENDED_VER_REL_YEAR/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
 
 SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
                ${SQLITE_URL})
@@ -558,22 +560,22 @@ AC_SUBST(SVN_HAVE_GPG_AGENT)
 
 dnl GNOME Keyring -------------------
 
-AC_ARG_WITH(gnome_keyring,
-  AS_HELP_STRING([--with-gnome-keyring], 
-                 [Enable use of GNOME Keyring for auth credentials (enabled by default if found)]),
-                 [with_gnome_keyring="$withval"],
-                 [with_gnome_keyring=auto])
-
-found_gnome_keyring=no
-AC_MSG_CHECKING([whether to look for GNOME Keyring])
-if test "$with_gnome_keyring" != "no"; then
+AC_ARG_WITH(old_gnome_keyring,
+  AS_HELP_STRING([--with-old-gnome-keyring], 
+                 [Enable old GNOME Keyring for auth credentials (prefer --with-gnome-keyring)]),
+                 [with_old_gnome_keyring="$withval"],
+                 [with_old_gnome_keyring=no])
+
+found_old_gnome_keyring=no
+AC_MSG_CHECKING([whether to look for old GNOME Keyring])
+if test "$with_old_gnome_keyring" != "no"; then
   AC_MSG_RESULT([yes])
   case "$host" in
   *-*-darwin*)
-    if test "$with_gnome_keyring" = "yes"; then
-      AC_MSG_ERROR([--with-gnome-keyring is not supported on Mac OS X.])
+    if test "$with_old_gnome_keyring" = "yes"; then
+      AC_MSG_ERROR([--with-old-gnome-keyring is not supported on Mac OS X.])
     else
-      with_gnome_keyring=no
+      with_old_gnome_keyring=no
     fi
     ;;
   *)
@@ -586,47 +588,48 @@ if test "$with_gnome_keyring" != "no"; t
             old_CPPFLAGS="$CPPFLAGS"
             SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
             CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
-            AC_CHECK_HEADER(gnome-keyring.h, found_gnome_keyring=yes, found_gnome_keyring=no)
+            AC_CHECK_HEADER(gnome-keyring.h, found_old_gnome_keyring=yes, found_old_gnome_keyring=no)
             AC_MSG_CHECKING([for GNOME Keyring])
-            if test "$found_gnome_keyring" = "yes"; then
+            if test "$found_old_gnome_keyring" = "yes"; then
               AC_MSG_RESULT([yes])
               AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1], 
                         [Is GNOME Keyring support enabled?])
               CPPFLAGS="$old_CPPFLAGS"
               SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
+              SVN_GNOME_KEYRING_PCLIBS="glib-2.0 gnome-keyring-1"
             else
               AC_MSG_RESULT([no])
-              if test "$with_gnome_keyring" = "yes"; then
+              if test "$with_old_gnome_keyring" = "yes"; then
                 AC_MSG_ERROR([cannot find GNOME Keyring])
               fi
             fi
           else
             AC_MSG_RESULT([no])
-            if test "$with_gnome_keyring" = "yes"; then
+            if test "$with_old_gnome_keyring" = "yes"; then
               AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
             else
-              with_gnome_keyring=no
+              with_old_gnome_keyring=no
             fi
           fi
         else
-          if test "$with_gnome_keyring" = "yes"; then
+          if test "$with_old_gnome_keyring" = "yes"; then
             AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
           else
-            with_gnome_keyring=no
+            with_old_gnome_keyring=no
           fi
         fi
       else
-        if test "$with_gnome_keyring" = "yes"; then
+        if test "$with_old_gnome_keyring" = "yes"; then
           AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
         else
-          with_gnome_keyring=no
+          with_old_gnome_keyring=no
         fi
       fi
     else
-      if test "$with_gnome_keyring" = "yes"; then
-        AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
+      if test "$with_old_gnome_keyring" = "yes"; then
+        AC_MSG_ERROR([--with-old-gnome-keyring conflicts with --disable-shared])
       else
-        with_gnome_keyring=no
+        with_old_gnome_keyring=no
       fi
     fi
     ;;
@@ -637,6 +640,9 @@ fi
 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
 
+dnl LibSecret -------------------
+SVN_LIB_SECRET
+
 dnl Googlemock -----------------
 AC_ARG_ENABLE([googlemock],
   AS_HELP_STRING([--disable-googlemock],
@@ -864,18 +870,21 @@ fi
 
 dnl plaintext passwords -------------------
 AC_ARG_ENABLE(plaintext-password-storage,
-AS_HELP_STRING([--disable-plaintext-password-storage],
-               [Disable on-disk caching of plaintext passwords and passphrases.
-                (Leaving this functionality enabled will not force Subversion
+AS_HELP_STRING([--enable-plaintext-password-storage],
+               [Enable on-disk caching of plaintext passwords and passphrases.
+                (Enabling this functionality will not force Subversion
                 to store passwords in plaintext, but does permit users to
                 explicitly allow that behavior via runtime configuration.)]),
-[
-   if test "$enableval" = "no"; then
-      AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
-      AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
-                [Defined if plaintext password/passphrase storage is disabled])
-   fi
-])
+[plaintext_passwordd_storage="$enableval"],
+[plaintext_passwordd_storage="no"])
+
+if test "$plaintext_passwordd_storage" = "yes"; then
+  AC_MSG_WARN([Enabling plaintext password/passphrase storage])
+else
+  AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
+  AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
+            [Defined if plaintext password/passphrase storage is disabled])
+fi
 
 dnl Build and install rules -------------------
 
@@ -904,7 +913,7 @@ if test "$svn_lib_kwallet" = "yes"; then
   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
 fi
 
-if test "$found_gnome_keyring" = "yes"; then
+if test "$found_old_gnome_keyring" = "yes" || test "$found_gnome_keyring" = "yes"; then
   BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
   INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
@@ -945,8 +954,9 @@ AC_FUNC_VPRINTF
 dnl check for functions needed in special file handling
 AC_CHECK_FUNCS(symlink readlink)
 
-dnl check for uname
+dnl check for uname and ELF headers
 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
+AC_CHECK_HEADERS(elf.h)
 
 dnl check for termios
 AC_CHECK_HEADER(termios.h,[
@@ -1005,6 +1015,7 @@ if test "$enable_disallowing_of_undefine
     for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
       eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
     done
+    shared_only_LDFLAGS="-Wl,--no-undefined"
   else
     AC_MSG_RESULT([no])
     if test "$enable_disallowing_of_undefined_references" = "yes"; then
@@ -1012,8 +1023,6 @@ if test "$enable_disallowing_of_undefine
     fi
   fi
 fi
-AC_SUBST([libsvn_auth_gnome_keyring_LDFLAGS])
-AC_SUBST([libsvn_auth_kwallet_LDFLAGS])
 AC_SUBST([libsvn_client_LDFLAGS])
 AC_SUBST([libsvn_delta_LDFLAGS])
 AC_SUBST([libsvn_diff_LDFLAGS])
@@ -1030,6 +1039,7 @@ AC_SUBST([libsvn_ra_git_LDFLAGS])
 AC_SUBST([libsvn_repos_LDFLAGS])
 AC_SUBST([libsvn_subr_LDFLAGS])
 AC_SUBST([libsvn_wc_LDFLAGS])
+AC_SUBST([shared_only_LDFLAGS])
 
 
 AC_ARG_ENABLE(maintainer-mode,
@@ -1218,6 +1228,10 @@ AS_HELP_STRING([--with-editor=PATH],
 
 SVN_LIB_Z
 
+SVN_LZ4
+
+SVN_UTF8PROC
+
 MOD_ACTIVATION=""
 AC_ARG_ENABLE(mod-activation,
 AS_HELP_STRING([--enable-mod-activation],
@@ -1301,7 +1315,7 @@ fi
 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
 
 # The minimum version for the JVM runtime for our Java bytecode.
-JAVA_OLDEST_WORKING_VER='1.6'
+JAVA_OLDEST_WORKING_VER='1.8'
 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
 
@@ -1310,7 +1324,7 @@ AC_PATH_PROG(PERL, perl, none)
 if test -n "$RUBY"; then
   AC_PATH_PROG(RUBY, "$RUBY", none)
 else
-  AC_PATH_PROGS(RUBY, ruby ruby1.8 ruby18 ruby1.9 ruby1 ruby1.9.3 ruby193 ruby2.0 ruby2.1, none)
+  AC_PATH_PROGS(RUBY, ruby ruby1 ruby1.8 ruby18 ruby1.9 ruby19 ruby1.9.3 ruby193 ruby2 ruby2.0 ruby20 ruby2.1 ruby21 ruby2.2 ruby22 ruby2.3 ruby23 ruby2.4 ruby24, none)
 fi
 if test "$RUBY" != "none"; then
   AC_MSG_CHECKING([rb_hash_foreach])
@@ -1319,7 +1333,7 @@ if test "$RUBY" != "none"; then
     if test -n "$RDOC"; then
       AC_PATH_PROG(RDOC, "$RDOC", none)
     else
-      AC_PATH_PROGS(RDOC, rdoc rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2.0 rdoc2.1, none)
+      AC_PATH_PROGS(RDOC, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 rdoc2.4 rdoc24, none)
     fi
     AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
     svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
@@ -1343,7 +1357,7 @@ if test "$RUBY" != "none"; then
       # Disallow Ruby between 1.8.7 and 1.9.3
       RUBY="none"
       AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
-      AC_MSG_WARN([Only 1.8.x and 1.9.3 releases are supported at this time])
+      AC_MSG_WARN([Only 1.8.x and 1.9.3 or later are supported at this time])
     fi
   else
     AC_MSG_RESULT([no])
@@ -1356,6 +1370,10 @@ if test "$RUBY" != "none"; then
 fi
 
 SVN_CHECK_SWIG
+AC_ARG_VAR(SWIG_FEATURES, [SWIG feature flags common to all bindings])
+AC_ARG_VAR(SWIG_RB_FEATURES, [SWIG feature flags specific to Ruby bindings])
+AC_ARG_VAR(SWIG_PL_FEATURES, [SWIG feature flags specific to Perl bindings])
+AC_ARG_VAR(SWIG_PY_FEATURES, [SWIG feature flags specific to Python bindings])
 
 SVN_CHECK_CTYPESGEN
 
@@ -1548,12 +1566,6 @@ if test "$CC" = "clang"; then
   SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
 fi
 
-# Need to strip '-no-cpp-precomp' from CPPFLAGS for SWIG as well.
-SWIG_CPPFLAGS="$CPPFLAGS"
-SVN_STRIP_FLAG(SWIG_CPPFLAGS, [-no-cpp-precomp ])
-SVN_STRIP_FLAG(SWIG_CPPFLAGS, [-Wdate-time ])
-AC_SUBST([SWIG_CPPFLAGS])
-
 dnl Since this is used only on Unix-y systems, define the path separator as '/'
 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
         [Defined to be the path separator used on your local filesystem])

Modified: subversion/branches/ra-git/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in (original)
+++ subversion/branches/ra-git/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in Wed Nov  7 12:30:06 2018
@@ -1205,10 +1205,11 @@ while (defined (my $load_dir = &get_next
 
                 read_from_process($svn,
                                   'propset',
-                                  $property_name,
                                   '--file',
                                   $tmpfile,
-                                  $add_file);
+                                  '--',
+                                  $property_name,
+                                  $add_file . "@");
               }
           }
       }

Modified: subversion/branches/ra-git/contrib/client-side/svn_update.pl
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svn_update.pl?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svn_update.pl (original)
+++ subversion/branches/ra-git/contrib/client-side/svn_update.pl Wed Nov  7 12:30:06 2018
@@ -31,7 +31,7 @@
 # given file(s) that would require >n minutes, where n is the
 # server's magic timeout (5 min.??), the server will timeout.  This
 # leaves the client/user in an unswell state.  See issue #2048 for
-# details http://subversion.tigris.org/issues/show_bug.cgi?id=2048.
+# details https://issues.apache.org/jira/browse/SVN-2048.
 #
 # One solution is to wrap the 'svn update' command in a script that
 # will perform the update one file at a time.  The problem with

Modified: subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py (original)
+++ subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py Wed Nov  7 12:30:06 2018
@@ -259,7 +259,7 @@ class Migrator:
         # Run the final version of the new svn:mergeinfo through the
         # parser to ensure it is in canonical form, e.g. no overlapping
         # or unordered rangelists, see
-        # http://subversion.tigris.org/issues/show_bug.cgi?id=3302.
+        # https://issues.apache.org/jira/browse/SVN-3302.
         mergeinfo = svn.core.svn_mergeinfo_parse(new_mergeinfo_prop_val)
         new_mergeinfo_prop_val = mergeinfo2str(mergeinfo)
 

Modified: subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py (original)
+++ subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py Wed Nov  7 12:30:06 2018
@@ -1367,7 +1367,7 @@ def action_init(target_dir, target_props
         # the copy target is the merge target, then we want to mark as
         # integrated up to the specific rev of the merge target from
         # which the merge source was copied.  (Longer discussion at:
-        # http://subversion.tigris.org/issues/show_bug.cgi?id=2810  )
+        # https://issues.apache.org/jira/browse/SVN-2810  )
         cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(target_dir)
 
         cf_pathid = None

Modified: subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py (original)
+++ subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py Wed Nov  7 12:30:06 2018
@@ -28,7 +28,7 @@ Usage: remove-zombie-locks.py REPOS-PATH
   locks on files that don't exist in the HEAD revision, removing any found.
 
   This script is a workaround for Subversion issue #2507
-  http://subversion.tigris.org/issues/show_bug.cgi?id=2507
+  https://issues.apache.org/jira/browse/SVN-2507
 
 Examples:
 

Modified: subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py (original)
+++ subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py Wed Nov  7 12:30:06 2018
@@ -30,7 +30,7 @@ fixed_ids = {}
 fixed_checksums = {}
 
 # Youngest FSFS format we know how to handle.
-MAX_FSFS_FORMAT = 5
+MAX_FSFS_FORMAT = 6
 
 # ----------------------------------------------------------------------
 # Functions

Modified: subversion/branches/ra-git/doc/user/svn-best-practices.html
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/doc/user/svn-best-practices.html?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/doc/user/svn-best-practices.html (original)
+++ subversion/branches/ra-git/doc/user/svn-best-practices.html Wed Nov  7 12:30:06 2018
@@ -240,7 +240,7 @@ while somebody else is in the process of
 <li>Users commit their day-to-day work on <tt>/trunk</tt>.</li>
 
 <li>Rule #1: <tt>/trunk</tt> must compile and pass regression tests at
-all times.  Committers who violate this rule are publically
+all times.  Committers who violate this rule are publicly
 humiliated.</li>
 
 <li>Rule #2: a single commit (changeset) must not be so large

Modified: subversion/branches/ra-git/gen-make.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/gen-make.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/gen-make.py (original)
+++ subversion/branches/ra-git/gen-make.py Wed Nov  7 12:30:06 2018
@@ -48,7 +48,6 @@ sys.path.insert(1, 'build')
 
 gen_modules = {
   'make' : ('gen_make', 'Makefiles for POSIX systems'),
-  'dsp' : ('gen_msvc_dsp', 'MSVC 6.x project files'),
   'vcproj' : ('gen_vcnet_vcproj', 'VC.Net project files'),
   }
 
@@ -209,7 +208,7 @@ def _usage_exit(err=None):
   print("           Use static openssl")
   print("")
   print("  --vsnet-version=VER")
-  print("           generate for VS.NET version VER (2005-2015 or 9.0-14.0)")
+  print("           generate for VS.NET version VER (2005-2017 or 9.0-15.0)")
   print("           [implies '-t vcproj']")
   print("")
   print(" -D NAME[=value]")

Modified: subversion/branches/ra-git/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/get-deps.sh?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/get-deps.sh (original)
+++ subversion/branches/ra-git/get-deps.sh Wed Nov  7 12:30:06 2018
@@ -35,7 +35,9 @@ APR_VERSION=${APR_VERSION:-"1.4.6"}
 APU_VERSION=${APU_VERSION:-"1.5.1"}
 SERF_VERSION=${SERF_VERSION:-"1.3.8"}
 ZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"}
-SQLITE_VERSION=${SQLITE_VERSION:-"3.7.15.1"}
+SQLITE_VERSION=${SQLITE_VERSION:-"3.8.11.1"}
+# Used to construct the SQLite download URL.
+SQLITE_VERSION_REL_YEAR=2015
 GTEST_VERSION=${GMOCK_VERSION:-"1.7.0"}
 GMOCK_VERSION=${GMOCK_VERSION:-"1.7.0"}
 HTTPD_VERSION=${HTTPD_VERSION:-"2.4.10"}
@@ -116,7 +118,7 @@ get_sqlite() {
     test -d $BASEDIR/sqlite-amalgamation && return
 
     cd $TEMPDIR
-    $HTTP_FETCH http://www.sqlite.org/$SQLITE.zip
+    $HTTP_FETCH https://www.sqlite.org/$SQLITE_VERSION_REL_YEAR/$SQLITE.zip
     cd $BASEDIR
 
     unzip -q $TEMPDIR/$SQLITE.zip

Modified: subversion/branches/ra-git/notes/EuroOSCON-2005-vc-bof.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/EuroOSCON-2005-vc-bof.txt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/EuroOSCON-2005-vc-bof.txt (original)
+++ subversion/branches/ra-git/notes/EuroOSCON-2005-vc-bof.txt Wed Nov  7 12:30:06 2018
@@ -151,7 +151,7 @@ Comments from projects that switched fro
 
 * The w.c. space penalty is a real issue for large projects.  Disk
   space is not as cheap as we thought, those .svn/text-base/* files
-  hurt.  See http://subversion.tigris.org/issues/show_bug.cgi?id=525.
+  hurt.  See https://issues.apache.org/jira/browse/SVN-525.
   
   [gerv: Random thought - if you can't easily do copy-on-write, could
   you perhaps share text-base files by hard-linking between multiple

Modified: subversion/branches/ra-git/notes/client-configuration
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/client-configuration?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/client-configuration (original)
+++ subversion/branches/ra-git/notes/client-configuration Wed Nov  7 12:30:06 2018
@@ -59,8 +59,8 @@ dev@s.a.o: "Bikeshed: configuration over
 dev@s.a.o: "Default commandline args";
     http://svn.haxx.se/dev/archive-2010-12/0449.shtml
 Issue 1974: "server-side config which 'broadcasts' to clients";
-    http://subversion.tigris.org/issues/show_bug.cgi?id=1974
+    https://issues.apache.org/jira/browse/SVN-1974
 Issue 3765: "client-configurable default args";
-    http://subversion.tigris.org/issues/show_bug.cgi?id=3765
+    https://issues.apache.org/jira/browse/SVN-3765
 Issue 3769: "Add APIs which allow library consumers to specify configuration options"
-    http://subversion.tigris.org/issues/show_bug.cgi?id=3769
+    https://issues.apache.org/jira/browse/SVN-3769

Modified: subversion/branches/ra-git/notes/commit-access-templates/partial-committer.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/commit-access-templates/partial-committer.tmpl?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/commit-access-templates/partial-committer.tmpl (original)
+++ subversion/branches/ra-git/notes/commit-access-templates/partial-committer.tmpl Wed Nov  7 12:30:06 2018
@@ -15,18 +15,20 @@ Hi New Partial Committer,
 The other committers and I would like to offer you partial commit
 access for maintenance of the Subversion FROBLINGS area.
 
-If you already have partial commit access to another area, you can
+#ifdef THE_INVITEE_ALREADY_HAS_PARTIAL_COMMIT_ACCESS_TO_ANOTHER_AREA
+Since you already have partial commit access to another area, you can
 accept this offer by simply replying to this mail.  We'll update the
 COMMITTERS file (or you can do it yourself, that's fine too).
 
-If you do not already have partial commit access, you can accept this
-offer by replying to this mail and following the instructions at
-<http://www.apache.org/dev/new-committers-guide.html#cla>.  You will
-receive an email with details on how to access your account.  Once you
-have access to your account, you are encouraged to modify the COMMITTERS
-file appropriately, which also serves as a test of your new username and
-password.
+#else
+You can accept this offer by replying to this mail and following the
+instructions at <http://www.apache.org/dev/new-committers-guide.html#cla>.
+You will receive an email with details on how to access your account.
+Once you have access to your account, you are encouraged to modify the
+COMMITTERS file appropriately, which also serves as a test of your new
+username and password.
 
+#endif
 Remember that you can still post patches for review before committing,
 when you want to.  Commit access just means that you can rely on your
 own judgment to decide when something is ready for commit.  Also, if

Modified: subversion/branches/ra-git/notes/diff-optimizations.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/diff-optimizations.txt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/diff-optimizations.txt (original)
+++ subversion/branches/ra-git/notes/diff-optimizations.txt Wed Nov  7 12:30:06 2018
@@ -80,7 +80,7 @@ See also issue #1966 (libsvn_diff needs
 References
 ----------
 
-[1] http://subversion.tigris.org/issues/show_bug.cgi?id=1966 (libsvn_diff
+[1] https://issues.apache.org/jira/browse/SVN-1966 (libsvn_diff
 needs 'non-minimal-diff' mode)
 [2] Miller, W., and Myers, E.W. "A File Comparison Program.", Software -
     Practice & Experience 15 (1985), pp. 1025-1040.

Modified: subversion/branches/ra-git/notes/dump-load-format.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/dump-load-format.txt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/dump-load-format.txt (original)
+++ subversion/branches/ra-git/notes/dump-load-format.txt Wed Nov  7 12:30:06 2018
@@ -72,6 +72,10 @@ UUID: <hex-string>
 where the <hex-string> is the UUID of the originating repository.
 An example UUID is "7bf7a5ef-cabf-0310-b7d4-93df341afa7e".
 
+As generated by Subversion, these UUIDs are "Version 1", incorporating
+the MAC of the originating machine. The presentation is in RFC4122
+form without the "urn:" or "uuid:" prefixes.
+
 ==== Revision records ====
 
 A Revision record has three headers and is usually followed by a

Modified: subversion/branches/ra-git/notes/http-and-webdav/webdav-protocol
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/http-and-webdav/webdav-protocol?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/http-and-webdav/webdav-protocol (original)
+++ subversion/branches/ra-git/notes/http-and-webdav/webdav-protocol Wed Nov  7 12:30:06 2018
@@ -425,7 +425,7 @@ Purpose: Retrieve a record of the change
 
 Target URL: Prior to Subversion 1.8, the target URL was the public
             resource URL of the aforementioned subtree.  Per issue #4287
-            (http://subversion.tigris.org/issues/show_bug.cgi?id=4287),
+            (https://issues.apache.org/jira/browse/SVN-4287),
             it was discovered that this was an incorrect approach, so
             in Subversion 1.8, mod_dav_svn allowed clients to submit
             this report (with a slightly different Request syntax)

Modified: subversion/branches/ra-git/notes/merge-tracking/func-spec.html
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/merge-tracking/func-spec.html?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/merge-tracking/func-spec.html (original)
+++ subversion/branches/ra-git/notes/merge-tracking/func-spec.html Wed Nov  7 12:30:06 2018
@@ -166,7 +166,7 @@ mergeinfo for the merge is set on the de
   was present in the WC despite being outside its parent's 'depth'
   attribute) and could not then re-add a node of the same name in order to
   perform both halves of an incoming replacement.  <a
-  href="http://subversion.tigris.org/issues/show_bug.cgi?id=4164" >Issue
+  href="https://issues.apache.org/jira/browse/SVN-4164" >Issue
   #4164 "inconsistencies in merge handling of adds vs. edits in shallow
   targets"</a> is related.</em></p>
 
@@ -264,7 +264,7 @@ SSRP - Switched subtree's repository par
 
 <h3>Delete</h3>
 
-<p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=4163"
+<p><a href="https://issues.apache.org/jira/browse/SVN-4163"
   >Issue #4163 "merged deletion of switched subtrees records non-inheritable
   mergeinfo"</a>: If a merge deletes the path SS, the desired behaviour
   is currently undefined and the actual behaviour is that a commit will
@@ -473,7 +473,7 @@ command-line could also produce an outpu
 <p>Recent discussion can be found <a
 href="http://subversion.tigris.org/servlets/ReadMsg?listName=dev&amp;msgNo=128233"
 >here</a>.  Development is tracked <a
-href="http://subversion.tigris.org/issues/show_bug.cgi?id=2820">here</a>.</p>
+href="https://issues.apache.org/jira/browse/SVN-2820">here</a>.</p>
 
 <p>The <a href="requirements.html#change-set-availability">Show
 Changesets Blocked from Merging</a> portion of this feature is
@@ -493,7 +493,7 @@ allow for XML-formatted output (for mach
 <p>Recent discussion can be found <a
 href="http://subversion.tigris.org/servlets/ReadMsg?listName=dev&amp;msgNo=128233"
 >here</a>.  Development is tracked <a
-href="http://subversion.tigris.org/issues/show_bug.cgi?id=2835">here</a>.</p>
+href="https://issues.apache.org/jira/browse/SVN-2835">here</a>.</p>
 
 <p>The <a href="requirements.html#find-changeset">Find Paths
 containing Specific Incarnation of Versioned Resource</a> portion of
@@ -951,7 +951,7 @@ here:</p>
   >Original API proposal</a></li>
 </ul>
 
-<p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2022"
+<p><a href="https://issues.apache.org/jira/browse/SVN-2022"
 >Issue #2022</a> is loosely related.</p>
 
 <div class="h3" id="distributable-resolution">

Modified: subversion/branches/ra-git/notes/merge-tracking/requirements.html
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/merge-tracking/requirements.html?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/merge-tracking/requirements.html (original)
+++ subversion/branches/ra-git/notes/merge-tracking/requirements.html Wed Nov  7 12:30:06 2018
@@ -122,7 +122,7 @@ section).</p>
 
 <p><code>svn merge</code> needs to handle renames better.  This
 requires <a
-href="http://subversion.tigris.org/issues/show_bug.cgi?id=898">true
+href="https://issues.apache.org/jira/browse/SVN-898">true
 rename support</a>.</p>
 
 <p>Edit foo.c on branch A.  Rename foo.c to bar.c on branch B.</p>
@@ -138,7 +138,7 @@ rename support</a>.</p>
 </ol>
 
 <p>Problem #2 stems from the fact that we don't have <a
-href="http://subversion.tigris.org/issues/show_bug.cgi?id=898">true
+href="https://issues.apache.org/jira/browse/SVN-898">true
 renames</a>, just copies (with history) and deletes.  That's not
 fixable without a FS schema change, and (probably) a libsvn_wc
 rewrite.</p>
@@ -372,7 +372,7 @@ some filesystem backend implementation d
 items in the dump as a sort of "soft data" (which would allow them to
 be used for "translating" the merge tracking data at load time, where
 those IDs would be otherwise irrelevant).  See <a
-href="http://subversion.tigris.org/issues/show_bug.cgi?id=1525">issue
+href="https://issues.apache.org/jira/browse/SVN-1525">issue
 1525</a> about user-visible entity IDs.</p>
 
 </div>  <!-- dump-load -->

Modified: subversion/branches/ra-git/notes/merge-tracking/summit.html
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/merge-tracking/summit.html?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/merge-tracking/summit.html (original)
+++ subversion/branches/ra-git/notes/merge-tracking/summit.html Wed Nov  7 12:30:06 2018
@@ -166,7 +166,7 @@ the average user needs.</p>
   resources in the first place?  Can this be achieved with a
   finer-grained <code>svn switch</code>?  Note: This is related to the
   shared file storage issue in Subversion's own issue tracker,
-  <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2286"
+  <a href="https://issues.apache.org/jira/browse/SVN-2286"
       >issue&nbsp;#2286</a>.  It was also expressed at the
   <a
   href="http://svn.apache.org/repos/asf/subversion/trunk/notes/EuroOSCON-2005-vc-bof.txt"