Author: gstein
Date: Thu Dec 14 07:42:34 2023
New Revision: 1914650

URL: http://svn.apache.org/viewvc?rev=1914650&view=rev
Log:
Add a second test for the mailer.py script, using revisions from
Apache Subversion itself, rather than mocked up revisions.

* subversion/tools/hook-scripts/mailer/tests:
  (svn:ignore): ignore some artifacts from the t1 and t2 tests
* subversion/tools/hook-scripts/mailer/tests/mailer-t2.sh:
  (..): new. fetch a set of dumpfiles for various revisions-of-interest
    from the primary repository. Use these to construct some local
    repositories. Run the mailer script on the revisions, and compare
    the result against the reference/expected result.
* subversion/tools/hook-scripts/mailer/tests/t2-reference:
  (..): new. expected mailer output for each revision-of-interest

Added:
    subversion/trunk/tools/hook-scripts/mailer/tests/mailer-t2.sh   (with props)
    subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/
    subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1849322
    subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1884610
    subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1902575
    subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1912632
Modified:
    subversion/trunk/tools/hook-scripts/mailer/tests/   (props changed)

Propchange: subversion/trunk/tools/hook-scripts/mailer/tests/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Dec 14 07:42:34 2023
@@ -0,0 +1,3 @@
+mailer-t1.current
+mailer-init.*
+t2-root

Added: subversion/trunk/tools/hook-scripts/mailer/tests/mailer-t2.sh
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/tests/mailer-t2.sh?rev=1914650&view=auto
==============================================================================
--- subversion/trunk/tools/hook-scripts/mailer/tests/mailer-t2.sh (added)
+++ subversion/trunk/tools/hook-scripts/mailer/tests/mailer-t2.sh Thu Dec 14 
07:42:34 2023
@@ -0,0 +1,116 @@
+#!/bin/sh
+#
+# USAGE: ./mailer-t2.sh
+#
+# Uses some interesting revisions for testing:
+#   r1849322 -- copied from; removals
+#   r1884610 -- copied unchanged; file removed
+#   r1902575 -- add with props
+#   r1912632 -- many files modified
+#
+
+SVNRDUMP="/usr/bin/svnrdump"
+SVNADMIN="/usr/bin/svnadmin"
+SVNDUMPFILTER="/usr/bin/svndumpfilter"
+
+ROOT_URL="https://svn.apache.org/repos/asf/subversion/trunk";
+
+THIS_DIR=$(dirname "$0")
+THIS_DIR=$(cd "$THIS_DIR" && pwd)
+
+MAILER="$THIS_DIR"/../mailer.py
+CONFIG="$THIS_DIR"/../mailer.conf.example
+
+T2_ROOT="$THIS_DIR"/t2-root
+if (mkdir "$T2_ROOT" 2> /dev/null) || /bin/false; then
+    echo "Created: $T2_ROOT"
+else
+    echo "Exists: $T2_ROOT"
+fi
+cd "$T2_ROOT"
+
+REPOS_DIR="$T2_ROOT"/repos
+
+REV1=1849322 ; DUMP1=dump.${REV1}.gz
+REV2=1884610 ; DUMP2=dump.${REV2}.gz
+REV3=1902575 ; DUMP3=dump.${REV3}.gz
+REV4=1912632 ; DUMP4=dump.${REV4}.gz
+
+if test ! -f $DUMP1 ; then
+    # We need some historical revisions for the copies in $REV1.
+    # Just get content from the subdir with the bulk of changes,
+    # and then filter out empty revisions.
+    RPREV=1849295
+    echo Fetching r$RPREV:r$REV1 ...
+    $SVNRDUMP dump -r $RPREV:$REV1 $ROOT_URL/subversion/bindings \
+        | $SVNDUMPFILTER include --drop-empty-revs / \
+        | gzip --best \
+        > $DUMP1
+fi
+if test ! -f $DUMP2 ; then
+    echo Fetching r$REV2 ...
+    RPREV=$(($REV2 - 1))
+    $SVNRDUMP dump -r $RPREV:$REV2 $ROOT_URL | gzip --best > $DUMP2
+fi
+if test ! -f $DUMP3 ; then
+    echo Fetching r$REV3 ...
+    RPREV=$(($REV3 - 1))
+    $SVNRDUMP dump -r $RPREV:$REV3 $ROOT_URL | gzip --best > $DUMP3
+fi
+if test ! -f $DUMP4 ; then
+    echo Fetching r$REV4 ...
+    RPREV=$(($REV4 - 1))
+    $SVNRDUMP dump -r $RPREV:$REV4 $ROOT_URL | gzip --best > $DUMP4
+fi
+
+if test ! -d ./repos.$REV1 ; then
+    echo Creating repos for $REV1 ...
+    $SVNADMIN create ./repos.$REV1
+    gunzip --to-stdout $DUMP1 | $SVNADMIN load --quiet ./repos.$REV1
+fi
+# The revision of interest in this repository: r28
+$MAILER commit ./repos.$REV1 28 $CONFIG > output.$REV1
+if cmp --quiet output.$REV1 ../t2-reference/output.$REV1; then
+    echo SUCCESS for $REV1
+else
+    echo FAIL -- differences detected for $REV1
+fi
+
+if test ! -d ./repos.$REV2 ; then
+    echo Creating repos for $REV2 ...
+    $SVNADMIN create ./repos.$REV2
+    gunzip --to-stdout $DUMP2 | $SVNADMIN load --quiet ./repos.$REV2
+fi
+# The revision of interest in this repository: r2
+$MAILER commit ./repos.$REV2 2 $CONFIG > output.$REV2
+if cmp --quiet output.$REV2 ../t2-reference/output.$REV2; then
+    echo SUCCESS for $REV2
+else
+    echo FAIL -- differences detected for $REV2
+fi
+
+if test ! -d ./repos.$REV3 ; then
+    echo Creating repos for $REV3 ...
+    $SVNADMIN create ./repos.$REV3
+    gunzip --to-stdout $DUMP3 | $SVNADMIN load --quiet ./repos.$REV3
+fi
+# The revision of interest in this repository: r2
+$MAILER commit ./repos.$REV3 2 $CONFIG > output.$REV3
+if cmp --quiet output.$REV3 ../t2-reference/output.$REV3; then
+    echo SUCCESS for $REV3
+else
+    echo FAIL -- differences detected for $REV3
+fi
+
+if test ! -d ./repos.$REV4 ; then
+    echo Creating repos for $REV4 ...
+    $SVNADMIN create ./repos.$REV4
+    gunzip --to-stdout $DUMP4 | $SVNADMIN load --quiet ./repos.$REV4
+fi
+# The revision of interest in this repository: r2
+$MAILER commit ./repos.$REV4 2 $CONFIG > output.$REV4
+if cmp --quiet output.$REV4 ../t2-reference/output.$REV4; then
+    echo SUCCESS for $REV4
+else
+    echo FAIL -- differences detected for $REV4
+fi

Propchange: subversion/trunk/tools/hook-scripts/mailer/tests/mailer-t2.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1849322
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1849322?rev=1914650&view=auto
==============================================================================
--- 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1849322 
(added)
+++ 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1849322 
Thu Dec 14 07:42:34 2023
@@ -0,0 +1,599 @@
+Group: defaults
+Subject: r28 - in subversion/trunk/subversion/bindings: cxx cxx/include 
cxx/include/svncxxhl cxx/include/svnxx cxx/src cxx/src/aprwrap cxx/src/private 
cxx/tests cxxhl
+
+Author: brane
+Date: Wed Dec 19 11:03:16 2018
+New Revision: 28
+
+Log:
+Rename the C++HL library to SVN++, renaming files, namespaces and directories.
+
+* Makefile.in
+  (SVNXX_INCLUDES): Renamed and changed from CXXHL_INCLUDES.
+  (COMPILE_SVNXX_CXX): Renamed and changed from COMPILE_CXXHL_CXX.
+* build.conf
+  (options.private-includes): Update C++ bindings' header paths.
+  (libsvnxx): Rename and update target from libsvncxxhl.
+* build/generator/gen_make.py
+  (Generator.write): Use 'svnxx-' instead of 'cxxhl-' for extra-install check.
+* build/generator/gen_win.py
+  (WinGeneratorBase.get_win_includes): Check for 'svnxx', not 'cxxhl'.
+
+* subversion/bindings/cxx/: Renamed from .../bindings/cxxhl/.
+* subversion/bindings/cxx/include/svnxx/: Renamed from .../include/svncxxhl/.
+* subversion/bindings/cxx/include/svnxx.hpp: Renamed from 
.../include/svncxxhl.hpp.
+* subversion/bindings/cxx/**: Rename namespaces, include paths and guards.
+
+Added:
+   subversion/trunk/subversion/bindings/cxx/
+      - copied from r27, subversion/trunk/subversion/bindings/cxxhl/
+   subversion/trunk/subversion/bindings/cxx/include/svnxx/
+      - copied from r1, 
subversion/trunk/subversion/bindings/cxxhl/include/svncxxhl/
+   subversion/trunk/subversion/bindings/cxx/include/svnxx.hpp
+      - copied, changed from r1, 
subversion/trunk/subversion/bindings/cxxhl/include/svncxxhl.hpp
+Deleted:
+   subversion/trunk/subversion/bindings/cxx/include/svncxxhl/
+   subversion/trunk/subversion/bindings/cxx/include/svncxxhl.hpp
+   subversion/trunk/subversion/bindings/cxxhl/
+Modified:
+   subversion/trunk/subversion/bindings/cxx/include/svnxx/_compat.hpp
+   subversion/trunk/subversion/bindings/cxx/include/svnxx/exception.hpp
+   subversion/trunk/subversion/bindings/cxx/include/svnxx/tristate.hpp
+   subversion/trunk/subversion/bindings/cxx/src/aprwrap.hpp
+   subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp
+   subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp
+   subversion/trunk/subversion/bindings/cxx/src/aprwrap/impl.cpp
+   subversion/trunk/subversion/bindings/cxx/src/aprwrap/pool.hpp
+   subversion/trunk/subversion/bindings/cxx/src/exception.cpp
+   subversion/trunk/subversion/bindings/cxx/src/private.hpp
+   subversion/trunk/subversion/bindings/cxx/src/private/exception-private.hpp
+   subversion/trunk/subversion/bindings/cxx/src/tristate.cpp
+   subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp
+
+Copied and modified: 
subversion/trunk/subversion/bindings/cxx/include/svnxx.hpp (from r1, 
subversion/trunk/subversion/bindings/cxxhl/include/svncxxhl.hpp)
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/include/svncxxhl.hpp    Wed Dec 
19 06:53:59 2018        (r1, copy source)
++++ subversion/trunk/subversion/bindings/cxx/include/svnxx.hpp Wed Dec 19 
11:03:16 2018        (r28)
+@@ -25,13 +25,13 @@
+ #error "This is a C++ header file."
+ #endif
+ 
+-#ifndef SVN_CXXHL_HPP
+-#define SVN_CXXHL_HPP
++#ifndef SVNXX_HPP
++#define SVNXX_HPP
+ 
+ // Expose the whole API and alias the default version namespace
+-#include "svncxxhl/exception.hpp"
+-#include "svncxxhl/tristate.hpp"
++#include "svnxx/exception.hpp"
++#include "svnxx/tristate.hpp"
+ 
+-namespace SVN = ::apache::subversion::cxxhl;
++namespace SVN = ::apache::subversion::svnxx;
+ 
+-#endif  // SVN_CXXHL_HPP
++#endif  // SVNXX_HPP
+
+Modified: subversion/trunk/subversion/bindings/cxx/include/svnxx/_compat.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp    
Wed Dec 19 06:53:59 2018        (r1)
++++ subversion/trunk/subversion/bindings/cxx/include/svnxx/_compat.hpp Wed Dec 
19 11:03:16 2018        (r28)
+@@ -25,58 +25,58 @@
+ #error "This is a C++ header file."
+ #endif
+ 
+-#ifndef SVN_CXXHL_COMPAT_HPP
+-#define SVN_CXXHL_COMPAT_HPP
++#ifndef SVNXX_COMPAT_HPP
++#define SVNXX_COMPAT_HPP
+ 
+ // Configuration test: std::shared_ptr<> and friends
+ // Currently detects: clang++, g++, msvc-2010+
+-#ifndef SVN_CXXHL_HAVE_STD_SMART_PTRS
++#ifndef SVNXX_HAVE_STD_SMART_PTRS
+ #  if   (defined(__clang__) && __cplusplus >= 201103L) \
+      || (defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__)) \
+      || (defined(_MSC_VER) && _MSC_VER >= 1600)
+-#    define SVN_CXXHL_HAVE_STD_SMART_PTRS
++#    define SVNXX_HAVE_STD_SMART_PTRS
+ #  endif  // config test: std::shared_ptr<>
+-#endif  // SVN_CXXHL_HAVE_STD_SMART_PTRS
++#endif  // SVNXX_HAVE_STD_SMART_PTRS
+ 
+ // Configuration test: std::tr1::shared_ptr<> and friends
+ // Currently detects: clang++, g++
+-#ifndef SVN_CXXHL_HAVE_STD_SMART_PTRS
+-#  ifndef SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS
++#ifndef SVNXX_HAVE_STD_SMART_PTRS
++#  ifndef SVNXX_HAVE_STD_TR1_SMART_PTRS
+ #    if   defined(__GNUC__) \
+        && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1)
+-#      define SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS
++#      define SVNXX_HAVE_STD_TR1_SMART_PTRS
+ #    endif  // config test: std::tr1::shared_ptr<>
+-#  endif  // SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS
+-#endif  // SVN_CXXHL_HAVE_STD_SMART_PTRS
++#  endif  // SVNXX_HAVE_STD_TR1_SMART_PTRS
++#endif  // SVNXX_HAVE_STD_SMART_PTRS
+ 
+ 
+-#if defined(SVN_CXXHL_HAVE_STD_SMART_PTRS)
++#if defined(SVNXX_HAVE_STD_SMART_PTRS)
+ 
+ #include <memory>
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace compat {
+ using std::weak_ptr;
+ using std::shared_ptr;
+ using std::enable_shared_from_this;
+ } // namespace compat
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#elif defined(SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS)
++#elif defined(SVNXX_HAVE_STD_TR1_SMART_PTRS)
+ 
+ #include <tr1/memory>
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace compat {
+ using std::tr1::weak_ptr;
+ using std::tr1::shared_ptr;
+ using std::tr1::enable_shared_from_this;
+ } // namespace compat
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+@@ -85,41 +85,41 @@
+ // ::std given known compiler characteristics, then try Boost as a
+ // last resort.
+ 
+-#define SVN_CXXHL_USING_BOOST
++#define SVNXX_USING_BOOST
+ #include <boost/shared_ptr.hpp>
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace compat {
+ using boost::weak_ptr;
+ using boost::shared_ptr;
+ using boost::enable_shared_from_this;
+ } // namespace compat
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif  // SVN_CXXHL_HAVE_STD_SMART_PTRS
++#endif  // SVNXX_HAVE_STD_SMART_PTRS
+ 
+ // Configuration test: noncopyable mixin.
+-#ifdef SVN_CXXHL_USING_BOOST
++#ifdef SVNXX_USING_BOOST
+ 
+ #include <boost/noncopyable.hpp>
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace compat {
+ using boost::noncopyable;
+ } // namespace compat
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#else  // !SVN_CXXHL_USING_BOOST
++#else  // !SVNXX_USING_BOOST
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace compat {
+ namespace noncopyable_
+ {
+@@ -135,10 +135,10 @@
+ } // namespace noncopyable_
+ typedef noncopyable_::noncopyable noncopyable;
+ } // namespace compat
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif // SVN_CXXHL_USING_BOOST
++#endif // SVNXX_USING_BOOST
+ 
+-#endif  // SVN_CXXHL_COMPAT_HPP
++#endif  // SVNXX_COMPAT_HPP
+
+Modified: subversion/trunk/subversion/bindings/cxx/include/svnxx/exception.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp  
Wed Dec 19 06:53:59 2018        (r1)
++++ subversion/trunk/subversion/bindings/cxx/include/svnxx/exception.hpp       
Wed Dec 19 11:03:16 2018        (r28)
+@@ -25,19 +25,19 @@
+ #error "This is a C++ header file."
+ #endif
+ 
+-#ifndef SVN_CXXHL_EXCEPTION_HPP
+-#define SVN_CXXHL_EXCEPTION_HPP
++#ifndef SVNXX_EXCEPTION_HPP
++#define SVNXX_EXCEPTION_HPP
+ 
+ #include <exception>
+ #include <string>
+ #include <utility>
+ #include <vector>
+ 
+-#include "svncxxhl/_compat.hpp"
++#include "svnxx/_compat.hpp"
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ 
+ namespace compat {} // Announce the compat namespace for shared_ptr lookup
+ 
+@@ -181,8 +181,8 @@
+     {}
+ };
+ 
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif  // SVN_CXXHL_EXCEPTION_HPP
++#endif  // SVNXX_EXCEPTION_HPP
+
+Modified: subversion/trunk/subversion/bindings/cxx/include/svnxx/tristate.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp   
Wed Dec 19 06:53:59 2018        (r1)
++++ subversion/trunk/subversion/bindings/cxx/include/svnxx/tristate.hpp        
Wed Dec 19 11:03:16 2018        (r28)
+@@ -25,12 +25,12 @@
+ #error "This is a C++ header file."
+ #endif
+ 
+-#ifndef SVN_CXXHL_TRISTATE_HPP
+-#define SVN_CXXHL_TRISTATE_HPP
++#ifndef SVNXX_TRISTATE_HPP
++#define SVNXX_TRISTATE_HPP
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ 
+ class Tristate
+ {
+@@ -57,8 +57,8 @@
+   short int m_value;
+ };
+ 
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif  // SVN_CXXHL_TRISTATE_HPP
++#endif  // SVNXX_TRISTATE_HPP
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/aprwrap.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/aprwrap.hpp Wed Dec 19 
10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/aprwrap.hpp   Wed Dec 19 
11:03:16 2018        (r28)
+@@ -21,14 +21,14 @@
+  * @endcopyright
+  */
+ 
+-#ifndef SVN_CXXHL_PRIVATE_APRWRAP_H
+-#define SVN_CXXHL_PRIVATE_APRWRAP_H
++#ifndef SVNXX_PRIVATE_APRWRAP_H
++#define SVNXX_PRIVATE_APRWRAP_H
+ 
+ // Expose the whole APR wrapper API and alias the namespace
+ #include "aprwrap/pool.hpp"
+ #include "aprwrap/hash.hpp"
+ #include "aprwrap/array.hpp"
+ 
+-namespace APR = ::apache::subversion::cxxhl::apr;
++namespace APR = ::apache::subversion::svnxx::apr;
+ 
+-#endif // SVN_CXXHL_PRIVATE_APRWRAP_H
++#endif // SVNXX_PRIVATE_APRWRAP_H
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/aprwrap/array.hpp   Wed Dec 
19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp     Wed Dec 
19 11:03:16 2018        (r28)
+@@ -21,8 +21,8 @@
+  * @endcopyright
+  */
+ 
+-#ifndef SVN_CXXHL_PRIVATE_APRWRAP_ARRAY_H
+-#define SVN_CXXHL_PRIVATE_APRWRAP_ARRAY_H
++#ifndef SVNXX_PRIVATE_APRWRAP_ARRAY_H
++#define SVNXX_PRIVATE_APRWRAP_ARRAY_H
+ 
+ #include <stdexcept>
+ 
+@@ -33,7 +33,7 @@
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace apr {
+ 
+ /**
+@@ -273,8 +273,8 @@
+ };
+ 
+ } // namespace apr
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif // SVN_CXXHL_PRIVATE_APRWRAP_HASH_H
++#endif // SVNXX_PRIVATE_APRWRAP_HASH_H
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/aprwrap/hash.hpp    Wed Dec 
19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp      Wed Dec 
19 11:03:16 2018        (r28)
+@@ -21,15 +21,15 @@
+  * @endcopyright
+  */
+ 
+-#ifndef SVN_CXXHL_PRIVATE_APRWRAP_HASH_H
+-#define SVN_CXXHL_PRIVATE_APRWRAP_HASH_H
++#ifndef SVNXX_PRIVATE_APRWRAP_HASH_H
++#define SVNXX_PRIVATE_APRWRAP_HASH_H
+ 
+ #include <apr_hash.h>
+ #include "pool.hpp"
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace apr {
+ 
+ // Template forward declaration
+@@ -364,8 +364,8 @@
+ 
+ 
+ } // namespace apr
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif // SVN_CXXHL_PRIVATE_APRWRAP_HASH_H
++#endif // SVNXX_PRIVATE_APRWRAP_HASH_H
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/aprwrap/impl.cpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/aprwrap/impl.cpp    Wed Dec 
19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/aprwrap/impl.cpp      Wed Dec 
19 11:03:16 2018        (r28)
+@@ -33,7 +33,7 @@
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace apr {
+ 
+ //
+@@ -67,7 +67,7 @@
+           state = svn_atomic_cas(&init_state, NONE, NONE);
+         }
+       if (state == START)
+-        throw cxxhl::InternalError(
++        throw svnxx::InternalError(
+             _("APR pool initialization failed: Timed out"));
+       return root_pool;
+ 
+@@ -79,7 +79,7 @@
+       return root_pool;
+ 
+     default:
+-      throw cxxhl::InternalError(
++      throw svnxx::InternalError(
+           _("APR pool initialization failed: Invalid state"));
+     }
+ }
+@@ -105,6 +105,6 @@
+ }
+ 
+ } // namespace apr
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/aprwrap/pool.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/aprwrap/pool.hpp    Wed Dec 
19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/aprwrap/pool.hpp      Wed Dec 
19 11:03:16 2018        (r28)
+@@ -21,13 +21,13 @@
+  * @endcopyright
+  */
+ 
+-#ifndef SVN_CXXHL_PRIVATE_APRWRAP_POOL_H
+-#define SVN_CXXHL_PRIVATE_APRWRAP_POOL_H
++#ifndef SVNXX_PRIVATE_APRWRAP_POOL_H
++#define SVNXX_PRIVATE_APRWRAP_POOL_H
+ 
+ #include <cstdlib>
+ 
+-#include "svncxxhl/exception.hpp"
+-#include "svncxxhl/_compat.hpp"
++#include "svnxx/exception.hpp"
++#include "svnxx/_compat.hpp"
+ 
+ #include "svn_pools.h"
+ #undef TRUE
+@@ -35,7 +35,7 @@
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace apr {
+ 
+ // Forward declaration
+@@ -191,8 +191,8 @@
+ }
+ 
+ } // namespace apr
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif // SVN_CXXHL_PRIVATE_APRWRAP_POOL_H
++#endif // SVNXX_PRIVATE_APRWRAP_POOL_H
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/exception.cpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/exception.cpp       Wed Dec 
19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/exception.cpp Wed Dec 19 
11:03:16 2018        (r28)
+@@ -27,7 +27,7 @@
+ #include <new>
+ #include <sstream>
+ 
+-#include "svncxxhl/exception.hpp"
++#include "svnxx/exception.hpp"
+ #include "private.hpp"
+ #include "aprwrap.hpp"
+ 
+@@ -41,7 +41,7 @@
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ 
+ namespace detail {
+ 
+@@ -326,6 +326,6 @@
+ }
+ } // namespace detail
+ 
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/private.hpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/private.hpp Wed Dec 19 
10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/private.hpp   Wed Dec 19 
11:03:16 2018        (r28)
+@@ -21,9 +21,9 @@
+  * @endcopyright
+  */
+ 
+-#ifndef SVN_CXXHL_PRIVATE_PRIVATE_H
+-#define SVN_CXXHL_PRIVATE_PRIVATE_H
++#ifndef SVNXX_PRIVATE_PRIVATE_H
++#define SVNXX_PRIVATE_PRIVATE_H
+ 
+ #include "private/exception-private.hpp"
+ 
+-#endif // SVN_CXXHL_PRIVATE_PRIVATE_H
++#endif // SVNXX_PRIVATE_PRIVATE_H
+
+Modified: 
subversion/trunk/subversion/bindings/cxx/src/private/exception-private.hpp
+==============================================================================
+--- 
subversion/trunk/subversion/bindings/cxxhl/src/private/exception-private.hpp    
   Wed Dec 19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/private/exception-private.hpp 
Wed Dec 19 11:03:16 2018        (r28)
+@@ -25,14 +25,14 @@
+ #error "This is a C++ header file."
+ #endif
+ 
+-#ifndef SVN_CXXHL_PRIVATE_EXCEPTION_HPP
+-#define SVN_CXXHL_PRIVATE_EXCEPTION_HPP
++#ifndef SVNXX_PRIVATE_EXCEPTION_HPP
++#define SVNXX_PRIVATE_EXCEPTION_HPP
+ 
+ #include "svn_error.h"
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ namespace detail {
+ 
+ /**
+@@ -42,8 +42,8 @@
+ void checked_call(svn_error_t* err);
+ 
+ } // namespace detail
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+ 
+-#endif // SVN_CXXHL_PRIVATE_EXCEPTION_HPP
++#endif // SVNXX_PRIVATE_EXCEPTION_HPP
+
+Modified: subversion/trunk/subversion/bindings/cxx/src/tristate.cpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/src/tristate.cpp        Wed Dec 
19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/src/tristate.cpp  Wed Dec 19 
11:03:16 2018        (r28)
+@@ -21,7 +21,7 @@
+  * @endcopyright
+  */
+ 
+-#include "svncxxhl/tristate.hpp"
++#include "svnxx/tristate.hpp"
+ 
+ #include "svn_types.h"
+ #undef TRUE
+@@ -29,7 +29,7 @@
+ 
+ namespace apache {
+ namespace subversion {
+-namespace cxxhl {
++namespace svnxx {
+ 
+ Tristate::Tristate(short value) throw()
+     : m_value(value)
+@@ -39,6 +39,6 @@
+ const Tristate Tristate::FALSE = Tristate(svn_tristate_false);
+ const Tristate Tristate::UNKNOWN = Tristate(svn_tristate_unknown);
+ 
+-} // namespace cxxhl
++} // namespace svnxx
+ } // namespace subversion
+ } // namespace apache
+
+Modified: subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp
+==============================================================================
+--- subversion/trunk/subversion/bindings/cxxhl/tests/test_exception.cpp        
Wed Dec 19 10:49:47 2018        (r27)
++++ subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp  Wed Dec 
19 11:03:16 2018        (r28)
+@@ -25,7 +25,7 @@
+ #include <ios>
+ #include <iostream>
+ 
+-#include "svncxxhl.hpp"
++#include "svnxx.hpp"
+ #include "../src/private.hpp"
+ 
+ #include <apr.h>

Added: 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1884610
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1884610?rev=1914650&view=auto
==============================================================================
--- 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1884610 
(added)
+++ 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1884610 
Thu Dec 14 07:42:34 2023
@@ -0,0 +1,1036 @@
+Group: defaults
+Subject: r2 - in subversion/trunk: . build/ac-macros subversion/bindings/swig
+
+Author: futatuki
+Date: Fri Dec 18 09:32:35 2020
+New Revision: 2
+
+Log:
+Distinguish configure scripts on release mode and non release mode.
+
+Although makefiles in Subversion's release tarball do not support generating
+SWIG language bindings C source files using swig, the configure scripts
+shipped with the release tarball had an option to specify how to find
+SWIG executable, and checked it.  To avoid this, we introduce "release mode"
+to the configure script and hide the option and code to check a SWIG
+executable on it.  
+
+* . (svn:ignore):
+  Ignore aclocal.m4.
+* Makefile.in (local-extraclean):
+  Clean up aclocal.m4.
+* aclocal.m4.in ():
+  Renamed from aclocal.m4
+* autogen.sh ():
+  Write an macro "SVN_RELEASE_MODE" definition to aclocal.m4 if --release
+  is specfied on the command line.
+* build/ac-macros/swig.m4
+  (): Also mension about Perl and Ruby.
+  (SVN_CHECK_SWIG):
+   - Hide --with-swig option in release mode.
+   - Check SWIG executable only if non release mode and at least one of 
+     SWIG bindings is specfied to be built.
+  (SVN_FIND_SWIG):
+    Move checks for each bindings into new macro SVN_DETERMINE_SWIG_OPTS.
+  (SVN_DETERMINE_SWIG_OPTS): New macro split from SVN_FIND_SWIG. 
+  - When not in release mode, warn if Perl/Python/Ruby interpreter is set but
+   SWIG is not found. Also do not build them with make swig-pl/make swig-py/
+   make swig-rb in this case.
+  - Check swig version only when it is needed and when not in release mode.
+* configure.ac ():
+  - Tweak help string for --with-swig-perl, --with-swig-python,
+    --with-swig-ruby. 
+  - Warn if --with-swig-perl is not specified but variable 'PERL' is set.
+  - Warn if --with-swig-ruby is not specified but variable 'RUBY' is set,
+    even the value is not 'no' nor 'none'.
+* subversion/bindings/swig/INSTALL (Step 2):
+  Mention that configure and makefiles in the release tarball don't
+  support generating SWIG bindings C source files.
+
+Review by: brane
+           (commit message, help string, and the structure of
+            SVN_CHECK_SWIG macro)
+
+Added:
+   subversion/trunk/aclocal.m4.in
+      - copied unchanged from r1, subversion/trunk/aclocal.m4
+Deleted:
+   subversion/trunk/aclocal.m4
+Modified:
+   subversion/trunk/   (props changed)
+   subversion/trunk/Makefile.in
+   subversion/trunk/autogen.sh
+   subversion/trunk/build/ac-macros/swig.m4
+   subversion/trunk/configure.ac
+   subversion/trunk/subversion/bindings/swig/INSTALL
+
+Modified: subversion/trunk/Makefile.in
+==============================================================================
+--- subversion/trunk/Makefile.in       Fri Dec 18 08:23:03 2020        (r1)
++++ subversion/trunk/Makefile.in       Fri Dec 18 09:32:35 2020        (r2)
+@@ -478,6 +478,7 @@
+ local-extraclean: extraclean-bindings local-distclean
+       rm -f $(top_srcdir)/build-outputs.mk \
+               $(top_srcdir)/subversion/svn_private_config.h.in \
++              $(top_srcdir)/aclocal.m4 \
+               $(top_srcdir)/configure \
+               $(top_srcdir)/gen-make.opts \
+               $(top_srcdir)/build/config.guess \
+
+Copied: subversion/trunk/aclocal.m4.in (from r1, subversion/trunk/aclocal.m4)
+==============================================================================
+--- /dev/null  00:00:00 1970   (empty, because file is newly added)
++++ subversion/trunk/aclocal.m4.in     Fri Dec 18 09:32:35 2020        (r2, 
copy of r1, subversion/trunk/aclocal.m4)
+@@ -0,0 +1,61 @@
++#
++#
++#   Licensed to the Apache Software Foundation (ASF) under one
++#   or more contributor license agreements.  See the NOTICE file
++#   distributed with this work for additional information
++#   regarding copyright ownership.  The ASF licenses this file
++#   to you under the Apache License, Version 2.0 (the
++#   "License"); you may not use this file except in compliance
++#   with the License.  You may obtain a copy of the License at
++#
++#     http://www.apache.org/licenses/LICENSE-2.0
++#
++#   Unless required by applicable law or agreed to in writing,
++#   software distributed under the License is distributed on an
++#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
++#   KIND, either express or implied.  See the License for the
++#   specific language governing permissions and limitations
++#   under the License.
++#
++#
++# aclocal.m4: Supplementary macros used by Subversion's configure.ac
++#
++# These are here rather than directly in configure.ac, since this prevents
++# comments in the macro files being copied into configure.ac, producing
++# useless bloat. (This is significant - a 12kB reduction in size!)
++
++# Include macros distributed by the APR project
++sinclude(build/ac-macros/find_apr.m4)
++sinclude(build/ac-macros/find_apu.m4)
++
++# Include Subversion's own custom macros
++sinclude(build/ac-macros/svn-macros.m4)
++
++sinclude(build/ac-macros/apache.m4)
++sinclude(build/ac-macros/apr.m4)
++sinclude(build/ac-macros/aprutil.m4)
++sinclude(build/ac-macros/apr_memcache.m4)
++sinclude(build/ac-macros/ax_boost_base.m4)
++sinclude(build/ac-macros/ax_boost_unit_test_framework.m4)
++sinclude(build/ac-macros/berkeley-db.m4)
++sinclude(build/ac-macros/compiler.m4)
++sinclude(build/ac-macros/ctypesgen.m4)
++sinclude(build/ac-macros/java.m4)
++sinclude(build/ac-macros/sasl.m4)
++sinclude(build/ac-macros/serf.m4)
++sinclude(build/ac-macros/sqlite.m4)
++sinclude(build/ac-macros/py3c.m4)
++sinclude(build/ac-macros/swig.m4)
++sinclude(build/ac-macros/zlib.m4)
++sinclude(build/ac-macros/lz4.m4)
++sinclude(build/ac-macros/kwallet.m4)
++sinclude(build/ac-macros/libsecret.m4)
++sinclude(build/ac-macros/utf8proc.m4)
++sinclude(build/ac-macros/macosx.m4)
++
++# Include the libtool macros
++sinclude(build/libtool.m4)
++sinclude(build/ltoptions.m4)
++sinclude(build/ltsugar.m4)
++sinclude(build/ltversion.m4)
++sinclude(build/lt~obsolete.m4)
+
+Modified: subversion/trunk/autogen.sh
+==============================================================================
+--- subversion/trunk/autogen.sh        Fri Dec 18 08:23:03 2020        (r1)
++++ subversion/trunk/autogen.sh        Fri Dec 18 09:32:35 2020        (r2)
+@@ -51,6 +51,17 @@
+       ;;
+   esac
+ done
++
++# Generate aclocal.m4
++cp -f aclocal.m4.in aclocal.m4
++if test -n "$RELEASE_MODE"; then
++  cat <<EOF >>aclocal.m4
++
++# Generated by 'autogen.sh --release'
++AC_DEFUN([SVN_RELEASE_MODE],[1])
++EOF
++fi
++
+ # ### The order of parameters is important; buildcheck.sh depends on it and
+ # ### we don't want to copy the fancy option parsing loop there. For the
+ # ### same reason, all parameters should be quoted, so that buildcheck.sh
+
+Modified: subversion/trunk/build/ac-macros/swig.m4
+==============================================================================
+--- subversion/trunk/build/ac-macros/swig.m4   Fri Dec 18 08:23:03 2020        
(r1)
++++ subversion/trunk/build/ac-macros/swig.m4   Fri Dec 18 09:32:35 2020        
(r2)
+@@ -22,29 +22,39 @@
+ dnl if it is, then check to see if we have the correct version of python.
+ dnl
+ dnl if we do, then set up the appropriate SWIG_ variables to build the
+-dnl python bindings.
++dnl Python, Perl, and Ruby bindings.
+ 
+ AC_DEFUN(SVN_CHECK_SWIG,
+ [
+-  AC_ARG_WITH(swig,
+-              AS_HELP_STRING([--with-swig=PATH],
+-                             [Try to use 'PATH/bin/swig' to build the
+-                              swig bindings.  If PATH is not specified,
+-                              look for a 'swig' binary in your PATH.]),
++  m4_ifndef([SVN_RELEASE_MODE],
+   [
+-    case "$withval" in
++    AC_ARG_WITH(swig,
++                AS_HELP_STRING([--with-swig=PATH],
++                               [Try to use 'PATH/bin/swig' to build the
++                                swig bindings.  If PATH is not specified,
++                                look for a 'swig' binary in your PATH.]),
++    [
++      case "$withval" in
+       yes)
+         svn_find_swig_arg=required
+       ;;
+       *)
+         svn_find_swig_arg=$withval
+       ;;
+-    esac
+-  ],
+-  [
+-    svn_find_swig_arg=check
++      esac
++    ],
++    [
++      if    test "$SWIG_PY_PYTHON" != "none" \
++         || test "$SWIG_PL_PERL"   != "none" \
++         || test "$SWIG_RB_RUBY"   != "none" ; then
++        svn_find_swig_arg=check
++      else
++        svn_find_swig_arg=no
++      fi
++    ])
++    SVN_FIND_SWIG($svn_find_swig_arg)
+   ])
+-  SVN_FIND_SWIG($svn_find_swig_arg)
++  SVN_DETERMINE_SWIG_OPTS
+ ])
+ 
+ AC_DEFUN(SVN_FIND_SWIG,
+@@ -93,92 +103,104 @@
+       AC_MSG_WARN([Subversion requires SWIG >= 1.3.24])
+     fi
+   fi
++])
+ 
+-  SWIG_PY_COMPILE="none"
+-  SWIG_PY_LINK="none"
+-  SWIG_PY_OPTS="none"
+-  SWIG_PY_ERRMSG="check config.log for details"
+-  if test "$SWIG_PY_PYTHON" != "none"; then
+-    AC_MSG_NOTICE([Configuring python swig binding])
+ 
+-    AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
+-      ac_cv_python_includes="`$SWIG_PY_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
+-      SWIG_PY_ERRMSG="no distutils found"
+-      AC_MSG_WARN([python bindings cannot be built without distutils module])
++AC_DEFUN(SVN_DETERMINE_SWIG_OPTS,
++[
++  m4_ifndef([SVN_RELEASE_MODE],
++  [
++    # not in release mode  
++    SWIG_PY_COMPILE="none"
++    SWIG_PY_LINK="none"
++    SWIG_PY_OPTS="none"
++    SWIG_PY_ERRMSG="check config.log for details"
++    if test "$SWIG_PY_PYTHON" = "none"; then
++      SWIG_PY_ERRMSG="You specfied not to build Python bindings or \
++suitable Python interpreter is not found."
+     else
+-
+-      python_header_found="no"
+-
+-      save_cppflags="$CPPFLAGS"
+-      CPPFLAGS="$CPPFLAGS $ac_cv_python_includes"
+-      AC_CHECK_HEADER(Python.h, [
+-        python_header_found="yes"
+-      ])
+-      CPPFLAGS="$save_cppflags"
+-
+-      if test "$python_header_found" = "no"; then
+-        SWIG_PY_ERRMSG="no Python.h found"
+-        AC_MSG_WARN([Python.h not found; disabling python swig bindings])
++      if test "$SWIG" = "none"; then
++        AC_MSG_WARN([You specified to build SWIG Python bindings, but SWIG is 
not found.])
++        SWIG_PY_ERRMSG="SWIG is need to build SWIG Python bindings, but it is 
not found."
+       else
+-        SVN_PY3C()
++        AC_MSG_NOTICE([Configuring python swig binding])
+ 
+-        if test "$py3c_found" = "no"; then
+-          SWIG_PY_ERRMSG="py3c library not found"
+-          AC_MSG_WARN([py3c library not found; disabling python swig 
bindings])
++        AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
++        ac_cv_python_includes="`$SWIG_PY_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
++          SWIG_PY_ERRMSG="no distutils found"
++          AC_MSG_WARN([python bindings cannot be built without distutils 
module])
+         else
+-          AC_CACHE_CHECK([for compiling Python extensions], 
[ac_cv_python_compile],[
+-            ac_cv_python_compile="`$SWIG_PY_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="`$SWIG_PY_PYTHON 
${abs_srcdir}/build/get-py-info.py --link`"
+-          ])
+-          SWIG_PY_LINK="$ac_cv_python_link"
++          python_header_found="no"
+ 
+-          AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[
+-            ac_cv_python_libs="`$SWIG_PY_PYTHON 
${abs_srcdir}/build/get-py-info.py --libs`"
++          save_cppflags="$CPPFLAGS"
++          CPPFLAGS="$CPPFLAGS $ac_cv_python_includes"
++          AC_CHECK_HEADER(Python.h, [
++            python_header_found="yes"
+           ])
+-          SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
++          CPPFLAGS="$save_cppflags"
+ 
+-          if test "$SWIG" = "none"; then
+-            SWIG_PY_ERRMSG=""
++          if test "$python_header_found" = "no"; then
++            SWIG_PY_ERRMSG="no Python.h found"
++            AC_MSG_WARN([Python.h not found; disabling python swig bindings])
+           else
+-            # Look more closely at the SWIG and Python versions to
+-            # determine SWIG_PY_OPTS. We can skip this if we already
+-            # have the SWIG-generated files.
+-            AC_CACHE_CHECK([for Python >= 3], [ac_cv_python_is_py3],[
+-              ac_cv_python_is_py3="no"
+-              $SWIG_PY_PYTHON -c 'import sys; sys.exit(0x3000000 > 
sys.hexversion)' && \
+-                 ac_cv_python_is_py3="yes"
+-            ])
++            SVN_PY3C()
+ 
+-            if test "$ac_cv_python_is_py3" = "yes"; then
+-              if test "$SWIG_VERSION" -ge "300010"; then
+-                dnl SWIG Python bindings successfully configured, clear the 
error message dnl
+-                SWIG_PY_ERRMSG=""
+-              else
+-                SWIG_PY_ERRMSG="SWIG version is not suitable"
+-                AC_MSG_WARN([Subversion Python bindings for Python 3 require 
SWIG 3.0.10 or newer])
+-              fi
+-              if test "$SWIG_VERSION" -lt "400000"; then
+-                SWIG_PY_OPTS="-python -py3 -nofastunpack -modern"
+-              else
+-                SWIG_PY_OPTS="-python -py3 -nofastunpack"
+-              fi
++            if test "$py3c_found" = "no"; then
++              SWIG_PY_ERRMSG="py3c library not found"
++              AC_MSG_WARN([py3c library not found; disabling python swig 
bindings])
+             else
+-              if test "$SWIG_VERSION" -lt "400000"; then
+-                SWIG_PY_OPTS="-python -classic"
+-                dnl SWIG Python bindings successfully configured, clear the 
error message dnl
+-                SWIG_PY_ERRMSG=""
++              AC_CACHE_CHECK([for compiling Python extensions], 
[ac_cv_python_compile],[
++                ac_cv_python_compile="`$SWIG_PY_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="`$SWIG_PY_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="`$SWIG_PY_PYTHON 
${abs_srcdir}/build/get-py-info.py --libs`"
++              ])
++              
SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
++
++              # Look more closely at the SWIG and Python versions to
++              # determine SWIG_PY_OPTS. We can skip this if we already
++              # have the SWIG-generated files.
++              AC_CACHE_CHECK([for Python >= 3], [ac_cv_python_is_py3],[
++                ac_cv_python_is_py3="no"
++                $SWIG_PY_PYTHON -c 'import sys; sys.exit(0x3000000 > 
sys.hexversion)' && \
++                   ac_cv_python_is_py3="yes"
++              ])
++
++              if test "$ac_cv_python_is_py3" = "yes"; then
++                if test "$SWIG_VERSION" -ge "300010"; then
++                  dnl SWIG Python bindings successfully configured, clear the 
error message dnl
++                  SWIG_PY_ERRMSG=""
++                else
++                  SWIG_PY_ERRMSG="SWIG version is not suitable"
++                  AC_MSG_WARN([Subversion Python bindings for Python 3 
require SWIG 3.0.10 or newer])
++                fi
++                if test "$SWIG_VERSION" -lt "400000"; then
++                  SWIG_PY_OPTS="-python -py3 -nofastunpack -modern"
++                else
++                  SWIG_PY_OPTS="-python -py3 -nofastunpack"
++                fi
+               else
+-                SWIG_PY_OPTS="-python -nofastunpack"
+-                SWIG_PY_ERRMSG="SWIG version is not suitable"
+-                AC_MSG_WARN([Subversion Python bindings for Python 2 require 
1.3.24 <= SWIG < 4.0.0])
++                if test "$SWIG_VERSION" -lt "400000"; then
++                  SWIG_PY_OPTS="-python -classic"
++                  dnl SWIG Python bindings successfully configured, clear the 
error message dnl
++                  SWIG_PY_ERRMSG=""
++                else
++                  SWIG_PY_OPTS="-python -nofastunpack"
++                  SWIG_PY_ERRMSG="SWIG version is not suitable"
++                  AC_MSG_WARN([Subversion Python bindings for Python 2 
require 1.3.24 <= SWIG < 4.0.0])
++                fi
+               fi
+             fi
+           fi
+@@ -186,151 +208,373 @@
+       fi
+     fi
+ 
+-  fi
++    SWIG_PL_ERRMSG="check config.log for details"
++    if test "$SWIG_PL_PERL" = "none"; then
++      SWIG_PL_ERRMSG="You specfied not to build Perl bindings or \
++suitable Perl interpreter is not found."
++    else
++      if test "$SWIG" = "none"; then
++        AC_MSG_WARN([You specified to build SWIG Perl bindings, but SWIG is 
not found.])
++        SWIG_PL_ERRMSG="SWIG is need to build SWIG Perl bindings, but it is 
not found."
++      else
++        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="`$SWIG_PL_PERL -e 'q([[); print $]] * 1000000,$/;'`"
++        AC_MSG_RESULT([$PERL_VERSION])
++        if test "$PERL_VERSION" -ge "5008000"; then
++          SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$SWIG_PL_PERL 
-MExtUtils::Embed -e ccopts`"
++          SWIG_PL_LINK="`$SWIG_PL_PERL -MExtUtils::Embed -e ldopts`"
++          SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
+ 
+-  SWIG_PL_ERRMSG="check config.log for details"
+-  if test "$SWIG_PL_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="`$SWIG_PL_PERL -e 'q([[); print $]] * 1000000,$/;'`"
+-    AC_MSG_RESULT([$PERL_VERSION])
+-    if test "$PERL_VERSION" -ge "5008000"; then
+-      SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$SWIG_PL_PERL -MExtUtils::Embed -e 
ccopts`"
+-      SWIG_PL_LINK="`$SWIG_PL_PERL -MExtUtils::Embed -e ldopts`"
+-      SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
++          dnl SWIG Perl bindings successfully configured, clear the error 
message
++          SWIG_PL_ERRMSG=""
++        else
++          AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
++        fi
++      fi
++    fi
+ 
+-      dnl SWIG Perl bindings successfully configured, clear the error message
+-      SWIG_PL_ERRMSG=""
++    SWIG_RB_COMPILE="none"
++    SWIG_RB_LINK="none"
++    SWIG_RB_ERRMSG="check config.log for details"
++    if test "$SWIG_RB_RUBY" = "none"; then
++      SWIG_RB_ERRMSG="You specfied not to build Ruby bindings or \
++suitable Ruby interpreter is not found."
+     else
+-      AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
+-    fi
+-  fi
++      if test "$SWIG" = "none"; then
++        AC_MSG_WARN([You specified to build SWIG Ruby bindings, but SWIG is 
not found.])
++        SWIG_RB_ERRMSG="SWIG is need to build SWIG Ruby bindings, but it is 
not found."
++      else
++        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="$SWIG_RB_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"
++          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
++        else
++          dnl Ruby 1.8
++          svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
++        fi
++        ])
++        SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
+ 
+-  SWIG_RB_COMPILE="none"
+-  SWIG_RB_LINK="none"
+-  SWIG_RB_ERRMSG="check config.log for details"
+-  if test "$SWIG_RB_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])
++        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="`$SWIG_RB_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])
++
++        dnl SWIG Ruby bindings successfully configured, clear the error 
message
++        SWIG_RB_ERRMSG=""
++      fi
+     fi
+-    rbconfig="$SWIG_RB_RUBY -rrbconfig -e "
++  ],
++  [
++    # in release mode  
++    SWIG_PY_COMPILE="none"
++    SWIG_PY_LINK="none"
++    SWIG_PY_OPTS="none"
++    SWIG_PY_ERRMSG="check config.log for details"
++    if test "$SWIG_PY_PYTHON" = "none"; then
++      SWIG_PY_ERRMSG="You specfied not to build Python bindings or \
++suitable Python interpreter is not found."
++    else
++      AC_MSG_NOTICE([Configuring python swig binding])
++
++      AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
++        ac_cv_python_includes="`$SWIG_PY_PYTHON 
${abs_srcdir}/build/get-py-info.py --includes`"
++      ])
++      SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes"
+ 
+-    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"
+-      if test -d "$rbconfig_rubyarchhdrdir"; then
+-        dnl Ruby >=2.0
+-        svn_cv_ruby_includes="$svn_cv_ruby_includes 
-I$rbconfig_rubyarchhdrdir"
++      if test "$ac_cv_python_includes" = "none"; then
++        SWIG_PY_ERRMSG="no distutils found"
++        AC_MSG_WARN([python bindings cannot be built without distutils 
module])
+       else
+-        svn_cv_ruby_includes="$svn_cv_ruby_includes 
-I$rbconfig_rubyhdrdir/$rbconfig_arch"
++
++        python_header_found="no"
++
++        save_cppflags="$CPPFLAGS"
++        CPPFLAGS="$CPPFLAGS $ac_cv_python_includes"
++        AC_CHECK_HEADER(Python.h, [
++          python_header_found="yes"
++        ])
++        CPPFLAGS="$save_cppflags"
++
++        if test "$python_header_found" = "no"; then
++          SWIG_PY_ERRMSG="no Python.h found"
++          AC_MSG_WARN([Python.h not found; disabling python swig bindings])
++        else
++          SVN_PY3C()
++
++          if test "$py3c_found" = "no"; then
++            SWIG_PY_ERRMSG="py3c library not found"
++            AC_MSG_WARN([py3c library not found; disabling python swig 
bindings])
++          else
++            AC_CACHE_CHECK([for compiling Python extensions], 
[ac_cv_python_compile],[
++              ac_cv_python_compile="`$SWIG_PY_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="`$SWIG_PY_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="`$SWIG_PY_PYTHON 
${abs_srcdir}/build/get-py-info.py --libs`"
++            ])
++            SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
++
++            SWIG_PY_ERRMSG=""
++          fi
++        fi
+       fi
++    fi
++
++    SWIG_PL_ERRMSG="check config.log for details"
++    if test "$SWIG_PL_PERL" = "none"; then
++      SWIG_PL_ERRMSG="You specfied not to build Perl bindings or \
++suitable Perl interpreter is not found."
+     else
+-      dnl Ruby 1.8
+-      svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
++      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="`$SWIG_PL_PERL -e 'q([[); print $]] * 1000000,$/;'`"
++      AC_MSG_RESULT([$PERL_VERSION])
++      if test "$PERL_VERSION" -ge "5008000"; then
++        SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$SWIG_PL_PERL -MExtUtils::Embed 
-e ccopts`"
++        SWIG_PL_LINK="`$SWIG_PL_PERL -MExtUtils::Embed -e ldopts`"
++        SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
++
++        dnl SWIG Perl bindings successfully configured, clear the error 
message
++        SWIG_PL_ERRMSG=""
++      else
++        AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
++      fi
+     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="`$SWIG_RB_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"
++    SWIG_RB_COMPILE="none"
++    SWIG_RB_LINK="none"
++    SWIG_RB_ERRMSG="check config.log for details"
++    if test "$SWIG_RB_RUBY" = "none"; then
++      SWIG_RB_ERRMSG="You specfied not to build Ruby bindings or \
++suitable Ruby interpreter is not found."
++    else
++      rbconfig="$SWIG_RB_RUBY -rrbconfig -e "
+ 
+-    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)`"
++      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"
++        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
++      else
++        dnl Ruby 1.8
++        svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
++      fi
++      ])
++      SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
+ 
+-    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="`$SWIG_RB_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"
++      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_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([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])
++      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])
+ 
+-    dnl SWIG Ruby bindings successfully configured, clear the error message
+-    SWIG_RB_ERRMSG=""
+-  fi
++      dnl SWIG Ruby bindings successfully configured, clear the error message
++      SWIG_RB_ERRMSG=""
++    fi
++  ])
+   AC_SUBST(SWIG)
+   AC_SUBST(SWIG_PY_INCLUDES)
+   AC_SUBST(SWIG_PY_COMPILE)
+
+Modified: subversion/trunk/configure.ac
+==============================================================================
+--- subversion/trunk/configure.ac      Fri Dec 18 08:23:03 2020        (r1)
++++ subversion/trunk/configure.ac      Fri Dec 18 09:32:35 2020        (r2)
+@@ -1321,21 +1321,36 @@
+ 
+ AC_ARG_WITH(swig_perl,
+ [AS_HELP_STRING([[--with-swig-perl[=PATH|auto|no]|--without-swig-perl]],
+-                [specify path to SWIG bindings target Perl interpreter 
[default=auto]])],
++                [Specify path to SWIG bindings target Perl interpreter
++                 [default=auto]. If the option value is 'auto' or it is not
++                  specfied, search for the Perl program.]
++                m4_ifndef([SVN_RELEASE_MODE],
++                  [[Implies --with-swig=yes if PATH is specfied or Perl 
++                    is found on 'auto' detection.]]))
++],
+ [],
+ [
+-if test "$PERL" = "no" -o "$PERL" = "none"; then
+-  with_swig_perl=no
+-  AC_MSG_WARN([Disabling the SWIG Perl bindings' build by setting the PERL])
+-  AC_MSG_WARN([environment variable to "none" is deprecated.])
+-  AC_MSG_WARN([])
+-  AC_MSG_WARN([Please use --without-swig-perl instead.])
++if test -n "$PERL"; then
++  if test "$PERL" = "no" -o "$PERL" = "none"; then
++    with_swig_perl=no
++    AC_MSG_WARN([Disabling the SWIG Perl bindings' build by setting the PERL])
++    AC_MSG_WARN([environment variable to "none" is deprecated.])
++    AC_MSG_WARN([])
++    AC_MSG_WARN([Please use --without-swig-perl instead.])
++  else
++    with_swig_perl=auto
++    AC_MSG_WARN([Specfying the Perl path for SWIG Perl bindings' build])
++    AC_MSG_WARN([by setting the PERL environment variable is deprecated.])
++    AC_MSG_WARN([])
++    AC_MSG_WARN([Please use --with-swig-perl=PATH instead.])
++  fi
+ else
+   with_swig_perl=auto
+ fi
+ ])
+ case $with_swig_perl in
+   yes|auto|"")
++    # honor PERL variable only if it is set and is full path. 
+     AC_PATH_PROG(PERL, perl, none)
+     SWIG_PL_PERL="$PERL"
+     ;;
+@@ -1351,14 +1366,16 @@
+ # Python: as a target of SWIG Python bindings
+ AC_ARG_WITH(swig_python,
+ [AS_HELP_STRING([[--with-swig-python[=PATH|auto|no]|--without-swig-python]],
+-                [specify path to SWIG bindings target Python interpreter 
[default=auto]])],
++                [Specify path to SWIG bindings target Python interpreter
++                 [default=auto]. If the option value is 'auto' or it is not
++                 specfied, search for the Python program.]
++                m4_ifndef([SVN_RELEASE_MODE],
++                  [[Implies --with-swig=yes if PATH is specfied or Python
++                    is found on 'auto' detection.]]))
++],
+ [],
+ [
+-if test "$PYTHON" = "no" -o "$PYTHON" = "none"; then
+-  with_swig_python=no
+-else
+   with_swig_python=auto
+-fi
+ ])
+ case $with_swig_python in
+   yes|auto|"")
+@@ -1375,21 +1392,36 @@
+ 
+ AC_ARG_WITH(swig_ruby,
+ [AS_HELP_STRING([[--with-swig-ruby[=PATH|auto|no]|--without-swig-ruby]],
+-                [specify path to SWIG bindings target Ruby interpreter 
[default=auto]])],
++                [specify path to SWIG bindings target Ruby interpreter
++                 [default=auto]. If the option value is 'auto' or it is not
++                  specfied, search for the Ruby program.] 
++                m4_ifndef([SVN_RELEASE_MODE],
++                  [[Implies --with-swig=yes if PATH is specfied or Ruby
++                    is found on 'auto' detection.]]))
++],
+ [],
+ [
+-if test "$RUBY" = "no" -o "$RUBY" = "none"; then
+-  with_swig_ruby=no
+-  AC_MSG_WARN([Disabling the SWIG Ruby bindings' build by setting the RUBY])
+-  AC_MSG_WARN([environment variable to "none" is deprecated.])
+-  AC_MSG_WARN([])
+-  AC_MSG_WARN([Please use --without-swig-ruby instead.])
++if test -n "$RUBY"; then
++  if test "$RUBY" = "no" -o "$RUBY" = "none"; then
++    with_swig_ruby=no
++    AC_MSG_WARN([Disabling the SWIG Ruby bindings' build by setting the RUBY])
++    AC_MSG_WARN([environment variable to "none" is deprecated.])
++    AC_MSG_WARN([])
++    AC_MSG_WARN([Please use --without-swig-ruby instead.])
++  else
++    with_swig_ruby="$RUBY"
++    AC_MSG_WARN([Specfying the Ruby path for SWIG Ruby bindings' build])
++    AC_MSG_WARN([by setting the RUBY environment variable is deprecated.])
++    AC_MSG_WARN([])
++    AC_MSG_WARN([Please use --with-swig-ruby=PATH instead.])
++  fi
+ else
+   with_swig_ruby=auto
+ fi
+ ])
+ case $with_swig_ruby in
+   yes|auto|"")
++    # honor RUBY variable only if it is set and is full path. 
+     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)
+     SWIG_RB_RUBY="$RUBY"
+     ;;
+
+Modified: subversion/trunk/subversion/bindings/swig/INSTALL
+==============================================================================
+--- subversion/trunk/subversion/bindings/swig/INSTALL  Fri Dec 18 08:23:03 
2020        (r1)
++++ subversion/trunk/subversion/bindings/swig/INSTALL  Fri Dec 18 09:32:35 
2020        (r2)
+@@ -141,7 +141,13 @@
+ 
+   See Subversion's own INSTALL file for details.
+ 
+-  Make sure that Subversion's ./configure script sees your installed SWIG!
++  If you are using a Subversion distribution tarball and want to rebuild
++  the SWIG language bindings C source files with your installed SWIG, 
++  you need to execute autogen.sh, because the bundled configure script 
++  and makefiles don't support it.
++
++  If you don't use SWIG bindings C source files already generated,
++  make sure that Subversion's ./configure script sees your installed SWIG!
+   It tries to detect SWIG near the very end of its output.
+   You can find it by running 'grep "^SWIG=" config.log'.
+ 

Added: 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1902575
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1902575?rev=1914650&view=auto
==============================================================================
--- 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1902575 
(added)
+++ 
subversion/trunk/tools/hook-scripts/mailer/tests/t2-reference/output.1902575 
Thu Dec 14 07:42:34 2023
@@ -0,0 +1,59 @@
+Group: defaults
+Subject: r2 - subversion/trunk/tools/dist
+
+Author: hartmannathan
+Date: Fri Jul  8 11:41:30 2022
+New Revision: 2
+
+Log:
+* tools/dist/make-keys.sh: Adding make-keys.sh script that was floating
+    around on the mailing list. This generates a KEYS file by fetching the
+    public keys of full committers in COMMITTERS.
+
+Suggested by: dsahlberg
+
+Added:
+   subversion/trunk/tools/dist/make-keys.sh   (contents, props changed)
+
+Added: subversion/trunk/tools/dist/make-keys.sh
+==============================================================================
+--- /dev/null  00:00:00 1970   (empty, because file is newly added)
++++ subversion/trunk/tools/dist/make-keys.sh   Fri Jul  8 11:41:30 2022        
(r2)
+@@ -0,0 +1,37 @@
++#!/bin/sh
++
++# Script to construct a KEYS file by fetching public keys of full
++# committers as listed in the COMMITTERS file from people.apache.org.
++#
++# Based on "a piece of code" posted by danielsh on 22 Mar 2022 in the
++# thread "Questions on Release Management Process":
++# 
https://mail-archives.apache.org/mod_mbox/subversion-dev/202203.mbox/%3C20220323035056.GY7687%40tarpaulin.shahaf.local2%3E
++#
++# Run in the top directory of a checkout of SVN's sources, where the
++# COMMITTERS file is located.
++#
++# This will download a bunch of .asc files and then cat them together
++# to form a KEYS file.
++#
++# Requires curl. (Could be reworked to use wget, too, I suppose.)
++
++if [ ! -f COMMITTERS ]; then
++      echo "COMMITTERS file not found."
++      exit 1
++fi
++
++for availid in $( perl -anE 'say $F[0] if (/^Blanket/../END ACTIVE 
FULL.*SCRIPTS LOOK FOR IT/ and /@/)' < COMMITTERS )
++do
++      key_url=https://people.apache.org/keys/committer/${availid}.asc
++      
++      echo -n "Fetching ${key_url}..."
++      curl -sSfO ${key_url} 2> /dev/null
++
++      if [ $? -eq 0 ]; then
++              echo " OK"
++      else
++              echo " MISSING"
++      fi
++done
++
++cat *.asc > KEYS


Reply via email to