pw_package: Simplify chromium verifier download Porting unittest requires to pull in much more source files. Listing each file individually makes the list too long. As a trade-off, we'll checkout some entire subfolders instead of picking individual ones in them. Although a number of more files are downloaded, the sparse checkout list is much shorter. Accordingly, we'll not generate a sources.gni for gn build. The list of sources will be added in third_party/chromium_verifier BUILD.gn. Bug: 394 Change-Id: Id15b40cf933af6f6b5da1cc595c79f2650fbb01c Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/49303 Reviewed-by: Rob Mohr <mohrr@google.com> Commit-Queue: Yecheng Zhao <zyecheng@google.com>
diff --git a/pw_package/py/pw_package/packages/chromium_verifier.py b/pw_package/py/pw_package/packages/chromium_verifier.py index 8ab0eb3..4474a6d 100644 --- a/pw_package/py/pw_package/packages/chromium_verifier.py +++ b/pw_package/py/pw_package/packages/chromium_verifier.py
@@ -13,7 +13,6 @@ # the License. """Install and check status of BoringSSL + Chromium verifier.""" -import os import pathlib from typing import Sequence import pw_package.git_repo @@ -25,188 +24,22 @@ # in pw_tls_client that uses the this package, so that it can be used as a # criterion for rolling. CHROMIUM_VERIFIER_LIBRARY_SOURCES = [ - 'base/as_const.h', - 'base/atomic_ref_count.h', - 'base/atomicops.h', - 'base/atomicops_internals_portable.h', - 'base/base_export.h', - 'base/callback_forward.h', - 'base/compiler_specific.h', - 'base/component_export.h', - 'base/containers/checked_iterators.h', - 'base/containers/checked_range.h', - 'base/containers/contains.h', - 'base/containers/contiguous_iterator.h', - 'base/containers/flat_map.h', - 'base/containers/flat_tree.h', - 'base/containers/span.h', - 'base/containers/stack_container.h', - 'base/containers/util.h', - 'base/cxx17_backports.h', - 'base/dcheck_is_on.h', - 'base/debug/alias.h', - 'base/export_template.h', - 'base/functional/identity.h', - 'base/functional/invoke.h', - 'base/functional/not_fn.h', - 'base/gtest_prod_util.h', - 'base/location.cc', - 'base/location.h', - 'base/macros.h', - 'base/memory/ptr_util.h', - 'base/memory/ref_counted.cc', - 'base/memory/ref_counted.h', - 'base/memory/scoped_refptr.h', - 'base/metrics/bucket_ranges.h', - 'base/metrics/histogram.h', - 'base/metrics/histogram_base.h', - 'base/metrics/histogram_functions.h', - 'base/metrics/histogram_samples.h', - 'base/no_destructor.h', - 'base/notreached.h', - 'base/numerics/checked_math.h', - 'base/numerics/checked_math_impl.h', - 'base/numerics/clamped_math.h', - 'base/numerics/clamped_math_impl.h', - 'base/numerics/safe_conversions.h', - 'base/numerics/safe_conversions_arm_impl.h', - 'base/numerics/safe_conversions_impl.h', - 'base/numerics/safe_math.h', - 'base/numerics/safe_math_arm_impl.h', - 'base/numerics/safe_math_clang_gcc_impl.h', - 'base/numerics/safe_math_shared_impl.h', - 'base/optional.h', - 'base/ranges/algorithm.h', - 'base/ranges/functional.h', - 'base/ranges/ranges.h', - 'base/scoped_clear_last_error.h', - 'base/scoped_generic.h', - 'base/sequence_checker.h', - 'base/sequence_checker_impl.h', - 'base/stl_util.h', - 'base/strings/char_traits.h', - 'base/strings/strcat.h', - 'base/strings/string_number_conversions.cc', - 'base/strings/string_number_conversions.h', - 'base/strings/string_number_conversions_internal.h', - 'base/strings/string_piece.h', - 'base/strings/string_piece_forward.h', - 'base/strings/string_split.cc', - 'base/strings/string_split.h', - 'base/strings/string_split_internal.h', - 'base/strings/string_util.cc', - 'base/strings/string_util.h', - 'base/strings/string_util_internal.h', - 'base/strings/string_util_posix.h', - 'base/strings/stringprintf.cc', - 'base/strings/stringprintf.h', - 'base/strings/utf_string_conversion_utils.cc', - 'base/strings/utf_string_conversion_utils.h', - 'base/strings/utf_string_conversions.cc', - 'base/strings/utf_string_conversions.h', - 'base/supports_user_data.cc', - 'base/supports_user_data.h', - 'base/sys_byteorder.h', - 'base/template_util.h', - 'base/third_party/double_conversion/double-conversion/double-conversion.h', - 'base/third_party/double_conversion/double-conversion/double-to-string.h', - 'base/third_party/double_conversion/double-conversion/string-to-double.h', - 'base/third_party/double_conversion/double-conversion/utils.h', - 'base/third_party/icu/icu_utf.h', - 'base/third_party/nspr/prtime.h', - 'base/thread_annotations.h', - 'base/threading/platform_thread.h', - 'base/threading/thread_collision_warner.h', - 'base/time/time.cc', - 'base/time/time.h', - 'base/time/time_override.h', - 'base/trace_event/base_tracing_forward.h', - 'base/value_iterators.h', - 'base/values.h', + 'base/*', + '!base/check.h', + '!base/check_op.h', + '!base/logging.h', 'build/buildflag.h', - 'crypto/crypto_export.h', - 'crypto/openssl_util.cc', - 'crypto/openssl_util.h', - 'crypto/sha2.h', - 'net/base/ip_address.cc', - 'net/base/ip_address.h', - 'net/base/net_export.h', - 'net/base/parse_number.h', - 'net/cert/internal/cert_error_id.cc', - 'net/cert/internal/cert_error_id.h', - 'net/cert/internal/cert_error_params.cc', - 'net/cert/internal/cert_error_params.h', - 'net/cert/internal/cert_errors.cc', - 'net/cert/internal/cert_errors.h', - 'net/cert/internal/cert_issuer_source.h', - 'net/cert/internal/cert_issuer_source_static.cc', - 'net/cert/internal/cert_issuer_source_static.h', - 'net/cert/internal/certificate_policies.cc', - 'net/cert/internal/certificate_policies.h', - 'net/cert/internal/common_cert_errors.cc', - 'net/cert/internal/common_cert_errors.h', - 'net/cert/internal/extended_key_usage.cc', - 'net/cert/internal/extended_key_usage.h', - 'net/cert/internal/general_names.cc', - 'net/cert/internal/general_names.h', - 'net/cert/internal/name_constraints.cc', - 'net/cert/internal/name_constraints.h', - 'net/cert/internal/parse_certificate.cc', - 'net/cert/internal/parse_certificate.h', - 'net/cert/internal/parse_name.cc', - 'net/cert/internal/parse_name.h', - 'net/cert/internal/parsed_certificate.cc', - 'net/cert/internal/parsed_certificate.h', - 'net/cert/internal/path_builder.cc', - 'net/cert/internal/path_builder.h', - 'net/cert/internal/signature_algorithm.cc', - 'net/cert/internal/signature_algorithm.h', - 'net/cert/internal/simple_path_builder_delegate.cc', - 'net/cert/internal/simple_path_builder_delegate.h', - 'net/cert/internal/trust_store.cc', - 'net/cert/internal/trust_store.h', - 'net/cert/internal/trust_store_in_memory.cc', - 'net/cert/internal/trust_store_in_memory.h', - 'net/cert/internal/verify_certificate_chain.cc', - 'net/cert/internal/verify_certificate_chain.h', - 'net/cert/internal/verify_name_match.cc', - 'net/cert/internal/verify_name_match.h', - 'net/cert/internal/verify_signed_data.cc', - 'net/cert/internal/verify_signed_data.h', - 'net/der/encode_values.cc', - 'net/der/encode_values.h', - 'net/der/input.cc', - 'net/der/input.h', - 'net/der/parse_values.cc', - 'net/der/parse_values.h', - 'net/der/parser.cc', - 'net/der/parser.h', - 'net/der/tag.cc', - 'net/der/tag.h', - 'testing/gtest/include/gtest/gtest_prod.h', - 'third_party/abseil-cpp/absl/base/attributes.h', - 'third_party/abseil-cpp/absl/base/config.h', - 'third_party/abseil-cpp/absl/base/internal/identity.h', - 'third_party/abseil-cpp/absl/base/internal/inline_variable.h', - 'third_party/abseil-cpp/absl/base/internal/invoke.h', - 'third_party/abseil-cpp/absl/base/internal/throw_delegate.h', - 'third_party/abseil-cpp/absl/base/macros.h', - 'third_party/abseil-cpp/absl/base/optimization.h', - 'third_party/abseil-cpp/absl/base/options.h', - 'third_party/abseil-cpp/absl/base/policy_checks.h', - 'third_party/abseil-cpp/absl/base/port.h', - 'third_party/abseil-cpp/absl/meta/type_traits.h', - 'third_party/abseil-cpp/absl/strings/string_view.h', - 'third_party/abseil-cpp/absl/time/civil_time.h', - 'third_party/abseil-cpp/absl/time/clock.h', - 'third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h', - 'third_party/abseil-cpp/absl/types/optional.h', - 'third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h', - 'third_party/abseil-cpp/absl/time/time.h', - 'third_party/abseil-cpp/absl/types/variant.h', - 'third_party/abseil-cpp/absl/utility/utility.h', - 'third_party/abseil-cpp/absl/utility/utility.h', + 'build/write_buildflag_header.py', + 'crypto', + 'net/base', + 'net/cert', + 'net/data', + 'net/der', + 'testing/gtest/include', + 'testing/gmock/include', + 'third_party/abseil-cpp', 'third_party/boringssl', + 'third_party/googletest', 'time/internal/cctz/include/cctz/civil_time_detail.h', 'url/gurl.h', 'url/third_party/mozilla/url_parse.h', @@ -214,57 +47,19 @@ 'url/url_canon_ip.h', 'url/url_canon_stdstring.h', 'url/url_constants.h', + 'net/test/test_certificate_data.h', + 'net/cert/internal/path_builder_unittest.cc', + 'third_party/modp_b64', ] CHROMIUM_VERIFIER_UNITTEST_SOURCES = [ # TODO(pwbug/394): Look into in necessary unittests to port. - 'net/cert/internal/path_builder_unittest.cc' + 'net/cert/internal/path_builder_unittest.cc', ] CHROMIUM_VERIFIER_SOURCES = CHROMIUM_VERIFIER_LIBRARY_SOURCES +\ CHROMIUM_VERIFIER_UNITTEST_SOURCES -HEADER = """ -# Copyright 2021 The Pigweed Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -# -# The file is auto-generated when chromium verifier is installed from pw_package. -# See //pw_package/py/pw_package/packages/boringssl.py for more detail. - -""" - - -def generate_chromium_verifier_source_list_gni(path: pathlib.Path): - """Generate a .gni file containing the list of sources to compile""" - with open(path / 'sources.gni', 'w') as gni: - gni.write(HEADER) - gni.write('chromium_verifier_sources = [\n') - for source in [ - src for src in CHROMIUM_VERIFIER_LIBRARY_SOURCES - if src.endswith('.cc') - ]: - gni.write(f' "{source}",\n') - gni.write(']\n\n') - - gni.write('chromium_verifier_unittest_sources = [\n') - for source in [ - src for src in CHROMIUM_VERIFIER_UNITTEST_SOURCES - if src.endswith('.cc') - ]: - gni.write(f' "{source}",\n') - gni.write(']\n') - def chromium_verifier_repo_path( chromium_verifier_install: pathlib.Path) -> pathlib.Path: @@ -336,9 +131,6 @@ chromium_repo) self._googletest.install(googletest_repo) - # Generate a.gni file containing sources to compile. - generate_chromium_verifier_source_list_gni(path) - def status(self, path: pathlib.Path) -> bool: chromium_repo = chromium_verifier_repo_path(path) if not self._chromium_verifier.status(chromium_repo): @@ -354,10 +146,6 @@ if not self._googletest.status(googletest_repo): return False - # A source list gni file has been generated. - if not os.path.exists(path / 'sources.gni'): - return False - return True def info(self, path: pathlib.Path) -> Sequence[str]: