annotate roundup/dist/command/build_doc.py @ 4810:7b575e1f7368

setup.py build_doc: try Python-installed Sphinx if command line tool is not found
author anatoly techtonik <techtonik@gmail.com>
date Sun, 25 Aug 2013 08:45:27 +0300
parents bca7c59ac400
children 7612b86bec69
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4033
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
1 #
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
2 # Copyright (C) 2009 Stefan Seefeld
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
3 # All rights reserved.
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
4 # For license terms see the file COPYING.txt.
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
5 #
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
6
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
7 import os, sys
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
8 from stat import *
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
9 import os.path
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
10 from shutil import *
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
11 import glob
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
12
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
13 from distutils.command import build
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
14 from distutils.spawn import spawn, find_executable
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
15 from distutils.dep_util import newer, newer_group
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
16 from distutils.dir_util import copy_tree, remove_tree, mkpath
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
17 from distutils.file_util import copy_file
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
18 from distutils import sysconfig
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
19
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
20 class build_doc(build.build):
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
21 """Defines the specific procedure to build roundup's documentation."""
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
22
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
23 description = "build documentation"
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
24
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
25 def run(self):
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
26 """Run this command, i.e. do the actual document generation."""
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
27
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
28 sphinx = find_executable('sphinx-build')
4810
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
29 if sphinx:
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
30 sphinx = [sphinx]
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
31 else:
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
32 try: # try to find version installed with Python tools
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
33 # tested with Sphinx 1.1.3
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
34 import sphinx as sp
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
35 except ImportError:
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
36 pass
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
37 else:
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
38 sphinx = [sys.executable, sp.__file__]
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
39
4033
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
40 if not sphinx:
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
41 self.warn("could not find sphinx-build in PATH")
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
42 self.warn("cannot build documentation")
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
43 return
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
44
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
45 doc_dir = os.path.join('share', 'doc', 'roundup', 'html')
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
46 temp_dir = os.path.join(self.build_temp, 'doc')
4810
7b575e1f7368 setup.py build_doc: try Python-installed Sphinx if command
anatoly techtonik <techtonik@gmail.com>
parents: 4033
diff changeset
47 cmd = sphinx + ['-d', temp_dir, 'doc', doc_dir]
4033
bca7c59ac400 Enhance documentation generation.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
48 spawn(cmd)

Roundup Issue Tracker: http://roundup-tracker.org/