Modified: subversion/branches/multi-wc-format/tools/dev/unix-build/Makefile.svn
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dev/unix-build/Makefile.svn?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dev/unix-build/Makefile.svn 
(original)
+++ subversion/branches/multi-wc-format/tools/dev/unix-build/Makefile.svn Fri 
Jan 14 14:01:45 2022
@@ -46,11 +46,19 @@ USE_HTTPV1 ?= no
 USE_AUTHZ_SHORT_CIRCUIT ?= no
 RAMDISK ?= /ramdisk
 MAKE_JOBS ?= 4
+# available backends: fsfs fsx bdb
+SVN_CHECK_FS_BACKENDS ?= fsfs
 
 PWD            = $(shell pwd)
 UNAME          = $(shell uname)
 RUBY           = $(shell which ruby 2>/dev/null)
 ifeq ($(RUBY),)
+RUBY           = $(shell which ruby27 2>/dev/null)
+ifeq ($(RUBY),)
+RUBY           = $(shell which ruby26 2>/dev/null)
+ifeq ($(RUBY),)
+RUBY           = $(shell which ruby25 2>/dev/null)
+ifeq ($(RUBY),)
 RUBY           = $(shell which ruby24 2>/dev/null)
 ifeq ($(RUBY),)
 RUBY           = $(shell which ruby23 2>/dev/null)
@@ -71,6 +79,9 @@ endif # 2.1
 endif # 2.2
 endif # 2.3
 endif # 2.4
+endif # 2.5
+endif # 2.6
+endif # 2.7
 
 ifeq ($(UNAME),OpenBSD)
 # Pick the correct base compiler (ie. clang rather than ancient gcc 4.2.1)
@@ -85,8 +96,12 @@ else
 BRANCH         = $(TAG)
 endif
 WC             ?= $(BRANCH)
-BRANCH_MAJOR   = $(shell echo $(BRANCH) | \
-                       sed -e 's/\([0-9]\)\.\([0-9]\)\.[x0-9].*$$/\1.\2/')
+BRANCH_MAJOR   := $(shell echo $(BRANCH) | sed -E 
's/([0-9]+)\.([0-9]+)\..*/\1.\2/')
+ifeq ($(BRANCH_MAJOR), $(filter 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13, 
$(BRANCH_MAJOR)))
+PYTHON = python2
+else
+PYTHON = python
+endif
 SVN_REL_WC     = svn-$(WC)
 SVN_WC         = $(PWD)/$(SVN_REL_WC)
 PREFIX         = $(PWD)/prefix
@@ -97,20 +112,23 @@ OBJDIR             = $(PWD)/objdir
 
 BDB_MAJOR_VER  = 4.7
 BDB_VER                = $(BDB_MAJOR_VER).25
-APR_VER                = 1.5.2
+APR_VER                = 1.7.0
 APR_ICONV_VER  = 1.2.1
 GNU_ICONV_VER  = 1.15
-APR_UTIL_VER   = 1.5.4
-HTTPD_VER      = 2.2.32
+APR_UTIL_VER   = 1.6.1
+PCRE_VER       = 8.41
+HTTPD_VER      = 2.4.37
 NEON_VER       = 0.30.2
 SERF_VER       = 1.3.9
 SERF_OLD_VER   = 0.3.1
 CYRUS_SASL_VER = 2.1.25
 SQLITE_VER     = 3160200
 LIBMAGIC_VER   = 5.30
-RUBY_VER       = 2.4.4
+RUBY_VER       = 2.7.4
 BZ2_VER        = 1.0.6
-PYTHON_VER     = 2.7.13
+PYTHON_VER     = 3.7.5
+PYTHON2_VER    = 2.7.13
+PY3C_VER       = 1.1
 JUNIT_VER      = 4.10
 GETTEXT_VER    = 0.19.8.1
 LZ4_VER                = 1.7.5
@@ -121,11 +139,14 @@ GNU_ICONV_DIST    = libiconv-$(GNU_ICONV_VE
 NEON_DIST      = neon-$(NEON_VER).tar.gz
 SQLITE_DIST    = sqlite-autoconf-$(SQLITE_VER).tar.gz
 CYRUS_SASL_DIST        = cyrus-sasl-$(CYRUS_SASL_VER).tar.gz
+PCRE_DIST      = pcre-$(PCRE_VER).tar.gz
 HTTPD_DIST     = httpd-$(HTTPD_VER).tar.gz
 LIBMAGIC_DIST  = file-$(LIBMAGIC_VER).tar.gz
 RUBY_DIST      = ruby-$(RUBY_VER).tar.gz
 BZ2_DIST       = bzip2-$(BZ2_VER).tar.gz
 PYTHON_DIST    = Python-$(PYTHON_VER).tgz
+PYTHON2_DIST   = Python-$(PYTHON2_VER).tgz
+PY3C_DIST      = py3c-$(PY3C_VER).tar.gz
 JUNIT_DIST     = junit-${JUNIT_VER}.jar
 GETTEXT_DIST   = gettext-$(GETTEXT_VER).tar.gz
 LZ4_DIST       = lz4-$(LZ4_VER).tar.gz
@@ -133,14 +154,17 @@ LZ4_DIST  = lz4-$(LZ4_VER).tar.gz
 SHA256_${BDB_DIST} = 
f14fd96dd38915a1d63dcb94a63fbb8092334ceba6b5060760427096f631263e
 SHA256_${APR_ICONV_DIST} = 
19381959d50c4a5f3b9c84d594a5f9ffb3809786919b3058281f4c87e1f4b245
 SHA256_${GNU_ICONV_DIST} = 
ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178
-SHA256_${HTTPD_DIST} = 
b6e1528779f99c301d6438d89ae892a311619b43a39f16297f9eabd4a8d16cb8
+SHA256_${PCRE_DIST} = 
244838e1f1d14f7e2fa7681b857b3a8566b74215f28133f14a8f5e59241b682c
+SHA256_${HTTPD_DIST} = 
aa97a834a32d51974be8d8a013b561e28d327387cb1da2c3c2762acd0146aabd
 SHA256_${NEON_DIST} = 
db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca
 SHA256_${CYRUS_SASL_DIST} = 
418c16e6240a4f9b637cbe3d62937b9675627bad27c622191d47de8686fe24fe
 SHA256_${SQLITE_DIST} = 
65cc0c3e9366f50c0679c5ccd31432cea894bc4a3e8947dabab88c8693263615
 SHA256_${LIBMAGIC_DIST} = 
694c2432e5240187524c9e7cf1ec6acc77b47a0e19554d34c14773e43dbbf214
-SHA256_${RUBY_DIST} = 
254f1c1a79e4cc814d1e7320bc5bdd995dc57e08727d30a767664619a9c8ae5a
+SHA256_${RUBY_DIST} = 
3043099089608859fc8cce7f9fdccaa1f53a462457e3838ec3b25a7d609fbc5b
 SHA256_${BZ2_DIST} = 
a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
-SHA256_${PYTHON_DIST} = 
a4f05a0720ce0fd92626f0278b6b433eee9a6173ddf2bced7957dfb599a5ece1
+SHA256_${PYTHON_DIST} = 
8ecc681ea0600bbfb366f2b173f727b205bb825d93d2f0b286bc4e58d37693da
+SHA256_${PYTHON2_DIST} = 
a4f05a0720ce0fd92626f0278b6b433eee9a6173ddf2bced7957dfb599a5ece1
+SHA256_${PY3C_DIST} = 
c7ffc22bc92dded0ca859db53ef3a0b466f89a9f8aad29359c9fe4ff18ebdd20
 SHA256_${JUNIT_DIST} = 
36a747ca1e0b86f6ea88055b8723bb87030d627766da6288bf077afdeeb0f75a
 SHA256_${GETTEXT_DIST} = 
ff942af0e438ced4a8b0ea4b0b6e0d6d657157c5e2364de57baa279c1c125c43
 SHA256_${LZ4_DIST} = 
0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e
@@ -161,6 +185,7 @@ endef
 DISTFILES      = $(DISTDIR)/$(NEON_DIST) \
                $(DISTDIR)/$(SERF_DIST) \
                $(DISTDIR)/$(SQLITE_DIST) \
+               $(DISTDIR)/$(PCRE_DIST) \
                $(DISTDIR)/$(HTTPD_DIST) \
                $(DISTDIR)/$(APR_ICONV_DIST) \
                $(DISTDIR)/$(GNU_ICONV_DIST) \
@@ -169,6 +194,8 @@ DISTFILES   = $(DISTDIR)/$(NEON_DIST) \
                $(DISTDIR)/$(RUBY_DIST) \
                $(DISTDIR)/$(BZ2_DIST) \
                $(DISTDIR)/$(PYTHON_DIST) \
+               $(DISTDIR)/$(PYTHON2_DIST) \
+               $(DISTDIR)/$(PY3C_DIST) \
                $(DISTDIR)/$(JUNIT_DIST) \
                $(DISTDIR)/$(GETTEXT_DIST)
 
@@ -180,18 +207,21 @@ APR_URL           = https://svn.apache.org/repos/
 APR_ICONV_URL  = https://archive.apache.org/dist/apr/$(APR_ICONV_DIST)
 GNU_ICONV_URL  = https://ftp.gnu.org/pub/gnu/libiconv/$(GNU_ICONV_DIST)
 APR_UTIL_URL   = https://svn.apache.org/repos/asf/apr/apr-util
+PCRE_URL       = https://ftp.pcre.org/pub/pcre/$(PCRE_DIST)
 HTTPD_URL      = https://archive.apache.org/dist/httpd/$(HTTPD_DIST)
 #NEON_URL      = http://webdav.org/neon/$(NEON_DIST)
 NEON_URL       = http://ftp.openbsd.org/pub/OpenBSD/distfiles/$(NEON_DIST)
 SERF_URL       = https://svn.apache.org/repos/asf/serf/tags/$(SERF_VER)
 SERF_OLD_URL   = https://svn.apache.org/repos/asf/serf/tags/$(SERF_OLD_VER)
 SQLITE_URL     = https://www.sqlite.org/2017/$(SQLITE_DIST)
-CYRUS_SASL_URL = ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$(CYRUS_SASL_DIST)
+CYRUS_SASL_URL = 
https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-${CYRUS_SASL_VER}/$(CYRUS_SASL_DIST)
 LIBMAGIC_URL   = ftp://ftp.astron.com/pub/file/$(LIBMAGIC_DIST)
-RUBY_URL       = https://cache.ruby-lang.org/pub/ruby/2.4/$(RUBY_DIST)
-BZ2_URL                = 
https://ftp.openbsd.org/pub/OpenBSD/distfiles/$(BZ2_DIST)
+RUBY_URL       = https://cache.ruby-lang.org/pub/ruby/2.7/$(RUBY_DIST)
+BZ2_URL                = https://stsp.name/distfiles/$(BZ2_DIST)
 PYTHON_URL     = https://python.org/ftp/python/$(PYTHON_VER)/$(PYTHON_DIST)
-JUNIT_URL      = 
https://downloads.sourceforge.net/project/junit/junit/$(JUNIT_VER)/$(JUNIT_DIST)
+PYTHON2_URL    = https://python.org/ftp/python/$(PYTHON2_VER)/$(PYTHON2_DIST)
+PY3C_URL       = https://stsp.name/distfiles/py3c-${PY3C_VER}.tar.gz
+JUNIT_URL      = https://stsp.name/distfiles/$(JUNIT_DIST)
 GETTEXT_URL    = https://ftp.gnu.org/pub/gnu/gettext/$(GETTEXT_DIST)
 LZ4_URL                = https://github.com/lz4/lz4/archive/v$(LZ4_VER).tar.gz
 
@@ -201,6 +231,7 @@ APR_SRCDIR  = $(SRCDIR)/apr-$(APR_VER)
 APR_ICONV_SRCDIR       = $(SRCDIR)/apr-iconv-$(APR_ICONV_VER)
 GNU_ICONV_SRCDIR       = $(SRCDIR)/libiconv-$(GNU_ICONV_VER)
 APR_UTIL_SRCDIR        = $(SRCDIR)/apr-util-$(APR_UTIL_VER)
+PCRE_SRCDIR    = $(SRCDIR)/pcre-$(PCRE_VER)
 HTTPD_SRCDIR   = $(SRCDIR)/httpd-$(HTTPD_VER)
 NEON_SRCDIR    = $(SRCDIR)/neon-$(NEON_VER)
 SERF_SRCDIR    = $(SRCDIR)/serf-$(SERF_VER)
@@ -211,6 +242,8 @@ LIBMAGIC_SRCDIR     = $(SRCDIR)/file-$(LIBMA
 RUBY_SRCDIR    = $(SRCDIR)/ruby-$(RUBY_VER)
 BZ2_SRCDIR     = $(SRCDIR)/bzip2-$(BZ2_VER)
 PYTHON_SRCDIR  = $(SRCDIR)/Python-$(PYTHON_VER)
+PYTHON2_SRCDIR = $(SRCDIR)/Python-$(PYTHON2_VER)
+PY3C_SRCDIR    = $(SRCDIR)/py3c-$(PY3C_VER)
 GETTEXT_SRCDIR = $(SRCDIR)/gettext-$(GETTEXT_VER)
 LZ4_SRCDIR     = ${SRCDIR}/lz4-$(LZ4_VER)
 SVN_SRCDIR     = $(SVN_WC)
@@ -220,6 +253,7 @@ APR_OBJDIR  = $(OBJDIR)/apr-$(APR_VER)
 APR_ICONV_OBJDIR       = $(OBJDIR)/apr-iconv-$(APR_ICONV_VER)
 GNU_ICONV_OBJDIR       = $(OBJDIR)/libiconv-$(GNU_ICONV_VER)
 APR_UTIL_OBJDIR        = $(OBJDIR)/apr-util-$(APR_UTIL_VER)
+PCRE_OBJDIR    = $(OBJDIR)/pcre-$(PCRE_VER)
 HTTPD_OBJDIR   = $(OBJDIR)/httpd-$(HTTPD_VER)
 NEON_OBJDIR    = $(OBJDIR)/neon-$(NEON_VER)
 SERF_OBJDIR    = $(OBJDIR)/serf-$(SERF_VER)
@@ -230,6 +264,8 @@ LIBMAGIC_OBJDIR     = $(OBJDIR)/file-$(LIBMA
 RUBY_OBJDIR    = $(OBJDIR)/ruby-$(RUBY_VER)
 BZ2_OBJDIR     = $(OBJDIR)/bzip2-$(BZ2_VER)
 PYTHON_OBJDIR  = $(OBJDIR)/python-$(PYTHON_VER)
+PYTHON2_OBJDIR = $(OBJDIR)/python-$(PYTHON2_VER)
+PY3C_OBJDIR    = $(OBJDIR)/py3c-$(PY3C_VER)
 GETTEXT_OBJDIR = $(OBJDIR)/gettext-$(GETTEXT_VER)
 LZ4_OBJDIR     = ${OBJDIR}/lz4-$(LZ4_VER)
 SVN_OBJDIR     = $(OBJDIR)/$(SVN_REL_WC)
@@ -244,10 +280,10 @@ PROFILE_CFLAGS=-pg
 endif
 
 # We need this to make sure some targets below pick up the right libraries
-LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/gettext/lib:$(PREFIX)/iconv/lib:$(PREFIX)/bdb/lib:$(PREFIX)/neon/lib:$(PREFIX)/serf/lib:$(PREFIX)/sqlite/lib:$(PREFIX)/cyrus-sasl/lib:$(PREFIX)/iconv/lib:$(PREFIX)/libmagic/lib:$(PREFIX)/ruby/lib:$(PREFIX)/python/lib:$(PREFIX)/svn-$(WC)/lib
+LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/gettext/lib:$(PREFIX)/iconv/lib:$(PREFIX)/bdb/lib:$(PREFIX)/neon/lib:$(PREFIX)/serf/lib:$(PREFIX)/sqlite/lib:$(PREFIX)/cyrus-sasl/lib:$(PREFIX)/iconv/lib:$(PREFIX)/libmagic/lib:$(PREFIX)/ruby/lib:$(PREFIX)/svn-$(WC)/lib
 
 # We need this to make sure some targets below pick up the right pkg-config 
files
-PKG_CONFIG_PATH=$(PREFIX)/apr/lib/pkgconfig:$(PREFIX)/neon/lib/pkgconfig:$(PREFIX)/serf/lib/pkgconfig:$(PREFIX)/sqlite/lib/pkgconfig:$(PREFIX)/ruby/lib/pkgconfig:$(PREFIX)/python/lib/pkgconfig:$(PREFIX)/lz4/lib/pkgconfig
+PKG_CONFIG_PATH=$(PREFIX)/apr/lib/pkgconfig:$(PREFIX)/neon/lib/pkgconfig:$(PREFIX)/serf/lib/pkgconfig:$(PREFIX)/sqlite/lib/pkgconfig:$(PREFIX)/ruby/lib/pkgconfig:$(PREFIX)/lz4/lib/pkgconfig
 
 
 #######################################################################
@@ -257,22 +293,22 @@ PKG_CONFIG_PATH=$(PREFIX)/apr/lib/pkgcon
 .PHONY: all reset clean nuke fetch
 
 all: dirs-create bdb-install apr-install iconv-install apr-util-install \
-       httpd-install neon-install serf-install serf-old-install \
+       pcre-install httpd-install neon-install serf-install serf-old-install \
        sqlite-install cyrus-sasl-install libmagic-install \
-       ruby-install bz2-install python-install gettext-install \
-       lz4-install svn-install svn-bindings-install
+       ruby-install bz2-install python-install python2-install py3c-retrieve \
+       gettext-install lz4-install svn-install svn-bindings-install
 
 # Use these to start a build from the beginning.
 reset: dirs-reset bdb-reset apr-reset iconv-reset apr-util-reset \
-       httpd-reset neon-reset serf-reset serf-old-reset sqlite-reset \
-       cyrus-sasl-reset libmagic-reset ruby-reset python-reset \
-       bz2-reset gettext-reset lz4-reset svn-reset
+       pcre-reset httpd-reset neon-reset serf-reset serf-old-reset \
+       sqlite-reset cyrus-sasl-reset libmagic-reset ruby-reset python-reset \
+       python2-reset bz2-reset gettext-reset lz4-reset svn-reset
 
 # Use to save disk space.
-clean: bdb-clean apr-clean iconv-clean apr-util-clean httpd-clean \
+clean: bdb-clean apr-clean iconv-clean apr-util-clean pcre-clean httpd-clean \
        neon-clean serf-clean serf-old-clean sqlite-clean cyrus-sasl-clean \
-       libmagic-clean ruby-clean bz2-clean python-clean gettext-clean \
-       lz4-clean svn-clean
+       libmagic-clean ruby-clean bz2-clean python-clean python2-clean \
+       gettext-clean lz4-clean svn-clean
 
 # Nukes everything (including installed binaries!)
 # Use this to start ALL OVER AGAIN! Use with caution!
@@ -529,6 +565,8 @@ $(GNU_ICONV_OBJDIR)/.retrieved: $(DISTDI
        cd $(SRCDIR)/libiconv-$(GNU_ICONV_VER) && \
                patch -p0 < $(GNU_ICONV_OBJDIR)/lib_encodings.def.diff && \
                patch -p0 < $(GNU_ICONV_OBJDIR)/lib_aliases.gperf.diff
+       cd $(SRCDIR)/libiconv-${GNU_ICONV_VER} && \
+               sed -i 's/gcc/${CC}/' Makefile.devel
        touch $@
 
 # configure gnu-iconv
@@ -632,6 +670,53 @@ $(APR_UTIL_OBJDIR)/.installed: $(APR_UTI
        touch $@
 
 #######################################################################
+# pcre
+#######################################################################
+
+pcre-retrieve: $(PCRE_OBJDIR)/.retrieved
+pcre-configure:        $(PCRE_OBJDIR)/.configured
+pcre-compile:  $(PCRE_OBJDIR)/.compiled
+pcre-install:  $(PCRE_OBJDIR)/.installed
+pcre-reset:
+       $(foreach f, .retrieved .configured .compiled .installed, \
+               rm -f $(PCRE_OBJDIR)/$(f);)
+
+pcre-clean:
+       -(cd $(PCRE_OBJDIR) && env MAKEFLAGS= make clean)
+
+# fetch distfile for pcre
+$(DISTDIR)/$(PCRE_DIST):
+       cd $(DISTDIR) && $(FETCH_CMD) $(PCRE_URL)
+
+# retrieve pcre
+$(PCRE_OBJDIR)/.retrieved: $(DISTDIR)/$(PCRE_DIST)
+       $(call do_check_sha256,$(PCRE_DIST))
+       [ -d $(PCRE_OBJDIR) ] || mkdir -p $(PCRE_OBJDIR)
+       tar -C $(SRCDIR) -zxf $(DISTDIR)/$(PCRE_DIST)
+       touch $@
+
+# configure pcre
+$(PCRE_OBJDIR)/.configured: $(PCRE_OBJDIR)/.retrieved
+       cd $(PCRE_OBJDIR) \
+               && env CFLAGS="-g $(PROFILE_CFLAGS)" \
+               CC=$(CC) CXX=$(CXX) \
+               GREP="`which grep`" \
+               PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
+               $(PCRE_SRCDIR)/configure \
+               --prefix=$(PREFIX)/pcre
+       touch $@
+
+# compile pcre
+$(PCRE_OBJDIR)/.compiled: $(PCRE_OBJDIR)/.configured
+       (cd $(PCRE_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS})
+       touch $@
+
+# install pcre
+$(PCRE_OBJDIR)/.installed: $(PCRE_OBJDIR)/.compiled
+       (cd $(PCRE_OBJDIR) && env MAKEFLAGS= make install)
+       touch $@
+
+#######################################################################
 # httpd
 #######################################################################
 
@@ -646,104 +731,50 @@ httpd-reset:
 
 httpd-clean:
        -(cd $(HTTPD_OBJDIR) && env MAKEFLAGS= make clean)
-       -rm ${HTTPD_OBJDIR}/chil-engine.diff
-       -rm ${HTTPD_OBJDIR}/ssl-set-state.diff
-       -rm ${HTTPD_OBJDIR}/acinclude.diff
+       rm -f $(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff
+       rm -f $(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff
 
 # fetch distfile for httpd
 $(DISTDIR)/$(HTTPD_DIST):
        cd $(DISTDIR) && $(FETCH_CMD) $(HTTPD_URL)
 
-$(HTTPD_OBJDIR)/chil-engine.diff:
-       mkdir -p $(dir $@)
-       echo > [email protected] '--- modules/ssl/ssl_engine_init.c.orig   Mon Apr 14 
13:20:57 2014'
-       echo >>[email protected] '+++ modules/ssl/ssl_engine_init.c        Mon Apr 14 
13:21:22 2014'
-       echo >>[email protected] '@@ -406,9 +406,11 @@ void ssl_init_Engine(server_rec *s, 
apr_pool_t *p)'
-       echo >>[email protected] '             ssl_die();'
-       echo >>[email protected] '         }'
-       echo >>[email protected] ' '
-       echo >>[email protected] '+#ifdef ENGINE_CTRL_CHIL_SET_FORKCHECK'
-       echo >>[email protected] '         if (strEQ(mc->szCryptoDevice, "chil")) {'
-       echo >>[email protected] '             ENGINE_ctrl(e, 
ENGINE_CTRL_CHIL_SET_FORKCHECK, 1, 0, 0);'
-       echo >>[email protected] '         }'
-       echo >>[email protected] '+#endif'
-       echo >>[email protected] ' '
-       echo >>[email protected] '         if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) 
{'
-       echo >>[email protected] '             ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,'
-       mv -f [email protected] $@
-
-$(HTTPD_OBJDIR)/ssl-set-state.diff:
-       mkdir -p $(dir $@)
-       echo > [email protected] '--- modules/ssl/ssl_toolkit_compat.h.orig        Fri Feb 
 3 10:47:33 2017'
-       echo >>[email protected] '+++ modules/ssl/ssl_toolkit_compat.h     Fri Feb  3 
10:52:17 2017'
-       echo >>[email protected] '@@ -84,7 +84,9 @@'
-       echo >>[email protected] ' #define SSL_get_state(ssl) SSL_state(ssl)'
-       echo >>[email protected] ' #endif'
-       echo >>[email protected] ' '
-       echo >>[email protected] '+#ifndef HAVE_SSL_SET_STATE'
-       echo >>[email protected] ' #define SSL_set_state(ssl,val) (ssl)->state = val'
-       echo >>[email protected] '+#endif'
-       echo >>[email protected] ' '
-       echo >>[email protected] ' #define MODSSL_BIO_CB_ARG_TYPE const char'
-       echo >>[email protected] ' #define MODSSL_CRYPTO_CB_ARG_TYPE const char'
-       mv -f [email protected] $@
-
-$(HTTPD_OBJDIR)/acinclude.diff:
+$(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff:
        mkdir -p $(dir $@)
-       echo >[email protected] '--- acinclude.m4.orig     Fri Feb  3 11:05:08 2017'
-       echo >>[email protected] '+++ acinclude.m4 Fri Feb  3 11:05:15 2017'
-       echo >>[email protected] '@@ -455,6 +455,7 @@'
-       echo >>[email protected] '     AC_CHECK_HEADERS([openssl/engine.h])'
-       echo >>[email protected] '     AC_CHECK_FUNCS([SSLeay_version SSL_CTX_new], [], 
[liberrors="yes"])'
-       echo >>[email protected] '     AC_CHECK_FUNCS([ENGINE_init 
ENGINE_load_builtin_engines])'
-       echo >>[email protected] '+    AC_CHECK_FUNCS(SSL_set_state)'
-       echo >>[email protected] '   else'
-       echo >>[email protected] '     AC_CHECK_FUNCS([SSLC_library_version SSL_CTX_new], 
[], [liberrors="yes"])'
-       echo >>[email protected] '     AC_CHECK_FUNCS(SSL_set_state)'
+       echo > [email protected] '--- modules/ssl/ssl_engine_init.c.orig   Sun Dec 16 
13:34:14 2018'
+       echo >> [email protected] '+++ modules/ssl/ssl_engine_init.c       Sun Dec 16 
13:34:59 2018'
+       echo >> [email protected] '@@ -1492,7 +1492,7 @@'
+       echo >> [email protected] '     X509_STORE_CTX *sctx;'
+       echo >> [email protected] '     X509_STORE *store = 
SSL_CTX_get_cert_store(mctx->ssl_ctx);'
+       echo >> [email protected] ' '
+       echo >> [email protected] '-#if OPENSSL_VERSION_NUMBER >= 0x1010100fL'
+       echo >> [email protected] '+#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && 
!defined(LIBRESSL_VERSION_NUMBER)'
+       echo >> [email protected] '     /* For OpenSSL >=1.1.1, turn on client cert 
support which is'
+       echo >> [email protected] '      * otherwise turned off by default (by design).'
+       echo >> [email protected] '      * https://github.com/openssl/openssl/issues/6933 
*/'
        mv -f [email protected] $@
 
-# fix build without APR_HAS_THREADS (broken by r1750836)
-ifneq ($(THREADING),yes)
-HTTPD_REVERT_1750836_CMD = (cd $(HTTPD_SRCDIR)/modules/proxy && svn diff 
-c-1750836 
https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x/modules/proxy/proxy_util.c
 | patch)
-else
-HTTPD_REVERT_1750836_CMD = true
-endif
+$(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff:
+       cd $(HTTPD_OBJDIR) && $(FETCH_CMD) 
https://stsp.name/mod-proxy-no-threads-2.4.diff
 
 # retrieve httpd
 $(HTTPD_OBJDIR)/.retrieved: $(DISTDIR)/$(HTTPD_DIST) \
-       $(HTTPD_OBJDIR)/chil-engine.diff $(HTTPD_OBJDIR)/ssl-set-state.diff \
-       $(HTTPD_OBJDIR)/acinclude.diff
+       $(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff \
+       $(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff
        $(call do_check_sha256,$(HTTPD_DIST))
        [ -d $(HTTPD_OBJDIR) ] || mkdir -p $(HTTPD_OBJDIR)
        tar -C $(SRCDIR) -zxf $(DISTDIR)/$(HTTPD_DIST)
-       cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/chil-engine.diff
-       cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/ssl-set-state.diff
-       cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/acinclude.diff
-       cp $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h \
-               $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h.orig
-       sed '/^#define HAVE_SSL_RAND_EGD/d' \
-               < $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h.orig \
-               > $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h
-       cp $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c \
-               $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c.orig
-       sed 's/^\(#if (OPENSSL_VERSION_NUMBER >= 0x00908000)\)$$/\1 \&\& 
!defined(OPENSSL_NO_COMP)/' \
-               < $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c.orig \
-               > $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c
-       cp $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_init.c \
-               $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_init.c.orig
-       $(foreach f,  ssl_engine_init.c ssl_util_ssl.c ssl_util_ssl.h, \
-               cp $(HTTPD_SRCDIR)/modules/ssl/${f}  
$(HTTPD_SRCDIR)/modules/ssl/${f}.orig; \
-               sed 
's/SSL_CTX_use_certificate_chain/_SSL_CTX_use_certificate_chain/' \
-               < $(HTTPD_SRCDIR)/modules/ssl/${f}.orig \
-               > $(HTTPD_SRCDIR)/modules/ssl/${f};\
-       )
-       $(HTTPD_REVERT_1750836_CMD)
+       (cd $(HTTPD_SRCDIR) && patch -p0 < 
$(HTTPD_OBJDIR)/ssl-init-proxy-certs.diff)
+       (cd $(HTTPD_SRCDIR) && patch -p0 < 
$(HTTPD_OBJDIR)/mod-proxy-no-threads-2.4.diff)
+       (cd $(HTTPD_SRCDIR) && svn diff -cr1849590 
https://svn.apache.org/repos/asf/httpd/httpd/trunk | patch -p0)
+       (cd $(HTTPD_SRCDIR) && svn diff -cr1663375 
https://svn.apache.org/repos/asf/httpd/httpd/trunk | patch -p0)
        touch $@
 
 # configure httpd
 $(HTTPD_OBJDIR)/.configured: $(HTTPD_OBJDIR)/.retrieved \
-       $(APR_UTIL_OBJDIR)/.installed
-       cd $(HTTPD_SRCDIR) && ./buildconf
+       $(APR_UTIL_OBJDIR)/.installed $(PCRE_OBJDIR)/.installed
+       cd $(HTTPD_SRCDIR) && ./buildconf \
+               --with-apr="$(PREFIX)/apr/bin/apr-1-config" \
+               --with-apr-util="$(PREFIX)/apr/bin/apu-1-config"
        cd $(HTTPD_OBJDIR) \
                && env CFLAGS="-g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \
                CC=$(CC) CXX=$(CXX) \
@@ -751,13 +782,16 @@ $(HTTPD_OBJDIR)/.configured: $(HTTPD_OBJ
                PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
                $(HTTPD_SRCDIR)/configure \
                --prefix=$(PREFIX)/httpd \
-               --enable-maintainer-mode \
+               --with-mpm=prefork \
                --enable-ssl \
                --enable-dav \
                --enable-proxy \
-               --with-mpm=prefork \
-               --with-apr="$(PREFIX)/apr" \
-               --with-apr-util="$(PREFIX)/apr"
+               --disable-md \
+               --disable-http2 \
+               --disable-brotli \
+               --with-apr="$(PREFIX)/apr/bin/apr-1-config" \
+               --with-apr-util="$(PREFIX)/apr/bin/apu-1-config" \
+               --with-pcre="$(PREFIX)/pcre"
        touch $@
 
 # compile httpd
@@ -776,19 +810,28 @@ $(HTTPD_CONF):
        echo > [email protected] '# httpd config for use with mod_dav_svn'
        echo >>[email protected] 'ServerRoot "$(PREFIX)/httpd"'
        echo >>[email protected] 'Listen localhost:8080'
+       echo >>[email protected] 'LoadModule unixd_module modules/mod_unixd.so'
+       echo >>[email protected] 'LoadModule alias_module modules/mod_alias.so'
+       echo >>[email protected] 'LoadModule access_compat_module 
modules/mod_access_compat.so'
+       echo >>[email protected] 'LoadModule authn_core_module modules/mod_authn_core.so'
+       echo >>[email protected] 'LoadModule authn_file_module modules/mod_authn_file.so'
+       echo >>[email protected] 'LoadModule authz_core_module modules/mod_authz_core.so'
+       echo >>[email protected] 'LoadModule authz_user_module modules/mod_authz_user.so'
+       echo >>[email protected] 'LoadModule authz_groupfile_module 
modules/mod_authz_groupfile.so'
+       echo >>[email protected] 'LoadModule auth_basic_module modules/mod_auth_basic.so'
+       echo >>[email protected] 'LoadModule dav_module modules/mod_dav.so'
        echo >>[email protected] 'LoadModule dav_svn_module 
modules/svn-$(WC)/mod_dav_svn.so'
        echo >>[email protected] 'LoadModule authz_svn_module 
modules/svn-$(WC)/mod_authz_svn.so'
        echo >>[email protected] 'DocumentRoot "$(PREFIX)/httpd/htdocs"'
        echo >>[email protected] '<Directory />'
        echo >>[email protected] '    Options FollowSymLinks'
        echo >>[email protected] '    AllowOverride None'
-       echo >>[email protected] '    Order deny,allow'
-       echo >>[email protected] '    Deny from all'
+       echo >>[email protected] '    Require all denied'
        echo >>[email protected] '</Directory>'
        echo >>[email protected] '<Location /repos>'
        echo >>[email protected] '    DAV svn'
        echo >>[email protected] '    SVNPath /tmp/svn-sandbox/repos'
-       echo >>[email protected] '    Allow from localhost'
+       echo >>[email protected] '    Require ip localhost'
        echo >>[email protected] '</Location>'
        mv -f [email protected] $@
 
@@ -1186,6 +1229,29 @@ $(RUBY_OBJDIR)/openssl_missing.patch:
        echo >> [email protected] ' #if defined(HAVE_AUTHENTICATED_ENCRYPTION) && 
!defined(EVP_CTRL_AEAD_GET_TAG)'
        mv -f [email protected] $@
 
+$(RUBY_OBJDIR)/sparc64_buserror.patch:
+       mkdir -p $(dir $@)
+       echo > [email protected] '--- compile.c.orig       Thu Mar 12 12:58:26 2020'
+       echo >> [email protected] '+++ compile.c   Thu Mar 12 16:36:55 2020'
+       echo >> [email protected] '@@ -751,6 +751,16 @@'
+       echo >> [email protected] '   #define STRICT_ALIGNMENT'
+       echo >> [email protected] ' #endif'
+       echo >> [email protected] ' '
+       echo >> [email protected] '+/*'
+       echo >> [email protected] '+ * Some OpenBSD platforms (including sparc64) require 
strict alignment.'
+       echo >> [email protected] '+ */'
+       echo >> [email protected] '+#if defined(__OpenBSD__)'
+       echo >> [email protected] '+  #include <sys/endian.h>'
+       echo >> [email protected] '+  #ifdef __STRICT_ALIGNMENT'
+       echo >> [email protected] '+    #define STRICT_ALIGNMENT'
+       echo >> [email protected] '+  #endif'
+       echo >> [email protected] '+#endif'
+       echo >> [email protected] '+'
+       echo >> [email protected] ' #ifdef STRICT_ALIGNMENT'
+       echo >> [email protected] '   #if defined(HAVE_TRUE_LONG_LONG) && SIZEOF_LONG_LONG 
> SIZEOF_VALUE'
+       echo >> [email protected] '     #define ALIGNMENT_SIZE SIZEOF_LONG_LONG'
+       mv -f [email protected] $@
+
 ifeq ($(UNAME),OpenBSD)
 RUBY_SSL_EX_NEW_DATA_PATCH = sed -i -e 
'/^have_func("X509_STORE_set_ex_data")$$/ { p; 
s/^.*$$/\have_func("X509_STORE_get_ex_new_index")/; }'
 else
@@ -1194,13 +1260,14 @@ endif
 
 # retrieve ruby
 #
-$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST) 
$(RUBY_OBJDIR)/openssl_missing.patch
+$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST) 
$(RUBY_OBJDIR)/openssl_missing.patch $(RUBY_OBJDIR)/sparc64_buserror.patch
        $(call do_check_sha256,$(RUBY_DIST))
        [ -d $(RUBY_OBJDIR) ] || mkdir -p $(RUBY_OBJDIR)
        tar -C $(SRCDIR) -zxf $(DISTDIR)/$(RUBY_DIST)
        -which ghead && sed -i -e "s/head -c/ghead -c/" $(RUBY_SRCDIR)/configure
        $(RUBY_SSL_EX_NEW_DATA_PATCH) $(RUBY_SRCDIR)/ext/openssl/extconf.rb
        cd $(RUBY_SRCDIR) && patch -p0 < $(RUBY_OBJDIR)/openssl_missing.patch
+       cd $(RUBY_SRCDIR) && patch -p0 < $(RUBY_OBJDIR)/sparc64_buserror.patch
        touch $@
 
 ifeq ($(THREADING),yes)
@@ -1291,14 +1358,9 @@ python-clean:
 $(DISTDIR)/$(PYTHON_DIST):
        cd $(DISTDIR) && $(FETCH_CMD) $(PYTHON_URL)
 
-# https://bugs.python.org/issue12560
-$(DISTDIR)/python-issue12560.patch:
-       cd $(DISTDIR) && $(FETCH_CMD) -O "$@" \
-               https://hg.python.org/cpython/raw-rev/32cc37a89b58
-       
 # retrieve python
 #
-$(PYTHON_OBJDIR)/.retrieved: $(DISTDIR)/$(PYTHON_DIST) 
$(DISTDIR)/python-issue12560.patch
+$(PYTHON_OBJDIR)/.retrieved: $(DISTDIR)/$(PYTHON_DIST)
        $(call do_check_sha256,$(PYTHON_DIST))
        [ -d $(PYTHON_OBJDIR) ] || mkdir -p $(PYTHON_OBJDIR)
        tar -C $(SRCDIR) -zxf $(DISTDIR)/$(PYTHON_DIST)
@@ -1312,7 +1374,6 @@ $(PYTHON_OBJDIR)/.retrieved: $(DISTDIR)/
                > $(PYTHON_SRCDIR)/setup.py.patched
        mv $(PYTHON_SRCDIR)/setup.py.patched $(PYTHON_SRCDIR)/setup.py
        chmod +x $(PYTHON_SRCDIR)/setup.py
-       cd $(PYTHON_SRCDIR) && patch -p1 < $(DISTDIR)/python-issue12560.patch
        touch $@
 
 # configure python
@@ -1326,13 +1387,14 @@ $(PYTHON_OBJDIR)/.configured: $(PYTHON_O
                CC=$(CC) CXX=$(CXX) \
                CPPFLAGS="-I$(PREFIX)/bz2/include" \
                LDFLAGS="-Wl,-rpath=$(PREFIX)/python/lib -L$(PREFIX)/bz2/lib" \
-               LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
+               
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(PREFIX)/python/lib:$$LD_LIBRARY_PATH" \
                PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
                $(PYTHON_SRCDIR)/configure \
                --prefix=$(PREFIX)/python \
                --enable-shared \
                --with-system-expat \
                --with-dbmliborder=bdb \
+               --without-pymalloc \
                $(PYTHON_PROFILING)
        touch $@
 
@@ -1340,7 +1402,7 @@ $(PYTHON_OBJDIR)/.configured: $(PYTHON_O
 $(PYTHON_OBJDIR)/.compiled: $(PYTHON_OBJDIR)/.configured
        (cd $(PYTHON_OBJDIR) && \
                env MAKEFLAGS= \
-               LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
+               
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(PREFIX)/python/lib:$$LD_LIBRARY_PATH" \
                make -j${MAKE_JOBS})
        touch $@
 
@@ -1348,10 +1410,117 @@ $(PYTHON_OBJDIR)/.compiled: $(PYTHON_OBJ
 $(PYTHON_OBJDIR)/.installed: $(PYTHON_OBJDIR)/.compiled
        (cd $(PYTHON_OBJDIR) && \
                env MAKEFLAGS= \
-               LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
+               
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(PREFIX)/python/lib:$$LD_LIBRARY_PATH" \
                make install)
+       ln -sf $(PREFIX)/python/bin/python3 $(PREFIX)/python/bin/python
        touch $@
 
+#######################################################################
+# python 2
+#######################################################################
+
+python2-retrieve:      $(PYTHON2_OBJDIR)/.retrieved
+python2-configure:     $(PYTHON2_OBJDIR)/.configured
+python2-compile:       $(PYTHON2_OBJDIR)/.compiled
+python2-install:       $(PYTHON2_OBJDIR)/.installed
+python2-reset:
+       $(foreach f, .retrieved .configured .compiled .installed, \
+               rm -f $(PYTHON2_OBJDIR)/$(f);)
+
+python2-clean:
+       -(cd $(PYTHON2_OBJDIR) && env MAKEFLAGS= make distclean)
+
+# fetch distfile for python 2
+$(DISTDIR)/$(PYTHON2_DIST):
+       cd $(DISTDIR) && $(FETCH_CMD) $(PYTHON2_URL)
+
+# https://bugs.python.org/issue12560
+$(DISTDIR)/python-issue12560.patch:
+       cd $(DISTDIR) && $(FETCH_CMD) -O "$@" \
+               https://hg.python.org/cpython/raw-rev/32cc37a89b58
+
+# retrieve python 2
+#
+$(PYTHON2_OBJDIR)/.retrieved: $(DISTDIR)/$(PYTHON2_DIST) 
$(DISTDIR)/python-issue12560.patch
+       $(call do_check_sha256,$(PYTHON2_DIST))
+       [ -d $(PYTHON2_OBJDIR) ] || mkdir -p $(PYTHON2_OBJDIR)
+       tar -C $(SRCDIR) -zxf $(DISTDIR)/$(PYTHON2_DIST)
+       # Make setup.py use our own dependencies instead of system ones
+       sed -e "s#sqlite_inc_paths = \[ '/usr/include',#sqlite_inc_paths = [ 
'$(PREFIX)/sqlite/include',#" \
+               -e "s#'/usr/include/db4'#'$(PREFIX)/bdb/include'#" \
+               -e "s|\(add_dir_to_list(self.compiler.library_dirs, 
'/usr/local/lib')\)|pass #\1|" \
+               -e "s|\(add_dir_to_list(self.compiler.include_dirs, 
'/usr/local/include')\)|pass #\1|" \
+               -e "s#find_library_file(lib_dirs, 
'bz2'#find_library_file(['$(PREFIX)/bz2/lib'] + lib_dirs, 'bz2'#" \
+               < $(PYTHON2_SRCDIR)/setup.py \
+               > $(PYTHON2_SRCDIR)/setup.py.patched
+       mv $(PYTHON2_SRCDIR)/setup.py.patched $(PYTHON2_SRCDIR)/setup.py
+       chmod +x $(PYTHON2_SRCDIR)/setup.py
+       cd $(PYTHON2_SRCDIR) && patch -p1 < $(DISTDIR)/python-issue12560.patch
+       mkdir -p $(PYTHON2_OBJDIR)/bin
+       ln -sf "`which python2`" $(PYTHON2_OBJDIR)/bin/python
+       touch $@
+
+# configure python 2
+ifdef PROFILE
+PYTHON2_PROFILING=--enable-profiling
+endif
+$(PYTHON2_OBJDIR)/.configured: $(PYTHON2_OBJDIR)/.retrieved \
+       $(BZ2_OBJDIR)/.installed
+       cd $(PYTHON2_OBJDIR) \
+               && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \
+               CC=$(CC) CXX=$(CXX) \
+               CPPFLAGS="-I$(PREFIX)/bz2/include" \
+               LDFLAGS="-Wl,-rpath=$(PREFIX)/python2/lib -L$(PREFIX)/bz2/lib" \
+               
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(PREFIX)/python2/lib:$$LD_LIBRARY_PATH" \
+               PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
+               PATH=$(PYTHON2_OBJDIR)/bin:$$PATH \
+               $(PYTHON2_SRCDIR)/configure \
+               --prefix=$(PREFIX)/python2 \
+               --enable-shared \
+               --with-system-expat \
+               --with-dbmliborder=bdb \
+               --without-pymalloc \
+               $(PYTHON2_PROFILING)
+       touch $@
+
+# compile python 2
+$(PYTHON2_OBJDIR)/.compiled: $(PYTHON2_OBJDIR)/.configured
+       (cd $(PYTHON2_OBJDIR) && \
+               env MAKEFLAGS= \
+               
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(PREFIX)/python2/lib:$$LD_LIBRARY_PATH" \
+               PATH=$(PYTHON2_OBJDIR)/bin:$$PATH \
+               make -j${MAKE_JOBS})
+       touch $@
+
+# install python 2
+$(PYTHON2_OBJDIR)/.installed: $(PYTHON2_OBJDIR)/.compiled
+       (cd $(PYTHON2_OBJDIR) && \
+               env MAKEFLAGS= \
+               
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(PREFIX)/python2/lib:$$LD_LIBRARY_PATH" \
+               PATH=$(PYTHON2_OBJDIR)/bin:$$PATH \
+               make install)
+       ln -sf $(PREFIX)/python2/bin/python2 $(PREFIX)/python2/bin/python
+       touch $@
+
+#######################################################################
+# py3c
+#######################################################################
+
+py3c-retrieve: $(PY3C_OBJDIR)/.retrieved
+py3c-reset:
+       $(foreach f, .retrieved .configured .compiled .installed, \
+               rm -f $(PY3C_OBJDIR)/$(f);)
+
+# fetch distfile for py3c
+$(DISTDIR)/$(PY3C_DIST):
+       cd $(DISTDIR) && $(FETCH_CMD) $(PY3C_URL)
+
+# retrieve py3c
+$(PY3C_OBJDIR)/.retrieved: $(DISTDIR)/$(PY3C_DIST)
+       $(call do_check_sha256,$(PY3C_DIST))
+       [ -d $(PY3C_OBJDIR) ] || mkdir -p $(PY3C_OBJDIR)
+       tar -C $(SRCDIR) -zxf $(DISTDIR)/$(PY3C_DIST)
+       touch $@
 
 #######################################################################
 # junit
@@ -1541,7 +1710,7 @@ DISABLE_NEON_VERSION_CHECK=--disable-neo
 W_NO_SYSTEM_HEADERS=-Wno-system-headers
 NEON_FLAG=--with-neon="$(PREFIX)/neon"
 JAVAHL_CHECK_TARGET=check-javahl
-else ifeq ($(BRANCH_MAJOR), $(filter $(BRANCH_MAJOR), 1.8 1.9))
+else ifeq ($(BRANCH_MAJOR), $(filter 1.8 1.9, $(BRANCH_MAJOR)))
 BDB_FLAG=db.h:$(PREFIX)/bdb/include:$(PREFIX)/bdb/lib:db-$(BDB_MAJOR_VER)
 SERF_FLAG=--with-serf="$(PREFIX)/serf"
 # serf >= 1.3.0 is built with scons and no longer sets up rpath linker flags,
@@ -1552,7 +1721,7 @@ MOD_AUTHZ_SVN=modules/svn-$(WC)/mod_auth
 MOD_DONTDOTHAT=modules/svn-$(WC)/mod_dontdothat.so
 LIBMAGIC_FLAG=--with-libmagic=$(PREFIX)/libmagic
 JAVAHL_CHECK_TARGET=check-all-javahl
-else # 1.10
+else # 1.10, 1.11, 1.12, 1.13, 1.14, trunk
 BDB_FLAG=db.h:$(PREFIX)/bdb/include:$(PREFIX)/bdb/lib:db-$(BDB_MAJOR_VER)
 SERF_FLAG=--with-serf="$(PREFIX)/serf"
 # serf >= 1.3.0 is built with scons and no longer sets up rpath linker flags,
@@ -1610,10 +1779,11 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)
                        CC=$(CC) CXX=$(CXX) \
                        CFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \
                        CXXFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" 
\
-                       LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \
-                       PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
+                       
LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(PREFIX)/$(PYTHON)/lib:$$LD_LIBRARY_PATH" \
+                       
PKG_CONFIG_PATH=$(PKG_CONFIG_PATH):$(PREFIX)/$(PYTHON)/lib/pkgconfig \
+                       PYTHON=$(PREFIX)/$(PYTHON)/bin/python \
                        GREP="`which grep`" \
-                       
PATH=$(PREFIX)/ruby/bin:$(PREFIX)/python/bin:$(PREFIX)/gettext/bin:$$PATH \
+                       
PATH=$(PREFIX)/ruby/bin:$(PREFIX)/$(PYTHON)/bin:$(PREFIX)/gettext/bin:$$PATH \
                        $(SVN_SRCDIR)/configure \
                        --enable-maintainer-mode \
                        --prefix="$(SVN_PREFIX)" \
@@ -1628,6 +1798,7 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)
                        --without-gnome-keyring \
                        --with-berkeley-db="$(BDB_FLAG)" \
                        --with-ruby-sitedir="$(SVN_PREFIX)/lib/ruby/site_ruby" \
+                       --with-py3c="$(SRCDIR)/py3c-${PY3C_VER}" \
                        --disable-mod-activation \
                        $(JAVAHL_FLAG) \
                        $(LIBMAGIC_FLAG) \
@@ -1733,15 +1904,26 @@ $(HTTPD_CHECK_GROUPS):
 
 $(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CONF) $(HTTPD_CHECK_GROUPS)
        mkdir -p $(dir $@)
-       $(PREFIX)/httpd/bin/htpasswd -bc $(HTTPD_CHECK_USERS).tmp jrandom 
rayjandom
-       $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp jconstant 
rayjandom
-       $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp __dumpster__ 
__loadster__
-       $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JRANDOM 
rayjandom
-       $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JCONSTANT 
rayjandom
+       env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd -bc 
$(HTTPD_CHECK_USERS).tmp jrandom rayjandom
+       env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd -b 
$(HTTPD_CHECK_USERS).tmp jconstant rayjandom
+       env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd -b 
$(HTTPD_CHECK_USERS).tmp __dumpster__ __loadster__
+       env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd -b 
$(HTTPD_CHECK_USERS).tmp JRANDOM rayjandom
+       env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd -b 
$(HTTPD_CHECK_USERS).tmp JCONSTANT rayjandom
        mv -f $(HTTPD_CHECK_USERS).tmp $(HTTPD_CHECK_USERS)
        echo > [email protected] '# httpd config for make check'
        echo >>[email protected] 'ServerRoot "$(PREFIX)/httpd"'
        echo >>[email protected] 'Listen localhost:$(HTTPD_CHECK_PORT)'
+       echo >>[email protected] 'LogLevel warn'
+       echo >>[email protected] 'LoadModule unixd_module modules/mod_unixd.so'
+       echo >>[email protected] 'LoadModule alias_module modules/mod_alias.so'
+       echo >>[email protected] 'LoadModule access_compat_module 
modules/mod_access_compat.so'
+       echo >>[email protected] 'LoadModule authn_core_module modules/mod_authn_core.so'
+       echo >>[email protected] 'LoadModule authn_file_module modules/mod_authn_file.so'
+       echo >>[email protected] 'LoadModule authz_core_module modules/mod_authz_core.so'
+       echo >>[email protected] 'LoadModule authz_user_module modules/mod_authz_user.so'
+       echo >>[email protected] 'LoadModule authz_groupfile_module 
modules/mod_authz_groupfile.so'
+       echo >>[email protected] 'LoadModule auth_basic_module modules/mod_auth_basic.so'
+       echo >>[email protected] 'LoadModule dav_module modules/mod_dav.so'
        echo >>[email protected] 'LoadModule dav_svn_module $(MOD_DAV_SVN)'
        echo >>[email protected] 'LoadModule authz_svn_module $(MOD_AUTHZ_SVN)'
        echo >>[email protected] 'LoadModule dontdothat_module $(MOD_DONTDOTHAT)'
@@ -1750,8 +1932,7 @@ $(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CO
        echo >>[email protected] '<Directory />'
        echo >>[email protected] '    Options FollowSymLinks'
        echo >>[email protected] '    AllowOverride None'
-       echo >>[email protected] '    Order deny,allow'
-       echo >>[email protected] '    Allow from all'
+       echo >>[email protected] '    Require all granted'
        echo >>[email protected] '</Directory>'
        echo >>[email protected] '<Location /svn-test-work/repositories>'
        echo >>[email protected] '    DAV svn'
@@ -1783,11 +1964,26 @@ ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
        echo >>[email protected] '    SVNPathAuthz short_circuit'
 endif
        echo >>[email protected] '</Location>'
+       echo >>[email protected] '<Location /svn-test-work/local_tmp/trojan>'
+       echo >>[email protected] '    DAV svn'
+       echo >>[email protected] '    SVNPath 
$(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp/trojan'
+       echo >>[email protected] '    AuthzSVNAccessFile 
$(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+       echo >>[email protected] '    AuthType Basic'
+       echo >>[email protected] '    AuthName "Subversion Repository"'
+       echo >>[email protected] '    AuthUserFile $(HTTPD_CHECK_USERS)'
+       echo >>[email protected] '    Require valid-user'
+ifeq ($(USE_HTTPV1),yes)
+       echo >>[email protected] '    SVNAdvertiseV2Protocol off'
+endif
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+       echo >>[email protected] '    SVNPathAuthz short_circuit'
+endif
+       echo >>[email protected] '</Location>'
        echo >>[email protected] '# This Location lets you access repositories dropped in 
/tmp/'
        echo >>[email protected] '<Location /svn>'
        echo >>[email protected] '    DAV svn'
        echo >>[email protected] '    SVNParentPath /tmp'
-       echo >>[email protected] '    Allow from all'
+       echo >>[email protected] '    Require all granted'
        echo >>[email protected] '    #AuthType Basic'
        echo >>[email protected] '    #AuthName "Subversion Repository"'
        echo >>[email protected] '    #AuthUserFile $(HTTPD_CHECK_USERS)'
@@ -1828,12 +2024,27 @@ endif
        echo >>[email protected] '    Require all granted'
        echo >>[email protected] '  </IfModule>'
        echo >>[email protected] '  <IfModule !mod_authz_core.c>'
-       echo >>[email protected] '    Allow from all'
+       echo >>[email protected] '    Requite all granted'
        echo >>[email protected] '  </IfModule>'
 ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
        echo >>[email protected] '    SVNPathAuthz short_circuit'
 endif
        echo >>[email protected] '</Location>'
+       echo >>[email protected] '<Location /authz-test-work/in-repos-authz>'
+       echo >>[email protected] '  DAV svn'
+       echo >>[email protected] '  SVNParentPath     
$(SVN_WC)/subversion/tests/cmdline/svn-test-work/repositories'
+       echo >>[email protected] '  AuthzSVNReposRelativeAccessFile "^/authz"'
+       echo >>[email protected] '  AuthType Basic'
+       echo >>[email protected] '  AuthName "Subversion Repository"'
+       echo >>[email protected] '  AuthUserFile $(HTTPD_CHECK_USERS)'
+       echo >>[email protected] '  Require valid-user'
+ifeq ($(USE_HTTPV1),yes)
+       echo >>[email protected] '  SVNAdvertiseV2Protocol off'
+endif
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+       echo >>[email protected] '    SVNPathAuthz short_circuit'
+endif
+       echo >>[email protected] '</Location>'
        echo >>[email protected] '<Location /authz-test-work/mixed>'
        echo >>[email protected] '  DAV               svn'
        echo >>[email protected] '  SVNParentPath     
$(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
@@ -1846,7 +2057,7 @@ endif
        echo >>[email protected] '  AuthName          "Subversion Repository"'
        echo >>[email protected] '  AuthUserFile      $(HTTPD_CHECK_USERS)'
        echo >>[email protected] '  Require           valid-user'
-       echo >>[email protected] '  Satisfy Any'
+       echo >>[email protected] '  Satisfy           Any'
 ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
        echo >>[email protected] '    SVNPathAuthz short_circuit'
 endif
@@ -1936,7 +2147,7 @@ endif
        echo >>[email protected] '<IfModule mod_authz_core.c>'
        echo >>[email protected] '  <Location /authz-test-work/sallrany>'
        echo >>[email protected] '    DAV               svn'
-       echo >>[email protected] '    SVNParentPath     
$($SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+       echo >>[email protected] '    SVNParentPath     
$(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
        echo >>[email protected] '    AuthzSVNAccessFile 
$(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
 ifeq ($(USE_HTTPV1),yes)
        echo >>[email protected] '    SVNAdvertiseV2Protocol off'
@@ -1979,7 +2190,7 @@ endif
        echo >>[email protected] '</IfModule>'
        echo >>[email protected] 'RedirectMatch permanent 
^/svn-test-work/repositories/REDIRECT-PERM-(.*)$$ 
/svn-test-work/repositories/$$1'
        echo >>[email protected] 'RedirectMatch 
^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$$ 
/svn-test-work/repositories/$$1'
-       echo >>[email protected] 'Include "conf/$(SVN_REL_WC)*-custom.conf"'
+       echo >>[email protected] 'IncludeOptional "conf/$(SVN_REL_WC)*-custom.conf"'
        echo >> [email protected] '#SVNInMemoryCacheSize 0'
        echo >> [email protected] '#SVNCacheTextDeltas Off'
        echo >> [email protected] '#SVNCacheRevProps Off'
@@ -1990,6 +2201,16 @@ $(HTTPD_PROXY_CONF): $(HTTPD_CHECK_CONF)
        echo > [email protected] '# httpd config for a write-through proxy'
        echo >>[email protected] 'ServerRoot "$(PREFIX)/httpd"'
        echo >>[email protected] 'Listen localhost:$(HTTPD_PROXY_PORT)'
+       echo >>[email protected] 'LoadModule unixd_module modules/mod_unixd.so'
+       echo >>[email protected] 'LoadModule alias_module modules/mod_alias.so'
+       echo >>[email protected] 'LoadModule access_compat_module 
modules/mod_access_compat.so'
+       echo >>[email protected] 'LoadModule authn_core_module modules/mod_authn_core.so'
+       echo >>[email protected] 'LoadModule authn_file_module modules/mod_authn_file.so'
+       echo >>[email protected] 'LoadModule authz_core_module modules/mod_authz_core.so'
+       echo >>[email protected] 'LoadModule authz_user_module modules/mod_authz_user.so'
+       echo >>[email protected] 'LoadModule authz_groupfile_module 
modules/mod_authz_groupfile.so'
+       echo >>[email protected] 'LoadModule auth_basic_module modules/mod_auth_basic.so'
+       echo >>[email protected] 'LoadModule dav_module modules/mod_dav.so'
        echo >>[email protected] 'LoadModule dav_svn_module $(MOD_DAV_SVN)'
        echo >>[email protected] 'LoadModule authz_svn_module $(MOD_AUTHZ_SVN)'
        echo >>[email protected] 'LoadModule dontdothat_module $(MOD_DONTDOTHAT)'
@@ -1999,7 +2220,7 @@ $(HTTPD_PROXY_CONF): $(HTTPD_CHECK_CONF)
        echo >>[email protected] '    DAV svn'
        echo >>[email protected] '    SVNParentPath /tmp/svn-$(BRANCH)-proxy'
        echo >>[email protected] '    SVNMasterURI 
http://localhost:$(HTTPD_CHECK_PORT)/svn/'
-       echo >>[email protected] '    Allow from all'
+       echo >>[email protected] '    Requite all granted'
        echo >>[email protected] '    #AuthType Basic'
        echo >>[email protected] '    #AuthName "Subversion Repository"'
        echo >>[email protected] '    #AuthUserFile $(HTTPD_CHECK_USERS)'
@@ -2015,7 +2236,7 @@ endif
        echo >>[email protected] '<Location /svn-proxy-sync>'
        echo >>[email protected] 'DAV svn'
        echo >>[email protected] 'SVNParentPath /tmp/svn-$(BRANCH)-proxy'
-       echo >>[email protected] 'Allow from all'
+       echo >>[email protected] 'Require all granted'
        echo >>[email protected] '</Location>'
        mv -f [email protected] $@
 
@@ -2089,12 +2310,13 @@ stop-svnserve:
        $(SVNSERVE_STOP_CMD)
 
 define do_check
--cd $(svn_builddir) && for fs in fsfs bdb; do \
+-cd $(svn_builddir) && for fs in $(SVN_CHECK_FS_BACKENDS); do \
     echo "Begin test: $(subst svn-check-,,$@) x $$fs"; \
     test -d "$(RAMDISK)/tmp" && export TMPDIR="$(RAMDISK)/tmp"; \
     env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \
         env MAKEFLAGS= make check PARALLEL=$(PARALLEL) CLEANUP=$(CLEANUP) \
          EXCLUSIVE_WC_LOCKS=$(EXCLUSIVE_WC_LOCKS) \
+         THREADED=$(THREADED) \
          SVN_BIN_DIR=$(SVN_PREFIX)/bin \
          MEMCACHED_SERVER=$(MEMCACHED_SERVER) $1 FS_TYPE=$$fs; \
     for log in tests.log fails.log; do \
@@ -2175,6 +2397,7 @@ svn-check-swig-rb:
 
 svn-check-javahl:
        -if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \
+               ln -s libsvnjavahl-1.so.0.0 
$(PREFIX)/svn-$(WC)/lib/libsvnjavahl-1.so; \
                (cd $(svn_builddir) && \
                        env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
                        MAKEFLAGS= make $(JAVAHL_CHECK_TARGET) 2>&1) | \

Modified: subversion/branches/multi-wc-format/tools/dev/unix-build/README
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dev/unix-build/README?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dev/unix-build/README (original)
+++ subversion/branches/multi-wc-format/tools/dev/unix-build/README Fri Jan 14 
14:01:45 2022
@@ -1,7 +1,7 @@
 Introduction
 ============
 Makefile.svn aids Subversion developers on unix-like systems set up an
-SVN development environment without requiring root priviliges. It does
+SVN development environment without requiring root privileges. It does
 this by fetching Subversion along with many of its dependencies from
 the internet and building them using sane defaults suitable for
 development (for example, it invokes --enable-maintainer-mode while

Modified: subversion/branches/multi-wc-format/tools/dev/wc-format.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dev/wc-format.py?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dev/wc-format.py (original)
+++ subversion/branches/multi-wc-format/tools/dev/wc-format.py Fri Jan 14 
14:01:45 2022
@@ -40,7 +40,7 @@ def get_format(wc_path):
     parent_path = os.path.dirname(os.path.abspath(wc_path))
     if wc_path != parent_path:
       formatno = get_format(parent_path)
-      if formatno >= MIN_SINGLE_DB_FORMAT:
+      if isinstance(formatno, int) and formatno >= MIN_SINGLE_DB_FORMAT:
        return formatno
 
   return formatno

Propchange: subversion/branches/multi-wc-format/tools/dev/wc-ng/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Jan 14 14:01:45 2022
@@ -1 +1,2 @@
 svn-wc-db-tester
+.libs

Modified: subversion/branches/multi-wc-format/tools/dev/x509-parser.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dev/x509-parser.c?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dev/x509-parser.c (original)
+++ subversion/branches/multi-wc-format/tools/dev/x509-parser.c Fri Jan 14 
14:01:45 2022
@@ -118,7 +118,7 @@ get_der_cert_from_stream(const svn_strin
           return SVN_NO_ERROR;
         }
 
-      /* Try decoding as a PEM with begining and ending headers. */
+      /* Try decoding as a PEM with beginning and ending headers. */
       start = strstr(raw->data, PEM_BEGIN_CERT);
       end = strstr(raw->data, PEM_END_CERT);
       if (start && end && end > start)

Modified: subversion/branches/multi-wc-format/tools/dist/backport.pl
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dist/backport.pl?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dist/backport.pl (original)
+++ subversion/branches/multi-wc-format/tools/dist/backport.pl Fri Jan 14 
14:01:45 2022
@@ -9,11 +9,11 @@ use v5.10.0; # needed for $^V
 # experimental and "subject to change" in v5.18 (see perl5180delta).  Every
 # use of it now triggers a warning.
 #
-# As of Perl v5.26.1, the semantics of given/when provided by Perl are
+# As of Perl v5.30.0, the semantics of given/when provided by Perl are
 # compatible with those expected by the script, so disable the warning for
 # those Perls.  But don't try to disable the the warning category on Perls
 # that don't know that category, since that breaks compilation.
-no if (v5.17.0 le $^V and $^V le v5.26.1),
+no if (v5.17.0 le $^V and $^V le v5.30.0),
    warnings => 'experimental::smartmatch';
 
 # Licensed to the Apache Software Foundation (ASF) under one
@@ -157,7 +157,7 @@ N:   Move to the next entry.  Do not pro
      revisions added, justification changed) in the repository.
      (This is a local action that will not affect other people or bots.)
  :   Move to the next entry.  Prompt for the current entry again in the next
-     run of backport.pl. 
+     run of backport.pl.
      (That's a space character, ASCII 0x20.)
 ?:   Display this list.
 EOF
@@ -231,7 +231,7 @@ Both batch modes also perform a basic sa
 backport branches (via the "Branch:" header): if a backport branch is used, but
 at least one of the revisions enumerated in the entry title had neither been
 merged from $TRUNK to the branch root, nor been committed
-directly to the backport branch, the hourly bot will turn red and 
+directly to the backport branch, the hourly bot will turn red and
 nightly bot will skip the entry and email its admins.  (The nightly bot does
 not email the list on failure, since it doesn't use buildbot.)
 
@@ -262,6 +262,9 @@ numbers); it will be ignored.  For examp
     $0 "Committed revision 42." "\$Some_justification"
 will nominate r42.
 
+Revision numbers within the last thousand revisions may be specified using
+the last three digits only.
+
 The justification can be an arbitrarily-long string; if it is wider than the
 available width, this script will wrap it for you (and allow you to review
 the result before committing).
@@ -567,7 +570,7 @@ sub parse_entry {
   my (@revisions, @logsummary, $branch, @votes);
   # @lines = @_;
 
-  # strip spaces to match up with the indention
+  # strip spaces to match up with the indentation
   $_[0] =~ s/^( *)\* //;
   my $indentation = ' ' x (length($1) + 2);
   s/^$indentation// for @_;
@@ -1027,7 +1030,7 @@ sub handle_entry {
     # the "next PROMPT;" is; there's a "last;" at the end of the loop body.
     PROMPT: while (1) {
     say "";
-    say "\n>>> $entry{header_start}:";
+    say "\n\e\x5b32m>>> $entry{header_start}:\e\x5b0m";
     say join ", ", map { "r$_" } @{$entry{revisions}} if @{$entry{revisions}};
     say "$BRANCHES/$entry{branch}" if $entry{branch};
     say "--accept=$entry{accept}" if $entry{accept};
@@ -1196,7 +1199,7 @@ sub backport_main {
     given ($lines[0]) {
       # Section header
       when (/^[A-Z].*:$/i) {
-        say "\n\n=== $lines[0]" unless $YES;
+        say "\n\n\e\x5b33m\e\x5b1m=== $lines[0]\e\x5b0m" unless $YES;
         $in_approved = $lines[0] =~ /^Approved changes/;
       }
       # Comment
@@ -1238,6 +1241,20 @@ sub nominate_main {
 
   die "Unable to proceed." if warned_cannot_commit "Nominating failed";
 
+  # To save typing, require just the last three digits if they're unambiguous.
+  my $BASE_revision = `$SVN info --show-item=revision` + 0;
+  if ($BASE_revision > 1000) {
+    my $residue = $BASE_revision % 1000;
+    my $thousands = $BASE_revision - $residue;
+    @revnums = map {
+      $_ >= 1000
+        ? $_
+        : $thousands + $_ - 1000 * ($_ > $residue)
+      }
+      @revnums;
+  }
+
+  # Deduplicate and sort
   @revnums = sort { $a <=> $b } keys %{{ map { $_ => 1 } @revnums }};
   die "No revision numbers specified" unless @revnums;
 

Modified: subversion/branches/multi-wc-format/tools/dist/backport/merger.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dist/backport/merger.py?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dist/backport/merger.py (original)
+++ subversion/branches/multi-wc-format/tools/dist/backport/merger.py Fri Jan 
14 14:01:45 2022
@@ -151,13 +151,13 @@ def log_message_file(logmsg):
     logmsg_file.write(logmsg)
     logmsg_file.flush()
     yield logmsg_file.name
-  
+
 def merge(entry, expected_stderr=None, *, commit=False):
   """Merges ENTRY into the working copy at cwd.
 
   Do not commit the result, unless COMMIT is true.  When committing,
   remove ENTRY from its STATUS file prior to committing.
-  
+
   EXPECTED_STDERR will be passed to run_svn() for the actual 'merge' 
command."""
 
   assert isinstance(entry, backport.status.StatusEntry)
@@ -225,7 +225,7 @@ def merge(entry, expected_stderr=None, *
 
   if entry.branch:
     revnum = last_changed_revision('./STATUS')
-    
+
     if commit:
       # Sleep to avoid out-of-order commit notifications
       if not os.getenv("SVN_BACKPORT_DONT_SLEEP"): # enabled by the test suite

Modified: subversion/branches/multi-wc-format/tools/dist/backport/status.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dist/backport/status.py?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dist/backport/status.py (original)
+++ subversion/branches/multi-wc-format/tools/dist/backport/status.py Fri Jan 
14 14:01:45 2022
@@ -85,7 +85,7 @@ class Paragraph:
 
   def __init__(self, kind, text, entry, containing_section):
     """Constructor.
-    
+
     KIND is one of the Kind.* enumerators.
 
     TEXT is the physical text in the file, used by unparsing.
@@ -109,7 +109,7 @@ class Paragraph:
   @classmethod
   def is_header(cls, para_text):
     """PARA_TEXT is a single physical paragraph, as a bare multiline string.
-    
+
     If PARA_TEXT is a section header, return the header text; else, return
     False."""
     lines = para_text.split('\n', 2)
@@ -135,7 +135,7 @@ class Paragraph:
 
   def approved(self):
     "TRUE if this paragraph is in the approved section, false otherwise."
-    assert self.kind 
+    assert self.kind
     # ### backport.pl used to check just .startswith() here.
     return self.section() == "Approved changes"
 
@@ -335,7 +335,7 @@ class StatusEntry:
   def __init__(self, para_text, status_file=None):
     """Parse an entry from PARA_TEXT, and add it to SELF.  PARA_TEXT must
     contain exactly one entry, as a single multiline string.
-    
+
     STATUS_FILE is the StatusFile object containing this entry, if any.
     """
     self.branch = None
@@ -499,7 +499,7 @@ class StatusEntry:
     assert self.valid()
     suffix = "" if len(self.logsummary) == 1 else " [...]"
     return self.logsummary[0] + suffix
-             
+
   # Private for is_vetoed()
   _re_vetoed = re.compile(r'^\s*(-1:|-1\s*[()])', re.MULTILINE)
   def is_vetoed(self):

Modified: subversion/branches/multi-wc-format/tools/dist/backport_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dist/backport_tests.py?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dist/backport_tests.py (original)
+++ subversion/branches/multi-wc-format/tools/dist/backport_tests.py Fri Jan 14 
14:01:45 2022
@@ -528,7 +528,7 @@ def backport_double_conflict(sbox):
   #    ...
   #    Warning summary
   #    ===============
-  #    
+  #
   #    r4 (default logsummary): subshell exited with code 256
   # And backport.pl would exit with exit code 1.
 

Modified: subversion/branches/multi-wc-format/tools/dist/checksums.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dist/checksums.py?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dist/checksums.py (original)
+++ subversion/branches/multi-wc-format/tools/dist/checksums.py Fri Jan 14 
14:01:45 2022
@@ -19,7 +19,7 @@
 # under the License.
 #
 #
-# Check MD5 and SHA-1 and SHA-2 signatures of files, using 
+# Check MD5 and SHA-1 and SHA-2 signatures of files, using
 # md5sums, sha1sums, and/or sha512sums as manifests
 # Replaces the 'md5sum', 'sha1sum', and 'sha512sums' commands
 # on systems that do not have them, such as Mac OS X or Windows.

Modified: subversion/branches/multi-wc-format/tools/dist/dist.sh
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dist/dist.sh?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dist/dist.sh (original)
+++ subversion/branches/multi-wc-format/tools/dist/dist.sh Fri Jan 14 14:01:45 
2022
@@ -327,7 +327,7 @@ if [ -z "$ZIP" ]; then
   # Use the gzip -n flag - this prevents it from storing the original name of
   # the .tar file, and far more importantly, the mtime of the .tar file, in the
   # produced .tar.gz file. This is important, because it makes the gzip
-  # encoding reproducable by anyone else who has an similar version of gzip,
+  # encoding reproducible by anyone else who has an similar version of gzip,
   # and also uses "gzip -9n". This means that committers who want to GPG-sign
   # both the .tar.gz and the .tar.bz2 can download the .tar.bz2 (which is
   # smaller), and locally generate an exact duplicate of the official .tar.gz

Modified: subversion/branches/multi-wc-format/tools/dist/nightly.sh
URL: 
http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/tools/dist/nightly.sh?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/tools/dist/nightly.sh (original)
+++ subversion/branches/multi-wc-format/tools/dist/nightly.sh Fri Jan 14 
14:01:45 2022
@@ -21,7 +21,7 @@
 #
 set -e
 
-repo=http://svn.apache.org/repos/asf/subversion
+repo=https://svn.apache.org/repos/asf/subversion
 svn=svn
 olds=7
 


Reply via email to