1*6777b538SAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project 2*6777b538SAndroid Build Coastguard Worker# 3*6777b538SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*6777b538SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*6777b538SAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*6777b538SAndroid Build Coastguard Worker# 7*6777b538SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*6777b538SAndroid Build Coastguard Worker# 9*6777b538SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*6777b538SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*6777b538SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6777b538SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*6777b538SAndroid Build Coastguard Worker# limitations under the License. 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Workerfrom typing import Callable, Dict, List 16*6777b538SAndroid Build Coastguard Workerfrom mapper import Mapper 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Workerdef create_license_post_processing(*args: Mapper) -> Callable: 20*6777b538SAndroid Build Coastguard Worker def __update_metadata(metadata: Dict[str, str | List[str]]) -> Dict[ 21*6777b538SAndroid Build Coastguard Worker str, str | List[str]]: 22*6777b538SAndroid Build Coastguard Worker for mapper in args: 23*6777b538SAndroid Build Coastguard Worker mapper.write(metadata) 24*6777b538SAndroid Build Coastguard Worker return metadata 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker return __update_metadata 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker# This is relative to the repo_directory passed in |update_license| 30*6777b538SAndroid Build Coastguard Worker# post-processing is necessary for the cases where the license is not in the 31*6777b538SAndroid Build Coastguard Worker# standard format, this can include two or more license (eg: "Apache 2 and MPL") 32*6777b538SAndroid Build Coastguard Worker# or a single license that is not easily identifiable (eg: "BSDish") 33*6777b538SAndroid Build Coastguard Worker# 34*6777b538SAndroid Build Coastguard Worker# The current structure is Mapper(dictionary_key, expected_value, value_to_write) 35*6777b538SAndroid Build Coastguard WorkerPOST_PROCESS_OPERATION = { 36*6777b538SAndroid Build Coastguard Worker "base/third_party/nspr/README.chromium": create_license_post_processing( 37*6777b538SAndroid Build Coastguard Worker Mapper("License", ['MPL 1.1/GPL 2.0/LGPL 2.1'], ["MPL 1.1"])), 38*6777b538SAndroid Build Coastguard Worker "url/third_party/mozilla/README.chromium": create_license_post_processing( 39*6777b538SAndroid Build Coastguard Worker Mapper("License", ['BSD and MPL 1.1/GPL 2.0/LGPL 2.1'], 40*6777b538SAndroid Build Coastguard Worker ["BSD"])), 41*6777b538SAndroid Build Coastguard Worker "third_party/libc++abi/README.chromium": create_license_post_processing( 42*6777b538SAndroid Build Coastguard Worker Mapper("License", 43*6777b538SAndroid Build Coastguard Worker ['MIT', 44*6777b538SAndroid Build Coastguard Worker 'University of Illinois/NCSA Open Source License'], 45*6777b538SAndroid Build Coastguard Worker ["MIT"])), 46*6777b538SAndroid Build Coastguard Worker "third_party/libc++/README.chromium": create_license_post_processing( 47*6777b538SAndroid Build Coastguard Worker Mapper("License", 48*6777b538SAndroid Build Coastguard Worker ['MIT', 49*6777b538SAndroid Build Coastguard Worker 'University of Illinois/NCSA Open Source License'], 50*6777b538SAndroid Build Coastguard Worker ["MIT"])), 51*6777b538SAndroid Build Coastguard Worker "third_party/boringssl/README.chromium": create_license_post_processing( 52*6777b538SAndroid Build Coastguard Worker Mapper("License", ['BSDish'], ["BSD"]), 53*6777b538SAndroid Build Coastguard Worker # TODO(b/360316861): Fix upstream by setting an explicit version to boringssl. 54*6777b538SAndroid Build Coastguard Worker Mapper("Version", "git", None)), 55*6777b538SAndroid Build Coastguard Worker "net/third_party/quiche/METADATA": create_license_post_processing( 56*6777b538SAndroid Build Coastguard Worker # TODO(b/360316861): Fix upstream by setting an explicit version to QUICHE. 57*6777b538SAndroid Build Coastguard Worker Mapper("Version", "git", None)), 58*6777b538SAndroid Build Coastguard Worker # TODO(b/360316861): Fix this upstream in Chromium. 59*6777b538SAndroid Build Coastguard Worker "third_party/quic_trace/README.chromium": create_license_post_processing( 60*6777b538SAndroid Build Coastguard Worker Mapper("Version", "git", "caa0a6eaba816ecb737f9a70782b7c80b8ac8dbc")), 61*6777b538SAndroid Build Coastguard Worker "third_party/metrics_proto/README.chromium": create_license_post_processing( 62*6777b538SAndroid Build Coastguard Worker Mapper("URL", "This is the canonical public repository", "Piper")), 63*6777b538SAndroid Build Coastguard Worker "third_party/boringssl/src/pki/testdata/nist-pkits/README.chromium": create_license_post_processing( 64*6777b538SAndroid Build Coastguard Worker Mapper("License", [ 65*6777b538SAndroid Build Coastguard Worker 'Public Domain: United States Government Work under 17 U.S.C. 105'], 66*6777b538SAndroid Build Coastguard Worker ["unencumbered"]), 67*6777b538SAndroid Build Coastguard Worker Mapper("License File", "", "N/A")), 68*6777b538SAndroid Build Coastguard Worker "third_party/rust/unicode_ident/v1/README.chromium": create_license_post_processing( 69*6777b538SAndroid Build Coastguard Worker Mapper("License", [ 70*6777b538SAndroid Build Coastguard Worker 'Apache 2.0 AND Unicode License Agreement - Data Files and Software (2016)'], 71*6777b538SAndroid Build Coastguard Worker ["Apache 2.0", "Unicode"])), 72*6777b538SAndroid Build Coastguard Worker} 73*6777b538SAndroid Build Coastguard Worker 74*6777b538SAndroid Build Coastguard Worker# This is relative to the repo_directory passed in |update_license| 75*6777b538SAndroid Build Coastguard WorkerIGNORED_README = { 76*6777b538SAndroid Build Coastguard Worker # Not a third-party. 77*6777b538SAndroid Build Coastguard Worker "testing/android/native_test/README.chromium", 78*6777b538SAndroid Build Coastguard Worker # Not a third-party. 79*6777b538SAndroid Build Coastguard Worker "build/internal/README.chromium", 80*6777b538SAndroid Build Coastguard Worker # b/369075726, those crates are missing LICENSE files upstream, once fixed 81*6777b538SAndroid Build Coastguard Worker # and imported, we will create a README for those. 82*6777b538SAndroid Build Coastguard Worker "third_party/rust/rstest/v0_17/README.chromium", 83*6777b538SAndroid Build Coastguard Worker "third_party/rust/rustc_demangle_capi/v0_1/README.chromium", 84*6777b538SAndroid Build Coastguard Worker "third_party/rust/rstest_macros/v0_17/README.chromium", 85*6777b538SAndroid Build Coastguard Worker "third_party/rust/codespan_reporting/v0_11/README.chromium", 86*6777b538SAndroid Build Coastguard Worker "third_party/rust/rstest_reuse/v0_5/README.chromium", 87*6777b538SAndroid Build Coastguard Worker} 88