66 lines
1.8 KiB
Python
Executable File
66 lines
1.8 KiB
Python
Executable File
#!/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())
|