blob: 21f5ad10d6b23835474a7d611e6c1efe95cbd941 [file] [log] [blame]
Damien Martin-Guillerezf88f4d82015-09-25 13:56:55 +00001// Copyright 2014 The Bazel Authors. All rights reserved.
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +01002//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14package com.google.devtools.build.lib.skyframe;
15
mschaller7f08dbd2019-02-27 11:10:51 -080016import com.google.common.annotations.VisibleForTesting;
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010017import com.google.common.base.Predicate;
janakrbaf52ae2018-02-14 09:03:18 -080018import com.google.devtools.build.lib.actions.ActionLookupData;
janakre54491e2018-07-11 16:29:13 -070019import com.google.devtools.build.skyframe.FunctionHermeticity;
janakrb9d8d582018-06-13 21:57:19 -070020import com.google.devtools.build.skyframe.ShareabilityOfValue;
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010021import com.google.devtools.build.skyframe.SkyFunctionName;
22import com.google.devtools.build.skyframe.SkyKey;
23
schmitt9c230f12019-03-13 13:42:51 -070024/** Value types in Skyframe. */
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010025public final class SkyFunctions {
janakre54491e2018-07-11 16:29:13 -070026 public static final SkyFunctionName PRECOMPUTED =
27 SkyFunctionName.createNonHermetic("PRECOMPUTED");
Klaus Aehligcd708c32016-09-15 13:48:47 +000028 public static final SkyFunctionName CLIENT_ENVIRONMENT_VARIABLE =
janakre54491e2018-07-11 16:29:13 -070029 SkyFunctionName.createNonHermetic("CLIENT_ENVIRONMENT_VARIABLE");
Damien Martin-Guillerez777f3af2017-02-08 17:22:02 +000030 public static final SkyFunctionName ACTION_ENVIRONMENT_VARIABLE =
janakre54491e2018-07-11 16:29:13 -070031 SkyFunctionName.createHermetic("ACTION_ENVIRONMENT_VARIABLE");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010032 public static final SkyFunctionName DIRECTORY_LISTING_STATE =
janakre54491e2018-07-11 16:29:13 -070033 SkyFunctionName.createNonHermetic("DIRECTORY_LISTING_STATE");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010034 public static final SkyFunctionName FILE_SYMLINK_CYCLE_UNIQUENESS =
janakre54491e2018-07-11 16:29:13 -070035 SkyFunctionName.createHermetic("FILE_SYMLINK_CYCLE_UNIQUENESS");
Nathan Harmataad810502015-07-29 01:33:49 +000036 public static final SkyFunctionName FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS =
janakre54491e2018-07-11 16:29:13 -070037 SkyFunctionName.createHermetic("FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010038 public static final SkyFunctionName DIRECTORY_LISTING =
janakre54491e2018-07-11 16:29:13 -070039 SkyFunctionName.createHermetic("DIRECTORY_LISTING");
janakra34fbbd2019-01-07 15:06:27 -080040 // Hermetic even though package lookups secretly access the set of deleted packages, because
janakr62dfdf52019-01-07 13:32:55 -080041 // SequencedSkyframeExecutor deletes any affected PACKAGE_LOOKUP nodes when that set changes.
janakre54491e2018-07-11 16:29:13 -070042 public static final SkyFunctionName PACKAGE_LOOKUP =
janakr62dfdf52019-01-07 13:32:55 -080043 SkyFunctionName.createHermetic("PACKAGE_LOOKUP");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010044 public static final SkyFunctionName CONTAINING_PACKAGE_LOOKUP =
janakre54491e2018-07-11 16:29:13 -070045 SkyFunctionName.createHermetic("CONTAINING_PACKAGE_LOOKUP");
janakre54491e2018-07-11 16:29:13 -070046 public static final SkyFunctionName AST_FILE_LOOKUP =
mjhalupkabb3989b2019-01-08 14:10:49 -080047 SkyFunctionName.createHermetic("AST_FILE_LOOKUP");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010048 public static final SkyFunctionName SKYLARK_IMPORTS_LOOKUP =
janakre54491e2018-07-11 16:29:13 -070049 SkyFunctionName.createHermetic("SKYLARK_IMPORTS_LOOKUP");
50 public static final SkyFunctionName GLOB = SkyFunctionName.createHermetic("GLOB");
51 public static final SkyFunctionName PACKAGE = SkyFunctionName.createHermetic("PACKAGE");
52 static final SkyFunctionName PACKAGE_ERROR = SkyFunctionName.createHermetic("PACKAGE_ERROR");
shreyaxdcae7dc2018-10-02 12:56:15 -070053 public static final SkyFunctionName PACKAGE_ERROR_MESSAGE =
janakre54491e2018-07-11 16:29:13 -070054 SkyFunctionName.createHermetic("PACKAGE_ERROR_MESSAGE");
55 public static final SkyFunctionName TARGET_MARKER =
56 SkyFunctionName.createHermetic("TARGET_MARKER");
janakr83e31f62019-02-06 13:46:15 -080057 // Semi-hermetic because accesses package locator
janakre54491e2018-07-11 16:29:13 -070058 public static final SkyFunctionName TARGET_PATTERN =
janakr83e31f62019-02-06 13:46:15 -080059 SkyFunctionName.createSemiHermetic("TARGET_PATTERN");
janakre54491e2018-07-11 16:29:13 -070060 static final SkyFunctionName TARGET_PATTERN_ERROR =
61 SkyFunctionName.createHermetic("TARGET_PATTERN_ERROR");
Mark Schallerf7cb6682015-03-30 14:37:36 +000062 public static final SkyFunctionName PREPARE_DEPS_OF_PATTERNS =
janakre54491e2018-07-11 16:29:13 -070063 SkyFunctionName.createHermetic("PREPARE_DEPS_OF_PATTERNS");
64 // Non-hermetic because accesses package locator
Mark Schaller7b0bc0a2015-06-30 23:57:45 +000065 public static final SkyFunctionName PREPARE_DEPS_OF_PATTERN =
janakre54491e2018-07-11 16:29:13 -070066 SkyFunctionName.createNonHermetic("PREPARE_DEPS_OF_PATTERN");
Mark Schaller7b0bc0a2015-06-30 23:57:45 +000067 public static final SkyFunctionName PREPARE_DEPS_OF_TARGETS_UNDER_DIRECTORY =
janakre54491e2018-07-11 16:29:13 -070068 SkyFunctionName.createHermetic("PREPARE_DEPS_OF_TARGETS_UNDER_DIRECTORY");
shreyaxdcae7dc2018-10-02 12:56:15 -070069 public static final SkyFunctionName PREPARE_TEST_SUITES_UNDER_DIRECTORY =
70 SkyFunctionName.createHermetic("PREPARE_TEST_SUITES_UNDER_DIRECTORY");
Janak Ramakrishnan79eb4092016-10-11 22:06:40 +000071 public static final SkyFunctionName COLLECT_TARGETS_IN_PACKAGE =
janakre54491e2018-07-11 16:29:13 -070072 SkyFunctionName.createHermetic("COLLECT_TARGETS_IN_PACKAGE");
shreyaxdcae7dc2018-10-02 12:56:15 -070073 public static final SkyFunctionName COLLECT_TEST_SUITES_IN_PACKAGE =
74 SkyFunctionName.createHermetic("COLLECT_TEST_SUITES_IN_PACKAGE");
Janak Ramakrishnanf1e257d2016-01-07 17:14:59 +000075 public static final SkyFunctionName COLLECT_PACKAGES_UNDER_DIRECTORY =
janakre54491e2018-07-11 16:29:13 -070076 SkyFunctionName.createHermetic("COLLECT_PACKAGES_UNDER_DIRECTORY");
Eric Fellheimer7ef96d72015-11-12 02:28:44 +000077 public static final SkyFunctionName BLACKLISTED_PACKAGE_PREFIXES =
janakre54491e2018-07-11 16:29:13 -070078 SkyFunctionName.createHermetic("BLACKLISTED_PACKAGE_PREFIXES");
79 static final SkyFunctionName TEST_SUITE_EXPANSION =
80 SkyFunctionName.createHermetic("TEST_SUITE_EXPANSION");
81 static final SkyFunctionName TESTS_IN_SUITE = SkyFunctionName.createHermetic("TESTS_IN_SUITE");
82 // Non-hermetic because accesses package locator
83 static final SkyFunctionName TARGET_PATTERN_PHASE =
84 SkyFunctionName.createNonHermetic("TARGET_PATTERN_PHASE");
ulfjack36fbbde2018-08-02 05:16:00 -070085 static final SkyFunctionName PREPARE_ANALYSIS_PHASE =
86 SkyFunctionName.createNonHermetic("PREPARE_ANALYSIS_PHASE");
janakre54491e2018-07-11 16:29:13 -070087 static final SkyFunctionName RECURSIVE_PKG = SkyFunctionName.createHermetic("RECURSIVE_PKG");
88 static final SkyFunctionName TRANSITIVE_TARGET =
89 SkyFunctionName.createHermetic("TRANSITIVE_TARGET");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010090 public static final SkyFunctionName CONFIGURED_TARGET =
janakre54491e2018-07-11 16:29:13 -070091 SkyFunctionName.createHermetic("CONFIGURED_TARGET");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010092 public static final SkyFunctionName POST_CONFIGURED_TARGET =
janakre54491e2018-07-11 16:29:13 -070093 SkyFunctionName.createHermetic("POST_CONFIGURED_TARGET");
94 public static final SkyFunctionName ASPECT = SkyFunctionName.createHermetic("ASPECT");
95 static final SkyFunctionName LOAD_SKYLARK_ASPECT =
96 SkyFunctionName.createHermetic("LOAD_SKYLARK_ASPECT");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010097 public static final SkyFunctionName TARGET_COMPLETION =
tomlub6fa8eb2018-08-02 15:28:07 -070098 SkyFunctionName.create(
99 "TARGET_COMPLETION", ShareabilityOfValue.NEVER, FunctionHermeticity.HERMETIC);
Dmitry Lomove2033b12015-08-19 16:57:49 +0000100 public static final SkyFunctionName ASPECT_COMPLETION =
tomlub6fa8eb2018-08-02 15:28:07 -0700101 SkyFunctionName.create(
102 "ASPECT_COMPLETION", ShareabilityOfValue.NEVER, FunctionHermeticity.HERMETIC);
janakre54491e2018-07-11 16:29:13 -0700103 static final SkyFunctionName TEST_COMPLETION =
104 SkyFunctionName.create(
105 "TEST_COMPLETION", ShareabilityOfValue.NEVER, FunctionHermeticity.HERMETIC);
shahandce9c452018-10-12 06:45:27 -0700106 public static final SkyFunctionName BUILD_CONFIGURATION =
janakre54491e2018-07-11 16:29:13 -0700107 SkyFunctionName.createHermetic("BUILD_CONFIGURATION");
janakrbaf52ae2018-02-14 09:03:18 -0800108 public static final SkyFunctionName ACTION_EXECUTION = ActionLookupData.NAME;
mschaller7f08dbd2019-02-27 11:10:51 -0800109
110 @VisibleForTesting
111 public static final SkyFunctionName RECURSIVE_FILESYSTEM_TRAVERSAL =
janakre54491e2018-07-11 16:29:13 -0700112 SkyFunctionName.createHermetic("RECURSIVE_DIRECTORY_TRAVERSAL");
mschaller7f08dbd2019-02-27 11:10:51 -0800113
janakre54491e2018-07-11 16:29:13 -0700114 public static final SkyFunctionName FILESET_ENTRY =
115 SkyFunctionName.createHermetic("FILESET_ENTRY");
116 static final SkyFunctionName BUILD_INFO_COLLECTION =
117 SkyFunctionName.createHermetic("BUILD_INFO_COLLECTION");
118 public static final SkyFunctionName BUILD_INFO = SkyFunctionName.createHermetic("BUILD_INFO");
119 public static final SkyFunctionName WORKSPACE_NAME =
120 SkyFunctionName.createHermetic("WORKSPACE_NAME");
schmittd350b4f2019-03-18 12:59:07 -0700121 public static final SkyFunctionName PLATFORM_MAPPING =
schmitt9c230f12019-03-13 13:42:51 -0700122 SkyFunctionName.createHermetic("PLATFORM_MAPPING");
janakre54491e2018-07-11 16:29:13 -0700123 static final SkyFunctionName COVERAGE_REPORT = SkyFunctionName.createHermetic("COVERAGE_REPORT");
124 public static final SkyFunctionName REPOSITORY = SkyFunctionName.createHermetic("REPOSITORY");
Kristina Chodorow734e7f72016-01-29 15:04:31 +0000125 public static final SkyFunctionName REPOSITORY_DIRECTORY =
janakre54491e2018-07-11 16:29:13 -0700126 SkyFunctionName.createNonHermetic("REPOSITORY_DIRECTORY");
127 public static final SkyFunctionName WORKSPACE_AST =
128 SkyFunctionName.createHermetic("WORKSPACE_AST");
janakre54491e2018-07-11 16:29:13 -0700129 public static final SkyFunctionName EXTERNAL_PACKAGE =
mjhalupkabb3989b2019-01-08 14:10:49 -0800130 SkyFunctionName.createHermetic("EXTERNAL_PACKAGE");
mjhalupkab02348a2018-10-09 13:02:31 -0700131 public static final SkyFunctionName ACTION_TEMPLATE_EXPANSION =
janakre54491e2018-07-11 16:29:13 -0700132 SkyFunctionName.createHermetic("ACTION_TEMPLATE_EXPANSION");
John Caterb4f461e2016-10-25 16:16:35 +0000133 public static final SkyFunctionName LOCAL_REPOSITORY_LOOKUP =
janakre54491e2018-07-11 16:29:13 -0700134 SkyFunctionName.createHermetic("LOCAL_REPOSITORY_LOOKUP");
135 static final SkyFunctionName REGISTERED_EXECUTION_PLATFORMS =
136 SkyFunctionName.createHermetic("REGISTERED_EXECUTION_PLATFORMS");
137 static final SkyFunctionName REGISTERED_TOOLCHAINS =
138 SkyFunctionName.createHermetic("REGISTERED_TOOLCHAINS");
139 static final SkyFunctionName TOOLCHAIN_RESOLUTION =
140 SkyFunctionName.createHermetic("TOOLCHAIN_RESOLUTION");
dannarkc3495852018-06-04 13:53:22 -0700141 public static final SkyFunctionName REPOSITORY_MAPPING =
janakre54491e2018-07-11 16:29:13 -0700142 SkyFunctionName.createHermetic("REPOSITORY_MAPPING");
Klaus Aehlig0ac47372018-08-24 05:22:56 -0700143 public static final SkyFunctionName RESOLVED_FILE =
144 SkyFunctionName.createHermetic("RESOLVED_FILE");
Klaus Aehlig24d3a012018-07-25 10:39:40 -0700145 public static final SkyFunctionName RESOLVED_HASH_VALUES =
146 SkyFunctionName.createHermetic("RESOLVED_HASH_VALUES");
John Cater2a38fdb2018-12-10 08:11:24 -0800147 public static final SkyFunctionName LOCAL_CONFIG_PLATFORM =
148 SkyFunctionName.createHermetic("LOCAL_CONFIG_PLATFORM");
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100149
150 public static Predicate<SkyKey> isSkyFunction(final SkyFunctionName functionName) {
151 return new Predicate<SkyKey>() {
152 @Override
153 public boolean apply(SkyKey key) {
Mark Schallerf1c40522015-08-10 22:43:20 +0000154 return key.functionName().equals(functionName);
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100155 }
156 };
157 }
158}