annotate roundup/dist/command/bdist_rpm.py @ 7968:d7e79f8eb943

issue2551350 - Python changes for 3.12 with roundup 2.3.0 mailer.py Fix due to change in smtplib.SMTP.starttls() signature. As of 3.3 it can use an optional ssl context argument for certificates/keys. In 3.12 it dropped legacy support for specifing cert/key files as arguments and requires a context. I modified Andrew's original patch to initialize SSLContext with ssl.PROTOCOL_TLS_CLIENT. If there is a cert file specified, enable check_hostname - verify that the cert supplied by the server matches the hostname we supplied. If there is no cert file call load_default_certs() Also opened issue2551351 to look into more SMTP ssmtp tightening. We also should have an option in Roundup to use TLS/SSL (smtps) without using starttls. Note that this code is untested by the test suite due to the need to setup an SMTP server with STARTTLS support. issue2551351 has some notes on this.
author John Rouillard <rouilj@ieee.org>
date Wed, 15 May 2024 00:08:05 -0400
parents 551fec9c4cfc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
1 #
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
2 # Copyright (C) 2009 Stefan Seefeld
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
3 # All rights reserved.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
4 # For license terms see the file COPYING.txt.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
5 #
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
6 # converted to not use distutils 2021
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
7 from setuptools.command.bdist_rpm import bdist_rpm as base
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
8 import os
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
9
6907
551fec9c4cfc flake8 fixes
John Rouillard <rouilj@ieee.org>
parents: 6647
diff changeset
10
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
11 # cribbed from 2.7 distutils
6907
551fec9c4cfc flake8 fixes
John Rouillard <rouilj@ieee.org>
parents: 6647
diff changeset
12 def write_file(filename, contents):
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
13 """Create a file with the specified name and write 'contents' (a
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
14 sequence of strings without line terminators) to it.
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
15 """
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
16 f = open(filename, "w")
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
17 try:
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
18 for line in contents:
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
19 f.write(line + "\n")
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
20 finally:
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
21 f.close()
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 4068
diff changeset
22
6907
551fec9c4cfc flake8 fixes
John Rouillard <rouilj@ieee.org>
parents: 6647
diff changeset
23
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
24 class bdist_rpm(base):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
25
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
26 def finalize_options(self):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
27 base.finalize_options(self)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
28 if self.install_script:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
29 # install script is overridden. skip default
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
30 return
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
31 # install script option must be file name.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
32 # create the file in rpm build directory.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
33 install_script = os.path.join(self.rpm_base, "install.sh")
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
34 self.mkpath(self.rpm_base)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
35 self.execute(write_file, (install_script, [
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
36 ("%s setup.py install --root=$RPM_BUILD_ROOT "
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
37 "--record=ROUNDUP_FILES") % self.python,
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
38 # allow any additional extension for man pages
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
39 # (rpm may compress them to .gz or .bz2)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
40 # man page here is any file
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
41 # with single-character extension
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
42 # in man directory
6907
551fec9c4cfc flake8 fixes
John Rouillard <rouilj@ieee.org>
parents: 6647
diff changeset
43 r"sed -e 's,\(/man/.*\..\)$,\\1*,' "
551fec9c4cfc flake8 fixes
John Rouillard <rouilj@ieee.org>
parents: 6647
diff changeset
44 "<ROUNDUP_FILES >INSTALLED_FILES",
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
45 ]), "writing '%s'" % install_script)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
46 self.install_script = install_script

Roundup Issue Tracker: http://roundup-tracker.org/