blob: ad6abeae989b5a779444a7548d0c3693cd4ca6ec [file] [log] [blame] [edit]
#!/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())