Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/diff_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/diff_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/diff_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/diff_tests.py
 Thu Feb  1 20:04:07 2024
@@ -833,7 +833,7 @@ def diff_head_of_moved_file(sbox):
     ' This is the file \'mu\'.\n',
     '+\n',
     '+Actually, it\'s a new mu.\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   svntest.actions.run_and_verify_svn(expected_output, [],
@@ -1024,7 +1024,7 @@ def diff_base_to_repos(sbox):
     None, [], 'diff', '-r', 'BASE:2', wc_dir)
 
   # to do the comparison, remove all output lines starting with +++ or ---
-  re_infoline = re.compile('^(\+\+\+|---).*$')
+  re_infoline = re.compile(r'^(\+\+\+|---).*$')
   list1 = []
   list2 = []
 
@@ -4256,7 +4256,7 @@ def diff_dir_replaced_by_file(sbox):
     '+++ %s\t(working copy)\n' % sbox.path('A/B/E'),
     '@@ -0,0 +1 @@\n',
     '+text\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   svntest.actions.run_and_verify_svn(expected_output, [],
@@ -4464,7 +4464,7 @@ def diff_local_missing_obstruction(sbox)
     'Added: K\n',
     '## -0,0 +1 ##\n',
     '+V\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
     'Index: %s\n' % (sbox.path('iota'),),
     '===================================================================\n',
     '--- %s\t(revision 1)\n' % (sbox.path('iota'),),
@@ -4475,7 +4475,7 @@ def diff_local_missing_obstruction(sbox)
     'Added: K\n',
     '## -0,0 +1 ##\n',
     '+V\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
   ]
   svntest.actions.run_and_verify_svn(expected_output, [], 'diff', wc_dir)
 
@@ -4639,7 +4639,7 @@ def diff_repo_repo_added_file_mime_type(
                         'Deleted: svn:mime-type\n',
                         '## -1 +0,0 ##\n',
                         '-text/plain\n',
-                        '\ No newline at end of property\n']
+                        '\\ No newline at end of property\n']
     svntest.actions.run_and_verify_svn(expected_output, [], 'diff',
                                        '-r2:1', newfile)
 
@@ -4661,7 +4661,7 @@ def diff_switched_file(sbox):
     '@@ -1 +1,2 @@\n',
     ' This is the file \'mu\'.\n',
     '+Mu????\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'diff', '-r', '1', sbox.ospath('iota'))
@@ -4676,7 +4676,7 @@ def diff_switched_file(sbox):
     '-This is the file \'iota\'.\n',
     '+This is the file \'mu\'.\n',
     '+Mu????\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'diff', '-r', '1', sbox.ospath(''))
@@ -4709,7 +4709,7 @@ def diff_parent_dir(sbox):
       'Deleted: A\n',
       '## -1 +0,0 ##\n',
       '-B\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
     ]
 
     svntest.actions.run_and_verify_svn(expected_output, [],
@@ -4726,7 +4726,7 @@ def diff_parent_dir(sbox):
       'Deleted: A\n',
       '## -1 +0,0 ##\n',
       '-B\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
     ]
 
     svntest.actions.run_and_verify_svn(expected_output, [],
@@ -4823,7 +4823,7 @@ def diff_local_copied_dir(sbox):
       'Added: p2\n',
       '## -0,0 +1 ##\n',
       '+v2\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
     ]
 
     svntest.actions.run_and_verify_svn(expected_output_C2, [],
@@ -5036,14 +5036,14 @@ def diff_symlinks(sbox):
     '+++ %s\t(working copy)\n' % sbox.path('to-iota'),
     '@@ -0,0 +1 @@\n',
     '+link iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '\n',
     'Property changes on: %s\n' % sbox.path('to-iota'),
     '___________________________________________________________________\n',
     'Added: svn:special\n',
     '## -0,0 +1 ##\n',
     '+*\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
   ], [], 'diff', wc_dir)
 
   svntest.actions.run_and_verify_svn([
@@ -5055,14 +5055,14 @@ def diff_symlinks(sbox):
     '+++ b/to-iota\t(working copy)\n',
     '@@ -0,0 +1 @@\n',
     '+iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '\n',
     'Property changes on: to-iota\n',
     '___________________________________________________________________\n',
     'Added: svn:special\n',
     '## -0,0 +1 ##\n',
     '+*\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
   ], [], 'diff', wc_dir, '--git')
 
   sbox.simple_commit()
@@ -5076,9 +5076,9 @@ def diff_symlinks(sbox):
     '+++ %s\t(working copy)\n' % sbox.path('to-iota'),
     '@@ -1 +1 @@\n',
     '-link iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+link A/B/E/alpha\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ], [], 'diff', wc_dir)
 
   svntest.actions.run_and_verify_svn([
@@ -5090,9 +5090,9 @@ def diff_symlinks(sbox):
     '+++ b/to-iota\t(working copy)\n',
     '@@ -1 +1 @@\n',
     '-iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+A/B/E/alpha\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ], [], 'diff', wc_dir, '--git')
 
 

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/getopt_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/getopt_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/getopt_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/getopt_tests.py
 Thu Feb  1 20:04:07 2024
@@ -81,7 +81,7 @@ del_lines_res = [
                  re.compile(r"\* Plaintext cache.*"),
                  re.compile(r"\* Gnome Keyring"),
                  re.compile(r"\* GPG-Agent"),
-                 re.compile(r"\* Mac OS X Keychain"),
+                 re.compile(r"\* macOS Keychain"),
                  re.compile(r"\* KWallet \(KDE\)"),
                 ]
 
@@ -94,7 +94,7 @@ rep_lines_res = [
                   'version X.Y.Z '),
                  # The copyright end date keeps changing; fix forever.
                  (re.compile(r'Copyright \(C\) 20\d\d The Apache '
-                              'Software Foundation\.'),
+                             r'Software Foundation\.'),
                   'Copyright (C) YYYY The Apache Software Foundation'),
                  # In 'svn --version --quiet', we print only the version
                  # number in a single line.
@@ -120,7 +120,7 @@ switched_del_lines_res = [
 # seen switch_res_line.
 switched_rep_lines_res = [
                           # We don't care about the actual canonical host
-                          (re.compile('^\* running on.*$'), '* running on'),
+                          (re.compile(r'^\* running on.*$'), '* running on'),
                          ]
 
 def process_lines(lines):

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/info_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/info_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/info_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/info_tests.py
 Thu Feb  1 20:04:07 2024
@@ -96,7 +96,7 @@ def match_xml_element(str, exprs):
   atttribute_re = re.compile(
                  r"\s+(?P<key>[\w-]+)\s*=\s*(['\"])(?P<val>[^'\"]*)\2", re.M)
   self_closing_re = re.compile(r"\s*/>", re.M)
-  content_re_str = "\\s*>(?P<content>.*?)</%s\s*>"
+  content_re_str = r"\s*>(?P<content>.*?)</%s\s*>"
 
   m = start_tag_re.match(str)
   if not m:
@@ -402,7 +402,7 @@ def info_repos_root_url(sbox):
         'Path'              : re.escape(os.path.basename(sbox.repo_dir)),
         'Repository Root'   : re.escape(sbox.repo_url),
         'URL'               : re.escape(sbox.repo_url),
-        'Relative URL'      : '\^/', # escape ^ -- this isn't a regexp
+        'Relative URL'      : r'\^/', # escape ^ -- this isn't a regexp
         'Revision'          : '1',
         'Node Kind'         : 'directory',
         'Last Changed Rev'  : '1',
@@ -412,7 +412,7 @@ def info_repos_root_url(sbox):
         'Name'              : 'iota',
         'Repository Root'   : re.escape(sbox.repo_url),
         'URL'               : re.escape(sbox.repo_url + '/iota'),
-        'Relative URL'      : '\^/iota', # escape ^ -- this isn't a regexp
+        'Relative URL'      : r'\^/iota', # escape ^ -- this isn't a regexp
         'Revision'          : '1',
         'Node Kind'         : 'file',
         'Last Changed Rev'  : '1',

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/legacy/utf8_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/legacy/utf8_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/legacy/utf8_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/legacy/utf8_tests.py
 Thu Feb  1 20:04:07 2024
@@ -143,7 +143,7 @@ else:
 # Also check that the environment contains the expected locale settings
 # either by default, or because we set them above.
 if localematch:
-  localeregex = re.compile('^en_US\.ISO-?8859-1$', re.I)
+  localeregex = re.compile(r'^en_US\.ISO-?8859-1$', re.I)
   for env in [ 'LC_ALL', 'LC_CTYPE', 'LANG' ]:
     env_value = os.getenv(env)
     if env_value:

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/lock_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/lock_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/lock_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/lock_tests.py
 Thu Feb  1 20:04:07 2024
@@ -91,8 +91,8 @@ def lock_file(sbox):
                                      '-m', '', file_path)
 
   # --- Meanwhile, in our other working copy... ---
-  err_re = "(svn\: E195022\: File '.*iota' is locked in another)|" + \
-           "(svn\: E160039: User '?jconstant'? does not own lock on 
path.*iota')"
+  err_re = r"(svn\: E195022\: File '.*iota' is locked in another)|" + \
+           r"(svn\: E160039: User '?jconstant'? does not own lock on 
path.*iota')"
 
   svntest.main.run_svn(None, 'update', wc_b)
   # -- Try to change a file --
@@ -112,8 +112,8 @@ def lock_file(sbox):
   # change the locked file's properties
   svntest.main.run_svn(None, 'propset', 'sneakyuser', 'Sally', file_path_b)
 
-  err_re = "(svn\: E195022\: File '.*iota' is locked in another)|" + \
-           "(svn\: E160039\: User '?jconstant'? does not own lock on path)"
+  err_re = r"(svn\: E195022\: File '.*iota' is locked in another)|" + \
+           r"(svn\: E160039\: User '?jconstant'? does not own lock on path)"
 
   # attempt (and fail) to commit as user Sally
   svntest.actions.run_and_verify_commit(wc_b, None, None, err_re,
@@ -1275,8 +1275,8 @@ def ls_url_encoded(sbox):
                                      [], "lock", fname)
 
   # Make sure ls shows it being locked.
-  expected_output = " +2 " + re.escape(svntest.main.wc_author) + " +O .+f|" \
-                    " +2 " + re.escape(svntest.main.wc_author) + "    .+\./"
+  expected_output = r" +2 %(author)s +O .+f| +2 %(author)s    .+\./" % \
+                    {'author': re.escape(svntest.main.wc_author)}
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      "list", "-v", dirname)
 

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/log_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/log_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/log_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/log_tests.py
 Thu Feb  1 20:04:07 2024
@@ -471,8 +471,7 @@ def parse_log_output(log_lines, with_dif
 
   # Regular expression to match the header line of a log message, with
   # these groups: (revision number), (author), (date), (num lines).
-  header_re = re.compile('^r([0-9]+) \| ' \
-                         + '([^|]*) \| ([^|]*) \| ([0-9]+) lines?')
+  header_re = re.compile(r'^r([0-9]+) \| ([^|]*) \| ([^|]*) \| ([0-9]+) 
lines?')
 
   # The log chain to return.
   chain = []
@@ -984,10 +983,10 @@ PROPS-END
 
   # Verify the output contains either the expected fuzzy escape
   # sequence, or the literal control char.
-  match_unescaped_ctrl_re = "This msg contains a Ctrl-T \(.\) " \
-                            "and a Ctrl-I \(\t\)\."
-  match_escaped_ctrl_re = "^This msg contains a Ctrl-T \(\?\\\\020\) " \
-                          "and a Ctrl-I \(\t\)\."
+  match_unescaped_ctrl_re = r"This msg contains a Ctrl-T \(.\) " \
+                            r"and a Ctrl-I \(\t\)\."
+  match_escaped_ctrl_re = r"^This msg contains a Ctrl-T \(\?\\020\) " \
+                          r"and a Ctrl-I \(\t\)\."
   matched = None
   for line in output:
     if re.match(match_unescaped_ctrl_re, line) \
@@ -1490,8 +1489,8 @@ def retrieve_revprops(sbox):
 
   # Can't set revprops with log.
   svntest.actions.run_and_verify_log_xml(
-    expected_stderr=(".*cannot assign with 'with-revprop' option"
-                     " \(drop the '='\)"),
+    expected_stderr=(r".*cannot assign with 'with-revprop' option"
+                     r" \(drop the '='\)"),
     args=['--with-revprop=foo=bar'])
 
   # basic test without revprop options
@@ -2670,8 +2669,8 @@ def log_revision_move_copy(sbox):
                                      '-r2')
 
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r3\ .*\n',
+    r'-+\n',
+    r'r3 .*\n',
     re.escape('Changed paths:\n'),
     re.escape('   D /A/B/E\n'),
     re.escape('   A /E (from /A/B/E:2)\n'), # Patched - Direct move
@@ -2680,7 +2679,7 @@ def log_revision_move_copy(sbox):
     re.escape('   D /iota\n'),
     re.escape('   A /iotb (from /iota:2)\n'), # Patched - Direct move
     re.escape('   A /mutb (from /A/mu:1)\n'), # Copy (always r1)
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox.wc_dir,

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_authz_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_authz_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_authz_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_authz_tests.py
 Thu Feb  1 20:04:07 2024
@@ -773,7 +773,7 @@ def diff_unauth_parent(sbox):
     'Added: k\n',
     '## -0,0 +1 ##\n',
     '+v\n',
-    '\ No newline at end of property\n'
+    '\\ No newline at end of property\n'
   ]
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'diff', sbox.repo_url + '/A', '-c', '2')
@@ -830,9 +830,9 @@ def diff_unauth_parent(sbox):
       'Modified: this-is\n',
       '## -1 +1 ##\n',
       '-E\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
       '+G\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
     ]
   else:
     # ### We should also see a property deletion here!
@@ -847,7 +847,7 @@ def diff_unauth_parent(sbox):
     'Deleted: this-is\n',
     '## -1 +0,0 ##\n',
     '-E\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
     'Index: .\n',
     '===================================================================\n',
     '--- .\t(nonexistent)\n',
@@ -858,7 +858,7 @@ def diff_unauth_parent(sbox):
       'Added: this-is\n',
       '## -0,0 +1 ##\n',
       '+G\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
     ]
 
   # Use two url diff, because 'svn diff url -c' uses copyfrom to diff against

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_automatic_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_automatic_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_automatic_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_automatic_tests.py
 Thu Feb  1 20:04:07 2024
@@ -1361,9 +1361,9 @@ def merge_delete_crlf_file(sbox):
 
   # Let commit fix the eols
   sbox.simple_add_text('with\rCRLF\rhere!', 'A/crlf')
-  sbox.simple_add_text('with\rnative\r\eol', 'A/native')
-  sbox.simple_add_text('with\rCR\r\eol', 'A/cr')
-  sbox.simple_add_text('with\rLF\r\eol', 'A/lf')
+  sbox.simple_add_text('with\rnative\r\\eol', 'A/native')
+  sbox.simple_add_text('with\rCR\r\\eol', 'A/cr')
+  sbox.simple_add_text('with\rLF\r\\eol', 'A/lf')
 
   # And apply the magic property
   sbox.simple_propset('svn:eol-style', 'CRLF',   'A/crlf')

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tests.py
 Thu Feb  1 20:04:07 2024
@@ -247,9 +247,9 @@ def textual_merges_galore(sbox):
 
   expected_skip = wc.State('', { })
 
-  tau_conflict_support_files = ["tau\.working",
-                                "tau\.merge-right\.r3",
-                                "tau\.merge-left\.r1"]
+  tau_conflict_support_files = [r"tau\.working",
+                                r"tau\.merge-right\.r3",
+                                r"tau\.merge-left\.r1"]
 
   svntest.actions.run_and_verify_merge(other_wc, '1', '3',
                                        sbox.repo_url, None,
@@ -2629,7 +2629,7 @@ def safe_property_merge(sbox):
   expected_skip = wc.State('', { })
 
   # should have 3 'prej' files left behind, describing prop conflicts:
-  extra_files = ['alpha.*\.prej', 'beta.*\.prej', 'dir_conflicts.*\.prej']
+  extra_files = [r'alpha.*\.prej', r'beta.*\.prej', r'dir_conflicts.*\.prej']
 
   svntest.actions.run_and_verify_merge(B2_path, '3', '4', B_url, None,
                                        expected_output,
@@ -2752,7 +2752,7 @@ def property_merge_from_branch(sbox):
   expected_skip = wc.State('', { })
 
   # should have 2 'prej' files left behind, describing prop conflicts:
-  extra_files = ['alpha.*\.prej', 'dir_conflicts.*\.prej']
+  extra_files = [r'alpha.*\.prej', r'dir_conflicts.*\.prej']
 
   svntest.actions.run_and_verify_merge(B2_path, '3', '4', B_url, None,
                                        expected_output,
@@ -2952,9 +2952,9 @@ def cherry_pick_text_conflict(sbox):
                                        expected_skip,
                                        expected_error,
                                        extra_files=
-                                       ["mu\.working",
-                                        "mu\.merge-right\.r4",
-                                        "mu\.merge-left\.r3"])
+                                       [r"mu\.working",
+                                        r"mu\.merge-right\.r4",
+                                        r"mu\.merge-left\.r3"])
 
 #----------------------------------------------------------------------
 # Test for issue 2135
@@ -14517,9 +14517,9 @@ def merge_automatic_conflict_resolution(
                       "=======\n"
                       "New content>>>>>>> .merge-right.r3\n")
   expected_status.tweak('D/H/psi', status='C ')
-  psi_conflict_support_files = ["psi\.working",
-                                "psi\.merge-right\.r3",
-                                "psi\.merge-left\.r2"]
+  psi_conflict_support_files = [r"psi\.working",
+                                r"psi\.merge-right\.r3",
+                                r"psi\.merge-left\.r2"]
   svntest.actions.run_and_verify_merge(A_COPY_path, '2', '3',
                                        sbox.repo_url + '/A', None,
                                        expected_output,
@@ -17301,7 +17301,7 @@ def merge_target_selection(sbox):
 
   # r4
   svntest.main.file_write(sbox.ospath('dir/binary-file'),
-                          '\9\8\7\6\5\4\3\2\1')
+                          '\x09\x08\7\6\5\4\3\2\1')
   sbox.simple_commit()
 
   sbox.simple_update()

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tree_conflict_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tree_conflict_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tree_conflict_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/merge_tree_conflict_tests.py
 Thu Feb  1 20:04:07 2024
@@ -1856,9 +1856,9 @@ def merge_replace_causes_tree_conflict2(
   actions.run_and_verify_status(wc_dir, expected_status)
 
   # Check the tree conflict types:
-  expected_stdout = '(R.*)|(Summary of conflicts.*)|(  Tree conflicts.*)' \
-                    '|(.*local delete, incoming replace upon merge.*)' \
-                    '|(      \>.*)'
+  expected_stdout = r'(R.*)|(Summary of conflicts.*)|(  Tree conflicts.*)' \
+                    r'|(.*local delete, incoming replace upon merge.*)' \
+                    r'|(      \>.*)'
   tree_conflicted_path = [A_B_E, A_mu, A_D_G_pi, A_D_H]
   for path in tree_conflicted_path:
     actions.run_and_verify_svn2(expected_stdout, [], 0, 'st',

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/patch_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/patch_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/patch_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/patch_tests.py
 Thu Feb  1 20:04:07 2024
@@ -3433,7 +3433,7 @@ def patch_one_property(sbox, trailing_eo
     value = "v\n"
   else:
     value = "v"
-    unidiff_patch += ['\ No newline at end of property\n']
+    unidiff_patch += ['\\ No newline at end of property\n']
 
   svntest.main.file_write(patch_file_path, ''.join(unidiff_patch), 'wb')
 
@@ -5807,7 +5807,7 @@ def patch_binary_file(sbox):
     'Added: svn:mime-type\n',
     '## -0,0 +1 ##\n',
     '+application/binary\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
   ]
 
   _, diff_output, _ = svntest.actions.run_and_verify_svn(expected_output, [],
@@ -6005,7 +6005,7 @@ def patch_final_eol(sbox):
    '@@ -1 +1 @@\n',
    '-This is the file \'mu\'.\n',
    '+This is the file \'mu\'.\n',
-   '\ No newline at end of file\n',
+   '\\ No newline at end of file\n',
    'Index: iota\n',
    '===================================================================\n',
    '--- iota\t(revision 1)\n',
@@ -6013,7 +6013,7 @@ def patch_final_eol(sbox):
    '@@ -1 +1 @@\n',
    '-This is the file \'iota\'.\n',
    '+This is the file \'iota\'.\n',
-   '\ No newline at end of file' # Missing EOL
+   '\\ No newline at end of file' # Missing EOL
   ]
 
   patch = sbox.get_tempname('patch')
@@ -6073,7 +6073,7 @@ def patch_final_eol(sbox):
     '+++ A/mu\t(working copy)\n',
     '@@ -1 +1 @@\n',
     '-This is the file \'mu\'.\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+This is the file \'mu\'.\n',
     'Index: iota\n',
     '===================================================================\n',
@@ -6081,7 +6081,7 @@ def patch_final_eol(sbox):
     '+++ iota\t(working copy)\n',
     '@@ -1 +1 @@\n',
     '-This is the file \'iota\'.\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+This is the file \'iota\'.' # Missing eol
   ]
 
@@ -6746,9 +6746,9 @@ def patch_add_remove_executable(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  eicar_data = 'X5O!P%@AP[4\PZX54(P^)7CC)7}$' \
+  eicar_data = 'X5O!P%@AP[4\\PZX54(P^)7CC)7}$' \
                'EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\0'
-  other_data = 'X5O!P%@AP[4\PZX54(P^)7CC)7}$' \
+  other_data = 'X5O!P%@AP[4\\PZX54(P^)7CC)7}$' \
                'SOME-LESS-INTERESTING-OTHER-TEXT!!!$H+H*\0' \
                '\0\0\0\0\0\0\0\0'
 
@@ -6912,7 +6912,7 @@ def patch_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -0,0 +1 @@\n',
     '+iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_edit = [
@@ -6922,9 +6922,9 @@ def patch_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -1 +1 @@\n',
     '-iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_to_file = [
@@ -6935,7 +6935,7 @@ def patch_git_symlink(sbox):
     '+++ /dev/null\n',
     '@@ -1 +0,0 @@\n',
     '-A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     'diff --git a/link-to-iota b/link-to-iota\n',
     'new file mode 100644\n',
     'index 0000000..1b130bf\n',
@@ -7039,7 +7039,7 @@ def patch_like_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -0,0 +1 @@\n',
     '+iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_edit = [
@@ -7049,9 +7049,9 @@ def patch_like_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -1 +1 @@\n',
     '-iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_to_file = [
@@ -7062,7 +7062,7 @@ def patch_like_git_symlink(sbox):
     '+++ /dev/null\n',
     '@@ -1 +0,0 @@\n',
     '-A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     'diff --git a/link-to-iota b/link-to-iota\n',
     'new file mode 100644\n',
     'index 0000000..1b130bf\n',
@@ -7709,7 +7709,7 @@ def patch_merge(sbox):
       ' J\n'
       ' K\n'
       ' L\n'
-      '\ No newline at end of file', mode='wb')
+      '\\ No newline at end of file', mode='wb')
 
   expected_skip = wc.State('', { })
   expected_output = wc.State(wc_dir, {
@@ -7735,7 +7735,7 @@ def patch_merge(sbox):
       ' J\n'
       ' K\n'
       ' L\n'
-      '\ No newline at end of file', mode='wb')
+      '\\ No newline at end of file', mode='wb')
 
   svntest.actions.run_and_verify_patch(wc_dir, local_patch,
                                        expected_output, None,
@@ -7871,7 +7871,7 @@ def patch_empty_prop(sbox):
     value = "v\n"
   else:
     value = "v"
-    unidiff_patch += ['\ No newline at end of property\n']
+    unidiff_patch += ['\\ No newline at end of property\n']
 
   patch_file_path = sbox.get_tempname('my.patch')
   svntest.main.file_write(patch_file_path, ''.join(unidiff_patch), 'wb')

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/prop_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/prop_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/prop_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/prop_tests.py
 Thu Feb  1 20:04:07 2024
@@ -349,7 +349,7 @@ def update_conflict_props(sbox):
   expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
   expected_status.tweak('A/mu', 'A', status=' C')
 
-  extra_files = ['mu.*\.prej', 'dir_conflicts.*\.prej']
+  extra_files = [r'mu.*\.prej', r'dir_conflicts.*\.prej']
   # Do the update and check the results in three ways... INCLUDING PROPS
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/special_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/special_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/special_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/special_tests.py
 Thu Feb  1 20:04:07 2024
@@ -71,7 +71,7 @@ def general_symlink(sbox):
   exit_code, stdout_lines, stderr_lines = svntest.main.run_svn(1, 'diff',
                                                                wc_dir)
 
-  regex = '^\+link linktarget'
+  regex = r'^\+link linktarget'
   for line in stdout_lines:
     if re.match(regex, line):
       break

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/stat_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/stat_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/stat_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/stat_tests.py
 Thu Feb  1 20:04:07 2024
@@ -559,7 +559,7 @@ def status_uninvited_parent_directory(sb
 
   for line in out:
     # The "/?" is just to allow for an optional trailing slash.
-    if re.match("\\s+\\*.*\.other/?$", line):
+    if re.match(r"\s+\*.*\.other/?$", line):
       raise svntest.Failure
 
 @Issue(1289)

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/store_pristine_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/store_pristine_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/store_pristine_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/store_pristine_tests.py
 Thu Feb  1 20:04:07 2024
@@ -25,7 +25,7 @@
 ######################################################################
 
 # General modules
-import os, logging, base64, functools
+import os, logging, base64, functools, time
 
 # Our testing module
 import svntest
@@ -351,6 +351,9 @@ def simple_diff_with_pristine(sbox):
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   diff_output = svntest.verify.make_diff_header(
@@ -383,6 +386,9 @@ def simple_diff_without_pristine(sbox):
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   diff_output = svntest.verify.make_diff_header(
@@ -415,6 +421,9 @@ def simple_revert_with_pristine(sbox):
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   svntest.actions.run_and_verify_revert([sbox.ospath('file')])
@@ -447,6 +456,9 @@ def simple_revert_without_pristine(sbox)
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   svntest.actions.run_and_verify_revert([sbox.ospath('file')])

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnadmin_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnadmin_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnadmin_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnadmin_tests.py
 Thu Feb  1 20:04:07 2024
@@ -58,17 +58,20 @@ def read_rep_cache(repo_dir):
   """
   db_path = os.path.join(repo_dir, 'db', 'rep-cache.db')
   db1 = svntest.sqlite3.connect(db_path)
-  schema1 = db1.execute("pragma user_version").fetchone()[0]
-  # Can't test newer rep-cache schemas with an old built-in SQLite; see the
-  # documentation of STMT_CREATE_SCHEMA_V2 in 
../../libsvn_fs_fs/rep-cache-db.sql
-  if schema1 >= 2 and svntest.sqlite3.sqlite_version_info < (3, 8, 2):
-    raise svntest.Failure("Can't read rep-cache schema %d using old "
-                          "Python-SQLite version %s < (3,8,2)" %
-                           (schema1,
-                            svntest.sqlite3.sqlite_version_info))
-
-  content = { row[0]: row[1:] for row in
-              db1.execute("select * from rep_cache") }
+  try:
+    schema1 = db1.execute("pragma user_version").fetchone()[0]
+    # Can't test newer rep-cache schemas with an old built-in SQLite; see the
+    # documentation of STMT_CREATE_SCHEMA_V2 in 
../../libsvn_fs_fs/rep-cache-db.sql
+    if schema1 >= 2 and svntest.sqlite3.sqlite_version_info < (3, 8, 2):
+      raise svntest.Failure("Can't read rep-cache schema %d using old "
+                            "Python-SQLite version %s < (3,8,2)" %
+                             (schema1,
+                              svntest.sqlite3.sqlite_version_info))
+
+    content = { row[0]: row[1:] for row in
+                db1.execute("select * from rep_cache") }
+  finally:
+    db1.close()
   return content
 
 def check_hotcopy_bdb(src, dst):
@@ -1787,7 +1790,7 @@ def test_lslocks_and_rmlocks(sbox):
       "Owner: jrandom",
       "Created:.*",
       "Expires:.*",
-      "Comment \(1 line\):",
+      r"Comment \(1 line\):",
       "Locking files",
       "\n", # empty line
       ]
@@ -3511,8 +3514,8 @@ def dump_exclude(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/A/D/H' and '/A/B/E' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /A\n'),
@@ -3528,7 +3531,7 @@ def dump_exclude(sbox):
     re.escape('   A /A/D/gamma\n'),
     re.escape('   A /A/mu\n'),
     re.escape('   A /iota\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3564,18 +3567,18 @@ def dump_exclude_copysource(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r2\ .*\n',
+    r'-+\n',
+    r'r2 .*\n',
     re.escape('Changed paths:\n'),
     # Simple add, not copy.
     re.escape('   A /branches/branch1\n'),
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/trunk' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /branches\n'),
     re.escape('   A /tags\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3609,13 +3612,13 @@ def dump_include(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/B' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /A\n'),
     re.escape('   A /C\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3651,17 +3654,17 @@ def dump_not_include_copysource(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r2\ .*\n',
+    r'-+\n',
+    r'r2 .*\n',
     re.escape('Changed paths:\n'),
     # Simple add, not copy.
     re.escape('   A /branches/branch1\n'),
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # Only '/branches' is added in r1.
     re.escape('Changed paths:\n'),
     re.escape('   A /branches\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3693,12 +3696,12 @@ def dump_exclude_by_pattern(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     re.escape('Changed paths:\n'),
     # Only '/bbc' is added in r1.
     re.escape('   A /bbc\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3730,14 +3733,14 @@ def dump_include_by_pattern(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/bbc' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /aaa\n'),
     re.escape('   A /aab\n'),
     re.escape('   A /aac\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3782,27 +3785,27 @@ def dump_exclude_all_rev_changes(sbox):
 
   # Check log. Revision properties ('svn:log' etc.) should be empty for r2.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r3 | jrandom | .* | 1 line\\n',
+    r'-+\n',
+    r'r3 \| jrandom \| .* \| 1 line\n',
     re.escape('Changed paths:'),
     re.escape('   A /r3a'),
     re.escape('   A /r3b'),
     re.escape('   A /r3c'),
     '',
     re.escape('Revision 3.'),
-    '-+\\n',
+    r'-+\n',
     re.escape('r2 | (no author) | (no date) | 1 line'),
     '',
     '',
-    '-+\\n',
-    'r1 | jrandom | .* | 1 line\\n',
+    r'-+\n',
+    r'r1 | jrandom | .* | 1 line\n',
     re.escape('Changed paths:'),
     re.escape('   A /r1a'),
     re.escape('   A /r1b'),
     re.escape('   A /r1c'),
     '',
     re.escape('Revision 1.'),
-    '-+\\n',
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v',  sbox2.repo_url)
@@ -3944,8 +3947,8 @@ def dump_include_copied_directory(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r2\ .*\n',
+    r'-+\n',
+    r'r2 .*\n',
     # Only '/COPY' is added
     re.escape('Changed paths:\n'),
     re.escape('   A /COPY'),
@@ -3958,9 +3961,9 @@ def dump_include_copied_directory(sbox):
     re.escape('   A /COPY/H/omega'),
     re.escape('   A /COPY/H/psi'),
     re.escape('   A /COPY/gamma'),
-    '-+\\n',
-    'r1\ .*\n',
-    '-+\\n'
+    r'-+\n',
+    r'r1 .*\n',
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnfsfs_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnfsfs_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnfsfs_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnfsfs_tests.py
 Thu Feb  1 20:04:07 2024
@@ -167,38 +167,38 @@ def test_stats(sbox):
                       'Histogram of directory property sizes:',
                       'Histogram of directory property representation sizes:']
   patterns_to_find = {
-    'Reading revisions' : ['\s+ 0[ 0-9]*'],
-    'Global .*'         : ['.*\d+ bytes in .*\d+ revisions',
-                           '.*\d+ bytes in .*\d+ changes',
-                           '.*\d+ bytes in .*\d+ node revision records',
-                           '.*\d+ bytes in .*\d+ representations',
-                           '.*\d+ bytes expanded representation size',
-                           '.*\d+ bytes with rep-sharing off' ],
-    'Noderev .*'        : ['.*\d+ bytes in .*\d+ nodes total',
-                           '.*\d+ bytes in .*\d+ directory noderevs',
-                           '.*\d+ bytes in .*\d+ file noderevs' ],
-    'Representation .*' : ['.*\d+ bytes in .*\d+ representations total',
-                           '.*\d+ bytes in .*\d+ directory representations',
-                           '.*\d+ bytes in .*\d+ file representations',
-                           '.*\d+ bytes in .*\d+ representations of added file 
nodes',
-                           '.*\d+ bytes in .*\d+ directory property 
representations',
-                           '.*\d+ bytes in .*\d+ file property 
representations',
-                           '.*\d+ average delta chain length',
-                           '.*\d+ bytes in header & footer overhead' ],
+    'Reading revisions' : [r'\s+ 0[ 0-9]*'],
+    'Global .*'         : [r'.*\d+ bytes in .*\d+ revisions',
+                           r'.*\d+ bytes in .*\d+ changes',
+                           r'.*\d+ bytes in .*\d+ node revision records',
+                           r'.*\d+ bytes in .*\d+ representations',
+                           r'.*\d+ bytes expanded representation size',
+                           r'.*\d+ bytes with rep-sharing off' ],
+    'Noderev .*'        : [r'.*\d+ bytes in .*\d+ nodes total',
+                           r'.*\d+ bytes in .*\d+ directory noderevs',
+                           r'.*\d+ bytes in .*\d+ file noderevs' ],
+    'Representation .*' : [r'.*\d+ bytes in .*\d+ representations total',
+                           r'.*\d+ bytes in .*\d+ directory representations',
+                           r'.*\d+ bytes in .*\d+ file representations',
+                           r'.*\d+ bytes in .*\d+ representations of added 
file nodes',
+                           r'.*\d+ bytes in .*\d+ directory property 
representations',
+                           r'.*\d+ bytes in .*\d+ file property 
representations',
+                           r'.*\d+ average delta chain length',
+                           r'.*\d+ bytes in header & footer overhead' ],
     '.* representation statistics:' :
-                          ['.*\d+ bytes in .*\d+ reps',
-                           '.*\d+ bytes in .*\d+ shared reps',
-                           '.*\d+ bytes expanded size',
-                           '.*\d+ bytes expanded shared size',
-                           '.*\d+ bytes with rep-sharing off',
-                           '.*\d+ shared references',
-                           '.*\d+ average delta chain length'],
-    'Largest.*:'        : ['.*\d+ r\d+ */\S*'],
+                          [r'.*\d+ bytes in .*\d+ reps',
+                           r'.*\d+ bytes in .*\d+ shared reps',
+                           r'.*\d+ bytes expanded size',
+                           r'.*\d+ bytes expanded shared size',
+                           r'.*\d+ bytes with rep-sharing off',
+                           r'.*\d+ shared references',
+                           r'.*\d+ average delta chain length'],
+    'Largest.*:'        : [r'.*\d+ r\d+ */\S*'],
     'Extensions by number .*:' :
-                          ['.*\d+ \( ?\d+%\) representations'],
+                          [r'.*\d+ \( ?\d+%\) representations'],
     'Extensions by size .*:' :
-                          ['.*\d+ \( ?\d+%\) bytes'],
-    'Histogram of .*:'  : ['.*\d+ \.\. < \d+.*\d+ \( ?\d+%\) bytes in *\d+ \( 
?\d+%\) items']
+                          [r'.*\d+ \( ?\d+%\) bytes'],
+    'Histogram of .*:'  : [r'.*\d+ \.\. < \d+.*\d+ \( ?\d+%\) bytes in *\d+ \( 
?\d+%\) items']
   }
 
   # check that the output contains all sections

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmover_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmover_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmover_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmover_tests.py
 Thu Feb  1 20:04:07 2024
@@ -35,7 +35,7 @@ Item = svntest.wc.StateItem
 ######################################################################
 
 _commit_re = re.compile('^Committed r([0-9]+)')
-_log_re = re.compile('^   ([ADRM] /[^\(]+($| \(from .*:[0-9]+\)$))')
+_log_re = re.compile(r'^   ([ADRM] /[^\(]+($| \(from .*:[0-9]+\)$))')
 _err_re = re.compile('^svnmover: (.*)$')
 
 def mk_file(sbox, file_name):

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmucc_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmucc_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmucc_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svnmucc_tests.py
 Thu Feb  1 20:04:07 2024
@@ -49,7 +49,7 @@ def reject_bogus_mergeinfo(sbox):
                                          sbox.repo_url + '/A')
 
 _svnmucc_re = re.compile(b'^(r[0-9]+) committed by jrandom at (.*)$')
-_log_re = re.compile('^   ([ADRM] /[^\(]+($| \(from .*:[0-9]+\)$))')
+_log_re = re.compile(r'^   ([ADRM] /[^\(]+($| \(from .*:[0-9]+\)$))')
 _err_re = re.compile('^svnmucc: (.*)$')
 
 def test_svnmucc(repo_url, expected_path_changes, *varargs):

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/actions.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/actions.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/actions.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/actions.py
 Thu Feb  1 20:04:07 2024
@@ -1046,9 +1046,9 @@ def run_and_parse_info(*args):
       # normal line
       key, value = line.split(':', 1)
 
-      if re.search(' \(\d+ lines?\)$', key):
+      if re.search(r' \(\d+ lines?\)$', key):
         # numbered continuation lines
-        match = re.match('^(.*) \((\d+) lines?\)$', key)
+        match = re.match(r'^(.*) \((\d+) lines?\)$', key)
         key = match.group(1)
         lock_comment_lines = int(match.group(2))
       elif len(value) > 1:

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/main.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/main.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/main.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/main.py
 Thu Feb  1 20:04:07 2024
@@ -1511,7 +1511,7 @@ def merge_notify_line(revstart=None, rev
   merge operation on revisions REVSTART through REVEND.  Omit both
   REVSTART and REVEND for the case where the left and right sides of
   the merge are from different URLs."""
-  from_foreign_phrase = foreign and "\(from foreign repository\) " or ""
+  from_foreign_phrase = foreign and r"\(from foreign repository\) " or ""
   if target:
     target_re = re.escape(target)
   else:
@@ -1877,7 +1877,7 @@ class TestSpawningThread(threading.Threa
 
 class TestRunner:
   """Encapsulate a single test case (predicate), including logic for
-  runing the test and test list output."""
+  running the test and test list output."""
 
   def __init__(self, func, index):
     self.pred = svntest.testcase.create_test_case(func)
@@ -2188,13 +2188,12 @@ def _create_parser(usage=None):
   if logger.getEffectiveLevel() == logging.NOTSET:
     logger.setLevel(logging.WARN)
 
-  def set_log_level(option, opt, value, parser, level=None):
-    if level:
-      # called from --verbose
-      logger.setLevel(level)
+  def set_log_level(option, opt, value, parser):
+    if value.isdigit():
+      level = int(value)
     else:
-      # called from --set-log-level
-      logger.setLevel(getattr(logging, value, None) or int(value))
+      level = getattr(logging, value)
+    logger.setLevel(level)
 
   # Set up the parser.
   # If you add new options, consider adding them in
@@ -2213,10 +2212,10 @@ def _create_parser(usage=None):
                     help='Print test doc strings instead of running them')
   parser.add_option('--milestone-filter', action='store', 
dest='milestone_filter',
                     help='Limit --list to those with target milestone 
specified')
-  parser.add_option('-v', '--verbose', action='callback',
-                    callback=set_log_level, callback_args=(logging.DEBUG, ),
+  parser.add_option('-v', '--verbose', action='store_const',
+                    dest='set_log_level', const=logging.DEBUG,
                     help='Print binary command-lines (same as ' +
-                         '"--set-log-level logging.DEBUG")')
+                         '"--set-log-level DEBUG")')
   parser.add_option('-q', '--quiet', action='store_true',
                     help='Print only unexpected results (not with --verbose)')
   parser.add_option('-p', '--parallel', action='store_const',

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/verify.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/verify.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/verify.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/verify.py
 Thu Feb  1 20:04:07 2024
@@ -1024,7 +1024,7 @@ def make_diff_prop_added(pname, pval):
   ] + make_diff_prop_val("+", pval)
 
 def make_diff_prop_modified(pname, pval1, pval2):
-  """Return a property diff for modification of property PNAME, old value
+  r"""Return a property diff for modification of property PNAME, old value
      PVAL1, new value PVAL2.
 
      PVAL is a single string with no embedded newlines.  A newline at the

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/wc.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/wc.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/wc.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/svntest/wc.py
 Thu Feb  1 20:04:07 2024
@@ -93,30 +93,30 @@ _re_parse_status = re.compile('^([?!MACD
                               '([KOBT ])'
                               '([C ]) '
                               '([* ]) +'
-                              '((?P<wc_rev>\d+|-|\?) +(\d|-|\?)+ +(\S+) +)?'
+                              r'((?P<wc_rev>\d+|-|\?) +(\d|-|\?)+ +(\S+) +)?'
                               '(?P<path>.+)$')
 
 _re_parse_status_ex = re.compile('^      ('
-               '(  \> moved (from (?P<moved_from>.+)|to (?P<moved_to>.*)))'
-              '|(  \> swapped places with (?P<swapped_with>.+).*)'
-              '|(\>   (?P<tc>.+))'
+               r'(  \> moved (from (?P<moved_from>.+)|to (?P<moved_to>.*)))'
+              r'|(  \> swapped places with (?P<swapped_with>.+).*)'
+              r'|(\>   (?P<tc>.+))'
   ')$')
 
 _re_parse_skipped = re.compile("^(Skipped[^']*) '(.+)'( --.*)?\n")
 
 _re_parse_summarize = re.compile("^([MAD ][M ])      (.+)\n")
 
-_re_parse_checkout = re.compile('^([RMAGCUDE_ B][MAGCUDE_ ])'
-                                '([B ])'
-                                '([CAUD ])\s+'
-                                '(.+)')
-_re_parse_co_skipped = re.compile('^(Restored|Skipped|Removed external)'
-                                  '\s+\'(.+)\'(( --|: ).*)?')
-_re_parse_co_restored = re.compile('^(Restored)\s+\'(.+)\'')
+_re_parse_checkout = re.compile(r'^([RMAGCUDE_ B][MAGCUDE_ ])'
+                                r'([B ])'
+                                r'([CAUD ])\s+'
+                                r'(.+)')
+_re_parse_co_skipped = re.compile(r'^(Restored|Skipped|Removed external)'
+                                  r'\s+\'(.+)\'(( --|: ).*)?')
+_re_parse_co_restored = re.compile(r'^(Restored)\s+\'(.+)\'')
 
 # Lines typically have a verb followed by whitespace then a path.
-_re_parse_commit_ext = re.compile('^(([A-Za-z]+( [a-z]+)*)) \'(.+)\'( --.*)?')
-_re_parse_commit = re.compile('^(\w+(  \(bin\))?)\s+(.+)')
+_re_parse_commit_ext = re.compile("^(([A-Za-z]+( [a-z]+)*)) '(.+)'( --.*)?")
+_re_parse_commit = re.compile(r'^(\w+(  \(bin\))?)\s+(.+)')
 
 #rN: eids 0 15 branches 4
 _re_parse_eid_header = re.compile('^r(-1|[0-9]+): eids ([0-9]+) ([0-9]+) '

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/trans_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/trans_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/trans_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/trans_tests.py
 Thu Feb  1 20:04:07 2024
@@ -304,7 +304,7 @@ def keywords_from_birth(sbox):
   fp = open(url_unexp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$URL: (http|https|file|svn|svn\\+ssh)://",
+          and (re.match(r"\$URL: (http|https|file|svn|svn\+ssh)://",
                         lines[0]))):
     logger.warn("URL expansion failed for %s", url_unexp_path)
     raise svntest.Failure
@@ -314,7 +314,7 @@ def keywords_from_birth(sbox):
   fp = open(url_exp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$URL: (http|https|file|svn|svn\\+ssh)://",
+          and (re.match(r"\$URL: (http|https|file|svn|svn\+ssh)://",
                         lines[0]))):
     logger.warn("URL expansion failed for %s", url_exp_path)
     raise svntest.Failure
@@ -324,7 +324,7 @@ def keywords_from_birth(sbox):
   fp = open(id_unexp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: id_unexp", lines[0]))):
+          and (re.match(r"\$Id: id_unexp", lines[0]))):
     logger.warn("Id expansion failed for %s", id_exp_path)
     raise svntest.Failure
   fp.close()
@@ -333,7 +333,7 @@ def keywords_from_birth(sbox):
   fp = open(id_exp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: id_exp", lines[0]))):
+          and (re.match(r"\$Id: id_exp", lines[0]))):
     logger.warn("Id expansion failed for %s", id_exp_path)
     raise svntest.Failure
   fp.close()
@@ -342,7 +342,7 @@ def keywords_from_birth(sbox):
   fp = open(header_unexp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Header: (https?|file|svn|svn\\+ssh)://.* jrandom",
+          and (re.match(r"\$Header: (https?|file|svn|svn\+ssh)://.* jrandom",
                         lines[0]))):
     logger.warn("Header expansion failed for %s", header_unexp_path)
     raise svntest.Failure
@@ -352,7 +352,7 @@ def keywords_from_birth(sbox):
   fp = open(header_exp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Header: (https?|file|svn|svn\\+ssh)://.* jrandom",
+          and (re.match(r"\$Header: (https?|file|svn|svn\+ssh)://.* jrandom",
                         lines[0]))):
     logger.warn("Header expansion failed for %s", header_exp_path)
     raise svntest.Failure
@@ -409,7 +409,7 @@ def keywords_from_birth(sbox):
   fp = open(id_with_space_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: .*id with space", lines[0]))):
+          and (re.match(r"\$Id: .*id with space", lines[0]))):
     logger.warn("Id expansion failed for %s", id_with_space_path)
     raise svntest.Failure
   fp.close()
@@ -418,7 +418,7 @@ def keywords_from_birth(sbox):
   fp = open(id_exp_with_dollar_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: .*id_exp with_\$_sign [^$]* jrandom \$",
+          and (re.match(r"\$Id: .*id_exp with_\$_sign [^$]* jrandom \$",
                         lines[0]))):
     logger.warn("Id expansion failed for %s", id_exp_with_dollar_path)
 
@@ -645,7 +645,7 @@ def keyword_expanded_on_checkout(sbox):
   fp = open(other_url_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$URL: (http|https|file|svn|svn\\+ssh)://",
+          and (re.match(r"\$URL: (http|https|file|svn|svn\+ssh)://",
                         lines[0]))):
     logger.warn("URL expansion failed for %s", other_url_path)
     raise svntest.Failure

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/update_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/update_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/update_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/update_tests.py
 Thu Feb  1 20:04:07 2024
@@ -620,8 +620,8 @@ def update_to_resolve_text_conflicts(sbo
 
   # "Extra" files that we expect to result from the conflicts.
   # These are expressed as list of regexps.  What a cool system!  :-)
-  extra_files = ['mu.*\.r1', 'mu.*\.r2', 'mu.*\.mine',
-                 'rho.*\.r1', 'rho.*\.r2', 'rho.*\.mine', 'rho.*\.prej']
+  extra_files = [r'mu.*\.r1', r'mu.*\.r2', r'mu.*\.mine',
+                 r'rho.*\.r1', r'rho.*\.r2', r'rho.*\.mine', r'rho.*\.prej']
 
   # Do the update and check the results in three ways.
   # All "extra" files are passed to detect_conflict_files().
@@ -2700,10 +2700,10 @@ def update_with_obstructing_additions(sb
     })
 
   # "Extra" files that we expect to result from the conflicts.
-  extra_files = ['eta\.r0', 'eta\.r2', 'eta\.mine',
-                 'kappa\.r0', 'kappa\.r2', 'kappa\.mine',
-                 'epsilon\.r0', 'epsilon\.r2', 'epsilon\.mine',
-                 'kappa.prej', 'zeta.prej', 'dir_conflicts.prej']
+  extra_files = [r'eta\.r0', r'eta\.r2', r'eta\.mine',
+                 r'kappa\.r0', r'kappa\.r2', r'kappa\.mine',
+                 r'epsilon\.r0', r'epsilon\.r2', r'epsilon\.mine',
+                 r'kappa.prej', r'zeta.prej', r'dir_conflicts.prej']
 
   # Perform forced update and check the results in three
   # ways (including props).
@@ -3826,9 +3826,9 @@ def update_accept_conflicts(sbox):
                                              'foo\n'))
 
   # Set the expected extra files for the test
-  extra_files = ['iota.*\.r2', 'iota.*\.r3', 'iota.*\.mine',
-                 'lambda.*\.r2', 'lambda.*\.r3', 'lambda.*\.mine',
-                 'rho.*\.r2', 'rho.*\.r3', 'rho.*\.mine']
+  extra_files = [r'iota.*\.r2', r'iota.*\.r3', r'iota.*\.mine',
+                 r'lambda.*\.r2', r'lambda.*\.r3', r'lambda.*\.mine',
+                 r'rho.*\.r2', r'rho.*\.r3', r'rho.*\.mine']
 
   # Set the expected status for the test
   expected_status = svntest.actions.get_virginal_state(wc_backup, 3)

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/upgrade_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/upgrade_tests.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/upgrade_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/cmdline/upgrade_tests.py
 Thu Feb  1 20:04:07 2024
@@ -51,7 +51,7 @@ Issues = svntest.testcase.Issues_deco
 Issue = svntest.testcase.Issue_deco
 Wimp = svntest.testcase.Wimp_deco
 
-wc_is_too_old_regex = (".*is too old \(format \d+.*\).*")
+wc_is_too_old_regex = (r".*is too old \(format \d+.*\).*")
 
 
 def get_current_format():

Propchange: 
subversion/branches/pristine-checksum-salt/subversion/tests/libsvn_subr/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Feb  1 20:04:07 2024
@@ -29,6 +29,7 @@ string-test
 string-test.tmp
 subst-test
 target-test
+task-test
 time-test
 translate-test
 utf-test

Modified: 
subversion/branches/pristine-checksum-salt/tools/dev/unix-build/Makefile.svn
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/tools/dev/unix-build/Makefile.svn?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/tools/dev/unix-build/Makefile.svn 
(original)
+++ 
subversion/branches/pristine-checksum-salt/tools/dev/unix-build/Makefile.svn 
Thu Feb  1 20:04:07 2024
@@ -20,15 +20,6 @@
 # WARNING: This may or may not work on your system. This Makefile is
 # an example, rather than a ready-made universal solution.
 
-#   ****************************************************************
-#   **       IMPORTANT NOTE FOR SVN COMMITTERS:  READ THIS.       **
-#   **                                                            **
-#   ****************************************************************
-#   | This Makefile is used by the bb-openbsd buildbot             |
-#   | (http://ci.apache.org/builders/bb-openbsd). Please check     |
-#   | the bot's health after making changes to this file.          |
-#   |______________________________________________________________|
-
 PERL ?= yes
 ENABLE_PERL_BINDINGS = $(PERL)
 THREADING ?= yes
@@ -100,7 +91,7 @@ BRANCH_MAJOR := $(shell echo $(BRANCH) |
 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
+PYTHON = python3
 endif
 SVN_REL_WC     = svn-$(WC)
 SVN_WC         = $(PWD)/$(SVN_REL_WC)
@@ -118,8 +109,8 @@ GNU_ICONV_VER       = 1.15
 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
+NEON_VER       = 0.32.5
+SERF_VER       = 1.3.10
 CYRUS_SASL_VER = 2.1.28
 SQLITE_VER     = 3390400
 LIBMAGIC_VER   = 5.30
@@ -157,7 +148,7 @@ SHA256_${APR_ICONV_DIST} = 19381959d50c4
 SHA256_${GNU_ICONV_DIST} = 
ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178
 SHA256_${PCRE_DIST} = 
244838e1f1d14f7e2fa7681b857b3a8566b74215f28133f14a8f5e59241b682c
 SHA256_${HTTPD_DIST} = 
aa97a834a32d51974be8d8a013b561e28d327387cb1da2c3c2762acd0146aabd
-SHA256_${NEON_DIST} = 
db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca
+SHA256_${NEON_DIST} = 
4872e12f802572dedd4b02f870065814b2d5141f7dbdaf708eedab826b51a58a
 SHA256_${CYRUS_SASL_DIST} = 
7ccfc6abd01ed67c1a0924b353e526f1b766b21f42d4562ee635a8ebfc5bb38c
 SHA256_${SQLITE_DIST} = 
f31d445b48e67e284cf206717cc170ab63cbe4fd7f79a82793b772285e78fdbb
 SHA256_${LIBMAGIC_DIST} = 
694c2432e5240187524c9e7cf1ec6acc77b47a0e19554d34c14773e43dbbf214
@@ -178,6 +169,13 @@ if [ -x /bin/sha256 ]; then \
 elif [ -x /usr/bin/sha256sum ]; then \
        (cd $(DISTDIR) && \
                echo "${SHA256_${1}} ${1}" | /usr/bin/sha256sum --quiet 
--check); \
+elif [ -x /sbin/sha256sum ]; then \
+       (cd $(DISTDIR) && \
+               echo "${SHA256_${1}} ${1}" | /sbin/sha256sum --quiet --check 
/dev/stdin); \
+elif [ -x /usr/bin/shasum ]; then \
+        echo "${SHA256_${1}}  ${1}"; \
+        (cd $(DISTDIR) && \
+                echo "${SHA256_${1}}  ${1}" | /usr/bin/shasum -a 256 -c 
/dev/stdin ); \
 else \
        echo "Error: No tool found to verify checksum"; \
        false; \
@@ -210,10 +208,9 @@ 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)
+PCRE_URL       = 
https://downloads.sourceforge.net/project/pcre/pcre/$(PCRE_VER)/$(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)
+NEON_URL       = https://notroj.github.io/neon/$(NEON_DIST)
 SERF_URL       = https://svn.apache.org/repos/asf/serf/tags/$(SERF_VER)
 SQLITE_URL     = https://www.sqlite.org/2022/$(SQLITE_DIST)
 CYRUS_SASL_URL = 
https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-${CYRUS_SASL_VER}/$(CYRUS_SASL_DIST)
@@ -893,6 +890,7 @@ $(NEON_OBJDIR)/.configured: $(NEON_OBJDI
 # compile neon
 $(NEON_OBJDIR)/.compiled: $(NEON_OBJDIR)/.configured
        (cd $(NEON_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS})
+       (cd $(NEON_OBJDIR) && env MAKEFLAGS= make docs)
        touch $@
 
 # install neon
@@ -932,9 +930,7 @@ $(SERF_OBJDIR)/.retrieved:
        [ -d $(SERF_OBJDIR) ] || mkdir -p $(SERF_OBJDIR)
        if [ ! -d $(SERF_SRCDIR) ]; then \
                svn co $(SERF_URL) $(SERF_SRCDIR); \
-               svn merge ^/serf/branches/1.3.x-sslbuild@1781542 
$(SERF_SRCDIR); \
-               svn merge -c 1811083 ^/serf/trunk@1811083 $(SERF_SRCDIR); \
-               svn merge -c 1814604 ^/serf/trunk@1814604 $(SERF_SRCDIR); \
+               svn merge ^/serf/branches/1.3.x-sslbuild@1910116 
$(SERF_SRCDIR); \
        fi
        touch $@
 
@@ -1807,7 +1803,7 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)
        $(SWIG_PL_INCLUDES_HACK)
        $(SWIG_PL_LINK_HACK)
        cd $(svn_builddir) && \
-               env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib 
-L$(PREFIX)/serf/lib $(SERF_LDFLAG) $(LZ4_LDFLAG) -L$(PREFIX)/gettext/lib 
-L$(PREFIX)/iconv/lib" \
+               env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib 
-L$(PREFIX)/serf/lib $(SERF_LDFLAG) -lcrypto -lssl $(LZ4_LDFLAG) 
-L$(PREFIX)/gettext/lib -L$(PREFIX)/iconv/lib" \
                        CC=$(CC) CXX=$(CXX) \
                        CFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \
                        CXXFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" 
\

Modified: subversion/branches/pristine-checksum-salt/tools/dist/README.backport
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/tools/dist/README.backport?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- subversion/branches/pristine-checksum-salt/tools/dist/README.backport 
(original)
+++ subversion/branches/pristine-checksum-salt/tools/dist/README.backport Thu 
Feb  1 20:04:07 2024
@@ -18,9 +18,9 @@ F4. Adding new entries to STATUS.
 The scripts are:
 
 backport.pl:
-    oldest script, implements [F1], [F2], and [F3].  As of Feb 2018, used in
-    production by svn-role (running on svn-qavm) and by 
svn-backport-conflicts-1.9.x
-    (a buildbot job).
+    oldest script, implements [F1], [F2], and [F3].  As of Aug 2023, used in
+    production by svn-role (running on svn-qavm) and by the buildbot jobs
+    svn-backport-conflicts-* (see https://ci2.apache.org/).
 
 nominate.pl:
     Symlink to backport.pl.  Implements [F4].  (The script inspects its 
argv[0].)

Modified: subversion/branches/pristine-checksum-salt/tools/dist/make-keys.sh
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/tools/dist/make-keys.sh?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- subversion/branches/pristine-checksum-salt/tools/dist/make-keys.sh 
(original)
+++ subversion/branches/pristine-checksum-salt/tools/dist/make-keys.sh Thu Feb  
1 20:04:07 2024
@@ -34,7 +34,7 @@ while getopts ":c:o:h" ARG; do
 done
 
 if [ ! -f $COMMITTERS ]; then
-       echo "COMMITTERS file not found."
+       echo "COMMITTERS file not found at ${COMMITTERS}"
        exit 1
 fi
 

Modified: 
subversion/branches/pristine-checksum-salt/tools/dist/release-lines.yaml
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/tools/dist/release-lines.yaml?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- subversion/branches/pristine-checksum-salt/tools/dist/release-lines.yaml 
(original)
+++ subversion/branches/pristine-checksum-salt/tools/dist/release-lines.yaml 
Thu Feb  1 20:04:07 2024
@@ -24,7 +24,7 @@ tool_versions:
 # The version that is our current recommended release
 recommended_release: '1.14'
 # For clean-dist, a whitelist of artifacts to keep, by version.
-supported_release_lines: ['1.10', '1.14']
+supported_release_lines: ['1.14']
 # Long-Term Support (LTS) versions
 lts_release_lines: ['1.10', '1.14']
 

Modified: subversion/branches/pristine-checksum-salt/tools/dist/release.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/tools/dist/release.py?rev=1915519&r1=1915518&r2=1915519&view=diff
==============================================================================
--- subversion/branches/pristine-checksum-salt/tools/dist/release.py (original)
+++ subversion/branches/pristine-checksum-salt/tools/dist/release.py Thu Feb  1 
20:04:07 2024
@@ -896,6 +896,12 @@ def roll_tarballs(args):
                 if dname.startswith('autom4te') and dname.endswith('.cache'):
                     shutil.rmtree(os.path.join(root, dname))
 
+    def clean_pycache():
+        for root, dirs, files in os.walk(exportdir):
+            for dname in dirs:
+                if dname == '__pycache__':
+                    shutil.rmtree(os.path.join(root, dname))
+
     logging.info('Building Windows tarballs')
     export(windows=True)
     os.chdir(exportdir)
@@ -904,6 +910,7 @@ def roll_tarballs(args):
     # line endings and won't run, so use the one in the working copy.
     run_script(args.verbose,
                '%s/tools/po/po-update.sh pot' % get_workdir(args.base_dir))
+    clean_pycache()  # as with clean_autom4te, is this pointless on Windows?
     os.chdir(cwd)
     clean_autom4te() # dist.sh does it but pointless on Windows?
     os.chdir(get_tempdir(args.base_dir))
@@ -919,6 +926,7 @@ def roll_tarballs(args):
                '''tools/po/po-update.sh pot
                   ./autogen.sh --release''',
                hide_stderr=True) # SWIG is noisy
+    clean_pycache()  # without this, tarballs contain empty __pycache__ dirs
     os.chdir(cwd)
     clean_autom4te() # dist.sh does it but probably pointless
 
@@ -983,7 +991,7 @@ def roll_tarballs(args):
         # complete wc, not a shallow wc as indicated in HACKING as one option.
         # We /could/ download COMMITTERS from /trunk if it doesn't exist...
         subprocess.check_call([os.path.dirname(__file__) + '/make-keys.sh',
-                               '-c', os.path.dirname(__file__) + '/../..',
+                               '-c', os.path.dirname(__file__) + 
'/../../COMMITTERS',
                                '-o', filepath])
         shutil.move(filepath, get_target(args))
 
@@ -1567,7 +1575,7 @@ def write_changelog(args):
     mergeinfo = mergeinfo.splitlines()
 
     separator_pattern = re.compile('^-{72}$')
-    revline_pattern = re.compile('^r(\d+) \| [^\|]+ \| [^\|]+ \| \d+ lines?$')
+    revline_pattern = re.compile(r'^r(\d+) \| [^|]+ \| [^|]+ \| \d+ lines?$')
     changes_prefix_pattern = re.compile(r'^\[(U|D)?:?([^\]]+)?\](.+)$')
     changes_suffix_pattern = re.compile(r'^(.+)\[(U|D)?:?([^\]]+)?\]$')
     # TODO: push this into backport.status as a library function


Reply via email to