Index: infra/bots/recipe_modules/skia/pdfium_flavor.py |
diff --git a/infra/bots/recipe_modules/skia/pdfium_flavor.py b/infra/bots/recipe_modules/skia/pdfium_flavor.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..782daf0487a26d159b1f789331e8f4f486d83179 |
--- /dev/null |
+++ b/infra/bots/recipe_modules/skia/pdfium_flavor.py |
@@ -0,0 +1,64 @@ |
+# Copyright 2016 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import re |
+ |
+import default_flavor |
+ |
+ |
+"""PDFium flavor utils, used for building PDFium with Skia.""" |
+ |
+ |
+class PDFiumFlavorUtils(default_flavor.DefaultFlavorUtils): |
+ |
+ def compile(self, target): |
+ """Build PDFium with Skia.""" |
+ pdfium_dir = self._skia_api.checkout_root.join('pdfium') |
+ |
+ # Runhook to generate the gn binary in buildtools. |
+ self._skia_api.run( |
+ self._skia_api.m.step, |
+ 'runhook', |
+ cmd=['gclient', 'runhook', 'gn_linux64'], |
+ cwd=pdfium_dir) |
+ |
+ # Setup gn args. |
+ gn_args = ['pdf_use_skia=true', 'pdf_is_standalone=true', |
+ 'clang_use_chrome_plugins=false'] |
+ self._skia_api.run( |
+ self._skia_api.m.step, |
+ 'gn_gen', |
+ cmd=['gn', 'gen', 'out/skia', '--args=%s' % ' '.join(gn_args)], |
+ cwd=pdfium_dir, |
+ env={'CHROMIUM_BUILDTOOLS_PATH': str(pdfium_dir.join('buildtools'))}) |
+ |
+ # Modify DEPS file to contain the current Skia revision. |
+ skia_revision = self._skia_api.got_revision |
+ deps_file = pdfium_dir.join('DEPS') |
+ test_data = "'skia_revision': 'abc'" |
+ |
+ original_contents = self._skia_api.m.file.read( |
+ 'read PDFium DEPS', deps_file, test_data=test_data, infra_step=True) |
+ |
+ deps_skia_regexp = re.compile( |
+ r'(?<=["\']skia_revision["\']: ["\'])([a-fA-F0-9]+)(?=["\'])', |
+ re.MULTILINE) |
+ patched_contents = re.sub(deps_skia_regexp, str(skia_revision), |
+ original_contents) |
+ self._skia_api.m.file.write('write PDFium DEPs', deps_file, |
+ patched_contents, infra_step=True) |
+ |
+ # gclient sync after updating DEPS. |
+ self._skia_api.run( |
+ self._skia_api.m.step, |
+ 'sync_pdfium', |
+ cmd=['gclient', 'sync'], |
+ cwd=pdfium_dir) |
+ |
+ # Build PDFium. |
+ self._skia_api.run( |
+ self._skia_api.m.step, |
+ 'build_pdfium', |
+ cmd=['ninja', '-C', 'out/skia', '-j100'], |
+ cwd=pdfium_dir) |