summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Bridon <bochecha@daitauha.fr>2018-08-04 17:19:19 +0200
committerMathieu Bridon <bochecha@daitauha.fr>2018-08-04 23:02:10 +0200
commitf69a02874e482723061f7a5d125ae4384fec4cc9 (patch)
tree8a9a0ea4c7363e5871ef5c068be4d84dc9d67d66
parentf918205a2a91beb49ebdcf593b233892c9ebe63c (diff)
downloadbuildstream-bochecha/build-docs.tar.gz
doc: Build the docs without Buildstream installedbochecha/build-docs
-rw-r--r--.gitlab-ci.yml1
-rw-r--r--doc/Makefile8
-rwxr-xr-xdoc/bst2html.py28
3 files changed, 29 insertions, 8 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ff885997d..93fbea779 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -143,7 +143,6 @@ docs:
- pip3 install sphinx-click
- pip3 install sphinx_rtd_theme
- cd dist && ./unpack.sh && cd buildstream
- - pip3 install .
- make BST_FORCE_SESSION_REBUILD=1 -C doc
- cd ../..
- mv dist/buildstream/doc/build/html public
diff --git a/doc/Makefile b/doc/Makefile
index 9a5e98754..66d2f0d21 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -31,6 +31,9 @@ ifneq ($(strip $(BST_FORCE_SESSION_REBUILD)),)
BST2HTMLOPTS = --force
endif
+# Help Python find buildstream and its plugins
+PYTHONPATH=$(CURDIR)/..:$(CURDIR)/../buildstream/plugins
+
.PHONY: all clean templates templates-clean sessions sessions-prep sessions-clean html devhelp
@@ -65,7 +68,6 @@ define plugin-doc-skeleton
endef
-# We set PYTHONPATH here because source/conf.py sys.modules hacks dont seem to help sphinx-build import the plugins
all: html devhelp
clean: templates-clean sessions-clean
@@ -103,7 +105,7 @@ sessions-prep:
#
sessions: sessions-prep
for file in $(wildcard sessions/*.run); do \
- $(BST2HTML) $(BST2HTMLOPTS) --description $$file; \
+ PYTHONPATH=$(PYTHONPATH) $(BST2HTML) $(BST2HTMLOPTS) --description $$file; \
done
sessions-clean:
@@ -114,7 +116,7 @@ sessions-clean:
#
html devhelp: templates sessions
@echo "Building $@..."
- PYTHONPATH=$(CURDIR)/../buildstream/plugins \
+ PYTHONPATH=$(PYTHONPATH) \
$(SPHINXBUILD) -b $@ $(ALLSPHINXOPTS) "$(BUILDDIR)/$@" \
$(wildcard source/*.rst) \
$(wildcard source/tutorial/*.rst) \
diff --git a/doc/bst2html.py b/doc/bst2html.py
index c9e98bb36..d87085f54 100755
--- a/doc/bst2html.py
+++ b/doc/bst2html.py
@@ -37,6 +37,7 @@ import click
from buildstream import _yaml
from buildstream import utils
+from buildstream._frontend import cli as bst_cli
from buildstream._exceptions import BstError
@@ -175,6 +176,20 @@ def ansi2html(text, palette='solarized'):
return sub
+@contextmanager
+def capture_stdout_stderr():
+ from io import StringIO
+
+ capture = StringIO()
+ oldstdout, sys.stdout = sys.stdout, capture
+ oldstderr, sys.stderr = sys.stderr, capture
+
+ yield capture
+
+ sys.stdout = oldstdout
+ sys.stderr = oldstderr
+
+
# workdir()
#
# Sets up a new temp directory with a config file
@@ -219,10 +234,15 @@ def workdir(source_cache=None):
def run_command(config_file, directory, command):
click.echo("Running command in directory '{}': bst {}".format(directory, command), err=True)
- argv = ['bst', '--colors', '--config', config_file] + shlex.split(command)
- p = subprocess.Popen(argv, cwd=directory, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- out, _ = p.communicate()
- return out.decode('utf-8').strip()
+ args = ['--colors', '--config', config_file, '--directory', directory] + shlex.split(command)
+
+ with capture_stdout_stderr() as capture:
+ bst_cli.main(args=args, prog_name=bst_cli.name)
+
+ capture.flush()
+ out = capture.getvalue()
+
+ return out.strip()
# generate_html