Files
cromite/build/patches/Force-use-vpython3-for-some-scripts.patch
T
2025-10-02 11:31:25 +02:00

250 lines
10 KiB
Diff

From: uazo <uazo@users.noreply.github.com>
Date: Fri, 2 May 2025 14:16:01 +0000
Subject: Force use vpython3 for some scripts
Some scripts need the latest version of python not available in the docker container.
The patch forces the use of python in the virtual environment in the version
required by the chromium build tools.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
build/config/android/internal_rules.gni | 5 ++++-
build/config/python.gni | 7 ++++++-
.../metrics/generate_expired_histograms_array.gni | 7 +++++--
components/variations/field_trial_config/BUILD.gn | 4 +++-
third_party/perfetto/gn/BUILD.gn | 5 ++++-
tools/grit/grit_rule.gni | 4 +++-
tools/json_schema_compiler/json_schema_api.gni | 12 +++++++++---
tools/json_to_struct/json_to_struct.gni | 4 +++-
.../generate_allowlist_from_histograms_file.gni | 5 +++--
9 files changed, 40 insertions(+), 13 deletions(-)
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -567,12 +567,15 @@ template("write_build_config") {
} else {
action_with_pydeps(target_name) {
forward_variables_from(invoker, [ "testonly" ])
- script = "//build/android/gyp/write_build_config.py"
+ script = "//build/gn_run_binary.py"
+ original_script = "//build/android/gyp/write_build_config.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = _inputs
outputs = _outputs
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(original_script),
"--output",
rebase_path(invoker.build_config, root_build_dir),
"--depfile",
diff --git a/build/config/python.gni b/build/config/python.gni
--- a/build/config/python.gni
+++ b/build/config/python.gni
@@ -91,6 +91,7 @@ template("action_with_pydeps") {
[
"testonly",
"visibility",
+ "original_script"
])
forward_variables_from(invoker,
"*",
@@ -102,7 +103,11 @@ template("action_with_pydeps") {
# Read and filter out comments.
# Happens every time the template is instantiated, but benchmarking shows no
# perceivable impact on overall 'gn gen' speed.
- _pydeps_file = invoker.script + "deps"
+ if (!defined(original_script)) {
+ _pydeps_file = invoker.script + "deps"
+ } else {
+ _pydeps_file = invoker.original_script + "deps"
+ }
_pydeps_lines =
read_file(_pydeps_file, "list lines") # https://crbug.com/1102058
diff --git a/components/metrics/generate_expired_histograms_array.gni b/components/metrics/generate_expired_histograms_array.gni
--- a/components/metrics/generate_expired_histograms_array.gni
+++ b/components/metrics/generate_expired_histograms_array.gni
@@ -30,7 +30,7 @@ template("generate_expired_histograms_array") {
action(target_name) {
header_filename = "$target_gen_dir/" + invoker.header_filename
- script = "//tools/metrics/histograms/generate_expired_histograms_array.py"
+ script = "//build/gn_run_binary.py"
outputs = [ header_filename ]
inputs = histograms_xml_files
@@ -38,7 +38,10 @@ template("generate_expired_histograms_array") {
major_branch_date_filepath = invoker.major_branch_date_filepath
milestone_filepath = invoker.milestone_filepath
- args = []
+ args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path("//tools/metrics/histograms/generate_expired_histograms_array.py")
+ ]
if (defined(invoker.namespace) && invoker.namespace != "") {
args += [ "-n" + invoker.namespace ]
diff --git a/components/variations/field_trial_config/BUILD.gn b/components/variations/field_trial_config/BUILD.gn
--- a/components/variations/field_trial_config/BUILD.gn
+++ b/components/variations/field_trial_config/BUILD.gn
@@ -5,7 +5,7 @@ import("//tools/json_to_struct/json_to_struct.gni")
action("field_trial_testing_config_action") {
visibility = [ ":field_trial_config" ]
- script = "//tools/variations/fieldtrial_to_struct.py"
+ script = "//build/gn_run_binary.py"
source = "//testing/variations/fieldtrial_testing_config.json"
inputs = JSON_TO_STRUCT_FILES + [ source ]
@@ -22,6 +22,8 @@ action("field_trial_testing_config_action") {
}
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path("//tools/variations/fieldtrial_to_struct.py"),
rebase_path(source, root_build_dir),
"--destbase=" + rebase_path(target_gen_dir, root_build_dir),
"--namespace=variations",
diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn
--- a/third_party/perfetto/gn/BUILD.gn
+++ b/third_party/perfetto/gn/BUILD.gn
@@ -36,7 +36,8 @@ if (perfetto_root_path == "//") {
# pattern #if PERFETTO_BUILDFLAG(PERFETTO_ANDROID_BUILD)
buildflag_gen_dir_ = "$root_gen_dir/$perfetto_root_path/build_config"
action("gen_buildflags") {
- script = "write_buildflag_header.py"
+ script = "//build/gn_run_binary.py"
+ original_script = "write_buildflag_header.py"
gen_header_path = "$buildflag_gen_dir_/perfetto_build_flags.h"
perfetto_component_build = false
@@ -111,6 +112,8 @@ action("gen_buildflags") {
rel_out_path = rebase_path(gen_header_path, "$root_build_dir")
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(original_script),
"--out",
rel_out_path,
"--rsp",
diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni
--- a/tools/grit/grit_rule.gni
+++ b/tools/grit/grit_rule.gni
@@ -154,7 +154,7 @@ template("grit") {
_grit_custom_target = target_name + "_grit"
action(_grit_custom_target) {
- script = "//tools/grit/grit.py"
+ script = "//build/gn_run_binary.py"
inputs = [ invoker.source ]
testonly = defined(invoker.testonly) && invoker.testonly
@@ -197,6 +197,8 @@ template("grit") {
}
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path("//tools/grit/grit.py"),
"-i",
_rebased_source_path,
"build",
diff --git a/tools/json_schema_compiler/json_schema_api.gni b/tools/json_schema_compiler/json_schema_api.gni
--- a/tools/json_schema_compiler/json_schema_api.gni
+++ b/tools/json_schema_compiler/json_schema_api.gni
@@ -112,13 +112,15 @@ template("generated_json_strings") {
action(bundle_generator_schema_name) {
visibility = [ ":$root_target_name" ]
- script = compiler_script
+ script = "//build/gn_run_binary.py"
inputs = compiler_sources + invoker.sources
outputs = [
"$target_gen_dir/generated_schemas.cc",
"$target_gen_dir/generated_schemas.h",
]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(compiler_script),
"--root=" + rebase_path(root_folder, root_build_dir),
"--destdir=$destdir",
"--namespace=$root_namespace",
@@ -227,13 +229,15 @@ template("function_registration") {
action(bundle_generator_registration_name) {
visibility = [ ":$root_target_name" ]
- script = compiler_script
+ script = "//build/gn_run_binary.py"
inputs = compiler_sources + invoker.sources
outputs = [
"$gen_child_dir/generated_api_registration.cc",
"$gen_child_dir/generated_api_registration.h",
]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(compiler_script),
"--root=" + rebase_path(root_folder, root_build_dir),
"--destdir=$destdir",
"--namespace=$root_namespace",
@@ -321,7 +325,7 @@ template("generated_types") {
action_foreach(schema_generator_name) {
visibility = [ ":$root_target_name" ]
- script = compiler_script
+ script = "//build/gn_run_binary.py"
sources = invoker.sources
inputs = compiler_sources
outputs = [
@@ -329,6 +333,8 @@ template("generated_types") {
"$target_gen_dir/{{source_name_part}}.h",
]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(compiler_script),
"{{source}}",
"--root=" + rebase_path(root_folder, root_build_dir),
"--destdir=$destdir",
diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json_to_struct.gni
--- a/tools/json_to_struct/json_to_struct.gni
+++ b/tools/json_to_struct/json_to_struct.gni
@@ -41,7 +41,7 @@ template("json_to_struct") {
action(action_name) {
visibility = [ ":$source_set_name" ]
- script = "//tools/json_to_struct/json_to_struct.py"
+ script = "//build/gn_run_binary.py"
inputs = JSON_TO_STRUCT_FILES + [
invoker.source,
@@ -56,6 +56,8 @@ template("json_to_struct") {
]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path("//tools/json_to_struct/json_to_struct.py"),
rebase_path(invoker.source, root_build_dir),
"--destbase=" + rebase_path(out_dir, root_build_dir),
"--namespace=" + invoker.namespace,
diff --git a/tools/metrics/generate_allowlist_from_histograms_file.gni b/tools/metrics/generate_allowlist_from_histograms_file.gni
--- a/tools/metrics/generate_allowlist_from_histograms_file.gni
+++ b/tools/metrics/generate_allowlist_from_histograms_file.gni
@@ -26,12 +26,13 @@ template("generate_allowlist_from_histograms_file") {
action(target_name) {
output_file = "$target_gen_dir/" + invoker.output_file
- script =
- "//tools/metrics/histograms/generate_allowlist_from_histograms_file.py"
+ script = "//build/gn_run_binary.py"
outputs = [ output_file ]
sources = [ invoker.input_xml_file ]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path("//tools/metrics/histograms/generate_allowlist_from_histograms_file.py"),
"--allow_list_name=" + invoker.allow_list_name,
"--namespace=" + invoker.namespace,
"--tag=" + invoker.tag,
--