summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/SCons/Tool/docbook/__init__.py27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/engine/SCons/Tool/docbook/__init__.py b/src/engine/SCons/Tool/docbook/__init__.py
index d14d60b..72ea175 100644
--- a/src/engine/SCons/Tool/docbook/__init__.py
+++ b/src/engine/SCons/Tool/docbook/__init__.py
@@ -501,20 +501,29 @@ def DocbookEpub(env, target, source=None, *args, **kw):
# Create targets
result = []
- tlist = ['OEBPS/toc.ncx', 'META-INF/container.xml']
- dirs = [SCons.Script.Dir('OEBPS'), SCons.Script.Dir('META-INF')]
- r = __builder.__call__(env, tlist, source[0], **kw)
+ if not env.GetOption('clean'):
+ # Ensure that the folders OEBPS and META-INF exist
+ __create_output_dir('OEBPS/')
+ __create_output_dir('META-INF/')
+ dirs = env.Dir(['OEBPS', 'META-INF'])
- env.Depends(r, kw['DOCBOOK_XSL'])
- result.extend(r)
+ # Set the fixed base_dir
+ kw['base_dir'] = 'OEBPS/'
+ tocncx = __builder.__call__(env, 'toc.ncx', source[0], **kw)
+ cxml = env.File('META-INF/container.xml')
+ env.SideEffect(cxml, tocncx)
+
+ env.Depends(tocncx, kw['DOCBOOK_XSL'])
+ result.extend(tocncx+[cxml])
container = env.Command(__ensure_suffix(str(target[0]), '.epub'),
- tlist, [add_resources, build_open_container])
-
- env.Depends(container, r)
+ tocncx+[cxml], [add_resources, build_open_container])
+ mimetype = env.File('mimetype')
+ env.SideEffect(mimetype, container)
+
result.extend(container)
# Add supporting files for cleanup
- env.Clean(r, dirs + [SCons.Script.File('mimetype')])
+ env.Clean(tocncx, dirs)
return result