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]: