| .. | .. |
|---|
| 3 | 3 | |
|---|
| 4 | 4 | import os |
|---|
| 5 | 5 | import sys |
|---|
| 6 | | -from sphinx.util.pycompat import execfile_ |
|---|
| 6 | +from sphinx.util.osutil import fs_encoding |
|---|
| 7 | 7 | |
|---|
| 8 | 8 | # ------------------------------------------------------------------------------ |
|---|
| 9 | 9 | def loadConfig(namespace): |
|---|
| .. | .. |
|---|
| 21 | 21 | and os.path.normpath(namespace["__file__"]) != os.path.normpath(config_file) ): |
|---|
| 22 | 22 | config_file = os.path.abspath(config_file) |
|---|
| 23 | 23 | |
|---|
| 24 | + # Let's avoid one conf.py file just due to latex_documents |
|---|
| 25 | + start = config_file.find('Documentation/') |
|---|
| 26 | + if start >= 0: |
|---|
| 27 | + start = config_file.find('/', start + 1) |
|---|
| 28 | + |
|---|
| 29 | + end = config_file.rfind('/') |
|---|
| 30 | + if start >= 0 and end > 0: |
|---|
| 31 | + dir = config_file[start + 1:end] |
|---|
| 32 | + |
|---|
| 33 | + print("source directory: %s" % dir) |
|---|
| 34 | + new_latex_docs = [] |
|---|
| 35 | + latex_documents = namespace['latex_documents'] |
|---|
| 36 | + |
|---|
| 37 | + for l in latex_documents: |
|---|
| 38 | + if l[0].find(dir + '/') == 0: |
|---|
| 39 | + has = True |
|---|
| 40 | + fn = l[0][len(dir) + 1:] |
|---|
| 41 | + new_latex_docs.append((fn, l[1], l[2], l[3], l[4])) |
|---|
| 42 | + break |
|---|
| 43 | + |
|---|
| 44 | + namespace['latex_documents'] = new_latex_docs |
|---|
| 45 | + |
|---|
| 46 | + # If there is an extra conf.py file, load it |
|---|
| 24 | 47 | if os.path.isfile(config_file): |
|---|
| 25 | 48 | sys.stdout.write("load additional sphinx-config: %s\n" % config_file) |
|---|
| 26 | 49 | config = namespace.copy() |
|---|
| 27 | 50 | config['__file__'] = config_file |
|---|
| 28 | | - execfile_(config_file, config) |
|---|
| 51 | + with open(config_file, 'rb') as f: |
|---|
| 52 | + code = compile(f.read(), fs_encoding, 'exec') |
|---|
| 53 | + exec(code, config) |
|---|
| 29 | 54 | del config['__file__'] |
|---|
| 30 | 55 | namespace.update(config) |
|---|
| 31 | 56 | else: |
|---|
| 32 | | - sys.stderr.write("WARNING: additional sphinx-config not found: %s\n" % config_file) |
|---|
| 57 | + config = namespace.copy() |
|---|
| 58 | + config['tags'].add("subproject") |
|---|
| 59 | + namespace.update(config) |
|---|