Commit d8d6b912 authored by Caleb Hattingh's avatar Caleb Hattingh Committed by Zachary Ware

bpo-30487: automatically create a venv and install Sphinx when running make (GH-4346)

parent a6fba9b8
...@@ -36,7 +36,7 @@ matrix: ...@@ -36,7 +36,7 @@ matrix:
# (Updating the version is fine as long as no warnings are raised by doing so.) # (Updating the version is fine as long as no warnings are raised by doing so.)
- python -m pip install sphinx~=1.6.1 blurb - python -m pip install sphinx~=1.6.1 blurb
script: script:
- make check suspicious html SPHINXOPTS="-q -W -j4" - make check suspicious html SPHINXBUILD="sphinx-build" SPHINXOPTS="-q -W -j4"
- os: linux - os: linux
language: c language: c
compiler: gcc compiler: gcc
......
...@@ -17,7 +17,7 @@ ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees -D latex_elements.papersize=$(PA ...@@ -17,7 +17,7 @@ ALLSPHINXOPTS = -b $(BUILDER) -d build/doctrees -D latex_elements.papersize=$(PA
.PHONY: help build html htmlhelp latex text changes linkcheck \ .PHONY: help build html htmlhelp latex text changes linkcheck \
suspicious coverage doctest pydoc-topics htmlview clean dist check serve \ suspicious coverage doctest pydoc-topics htmlview clean dist check serve \
autobuild-dev autobuild-stable venv autobuild-dev autobuild-stable
help: help:
@echo "Please use \`make <target>' where <target> is one of" @echo "Please use \`make <target>' where <target> is one of"
...@@ -39,7 +39,7 @@ help: ...@@ -39,7 +39,7 @@ help:
@echo " check to run a check for frequent markup errors" @echo " check to run a check for frequent markup errors"
@echo " serve to serve the documentation on the localhost (8000)" @echo " serve to serve the documentation on the localhost (8000)"
build: build: venv
-mkdir -p build -mkdir -p build
# Look first for a Misc/NEWS file (building from a source release tarball # Look first for a Misc/NEWS file (building from a source release tarball
# or old repo) and use that, otherwise look for a Misc/NEWS.d directory # or old repo) and use that, otherwise look for a Misc/NEWS.d directory
...@@ -122,9 +122,11 @@ clean: ...@@ -122,9 +122,11 @@ clean:
-rm -rf build/* $(VENVDIR)/* -rm -rf build/* $(VENVDIR)/*
venv: venv:
$(PYTHON) -m venv $(VENVDIR) @if [ "$(SPHINXBUILD)" == "PATH=$(VENVDIR)/bin:$$PATH sphinx-build" ]; then \
$(VENVDIR)/bin/python3 -m pip install -U Sphinx blurb $(PYTHON) -m venv $(VENVDIR); \
@echo "The venv has been created in the $(VENVDIR) directory" echo "A virtual environment for Docs has been made in the $(VENVDIR) directory"; \
$(VENVDIR)/bin/python3 -m pip install Sphinx blurb; \
fi
dist: dist:
rm -rf dist rm -rf dist
......
...@@ -21,21 +21,16 @@ tree but are maintained separately and are available from ...@@ -21,21 +21,16 @@ tree but are maintained separately and are available from
* `Sphinx <https://pypi.org/project/Sphinx/>`_ * `Sphinx <https://pypi.org/project/Sphinx/>`_
* `blurb <https://pypi.org/project/blurb/>`_ * `blurb <https://pypi.org/project/blurb/>`_
The easiest way to install these tools is to create a virtual environment and You could manually create a virtual environment and install them, but there is
install the tools into there. a ``Makefile`` already set up to do this for you, as long as you have a working
Python 3 interpreter available.
Using make Using make
---------- ----------
To get started on UNIX, you can create a virtual environment with the command :: A Makefile has been prepared so that (on Unix), after you change into the
``Doc/`` directory you can simply run ::
make venv
That will install all the tools necessary to build the documentation. Assuming
the virtual environment was created in the ``env`` directory (the default;
configurable with the VENVDIR variable), you can run the following command to
build the HTML output files::
make html make html
...@@ -44,8 +39,17 @@ look for instances of sphinxbuild and blurb installed on your process PATH ...@@ -44,8 +39,17 @@ look for instances of sphinxbuild and blurb installed on your process PATH
(configurable with the SPHINXBUILD and BLURB variables). (configurable with the SPHINXBUILD and BLURB variables).
On Windows, we try to emulate the Makefile as closely as possible with a On Windows, we try to emulate the Makefile as closely as possible with a
``make.bat`` file. If you need to specify the Python interpreter to use, ``make.bat`` file.
set the PYTHON environment variable instead.
To use a Python interpreter that's not called ``python3``, use the standard
way to set Makefile variables, using e.g. ::
make html PYTHON=python
On Windows, set the PYTHON environment variable instead.
To use a specific sphinx-build (something other than ``sphinx-build``), set
the SPHINXBUILD variable.
Available make targets are: Available make targets are:
...@@ -104,11 +108,14 @@ Available make targets are: ...@@ -104,11 +108,14 @@ Available make targets are:
Without make Without make
------------ ------------
First, install the tool dependencies from PyPI. Install the Sphinx package and its dependencies from PyPI. In this situation,
you'll have to create a virtual environment manually, and install Sphinx into
Then, from the ``Doc`` directory, run :: it. Change into the ``Doc`` directory and run ::
sphinx-build -b<builder> . build/<builder> $ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install Sphinx
(venv) $ sphinx-build -b<builder> . build/<builder>
where ``<builder>`` is one of html, text, latex, or htmlhelp (for explanations where ``<builder>`` is one of html, text, latex, or htmlhelp (for explanations
see the make targets above). see the make targets above).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment