aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra/bots/recipe_modules/flavor/pdfium_flavor.py
blob: 141b12643122fbf8ed06f2df172e1d3bda87bf09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 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.m.vars.checkout_root.join('pdfium')

    # Runhook to generate the gn binary in buildtools.
    with self.m.step.context({'cwd': pdfium_dir}):
      self.m.run(
          self.m.step,
          'runhook',
          cmd=['gclient', 'runhook', 'gn_linux64'])

      # Install the sysroot.
      self.m.run(
          self.m.step,
          'sysroot',
          cmd=['python', 'build/linux/sysroot_scripts/install-sysroot.py',
               '--arch=amd64'])

      # Setup gn args.
      gn_args = [
          'pdf_is_standalone=true',
          'clang_use_chrome_plugins=false',
          'is_component_build=false',
          'is_debug=false',
      ]
      if 'SkiaPaths' in self.m.vars.builder_name:
        gn_args.append('pdf_use_skia_paths=true')
      else:
        gn_args.append('pdf_use_skia=true')


      env = self.m.step.get_from_context('env') or {}
      env['CHROMIUM_BUILDTOOLS_PATH'] = str(pdfium_dir.join('buildtools'))
      with self.m.step.context({'env': env}):
        self.m.run(
            self.m.step,
            'gn_gen',
            cmd=['gn', 'gen', 'out/skia', '--args=%s' % ' '.join(gn_args)])

        # Build PDFium.
        self.m.run(
            self.m.step,
            'build_pdfium',
            cmd=['ninja', '-C', 'out/skia', '-j100'])