Use 'build_reno' setuptools extension if available

reno recently gained a 'build_reno' command that could be used to build
a reno cache file via setuptools. Integrate this and start including
that file as part of the final distribution.

Change-Id: I54cb7a894770040165cc918469cb0ed486518789
This commit is contained in:
Stephen Finucane 2017-06-15 16:26:49 +01:00 committed by Stephen Finucane
parent 3c059cb701
commit 3a6b96c799
1 changed files with 46 additions and 0 deletions

View File

@ -532,11 +532,57 @@ class LocalSDist(sdist.sdist):
command_name = 'sdist'
def checking_reno(self):
"""Ensure reno is installed and configured.
We can't run reno-based commands if reno isn't installed/available, and
don't want to if the user isn't using it.
"""
if hasattr(self, '_has_reno'):
return self._has_reno
try:
# versions of reno witout this module will not have the required
# feature, hence the import
from reno import setup_command # noqa
except ImportError:
log.info('[pbr] reno was not found or is too old. Skipping '
'release notes')
self._has_reno = False
return False
conf, output_file, cache_file = setup_command.load_config(
self.distribution)
if not os.path.exists(os.path.join(conf.reporoot, conf.notespath)):
log.info('[pbr] reno does not appear to be configured. Skipping '
'release notes')
self._has_reno = False
return False
self._files = [output_file, cache_file]
log.info('[pbr] Generating release notes')
self._has_reno = True
return True
sub_commands = [('build_reno', checking_reno)] + sdist.sdist.sub_commands
def run(self):
_from_git(self.distribution)
# sdist.sdist is an old style class, can't use super()
sdist.sdist.run(self)
def make_distribution(self):
# This is included in make_distribution because setuptools doesn't use
# 'get_file_list'. As such, this is the only hook point that runs after
# the commands in 'sub_commands'
if self.checking_reno():
self.filelist.extend(self._files)
self.filelist.sort()
sdist.sdist.make_distribution(self)
try:
from pbr import builddoc
_have_sphinx = True