From 05c549c3a97f54d38844d59956c5a3a1a475e6ff Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Sun, 6 Nov 2022 12:43:05 -0800 Subject: [PATCH 01/22] Adding python script to easily obtain key customer info Runs commands in command line, conducts string manipulation to obtain key pieces of infromation, and saves to results file --- customer_info.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 customer_info.py diff --git a/customer_info.py b/customer_info.py new file mode 100644 index 0000000..77f8596 --- /dev/null +++ b/customer_info.py @@ -0,0 +1,29 @@ +import os +import csv + +# change this based on customer repo path +repo_path = "/Users/sarahraza/example" + +# change path for targets as relevant, relative to repo +bazel_target_command = "bazel cquery //java/..." + +# change path for actions as relevant, relative to repo +bazel_action_command = "bazel aquery //java/..." + +if __name__ == '__main__': + # extract JSON files (for CPUTimes) and InputData from Commits + + # move to customer project + os.chdir(repo_path) + + # get bazel version + bazel_version = os.popen("bazel --version").read() + print("bazel_version var", bazel_version) + + # get targets + bazel_target = os.popen(bazel_target_command).read() + print("bazel_target var", bazel_target) + + # get actions + bazel_action = os.popen(bazel_action_command).read() + print("bazel_target var", bazel_action) \ No newline at end of file From 3ca9d79efdf535f29bfbdaf78062a544eaeb4c4b Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Mon, 7 Nov 2022 10:46:53 -0800 Subject: [PATCH 02/22] added file writing capability --- customer_info.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/customer_info.py b/customer_info.py index 77f8596..4ece8bd 100644 --- a/customer_info.py +++ b/customer_info.py @@ -1,5 +1,5 @@ import os -import csv +import yaml # change this based on customer repo path repo_path = "/Users/sarahraza/example" @@ -10,8 +10,16 @@ # change path for actions as relevant, relative to repo bazel_action_command = "bazel aquery //java/..." + +def writeToFile(dict_file): + print(dict_file) + with open(r'customer_info.yaml', 'w') as file: + yaml.dump(dict_file, file) + + if __name__ == '__main__': - # extract JSON files (for CPUTimes) and InputData from Commits + # dictionary with information + dict_file = {} # move to customer project os.chdir(repo_path) @@ -19,11 +27,14 @@ # get bazel version bazel_version = os.popen("bazel --version").read() print("bazel_version var", bazel_version) + dict_file["bazel version"] = bazel_version.strip() # get targets - bazel_target = os.popen(bazel_target_command).read() - print("bazel_target var", bazel_target) + # bazel_target = os.popen(bazel_target_command).read() + # print("bazel_target var", bazel_target) # get actions - bazel_action = os.popen(bazel_action_command).read() - print("bazel_target var", bazel_action) \ No newline at end of file + # bazel_action = os.popen(bazel_action_command).read() + # print("bazel_target var", bazel_action) + + writeToFile(dict_file) From 4d16539c2d8efa12f69347a358dd4f429fc0a390 Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Thu, 10 Nov 2022 12:39:01 -0800 Subject: [PATCH 03/22] changed directory --- customer_info.py => scripts/customer_info.py | 4 ++-- scripts/customer_info.yaml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) rename customer_info.py => scripts/customer_info.py (91%) create mode 100644 scripts/customer_info.yaml diff --git a/customer_info.py b/scripts/customer_info.py similarity index 91% rename from customer_info.py rename to scripts/customer_info.py index 4ece8bd..cc53c3f 100644 --- a/customer_info.py +++ b/scripts/customer_info.py @@ -2,7 +2,7 @@ import yaml # change this based on customer repo path -repo_path = "/Users/sarahraza/example" +repo_path = "/" # change path for targets as relevant, relative to repo bazel_target_command = "bazel cquery //java/..." @@ -13,7 +13,7 @@ def writeToFile(dict_file): print(dict_file) - with open(r'customer_info.yaml', 'w') as file: + with open(r'scripts/customer_info.yaml', 'w') as file: yaml.dump(dict_file, file) diff --git a/scripts/customer_info.yaml b/scripts/customer_info.yaml new file mode 100644 index 0000000..763d70a --- /dev/null +++ b/scripts/customer_info.yaml @@ -0,0 +1 @@ +bazel version: bazel 5.2.0 From 21e9ed69bf0beae65bedcd50cb9950e55ce7a3ce Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Mon, 21 Nov 2022 13:42:26 -0800 Subject: [PATCH 04/22] removed comments, added command --- scripts/customer_info.py | 23 ++++++++++------------- scripts/customer_info.yaml | 21 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 13 deletions(-) mode change 100644 => 100755 scripts/customer_info.py diff --git a/scripts/customer_info.py b/scripts/customer_info.py old mode 100644 new mode 100755 index cc53c3f..af75805 --- a/scripts/customer_info.py +++ b/scripts/customer_info.py @@ -1,11 +1,13 @@ import os +import sys + import yaml -# change this based on customer repo path -repo_path = "/" +# to run cd into scripts and run command "python customer_info.py PATH" where path = absolute path to yaml file +# EX: python customer_info.py "/Users/sarahraza/example/scripts/" # change path for targets as relevant, relative to repo -bazel_target_command = "bazel cquery //java/..." +bazel_cquery_target_command = "bazel cquery //java/..." # change path for actions as relevant, relative to repo bazel_action_command = "bazel aquery //java/..." @@ -13,7 +15,7 @@ def writeToFile(dict_file): print(dict_file) - with open(r'scripts/customer_info.yaml', 'w') as file: + with open(r'customer_info.yaml', 'w') as file: yaml.dump(dict_file, file) @@ -22,19 +24,14 @@ def writeToFile(dict_file): dict_file = {} # move to customer project - os.chdir(repo_path) + os.chdir(sys.argv[1]) # get bazel version bazel_version = os.popen("bazel --version").read() - print("bazel_version var", bazel_version) - dict_file["bazel version"] = bazel_version.strip() + dict_file["bazel version"] = str(bazel_version.strip()) # get targets - # bazel_target = os.popen(bazel_target_command).read() - # print("bazel_target var", bazel_target) - - # get actions - # bazel_action = os.popen(bazel_action_command).read() - # print("bazel_target var", bazel_action) + bazel_target = os.popen(bazel_cquery_target_command).read() + dict_file["bazel cquery targets"] = bazel_target writeToFile(dict_file) diff --git a/scripts/customer_info.yaml b/scripts/customer_info.yaml index 763d70a..6c8cc5d 100644 --- a/scripts/customer_info.yaml +++ b/scripts/customer_info.yaml @@ -1 +1,22 @@ +bazel cquery targets: '//java/com/engflow/example:ExampleTest (8a8f93d) + + //java/com/engflow/example:example (94fc984) + + //java/com/engflow/notificationqueue/demoserver:server (94fc984) + + //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (94fc984) + + //java/com/engflow/notificationqueue/demoserver:server_java_proto (94fc984) + + //java/com/engflow/notificationqueue/demoserver:server_proto (94fc984) + + //java/com/engflow/notificationqueue:client (94fc984) + + //java/com/engflow/notificationqueue:engflowapis_java_proto (94fc984) + + //java/com/engflow/notificationqueue:eventstore_java_grpc (94fc984) + + //java/com/engflow/notificationqueue:notification_queue_java_grpc (94fc984) + + ' bazel version: bazel 5.2.0 From 9f2fa21c981adbe7d9657d7440e121c271ce3cf8 Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Mon, 21 Nov 2022 13:44:16 -0800 Subject: [PATCH 05/22] added new folder --- scripts/{ => customer-info}/customer_info.py | 0 scripts/{ => customer-info}/customer_info.yaml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename scripts/{ => customer-info}/customer_info.py (100%) rename scripts/{ => customer-info}/customer_info.yaml (100%) diff --git a/scripts/customer_info.py b/scripts/customer-info/customer_info.py similarity index 100% rename from scripts/customer_info.py rename to scripts/customer-info/customer_info.py diff --git a/scripts/customer_info.yaml b/scripts/customer-info/customer_info.yaml similarity index 100% rename from scripts/customer_info.yaml rename to scripts/customer-info/customer_info.yaml From cd2988c203d9fc712a94250f82b0719f4d7d3d31 Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Mon, 21 Nov 2022 20:48:04 -0800 Subject: [PATCH 06/22] added cquery --- scripts/customer-info/customer_info.py | 16 +++++++++++----- scripts/customer-info/customer_info.yaml | 8 ++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index af75805..930fe7b 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -1,21 +1,22 @@ import os import sys +import re import yaml -# to run cd into scripts and run command "python customer_info.py PATH" where path = absolute path to yaml file -# EX: python customer_info.py "/Users/sarahraza/example/scripts/" +# to run cd into scripts and run command "python customer_info.py PATH" where path = absolute path to folder with yaml file +# EX: python customer_info.py "/Users/sarahraza/example/scripts/customer-info" # change path for targets as relevant, relative to repo bazel_cquery_target_command = "bazel cquery //java/..." -# change path for actions as relevant, relative to repo -bazel_action_command = "bazel aquery //java/..." +# change path for actions by changing //java/ as relevant, relative to repo +bazel_action_summary_command = "bazel aquery //java/... --output=summary" def writeToFile(dict_file): print(dict_file) - with open(r'customer_info.yaml', 'w') as file: + with open(r'/Users/sarahraza/example/scripts/customer-info/customer_info.yaml', 'w') as file: yaml.dump(dict_file, file) @@ -34,4 +35,9 @@ def writeToFile(dict_file): bazel_target = os.popen(bazel_cquery_target_command).read() dict_file["bazel cquery targets"] = bazel_target + # get action count + bazel_action_summary = (os.popen(bazel_action_summary_command).read()).split("\n\n") + clean_bazel_action_summary = [item.replace('\n','') for item in bazel_action_summary] + dict_file["bazel aquery information"] = clean_bazel_action_summary + writeToFile(dict_file) diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index 6c8cc5d..36da833 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -1,3 +1,11 @@ +bazel aquery information: +- 47 total actions. +- 'Mnemonics: GenProto: 1 TestRunner: 1 GenProtoDescriptorSet: 1 Action: 3 Middleman: + 3 FileWrite: 3 TemplateExpand: 3 SymlinkTree: 3 SourceSymlinkManifest: 3 JavaDeployJar: + 3 Turbine: 5 Javac: 8 JavaSourceJar: 10' +- 'Configurations: darwin-fastbuild: 47' +- 'Execution Platforms: @local_config_platform//:host: 47' +- 'Aspects: BazelJavaProtoAspect: 3' bazel cquery targets: '//java/com/engflow/example:ExampleTest (8a8f93d) //java/com/engflow/example:example (94fc984) From cad6ce9bd94d76ecfa4c38814cfd52613c8bbbaf Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Tue, 22 Nov 2022 17:48:53 -0800 Subject: [PATCH 07/22] Added flag functionality and readme file --- scripts/customer-info/customer_info.py | 42 +++++++++++++--- scripts/customer-info/customer_info.yaml | 40 +++++++-------- scripts/customer-info/readme.md | 64 ++++++++++++++++++++++++ 3 files changed, 119 insertions(+), 27 deletions(-) create mode 100644 scripts/customer-info/readme.md diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 930fe7b..d4e9123 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -1,3 +1,4 @@ +import json import os import sys import re @@ -13,12 +14,37 @@ # change path for actions by changing //java/ as relevant, relative to repo bazel_action_summary_command = "bazel aquery //java/... --output=summary" +bazel_config_command = "bazel config " + +# add the names of wanted flag values +relevant_flags = ["test_timeout", "experimental_allow_runtime_deps_on_neverlink","experimental_limit_android_lint_to_android_constrained_java"] + def writeToFile(dict_file): - print(dict_file) - with open(r'/Users/sarahraza/example/scripts/customer-info/customer_info.yaml', 'w') as file: + path_to_yaml = sys.argv[1] + "/customer_info.yaml" + with open(path_to_yaml, 'w') as file: yaml.dump(dict_file, file) +def extractFlags(bazel_target): + ids = set(re.findall(r'\(.*?\)', bazel_target)) + config_to_flag = {} + for id in ids: + config = id[1:-1] + bazel_specific_query_command = bazel_config_command + config + config_output = os.popen(bazel_specific_query_command).read() + config_to_flag[config] = config_output + for config, config_output in config_to_flag.items(): + flag_to_val = {} + for flag in relevant_flags: + start_index = config_output.find(flag) + end_index = config_output.find("\n", start_index) + flag_output = config_output[start_index:end_index] + if len(flag_output) != 0: + colon_index = flag_output.find(":") + flag_to_val[flag_output[:colon_index]] = flag_output[colon_index+2:] + config_to_flag[config] = flag_to_val + return config_to_flag + if __name__ == '__main__': # dictionary with information @@ -32,12 +58,16 @@ def writeToFile(dict_file): dict_file["bazel version"] = str(bazel_version.strip()) # get targets - bazel_target = os.popen(bazel_cquery_target_command).read() - dict_file["bazel cquery targets"] = bazel_target + # NOTE: these targets will be used to obtain the flags + bazel_target = (os.popen(bazel_cquery_target_command).read()) + dict_file["bazel targets"] = bazel_target.split("\n")[:-1] - # get action count + # get action information bazel_action_summary = (os.popen(bazel_action_summary_command).read()).split("\n\n") clean_bazel_action_summary = [item.replace('\n','') for item in bazel_action_summary] - dict_file["bazel aquery information"] = clean_bazel_action_summary + dict_file["bazel action information"] = clean_bazel_action_summary + + # get flags + dict_file["relevant bazel flags and values"] = extractFlags(bazel_target) writeToFile(dict_file) diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index 36da833..ffd45be 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -6,25 +6,23 @@ bazel aquery information: - 'Configurations: darwin-fastbuild: 47' - 'Execution Platforms: @local_config_platform//:host: 47' - 'Aspects: BazelJavaProtoAspect: 3' -bazel cquery targets: '//java/com/engflow/example:ExampleTest (8a8f93d) - - //java/com/engflow/example:example (94fc984) - - //java/com/engflow/notificationqueue/demoserver:server (94fc984) - - //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (94fc984) - - //java/com/engflow/notificationqueue/demoserver:server_java_proto (94fc984) - - //java/com/engflow/notificationqueue/demoserver:server_proto (94fc984) - - //java/com/engflow/notificationqueue:client (94fc984) - - //java/com/engflow/notificationqueue:engflowapis_java_proto (94fc984) - - //java/com/engflow/notificationqueue:eventstore_java_grpc (94fc984) - - //java/com/engflow/notificationqueue:notification_queue_java_grpc (94fc984) - - ' +bazel cquery targets: +- //java/com/engflow/example:ExampleTest (8a8f93d) +- //java/com/engflow/example:example (94fc984) +- //java/com/engflow/notificationqueue/demoserver:server (94fc984) +- //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (94fc984) +- //java/com/engflow/notificationqueue/demoserver:server_java_proto (94fc984) +- //java/com/engflow/notificationqueue/demoserver:server_proto (94fc984) +- //java/com/engflow/notificationqueue:client (94fc984) +- //java/com/engflow/notificationqueue:engflowapis_java_proto (94fc984) +- //java/com/engflow/notificationqueue:eventstore_java_grpc (94fc984) +- //java/com/engflow/notificationqueue:notification_queue_java_grpc (94fc984) +bazel flag information: + 8a8f93d: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + 94fc984: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' bazel version: bazel 5.2.0 diff --git a/scripts/customer-info/readme.md b/scripts/customer-info/readme.md new file mode 100644 index 0000000..b502fe4 --- /dev/null +++ b/scripts/customer-info/readme.md @@ -0,0 +1,64 @@ +GENERAL SUMMARY: +On a high level, our goal is to improve the customer experience by allowing us to obtain +the introduction customer information faster. Through running this script, we will recieve +a yaml file that contains the targets, relevant information about actions (number of total +actions, set of mnemonics, set of configurations, set of platforms, and set of aspects), the +bazel version being used, and the values of the relevant bazel flags. + +RUNNING/EDITING THE SCRIPT: +To run the script, +1. cd into the scripts folder and then the customer-info folder +2. run command "python customer_info.py PATH" where PATH = + absolute path to folder with yaml file +EX: python customer_info.py "/Users/sarahraza/example/scripts/customer-info" + +To customize the script, +- Change the file path in bazel_cquery_target_command +- Change the file path in bazel_action_summary_command +- Change the list of relevant flags by editing the relevant_flags list + +DETAILED SUMMARY: +Within the script, the following commands are called: +- bazel --version +- bazel cquery [file path]/... +- bazel aquery [file path]/... +- bazel config [identifier] + +The [file path] for each command can be changed through changing the following class variables: +- bazel_cquery_target_command +- bazel_action_summary_command + +The [identifier] is the unique identifier from each target outputted by the bazel cquery command. + +The output after running the script is a yaml file in the customer-info folder. The yaml +file contains 3 main blocks of information: +- bazel aquery information which contains 5 sub-blocks of information + 1. Total number of actions + 2. Mnemonics + 3. Configurations + 4. Execution Platform + 5. Aspects + - Example: + bazel aquery information: + - 47 total actions. + - 'Mnemonics: GenProto: 1 TestRunner: 1 GenProtoDescriptorSet: 1 Action: 3 Middleman: + 3 FileWrite: 3 TemplateExpand: 3 SymlinkTree: 3 SourceSymlinkManifest: 3 + JavaDeployJar: 3 Turbine: 5 Javac: 8 JavaSourceJar: 10' + - 'Configurations: darwin-fastbuild: 47' + - 'Execution Platforms: @local_config_platform//:host: 47' + - 'Aspects: BazelJavaProtoAspect: 3' +- bazel cquery targets under which there is a list of targets each of which has a unique + identifier at the end between parenthesis + - Example: + bazel cquery targets: + - //java/com/engflow/example:ExampleTest (8a8f93d) +- bazel flag information in which there is the relevant flag information for each identifier + - Example: + bazel flag information: + 8a8f93d: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + 94fc984: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' \ No newline at end of file From 93a3a3e1da1f415bbf728d8a38f46668e865000d Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Tue, 22 Nov 2022 18:04:28 -0800 Subject: [PATCH 08/22] added in comments, removed unecessary import --- scripts/customer-info/customer_info.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index d4e9123..3130ddb 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -1,4 +1,3 @@ -import json import os import sys import re @@ -26,13 +25,18 @@ def writeToFile(dict_file): yaml.dump(dict_file, file) def extractFlags(bazel_target): + # creates array of all unique identifiers ids = set(re.findall(r'\(.*?\)', bazel_target)) + + # creates dictionary mapping unique identifiers to fragments containing all flag information config_to_flag = {} for id in ids: config = id[1:-1] bazel_specific_query_command = bazel_config_command + config config_output = os.popen(bazel_specific_query_command).read() config_to_flag[config] = config_output + + # changes dictionary to map from unique identifiers to dictionary containing strings with relevant flag information for config, config_output in config_to_flag.items(): flag_to_val = {} for flag in relevant_flags: @@ -43,6 +47,7 @@ def extractFlags(bazel_target): colon_index = flag_output.find(":") flag_to_val[flag_output[:colon_index]] = flag_output[colon_index+2:] config_to_flag[config] = flag_to_val + return config_to_flag From 8687ab43c2008afe3a003d8af7400e5a6070771c Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Wed, 23 Nov 2022 13:51:04 -0800 Subject: [PATCH 09/22] Fixed aquery formatting, added in target as arg, added execute function, fixed readme formatting --- .../customer-info/{readme.md => README.md} | 53 +++++++++++------- scripts/customer-info/customer_info.py | 56 +++++++++++++------ scripts/customer-info/customer_info.yaml | 37 ++++++++---- 3 files changed, 98 insertions(+), 48 deletions(-) rename scripts/customer-info/{readme.md => README.md} (67%) diff --git a/scripts/customer-info/readme.md b/scripts/customer-info/README.md similarity index 67% rename from scripts/customer-info/readme.md rename to scripts/customer-info/README.md index b502fe4..274372b 100644 --- a/scripts/customer-info/readme.md +++ b/scripts/customer-info/README.md @@ -1,34 +1,39 @@ -GENERAL SUMMARY: +# GENERAL SUMMARY On a high level, our goal is to improve the customer experience by allowing us to obtain the introduction customer information faster. Through running this script, we will recieve a yaml file that contains the targets, relevant information about actions (number of total actions, set of mnemonics, set of configurations, set of platforms, and set of aspects), the bazel version being used, and the values of the relevant bazel flags. -RUNNING/EDITING THE SCRIPT: +# RUNNING/EDITING THE SCRIPT To run the script, -1. cd into the scripts folder and then the customer-info folder -2. run command "python customer_info.py PATH" where PATH = - absolute path to folder with yaml file -EX: python customer_info.py "/Users/sarahraza/example/scripts/customer-info" +1. Navigate to the ```scripts``` folder and then the ```customer-info``` folder +2. run command + ``` + python customer_info.py PATH //TARGET + ``` + where ```PATH``` = + absolute path to folder with yaml file and ```TARGET``` = the target to use + for cquery and aquery commands. An example command is below: + ``` + python customer_info.py "/Users/sarahraza/example/scripts/customer-info" "//java/..." + ``` -To customize the script, -- Change the file path in bazel_cquery_target_command -- Change the file path in bazel_action_summary_command -- Change the list of relevant flags by editing the relevant_flags list +To customize the script, +- Change the list of relevant flags by editing the ```relevant_flags``` variable -DETAILED SUMMARY: -Within the script, the following commands are called: -- bazel --version -- bazel cquery [file path]/... -- bazel aquery [file path]/... -- bazel config [identifier] +# DETAILED SUMMARY +Within the script, the following commands are called: +``` +bazel --version +bazel cquery //TARGET +bazel aquery //TARGET +bazel config IDENTIFIER +``` -The [file path] for each command can be changed through changing the following class variables: -- bazel_cquery_target_command -- bazel_action_summary_command +The ```TARGET``` for each command is passed in as the second argument. -The [identifier] is the unique identifier from each target outputted by the bazel cquery command. +The ```IDENTIFIER``` is the unique identifier from each target outputted by the bazel cquery command. The output after running the script is a yaml file in the customer-info folder. The yaml file contains 3 main blocks of information: @@ -39,6 +44,7 @@ file contains 3 main blocks of information: 4. Execution Platform 5. Aspects - Example: + ``` bazel aquery information: - 47 total actions. - 'Mnemonics: GenProto: 1 TestRunner: 1 GenProtoDescriptorSet: 1 Action: 3 Middleman: @@ -47,13 +53,17 @@ file contains 3 main blocks of information: - 'Configurations: darwin-fastbuild: 47' - 'Execution Platforms: @local_config_platform//:host: 47' - 'Aspects: BazelJavaProtoAspect: 3' + ``` - bazel cquery targets under which there is a list of targets each of which has a unique identifier at the end between parenthesis - Example: + ``` bazel cquery targets: - //java/com/engflow/example:ExampleTest (8a8f93d) + ``` - bazel flag information in which there is the relevant flag information for each identifier - Example: + ``` bazel flag information: 8a8f93d: experimental_allow_runtime_deps_on_neverlink: 'true' @@ -61,4 +71,5 @@ file contains 3 main blocks of information: test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' 94fc984: experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' \ No newline at end of file + experimental_limit_android_lint_to_android_constrained_java: 'false' + ``` \ No newline at end of file diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 3130ddb..309be37 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -1,23 +1,43 @@ import os import sys import re +import subprocess import yaml +# download pylint and add config file from engflow + # to run cd into scripts and run command "python customer_info.py PATH" where path = absolute path to folder with yaml file # EX: python customer_info.py "/Users/sarahraza/example/scripts/customer-info" # change path for targets as relevant, relative to repo -bazel_cquery_target_command = "bazel cquery //java/..." +bazel_cquery_target_command = ["bazel", "cquery", sys.argv[2]] # change path for actions by changing //java/ as relevant, relative to repo -bazel_action_summary_command = "bazel aquery //java/... --output=summary" - -bazel_config_command = "bazel config " +bazel_action_summary_command = ["bazel", "aquery", sys.argv[2], "--output=summary"] # add the names of wanted flag values -relevant_flags = ["test_timeout", "experimental_allow_runtime_deps_on_neverlink","experimental_limit_android_lint_to_android_constrained_java"] - +# use regular expression instead +relevant_flags = ["test_timeout", "experimental_allow_runtime_deps_on_neverlink", + "experimental_limit_android_lint_to_android_constrained_java"] + +def execute(args): + """ Executes an os command """ + try: + the_process = subprocess.run( + args, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + check=True + ) + except subprocess.CalledProcessError as error: + print("Could not execute os command ", error.returncode, " - ", error, file=sys.stderr) + sys.exit(1) + except subprocess.SubprocessError as error: + print("Could not execute os command ", error.returncode, " - ", error, file=sys.stderr) + sys.exit(1) + return the_process.stdout, the_process.stderr def writeToFile(dict_file): path_to_yaml = sys.argv[1] + "/customer_info.yaml" @@ -32,8 +52,8 @@ def extractFlags(bazel_target): config_to_flag = {} for id in ids: config = id[1:-1] - bazel_specific_query_command = bazel_config_command + config - config_output = os.popen(bazel_specific_query_command).read() + bazel_specific_config_command = ["bazel", "config", config] + config_output, stderr_flag = execute(bazel_specific_config_command) config_to_flag[config] = config_output # changes dictionary to map from unique identifiers to dictionary containing strings with relevant flag information @@ -59,20 +79,24 @@ def extractFlags(bazel_target): os.chdir(sys.argv[1]) # get bazel version - bazel_version = os.popen("bazel --version").read() - dict_file["bazel version"] = str(bazel_version.strip()) + bazel_version_arr = ["bazel", "--version"] + stdout_version, stderr_version = execute(bazel_version_arr) + dict_file["bazel version"] = str(stdout_version.strip()) # get targets # NOTE: these targets will be used to obtain the flags - bazel_target = (os.popen(bazel_cquery_target_command).read()) - dict_file["bazel targets"] = bazel_target.split("\n")[:-1] + stdout_target, stderr_target = execute(bazel_cquery_target_command) + dict_file["bazel targets"] = stdout_target.split("\n")[:-1] # get action information - bazel_action_summary = (os.popen(bazel_action_summary_command).read()).split("\n\n") - clean_bazel_action_summary = [item.replace('\n','') for item in bazel_action_summary] - dict_file["bazel action information"] = clean_bazel_action_summary + stdout_action_summary, stderr_action_summary = execute(bazel_action_summary_command) + bazel_action_summary = stdout_action_summary.split("\n\n") + formatted_bazel_action_summary = [] + for info in bazel_action_summary: + formatted_bazel_action_summary.append(info.split("\n")) + dict_file["bazel action information"] = formatted_bazel_action_summary # get flags - dict_file["relevant bazel flags and values"] = extractFlags(bazel_target) + dict_file["relevant bazel flags and values"] = extractFlags(stdout_target) writeToFile(dict_file) diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index ffd45be..279c325 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -1,12 +1,27 @@ -bazel aquery information: -- 47 total actions. -- 'Mnemonics: GenProto: 1 TestRunner: 1 GenProtoDescriptorSet: 1 Action: 3 Middleman: - 3 FileWrite: 3 TemplateExpand: 3 SymlinkTree: 3 SourceSymlinkManifest: 3 JavaDeployJar: - 3 Turbine: 5 Javac: 8 JavaSourceJar: 10' -- 'Configurations: darwin-fastbuild: 47' -- 'Execution Platforms: @local_config_platform//:host: 47' -- 'Aspects: BazelJavaProtoAspect: 3' -bazel cquery targets: +bazel action information: +- - 47 total actions. +- - 'Mnemonics:' + - ' GenProto: 1' + - ' TestRunner: 1' + - ' GenProtoDescriptorSet: 1' + - ' Action: 3' + - ' Middleman: 3' + - ' FileWrite: 3' + - ' TemplateExpand: 3' + - ' SymlinkTree: 3' + - ' SourceSymlinkManifest: 3' + - ' JavaDeployJar: 3' + - ' Turbine: 5' + - ' Javac: 8' + - ' JavaSourceJar: 10' +- - 'Configurations:' + - ' darwin-fastbuild: 47' +- - 'Execution Platforms:' + - ' @local_config_platform//:host: 47' +- - 'Aspects:' + - ' BazelJavaProtoAspect: 3' + - '' +bazel targets: - //java/com/engflow/example:ExampleTest (8a8f93d) - //java/com/engflow/example:example (94fc984) - //java/com/engflow/notificationqueue/demoserver:server (94fc984) @@ -17,7 +32,8 @@ bazel cquery targets: - //java/com/engflow/notificationqueue:engflowapis_java_proto (94fc984) - //java/com/engflow/notificationqueue:eventstore_java_grpc (94fc984) - //java/com/engflow/notificationqueue:notification_queue_java_grpc (94fc984) -bazel flag information: +bazel version: bazel 5.2.0 +relevant bazel flags and values: 8a8f93d: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' @@ -25,4 +41,3 @@ bazel flag information: 94fc984: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' -bazel version: bazel 5.2.0 From 08bfd1244535d5f0f892d5f791398d0b86812c0b Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Wed, 23 Nov 2022 13:53:12 -0800 Subject: [PATCH 10/22] removed unecessary comment --- scripts/customer-info/customer_info.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 309be37..194cc40 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -7,9 +7,6 @@ # download pylint and add config file from engflow -# to run cd into scripts and run command "python customer_info.py PATH" where path = absolute path to folder with yaml file -# EX: python customer_info.py "/Users/sarahraza/example/scripts/customer-info" - # change path for targets as relevant, relative to repo bazel_cquery_target_command = ["bazel", "cquery", sys.argv[2]] From 677f3fdba8d60a2f6864335d52cac3213ae3f4e5 Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Sat, 3 Dec 2022 15:55:06 -0800 Subject: [PATCH 11/22] fixed formatting, added error messages, added progress messages --- scripts/customer-info/customer_info.py | 19 +++++++++++++++ scripts/customer-info/customer_info.yaml | 30 ++++++++++++------------ 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 194cc40..27f7c73 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -7,6 +7,11 @@ # download pylint and add config file from engflow +if len(sys.argv) < 3: + print("Please provide the following arguments: file path to the customer-info directory and the target to execute. " + "Check README for further information.") + quit() + # change path for targets as relevant, relative to repo bazel_cquery_target_command = ["bazel", "cquery", sys.argv[2]] @@ -46,6 +51,7 @@ def extractFlags(bazel_target): ids = set(re.findall(r'\(.*?\)', bazel_target)) # creates dictionary mapping unique identifiers to fragments containing all flag information + print("Extracting all flags...") config_to_flag = {} for id in ids: config = id[1:-1] @@ -54,6 +60,7 @@ def extractFlags(bazel_target): config_to_flag[config] = config_output # changes dictionary to map from unique identifiers to dictionary containing strings with relevant flag information + print("Shortening to relevant flags and saving to file...") for config, config_output in config_to_flag.items(): flag_to_val = {} for flag in relevant_flags: @@ -69,6 +76,8 @@ def extractFlags(bazel_target): if __name__ == '__main__': + # error if there are not enough arguments + # dictionary with information dict_file = {} @@ -76,24 +85,34 @@ def extractFlags(bazel_target): os.chdir(sys.argv[1]) # get bazel version + print("Extracting bazel version information...") bazel_version_arr = ["bazel", "--version"] stdout_version, stderr_version = execute(bazel_version_arr) + print("Saving in file...") dict_file["bazel version"] = str(stdout_version.strip()) # get targets # NOTE: these targets will be used to obtain the flags + print("Extracting bazel targets...") stdout_target, stderr_target = execute(bazel_cquery_target_command) + print("Saving in file...") dict_file["bazel targets"] = stdout_target.split("\n")[:-1] # get action information + print("Extracting bazel action information based on targets...") stdout_action_summary, stderr_action_summary = execute(bazel_action_summary_command) bazel_action_summary = stdout_action_summary.split("\n\n") formatted_bazel_action_summary = [] for info in bazel_action_summary: formatted_bazel_action_summary.append(info.split("\n")) + action_string = formatted_bazel_action_summary[0] + num_actions = re.findall(r'\d+', action_string[0]) + formatted_bazel_action_summary[0] = "total_actions: " + num_actions[0] + print("Saving in file...") dict_file["bazel action information"] = formatted_bazel_action_summary # get flags + print("Extracting relevant flag information...") dict_file["relevant bazel flags and values"] = extractFlags(stdout_target) writeToFile(dict_file) diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index 279c325..b8f8bac 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -1,5 +1,5 @@ bazel action information: -- - 47 total actions. +- 'total_actions: 47' - - 'Mnemonics:' - ' GenProto: 1' - ' TestRunner: 1' @@ -17,27 +17,27 @@ bazel action information: - - 'Configurations:' - ' darwin-fastbuild: 47' - - 'Execution Platforms:' - - ' @local_config_platform//:host: 47' + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 47' - - 'Aspects:' - ' BazelJavaProtoAspect: 3' - '' bazel targets: -- //java/com/engflow/example:ExampleTest (8a8f93d) -- //java/com/engflow/example:example (94fc984) -- //java/com/engflow/notificationqueue/demoserver:server (94fc984) -- //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (94fc984) -- //java/com/engflow/notificationqueue/demoserver:server_java_proto (94fc984) -- //java/com/engflow/notificationqueue/demoserver:server_proto (94fc984) -- //java/com/engflow/notificationqueue:client (94fc984) -- //java/com/engflow/notificationqueue:engflowapis_java_proto (94fc984) -- //java/com/engflow/notificationqueue:eventstore_java_grpc (94fc984) -- //java/com/engflow/notificationqueue:notification_queue_java_grpc (94fc984) +- //java/com/engflow/example:ExampleTest (d7452c8) +- //java/com/engflow/example:example (2428b57) +- //java/com/engflow/notificationqueue/demoserver:server (2428b57) +- //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (2428b57) +- //java/com/engflow/notificationqueue/demoserver:server_java_proto (2428b57) +- //java/com/engflow/notificationqueue/demoserver:server_proto (2428b57) +- //java/com/engflow/notificationqueue:client (2428b57) +- //java/com/engflow/notificationqueue:engflowapis_java_proto (2428b57) +- //java/com/engflow/notificationqueue:eventstore_java_grpc (2428b57) +- //java/com/engflow/notificationqueue:notification_queue_java_grpc (2428b57) bazel version: bazel 5.2.0 relevant bazel flags and values: - 8a8f93d: + 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 94fc984: + d7452c8: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' From fb015a24f75f56ebcf11dbf74d2e4f3f351cd5cb Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Fri, 9 Dec 2022 01:22:43 -0800 Subject: [PATCH 12/22] added support for repo paths but data is unorganized, no option for seperate yaml files --- scripts/customer-info/README.md | 9 +- scripts/customer-info/customer_info.py | 121 ++++++++---- scripts/customer-info/customer_info.yaml | 238 +++++++++++++++++++---- 3 files changed, 282 insertions(+), 86 deletions(-) diff --git a/scripts/customer-info/README.md b/scripts/customer-info/README.md index 274372b..7533f82 100644 --- a/scripts/customer-info/README.md +++ b/scripts/customer-info/README.md @@ -10,13 +10,12 @@ To run the script, 1. Navigate to the ```scripts``` folder and then the ```customer-info``` folder 2. run command ``` - python customer_info.py PATH //TARGET + python customer_info.py PATH_TO_REPO ``` - where ```PATH``` = - absolute path to folder with yaml file and ```TARGET``` = the target to use - for cquery and aquery commands. An example command is below: + where ```PATH_TO_REPO``` = + absolute path to repo ``` - python customer_info.py "/Users/sarahraza/example/scripts/customer-info" "//java/..." + python customer_info.py "/Users/sarahraza/example" ``` To customize the script, diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 27f7c73..c067e3b 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -8,16 +8,10 @@ # download pylint and add config file from engflow if len(sys.argv) < 3: - print("Please provide the following arguments: file path to the customer-info directory and the target to execute. " + print("Please provide the following arguments: file path to repo and target. " "Check README for further information.") quit() -# change path for targets as relevant, relative to repo -bazel_cquery_target_command = ["bazel", "cquery", sys.argv[2]] - -# change path for actions by changing //java/ as relevant, relative to repo -bazel_action_summary_command = ["bazel", "aquery", sys.argv[2], "--output=summary"] - # add the names of wanted flag values # use regular expression instead relevant_flags = ["test_timeout", "experimental_allow_runtime_deps_on_neverlink", @@ -31,8 +25,12 @@ def execute(args): stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, - check=True + check=True, + timeout=60 ) + except subprocess.TimeoutExpired as error: + print("The command '{}' timed out after {} seconds".format(error.cmd, error.timeout), file=sys.stderr) + sys.exit(1) except subprocess.CalledProcessError as error: print("Could not execute os command ", error.returncode, " - ", error, file=sys.stderr) sys.exit(1) @@ -41,8 +39,8 @@ def execute(args): sys.exit(1) return the_process.stdout, the_process.stderr -def writeToFile(dict_file): - path_to_yaml = sys.argv[1] + "/customer_info.yaml" +def writeToFile(dict_file, path_to_customer_info): + path_to_yaml = path_to_customer_info + "/customer_info.yaml" with open(path_to_yaml, 'w') as file: yaml.dump(dict_file, file) @@ -61,6 +59,7 @@ def extractFlags(bazel_target): # changes dictionary to map from unique identifiers to dictionary containing strings with relevant flag information print("Shortening to relevant flags and saving to file...") + new_config_to_flag = {} for config, config_output in config_to_flag.items(): flag_to_val = {} for flag in relevant_flags: @@ -70,19 +69,40 @@ def extractFlags(bazel_target): if len(flag_output) != 0: colon_index = flag_output.find(":") flag_to_val[flag_output[:colon_index]] = flag_output[colon_index+2:] - config_to_flag[config] = flag_to_val + if config in new_config_to_flag: + print("current state", new_config_to_flag[config]) + print("new info", flag_to_val) + new_config_to_flag[config] = new_config_to_flag[config].update(flag_to_val) + else: + new_config_to_flag[config] = flag_to_val - return config_to_flag + return new_config_to_flag + +def getPotentialTargets(): + os.chdir(sys.argv[1]) + subfolders = [f.name for f in os.scandir(sys.argv[1]) if f.is_dir()] + potential_targets = [] + for folder_name in subfolders: + if '.' not in folder_name: + potential_targets.append("//"+folder_name+"/...") + return potential_targets if __name__ == '__main__': - # error if there are not enough arguments + potential_targets = getPotentialTargets() - # dictionary with information + # dictionary with all information to put in yaml file dict_file = {} + # dictionary with all bazel action information + dict_bazel_actions = {} + # dictionary with all config to flag information + dict_flag_information = [] + + # path to customer-info directory + path_to_customer_info = sys.argv[1] + "/scripts/customer-info" # move to customer project - os.chdir(sys.argv[1]) + os.chdir(path_to_customer_info) # get bazel version print("Extracting bazel version information...") @@ -91,28 +111,49 @@ def extractFlags(bazel_target): print("Saving in file...") dict_file["bazel version"] = str(stdout_version.strip()) - # get targets - # NOTE: these targets will be used to obtain the flags - print("Extracting bazel targets...") - stdout_target, stderr_target = execute(bazel_cquery_target_command) - print("Saving in file...") - dict_file["bazel targets"] = stdout_target.split("\n")[:-1] - - # get action information - print("Extracting bazel action information based on targets...") - stdout_action_summary, stderr_action_summary = execute(bazel_action_summary_command) - bazel_action_summary = stdout_action_summary.split("\n\n") - formatted_bazel_action_summary = [] - for info in bazel_action_summary: - formatted_bazel_action_summary.append(info.split("\n")) - action_string = formatted_bazel_action_summary[0] - num_actions = re.findall(r'\d+', action_string[0]) - formatted_bazel_action_summary[0] = "total_actions: " + num_actions[0] - print("Saving in file...") - dict_file["bazel action information"] = formatted_bazel_action_summary - - # get flags - print("Extracting relevant flag information...") - dict_file["relevant bazel flags and values"] = extractFlags(stdout_target) - - writeToFile(dict_file) + for target in potential_targets: + + # get targets + # NOTE: these targets will be used to obtain the flags + bazel_cquery_target_command = ["bazel", "cquery", target] + print("Extracting bazel targets...") + try: + stdout_target, stderr_target = execute(bazel_cquery_target_command) + except SystemExit: + continue + + # get action information + bazel_action_summary_command = ["bazel", "aquery", target, "--output=summary"] + print("Extracting bazel action information based on targets...") + try: + stdout_action_summary, stderr_action_summary = execute(bazel_action_summary_command) + bazel_action_summary = stdout_action_summary.split("\n\n") + formatted_bazel_action_summary = [] + for info in bazel_action_summary: + formatted_bazel_action_summary.append(info.split("\n")) + + # setting or updating action count to dict + num_actions = re.findall(r'\d+', formatted_bazel_action_summary[0][0]) + dict_bazel_actions.setdefault("total_actions", []).append(int(num_actions[0])) + + # adding other information to dictionary + for info in formatted_bazel_action_summary[1:]: + dict_bazel_actions.setdefault(info[0], []).append(info[1:]) + except SystemExit: + continue + + # get flags + print("Extracting relevant flag information...") + new_dict = extractFlags(stdout_target) + dict_flag_information.append(new_dict) + + # write targets, action, and flag to main dictionary + print("Saving targets in file...") + dict_file.setdefault("bazel_targets", []).append(stdout_target.split("\n")[:-1]) + print("Saving action information in file...") + dict_file.setdefault("bazel_action_information", []).append(dict_bazel_actions) + print("Saving flag information in file...") + dict_file.setdefault("relevant bazel flags and values", []).append(dict_flag_information) + + # write everything to the yaml file + writeToFile(dict_file, path_to_customer_info) diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index b8f8bac..57892be 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -1,43 +1,199 @@ -bazel action information: -- 'total_actions: 47' -- - 'Mnemonics:' - - ' GenProto: 1' - - ' TestRunner: 1' - - ' GenProtoDescriptorSet: 1' - - ' Action: 3' - - ' Middleman: 3' - - ' FileWrite: 3' - - ' TemplateExpand: 3' - - ' SymlinkTree: 3' - - ' SourceSymlinkManifest: 3' - - ' JavaDeployJar: 3' - - ' Turbine: 5' - - ' Javac: 8' - - ' JavaSourceJar: 10' -- - 'Configurations:' - - ' darwin-fastbuild: 47' -- - 'Execution Platforms:' - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 47' -- - 'Aspects:' - - ' BazelJavaProtoAspect: 3' - - '' -bazel targets: -- //java/com/engflow/example:ExampleTest (d7452c8) -- //java/com/engflow/example:example (2428b57) -- //java/com/engflow/notificationqueue/demoserver:server (2428b57) -- //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (2428b57) -- //java/com/engflow/notificationqueue/demoserver:server_java_proto (2428b57) -- //java/com/engflow/notificationqueue/demoserver:server_proto (2428b57) -- //java/com/engflow/notificationqueue:client (2428b57) -- //java/com/engflow/notificationqueue:engflowapis_java_proto (2428b57) -- //java/com/engflow/notificationqueue:eventstore_java_grpc (2428b57) -- //java/com/engflow/notificationqueue:notification_queue_java_grpc (2428b57) bazel version: bazel 5.2.0 +bazel_action_information: +- &id001 + 'Aspects:': + - - ' BazelJavaProtoAspect: 3' + - '' + 'Configurations:': + - - ' darwin-fastbuild: 43' + - - ' darwin-fastbuild: 5' + - - ' darwin-fastbuild: 11' + - - ' darwin-fastbuild: 47' + - - ' darwin-fastbuild: 8' + - - ' darwin-fastbuild: 16' + - - ' darwin-fastbuild: 8' + - - ' darwin-fastbuild: 196' + 'Execution Platforms:': + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 43' + - '' + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 5' + - '' + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 11' + - '' + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 47' + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 8' + - '' + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 16' + - '' + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 8' + - '' + - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 196' + - '' + 'Mnemonics:': + - - ' CcStrip: 1' + - ' TestRunner: 1' + - ' CppLink: 1' + - ' CppCompile: 1' + - ' Javac: 2' + - ' TemplateExpand: 2' + - ' JavaDeployJar: 2' + - ' FileWrite: 4' + - ' JavaSourceJar: 4' + - ' Fail: 4' + - ' Middleman: 7' + - ' SymlinkTree: 7' + - ' SourceSymlinkManifest: 7' + - - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' SourceSymlinkManifest: 1' + - ' GoLink: 1' + - ' GoCompilePkg: 1' + - - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' TestRunner: 1' + - ' SourceSymlinkManifest: 1' + - ' FileWrite: 1' + - ' Genrule: 1' + - ' TsProject: 1' + - ' TsValidateOptions: 1' + - ' CopyFile: 3' + - - ' GenProto: 1' + - ' TestRunner: 1' + - ' GenProtoDescriptorSet: 1' + - ' Action: 3' + - ' Middleman: 3' + - ' FileWrite: 3' + - ' TemplateExpand: 3' + - ' SymlinkTree: 3' + - ' SourceSymlinkManifest: 3' + - ' JavaDeployJar: 3' + - ' Turbine: 5' + - ' Javac: 8' + - ' JavaSourceJar: 10' + - - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' SourceSymlinkManifest: 1' + - ' TemplateExpand: 1' + - ' KotlinFoldJarsRuntime: 1' + - ' JdepsMerge: 1' + - ' KotlinCompile: 1' + - ' JavaSourceJar: 1' + - - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' TestRunner: 1' + - ' SourceSymlinkManifest: 1' + - ' TemplateExpand: 1' + - ' JavaIjar: 1' + - ' JavaSourceJar: 2' + - ' ScalaDeployJar: 2' + - ' Scalac: 2' + - ' FileWrite: 4' + - - ' CcStrip: 1' + - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' CppLink: 1' + - ' SourceSymlinkManifest: 1' + - ' CppCompile: 1' + - ' FileWrite: 2' + - - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' SourceSymlinkManifest: 1' + - ' FileWrite: 1' + - ' Compile: 1' + - ' CopyLauncher: 1' + - ' CopyFile: 190' + total_actions: + - 43 + - 5 + - 11 + - 47 + - 8 + - 16 + - 8 + - 196 +- *id001 +- *id001 +- *id001 +- *id001 +- *id001 +- *id001 +- *id001 +bazel_targets: +- - //docker/network:docker-network-test (d7452c8) + - //docker/network:jdk (2428b57) + - //docker/network:platform (2428b57) + - //docker/sandbox:dep0 (2428b57) + - //docker/sandbox:dep1 (2428b57) + - //docker/sandbox:dep2 (2428b57) + - //docker/sandbox:hello (2428b57) + - //docker/sandbox:hello-cc (2428b57) + - //docker/sandbox:hello-java (2428b57) +- - //go:go (2428b57) +- - //typescript:_validate_typescript_options (2428b57) + - //typescript:typescript (2428b57) + - //typescript:typesctript_test (d7452c8) + - //typescript:typesctript_test_0__deps (2428b57) +- - //java/com/engflow/example:ExampleTest (d7452c8) + - //java/com/engflow/example:example (2428b57) + - //java/com/engflow/notificationqueue/demoserver:server (2428b57) + - //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (2428b57) + - //java/com/engflow/notificationqueue/demoserver:server_java_proto (2428b57) + - //java/com/engflow/notificationqueue/demoserver:server_proto (2428b57) + - //java/com/engflow/notificationqueue:client (2428b57) + - //java/com/engflow/notificationqueue:engflowapis_java_proto (2428b57) + - //java/com/engflow/notificationqueue:eventstore_java_grpc (2428b57) + - //java/com/engflow/notificationqueue:notification_queue_java_grpc (2428b57) +- - //kotlin:kotlin (2428b57) +- - //scala/com/engflow/example:exampleScala (2428b57) + - //scala/com/engflow/example:exampleScalaTest (d7452c8) +- - //cpp:cpp (2428b57) +- - //csharp:csharp.exe (2428b57) relevant bazel flags and values: - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - d7452c8: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' +- &id002 + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + d7452c8: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + d7452c8: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + d7452c8: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + d7452c8: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 From 9a34d4cfcd8ebada21247c7231329ae43c80b35f Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Sat, 10 Dec 2022 16:01:54 -0800 Subject: [PATCH 13/22] Added in target organization for action info --- scripts/customer-info/customer_info.py | 33 ++++-- scripts/customer-info/customer_info.yaml | 145 +++++++++++++---------- 2 files changed, 105 insertions(+), 73 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index c067e3b..807a5a7 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -7,8 +7,8 @@ # download pylint and add config file from engflow -if len(sys.argv) < 3: - print("Please provide the following arguments: file path to repo and target. " +if len(sys.argv) < 2: + print("Please provide the following arguments: file path to repo." "Check README for further information.") quit() @@ -69,25 +69,27 @@ def extractFlags(bazel_target): if len(flag_output) != 0: colon_index = flag_output.find(":") flag_to_val[flag_output[:colon_index]] = flag_output[colon_index+2:] - if config in new_config_to_flag: - print("current state", new_config_to_flag[config]) - print("new info", flag_to_val) - new_config_to_flag[config] = new_config_to_flag[config].update(flag_to_val) - else: new_config_to_flag[config] = flag_to_val return new_config_to_flag def getPotentialTargets(): os.chdir(sys.argv[1]) - subfolders = [f.name for f in os.scandir(sys.argv[1]) if f.is_dir()] - potential_targets = [] - for folder_name in subfolders: - if '.' not in folder_name: - potential_targets.append("//"+folder_name+"/...") + bazel_query_command = ["bazel", "query", "..."] + stdout_version, stderr_version = execute(bazel_query_command) + all_targets = stdout_version.split('\n') + potential_targets = set() + for target in all_targets: + third_slash_index = target.find("/", 2) + colon_index = target.find(":") + if third_slash_index > 0: + potential_targets.add(target[:third_slash_index] + "/...") + elif colon_index > 0: + potential_targets.add(target[:colon_index] + "/...") return potential_targets + if __name__ == '__main__': potential_targets = getPotentialTargets() @@ -138,7 +140,12 @@ def getPotentialTargets(): # adding other information to dictionary for info in formatted_bazel_action_summary[1:]: - dict_bazel_actions.setdefault(info[0], []).append(info[1:]) + if info[0] in dict_bazel_actions: + dict_bazel_actions[info[0]][target] = info[1:] + else: + dict_bazel_actions[info[0]] = {} + dict_bazel_actions[info[0]][target] = info[1:] + except SystemExit: continue diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index 57892be..58ac9b8 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -2,35 +2,69 @@ bazel version: bazel 5.2.0 bazel_action_information: - &id001 'Aspects:': - - - ' BazelJavaProtoAspect: 3' + //java/...: + - ' BazelJavaProtoAspect: 3' - '' 'Configurations:': - - - ' darwin-fastbuild: 43' - - - ' darwin-fastbuild: 5' - - - ' darwin-fastbuild: 11' - - - ' darwin-fastbuild: 47' - - - ' darwin-fastbuild: 8' - - - ' darwin-fastbuild: 16' - - - ' darwin-fastbuild: 8' - - - ' darwin-fastbuild: 196' + //cpp/...: + - ' darwin-fastbuild: 8' + //csharp/...: + - ' darwin-fastbuild: 196' + //docker/...: + - ' darwin-fastbuild: 43' + //go/...: + - ' darwin-fastbuild: 5' + //java/...: + - ' darwin-fastbuild: 47' + //kotlin/...: + - ' darwin-fastbuild: 8' + //scala/...: + - ' darwin-fastbuild: 16' + //typescript/...: + - ' darwin-fastbuild: 11' 'Execution Platforms:': - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 43' + //cpp/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 8' - '' - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 5' + //csharp/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 196' - '' - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 11' + //docker/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 43' - '' - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 47' - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 8' + //go/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 5' - '' - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 16' + //java/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 47' + //kotlin/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 8' - '' - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 8' + //scala/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 16' - '' - - - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 196' + //typescript/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 11' - '' 'Mnemonics:': - - - ' CcStrip: 1' + //cpp/...: + - ' CcStrip: 1' + - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' CppLink: 1' + - ' SourceSymlinkManifest: 1' + - ' CppCompile: 1' + - ' FileWrite: 2' + //csharp/...: + - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' SourceSymlinkManifest: 1' + - ' FileWrite: 1' + - ' Compile: 1' + - ' CopyLauncher: 1' + - ' CopyFile: 190' + //docker/...: + - ' CcStrip: 1' - ' TestRunner: 1' - ' CppLink: 1' - ' CppCompile: 1' @@ -43,21 +77,14 @@ bazel_action_information: - ' Middleman: 7' - ' SymlinkTree: 7' - ' SourceSymlinkManifest: 7' - - - ' SymlinkTree: 1' + //go/...: + - ' SymlinkTree: 1' - ' Middleman: 1' - ' SourceSymlinkManifest: 1' - ' GoLink: 1' - ' GoCompilePkg: 1' - - - ' SymlinkTree: 1' - - ' Middleman: 1' - - ' TestRunner: 1' - - ' SourceSymlinkManifest: 1' - - ' FileWrite: 1' - - ' Genrule: 1' - - ' TsProject: 1' - - ' TsValidateOptions: 1' - - ' CopyFile: 3' - - - ' GenProto: 1' + //java/...: + - ' GenProto: 1' - ' TestRunner: 1' - ' GenProtoDescriptorSet: 1' - ' Action: 3' @@ -70,7 +97,8 @@ bazel_action_information: - ' Turbine: 5' - ' Javac: 8' - ' JavaSourceJar: 10' - - - ' SymlinkTree: 1' + //kotlin/...: + - ' SymlinkTree: 1' - ' Middleman: 1' - ' SourceSymlinkManifest: 1' - ' TemplateExpand: 1' @@ -78,7 +106,8 @@ bazel_action_information: - ' JdepsMerge: 1' - ' KotlinCompile: 1' - ' JavaSourceJar: 1' - - - ' SymlinkTree: 1' + //scala/...: + - ' SymlinkTree: 1' - ' Middleman: 1' - ' TestRunner: 1' - ' SourceSymlinkManifest: 1' @@ -88,29 +117,25 @@ bazel_action_information: - ' ScalaDeployJar: 2' - ' Scalac: 2' - ' FileWrite: 4' - - - ' CcStrip: 1' + //typescript/...: - ' SymlinkTree: 1' - ' Middleman: 1' - - ' CppLink: 1' - - ' SourceSymlinkManifest: 1' - - ' CppCompile: 1' - - ' FileWrite: 2' - - - ' SymlinkTree: 1' - - ' Middleman: 1' + - ' TestRunner: 1' - ' SourceSymlinkManifest: 1' - ' FileWrite: 1' - - ' Compile: 1' - - ' CopyLauncher: 1' - - ' CopyFile: 190' + - ' Genrule: 1' + - ' TsProject: 1' + - ' TsValidateOptions: 1' + - ' CopyFile: 3' total_actions: + - 8 - 43 + - 16 + - 47 - 5 + - 196 - 11 - - 47 - - 8 - - 16 - 8 - - 196 - *id001 - *id001 - *id001 @@ -119,6 +144,7 @@ bazel_action_information: - *id001 - *id001 bazel_targets: +- - //kotlin:kotlin (2428b57) - - //docker/network:docker-network-test (d7452c8) - //docker/network:jdk (2428b57) - //docker/network:platform (2428b57) @@ -128,11 +154,8 @@ bazel_targets: - //docker/sandbox:hello (2428b57) - //docker/sandbox:hello-cc (2428b57) - //docker/sandbox:hello-java (2428b57) -- - //go:go (2428b57) -- - //typescript:_validate_typescript_options (2428b57) - - //typescript:typescript (2428b57) - - //typescript:typesctript_test (d7452c8) - - //typescript:typesctript_test_0__deps (2428b57) +- - //scala/com/engflow/example:exampleScala (2428b57) + - //scala/com/engflow/example:exampleScalaTest (d7452c8) - - //java/com/engflow/example:ExampleTest (d7452c8) - //java/com/engflow/example:example (2428b57) - //java/com/engflow/notificationqueue/demoserver:server (2428b57) @@ -143,23 +166,25 @@ bazel_targets: - //java/com/engflow/notificationqueue:engflowapis_java_proto (2428b57) - //java/com/engflow/notificationqueue:eventstore_java_grpc (2428b57) - //java/com/engflow/notificationqueue:notification_queue_java_grpc (2428b57) -- - //kotlin:kotlin (2428b57) -- - //scala/com/engflow/example:exampleScala (2428b57) - - //scala/com/engflow/example:exampleScalaTest (d7452c8) -- - //cpp:cpp (2428b57) +- - //go:go (2428b57) - - //csharp:csharp.exe (2428b57) +- - //typescript:_validate_typescript_options (2428b57) + - //typescript:typescript (2428b57) + - //typescript:typesctript_test (d7452c8) + - //typescript:typesctript_test_0__deps (2428b57) +- - //cpp:cpp (2428b57) relevant bazel flags and values: - &id002 - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - d7452c8: + - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - - 2428b57: + d7452c8: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' @@ -180,13 +205,13 @@ relevant bazel flags and values: - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - d7452c8: + - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - - 2428b57: + d7452c8: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' From d48b5ad3a17204e8b7d0b61ccd48696914f71df4 Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Tue, 3 Jan 2023 20:04:23 -0800 Subject: [PATCH 14/22] added docstrings --- scripts/customer-info/customer_info.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 807a5a7..3a4d9dd 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -40,11 +40,14 @@ def execute(args): return the_process.stdout, the_process.stderr def writeToFile(dict_file, path_to_customer_info): + '''Takes in dictionary mapping category of data to value and writes to yaml file''' path_to_yaml = path_to_customer_info + "/customer_info.yaml" with open(path_to_yaml, 'w') as file: yaml.dump(dict_file, file) def extractFlags(bazel_target): + '''Takes in list of targets from cquery and returns flags for the targets''' + # creates array of all unique identifiers ids = set(re.findall(r'\(.*?\)', bazel_target)) @@ -73,7 +76,8 @@ def extractFlags(bazel_target): return new_config_to_flag -def getPotentialTargets(): +def getPotentialCommandFilePaths(): + '''Returns potential file paths as targets to execute bazel commands''' os.chdir(sys.argv[1]) bazel_query_command = ["bazel", "query", "..."] stdout_version, stderr_version = execute(bazel_query_command) @@ -91,7 +95,8 @@ def getPotentialTargets(): if __name__ == '__main__': - potential_targets = getPotentialTargets() + '''Executes bazel commands for each file path, saving targets, action information, and flags to yaml file''' + potential_targets = getPotentialCommandFilePaths() # dictionary with all information to put in yaml file dict_file = {} From 986946240598f6e82239f429b8e6898c5c0e8d6c Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Wed, 4 Jan 2023 08:06:49 -0800 Subject: [PATCH 15/22] added action summing --- scripts/customer-info/customer_info.py | 10 ++++++-- scripts/customer-info/customer_info.yaml | 32 +++++++++--------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 3a4d9dd..2bfb9bf 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -26,7 +26,7 @@ def execute(args): stderr=subprocess.PIPE, text=True, check=True, - timeout=60 + timeout=10 ) except subprocess.TimeoutExpired as error: print("The command '{}' timed out after {} seconds".format(error.cmd, error.timeout), file=sys.stderr) @@ -51,11 +51,13 @@ def extractFlags(bazel_target): # creates array of all unique identifiers ids = set(re.findall(r'\(.*?\)', bazel_target)) + print(bazel_target) + # creates dictionary mapping unique identifiers to fragments containing all flag information print("Extracting all flags...") config_to_flag = {} for id in ids: - config = id[1:-1] + config = id[1:-1] # removes parenthesis bazel_specific_config_command = ["bazel", "config", config] config_output, stderr_flag = execute(bazel_specific_config_command) config_to_flag[config] = config_output @@ -167,5 +169,9 @@ def getPotentialCommandFilePaths(): print("Saving flag information in file...") dict_file.setdefault("relevant bazel flags and values", []).append(dict_flag_information) + # sums all the individual action count and saves that value + sum_total_actions = sum(dict_file['bazel_action_information'][0]['total_actions']) + dict_file['bazel_action_information'][0]['total_actions'] = sum_total_actions + # write everything to the yaml file writeToFile(dict_file, path_to_customer_info) diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index 58ac9b8..3f5f7d4 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -127,15 +127,7 @@ bazel_action_information: - ' TsProject: 1' - ' TsValidateOptions: 1' - ' CopyFile: 3' - total_actions: - - 8 - - 43 - - 16 - - 47 - - 5 - - 196 - - 11 - - 8 + total_actions: 334 - *id001 - *id001 - *id001 @@ -144,6 +136,10 @@ bazel_action_information: - *id001 - *id001 bazel_targets: +- - //typescript:_validate_typescript_options (2428b57) + - //typescript:typescript (2428b57) + - //typescript:typesctript_test (d7452c8) + - //typescript:typesctript_test_0__deps (2428b57) - - //kotlin:kotlin (2428b57) - - //docker/network:docker-network-test (d7452c8) - //docker/network:jdk (2428b57) @@ -167,17 +163,10 @@ bazel_targets: - //java/com/engflow/notificationqueue:eventstore_java_grpc (2428b57) - //java/com/engflow/notificationqueue:notification_queue_java_grpc (2428b57) - - //go:go (2428b57) -- - //csharp:csharp.exe (2428b57) -- - //typescript:_validate_typescript_options (2428b57) - - //typescript:typescript (2428b57) - - //typescript:typesctript_test (d7452c8) - - //typescript:typesctript_test_0__deps (2428b57) - - //cpp:cpp (2428b57) +- - //csharp:csharp.exe (2428b57) relevant bazel flags and values: - &id002 - - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' @@ -185,6 +174,9 @@ relevant bazel flags and values: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' @@ -202,16 +194,16 @@ relevant bazel flags and values: - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - - 2428b57: + d7452c8: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - d7452c8: + - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' From 7bd919c77dbfad4017d37e118395e983f2c441d4 Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Wed, 4 Jan 2023 08:24:19 -0800 Subject: [PATCH 16/22] increased time out time --- scripts/customer-info/customer_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 2bfb9bf..d2c9245 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -26,7 +26,7 @@ def execute(args): stderr=subprocess.PIPE, text=True, check=True, - timeout=10 + timeout=30 ) except subprocess.TimeoutExpired as error: print("The command '{}' timed out after {} seconds".format(error.cmd, error.timeout), file=sys.stderr) From e9c4c2a06069358c96fc29b9c1c8b22b7ee7e10a Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Wed, 11 Jan 2023 11:12:31 -0800 Subject: [PATCH 17/22] added support for user options, reorganized bazel targets to be more readable --- scripts/customer-info/README.md | 11 ++ scripts/customer-info/customer_info.py | 21 +++- scripts/customer-info/customer_info.yaml | 133 +++++++++++++++-------- 3 files changed, 118 insertions(+), 47 deletions(-) diff --git a/scripts/customer-info/README.md b/scripts/customer-info/README.md index 7533f82..bead213 100644 --- a/scripts/customer-info/README.md +++ b/scripts/customer-info/README.md @@ -17,6 +17,17 @@ To run the script, ``` python customer_info.py "/Users/sarahraza/example" ``` +3. if you want cquery to run with a user option add it to the command + ``` + python customer_info.py PATH_TO_REPO USER_OPTION + ``` + where ```PATH_TO_REPO``` = + absolute path to repo + where ```USER_OPTION``` = + user option flag to run cquery with + ``` + python customer_info.py "/Users/sarahraza/example" "--compilation_mode=dbg" + ``` To customize the script, - Change the list of relevant flags by editing the ```relevant_flags``` variable diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index d2c9245..8e38f30 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -6,6 +6,8 @@ import yaml # download pylint and add config file from engflow +#TODO: reformat bazel targets by config +#TODO: investigate why flag section is repetitive if len(sys.argv) < 2: print("Please provide the following arguments: file path to repo." @@ -51,8 +53,6 @@ def extractFlags(bazel_target): # creates array of all unique identifiers ids = set(re.findall(r'\(.*?\)', bazel_target)) - print(bazel_target) - # creates dictionary mapping unique identifiers to fragments containing all flag information print("Extracting all flags...") config_to_flag = {} @@ -106,10 +106,17 @@ def getPotentialCommandFilePaths(): dict_bazel_actions = {} # dictionary with all config to flag information dict_flag_information = [] + # dictionary with bazel target information + targets_dict = {} # path to customer-info directory path_to_customer_info = sys.argv[1] + "/scripts/customer-info" + # if user option passed in save + user_option = "" + if len(sys.argv) == 3: + user_option = sys.argv[2] + # move to customer project os.chdir(path_to_customer_info) @@ -125,9 +132,17 @@ def getPotentialCommandFilePaths(): # get targets # NOTE: these targets will be used to obtain the flags bazel_cquery_target_command = ["bazel", "cquery", target] + if user_option: + bazel_cquery_target_command = ["bazel", "cquery", target, user_option] print("Extracting bazel targets...") try: stdout_target, stderr_target = execute(bazel_cquery_target_command) + processed_stdout_target = stdout_target.split("\n")[:-1] + for s in processed_stdout_target: + parts = s.split(' ') + key = parts[-1][1:-1] + value = parts[0] + targets_dict.setdefault(key, []).append(value) except SystemExit: continue @@ -163,7 +178,7 @@ def getPotentialCommandFilePaths(): # write targets, action, and flag to main dictionary print("Saving targets in file...") - dict_file.setdefault("bazel_targets", []).append(stdout_target.split("\n")[:-1]) + dict_file.setdefault("bazel_targets", []).append(targets_dict) print("Saving action information in file...") dict_file.setdefault("bazel_action_information", []).append(dict_bazel_actions) print("Saving flag information in file...") diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index 3f5f7d4..0393708 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -18,6 +18,10 @@ bazel_action_information: - ' darwin-fastbuild: 47' //kotlin/...: - ' darwin-fastbuild: 8' + //perl/...: + - ' darwin-fastbuild: 4' + //python/...: + - ' darwin-fastbuild: 6' //scala/...: - ' darwin-fastbuild: 16' //typescript/...: @@ -40,6 +44,12 @@ bazel_action_information: //kotlin/...: - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 8' - '' + //perl/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 4' + - '' + //python/...: + - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 6' + - '' //scala/...: - ' @io_bazel_rules_dotnet//dotnet/toolchain:darwin_amd64_3.1.100: 16' - '' @@ -106,6 +116,17 @@ bazel_action_information: - ' JdepsMerge: 1' - ' KotlinCompile: 1' - ' JavaSourceJar: 1' + //perl/...: + - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' SourceSymlinkManifest: 1' + - ' TemplateExpand: 1' + //python/...: + - ' SymlinkTree: 1' + - ' Middleman: 1' + - ' SourceSymlinkManifest: 1' + - ' PythonZipper: 1' + - ' TemplateExpand: 2' //scala/...: - ' SymlinkTree: 1' - ' Middleman: 1' @@ -127,7 +148,9 @@ bazel_action_information: - ' TsProject: 1' - ' TsValidateOptions: 1' - ' CopyFile: 3' - total_actions: 334 + total_actions: 344 +- *id001 +- *id001 - *id001 - *id001 - *id001 @@ -136,37 +159,54 @@ bazel_action_information: - *id001 - *id001 bazel_targets: -- - //typescript:_validate_typescript_options (2428b57) - - //typescript:typescript (2428b57) - - //typescript:typesctript_test (d7452c8) - - //typescript:typesctript_test_0__deps (2428b57) -- - //kotlin:kotlin (2428b57) -- - //docker/network:docker-network-test (d7452c8) - - //docker/network:jdk (2428b57) - - //docker/network:platform (2428b57) - - //docker/sandbox:dep0 (2428b57) - - //docker/sandbox:dep1 (2428b57) - - //docker/sandbox:dep2 (2428b57) - - //docker/sandbox:hello (2428b57) - - //docker/sandbox:hello-cc (2428b57) - - //docker/sandbox:hello-java (2428b57) -- - //scala/com/engflow/example:exampleScala (2428b57) - - //scala/com/engflow/example:exampleScalaTest (d7452c8) -- - //java/com/engflow/example:ExampleTest (d7452c8) - - //java/com/engflow/example:example (2428b57) - - //java/com/engflow/notificationqueue/demoserver:server (2428b57) - - //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto (2428b57) - - //java/com/engflow/notificationqueue/demoserver:server_java_proto (2428b57) - - //java/com/engflow/notificationqueue/demoserver:server_proto (2428b57) - - //java/com/engflow/notificationqueue:client (2428b57) - - //java/com/engflow/notificationqueue:engflowapis_java_proto (2428b57) - - //java/com/engflow/notificationqueue:eventstore_java_grpc (2428b57) - - //java/com/engflow/notificationqueue:notification_queue_java_grpc (2428b57) -- - //go:go (2428b57) -- - //cpp:cpp (2428b57) -- - //csharp:csharp.exe (2428b57) -relevant bazel flags and values: - &id002 + 2428b57: + - //kotlin:kotlin + - //docker/network:jdk + - //docker/network:platform + - //docker/sandbox:dep0 + - //docker/sandbox:dep1 + - //docker/sandbox:dep2 + - //docker/sandbox:hello + - //docker/sandbox:hello-cc + - //docker/sandbox:hello-java + - //go:go + - //cpp:cpp + - //perl:perl + - //python:python + - //typescript:_validate_typescript_options + - //typescript:typescript + - //typescript:typesctript_test_0__deps + - //csharp:csharp.exe + - //scala/com/engflow/example:exampleScala + - //java/com/engflow/example:example + - //java/com/engflow/notificationqueue/demoserver:server + - //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto + - //java/com/engflow/notificationqueue/demoserver:server_java_proto + - //java/com/engflow/notificationqueue/demoserver:server_proto + - //java/com/engflow/notificationqueue:client + - //java/com/engflow/notificationqueue:engflowapis_java_proto + - //java/com/engflow/notificationqueue:eventstore_java_grpc + - //java/com/engflow/notificationqueue:notification_queue_java_grpc + d7452c8: + - //docker/network:docker-network-test + - //typescript:typesctript_test + - //scala/com/engflow/example:exampleScalaTest + - //java/com/engflow/example:ExampleTest +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 +- *id002 +relevant bazel flags and values: +- &id003 + - 2428b57: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' @@ -180,17 +220,12 @@ relevant bazel flags and values: - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - d7452c8: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - d7452c8: + - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' @@ -204,13 +239,23 @@ relevant bazel flags and values: - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' + d7452c8: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' - 2428b57: experimental_allow_runtime_deps_on_neverlink: 'true' experimental_limit_android_lint_to_android_constrained_java: 'false' -- *id002 -- *id002 -- *id002 -- *id002 -- *id002 -- *id002 -- *id002 + d7452c8: + experimental_allow_runtime_deps_on_neverlink: 'true' + experimental_limit_android_lint_to_android_constrained_java: 'false' + test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' +- *id003 +- *id003 +- *id003 +- *id003 +- *id003 +- *id003 +- *id003 +- *id003 +- *id003 From bdf4edd8c923078ad0b730c2119783d23a3f9ffa Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Wed, 11 Jan 2023 11:13:03 -0800 Subject: [PATCH 18/22] remvoed TODOs --- scripts/customer-info/customer_info.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index 8e38f30..d12a7a5 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -6,8 +6,6 @@ import yaml # download pylint and add config file from engflow -#TODO: reformat bazel targets by config -#TODO: investigate why flag section is repetitive if len(sys.argv) < 2: print("Please provide the following arguments: file path to repo." From 2941e96fdcdab18720ebb16bba2e2554dc76a281 Mon Sep 17 00:00:00 2001 From: sarahraza007 <61799142+sarahraza007@users.noreply.github.com> Date: Sun, 12 Mar 2023 14:30:42 -0700 Subject: [PATCH 19/22] Update scripts/customer-info/README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Andrés Felipe Barco Santa --- scripts/customer-info/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/customer-info/README.md b/scripts/customer-info/README.md index bead213..bcfecd7 100644 --- a/scripts/customer-info/README.md +++ b/scripts/customer-info/README.md @@ -1,4 +1,4 @@ -# GENERAL SUMMARY +# Summary On a high level, our goal is to improve the customer experience by allowing us to obtain the introduction customer information faster. Through running this script, we will recieve a yaml file that contains the targets, relevant information about actions (number of total From 4af3a40045c5bf4f3018d5724cc8c12f6278de29 Mon Sep 17 00:00:00 2001 From: sarahraza007 <61799142+sarahraza007@users.noreply.github.com> Date: Sun, 12 Mar 2023 14:30:50 -0700 Subject: [PATCH 20/22] Update scripts/customer-info/README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Andrés Felipe Barco Santa --- scripts/customer-info/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/customer-info/README.md b/scripts/customer-info/README.md index bcfecd7..8d3cd15 100644 --- a/scripts/customer-info/README.md +++ b/scripts/customer-info/README.md @@ -5,7 +5,7 @@ a yaml file that contains the targets, relevant information about actions (numbe actions, set of mnemonics, set of configurations, set of platforms, and set of aspects), the bazel version being used, and the values of the relevant bazel flags. -# RUNNING/EDITING THE SCRIPT +## Running and iterating the script To run the script, 1. Navigate to the ```scripts``` folder and then the ```customer-info``` folder 2. run command From 8781a33cb71a9f0a001dad87e73f0d9784d30f71 Mon Sep 17 00:00:00 2001 From: sarahraza007 <61799142+sarahraza007@users.noreply.github.com> Date: Sun, 12 Mar 2023 14:30:56 -0700 Subject: [PATCH 21/22] Update scripts/customer-info/README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Andrés Felipe Barco Santa --- scripts/customer-info/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/customer-info/README.md b/scripts/customer-info/README.md index 8d3cd15..efa601b 100644 --- a/scripts/customer-info/README.md +++ b/scripts/customer-info/README.md @@ -32,7 +32,7 @@ To run the script, To customize the script, - Change the list of relevant flags by editing the ```relevant_flags``` variable -# DETAILED SUMMARY +## Detailed summary Within the script, the following commands are called: ``` bazel --version From 6fdd01167b89c3261c44bb3b45e305f0e171210f Mon Sep 17 00:00:00 2001 From: Sarah Raza Date: Sun, 12 Mar 2023 14:55:38 -0700 Subject: [PATCH 22/22] changed flags to more relevant ones --- scripts/customer-info/customer_info.py | 8 +- scripts/customer-info/customer_info.yaml | 540 +++++++++++++++++++++-- 2 files changed, 507 insertions(+), 41 deletions(-) diff --git a/scripts/customer-info/customer_info.py b/scripts/customer-info/customer_info.py index d12a7a5..fd70ad3 100755 --- a/scripts/customer-info/customer_info.py +++ b/scripts/customer-info/customer_info.py @@ -7,6 +7,11 @@ # download pylint and add config file from engflow +# adding links for the mnemonics using sourcegraph +## collect important repos +# estimating action sizes based on input or output +# key words for relevant flags: remote, experimental, incompatible, BES, mnemonic + if len(sys.argv) < 2: print("Please provide the following arguments: file path to repo." "Check README for further information.") @@ -14,8 +19,7 @@ # add the names of wanted flag values # use regular expression instead -relevant_flags = ["test_timeout", "experimental_allow_runtime_deps_on_neverlink", - "experimental_limit_android_lint_to_android_constrained_java"] +relevant_flags = ['enable_platform_specific_config', 'experimental_announce_profile_path', 'explicit_java_test_deps', 'nostamp', 'incompatible_strict_action_env', 'verbose_failures', 'experimental_merged_skyframe_analysis_execution', 'experimental_skymeld_ui', 'experimental_remote_mark_tool_inputs', 'compilation_mode', 'compilation_mode', 'compilation_mode', 'incompatible_enable_cc_toolchain_resolution', '-supports_dynamic_linker', 'config', 'config', 'config', 'java_language_version', 'java_runtime_version', 'tool_java_language_version', 'tool_java_runtime_version', 'experimental_one_version_enforcement', '@io_bazel_rules_go//go/config:pure', 'cxxopt', 'host_cxxopt', 'cxxopt', 'host_cxxopt', 'cxxopt', 'host_cxxopt', 'cxxopt', 'host_cxxopt', 'cxxopt', 'host_cxxopt', 'cxxopt', 'host_cxxopt', 'workspace_status_command', 'workspace_status_command', 'workspace_status_command', 'build_tag_filters', 'test_tag_filters', 'experimental_action_listener', 'aspects', 'aspects', 'experimental_action_listener', 'nouse_ijars', 'aspects', 'config', 'keep_going', 'build_tag_filters', 'test_tag_filters', 'config', 'config', 'config', 'test_summary', 'test_output', 'instrumentation_filter', 'combined_report', 'experimental_one_version_enforcement', 'config', 'color', 'curses', 'show_timestamps', 'announce_rc', 'test_output', 'show_progress_rate_limit', 'build_tag_filters', 'test_tag_filters', 'test_env', 'test_env', 'test_env', 'test_env', 'test_env'] def execute(args): """ Executes an os command """ diff --git a/scripts/customer-info/customer_info.yaml b/scripts/customer-info/customer_info.yaml index 0393708..dbe66dd 100644 --- a/scripts/customer-info/customer_info.yaml +++ b/scripts/customer-info/customer_info.yaml @@ -161,7 +161,7 @@ bazel_action_information: bazel_targets: - &id002 2428b57: - - //kotlin:kotlin + - //csharp:csharp.exe - //docker/network:jdk - //docker/network:platform - //docker/sandbox:dep0 @@ -170,15 +170,15 @@ bazel_targets: - //docker/sandbox:hello - //docker/sandbox:hello-cc - //docker/sandbox:hello-java - - //go:go + - //python:python + - //scala/com/engflow/example:exampleScala - //cpp:cpp + - //go:go + - //kotlin:kotlin - //perl:perl - - //python:python - //typescript:_validate_typescript_options - //typescript:typescript - //typescript:typesctript_test_0__deps - - //csharp:csharp.exe - - //scala/com/engflow/example:exampleScala - //java/com/engflow/example:example - //java/com/engflow/notificationqueue/demoserver:server - //java/com/engflow/notificationqueue/demoserver:server_java_grpc_proto @@ -190,8 +190,8 @@ bazel_targets: - //java/com/engflow/notificationqueue:notification_queue_java_grpc d7452c8: - //docker/network:docker-network-test - - //typescript:typesctript_test - //scala/com/engflow/example:exampleScalaTest + - //typescript:typesctript_test - //java/com/engflow/example:ExampleTest - *id002 - *id002 @@ -205,51 +205,513 @@ bazel_targets: relevant bazel flags and values: - &id003 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 d7452c8: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + test_outputs: 'true' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 + d7452c8: + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + test_outputs: 'true' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - d7452c8: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 d7452c8: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + test_outputs: 'true' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - 2428b57: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 d7452c8: - experimental_allow_runtime_deps_on_neverlink: 'true' - experimental_limit_android_lint_to_android_constrained_java: 'false' - test_timeout: '{short=PT1M, moderate=PT5M, long=PT15M, eternal=PT1H}' + compilation_mode: fastbuild + ? config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], + com.google.devtools.build.lib.analysis.test.TestConfiguration + : '[com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], + com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: + [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], + com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: + [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], + com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], + com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: + [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], + com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], + com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], + com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: + [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: + [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], + com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], + com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], + com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], + com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], + com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions], ' + cxxopt: '[]' + experimental_action_listener: '[]' + experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test: 'false' + explicit_java_test_deps: 'false' + host_cxxopt: '[]' + incompatible_enable_cc_toolchain_resolution: 'false' + incompatible_strict_action_env: 'false' + instrumentation_filter: -(?:(?>/javatests[/:])|(?>/test/java[/:])) + java_language_version: '8' + java_runtime_version: local_jdk + test_env: '[]' + test_outputs: 'true' + tool_java_language_version: '8' + tool_java_runtime_version: remotejdk_11 - *id003 - *id003 - *id003