summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfredo Moralejo <amoralej@redhat.com>2017-03-22 04:56:56 -0400
committerAlfredo Moralejo <amoralej@redhat.com>2017-03-27 08:46:47 +0000
commit2d7c0045f402b31d6223437ba25423eeb32278e1 (patch)
tree9e2db6273416cb3879d8dfa243a07a017cee7e1f
parent6448d036f7ae7e336708f00b8d55d8cfb6c8c942 (diff)
downloadpbr-2d7c0045f402b31d6223437ba25423eeb32278e1.tar.gz
Initialize sphinx config using application instead of config
Currently sphinx config is initialized using sphinx.config, however in recent versions of Sphinx, plugin specific parameters as man_pages for man builder has been moved to the extension and is not initialized from sphinx.config but using sphinx.application. This is making man_pages to be empty when using sphinx 1.5 and man builder is not properly called. This patch initializes sphinx config using sphinx.application which works fine with both old and new Sphinx versions. Closes-Bug: #1674795 Depends-On: I7bde8fc1f2a7db5bd73635aa197377bf5ac614d2 Change-Id: Ib7c1a6fe8fbb5acfcfcfac61d0b53f080ff2b1e4
-rw-r--r--pbr/builddoc.py17
-rw-r--r--pbr/tests/test_setup.py6
2 files changed, 9 insertions, 14 deletions
diff --git a/pbr/builddoc.py b/pbr/builddoc.py
index f51b283..4f05673 100644
--- a/pbr/builddoc.py
+++ b/pbr/builddoc.py
@@ -17,9 +17,7 @@
from distutils import log
import fnmatch
import os
-import pkg_resources
import sys
-import warnings
try:
import cStringIO
@@ -29,7 +27,6 @@ except ImportError:
try:
from sphinx import apidoc
from sphinx import application
- from sphinx import config
from sphinx import setup_command
except Exception as e:
# NOTE(dhellmann): During the installation of docutils, setuptools
@@ -134,16 +131,6 @@ class LocalBuildDoc(setup_command.BuildDoc):
confoverrides['release'] = self.release
if self.today:
confoverrides['today'] = self.today
- sphinx_config = config.Config(self.config_dir, 'conf.py', {}, [])
- sphinx_ver = pkg_resources.parse_version(
- pkg_resources.get_distribution("sphinx").version)
- if sphinx_ver > pkg_resources.parse_version('1.2.3'):
- sphinx_config.init_values(warnings.warn)
- else:
- sphinx_config.init_values()
- if self.builder == 'man' and len(
- getattr(sphinx_config, 'man_pages', '')) == 0:
- return
if self.sphinx_initialized:
confoverrides['suppress_warnings'] = [
'app.add_directive', 'app.add_role',
@@ -153,6 +140,10 @@ class LocalBuildDoc(setup_command.BuildDoc):
self.builder_target_dir, self.doctree_dir,
self.builder, confoverrides, status_stream,
freshenv=self.fresh_env, warningiserror=self.warning_is_error)
+ sphinx_config = app.config
+ if self.builder == 'man' and len(
+ getattr(sphinx_config, 'man_pages', '')) == 0:
+ return
self.sphinx_initialized = True
try:
diff --git a/pbr/tests/test_setup.py b/pbr/tests/test_setup.py
index 0754a8d..0930e35 100644
--- a/pbr/tests/test_setup.py
+++ b/pbr/tests/test_setup.py
@@ -224,6 +224,10 @@ class GitLogsTest(base.BaseTestCase):
self.assertTrue(co_author in authors)
+class _SphinxConfig(object):
+ man_pages = ['foo']
+
+
class BaseSphinxTest(base.BaseTestCase):
def setUp(self):
@@ -234,7 +238,7 @@ class BaseSphinxTest(base.BaseTestCase):
self.useFixture(fixtures.MonkeyPatch(
"sphinx.application.Sphinx.build", lambda *a, **kw: None))
self.useFixture(fixtures.MonkeyPatch(
- "sphinx.config.Config.man_pages", ['foo']))
+ "sphinx.application.Sphinx.config", _SphinxConfig))
self.useFixture(fixtures.MonkeyPatch(
"sphinx.config.Config.init_values", lambda *a: None))
self.useFixture(fixtures.MonkeyPatch(