diff options
author | Stephen Finucane <sfinucan@redhat.com> | 2017-06-15 16:26:49 +0100 |
---|---|---|
committer | Stephen Finucane <stephenfin@redhat.com> | 2017-10-18 09:16:25 +0000 |
commit | 3a6b96c799de732364d414d63d05b10305c9c5ba (patch) | |
tree | 663b12d2bcddbbf26e03e3b37b198f7fc3f2ac56 | |
parent | 3c059cb701e55c7c550f2bbe9626c9c063b0d77e (diff) | |
download | pbr-3a6b96c799de732364d414d63d05b10305c9c5ba.tar.gz |
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
-rw-r--r-- | pbr/packaging.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/pbr/packaging.py b/pbr/packaging.py index 913e7a3..e4866ea 100644 --- a/pbr/packaging.py +++ b/pbr/packaging.py @@ -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 |