| #!/usr/bin/env python3 | |
| # Copyright 2022 The PDFium Authors | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| """Verifies libcxx_revision entries are in sync. | |
| DEPS and buildtools/deps_revisions.gni both have libcxx_revision entries. | |
| Check that they are in sync. | |
| """ | |
| import re | |
| import sys | |
| def _ExtractRevisionFromFile(path, regex): | |
| """Gets the revision by reading path and searching the lines using regex.""" | |
| data = open(path, 'rb').read().splitlines() | |
| revision = None | |
| for line in data: | |
| match = regex.match(line) | |
| if not match: | |
| continue | |
| if revision: | |
| return None | |
| revision = match.group(1) | |
| return revision | |
| def _GetDepsLibcxxRevision(deps_path): | |
| """Gets the libcxx_revision from DEPS.""" | |
| regex = re.compile(b"^ 'libcxx_revision': '(.*)',$") | |
| return _ExtractRevisionFromFile(deps_path, regex) | |
| def _GetBuildtoolsLibcxxRevision(buildtools_deps_path): | |
| """Gets the libcxx_revision from buildtools/deps_revisions.gni.""" | |
| regex = re.compile(b'^ libcxx_revision = "(.*)"$') | |
| return _ExtractRevisionFromFile(buildtools_deps_path, regex) | |
| def main(): | |
| if len(sys.argv) != 3: | |
| print('Wrong number of arguments') | |
| return 0 | |
| deps_path = sys.argv[1] | |
| deps_revision = _GetDepsLibcxxRevision(deps_path) | |
| if not deps_revision: | |
| print('Cannot parse', deps_path) | |
| return 0 | |
| buildtools_deps_path = sys.argv[2] | |
| buildtools_revision = _GetBuildtoolsLibcxxRevision(buildtools_deps_path) | |
| if not buildtools_revision: | |
| print('Cannot parse', buildtools_deps_path) | |
| return 0 | |
| if deps_revision != buildtools_revision: | |
| print('libcxx_revision mismatch between %s and %s: %s vs. %s' % | |
| (deps_path, buildtools_deps_path, deps_revision, buildtools_revision)) | |
| return 0 | |
| if __name__ == '__main__': | |
| sys.exit(main()) |