#!/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())