Modified: subversion/branches/addremove/build/generator/gen_win_dependencies.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/gen_win_dependencies.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/gen_win_dependencies.py (original) +++ subversion/branches/addremove/build/generator/gen_win_dependencies.py Sat May 23 14:16:56 2020 @@ -32,6 +32,7 @@ import fnmatch import re import subprocess import string +from collections import namedtuple if sys.version_info[0] >= 3: # Python >=3.0 @@ -46,6 +47,8 @@ else: import gen_base import ezt +UserMacro = namedtuple('UserMacro', ['name', 'value']) + class SVNCommonLibrary: def __init__(self, name, include_dirs, lib_dir, lib_name, version=None, @@ -117,6 +120,7 @@ class GenDependenciesBase(gen_base.Gener 'swig', 'perl', 'python', + 'py3c', 'ruby', 'java_sdk', 'openssl', @@ -124,6 +128,8 @@ class GenDependenciesBase(gen_base.Gener # So optional, we don't even have any code to detect them on Windows 'magic', + 'macos-plist', + 'macos-keychain', ] # When build.conf contains a 'when = SOMETHING' where SOMETHING is not in @@ -146,6 +152,7 @@ class GenDependenciesBase(gen_base.Gener self.jdk_path = None self.junit_path = None self.swig_path = None + self.py3c_path = None self.vs_version = '2002' self.sln_version = '7.00' self.vcproj_version = '7.00' @@ -165,6 +172,7 @@ class GenDependenciesBase(gen_base.Gener self.instrument_purify_quantify = None self.sasl_path = None self.cpp_defines = [] + self.user_macros = [] # NLS options self.enable_nls = None @@ -196,6 +204,8 @@ class GenDependenciesBase(gen_base.Gener self.zlib_path = val elif opt == '--with-swig': self.swig_path = val + elif opt == '--with-py3c': + self.py3c_path = val elif opt == '--with-sqlite': self.sqlite_path = val elif opt == '--with-sasl': @@ -265,6 +275,11 @@ class GenDependenciesBase(gen_base.Gener self.sln_version = '12.00' self.vcproj_version = '14.1' self.vcproj_extension = '.vcxproj' + elif val == '2019' or val == '16': + self.vs_version = '2019' + self.sln_version = '12.00' + self.vcproj_version = '14.2' + self.vcproj_extension = '.vcxproj' elif re.match('^20\d+$', val): print('WARNING: Unknown VS.NET version "%s",' ' assuming VS2012. Your VS can probably upgrade') @@ -322,13 +337,15 @@ class GenDependenciesBase(gen_base.Gener # Swig (optional) dependencies if self._find_swig(show_warnings): self._find_perl(show_warnings) - self._find_python(show_warnings) + # py3c is required to build python bindings, show check it first + if self._find_py3c(show_warnings): + self._find_python(show_warnings) self._find_ruby(show_warnings) def _find_apr(self): "Find the APR library and version" - minimal_apr_version = (1, 3, 0) + minimal_apr_version = (1, 5, 0) if not self.apr_path: sys.stderr.write("ERROR: Use '--with-apr' option to configure APR " + \ @@ -763,7 +780,7 @@ class GenDependenciesBase(gen_base.Gener if self.bdb_path: bdb_path = self.bdb_path - + inc_path = os.path.join(bdb_path, 'include') db_h_path = os.path.join(inc_path, 'db.h') @@ -1020,9 +1037,64 @@ class GenDependenciesBase(gen_base.Gener except ImportError: return + if sys.version_info[0] >= 3: + if self.swig_version < (3, 0, 10): + if show_warnings: + print("WARNING: Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer") + return + if self.swig_version < (4, 0, 0): + opts = "-python -py3 -nofastunpack -modern" + else: + opts = "-python -py3 -nofastunpack" + else: + if not ((1, 3, 24) <= self.swig_version < (4, 0, 0)): + if show_warnings: + print("WARNING: Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0") + return + opts = "-python -classic" + + self.user_macros.append(UserMacro("SWIG_PY_OPTS", opts)) self._libraries['python'] = SVNCommonLibrary('python', inc_dir, lib_dir, None, sys.version.split(' ')[0]) + def _find_py3c(self, show_warnings): + "Find the py3c library which is used in SWIG python bindings" + show_warnings = True + # Assume a default path, unless otherwise specified + py3c_path = "py3c" + + if self.py3c_path: + py3c_path = self.py3c_path + + py3c_path = os.path.abspath(py3c_path) + inc_path = os.path.join(py3c_path, 'include') + py3c_hdr_path = os.path.join(inc_path, 'py3c.h') + + pc_path = os.path.join(py3c_path, 'py3c.pc.in') + + if not os.path.isfile(py3c_hdr_path): + if show_warnings: + print('WARNING: "%s" not found' % py3c_hdr_path) + print('Use "--with-py3c" to configure py3c location.') + return False + + with open(pc_path) as fp: + txt = fp.read() + + ver_match = re.search(r'Version:\s+([0-9.]+)', txt) + + if not ver_match: + if show_warnings: + print("WARNING: Failed to find version in '%s'" % pc_path) + return False + + py3c_version = ver_match.group(1) + + self._libraries['py3c'] = SVNCommonLibrary('py3c', inc_path, None, + None, py3c_version) + + return True + def _find_jdk(self, show_warnings): "Find details about an installed jdk" @@ -1067,11 +1139,15 @@ class GenDependenciesBase(gen_base.Gener return try: - outfp = subprocess.Popen([os.path.join(jdk_path, 'bin', 'javah.exe'), - '-version'], stdout=subprocess.PIPE).stdout - line = outfp.read() + # Apparently a 1.8 javac writes its version output to stderr, while + # a 1.10 javac writes it to stdout. To catch them all, we redirect + # stderr to stdout. + outfp = subprocess.Popen([os.path.join(jdk_path, 'bin', 'javac.exe'), + '-version'], stdout=subprocess.PIPE, + stderr=subprocess.STDOUT).stdout + line = outfp.read().decode('utf8') if line: - vermatch = re.search(r'"(([0-9]+(\.[0-9]+)+)(_[._0-9]+)?)"', line, re.M) + vermatch = re.search(r'(([0-9]+(\.[0-9]+)+)(_[._0-9]+)?)', line, re.M) else: vermatch = None @@ -1127,7 +1203,7 @@ class GenDependenciesBase(gen_base.Gener try: fp = subprocess.Popen([self.swig_exe, '-version'], stdout=subprocess.PIPE).stdout - txt = fp.read() + txt = fp.read().decode('utf8') if txt: vermatch = re.search(r'^SWIG\ Version\ (\d+)\.(\d+)\.(\d+)', txt, re.M) else: @@ -1155,7 +1231,7 @@ class GenDependenciesBase(gen_base.Gener try: fp = subprocess.Popen([self.swig_exe, '-swiglib'], stdout=subprocess.PIPE).stdout - lib_dir = fp.readline().strip() + lib_dir = fp.readline().decode('utf8').strip() fp.close() except OSError: lib_dir = None @@ -1383,7 +1459,7 @@ class GenDependenciesBase(gen_base.Gener def _find_sqlite(self, show_warnings): "Find the Sqlite library and version" - minimal_sqlite_version = (3, 7, 12) + minimal_sqlite_version = (3, 8, 2) # For SQLite we support 3 scenarios: # - Installed in standard directory layout
Modified: subversion/branches/addremove/build/generator/swig/__init__.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/swig/__init__.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/swig/__init__.py (original) +++ subversion/branches/addremove/build/generator/swig/__init__.py Sat May 23 14:16:56 2020 @@ -25,7 +25,7 @@ import os import re import shutil -import generator.util.executable as _exec +import subprocess from generator.gen_base import _collect_paths try: # Python >=3.0 @@ -59,14 +59,19 @@ class Generator: # Calculate SWIG paths self.swig_path = swig_path - self.swig_libdir = _exec.output([self.swig_path, "-swiglib"], strip=1) + if os.access(self.swig_path, os.X_OK): + # ### TODO: What's the reason for this os.access() check? It was added + # ### in r873265 (== r33191). + self.swig_libdir = subprocess.check_output([self.swig_path, "-swiglib"]).decode('utf8').strip() + else: + self.swig_libdir = None _swigVersion = None def version(self): """Get the version number of SWIG""" if not self._swigVersion: - swig_version = _exec.output([self.swig_path, "-version"]) + swig_version = subprocess.check_output([self.swig_path, "-version"]).decode('utf8') m = re.search("Version (\d+).(\d+).(\d+)", swig_version) if m: self._swigVersion = tuple(map(int, m.groups())) Modified: subversion/branches/addremove/build/generator/swig/checkout_swig_header.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/swig/checkout_swig_header.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/swig/checkout_swig_header.py (original) +++ subversion/branches/addremove/build/generator/swig/checkout_swig_header.py Sat May 23 14:16:56 2020 @@ -23,13 +23,12 @@ # Checkout files from the SWIG library into Subversion's proxy directory # -import sys, os, re, fileinput, shutil +import sys, os, re, fileinput, shutil, subprocess if __name__ == "__main__": parent_dir = os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0]))) sys.path[0:0] = [ parent_dir, os.path.dirname(parent_dir) ] import generator.swig from gen_base import build_path_splitfile, build_path_join -from generator.util.executable import run class Generator(generator.swig.Generator): @@ -63,7 +62,7 @@ class Generator(generator.swig.Generator elif self.version() == (1, 3, 24): shutil.copy(build_path_join(self.swig_libdir, path), out) else: - run("%s -o %s -co %s" % (self.swig_path, out, path)) + subprocess.check_call([self.swig_path, "-o", out, "-co", path]) def _skip_checkout(self, path): """Should we skip this checkout?""" Modified: subversion/branches/addremove/build/generator/swig/external_runtime.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/swig/external_runtime.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/swig/external_runtime.py (original) +++ subversion/branches/addremove/build/generator/swig/external_runtime.py Sat May 23 14:16:56 2020 @@ -29,13 +29,12 @@ import os import re import fileinput import filecmp +import subprocess if __name__ == "__main__": parent_dir = os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0]))) sys.path[0:0] = [ parent_dir, os.path.dirname(parent_dir) ] import generator.swig -import generator.util.executable -_exec = generator.util.executable class Generator(generator.swig.Generator): """Generate external runtime files for SWIG""" @@ -82,7 +81,7 @@ class Generator(generator.swig.Generator out_file.write(open("%s/runtime.swg" % self.proxy_dir).read()) out_file.close() else: - _exec.run("%s -%s -external-runtime %s" % (self.swig_path, lang, out)) + subprocess.check_call([self.swig_path, "-"+lang, "-external-runtime", out]) # SWIG 1.3.24-27 should include rubyhead.swg in their # external runtime, but they don't. Modified: subversion/branches/addremove/build/generator/swig/header_wrappers.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/swig/header_wrappers.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/swig/header_wrappers.py (original) +++ subversion/branches/addremove/build/generator/swig/header_wrappers.py Sat May 23 14:16:56 2020 @@ -265,7 +265,13 @@ class Generator(generator.swig.Generator self.proxy_filename(base_fname)) # Open a temporary output file - self.ofile = tempfile.TemporaryFile(dir=self.proxy_dir) + if sys.version_info[0] >= 3: + self.ofile = tempfile.TemporaryFile(dir=self.proxy_dir, + mode="w+", + encoding="utf8") + else: + self.ofile = tempfile.TemporaryFile(dir=self.proxy_dir) + self.ofile.write('/* Proxy classes for %s\n' % base_fname) self.ofile.write(' * DO NOT EDIT -- AUTOMATICALLY GENERATED\n') self.ofile.write(' * BY build/generator/swig/header_wrappers.py */\n') Modified: subversion/branches/addremove/build/generator/templates/build-outputs.mk.ezt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/templates/build-outputs.mk.ezt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/templates/build-outputs.mk.ezt (original) +++ subversion/branches/addremove/build/generator/templates/build-outputs.mk.ezt Sat May 23 14:16:56 2020 @@ -70,8 +70,18 @@ RELEASE_MODE = 1 # Section 3: SWIG autogen rules ######################################## [for swig_langs] -autogen-swig-[swig_langs.short]:[for swig_langs.deps] [swig_langs.deps][end] +.swig_[swig_langs.short]_checked: + @if [ -n "$(SWIG_[swig_langs.short_upper]_ERRMSG)" ]; then \ + echo "SWIG [swig_langs.name] disabled at configure time: $(SWIG_[swig_langs.short_upper]_ERRMSG)" >&2; \ + exit 1; \ + fi + @touch $@ + +autogen-swig-[swig_langs.short]: .swig_[swig_langs.short]_checked [for swig_langs.deps] [swig_langs.deps][end] autogen-swig: autogen-swig-[swig_langs.short] + +# Ensure the swig build targets depend on the configuration check +swig-[swig_langs.short]: .swig_[swig_langs.short]_checked [end] @@ -102,13 +112,9 @@ install-[target.install]: [target.instal [target.varname]_OBJECTS = [for target.objects][if-index target.objects first][else] [end][target.objects][end] [target.varname]_DEPS = $([target.varname]_HEADERS) $([target.varname]_OBJECTS)[for target.add_deps] [target.add_deps][end][for target.deps][if-index target.deps first][else] [end][target.deps][end] [target.name]: $([target.varname]_DEPS) -[if-any target.headers][target.varname]_CLASS_FILENAMES =[for target.header_class_filenames] [target.header_class_filenames][end] -[target.varname]_CLASSES =[for target.header_classes] [target.header_classes][end] -$([target.varname]_HEADERS): $([target.varname]_CLASS_FILENAMES) - [target.link_cmd] -d [target.output_dir] -classpath [target.classes]:$([target.varname]_CLASSPATH) $([target.varname]_CLASSES) -[end][if-any target.sources][target.varname]_SRC =[for target.sources] [target.sources][end] -$([target.varname]_OBJECTS): $([target.varname]_SRC) - [target.link_cmd] -d [target.output_dir] -classpath [target.classes]:$([target.varname]_CLASSPATH) $([target.varname]_SRC) +[if-any target.sources][target.varname]_SRC =[for target.sources] [target.sources][end] +$([target.varname]_HEADERS) $([target.varname]_OBJECTS): $([target.varname]_SRC) + [target.link_cmd][if-any target.headers] -h [target.headers_dir][end] -d [target.output_dir] -classpath [target.classes]:$([target.varname]_CLASSPATH) $([target.varname]_SRC) [if-any target.jar] $(JAR) cf [target.jar_path] -C [target.classes][for target.packages] [target.packages][end][end][end] [else][is target.type "i18n"][target.varname]_DEPS =[for target.add_deps] [target.add_deps][end][for target.objects] [target.objects][end][for target.deps] [target.deps][end] Modified: subversion/branches/addremove/build/generator/templates/pkg-config.in.ezt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/templates/pkg-config.in.ezt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/templates/pkg-config.in.ezt (original) +++ subversion/branches/addremove/build/generator/templates/pkg-config.in.ezt Sat May 23 14:16:56 2020 @@ -6,7 +6,7 @@ includedir=@includedir@ Name: [lib_name] Description: [lib_desc] Version: @PACKAGE_VERSION@ -Requires: [for lib_required] [lib_required][end] -Requires.private: [for lib_required_private] [lib_required_private][end] +Requires: [for lib_required][if-index lib_required first][else], [end][lib_required][end] +Requires.private: [for lib_required_private][if-index lib_required_private first][else], [end][lib_required_private][end] Libs: -L${libdir} [for lib_deps] [lib_deps][end] -Cflags: -I${includedir} +Cflags: -I${includedir}/subversion-[version] Modified: subversion/branches/addremove/build/generator/templates/vcnet_vcproj.ezt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/templates/vcnet_vcproj.ezt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/templates/vcnet_vcproj.ezt (original) +++ subversion/branches/addremove/build/generator/templates/vcnet_vcproj.ezt Sat May 23 14:16:56 2020 @@ -33,6 +33,7 @@ OutputDirectory="..\..\..\[configs.name]\[target.output_dir]" BuildLogFile="$(IntDir)\BuildLog_$(ProjectName).htm" IntermediateDirectory="..\..\..\[configs.name]\[target.intermediate_dir]\[target.proj_name]" + InheritedPropertySheets=".\[target.proj_name].vsprops" ConfigurationType="[target_type]"[is configs.name "Release"] WholeProgramOptimization="FALSE"[end]> <Tool @@ -59,7 +60,7 @@ DisableSpecificWarnings="4100;4127;4206;4512;4701;4706;4800" Detect64BitPortabilityProblems="FALSE" AdditionalOptions=" - /we4002 /we4003 /we4013 /we4020 /we4022 /we4024 /we4028 /we4029 /we4030 /we4031 /we4033 /we4047 /we4089 /we4113 /we4115 /we4204 /we4715" + /we4002 /we4003 /we4013 /we4020 /we4022 /we4024 /we4028 /we4029 /we4030 /we4031 /we4033 /we4047 /we4089 /we4113 /we4204 /we4715" DebugInformationFormat="3" ProgramDataBaseFileName="$(IntDir)\[target.output_pdb]" [if-any configs.forced_include_files]ForcedIncludeFiles="[for configs.forced_include_files][configs.forced_include_files][if-index configs.forced_include_files last][else];[end][end]" Modified: subversion/branches/addremove/build/generator/templates/vcnet_vcxproj.ezt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/templates/vcnet_vcxproj.ezt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/templates/vcnet_vcxproj.ezt (original) +++ subversion/branches/addremove/build/generator/templates/vcnet_vcxproj.ezt Sat May 23 14:16:56 2020 @@ -43,7 +43,9 @@ [for platforms][for configs] <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> -[end][end] <PropertyGroup Label="UserMacros" /> +[end][end] <PropertyGroup Label="UserMacros"> +[for user_macros] <[user_macros.name]>[user_macros.value]</[user_macros.name]> +[end] </PropertyGroup> [for platforms][for configs] <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'"> <OutDir>$(SolutionDir)[configs.name]\[target.output_dir]\</OutDir> <IntDir>$(SolutionDir)[configs.name]\obj\[target.intermediate_dir]\[target.proj_name]\</IntDir> @@ -62,9 +64,8 @@ <PreprocessorDefinitions>[if-any instrument_apr_pools]APR_POOL_DEBUG=[instrument_apr_pools];[end][is platforms "x64"]WIN64;[end][for configs.defines][configs.defines];[end]%(PreprocessorDefinitions)</PreprocessorDefinitions> <WarningLevel>Level4</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName> <DisableSpecificWarnings>4100;4127;4206;4512;4701;4706;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings> - <TreatSpecificWarningsAsErrors>4002;4003;4013;4020;4022;4024;4028;4029;4030;4031;4033;4047;4089;4113;4115;4133;4204;4700;4715;4789;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors> + <TreatSpecificWarningsAsErrors>4002;4003;4013;4020;4022;4024;4028;4029;4030;4031;4033;4047;4089;4113;4133;4204;4700;4715;4789;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors> [if-any configs.forced_include_files] <ForcedIncludeFiles>[for configs.forced_include_files][configs.forced_include_files];[end]%(ForcedIncludeFiles)</ForcedIncludeFiles> [end] </ClCompile> <ResourceCompile> Modified: subversion/branches/addremove/build/get-py-info.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/get-py-info.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/get-py-info.py (original) +++ subversion/branches/addremove/build/get-py-info.py Sat May 23 14:16:56 2020 @@ -81,20 +81,8 @@ def link_options(): # Initialize config variables assert os.name == "posix" options = sysconfig.get_config_var('LDSHARED').split() - fwdir = sysconfig.get_config_var('PYTHONFRAMEWORKDIR') - if fwdir and fwdir != "no-framework": - - # Setup the framework prefix - fwprefix = sysconfig.get_config_var('PYTHONFRAMEWORKPREFIX') - if fwprefix != "/System/Library/Frameworks": - add_option_if_missing(options, "-F%s" % fwprefix) - - # Load in the framework - fw = sysconfig.get_config_var('PYTHONFRAMEWORK') - add_option(options, "-framework", fw) - - elif sys.platform == 'darwin': + if sys.platform == 'darwin': # Load bundles from python python_exe = os.path.join(sysconfig.get_config_var("BINDIR"), Modified: subversion/branches/addremove/build/run_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/run_tests.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/run_tests.py (original) +++ subversion/branches/addremove/build/run_tests.py Sat May 23 14:16:56 2020 @@ -24,7 +24,7 @@ # '''usage: python run_tests.py - [--verbose] [--log-to-stdout] [--cleanup] + [--verbose] [--log-to-stdout] [--cleanup] [--bin=<path>] [--parallel | --parallel=<n>] [--global-scheduler] [--url=<base-url>] [--http-library=<http-library>] [--enable-sasl] [--fs-type=<fs-type>] [--fsfs-packing] [--fsfs-sharding=<n>] @@ -34,6 +34,7 @@ [--config-file=<file>] [--ssl-cert=<file>] [--exclusive-wc-locks] [--memcached-server=<url:port>] [--fsfs-compression=<type>] [--fsfs-dir-deltification=<true|false>] + [--allow-remote-http-connection] <abs_srcdir> <abs_builddir> <prog ...> @@ -49,7 +50,7 @@ separated list of test numbers; the defa import os, sys, shutil, codecs import re import logging -import optparse, subprocess, imp, threading, traceback +import optparse, subprocess, threading, traceback from datetime import datetime try: @@ -63,6 +64,13 @@ if sys.version_info < (3, 0): # Python >= 3.0 already has this build in import exceptions +if sys.version_info < (3, 5): + import imp +else: + # The imp module is deprecated since Python 3.4; the replacement we use, + # module_from_spec(), is available since Python 3.5. + import importlib.util + # Ensure the compiled C tests use a known locale (Python tests set the locale # explicitly). os.environ['LC_ALL'] = 'C' @@ -280,6 +288,8 @@ class TestHarness: cmdline.append('--fsfs-compression=%s' % self.opts.fsfs_compression) if self.opts.fsfs_dir_deltification is not None: cmdline.append('--fsfs-dir-deltification=%s' % self.opts.fsfs_dir_deltification) + if self.opts.allow_remote_http_connection is not None: + cmdline.append('--allow-remote-http-connection') self.py_test_cmdline = cmdline @@ -327,7 +337,7 @@ class TestHarness: def _command_line(self, harness): if self.is_python: cmdline = list(harness.py_test_cmdline) - cmdline.insert(0, 'python') + cmdline.insert(0, sys.executable) cmdline.insert(1, self.progabs) # Run the test apps in "child process" mode, # i.e. w/o cleaning up global directories etc. @@ -375,12 +385,12 @@ class TestHarness: def _count_py_tests(self, progabs, progdir, progbase): 'Run a c test, escaping parameters as required.' - cmdline = [ 'python', progabs, '--list' ] + cmdline = [ sys.executable, progabs, '--list' ] prog = subprocess.Popen(cmdline, stdout=subprocess.PIPE, cwd=progdir) lines = prog.stdout.readlines() for i in range(0, len(lines) - 2): - self.result.append(TestHarness.Job(i + 1, True, progabs, + self.result.append(TestHarness.Job(i + 1, True, progabs, progdir, progbase)) prog.wait() @@ -448,6 +458,7 @@ class TestHarness: job_queue = queue.Queue() total_count = 0 scrambled = list(jobs) + # TODO: What's this line doing, and what's the magic number? scrambled.sort(key=lambda x: ("1" if x.test_count() < 30 else "0") + str(x.number)) for job in scrambled: total_count += job.test_count() @@ -709,9 +720,11 @@ class TestHarness: # Summary. if failed or xpassed or failed_list: - print("SUMMARY: Some tests failed.\n") + summary = "Some tests failed" else: - print("SUMMARY: All tests successful.\n") + summary = "All tests successful" + print("Python version: %d.%d.%d." % sys.version_info[:3]) + print("SUMMARY: %s\n" % summary) self._close_log() return failed @@ -815,10 +828,15 @@ class TestHarness: if sys.version_info < (3, 0): prog_mod = imp.load_module(progbase[:-3], open(progabs, 'r'), progabs, ('.py', 'U', imp.PY_SOURCE)) - else: + elif sys.version_info < (3, 5): prog_mod = imp.load_module(progbase[:-3], open(progabs, 'r', encoding="utf-8"), progabs, ('.py', 'U', imp.PY_SOURCE)) + else: + spec = importlib.util.spec_from_file_location(progbase[:-3], progabs) + prog_mod = importlib.util.module_from_spec(spec) + sys.modules[progbase[:-3]] = prog_mod + spec.loader.exec_module(prog_mod) except: print("\nError loading test (details in following traceback): " + progbase) traceback.print_exc() @@ -1032,6 +1050,8 @@ def create_parser(): help='Set compression type (for fsfs)') parser.add_option('--fsfs-dir-deltification', action='store', type='str', help='Set directory deltification option (for fsfs)') + parser.add_option('--allow-remote-http-connection', action='store_true', + help='Run tests that connect to remote HTTP(S) servers') parser.set_defaults(set_log_level=None) return parser Modified: subversion/branches/addremove/build/transform_sql.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/transform_sql.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/transform_sql.py (original) +++ subversion/branches/addremove/build/transform_sql.py Sat May 23 14:16:56 2020 @@ -274,7 +274,7 @@ def main(input_filepath, output): '/* This file is automatically generated from %s and %s.\n' ' * Do not edit this file -- edit the source and rerun gen-make.py */\n' '\n' - % (filename, token_map_filename)) + % (filename, os.path.basename(token_map_filename))) proc = Processor(os.path.dirname(input_filepath), output, var_name, token_map) proc.process_file(input) Modified: subversion/branches/addremove/configure.ac URL: http://svn.apache.org/viewvc/subversion/branches/addremove/configure.ac?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/configure.ac (original) +++ subversion/branches/addremove/configure.ac Sat May 23 14:16:56 2020 @@ -23,7 +23,7 @@ AC_PREREQ(2.59) dnl Get the version of Subversion, using m4's esyscmd() command to do this dnl at m4-time, since AC_INIT() requires it then. AC_INIT([subversion], - [esyscmd(python build/getversion.py SVN subversion/include/svn_version.h)], + [esyscmd($PYTHON build/getversion.py SVN subversion/include/svn_version.h)], [http://subversion.apache.org/]) AC_CONFIG_SRCDIR(subversion/include/svn_types.h) @@ -91,7 +91,7 @@ AC_SUBST([MKDIR]) dnl verify apr version and set apr flags dnl These regular expressions should not contain "\(" and "\)". -APR_VER_REGEXES=["1\.[3-9]\. 2\."] +APR_VER_REGEXES=["1\.[5-9]\. 2\."] SVN_LIB_APR($APR_VER_REGEXES) @@ -115,7 +115,7 @@ AC_SUBST(SVN_APR_MAJOR_VERSION) SVN_LT_SOVERSION="-version-info $svn_lib_ver" AC_SUBST(SVN_LT_SOVERSION) AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver, - [Subversion library major verson]) + [Subversion library major version]) dnl Search for pkg-config AC_PATH_PROG(PKG_CONFIG, pkg-config) @@ -152,9 +152,11 @@ SVN_FIND_APACHE(20051115, $apache_whitel dnl Search for SQLite. If you change SQLITE_URL from a .zip to dnl something else also update build/ac-macros/sqlite.m4 to reflect dnl the correct command to unpack the downloaded file. -SQLITE_MINIMUM_VER="3.7.12" -SQLITE_RECOMMENDED_VER="3.7.15.1" -SQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip" +SQLITE_MINIMUM_VER="3.8.2" +SQLITE_RECOMMENDED_VER="3.8.11.1" +dnl Used to construct the SQLite download URL. +SQLITE_RECOMMENDED_VER_REL_YEAR="2015" +SQLITE_URL="https://www.sqlite.org/$SQLITE_RECOMMENDED_VER_REL_YEAR/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip" SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER}, ${SQLITE_URL}) @@ -591,6 +593,7 @@ if test "$with_old_gnome_keyring" != "no [Is GNOME Keyring support enabled?]) CPPFLAGS="$old_CPPFLAGS" SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`" + SVN_GNOME_KEYRING_PCLIBS="glib-2.0, gnome-keyring-1" else AC_MSG_RESULT([no]) if test "$with_old_gnome_keyring" = "yes"; then @@ -637,29 +640,6 @@ AC_SUBST(SVN_GNOME_KEYRING_LIBS) dnl LibSecret ------------------- SVN_LIB_SECRET -dnl Googlemock ----------------- -AC_ARG_ENABLE([googlemock], - AS_HELP_STRING([--disable-googlemock], - [Do not use the Googlemock testing framework]), - [], - [enable_googlemock=yes]) - -AC_SUBST([GOOGLEMOCK_SRCDIR], [$abs_srcdir/googlemock]) -AC_MSG_CHECKING([whether use Googlemock]) -if test "$enable_googlemock" != "no"; then - if test -d "$GOOGLEMOCK_SRCDIR"; then - AC_MSG_RESULT([yes]) - SVN_USE_GOOGLEMOCK=true - else - AC_MSG_RESULT([no]) - SVN_USE_GOOGLEMOCK=false - fi -else - AC_MSG_RESULT([no]) - SVN_USE_GOOGLEMOCK=false -fi -AC_SUBST([SVN_USE_GOOGLEMOCK]) - dnl Ev2 experimental features ---------------------- dnl Note: The Ev2 implementations will be built unconditionally, but by dnl providing this flag, users can choose to use the currently-shimmed Ev2 @@ -779,7 +759,7 @@ AH_BOTTOM([ #endif /* Macro used to specify that a variable is intentionally left unused. - Supresses compiler warnings about the variable being unused. */ + Suppresses compiler warnings about the variable being unused. */ #define SVN_UNUSED(v) ( (void)(v) ) ]) @@ -864,18 +844,21 @@ fi dnl plaintext passwords ------------------- AC_ARG_ENABLE(plaintext-password-storage, -AS_HELP_STRING([--disable-plaintext-password-storage], - [Disable on-disk caching of plaintext passwords and passphrases. - (Leaving this functionality enabled will not force Subversion +AS_HELP_STRING([--enable-plaintext-password-storage], + [Enable on-disk caching of plaintext passwords and passphrases. + (Enabling this functionality will not force Subversion to store passwords in plaintext, but does permit users to explicitly allow that behavior via runtime configuration.)]), -[ - if test "$enableval" = "no"; then - AC_MSG_NOTICE([Disabling plaintext password/passphrase storage]) - AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1, - [Defined if plaintext password/passphrase storage is disabled]) - fi -]) +[plaintext_passwordd_storage="$enableval"], +[plaintext_passwordd_storage="no"]) + +if test "$plaintext_passwordd_storage" = "yes"; then + AC_MSG_WARN([Enabling plaintext password/passphrase storage]) +else + AC_MSG_NOTICE([Disabling plaintext password/passphrase storage]) + AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1, + [Defined if plaintext password/passphrase storage is disabled]) +fi dnl Build and install rules ------------------- @@ -945,8 +928,9 @@ AC_FUNC_VPRINTF dnl check for functions needed in special file handling AC_CHECK_FUNCS(symlink readlink) -dnl check for uname +dnl check for uname and ELF headers AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], []) +AC_CHECK_HEADERS(elf.h) dnl check for termios AC_CHECK_HEADER(termios.h,[ @@ -1150,7 +1134,6 @@ if test "$enable_optimization" = "yes"; SVN_CFLAGS_ADD_IFELSE([-O1],[],[ SVN_CFLAGS_ADD_IFELSE([-O])])])]) SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered]) - SVN_CFLAGS_ADD_IFELSE([-flto]) fi fi if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then @@ -1166,7 +1149,6 @@ if test "$enable_optimization" = "yes"; SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[ SVN_CXXFLAGS_ADD_IFELSE([-O])])])]) SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered]) - SVN_CXXFLAGS_ADD_IFELSE([-flto]) fi fi elif test "$enable_optimization" = "no"; then @@ -1180,9 +1162,11 @@ fi dnl Dump the current compiler options AC_MSG_NOTICE([C compiler flags: $CFLAGS]) +AC_MSG_NOTICE([ language-level: $CMODEFLAGS]) AC_MSG_NOTICE([ user-defined: $CUSERFLAGS]) AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS]) AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS]) +AC_MSG_NOTICE([ language-level: $CXXMODEFLAGS]) AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS]) AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS]) @@ -1289,7 +1273,7 @@ AS_HELP_STRING([--enable-gprof], # Scripting and Bindings languages # Python: Used for testsuite, and bindings - +AC_ARG_VAR([PYTHON], [Python interpreter command]) PYTHON="`$abs_srcdir/build/find_python.sh`" if test -z "$PYTHON"; then @@ -1303,7 +1287,7 @@ fi AC_PATH_PROGS(PYTHON, "$PYTHON", none) # The minimum version for the JVM runtime for our Java bytecode. -JAVA_OLDEST_WORKING_VER='1.6' +JAVA_OLDEST_WORKING_VER='1.8' # SVN_CHECK_JDK sets $JAVA_CLASSPATH SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER) @@ -1321,7 +1305,7 @@ if test "$RUBY" != "none"; then if test -n "$RDOC"; then AC_PATH_PROG(RDOC, "$RDOC", none) else - AC_PATH_PROGS(RUBY, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 rdoc2.4 rdoc24, none) + AC_PATH_PROGS(RDOC, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 rdoc2.4 rdoc24, none) fi AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[ svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`" @@ -1358,6 +1342,10 @@ if test "$RUBY" != "none"; then fi SVN_CHECK_SWIG +AC_ARG_VAR(SWIG_FEATURES, [SWIG feature flags common to all bindings]) +AC_ARG_VAR(SWIG_RB_FEATURES, [SWIG feature flags specific to Ruby bindings]) +AC_ARG_VAR(SWIG_PL_FEATURES, [SWIG feature flags specific to Perl bindings]) +AC_ARG_VAR(SWIG_PY_FEATURES, [SWIG feature flags specific to Python bindings]) SVN_CHECK_CTYPESGEN @@ -1447,6 +1435,69 @@ AC_SUBST(SVN_FS_LIB_DEPS) AC_SUBST(SVN_FS_LIB_INSTALL_DEPS) AC_SUBST(SVN_FS_LIB_LINK) +# ==== SVN++ ================================================================= + +dnl Possibly compile SVN++ +do_svnxx_build=no +AC_ARG_ENABLE(svnxx, + AS_HELP_STRING([--enable-svnxx], + [Enable compilation of the C++ bindings (requires C++)]), + [ if test "$enableval" = "yes" ; then + AC_MSG_NOTICE([Enabling the C++ bindings]) + do_svnxx_build=yes + fi + ]) + +dnl Possibly compile SVN++ tests +do_svnxx_test_build=no +AC_ARG_ENABLE(svnxx-tests, + AS_HELP_STRING([--enable-svnxx-tests], + [Enable compilation of tests for the C++ bindings + (implies --enable-svnxx, requires Boost and Boost.Test)]), + [ if test "$enableval" = "yes" ; then + AC_MSG_NOTICE([Enabling tests for the C++ bindings]) + do_svnxx_test_build=yes + fi + ]) + +AX_BOOST_BASE([1.58], + [ + if test "$do_svnxx_test_build" = "yes"; then + AX_BOOST_UNIT_TEST_FRAMEWORK + fi + ], + [ + if test "$do_svnxx_test_build" = "yes"; then + AC_MSG_WARN([Tests for the C++ bindings require Boost and Boost.Test]) + do_svnxx_test_build=no + fi + ]) + +if test "$do_svnxx_test_build" = "yes"; then + if test "$want_boost" != "yes"; then + AC_MSG_WARN([Tests for the C++ bindings require Boost and Boost.Test]) + do_svnxx_test_build=no + SVN_BUILD_SVNXX_TESTS=false + else + if test "$do_svnxx_build" != "yes"; then + AC_MSG_WARN([Enabling the C++ bindings because their tests are enabled]) + do_svnxx_build=yes + fi + SVN_BUILD_SVNXX_TESTS=true + fi +else + SVN_BUILD_SVNXX_TESTS=false +fi + +if test "$do_svnxx_build" = "yes"; then + SVN_BUILD_SVNXX=true +else + SVN_BUILD_SVNXX=false +fi + +AC_SUBST(SVN_BUILD_SVNXX) +AC_SUBST(SVN_BUILD_SVNXX_TESTS) + # ==== JavaHL ================================================================ dnl Possibly compile JavaHL @@ -1534,12 +1585,6 @@ if test "$CC" = "clang"; then SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ]) fi -# Need to strip '-no-cpp-precomp' from CPPFLAGS for SWIG as well. -SWIG_CPPFLAGS="$CPPFLAGS" -SVN_STRIP_FLAG(SWIG_CPPFLAGS, [-no-cpp-precomp ]) -SVN_STRIP_FLAG(SWIG_CPPFLAGS, [-Wdate-time ]) -AC_SUBST([SWIG_CPPFLAGS]) - dnl Since this is used only on Unix-y systems, define the path separator as '/' AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/', [Defined to be the path separator used on your local filesystem]) @@ -1596,7 +1641,7 @@ fi AC_SUBST(SVN_CONFIG_SCRIPT_FILES) # Ensure that SWIG is checked after reconfiguration. -rm -f .swig_checked +rm -f .swig_checked .swig_pl_checked .swig_py_checked .swig_rb_checked dnl Provide ${host} for use in compiled code (for svn --version) AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}", Modified: subversion/branches/addremove/contrib/client-side/svn-clean URL: http://svn.apache.org/viewvc/subversion/branches/addremove/contrib/client-side/svn-clean?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/contrib/client-side/svn-clean (original) +++ subversion/branches/addremove/contrib/client-side/svn-clean Sat May 23 14:16:56 2020 @@ -180,7 +180,7 @@ faster than parsing the output of the B< =item B<-e>, B<--exclude> -A regular expression for filenames to be exluded. For example, the following +A regular expression for filenames to be excluded. For example, the following command will skip files ending in ".zip": =over 8 Modified: subversion/branches/addremove/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in URL: http://svn.apache.org/viewvc/subversion/branches/addremove/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in (original) +++ subversion/branches/addremove/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in Sat May 23 14:16:56 2020 @@ -196,7 +196,7 @@ elsif ( -f "$ENV{HOME}/.subversion/confi { if ( /^global-ignores\s*=\s*(.*?)\s*$/ ) { - $ignores_str = $1; + $ignores_str = $1; last; } } @@ -1205,10 +1205,11 @@ while (defined (my $load_dir = &get_next read_from_process($svn, 'propset', - $property_name, '--file', $tmpfile, - $add_file); + '--', + $property_name, + $add_file . "@"); } } } @@ -1343,6 +1344,8 @@ sub usage " -p filename table listing properties to apply to matching files\n", " -svn_username username to perform commits as\n", " -svn_password password to supply to svn commit\n", + " WARNING: passing the password in a command-line argument\n", + " may make it visible to other local OS users\n", " -t tag_dir create a tag copy in tag_dir, relative to svn_url\n", " -v increase program verbosity, multiple -v's allowed\n", " -wc path use the already checked-out working copy at path\n", @@ -1499,6 +1502,18 @@ sub file_info return '?'; } +# Copy arguments and replace what follows --password with '*'s. +sub sanitize_pwd +{ + my @str = @_; + my $hide_next = 0; + foreach(@str) { + $_ = '*' x length if ( $hide_next ); + $hide_next = ($_ eq '--password'); + } + @str; +} + # Start a child process safely without using /bin/sh. sub safe_read_from_pipe { @@ -1510,7 +1525,7 @@ sub safe_read_from_pipe my $openfork_available = "MSWin32" ne $OSNAME; if ($openfork_available) { - print "Running @_\n"; + print join(' ', &sanitize_pwd("Running", @_, "\n") ); my $pid = open(SAFE_READ, "-|"); unless (defined $pid) { @@ -1522,7 +1537,9 @@ sub safe_read_from_pipe open(STDERR, ">&STDOUT") or die "$0: cannot dup STDOUT: $!\n"; exec(@_) - or die "$0: cannot exec '@_': $!\n"; + or die "$0: cannot exec '" + . join(' ', &sanitize_pwd(@_) ) + . "': $!\n"; } } else @@ -1559,7 +1576,7 @@ sub safe_read_from_pipe } } - print "Running @commandline\n"; + print join(' ', &sanitize_pwd("Running", @commandline, "\n") ); if ( $comment ) { print $comment; } # Now do the pipe. @@ -1581,7 +1598,9 @@ sub safe_read_from_pipe my $cd = $result & 128 ? "with core dump" : ""; if ($signal or $cd) { - warn "$0: pipe from '@_' failed $cd: exit=$exit signal=$signal\n"; + warn "$0: pipe from '" + . join(' ', &sanitize_pwd(@_) ) + . "' failed $cd: exit=$exit signal=$signal\n"; } if (wantarray) { @@ -1604,8 +1623,9 @@ sub read_from_process my ($status, @output) = &safe_read_from_pipe(@_); if ($status) { - print STDERR "$0: @_ failed with this output:\n", join("\n", @output), - "\n"; + print STDERR + join(' ', &sanitize_pwd("$0:", @_, "failed with this output:\n") ), + join("\n", @output), "\n"; unless ($opt_no_user_input) { print STDERR @@ -1657,7 +1677,7 @@ sub recursive_ls_and_hash }; find({no_chdir => 1, preprocess => sub - { + { grep { my $ok=1; @@ -2053,5 +2073,6 @@ sub new sub DESTROY { print "Cleaning up $temp_dir\n"; + chdir( $temp_dir . "/.." ); File::Path::rmtree([$temp_dir], 0, 0); } Modified: subversion/branches/addremove/contrib/client-side/svn_update.pl URL: http://svn.apache.org/viewvc/subversion/branches/addremove/contrib/client-side/svn_update.pl?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/contrib/client-side/svn_update.pl (original) +++ subversion/branches/addremove/contrib/client-side/svn_update.pl Sat May 23 14:16:56 2020 @@ -31,7 +31,7 @@ # given file(s) that would require >n minutes, where n is the # server's magic timeout (5 min.??), the server will timeout. This # leaves the client/user in an unswell state. See issue #2048 for -# details http://subversion.tigris.org/issues/show_bug.cgi?id=2048. +# details https://issues.apache.org/jira/browse/SVN-2048. # # One solution is to wrap the 'svn update' command in a script that # will perform the update one file at a time. The problem with Modified: subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge-migrate-history.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge-migrate-history.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge-migrate-history.py (original) +++ subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge-migrate-history.py Sat May 23 14:16:56 2020 @@ -259,7 +259,7 @@ class Migrator: # Run the final version of the new svn:mergeinfo through the # parser to ensure it is in canonical form, e.g. no overlapping # or unordered rangelists, see - # http://subversion.tigris.org/issues/show_bug.cgi?id=3302. + # https://issues.apache.org/jira/browse/SVN-3302. mergeinfo = svn.core.svn_mergeinfo_parse(new_mergeinfo_prop_val) new_mergeinfo_prop_val = mergeinfo2str(mergeinfo) Modified: subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge.py (original) +++ subversion/branches/addremove/contrib/client-side/svnmerge/svnmerge.py Sat May 23 14:16:56 2020 @@ -1367,7 +1367,7 @@ def action_init(target_dir, target_props # the copy target is the merge target, then we want to mark as # integrated up to the specific rev of the merge target from # which the merge source was copied. (Longer discussion at: - # http://subversion.tigris.org/issues/show_bug.cgi?id=2810 ) + # https://issues.apache.org/jira/browse/SVN-2810 ) cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(target_dir) cf_pathid = None Modified: subversion/branches/addremove/contrib/hook-scripts/remove-zombie-locks.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/contrib/hook-scripts/remove-zombie-locks.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/contrib/hook-scripts/remove-zombie-locks.py (original) +++ subversion/branches/addremove/contrib/hook-scripts/remove-zombie-locks.py Sat May 23 14:16:56 2020 @@ -28,7 +28,7 @@ Usage: remove-zombie-locks.py REPOS-PATH locks on files that don't exist in the HEAD revision, removing any found. This script is a workaround for Subversion issue #2507 - http://subversion.tigris.org/issues/show_bug.cgi?id=2507 + https://issues.apache.org/jira/browse/SVN-2507 Examples: Modified: subversion/branches/addremove/doc/doxygen.conf URL: http://svn.apache.org/viewvc/subversion/branches/addremove/doc/doxygen.conf?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/doc/doxygen.conf (original) +++ subversion/branches/addremove/doc/doxygen.conf Sat May 23 14:16:56 2020 @@ -112,7 +112,7 @@ INLINE_INHERITED_MEMB = NO # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. -FULL_PATH_NAMES = NO +FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is @@ -121,7 +121,7 @@ FULL_PATH_NAMES = NO # If left blank the directory from which doxygen is run is used as the # path to strip. -STRIP_FROM_PATH = +STRIP_FROM_PATH = subversion/include subversion/bindings/cxx/include # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells @@ -130,7 +130,7 @@ STRIP_FROM_PATH = # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. -STRIP_FROM_INC_PATH = +STRIP_FROM_INC_PATH = subversion/include subversion/bindings/cxx/include # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems @@ -280,22 +280,6 @@ SUBGROUPING = YES TYPEDEF_HIDES_STRUCT = NO -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -478,12 +462,6 @@ MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. @@ -577,6 +555,10 @@ WARN_LOGFILE = # with spaces. INPUT = subversion/include \ + subversion/bindings/cxx/include \ + subversion/bindings/cxx/include/svnxx \ + subversion/bindings/cxx/include/svnxx/client \ + subversion/bindings/cxx/include/svnxx/detail \ subversion/include/private/svn_doxygen.h # This tag can be used to specify the character encoding of the source files @@ -594,7 +576,7 @@ INPUT_ENCODING = UTF-8 # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 -FILE_PATTERNS = *.h +FILE_PATTERNS = *.h *.hpp # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. @@ -805,12 +787,6 @@ HTML_FOOTER = HTML_STYLESHEET = -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports @@ -959,11 +935,6 @@ ENUM_VALUES_PER_LINE = 1 GENERATE_TREEVIEW = NO -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. @@ -1151,18 +1122,6 @@ GENERATE_XML = NO XML_OUTPUT = xml -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that @@ -1378,7 +1337,7 @@ HAVE_DOT = NO # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory # containing the font. -DOT_FONTNAME = FreeSans +DOT_FONTNAME = # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. Modified: subversion/branches/addremove/doc/user/svn-best-practices.html URL: http://svn.apache.org/viewvc/subversion/branches/addremove/doc/user/svn-best-practices.html?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/doc/user/svn-best-practices.html (original) +++ subversion/branches/addremove/doc/user/svn-best-practices.html Sat May 23 14:16:56 2020 @@ -240,7 +240,7 @@ while somebody else is in the process of <li>Users commit their day-to-day work on <tt>/trunk</tt>.</li> <li>Rule #1: <tt>/trunk</tt> must compile and pass regression tests at -all times. Committers who violate this rule are publically +all times. Committers who violate this rule are publicly humiliated.</li> <li>Rule #2: a single commit (changeset) must not be so large Modified: subversion/branches/addremove/gen-make.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/gen-make.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/gen-make.py (original) +++ subversion/branches/addremove/gen-make.py Sat May 23 14:16:56 2020 @@ -48,7 +48,6 @@ sys.path.insert(1, 'build') gen_modules = { 'make' : ('gen_make', 'Makefiles for POSIX systems'), - 'dsp' : ('gen_msvc_dsp', 'MSVC 6.x project files'), 'vcproj' : ('gen_vcnet_vcproj', 'VC.Net project files'), } @@ -71,7 +70,7 @@ def main(fname, gentype, verfname=None, if ('--debug', '') in other_options: for dep_type, target_dict in generator.graph.deps.items(): - sorted_targets = list(target_dict.keys()); sorted_targets.sort() + sorted_targets = sorted(target_dict.keys(), key=str) for target in sorted_targets: print(dep_type + ": " + _objinfo(target)) for source in target_dict[target]: @@ -176,6 +175,8 @@ def _usage_exit(err=None): print("") print(" --with-swig=DIR") print(" look for the swig program in DIR") + print(" --with-py3c=DIR") + print(" look for the py3c library in DIR") print("") print(" --with-sqlite=DIR") print(" look for sqlite in DIR") @@ -215,8 +216,6 @@ def _usage_exit(err=None): print("") print(" --with-apr_memcache=DIR") print(" the apr_memcache sources are in DIR") - print(" --disable-gmock") - print(" do not use Googlemock") sys.exit(1) @@ -252,6 +251,7 @@ if __name__ == '__main__': 'with-jdk=', 'with-junit=', 'with-swig=', + 'with-py3c=', 'with-sqlite=', 'with-sasl=', 'with-apr_memcache=', @@ -264,7 +264,6 @@ if __name__ == '__main__': 'disable-shared', 'installed-libs=', 'vsnet-version=', - 'disable-gmock', ]) if len(args) > 1: _usage_exit("Too many arguments") Modified: subversion/branches/addremove/get-deps.sh URL: http://svn.apache.org/viewvc/subversion/branches/addremove/get-deps.sh?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/get-deps.sh (original) +++ subversion/branches/addremove/get-deps.sh Sat May 23 14:16:56 2020 @@ -31,26 +31,24 @@ # features already used in the file. Reviewing the history of changes # may be useful as well. -APR_VERSION=${APR_VERSION:-"1.4.6"} +APR_VERSION=${APR_VERSION:-"1.5.0"} APU_VERSION=${APU_VERSION:-"1.5.1"} +PY3C_VERSION=${PY3C_VERSION:='1.1'} SERF_VERSION=${SERF_VERSION:-"1.3.8"} ZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"} -SQLITE_VERSION=${SQLITE_VERSION:-"3.7.15.1"} -GTEST_VERSION=${GMOCK_VERSION:-"1.7.0"} -GMOCK_VERSION=${GMOCK_VERSION:-"1.7.0"} +SQLITE_VERSION=${SQLITE_VERSION:-"3.8.11.1"} +# Used to construct the SQLite download URL. +SQLITE_VERSION_REL_YEAR=2015 HTTPD_VERSION=${HTTPD_VERSION:-"2.4.10"} APR_ICONV_VERSION=${APR_ICONV_VERSION:-"1.2.1"} APR=apr-${APR_VERSION} APR_UTIL=apr-util-${APU_VERSION} +PY3C=py3c-${PY3C_VERSION} SERF=serf-${SERF_VERSION} ZLIB=zlib-${ZLIB_VERSION} SQLITE_VERSION_LIST=`echo $SQLITE_VERSION | sed -e 's/\./ /g'` SQLITE=sqlite-amalgamation-`printf %d%02d%02d%02d $SQLITE_VERSION_LIST` -GTEST=release-${GTEST_VERSION} -GTEST_URL=https://github.com/google/googletest/archive -GMOCK=release-${GMOCK_VERSION} -GMOCK_URL=https://github.com/google/googlemock/archive HTTPD=httpd-${HTTPD_VERSION} APR_ICONV=apr-iconv-${APR_ICONV_VERSION} @@ -65,12 +63,12 @@ HTTP_FETCH= # Need this uncommented if any of the specific versions of the ASF tarballs to # be downloaded are no longer available on the general mirrors. -APACHE_MIRROR=http://archive.apache.org/dist +APACHE_MIRROR=https://archive.apache.org/dist # helpers usage() { echo "Usage: $0" - echo "Usage: $0 [ apr | serf | zlib | sqlite | googlemock ] ..." + echo "Usage: $0 [ apr | py3c | serf | zlib | sqlite ] ..." exit $1 } @@ -88,6 +86,19 @@ get_apr() { test -d $BASEDIR/apr-util || mv $APR_UTIL apr-util } +get_py3c() { + test -d $BASEDIR/py3c && return + py3cdist=v${PY3C_VERSION}.tar.gz + + cd $TEMPDIR + $HTTP_FETCH https://github.com/encukou/py3c/archive/${py3cdist} + cd $BASEDIR + + gzip -dc $TEMPDIR/${py3cdist} | tar -xf - + + mv $PY3C py3c +} + get_serf() { test -d $BASEDIR/serf && return @@ -104,7 +115,7 @@ get_zlib() { test -d $BASEDIR/zlib && return cd $TEMPDIR - $HTTP_FETCH http://sourceforge.net/projects/libpng/files/zlib/$ZLIB_VERSION/$ZLIB.tar.gz + $HTTP_FETCH https://sourceforge.net/projects/libpng/files/zlib/$ZLIB_VERSION/$ZLIB.tar.gz cd $BASEDIR gzip -dc $TEMPDIR/$ZLIB.tar.gz | tar -xf - @@ -116,7 +127,7 @@ get_sqlite() { test -d $BASEDIR/sqlite-amalgamation && return cd $TEMPDIR - $HTTP_FETCH http://www.sqlite.org/$SQLITE.zip + $HTTP_FETCH https://www.sqlite.org/$SQLITE_VERSION_REL_YEAR/$SQLITE.zip cd $BASEDIR unzip -q $TEMPDIR/$SQLITE.zip @@ -125,29 +136,11 @@ get_sqlite() { } -get_googlemock() { - test -d $BASEDIR/googlemock && return - - cd $TEMPDIR - $HTTP_FETCH ${GTEST_URL}/${GTEST}.zip - unzip -q ${GTEST}.zip - rm -f ${GTEST}.zip - - $HTTP_FETCH ${GMOCK_URL}/${GMOCK}.zip - unzip -q ${GMOCK}.zip - rm -f ${GMOCK}.zip - - cd $BASEDIR - mkdir googlemock - mv $TEMPDIR/googletest-release-${GTEST_VERSION} googlemock/googletest - mv $TEMPDIR/googlemock-release-${GMOCK_VERSION} googlemock/googlemock -} - # main() get_deps() { mkdir -p $TEMPDIR - for i in zlib serf sqlite-amalgamation apr apr-util gmock-fused; do + for i in zlib serf sqlite-amalgamation py3c apr apr-util; do if [ -d $i ]; then echo "Local directory '$i' already exists; the downloaded copy won't be used" >&2 fi @@ -163,6 +156,7 @@ get_deps() { done else get_apr + get_py3c get_serf get_zlib get_sqlite Modified: subversion/branches/addremove/notes/EuroOSCON-2005-vc-bof.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/EuroOSCON-2005-vc-bof.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/EuroOSCON-2005-vc-bof.txt (original) +++ subversion/branches/addremove/notes/EuroOSCON-2005-vc-bof.txt Sat May 23 14:16:56 2020 @@ -151,7 +151,7 @@ Comments from projects that switched fro * The w.c. space penalty is a real issue for large projects. Disk space is not as cheap as we thought, those .svn/text-base/* files - hurt. See http://subversion.tigris.org/issues/show_bug.cgi?id=525. + hurt. See https://issues.apache.org/jira/browse/SVN-525. [gerv: Random thought - if you can't easily do copy-on-write, could you perhaps share text-base files by hard-linking between multiple Modified: subversion/branches/addremove/notes/anchors_and_targets.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/anchors_and_targets.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/anchors_and_targets.txt (original) +++ subversion/branches/addremove/notes/anchors_and_targets.txt Sat May 23 14:16:56 2020 @@ -104,7 +104,7 @@ The Status Quo scheme, however, such as the need to examine the a directory target's parent, and perhaps a handful of unspecified "spidey-sense" warnings. PLEASE, if you have valid technical - complaints, (re-)voice them in reponse to this mail so they can be + complaints, (re-)voice them in response to this mail so they can be evaluated more closely, offering better solutions if you can. For example, the editor could be changed so that some flavor of Modified: subversion/branches/addremove/notes/client-configuration URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/client-configuration?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/client-configuration (original) +++ subversion/branches/addremove/notes/client-configuration Sat May 23 14:16:56 2020 @@ -59,8 +59,8 @@ dev@s.a.o: "Bikeshed: configuration over dev@s.a.o: "Default commandline args"; http://svn.haxx.se/dev/archive-2010-12/0449.shtml Issue 1974: "server-side config which 'broadcasts' to clients"; - http://subversion.tigris.org/issues/show_bug.cgi?id=1974 + https://issues.apache.org/jira/browse/SVN-1974 Issue 3765: "client-configurable default args"; - http://subversion.tigris.org/issues/show_bug.cgi?id=3765 + https://issues.apache.org/jira/browse/SVN-3765 Issue 3769: "Add APIs which allow library consumers to specify configuration options" - http://subversion.tigris.org/issues/show_bug.cgi?id=3769 + https://issues.apache.org/jira/browse/SVN-3769 Modified: subversion/branches/addremove/notes/commit-access-templates/full-committer.tmpl URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/commit-access-templates/full-committer.tmpl?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/commit-access-templates/full-committer.tmpl (original) +++ subversion/branches/addremove/notes/commit-access-templates/full-committer.tmpl Sat May 23 14:16:56 2020 @@ -5,7 +5,7 @@ of "{AT}" with real "@" signs. It's jus fool the spam address harvesters. ]]] -### see http://www.apache.org/dev/pmc.html#newpmc for procedure +### see https://www.apache.org/dev/pmc.html#newpmc for procedure From: "Some Committer" <a.commit...@wherever.example.com> To: New Full Committer <new.commit...@wherever.new.committers.live> Modified: subversion/branches/addremove/notes/commit-access-templates/partial-committer.tmpl URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/commit-access-templates/partial-committer.tmpl?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/commit-access-templates/partial-committer.tmpl (original) +++ subversion/branches/addremove/notes/commit-access-templates/partial-committer.tmpl Sat May 23 14:16:56 2020 @@ -5,6 +5,8 @@ instances of "{AT}" with real "@" signs. template to fool the spam address harvesters. ]]] +### see https://www.apache.org/dev/pmc.html#newcommitter for procedure + From: "Some Committer" <a.commit...@wherever.example.com> To: New Partial Committer <new.commit...@wherever.new.committers.live> Cc: private{AT}subversion.apache.org Modified: subversion/branches/addremove/notes/commit-access-templates/pmc-member.tmpl URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/commit-access-templates/pmc-member.tmpl?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/commit-access-templates/pmc-member.tmpl (original) +++ subversion/branches/addremove/notes/commit-access-templates/pmc-member.tmpl Sat May 23 14:16:56 2020 @@ -5,7 +5,7 @@ real "@" signs. It's just masked in thi address harvesters. ]]] -### see http://www.apache.org/dev/pmc.html#newpmc for procedure +### see https://www.apache.org/dev/pmc.html#newpmc for procedure From: "Some PMC Member" <a.commit...@wherever.example.com> To: New PMC Member <new.pm...@wherever.new.pmcers.live> Modified: subversion/branches/addremove/notes/diff-optimizations.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/diff-optimizations.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/diff-optimizations.txt (original) +++ subversion/branches/addremove/notes/diff-optimizations.txt Sat May 23 14:16:56 2020 @@ -80,7 +80,7 @@ See also issue #1966 (libsvn_diff needs References ---------- -[1] http://subversion.tigris.org/issues/show_bug.cgi?id=1966 (libsvn_diff +[1] https://issues.apache.org/jira/browse/SVN-1966 (libsvn_diff needs 'non-minimal-diff' mode) [2] Miller, W., and Myers, E.W. "A File Comparison Program.", Software - Practice & Experience 15 (1985), pp. 1025-1040. Modified: subversion/branches/addremove/notes/dump-load-format.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/dump-load-format.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/dump-load-format.txt (original) +++ subversion/branches/addremove/notes/dump-load-format.txt Sat May 23 14:16:56 2020 @@ -1,6 +1,6 @@ = How to interpret Subversion dumpfiles = -Version 1.1, 2013-02-02 +Version 1.2, 2019-11-18 == Introduction == @@ -72,6 +72,10 @@ UUID: <hex-string> where the <hex-string> is the UUID of the originating repository. An example UUID is "7bf7a5ef-cabf-0310-b7d4-93df341afa7e". +As generated by Subversion, these UUIDs are "Version 1", incorporating +the MAC of the originating machine. The presentation is in RFC4122 +form without the "urn:" or "uuid:" prefixes. + ==== Revision records ==== A Revision record has three headers and is usually followed by a @@ -91,7 +95,7 @@ Revision record. These two numbers will record; the Content-length header is added for the benefit of software that can parse RFC-822 messages. -A revision record is followed by one or more Node records (see below). +A revision record is followed by zero or more Node records (see below). ==== Node records ==== @@ -147,6 +151,7 @@ Text-content-length will be present only Zero is a legal value for this length, indicating an empty file. Prop-content-length will be present only when there is a properties section. +A properties section has non-zero length even if it has no entries. Content-length will be present if there is either a text or a properties section. This is not always the case. In particular, @@ -353,20 +358,15 @@ The revision properties do not persist t has exactly the revision properties specified in its revision record, or no revision properties if there is no property section. -The key thing to know about Node properties is that they are -persistent, once set, until modified by a future property -section on the same path. - -Normally, a dumpfile re-lists the entire property set for a directory -or file in every Node record that changes any part of it. (But see -the material on delta dumps for an exception.) +Node properties, like node text, are persistent: once set, they are +carried forward until modified by a future property section, both on the +same path and on the target of a copyfrom operation. -This implies that to delete a given property from a path, a dumpfile +In non-delta format, to delete a given property from a path, a dumpfile generator will issue a Node record with all other properties listed in it; to delete all properties from a path, the dumpfile generator will -simply issue a node with an empty properties section. Note that this -is different from an *absent* properties section, which will change -no properties and will be associated with a change to content! +issue a node with an empty properties section. (This is different from +an *absent* properties section, which will change no properties.) === Representation of symbolic links === @@ -380,15 +380,24 @@ be defined. None such yet exist as of r === Implementation pragmatics === +Dumpfile generation in general is not canonical, nor minimalist. In +particular, interpreters should be prepared to see many empty property +sections (nominally deleting all properties) when there are no +previous properties set to be deleted. + Because directory operations with copyfroms don't specify all the file paths they modify, an interpreter for this format must build a map of the paths in the file store it is manipulating, and update that map as it processes each Node record. On a repository with thousands of commits, the per-revision list of -maps can become quite large. For space economy, the file map for each -revision can be discarded after it is processed *unless it is a source -revision for a copyfrom*. +maps can become quite large. It is tempting to think that the file map +for each revision can be discarded after it is processed unless it is +a source revision for a copyfrom, but there are cases in which doing +this will leave you unable to trace ancestry chains through copies. + +Instead, is advisable to build your filemaps using a copy-on-write +store. == An example == Modified: subversion/branches/addremove/notes/http-and-webdav/webdav-protocol URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/http-and-webdav/webdav-protocol?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/http-and-webdav/webdav-protocol (original) +++ subversion/branches/addremove/notes/http-and-webdav/webdav-protocol Sat May 23 14:16:56 2020 @@ -425,7 +425,7 @@ Purpose: Retrieve a record of the change Target URL: Prior to Subversion 1.8, the target URL was the public resource URL of the aforementioned subtree. Per issue #4287 - (http://subversion.tigris.org/issues/show_bug.cgi?id=4287), + (https://issues.apache.org/jira/browse/SVN-4287), it was discovered that this was an incorrect approach, so in Subversion 1.8, mod_dav_svn allowed clients to submit this report (with a slightly different Request syntax) Modified: subversion/branches/addremove/notes/knobs URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/knobs?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/knobs (original) +++ subversion/branches/addremove/notes/knobs Sat May 23 14:16:56 2020 @@ -56,6 +56,7 @@ SVN_SQLITE_MIN_VERSION SVN_SERF_NO_LOGGING SVN_ALLOW_SHORT_INTS SVN_ALLOW_NON_8_BIT_CHARS +SVNXX_USE_BOOST 2.3 Debugging Support @@ -75,6 +76,7 @@ SVN_FS__TRAIL_DEBUG SVN_FS_FS__LOG_ACCESS SVN_FS_EMULATE_PATHS_CHANGED SVN_FS_EMULATE_REPORT_CHANGES +SVNXX_POOL_DEBUG 2.4 Test-only @@ -304,6 +306,15 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2 Default: not defined Suggested: not defined (to ensure correct behaviour) +4.13 SVNXX_USE_BOOST + Scope: SVN++ (subversion/bindings/cxx) + Purpose: Adds header-only conversions and overloads to make SVN++ + interoperate cleanly with selected Boost types. Defining this + symbol does *not* affect the SVN++ ABI. Users may define the + symbol when using SVN++ after libsvnxx has been built. + Range: definedness + Default: not defined + Suggested: defined for testing SVN++, otherwise not defined 5 Defines controlling debug support ================================== @@ -458,6 +469,14 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2 Default: TRUE (local default if macro has not been defined) Suggested: FALSE +5.17 SVNXX_POOL_DEBUG + + Scope: SVN++ (subversion/bindings/cxx) + Purpose: Logs debugging info about the lifetime of the SVN++ global pool. + Depends on SVN_DEBUG being defined. + Range: definedness + Default: not defined + Suggested: defined, not defined 6 Defines that affect unit tests ================================ Modified: subversion/branches/addremove/notes/merge-tracking/func-spec.html URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/merge-tracking/func-spec.html?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/merge-tracking/func-spec.html (original) +++ subversion/branches/addremove/notes/merge-tracking/func-spec.html Sat May 23 14:16:56 2020 @@ -166,7 +166,7 @@ mergeinfo for the merge is set on the de was present in the WC despite being outside its parent's 'depth' attribute) and could not then re-add a node of the same name in order to perform both halves of an incoming replacement. <a - href="http://subversion.tigris.org/issues/show_bug.cgi?id=4164" >Issue + href="https://issues.apache.org/jira/browse/SVN-4164" >Issue #4164 "inconsistencies in merge handling of adds vs. edits in shallow targets"</a> is related.</em></p> @@ -264,7 +264,7 @@ SSRP - Switched subtree's repository par <h3>Delete</h3> -<p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=4163" +<p><a href="https://issues.apache.org/jira/browse/SVN-4163" >Issue #4163 "merged deletion of switched subtrees records non-inheritable mergeinfo"</a>: If a merge deletes the path SS, the desired behaviour is currently undefined and the actual behaviour is that a commit will @@ -473,7 +473,7 @@ command-line could also produce an outpu <p>Recent discussion can be found <a href="http://subversion.tigris.org/servlets/ReadMsg?listName=dev&msgNo=128233" >here</a>. Development is tracked <a -href="http://subversion.tigris.org/issues/show_bug.cgi?id=2820">here</a>.</p> +href="https://issues.apache.org/jira/browse/SVN-2820">here</a>.</p> <p>The <a href="requirements.html#change-set-availability">Show Changesets Blocked from Merging</a> portion of this feature is @@ -493,7 +493,7 @@ allow for XML-formatted output (for mach <p>Recent discussion can be found <a href="http://subversion.tigris.org/servlets/ReadMsg?listName=dev&msgNo=128233" >here</a>. Development is tracked <a -href="http://subversion.tigris.org/issues/show_bug.cgi?id=2835">here</a>.</p> +href="https://issues.apache.org/jira/browse/SVN-2835">here</a>.</p> <p>The <a href="requirements.html#find-changeset">Find Paths containing Specific Incarnation of Versioned Resource</a> portion of @@ -951,7 +951,7 @@ here:</p> >Original API proposal</a></li> </ul> -<p><a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2022" +<p><a href="https://issues.apache.org/jira/browse/SVN-2022" >Issue #2022</a> is loosely related.</p> <div class="h3" id="distributable-resolution"> Modified: subversion/branches/addremove/notes/merge-tracking/requirements.html URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/merge-tracking/requirements.html?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/merge-tracking/requirements.html (original) +++ subversion/branches/addremove/notes/merge-tracking/requirements.html Sat May 23 14:16:56 2020 @@ -122,7 +122,7 @@ section).</p> <p><code>svn merge</code> needs to handle renames better. This requires <a -href="http://subversion.tigris.org/issues/show_bug.cgi?id=898">true +href="https://issues.apache.org/jira/browse/SVN-898">true rename support</a>.</p> <p>Edit foo.c on branch A. Rename foo.c to bar.c on branch B.</p> @@ -138,7 +138,7 @@ rename support</a>.</p> </ol> <p>Problem #2 stems from the fact that we don't have <a -href="http://subversion.tigris.org/issues/show_bug.cgi?id=898">true +href="https://issues.apache.org/jira/browse/SVN-898">true renames</a>, just copies (with history) and deletes. That's not fixable without a FS schema change, and (probably) a libsvn_wc rewrite.</p> @@ -372,7 +372,7 @@ some filesystem backend implementation d items in the dump as a sort of "soft data" (which would allow them to be used for "translating" the merge tracking data at load time, where those IDs would be otherwise irrelevant). See <a -href="http://subversion.tigris.org/issues/show_bug.cgi?id=1525">issue +href="https://issues.apache.org/jira/browse/SVN-1525">issue 1525</a> about user-visible entity IDs.</p> </div> <!-- dump-load --> Modified: subversion/branches/addremove/notes/merge-tracking/summit.html URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/merge-tracking/summit.html?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/merge-tracking/summit.html (original) +++ subversion/branches/addremove/notes/merge-tracking/summit.html Sat May 23 14:16:56 2020 @@ -166,7 +166,7 @@ the average user needs.</p> resources in the first place? Can this be achieved with a finer-grained <code>svn switch</code>? Note: This is related to the shared file storage issue in Subversion's own issue tracker, - <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2286" + <a href="https://issues.apache.org/jira/browse/SVN-2286" >issue #2286</a>. It was also expressed at the <a href="http://svn.apache.org/repos/asf/subversion/trunk/notes/EuroOSCON-2005-vc-bof.txt" Modified: subversion/branches/addremove/notes/moves URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/moves?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/moves (original) +++ subversion/branches/addremove/notes/moves Sat May 23 14:16:56 2020 @@ -75,7 +75,7 @@ private libsvn_wc API: More API changes might be needed (TBD). In particular, scan_deletion may need to return a list of moves -in the multi-layer case (http://wiki.apache.org/subversion/MultiLayerMoves) +in the multi-layer case (https://cwiki.apache.org/confluence/display/SVN/MultiLayerMoves) We might require a working copy upgrade when going from 1.7 to 1.8, and only allow new move functionality to be used with 1.8 working copies. Modified: subversion/branches/addremove/notes/obliterate/obliterate-functional-spec.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/obliterate/obliterate-functional-spec.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/obliterate/obliterate-functional-spec.txt (original) +++ subversion/branches/addremove/notes/obliterate/obliterate-functional-spec.txt Sat May 23 14:16:56 2020 @@ -1021,7 +1021,7 @@ VII. Appendix 1. Link to external documentation - [1] Issue 516: http://subversion.tigris.org/issues/show_bug.cgi?id=516 + [1] Issue 516: https://issues.apache.org/jira/browse/SVN-516 [2] Karl Fogel's proposal to use the replay API and filters: http://svn.haxx.se/dev/archive-2008-04/0687.shtml [3] Bob Jenkins's thread about "Auditability": keep log of what has been Modified: subversion/branches/addremove/notes/repos-dictated-config URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/repos-dictated-config?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/repos-dictated-config (original) +++ subversion/branches/addremove/notes/repos-dictated-config Sat May 23 14:16:56 2020 @@ -1,2 +1,2 @@ [ The contents and further evolution of this document have been moved to ] -[ http://wiki.apache.org/subversion/ServerDictatedConfiguration ] +[ https://cwiki.apache.org/confluence/display/SVN/ServerDictatedConfiguration ] Modified: subversion/branches/addremove/notes/tree-conflicts/design-overview.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/tree-conflicts/design-overview.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/tree-conflicts/design-overview.txt (original) +++ subversion/branches/addremove/notes/tree-conflicts/design-overview.txt Sat May 23 14:16:56 2020 @@ -246,10 +246,10 @@ Status: incomplete * Mark as resolved, by command: the basic "svn resolved PARENT" works to some extent, but needs attention. - Issue #3145 <http://subversion.tigris.org/issues/show_bug.cgi?id=3145> + Issue #3145 <https://issues.apache.org/jira/browse/SVN-3145> * Mark as resolved, interactively: not started. - Issue #3144 <http://subversion.tigris.org/issues/show_bug.cgi?id=3144> + Issue #3144 <https://issues.apache.org/jira/browse/SVN-3144> To do: Modified: subversion/branches/addremove/notes/tree-conflicts/detection.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/tree-conflicts/detection.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/tree-conflicts/detection.txt (original) +++ subversion/branches/addremove/notes/tree-conflicts/detection.txt Sat May 23 14:16:56 2020 @@ -8,7 +8,7 @@ in use-cases.txt, for both files and dir Issue reference: - http://subversion.tigris.org/issues/show_bug.cgi?id=2282 + https://issues.apache.org/jira/browse/SVN-2282 ========== USE CASE 1 Modified: subversion/branches/addremove/notes/tree-conflicts/use-cases.txt URL: http://svn.apache.org/viewvc/subversion/branches/addremove/notes/tree-conflicts/use-cases.txt?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/notes/tree-conflicts/use-cases.txt (original) +++ subversion/branches/addremove/notes/tree-conflicts/use-cases.txt Sat May 23 14:16:56 2020 @@ -3,8 +3,8 @@ TREE CONFLICTS USE CASES AND DESIRED BEHAVIOURS -Issue reference: http://subversion.tigris.org/issues/show_bug.cgi?id=2282 - http://subversion.tigris.org/issues/show_bug.cgi?id=3630 +Issue reference: https://issues.apache.org/jira/browse/SVN-2282 + https://issues.apache.org/jira/browse/SVN-3630 These use cases are based on a scenario paper "SVN move/rename problems & suggested improvements" submitted by a corporate Subversion Modified: subversion/branches/addremove/subversion/bindings/javahl/README URL: http://svn.apache.org/viewvc/subversion/branches/addremove/subversion/bindings/javahl/README?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/subversion/bindings/javahl/README (original) +++ subversion/branches/addremove/subversion/bindings/javahl/README Sat May 23 14:16:56 2020 @@ -5,7 +5,7 @@ JavaHL provides a (mostly native, using a high level Java API for Subversion, which was originally targeted for implementors of GUI clients and IDE plug-ins for Subversion. JavaHL currently provides a minimal-but-complete set of APIs which expose the -core Subversion C API to Java. It requires a JRE 1.6+ (runtime). +core Subversion C API to Java. It requires a JRE 1.8+ (runtime). It is currently quite mature, and can be considered for production use. @@ -14,7 +14,7 @@ Build system ------------ JavaHL should compile and run under Linux, Win32, and Mac OS X with -JDK 1.6+ and a C++ compiler with a complete implementation of +JDK 1.8+ and a C++ compiler with a complete implementation of C++98 (for example, GCC 3.2 and older cannot compile JavaHL 1.9+). Its build will produce both a native library (libsvnjavahl-1.so on Unix @@ -78,7 +78,7 @@ itself. The official Subversion C libra implementation of a Subversion client's logic, and are the most robust client implementation available. Using JNI allows the effort that has gone into the existing libraries to be leveraged from Java, and allows -developer time to me more efficently spent on further development of the +developer time to me more efficiently spent on further development of the underlying libraries shared by many implementations. The SVNKit <http://svnkit.com/> client library (formerly known as