From 6adedd860355bfcfd8eab1ca82a9c26428aebc15 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Wed, 19 Dec 2018 02:14:00 -0500 Subject: [PATCH 1/2] setup/mathjax: fallback to using packed versions of resources Some mathjax distributions come with the unpacked versions removed as per the upstream instructions for optimizing an installation. Only use the unpacked versions if they exist; otherwise fallback on the packed versions. Also filter the .woff files to make sure they are actually .woff files, since they may be files like fonts.dir, fonts.scale, .uuid (created by xorg-mkfontdir, xorg-mkfontscale, fontconfig). --- setup/mathjax.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/setup/mathjax.py b/setup/mathjax.py index 561d161433..3dc38a7b27 100644 --- a/setup/mathjax.py +++ b/setup/mathjax.py @@ -47,12 +47,13 @@ class MathJax(Command): with open(dest, 'wb') as f: f.write(raw) - def add_tree(self, base, prefix): + def add_tree(self, base, prefix, ignore=lambda n:False): for dirpath, dirnames, filenames in os.walk(base): for fname in filenames: f = os.path.join(dirpath, fname) name = prefix + '/' + os.path.relpath(f, base).replace(os.sep, '/') - self.add_file(f, name) + if not ignore(name): + self.add_file(f, name) def clean(self): self.mathjax_dir = self.j(self.RESOURCES, 'mathjax') @@ -68,10 +69,11 @@ class MathJax(Command): try: src = opts.path_to_mathjax or self.download_mathjax_release(tdir, opts.mathjax_url) self.info('Adding MathJax...') - self.add_file(self.j(src, 'unpacked', 'MathJax.js'), 'MathJax.js') - self.add_tree(self.j(src, 'fonts', 'HTML-CSS', self.FONT_FAMILY, 'woff'), 'fonts/HTML-CSS/%s/woff' % self.FONT_FAMILY) + unpacked = 'unpacked' if self.e(self.j(src, 'unpacked')) else '' + self.add_file(self.j(src, unpacked, 'MathJax.js'), 'MathJax.js') + self.add_tree(self.j(src, 'fonts', 'HTML-CSS', self.FONT_FAMILY, 'woff'), 'fonts/HTML-CSS/%s/woff' % self.FONT_FAMILY, lambda x: not x.endswith('.woff')) for d in 'extensions jax/element jax/input jax/output/CommonHTML'.split(): - self.add_tree(self.j(src, 'unpacked', *d.split('/')), d) + self.add_tree(self.j(src, unpacked, *d.split('/')), d) etag = self.h.hexdigest() with open(self.j(self.RESOURCES, 'mathjax', 'manifest.json'), 'wb') as f: f.write(json.dumps({'etag': etag, 'files': self.mathjax_files}, indent=2).encode('utf-8')) From 82617d3a74954d4d9cc7d779fa563ad3d212867a Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Fri, 28 Dec 2018 00:28:39 -0500 Subject: [PATCH 2/2] build: add option to symlink to system mathjax installation --- setup/mathjax.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/setup/mathjax.py b/setup/mathjax.py index 3dc38a7b27..fbd9e242ec 100644 --- a/setup/mathjax.py +++ b/setup/mathjax.py @@ -27,6 +27,8 @@ class MathJax(Command): def add_options(self, parser): parser.add_option('--path-to-mathjax', help='Path to the MathJax source code') parser.add_option('--mathjax-url', default=self.MATH_JAX_URL, help='URL to MathJax source archive in zip format') + parser.add_option('--system-mathjax', default=False, action='store_true', + help='Treat MathJax as system copy and symlink instead of copy') def download_mathjax_release(self, tdir, url): self.info('Downloading MathJax:', url) @@ -44,8 +46,11 @@ class MathJax(Command): base = os.path.dirname(dest) if not os.path.exists(base): os.makedirs(base) - with open(dest, 'wb') as f: - f.write(raw) + if self.use_symlinks: + os.symlink(path, dest) + else: + with open(dest, 'wb') as f: + f.write(raw) def add_tree(self, base, prefix, ignore=lambda n:False): for dirpath, dirnames, filenames in os.walk(base): @@ -63,6 +68,7 @@ class MathJax(Command): def run(self, opts): self.h = sha1() self.mathjax_files = {} + self.use_symlinks = opts.system_mathjax self.clean() os.mkdir(self.mathjax_dir) tdir = mkdtemp('calibre-mathjax-build')