git: 235182f47c1a - main - devel/subversion: update to 1.15.0, full rework of master and slave ports

From: Michael Osipov <michaelo_at_FreeBSD.org>
Date: Sun, 01 Nov 2026 20:24:47 UTC
The branch main has been updated by michaelo:

URL: https://cgit.FreeBSD.org/ports/commit/?id=235182f47c1a706f57f9e32c25172c52e9dd94f0

commit 235182f47c1a706f57f9e32c25172c52e9dd94f0
Author:     Michael Osipov <michaelo@FreeBSD.org>
AuthorDate: 2026-10-30 20:23:19 +0000
Commit:     Michael Osipov <michaelo@FreeBSD.org>
CommitDate: 2026-11-01 20:22:55 +0000

    devel/subversion: update to 1.15.0, full rework of master and slave ports
    
    devel/subversion:
    - Bump to 1.15.0 (DISTVERSION).
    - Replace the opt-in WITH_REPOSITORY_CREATION pw useradd/groupadd
      logic with framework USERS=/GROUPS=, mirroring devel/git's
      git_daemon pattern; register the svn account in UIDs/GIDs with
      HOME=/var/db/svn to match svnserve's own rc.d default. Repository
      creation itself is dropped as out of scope for a port to manage.
      Documented in UPDATING, since it affects existing installs with a
      manually-created svn account.
    - TOOLS now only gates genuinely niche binaries; drop it from
      OPTIONS_DEFAULT, add SVNSERVE_WRAPPER instead. svnauthz/
      svnauthz-validate/svnbench move into core via a patch-build.conf
      hunk, matching Debian. svnmover, fsfs-access-map, and x509-parser
      are no longer shipped; fsfs-stats is renamed to svnfsfs-stats via a
      new patch-Makefile.in.
    - DATADIR now installs only xslt/ unconditionally and hook-scripts/
      (flattened, no mailer/ subdirectory) behind a new HOOKS option;
      dist/, buildbot/, po/, dev/, examples/, client-side/, server-side/,
      backup/ are no longer shipped. All C/C++ source is excluded from
      DATADIR via EXTRACT_AFTER_ARGS.
    - SVNSERVE_WRAPPER now activates automatically when enabled (installs
      as bin/svnserve directly, no manual rename from a .sample file) and
      is in OPTIONS_DEFAULT.
    - Update files/patch-build.conf and files/patch-configure for 1.15.0's
      line-number/context shifts.
    
    Slave ports (devel/java-/py-/ruby-/p5-subversion,
    security/subversion-gnome-keyring, www/mod_subversion):
    - Drop the dead SVN_BUILD_BINDINGS=yes assignment from all four
      bindings ports.
    - devel/java-subversion: add the --with-junit requirement introduced
      by upstream r1933892 (BUILD_DEPENDS on java/junit).
    - devel/py-subversion: apply extra-patch-check-swig-py314 only when
      building against LTS; upstream already fixes this for 1.15.0, and
      the patch file itself moved to devel/subversion-lts/files/ in a
      separate commit.
    - PORTREVISION_LATEST reset to 0 for all affected slave ports (the
      version bump itself forces the upgrade signal); PORTREVISION_LTS
      bumped where a port's own Makefile logic changed independent of it.
    
    Verified against real poudriere jail builds (configure/build/stage/
    check-plist/stage-qa/install/pkg info -d), not just Makefile review.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
---
 GIDs                                               |   2 +-
 UIDs                                               |   2 +-
 UPDATING                                           |  29 ++
 devel/java-subversion/Makefile                     |   9 +-
 devel/p5-subversion/Makefile                       |   6 +-
 devel/py-subversion/Makefile                       |  12 +-
 devel/ruby-subversion/Makefile                     |   6 +-
 devel/subversion/Makefile                          | 146 +++------
 devel/subversion/Makefile.common                   |  22 +-
 devel/subversion/distinfo                          |   6 +-
 .../subversion/files/extra-patch-check-swig-py314  | 231 ---------------
 devel/subversion/files/patch-Makefile.in           |  13 +
 devel/subversion/files/patch-build.conf            |  51 +++-
 devel/subversion/files/patch-configure             |   2 +-
 devel/subversion/files/svnserve.in                 |  23 +-
 devel/subversion/pkg-plist                         | 325 ++-------------------
 security/subversion-gnome-keyring/Makefile         |   2 +-
 www/mod_subversion/Makefile                        |   2 +-
 18 files changed, 190 insertions(+), 699 deletions(-)

diff --git a/GIDs b/GIDs
index 068f0344f42d..16054803e8e8 100644
--- a/GIDs
+++ b/GIDs
@@ -345,7 +345,7 @@ evcc:*:400:
 spectrumknx:*:401:
 lid_switchd:*:402:
 airplane_radiosd:*:403:
-# free: 404
+svn:*:404:
 # free: 405
 # free: 406
 # free: 407
diff --git a/UIDs b/UIDs
index b33ac8ccab51..5f9600e721e8 100644
--- a/UIDs
+++ b/UIDs
@@ -350,7 +350,7 @@ evcc:*:400:400::0:0:evcc Daemon:/nonexistent:/usr/sbin/nologin
 spectrumknx:*:401:401::0:0:SpectrumKNX Daemon:/var/db/spectrumknx:/usr/sbin/nologin
 # free: 402
 # free: 403
-# free: 404
+svn:*:404:404::0:0:Subversion daemon:/var/db/svn:/usr/sbin/nologin
 # free: 405
 # free: 406
 # free: 407
diff --git a/UPDATING b/UPDATING
index 11d8fae394ff..9ea5c9b48dcc 100644
--- a/UPDATING
+++ b/UPDATING
@@ -5,6 +5,35 @@ they are unavoidable.
 You should get into the habit of checking this file for changes each time
 you update your ports collection, before attempting any port upgrades.
 
+20261101:
+  AFFECTS: users of devel/subversion
+  AUTHOR: michaelo@apache.org
+
+  The port has been updated to 1.15.0 and received a full rework of
+  both the master and slave ports, not just a version bump. A lot of
+  content that used to ship has been thrown out: the TOOLS option now
+  only gates a handful of genuinely niche binaries (svnauthz,
+  svnauthz-validate, and svnbench moved into the core package); the
+  svnmover, fsfs-access-map, and x509-parser tools are no longer
+  built or installed at all; fsfs-stats is renamed to svnfsfs-stats;
+  and the example-scripts DATADIR no longer ships upstream's
+  contributor/CI/release tooling (dist/, buildbot/, po/, dev/,
+  examples/, client-side/, server-side/, backup/) -- only xslt/ is
+  still installed unconditionally, with hook-scripts/ moved behind a
+  new HOOKS option. Repository creation (the old WITH_REPOSITORY_CREATION
+  knob) has also been dropped entirely; that is now solely the admin's
+  job, not the port's.
+
+  Separately, the svnserve user and group are now managed through the
+  ports framework (USERS=/GROUPS=, registered in the tree's UIDs/GIDs
+  files) instead of the port's own pw useradd/groupadd logic. The
+  standard home directory for the svn account is now /var/db/svn,
+  matching svnserve's own rc.d default. If you already have a
+  manually-created svn user/group from a previous install with a
+  different home directory (e.g. /home/svn), either migrate your data
+  to /var/db/svn or edit the svn user's home directory accordingly;
+  the port will not do this for you.
+
 20261031:
   AFFECTS: users of devel/subversion
   AUTHOR: michaelo@apache.org
diff --git a/devel/java-subversion/Makefile b/devel/java-subversion/Makefile
index e86df6e06d80..6595d4442f10 100644
--- a/devel/java-subversion/Makefile
+++ b/devel/java-subversion/Makefile
@@ -6,16 +6,17 @@ WWW=		https://subversion.apache.org/
 
 USES=		java:build
 
-PORTREVISION_LATEST=	7
-PORTREVISION_LTS=		7
-
-SVN_BUILD_BINDINGS=	yes
+PORTREVISION_LATEST=	0
+PORTREVISION_LTS=		9
 
 .include "${.CURDIR}/../../devel/subversion/Makefile.addons"
 
 CATEGORIES+=	java
 
+BUILD_DEPENDS+=	${JAVAJARDIR}/junit.jar:java/junit
+
 CONFIGURE_ARGS+=	--enable-javahl \
+			--with-junit=${JAVAJARDIR}/junit.jar \
 			--without-swig-perl \
 			--without-swig-python \
 			--without-swig-ruby \
diff --git a/devel/p5-subversion/Makefile b/devel/p5-subversion/Makefile
index 294b2c3eba67..e2dc5b29c9af 100644
--- a/devel/p5-subversion/Makefile
+++ b/devel/p5-subversion/Makefile
@@ -7,10 +7,8 @@ WWW=		https://subversion.apache.org/
 USES=		perl5
 USE_PERL5=	build run
 
-PORTREVISION_LATEST=	2
-PORTREVISION_LTS=		2
-
-SVN_BUILD_BINDINGS=	yes
+PORTREVISION_LATEST=	0
+PORTREVISION_LTS=		3
 
 MAKE_JOBS_UNSAFE=	yes
 
diff --git a/devel/py-subversion/Makefile b/devel/py-subversion/Makefile
index e63b77bdbec3..93e84088e561 100644
--- a/devel/py-subversion/Makefile
+++ b/devel/py-subversion/Makefile
@@ -4,7 +4,7 @@ MAINTAINER=	michaelo@apache.org
 COMMENT=	Python bindings for Apache Subversion
 WWW=		https://subversion.apache.org/
 
-BUILD_DEPENDS=	${LOCALBASE}/include/py3c.h:devel/py3c
+BUILD_DEPENDS+=	${LOCALBASE}/include/py3c.h:devel/py3c
 
 USES=		python:patch
 USE_PYTHON=	flavors py3kplist
@@ -12,15 +12,15 @@ USE_PYTHON=	flavors py3kplist
 # There is bug in python bindings Makefile
 MAKE_JOBS_UNSAFE=yes
 
-PORTREVISION_LATEST=	3
-PORTREVISION_LTS=		3
-
-SVN_BUILD_BINDINGS=	yes
+PORTREVISION_LATEST=	0
+PORTREVISION_LTS=		4
 
 .include "${.CURDIR}/../../devel/subversion/Makefile.addons"
 
 CATEGORIES+=	python
-EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-check-swig-py314
+.if ${WITH_SUBVERSION_VER:U} == LTS
+EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-check-swig-py314
+.endif
 
 CONFIGURE_ARGS+=	--with-swig-python=${PYTHON_CMD} \
 			--without-swig-perl \
diff --git a/devel/ruby-subversion/Makefile b/devel/ruby-subversion/Makefile
index 60a9e03c5895..00522275afd1 100644
--- a/devel/ruby-subversion/Makefile
+++ b/devel/ruby-subversion/Makefile
@@ -6,10 +6,8 @@ WWW=		https://subversion.apache.org/
 
 USES+=		compiler:c11 ruby
 
-PORTREVISION_LATEST=	3
-PORTREVISION_LTS=		3
-
-SVN_BUILD_BINDINGS=	yes
+PORTREVISION_LATEST=	0
+PORTREVISION_LTS=		4
 
 .include "${.CURDIR}/../../devel/subversion/Makefile.addons"
 
diff --git a/devel/subversion/Makefile b/devel/subversion/Makefile
index 88f7b562c798..4685432bc1ea 100644
--- a/devel/subversion/Makefile
+++ b/devel/subversion/Makefile
@@ -1,5 +1,3 @@
-PORTREVISION=	8
-
 MAINTAINER=	michaelo@apache.org
 COMMENT=	Apache Subversion is a full-featured version control system
 WWW=		https://subversion.apache.org/
@@ -13,15 +11,17 @@ PORTDOCS=	BUGS CHANGES COMMITTERS INSTALL README
 OPTIONS_DEFINE=	\
 		DOCS		\
 		GPG_AGENT 	\
+		HOOKS		\
 		NLS		\
 		SASL		\
 		SERF		\
 		SVNSERVE_WRAPPER\
 		TOOLS
 
-OPTIONS_DEFAULT=GPG_AGENT SERF TOOLS
+OPTIONS_DEFAULT=GPG_AGENT SERF SVNSERVE_WRAPPER
 
 GPG_AGENT_DESC=		Enable GPG agent credential cache
+HOOKS_DESC=		Install server-side hook script examples
 SERF_DESC=		WebDAV/Delta-V (HTTP/HTTPS) repo access module
 SVNSERVE_WRAPPER_DESC=	Enable svnserve wrapper (umask setter)
 TOOLS_DESC=		Install several tools
@@ -32,10 +32,8 @@ SHEBANG_REGEX=		./tools/.*
 
 .include "Makefile.common"
 
-SVNREPOS?=	/home/svn/repos
-SVNFSTYPE?=	fsfs
-SVNGROUP?=	svn
-SVNUSER?=	svn
+USERS=		svn
+GROUPS=		svn
 
 GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
 CONFIGURE_ARGS+=	--without-swig-perl \
@@ -45,57 +43,19 @@ CONFIGURE_ARGS+=	--without-swig-perl \
 			--without-kwallet \
 			--with-apxs=no
 
-.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
-SUB_LIST+=	SVNSERVE_BIN_EXT=".bin"
-PLIST_SUB+=	NO_SVNSERVE_WRAPPER="@comment "
-SVNSERVE_EXT=	.bin
-.else
-SUB_LIST+=	SVNSERVE_BIN_EXT=""
-PLIST_SUB+=	NO_SVNSERVE_WRAPPER=""
-SVNSERVE_EXT=
-.endif
-
 TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}
 TEST_TARGET=	check
 
-.if make(repository)
-WITH_REPOSITORY_CREATION=	yes
-.endif
-
-.if defined(WITH_REPOSITORY_CREATION)
-MKREPOS_TARGET=	_mkrepos
-.endif
-
-BINS_TO_STRIP= svn svnadmin svnbench svndumpfilter svnfsfs svnlook svnmucc \
-		svnrdump svnserve${SVNSERVE_EXT} svnsync svnversion
-
-TOOLS_TO_STRIP=	fsfs-access-map svn-mergeinfo-normalizer \
-		 svn-populate-node-origins-index svnauthz \
-		 svnauthz-validate svnconflict svndiff svndiff3 \
-		 svndiff4 svnmover svnraisetreeconflict x509-parser
-
-pre-everything::
-	@${ECHO_MSG} ""
-.if defined(WITH_REPOSITORY_CREATION)
-	@${ECHO_MSG} "I will create (or use, if it exists) '${SVNUSER}' user and '${SVNGROUP}' group."
-	@${ECHO_MSG} "Make sure that all committers are its members."
-	@${ECHO_MSG} ""
-	@${ECHO_MSG} "Repository will be created at '${SVNREPOS}' with user '${SVNUSER}' and group '${SVNGROUP}'."
-	@${ECHO_MSG} "Type of repository will be '${SVNFSTYPE}'."
-	@${ECHO_MSG} "You could change these settings by defining SVNREPOS, SVNGROUP and SVNFSTYPE."
+.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
+BINS_TO_STRIP=	svn svnadmin svnauthz svnauthz-validate svnbench svndumpfilter \
+		svnfsfs svnlook svnmucc svnrdump svnserve.bin svnsync svnversion
 .else
-	@${ECHO_MSG} "You can have the repository created for you by defining"
-	@${ECHO_MSG} "WITH_REPOSITORY_CREATION."
-	@${ECHO_MSG} ""
-	@${ECHO_MSG} "Make sure that:"
-	@${ECHO_MSG} "* all your svn users are members of a common group"
-	@${ECHO_MSG} "* this group is the group id of the db/ and locks/"
-	@${ECHO_MSG} "  subdirectories of your repository"
-	@${ECHO_MSG} "* the above subdirectories are writable by this group"
+BINS_TO_STRIP=	svn svnadmin svnauthz svnauthz-validate svnbench svndumpfilter \
+		svnfsfs svnlook svnmucc svnrdump svnserve svnsync svnversion
 .endif
 
-	@${ECHO_MSG} ""
-	@${ECHO_MSG} "Many useful scripts will be installed into ${DATADIR}"
+TOOLS_TO_STRIP=	svn-mergeinfo-normalizer svn-populate-node-origins-index \
+		svnconflict svndiff svndiff3 svndiff4 svnraisetreeconflict
 
 post-patch-SVNSERVE_WRAPPER-on:
 # the real svnserve binary installs as svnserve.bin so bin/svnserve can be
@@ -110,22 +70,20 @@ post-configure:
 # --with-gnome-keyring (SVN_HAVE_LIBSECRET), not the legacy
 # --with-old-gnome-keyring (SVN_HAVE_GNOME_KEYRING)
 	${REINPLACE_CMD} -E 's%.*#undef SVN_HAVE_LIBSECRET.*%#define SVN_HAVE_LIBSECRET 1%' ${WRKSRC}/subversion/svn_private_config.h
-# ugly hack: save tools directory so we don't have to cleanup before installing
-	${CP} -R ${WRKSRC}/tools ${WRKSRC}/tools.examples
-	${CHMOD} -R a-st,o+rX ${WRKSRC}/tools.examples
 
 post-build-TOOLS-on:
 	${MAKE} -C ${WRKSRC} tools ${MAKE_ARGS}
 
-post-install:	${MKREPOS_TARGET}
+post-install:
 	for F in ${BINS_TO_STRIP} ; do \
 	 ${STRIP_CMD} "${STAGEDIR}${PREFIX}/bin/$${F}" ; \
 	done
 	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so
-	@${MKDIR} ${STAGEDIR}${DATADIR}
-	(cd ${WRKSRC}/tools.examples && ${TAR} --exclude '*.in' -cf - * | ${TAR} -C ${STAGEDIR}${DATADIR} -xof - )
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
 	${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+	@${MKDIR} ${STAGEDIR}${DATADIR}/xslt
+	${INSTALL_DATA} ${WRKSRC}/tools/xslt/svnindex.css ${WRKSRC}/tools/xslt/svnindex.xsl \
+		${STAGEDIR}${DATADIR}/xslt
 	@${MKDIR} ${STAGEDIR}${PREFIX}/share/bash-completion/completions
 	${INSTALL_DATA} ${WRKSRC}/tools/client-side/bash_completion \
 		${STAGEDIR}${PREFIX}/share/bash-completion/completions/svn
@@ -137,7 +95,7 @@ post-install:	${MKREPOS_TARGET}
 .endfor
 
 post-install-SVNSERVE_WRAPPER-on:
-	${INSTALL_SCRIPT} ${FILESDIR}/svnserve.wrapper ${STAGEDIR}${PREFIX}/bin/svnserve.sample
+	${INSTALL_SCRIPT} ${FILESDIR}/svnserve.wrapper ${STAGEDIR}${PREFIX}/bin/svnserve
 
 post-install-TOOLS-on:
 	${MAKE} -C ${WRKSRC} install-tools ${MAKE_ARGS}
@@ -145,55 +103,25 @@ post-install-TOOLS-on:
 	 ${STRIP_CMD} "${STAGEDIR}${PREFIX}/bin/$${F}" ; \
 	done
 
-# ===============================================================================
-repository:	_mkrepos
-
-_SVNGRPFILES=	db locks locks/db.lock locks/db-logs.lock
-SVNGRPFILES=	${_SVNGRPFILES:S,^,${SVNREPOS}/,}
-
-_mkrepos:	.USE
-.if !exists(${SVNREPOS})
-.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
-	@if /usr/sbin/pw groupshow "${SVNGROUP}" >/dev/null 2>&1; then \
-	    ${ECHO_MSG} "You already have a group \"${SVNGROUP}\", so I will use it."; \
-	else \
-	    if /usr/sbin/pw groupadd ${SVNGROUP} -h -; \
-	    then \
-	        ${ECHO_MSG} "Added group \"${SVNGROUP}\"."; \
-	    else \
-	        ${ECHO_MSG} "Adding group \"${SVNGROUP}\" failed..."; \
-	        ${ECHO_MSG} "Please create it, and try again."; \
-	        ${FALSE}; \
-	    fi; \
-	fi
-	@if /usr/sbin/pw usershow "${SVNUSER}" >/dev/null 2>&1; then \
-	    ${ECHO_MSG} "You already have a user \"${SVNUSER}\", so I will use it."; \
-	else \
-	    if /usr/sbin/pw useradd ${SVNUSER} -h -; \
-	    then \
-	        ${ECHO_MSG} "Added user \"${SVNUSER}\"."; \
-	    else \
-	        ${ECHO_MSG} "Adding user \"${SVNUSER}\" failed..."; \
-	        ${ECHO_MSG} "Please create it, and try again."; \
-	        ${FALSE}; \
-	    fi; \
-	fi
-.endif
-	@${MKDIR} ${SVNREPOS}
-	${PREFIX}/bin/svnadmin create --fs-type ${SVNFSTYPE} ${SVNREPOS}
-.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
-	${CHOWN} ${SVNUSER}:${SVNGROUP} ${SVNGRPFILES}
-	${CHMOD} g+w ${SVNGRPFILES}
-	for i in ${SVNREPOS}/db/* ; do \
-	    i=$${i##*/}; \
-	    case $$i in \
-	    DB_CONFIG|fs-type|uuid) ;; \
-	    *) ${CHOWN} -R ${SVNUSER}:${SVNGROUP} ${SVNREPOS}/db/$$i; \
-	       ${CHMOD} -R g+w ${SVNREPOS}/db/$$i; \
-	       ;; \
-	    esac; \
-	done
-.endif
-.endif
+HOOKS_EXAMPLES=	commit-access-control.cfg.example mailer/mailer.conf.example \
+		svnperms.conf.example validate-files.conf.example
+
+HOOKS_SCRIPTS=	commit-access-control.pl commit-email.rb control-chars.py \
+		log-police.py mailer/mailer.py \
+		persist-ephemeral-txnprops.py \
+		reject-detected-sha1-collisions.sh \
+		reject-known-sha1-collisions.sh svn2feed.py svnperms.py \
+		validate-extensions.py validate-files.py verify-po.py
+
+post-install-HOOKS-on:
+	@${MKDIR} ${STAGEDIR}${DATADIR}/hook-scripts
+.for F in ${HOOKS_EXAMPLES}
+	${INSTALL_DATA} ${WRKSRC}/tools/hook-scripts/${F} \
+		${STAGEDIR}${DATADIR}/hook-scripts/${F:T}
+.endfor
+.for F in ${HOOKS_SCRIPTS}
+	${INSTALL_SCRIPT} ${WRKSRC}/tools/hook-scripts/${F} \
+		${STAGEDIR}${DATADIR}/hook-scripts/${F:T}
+.endfor
 
 .include <bsd.port.post.mk>
diff --git a/devel/subversion/Makefile.common b/devel/subversion/Makefile.common
index 11693270f4ef..e643cfb171cd 100644
--- a/devel/subversion/Makefile.common
+++ b/devel/subversion/Makefile.common
@@ -1,15 +1,11 @@
 PORTNAME?=	subversion
-PORTVERSION=	1.14.5
+DISTVERSION=	1.15.0
 PORTREVISION?=	0
 CATEGORIES+=	devel
 MASTER_SITES=	APACHE/subversion
 
 GNU_CONFIGURE=	yes
 USES+=		cpe libtool pathfix pkgconfig python:patch,test shebangfix tar:bzip2
-SHEBANG_FILES=	tools/server-side/svnpubsub/rc.d/svnpubsub.solaris \
-		tools/server-side/svnpubsub/rc.d/svnwcsub.solaris
-
-EXTRACT_AFTER_ARGS=	--exclude ${DISTNAME}/tools/bdb
 
 LICENSE=	APACHE20
 
@@ -28,6 +24,12 @@ CONFIGURE_ARGS+=	--with-expat=${LOCALBASE}/include:${LOCALBASE}/lib:expat \
 			--without-berkeley-db --disable-bdb6 \
 			--without-apr_memcache
 
+EXTRACT_AFTER_ARGS=	--exclude ${DISTNAME}/tools/bdb \
+			--exclude ${DISTNAME}/tools/buildbot \
+			--exclude ${DISTNAME}/tools/dist \
+			--exclude ${DISTNAME}/tools/po \
+			--exclude ${DISTNAME}/tools/examples
+
 # ===============================================================
 OPTIONS_SUB=			yes
 
@@ -64,17 +66,11 @@ OPTIONS_FILE_SET?=""
 .include <bsd.port.pre.mk>
 
 post-patch:
-	${REINPLACE_CMD} "s#/etc/subversion#${ETCDIR}#g" ${WRKSRC}/subversion/libsvn_subr/config_file.c
-	${REINPLACE_CMD} "s#/etc/subversion#${ETCDIR}#g" ${WRKSRC}/subversion/libsvn_subr/config_impl.h
+	${REINPLACE_CMD} "s#/etc/subversion#${LOCALBASE}/etc/subversion#g" ${WRKSRC}/subversion/libsvn_subr/config_file.c
+	${REINPLACE_CMD} "s#/etc/subversion#${LOCALBASE}/etc/subversion#g" ${WRKSRC}/subversion/libsvn_subr/config_impl.h
 	${REINPLACE_CMD} "s#^swig_pydir =.*#swig_pydir = ${PYTHON_SITELIBDIR}/libsvn#" ${WRKSRC}/Makefile.in
 	${REINPLACE_CMD} "s#^swig_pydir_extra =.*#swig_pydir_extra = ${PYTHON_SITELIBDIR}/svn#" ${WRKSRC}/Makefile.in
 	${REINPLACE_CMD} "s#^toolsdir =.*#toolsdir = @bindir@#" ${WRKSRC}/Makefile.in
-# shebangfix
-	${FIND} ${WRKSRC}/tools/ -type f -exec ${GREP} -l -e '#!/bin/b' -e '#!/bin/env' \
-		-e '#!/usr/bin/p' {} + | ${XARGS} ${REINPLACE_CMD} -e \
-		'1s|#\!/bin/b|#\!/usr/local/bin/b|' \
-		-e '1s|#\!/bin/env|#\!/usr/bin/env|' \
-		-e '1s|#\!/usr/bin/p|#\!/usr/local/bin/p|'
 # remove all .bak files to clean the stage
 	@${FIND} ${WRKSRC} -name '*.bak' -delete
 # regenerate build-outputs.mk from build.conf instead of carrying a frozen,
diff --git a/devel/subversion/distinfo b/devel/subversion/distinfo
index 982a4668e658..4ce4dd38002e 100644
--- a/devel/subversion/distinfo
+++ b/devel/subversion/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1734780873
-SHA256 (subversion-1.14.5.tar.bz2) = e78a29e7766b8b7b354497d08f71a55641abc53675ce1875584781aae35644a1
-SIZE (subversion-1.14.5.tar.bz2) = 8675355
+TIMESTAMP = 1793177671
+SHA256 (subversion-1.15.0.tar.bz2) = dfb7b1e5270c7def971ccbd5938b0c03b1b5bd60b6674a2d8a74a9560839fb8c
+SIZE (subversion-1.15.0.tar.bz2) = 8611559
diff --git a/devel/subversion/files/extra-patch-check-swig-py314 b/devel/subversion/files/extra-patch-check-swig-py314
deleted file mode 100644
index 5156311eb6d4..000000000000
--- a/devel/subversion/files/extra-patch-check-swig-py314
+++ /dev/null
@@ -1,231 +0,0 @@
-This patch was extracted by the command
-svn diff -c r1929147 --patch-compatible \
-    https://svn.apache.org/repos/asf/subversion/branches/1.14.x | tail -n +17
-And it can be applied only for Subversion < 1.15.0
-Index: subversion/bindings/swig/python/tests/mergeinfo.py
-===================================================================
---- subversion/bindings/swig/python/tests/mergeinfo.py	(revision 1929146)
-+++ subversion/bindings/swig/python/tests/mergeinfo.py	(revision 1929147)
-@@ -18,7 +18,7 @@
- # under the License.
- #
- #
--import unittest, os, sys, gc
-+import unittest, os, sys, weakref, gc
- from svn import core, repos, fs
- import utils
- 
-@@ -125,6 +125,9 @@
-       }
-     self.compare_mergeinfo_catalogs(mergeinfo, expected_mergeinfo)
- 
-+  @unittest.skipIf(utils.HAS_DEFERRED_REFCOUNT,
-+                   "Reference counting tests skipped because of deferred "
-+                   "reference counting")
-   def test_mergeinfo_leakage__incorrect_range_t_refcounts(self):
-     """Ensure that the ref counts on svn_merge_range_t objects returned by
-        svn_mergeinfo_parse() are correct."""
-@@ -138,7 +141,8 @@
-         # ....and now 3 (incref during iteration of each range object)
- 
-         refcount = sys.getrefcount(r)
--        # ....and finally, 4 (getrefcount() also increfs)
-+        # ....and finally, 4 (getrefcount() also increfs, unless deferred 
-+        #                     reference counting)
-         expected = 4
- 
-         # Note: if path and index are not '/trunk' and 0 respectively, then
-@@ -150,8 +154,49 @@
-           "cause: incorrect Py_INCREF/Py_DECREF usage in libsvn_swig_py/"
-           "swigutil_py.c." % (expected, refcount, path, i)))
- 
-+  def test_mergeinfo_leakage__incorrect_range_t_weakrefs(self):
-+    """Ensure that the ref counts on svn_merge_range_t objects returned by
-+       svn_mergeinfo_parse() are correct."""
-+    # When reference counting is working properly, each svn_merge_range_t in
-+    # the returned mergeinfo will have a ref count of 1...
-+    mergeinfo = core.svn_mergeinfo_parse(self.TEXT_MERGEINFO1)
-+    merge_range_refdict = weakref.WeakValueDictionary()
-+    merge_range_indexes = []
-+    n_merge_range = 0 
-+    for (path, rangelist) in core._as_list(mergeinfo.items()):
-+      # ....and now 2 (incref during iteration of rangelist)
-+
-+      for (i, r) in enumerate(rangelist):
-+        # ....and now 3 (incref during iteration of each range object)
-+
-+        idx = (path, i)
-+        merge_range_refdict[idx] = r
-+        merge_range_indexes.append(idx) 
-+        n_merge_range += 1
-+
-+        # Note: if path and index are not '/trunk' and 0 respectively, then
-+        # only some of the range objects are leaking, which is, as far as
-+        # leaks go, even more impressive.
-+
-+    del rangelist, r
-+    gc.collect()
-+    # Now (strong) reference count of all svn_merge_range_t should be 1
-+    # again and those objects should not be removed yet.
-+    for idx in merge_range_indexes:
-+      self.assertIn(idx, merge_range_refdict, (
-+          "Refarence count error on svn_merge_info_t object for "
-+          "(path: %s, index: %d). It should still exists because "
-+          "mergeinfo holds its reference, but after GC, it already "
-+          "removed." % idx))
-     del mergeinfo
-     gc.collect()
-+    if merge_range_refdict:
-+      # certainly memory leak, but we want to listing up leaked objects
-+      # before raise an assertion error.  
-+      self.assertFalse(merge_range_refdict,
-+         "Memory leak! All svn_merge_range_t object holded "
-+         "by mergeinfo object should be removed, but at least "
-+         "one object still alive.")
- 
-   def test_mergeinfo_leakage__lingering_range_t_objects_after_del(self):
-     """Ensure that there are no svn_merge_range_t objects being tracked by
-@@ -162,6 +207,9 @@
-        objects will be garbage collected and thus, not appear in the list of
-        objects returned by gc.get_objects()."""
-     mergeinfo = core.svn_mergeinfo_parse(self.TEXT_MERGEINFO1)
-+    lingering = get_svn_merge_range_t_objects()
-+    self.assertNotEqual(lingering, list())
-+    del lingering
-     del mergeinfo
-     gc.collect()
-     lingering = get_svn_merge_range_t_objects()
-Index: subversion/bindings/swig/python/tests/repository.py
-===================================================================
---- subversion/bindings/swig/python/tests/repository.py	(revision 1929146)
-+++ subversion/bindings/swig/python/tests/repository.py	(revision 1929147)
-@@ -87,15 +87,32 @@
- 
- class BatonCollector(repos.ChangeCollector):
-   """A ChangeCollector with collecting batons, too"""
-+
-   def __init__(self, fs_ptr, root, pool=None, notify_cb=None):
-+
-+    def get_expected_baton_refcount():
-+      """determine expected refcount of batons within a batoun_tuple,
-+         by using dumy object"""
-+      self.open_root(-1, None)
-+      for baton_tuple in self.batons: 
-+        rc = sys.getrefcount(baton_tuple[2])
-+        break
-+      return rc
-+    
-     repos.ChangeCollector.__init__(self, fs_ptr, root, pool, notify_cb)
--    self.batons = []
-     self.close_called = False
-     self.abort_called = False
-+    # temporary values for get_expected_baton_refcount
-+    self.batons = []
-+    self.expected_baton_refcount = 0
-+    # determin expected_baton_refcount
-+    self.expected_baton_refcount = get_expected_baton_refcount()
-+    # re-initialize the values after calling get_expected_baton_refcount()
-+    self.batons = []
- 
-   def open_root(self, base_revision, dir_pool=None):
-     bt = repos.ChangeCollector.open_root(self, base_revision, dir_pool)
--    self.batons.append((b'dir baton', b'', bt, sys.getrefcount(bt)))
-+    self.batons.append((b'dir baton', b'', bt, self.expected_baton_refcount))
-     return bt
- 
-   def add_directory(self, path, parent_baton,
-@@ -104,7 +121,7 @@
-                                              copyfrom_path,
-                                              copyfrom_revision,
-                                              dir_pool)
--    self.batons.append((b'dir baton', path, bt, sys.getrefcount(bt)))
-+    self.batons.append((b'dir baton', path, bt, self.expected_baton_refcount))
-     return bt
- 
-   def open_directory(self, path, parent_baton, base_revision,
-@@ -111,7 +128,7 @@
-                      dir_pool=None):
-     bt = repos.ChangeCollector.open_directory(self, path, parent_baton,
-                                               base_revision, dir_pool)
--    self.batons.append((b'dir baton', path, bt, sys.getrefcount(bt)))
-+    self.batons.append((b'dir baton', path, bt, self.expected_baton_refcount))
-     return bt
- 
-   def add_file(self, path, parent_baton,
-@@ -119,13 +136,13 @@
-     bt = repos.ChangeCollector.add_file(self, path, parent_baton,
-                                         copyfrom_path, copyfrom_revision,
-                                         file_pool)
--    self.batons.append((b'file baton', path, bt, sys.getrefcount(bt)))
-+    self.batons.append((b'file baton', path, bt, self.expected_baton_refcount))
-     return bt
- 
-   def open_file(self, path, parent_baton, base_revision, file_pool=None):
-     bt = repos.ChangeCollector.open_file(self, path, parent_baton,
-                                          base_revision, file_pool)
--    self.batons.append((b'file baton', path, bt, sys.getrefcount(bt)))
-+    self.batons.append((b'file baton', path, bt, self.expected_baton_refcount))
-     return bt
- 
-   def close_edit(self, pool=None):
-@@ -429,18 +446,22 @@
-     root = fs.revision_root(self.fs, self.rev)
-     editor = BatonCollector(self.fs, root)
-     e_ptr, e_baton = delta.make_editor(editor)
-+    refcount_at_first = sys.getrefcount(e_ptr)
-     repos.replay(root, e_ptr, e_baton)
--    for baton in editor.batons:
--      self.assertEqual(sys.getrefcount(baton[2]), 2,
-+    for baton_tuple in editor.batons:
-+      # baton_tuple: 4-tuple(baton_type: bytes, node: bytes, bt: baton,
-+      #                      expected_refcount_of_bt: int)
-+      self.assertEqual(sys.getrefcount(baton_tuple[2]), baton_tuple[3],
-                        "leak on baton %s after replay without errors"
--                       % repr(baton))
-+                       % repr(baton_tuple))
-     del e_baton
--    self.assertEqual(sys.getrefcount(e_ptr), 2,
-+    self.assertEqual(sys.getrefcount(e_ptr), refcount_at_first,
-                      "leak on editor baton after replay without errors")
- 
-     editor = BatonCollectorErrorOnClose(self.fs, root,
-                                         error_path=b'branches/v1x')
-     e_ptr, e_baton = delta.make_editor(editor)
-+    refcount_at_first = sys.getrefcount(e_ptr)
-     self.assertRaises(SubversionException, repos.replay, root, e_ptr, e_baton)
-     batons = editor.batons
-     # As svn_repos_replay calls neither close_edit callback nor abort_edit
-@@ -447,11 +468,11 @@
-     # if an error has occured during processing, references of Python objects
-     # in decendant batons may live until e_baton is deleted.
-     del e_baton
--    for baton in batons:
--      self.assertEqual(sys.getrefcount(baton[2]), 2,
-+    for baton_tuple in batons:
-+      self.assertEqual(sys.getrefcount(baton_tuple[2]), baton_tuple[3],
-                        "leak on baton %s after replay with an error"
--                       % repr(baton))
--    self.assertEqual(sys.getrefcount(e_ptr), 2,
-+                       % repr(baton_tuple))
-+    self.assertEqual(sys.getrefcount(e_ptr), refcount_at_first,
-                      "leak on editor baton after replay with an error")
- 
-   def test_delta_editor_apply_textdelta_handler_refcount(self):
-Index: subversion/bindings/swig/python/tests/utils.py
-===================================================================
---- subversion/bindings/swig/python/tests/utils.py	(revision 1929146)
-+++ subversion/bindings/swig/python/tests/utils.py	(revision 1929147)
-@@ -95,3 +95,13 @@
- 
- def is_defaultencoding_utf8():
-   return codecs_eq(sys.getdefaultencoding(), 'utf-8')
-+
-+def get_holded_refcount_by_getrefcount():
-+  "get refcount holded by sys.getrefcount() if its arg is a local variable"
-+  a = []
-+  rv = sys.getrefcount(a) - 1
-+  return rv
-+
-+HAS_DEFERRED_REFCOUNT = not get_holded_refcount_by_getrefcount()
-+
-+del get_holded_refcount_by_getrefcount
diff --git a/devel/subversion/files/patch-Makefile.in b/devel/subversion/files/patch-Makefile.in
new file mode 100644
index 000000000000..d74cee31b30f
--- /dev/null
+++ b/devel/subversion/files/patch-Makefile.in
@@ -0,0 +1,13 @@
+--- Makefile.in.orig
++++ Makefile.in
+@@ -1043,8 +1043,8 @@
+   fi; \
+   printf '\043\041/bin/sh\n%s\n' \
+     'exec $(bindir)/svnfsfs stats $${2:+"-M"} $${2:+"$$2"} "$$1"' \
+-    > $(DESTDIR)$(toolsdir)/fsfs-stats$(EXEEXT) && \
+-  chmod +x $(DESTDIR)$(toolsdir)/fsfs-stats$(EXEEXT)
++    > $(DESTDIR)$(toolsdir)/svnfsfs-stats$(EXEEXT) && \
++  chmod +x $(DESTDIR)$(toolsdir)/svnfsfs-stats$(EXEEXT)
+ # \043\041 is a "#!".  It's written this way because gmake and bmake disagree on
+ # how to include a literal '#' in a command, and because '!' is special to some
+ # shells.
diff --git a/devel/subversion/files/patch-build.conf b/devel/subversion/files/patch-build.conf
index 3de155ca4634..ac8aeb122436 100644
--- a/devel/subversion/files/patch-build.conf
+++ b/devel/subversion/files/patch-build.conf
@@ -1,6 +1,6 @@
---- build.conf.orig	2020-04-08 04:00:55 UTC
+--- build.conf.orig
 +++ build.conf
-@@ -434,7 +434,7 @@ type = apache-mod
+@@ -458,7 +458,7 @@
  path = tools/server-side/mod_dontdothat
  nonlibs = mod_dav_svn apr aprutil
  libs = libsvn_subr libhttpd
@@ -9,3 +9,50 @@
  
  # The Subversion FSFS repository manipulation tool
  [svnfsfs]
+@@ -1663,13 +1663,6 @@
+ # ----------------------------------------------------------------------------
+ # Contrib and tools
+ 
+-[fsfs-access-map]
+-type = exe
+-path = tools/dev
+-sources = fsfs-access-map.c
+-install = tools
+-libs = libsvn_subr apr
+-
+ [diff]
+ type = exe
+ path = tools/diff
+@@ -1704,7 +1697,7 @@
+ type = exe
+ path = tools/server-side
+ sources = svnauthz.c
+-install = tools
++install = bin
+ libs = libsvn_repos libsvn_fs libsvn_subr apr
+ 
+ # svnauthz-validate is the compat mode of the new svnauthz tool.  It is
+@@ -1717,7 +1710,7 @@
+ type = exe
+ path = tools/server-side
+ sources = svnauthz.c
+-install = tools
++install = bin
+ libs = libsvn_repos libsvn_fs libsvn_subr apr
+ 
+ [svn-populate-node-origins-index]
+@@ -1742,14 +1735,6 @@
+ libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr
+        apriconv apr
+ 
+-[x509-parser]
+-description = Tool to verify x509 certificates
+-type = exe
+-path = tools/dev
+-sources = x509-parser.c
+-install = tools
+-libs = libsvn_subr apr
+-
+ [svnconflict]
+ type = exe
+ path = tools/client-side/svnconflict
diff --git a/devel/subversion/files/patch-configure b/devel/subversion/files/patch-configure
index 7e2bf9f5d8e8..fdc29b68240a 100644
--- a/devel/subversion/files/patch-configure
+++ b/devel/subversion/files/patch-configure
@@ -1,6 +1,6 @@
 --- configure.orig
 +++ configure
-@@ -25719,7 +25719,7 @@
+@@ -26871,7 +26871,7 @@
  $as_echo_n "checking for additional flags to link C++ libraries... " >&6; }
    if test "x$ac_compiler_gnu" = "xyes"; then
      case "$host" in
diff --git a/devel/subversion/files/svnserve.in b/devel/subversion/files/svnserve.in
index 29b1df8c838c..162c6f4ae97e 100644
--- a/devel/subversion/files/svnserve.in
+++ b/devel/subversion/files/svnserve.in
@@ -1,40 +1,33 @@
 #!/bin/sh
 #
 # svnserve.sh for rc.d usage (c) 2005 Thomas E. Spanjaard.
-# $Id$
 
 # PROVIDE: svnserve
 # REQUIRE: DAEMON
 # BEFORE: LOGIN
 # KEYWORD: shutdown
 #
-# Add the following line to /etc/rc.conf to enable SVNServe:
+# Add the following line to /etc/rc.conf to enable svnserve:
 #
 #  svnserve_enable="YES"
 #  # optional
 #  svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0"
-#  svnserve_data="/usr/local/repositories"
+#  svnserve_data="/var/db/svn"
 #  svnserve_user="svn"
 #  svnserve_group="svn"
-#
-# Note:
-# svnserve bind per default at the ipv6 address!
-# If you want svnserve binding at ipv4 address, you have
-# to use option 'svnserve_flags' with --listen-host parameter
 
 . /etc/rc.subr
 
-# Set some defaults
-svnserve_enable=${svnserve_enable:-"NO"}
-svnserve_flags=${svnserve_flags:-"-d --listen-port=3690 --listen-host 0.0.0.0"}
-svnserve_data=${svnserve_data:-"/home/svn/repos"}
-svnserve_user=${svnserve_user:-"svn"}
-svnserve_group=${svnserve_group:-"svn"}
+: ${svnserve_enable:="NO"}
+: ${svnserve_flags:="-d --listen-port=3690 --listen-host 0.0.0.0"}
+: ${svnserve_data:="/var/db/svn"}
+: ${svnserve_user:="svn"}
+: ${svnserve_group:="svn"}
 
 name=svnserve
 rcvar=svnserve_enable
 load_rc_config $name
-command=%%PREFIX%%/bin/svnserve%%SVNSERVE_BIN_EXT%%
+command=%%PREFIX%%/bin/svnserve
 command_args="-r ${svnserve_data}"
 
 run_rc_command "$1"
diff --git a/devel/subversion/pkg-plist b/devel/subversion/pkg-plist
index fe3d4a3cc372..ec38618c8550 100644
--- a/devel/subversion/pkg-plist
+++ b/devel/subversion/pkg-plist
@@ -1,29 +1,25 @@
-%%TOOLS%%bin/fsfs-access-map
-%%TOOLS%%bin/fsfs-stats
 bin/svn
 %%TOOLS%%bin/svn-mergeinfo-normalizer
 %%TOOLS%%bin/svn-populate-node-origins-index
 bin/svnadmin
-%%TOOLS%%bin/svnauthz
-%%TOOLS%%bin/svnauthz-validate
-%%TOOLS%%bin/svnbench
+bin/svnauthz
+bin/svnauthz-validate
+bin/svnbench
 %%TOOLS%%bin/svnconflict
 %%TOOLS%%bin/svndiff
 %%TOOLS%%bin/svndiff3
 %%TOOLS%%bin/svndiff4
 bin/svndumpfilter
 bin/svnfsfs
+%%TOOLS%%bin/svnfsfs-stats
 bin/svnlook
-%%TOOLS%%bin/svnmover
 bin/svnmucc
 %%TOOLS%%bin/svnraisetreeconflict
 bin/svnrdump
-%%NO_SVNSERVE_WRAPPER%%bin/svnserve
+bin/svnserve
 %%SVNSERVE_WRAPPER%%bin/svnserve.bin
-%%SVNSERVE_WRAPPER%%@sample bin/svnserve.sample
 bin/svnsync
 bin/svnversion
-%%TOOLS%%bin/x509-parser
 include/subversion-1/mod_authz_svn.h
 include/subversion-1/mod_dav_svn.h
 include/subversion-1/svn-revision.txt
@@ -169,299 +165,22 @@ share/man/man1/svnsync.1.gz
 share/man/man1/svnversion.1.gz
 share/man/man5/svnserve.conf.5.gz
 share/man/man8/svnserve.8.gz
-%%DATADIR%%/backup/hot-backup.py
-%%DATADIR%%/buildbot/master/README
-%%DATADIR%%/buildbot/slaves/README
-%%DATADIR%%/buildbot/slaves/bb-openbsd/svnbuild.sh
-%%DATADIR%%/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
-%%DATADIR%%/buildbot/slaves/bb-openbsd/svncheck.sh
-%%DATADIR%%/buildbot/slaves/bb-openbsd/svnclean.sh
-%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/mount-ramdrive.c
-%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svnbuild.sh
-%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svncheck.sh
-%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svnclean.sh
-%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svnlog.sh
-%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/unmount-ramdrive.c
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/mount-tmpfs.c
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/rebuild-svn-bits.sh
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/serf.patch
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svnbuild.sh
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svncheck.sh
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svncleanup.sh
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svnenv.sh
-%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/twisted.patch
-%%DATADIR%%/buildbot/slaves/svn-x64-centos/list-svn-deps.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-centos/svnbuild.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-centos/svncheck-bindings.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-centos/svncheck.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-centos/svnclean.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-centos/svnlog.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/mkramdisk.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/rmramdisk.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/setenv.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svnbuild-bindings.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svnbuild.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svncheck-bindings.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svncheck.sh
-%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svnclean.sh
-%%DATADIR%%/buildbot/slaves/svnbot-common/README
-%%DATADIR%%/buildbot/slaves/ubuntu-x64/svnbuild.sh
-%%DATADIR%%/buildbot/slaves/ubuntu-x64/svncheck-bindings.sh
*** 301 LINES SKIPPED ***