Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1875122 is being indexed.

* tools/dev/unix-build/Makefile.svn: Add patch for Ruby which will hopefully

fix the bus errors we have been seeing on the svn-bb-openbsd buildbot.

I haven't yet confirmed that this really fixes the issue but since the

crash happens sporadically there is only one way to find out.

I have also found out that OpenBSD's port of Ruby disables the crashing

code path on sparc64. Which is a bandaid, not a real fix since the problem

could affect other platforms as well.

Follow-up to r1875103:

* tools/buildbot/slaves/bb-openbsd/svnclean.sh: Also run 'svn cleanup' on the

main working copy used by the buildbot. Apparently, buildbot won't handle

this step for us.

* tools/buildbot/slaves/bb-openbsd/svnclean.sh: Run 'svn cleanup' on the

unix-build working copy. Required to resume building after svn crashed.

Fix handling for non-ascii characters on internal path and stderr

* tools/hook-scripts/validate-files.py

(docstring): Add note to handle non-ascii path and/or stderr output.

(Commands.svnlook_changed):

+ Decode changed paths as 'utf-8' explicitly on Python 3 and leave them as

('utf-8' encoded) bytes in Python 2.7

+ Decode stderr out message from svnlook as sys.stderr.encoding

(Commands.user_command): Decode stderr out message from user commands as

sys.stderr.encoding

Use configparser.ConfigParser instead of configparser.SafeConfigParser in py3

On Python 3.2, configparser.Configparser implementation is replaced by one it

was configparser.SafeConfigParser before 3.2, and SafeConfigParser class is

only an alias for compatibility on Python >= 3.2. So we use

ConfigParser.SafeConfigParser in Python 2.7 and configparser.ConfigParser in

Python 3 for the base class of our Config class.

* tools/hook-scripts/validate-files.py

(ConfigParser): New valiable to absorb difference of package and class name

(class Config): Use ConfigParser as base class

Follow up to 1872398: Use 0 for default smtp_port instead of smtplib.SMTP_PORT

* tools/hook-scripts/mailer/mailer.py (SMTPOutput.finish):

Use 0 instead of smtplib.SMTP_PORT if general.smtp_port is unspecified.

* tools/hook-scripts/mailer/mailer.conf.example ([general]):

Add comment for smtp_port, it is use 465 for SMTP-over-SSL to connect.

Found by: danielsh

Add new option smtp_port to specifiy the port to connect

* tools/hook-scripts/mailer/mailer.py (SMTPOutput.finish):

Specify the port number to connect for SMTP/SMTP_SSL explicitly, by new option

general.smtp_port.

* tools/hook-scripts/mailer/mailer.conf.example ([genral]):

New option 'smtp_port'

* tools/dev/unix-build/Makefile.svn: Pass THREADED to svn's Makefile

causing svnserveautocheck.sh to invoke svnserve with -T for threaded

mode. See dev@ email thread "Makefile.svn: a dumb question" started

by me on 2019/12/24, archived at:

https://lists.apache.org/thread.html/87a4facdf92d1e260a1b9cdfdc0a266dcfaa3ee071dcdcae5f34eacd%40%3Cdev.subversion.apache.org%3E

Patch by: danielsh

* tools/dev/unix-build/README: Fix one typo.

* tools/dev/unix-build/Makefile.svn: Switch to Python 3

Follow-up to r1871347:

* tools/examples/walk-config-auth.py: Don't try to '' as a basename.

No functional change, but the new code is more idiomatic.

contribulyze.py: Support Python 3 in addition to Python 2.

Explicitly specify how to sort lists of Contributor and lists of LogMessage.

In Python 2 instances of those classes are comparable to each other by way of

the __cmp__ member function, but Python 3 does not support that member

function.

An alternative would have been to implement __lt__ and use

functools.total_ordering.

* tools/dev/contribulyze.py

(functools): Import.

(Contributor.sort_key): New member function.

(LogMessage.sort_key): New member function.

(Contributor.html_out, drop): Specify sorting order.

* tools/dist/backport.pl: Continue chasing the experimental nature of 'given'

and 'when', through perl5300delta.

Follow up to r1870561: Eliminate loop invariant conditional branch.

* tools/server-side/svn-backup-dumps.py (SvnBackup.exec_cmd_unix)

Follow up to r1870204,r1870217,r1870266: Reduce work to communicate to child

* tools/server-side/svn-backup-dumps.py (SvnBackup.exec_cmd_unix):

- Use Popen.communicate if output is None.

- Pass stdout of the parent to the child process as stderr directly if

printerr is True, to avoid extra encode/decode on py3 and buffering.

Suggested by: Jun Omae <jun66j5_{AT}_gmail.com>

Follow up to r1870217: Fix typo s/backslashrreplace/backslashreplace/

* tools/server-side/svn-backup-dumps.py (SvnBackup.exec_cmd_unix)

Found by: danielsh

Follow up to r1870204: Fix encoding to decode bytes data from stderr

* tools/server-side/svn-backup-dumps.py (SvnBackup.exec_cmd_unix):

- Decoding the data from 'svnadmin dump' as 'utf-8' causes crash when

LC_CTYPE is not 'utf-8'. So we use sys.stdout.encoding which is set

by environment instead.

Suggested by: Jun Omae <jun66j5_{AT}_gmail.com>

- remove white space after printing each stderr output

Make svn-backup-dump.py work on Python 3

* tools/server-side/svn-backup-dumps.py

(SvnBackup.exec_cmd_unix, SvnBackup.exec_cmd_nt):

Fix the type of data read from stdout and stderr, to bytes

* tools/dist/release.py: Use yaml.safe_load.

Suggested by: danielsh

Move release-lines metadata out of 'release.py' into a separate YAML file.

* tools/dist/release-lines.yaml

New.

* tools/dist/release.py

(tool_versions,

recommended_release,

supported_release_lines,

lts_release_lines): Read from 'release-lines.yaml'.

* tools/dist/release.py (recommended_release): Remove TODO: didn't make sense.
Release notes templates: Stop claiming the book will be updated.
mailer.py: Fix breakage on Python 2 from use of Python 3 syntax

Follow-up on r1869194. That revision addresses issue SVN-1804 by

adding exception handling for SMTP errors. Unfortunately a last-minute

change in that revision uses Python 3+ 'raise..from' syntax. The

script does not yet support Python 3 so this breaks the script for all

Python versions!

* tools/hook-scripts/mailer/mailer.py

(SMTPOutput.finish): Comment out the two instances of 'from detail'

that break the script, but add a 'TODO' note to uncomment them

when converting the script to Python 3.

Suggested by: futatuki

danielsh

mailer.py: Handle otherwise uncaught exception in SMTPOutput.finish

Follow-up on r1869194. That revision addresses issue SVN-1804 by

adding exception handling for SMTP errors, but does not handle a

potential source of exceptions when closing a SMTP session.

* tools/hook-scripts/mailer/mailer.py

(SMTPOutput.finish): Handle exception that may be raised by

server.quit.

Found by: futatuki

Review by: futatuki

* tools/dist/templates/release-notes.ezt

(#non-lts-release): Trim unnecessary old notes, as in r1869167. Link

to existing info.

Let 'release.py write-release-notes' update the release notes index and

distinguish between LTS and non-LTS release notes.

* tools/dist/release.py

(lts_release_lines, is_lts): New.

(write_release_notes): Choose LTS or non-LTS template. Add an index entry.

(main): Document it.

* tools/dist/templates/release-notes-lts.ezt

New file.

    • ?
    ./dist/templates/release-notes-lts.ezt
Fix issue #1804: In mailer.py, any SMTP error impedes later emails

Per SVN-1804, any SMTP error terminates mailer.py with an unhandled

exception. The impact is that if the same invocation of mailer.py

would have sent more emails, those that would have been sent after

the exception are silently lost.

To fix this issue, we handle SMTP exceptions. When an exception only

affects a particular email, such as invalid recipient, the error is

reported to stderr and execution continues to avoid losing any later

emails. In contrast, fatal SMTP errors, such as login with bad

credentials, terminate execution as before, but with some additional

reporting to stderr.

The script's exit code is zero if all emails were sent successfully,

nonzero if any SMTP error occurred.

* tools/hook-scripts/mailer/mailer.py

(MessageSendFailure): New exception class to signify non-fatal

message sending failure. This is decoupled from SMTP to allow for

future use with other (non-SMTP) delivery methods.

(SMTPOutput.finish): Reimplement with exception handling and

reporting to stderr.

(Commit.generate, PropChange.generate, Lock.generate): Wrap contents

of for-loop in try..except block to handle new MessageSendFailure;

after the loop runs to completion, return nonzero if SMTP error(s)

occurred.

(main): Propagate return value of messenger.generate() to caller.

(__main__): Exit nonzero if SMTP error(s) occurred.

Found by: Robert M. Zigweid

Review by: danielsh (partial review)

futatuki

release.py: remove 1.12 from supported release lines.
release.py: revert changing interpreter to 'python3' from r1869158.
release.py: some Python 3 fixes.