More robust parallel use of sphinx-build2

This commit is contained in:
Kovid Goyal 2017-07-04 17:52:49 +05:30
parent d1c4eeb92a
commit 81460e6cfc
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 10 additions and 5 deletions

View File

@ -20,13 +20,15 @@ j, d, a = os.path.join, os.path.dirname, os.path.abspath
BASE = d(a(__file__)) BASE = d(a(__file__))
def sphinx_build(language, base, builder='html', bdir='html', t=None, quiet=True): def sphinx_build(language, base, builder='html', bdir='html', t=None, quiet=True, very_quiet=False):
destdir = j(base, bdir) destdir = j(base, bdir)
if not os.path.exists(destdir): if not os.path.exists(destdir):
os.makedirs(destdir) os.makedirs(destdir)
ans = [SPHINX_BUILD, '-D', ('language=' + language), '-b', builder] ans = [SPHINX_BUILD, '-D', ('language=' + language), '-b', builder]
if quiet: if quiet:
ans.append('-q') ans.append('-q')
if very_quiet:
ans.append('-Q')
if builder == 'html': if builder == 'html':
ans += ['-w', j(destdir, 'sphinx-build-warnings.txt')] ans += ['-w', j(destdir, 'sphinx-build-warnings.txt')]
if t: if t:
@ -78,7 +80,7 @@ def build_pot(base):
def build_man_pages(language, base): def build_man_pages(language, base):
os.environ[b'CALIBRE_BUILD_MAN_PAGES'] = b'1' os.environ[b'CALIBRE_BUILD_MAN_PAGES'] = b'1'
sphinx_build(language, base, builder='man', bdir=language) sphinx_build(language, base, builder='man', bdir=language, very_quiet=True)
if __name__ == '__main__': if __name__ == '__main__':
@ -99,6 +101,7 @@ if __name__ == '__main__':
p.add_argument('language', help='The language to build for') p.add_argument('language', help='The language to build for')
p.add_argument('base', help='The destination directory') p.add_argument('base', help='The destination directory')
p.add_argument('--man-pages', default=False, action='store_true', help='Build man pages') p.add_argument('--man-pages', default=False, action='store_true', help='Build man pages')
p.add_argument('--quiet', default=False, action='store_true', help='Suppress warnings')
args = p.parse_args() args = p.parse_args()
language, base = args.language, args.base language, base = args.language, args.base
if language == 'gettext': if language == 'gettext':
@ -108,5 +111,5 @@ if __name__ == '__main__':
build_man_pages(language, base) build_man_pages(language, base)
else: else:
os.environ['CALIBRE_OVERRIDE_LANG'] = language os.environ['CALIBRE_OVERRIDE_LANG'] = language
build_manual(language, base) build_manual(language, base, very_quiet=args.quiet)
print ('Manual for', language, 'built in', j(base, 'html')) print ('Manual for', language, 'built in', j(base, 'html'))

View File

@ -212,7 +212,8 @@ class Manual(Command):
'--', language, self.j(tdir, language) '--', language, self.j(tdir, language)
], '\n\n**************** Building translations for: %s' % language)) ], '\n\n**************** Building translations for: %s' % language))
self.info('Building manual for %d languages' % len(jobs)) self.info('Building manual for %d languages' % len(jobs))
if not parallel_build(jobs, self.info): subprocess.check_call(jobs[0][0])
if not parallel_build(jobs[1:], self.info):
raise SystemExit(1) raise SystemExit(1)
cwd = os.getcwdu() cwd = os.getcwdu()
try: try:
@ -303,7 +304,8 @@ class ManPages(Command):
['calibre-debug', self.j(base, 'build.py'), '--', '--man-pages', l, dest], ['calibre-debug', self.j(base, 'build.py'), '--', '--man-pages', l, dest],
'\n\n**************** Building translations for: %s' % l) '\n\n**************** Building translations for: %s' % l)
) )
if not parallel_build(jobs, self.info, verbose=False): subprocess.check_call(jobs[0][0])
if not parallel_build(jobs[1:], self.info, verbose=False):
raise SystemExit(1) raise SystemExit(1)
cwd = os.getcwdu() cwd = os.getcwdu()
os.chdir(dest) os.chdir(dest)