Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
common.py
Go to the documentation of this file.
1#!/usr/bin/env python3
2# Copyright 2015 The PDFium Authors
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import datetime
7import glob
8import os
9import re
10import subprocess
11import sys
12
13import pdfium_root
14
15
16def os_name():
17 if sys.platform.startswith('linux'):
18 return 'linux'
19 if sys.platform.startswith('win'):
20 return 'win'
21 if sys.platform.startswith('darwin'):
22 return 'mac'
23 raise Exception('Confused, can not determine OS, aborting.')
24
25
27 stdout_has_errors=False,
28 exit_status_on_error=None):
29 """Run a command as a subprocess.
30
31 Errors in that subprocess are printed out if it returns an error exit code.
32
33 Args:
34 cmd: Command to run as a list of strings.
35 stdout_has_errors: Whether to print stdout instead of stderr on an error
36 exit.
37 exit_status_on_error: If specified, upon an error in the subprocess the
38 caller script exits immediately with the given status.
39 """
40 p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
41 output, err = p.communicate()
42
43 if p.returncode:
44 PrintErr('\nError when invoking "%s"' % ' '.join(cmd))
45 if stdout_has_errors:
46 PrintErr(output)
47
48 PrintErr(err)
49
50 if exit_status_on_error is not None:
51 sys.exit(exit_status_on_error)
52
53 return None
54
55 return output
56
57
59 '''A class for finding directories and paths under either a standalone
60 checkout or a chromium checkout of PDFium.'''
61
62 def __init__(self, build_location):
63 # `build_location` is typically "out/Debug" or "out/Release".
65 self.testing_dir = os.path.join(root_finder.pdfium_root, 'testing')
66 self.my_dir = os.path.join(self.testing_dir, 'tools')
67 self.pdfium_dir = root_finder.pdfium_root
68 self.base_dir = root_finder.source_root
69 self.build_dir = os.path.join(self.base_dir, build_location)
71
72 def ExecutablePath(self, name):
73 '''Finds compiled binaries under the build path.'''
74 result = os.path.join(self.build_dir, name)
75 if self.os_name == 'win':
76 result = result + '.exe'
77 return result
78
79 def ScriptPath(self, name):
80 '''Finds other scripts in the same directory as this one.'''
81 return os.path.join(self.my_dir, name)
82
83 def WorkingDir(self, other_components=''):
84 '''Places generated files under the build directory, not source dir.'''
85 result = os.path.join(self.build_dir, 'gen', 'pdfium')
86 if other_components:
87 result = os.path.join(result, other_components)
88 return result
89
90 def TestingDir(self, other_components=''):
91 '''Finds test files somewhere under the testing directory.'''
92 result = self.testing_dir
93 if other_components:
94 result = os.path.join(result, other_components)
95 return result
96
98 '''Finds directory with the test fonts.'''
99 return os.path.join(self.base_dir, 'third_party', 'test_fonts')
100
101
102def GetBooleanGnArg(arg_name, build_dir, verbose=False):
103 '''Extract the value of a boolean flag in args.gn'''
104 cwd = os.getcwd()
105 os.chdir(build_dir)
106 gn_args_output = subprocess.check_output(
107 ['gn', 'args', '.', '--list=%s' % arg_name, '--short']).decode('utf8')
108 os.chdir(cwd)
109 arg_match_output = re.search('%s = (.*)' % arg_name, gn_args_output).group(1)
110 if verbose:
111 print(
112 "Found '%s' for value of %s" % (arg_match_output, arg_name),
113 file=sys.stderr)
114 return arg_match_output == 'true'
115
116
118 """Prints s prepended by a timestamp."""
119 print('[%s] %s' % (datetime.datetime.now().strftime("%Y%m%d %H:%M:%S"), s))
120
121
122def PrintErr(s):
123 """Prints s to stderr."""
124 print(s, file=sys.stderr)
TestingDir(self, other_components='')
Definition common.py:90
WorkingDir(self, other_components='')
Definition common.py:83
__init__(self, build_location)
Definition common.py:62
GetBooleanGnArg(arg_name, build_dir, verbose=False)
Definition common.py:102
RunCommandPropagateErr(cmd, stdout_has_errors=False, exit_status_on_error=None)
Definition common.py:28
QDebug print(QDebug debug, QSslError::SslError error)
#define decode(x)