Damien Martin-Guillerez | f88f4d8 | 2015-09-25 13:56:55 +0000 | [diff] [blame] | 1 | // Copyright 2014 The Bazel Authors. All rights reserved. |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 2 | // |
| 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. |
| 14 | package com.google.devtools.build.lib.skyframe; |
| 15 | |
mschaller | 7f08dbd | 2019-02-27 11:10:51 -0800 | [diff] [blame] | 16 | import com.google.common.annotations.VisibleForTesting; |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 17 | import com.google.common.base.Predicate; |
janakr | baf52ae | 2018-02-14 09:03:18 -0800 | [diff] [blame] | 18 | import com.google.devtools.build.lib.actions.ActionLookupData; |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 19 | import com.google.devtools.build.skyframe.FunctionHermeticity; |
janakr | b9d8d58 | 2018-06-13 21:57:19 -0700 | [diff] [blame] | 20 | import com.google.devtools.build.skyframe.ShareabilityOfValue; |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 21 | import com.google.devtools.build.skyframe.SkyFunctionName; |
| 22 | import com.google.devtools.build.skyframe.SkyKey; |
| 23 | |
schmitt | 9c230f1 | 2019-03-13 13:42:51 -0700 | [diff] [blame] | 24 | /** Value types in Skyframe. */ |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 25 | public final class SkyFunctions { |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 26 | public static final SkyFunctionName PRECOMPUTED = |
| 27 | SkyFunctionName.createNonHermetic("PRECOMPUTED"); |
Klaus Aehlig | cd708c3 | 2016-09-15 13:48:47 +0000 | [diff] [blame] | 28 | public static final SkyFunctionName CLIENT_ENVIRONMENT_VARIABLE = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 29 | SkyFunctionName.createNonHermetic("CLIENT_ENVIRONMENT_VARIABLE"); |
Damien Martin-Guillerez | 777f3af | 2017-02-08 17:22:02 +0000 | [diff] [blame] | 30 | public static final SkyFunctionName ACTION_ENVIRONMENT_VARIABLE = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 31 | SkyFunctionName.createHermetic("ACTION_ENVIRONMENT_VARIABLE"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 32 | public static final SkyFunctionName DIRECTORY_LISTING_STATE = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 33 | SkyFunctionName.createNonHermetic("DIRECTORY_LISTING_STATE"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 34 | public static final SkyFunctionName FILE_SYMLINK_CYCLE_UNIQUENESS = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 35 | SkyFunctionName.createHermetic("FILE_SYMLINK_CYCLE_UNIQUENESS"); |
Nathan Harmata | ad81050 | 2015-07-29 01:33:49 +0000 | [diff] [blame] | 36 | public static final SkyFunctionName FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 37 | SkyFunctionName.createHermetic("FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 38 | public static final SkyFunctionName DIRECTORY_LISTING = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 39 | SkyFunctionName.createHermetic("DIRECTORY_LISTING"); |
janakr | a34fbbd | 2019-01-07 15:06:27 -0800 | [diff] [blame] | 40 | // Hermetic even though package lookups secretly access the set of deleted packages, because |
janakr | 62dfdf5 | 2019-01-07 13:32:55 -0800 | [diff] [blame] | 41 | // SequencedSkyframeExecutor deletes any affected PACKAGE_LOOKUP nodes when that set changes. |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 42 | public static final SkyFunctionName PACKAGE_LOOKUP = |
janakr | 62dfdf5 | 2019-01-07 13:32:55 -0800 | [diff] [blame] | 43 | SkyFunctionName.createHermetic("PACKAGE_LOOKUP"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 44 | public static final SkyFunctionName CONTAINING_PACKAGE_LOOKUP = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 45 | SkyFunctionName.createHermetic("CONTAINING_PACKAGE_LOOKUP"); |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 46 | public static final SkyFunctionName AST_FILE_LOOKUP = |
mjhalupka | bb3989b | 2019-01-08 14:10:49 -0800 | [diff] [blame] | 47 | SkyFunctionName.createHermetic("AST_FILE_LOOKUP"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 48 | public static final SkyFunctionName SKYLARK_IMPORTS_LOOKUP = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 49 | 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"); |
shreyax | dcae7dc | 2018-10-02 12:56:15 -0700 | [diff] [blame] | 53 | public static final SkyFunctionName PACKAGE_ERROR_MESSAGE = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 54 | SkyFunctionName.createHermetic("PACKAGE_ERROR_MESSAGE"); |
| 55 | public static final SkyFunctionName TARGET_MARKER = |
| 56 | SkyFunctionName.createHermetic("TARGET_MARKER"); |
janakr | 83e31f6 | 2019-02-06 13:46:15 -0800 | [diff] [blame] | 57 | // Semi-hermetic because accesses package locator |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 58 | public static final SkyFunctionName TARGET_PATTERN = |
janakr | 83e31f6 | 2019-02-06 13:46:15 -0800 | [diff] [blame] | 59 | SkyFunctionName.createSemiHermetic("TARGET_PATTERN"); |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 60 | static final SkyFunctionName TARGET_PATTERN_ERROR = |
| 61 | SkyFunctionName.createHermetic("TARGET_PATTERN_ERROR"); |
Mark Schaller | f7cb668 | 2015-03-30 14:37:36 +0000 | [diff] [blame] | 62 | public static final SkyFunctionName PREPARE_DEPS_OF_PATTERNS = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 63 | SkyFunctionName.createHermetic("PREPARE_DEPS_OF_PATTERNS"); |
| 64 | // Non-hermetic because accesses package locator |
Mark Schaller | 7b0bc0a | 2015-06-30 23:57:45 +0000 | [diff] [blame] | 65 | public static final SkyFunctionName PREPARE_DEPS_OF_PATTERN = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 66 | SkyFunctionName.createNonHermetic("PREPARE_DEPS_OF_PATTERN"); |
Mark Schaller | 7b0bc0a | 2015-06-30 23:57:45 +0000 | [diff] [blame] | 67 | public static final SkyFunctionName PREPARE_DEPS_OF_TARGETS_UNDER_DIRECTORY = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 68 | SkyFunctionName.createHermetic("PREPARE_DEPS_OF_TARGETS_UNDER_DIRECTORY"); |
shreyax | dcae7dc | 2018-10-02 12:56:15 -0700 | [diff] [blame] | 69 | public static final SkyFunctionName PREPARE_TEST_SUITES_UNDER_DIRECTORY = |
| 70 | SkyFunctionName.createHermetic("PREPARE_TEST_SUITES_UNDER_DIRECTORY"); |
Janak Ramakrishnan | 79eb409 | 2016-10-11 22:06:40 +0000 | [diff] [blame] | 71 | public static final SkyFunctionName COLLECT_TARGETS_IN_PACKAGE = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 72 | SkyFunctionName.createHermetic("COLLECT_TARGETS_IN_PACKAGE"); |
shreyax | dcae7dc | 2018-10-02 12:56:15 -0700 | [diff] [blame] | 73 | public static final SkyFunctionName COLLECT_TEST_SUITES_IN_PACKAGE = |
| 74 | SkyFunctionName.createHermetic("COLLECT_TEST_SUITES_IN_PACKAGE"); |
Janak Ramakrishnan | f1e257d | 2016-01-07 17:14:59 +0000 | [diff] [blame] | 75 | public static final SkyFunctionName COLLECT_PACKAGES_UNDER_DIRECTORY = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 76 | SkyFunctionName.createHermetic("COLLECT_PACKAGES_UNDER_DIRECTORY"); |
Eric Fellheimer | 7ef96d7 | 2015-11-12 02:28:44 +0000 | [diff] [blame] | 77 | public static final SkyFunctionName BLACKLISTED_PACKAGE_PREFIXES = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 78 | 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"); |
ulfjack | 36fbbde | 2018-08-02 05:16:00 -0700 | [diff] [blame] | 85 | static final SkyFunctionName PREPARE_ANALYSIS_PHASE = |
| 86 | SkyFunctionName.createNonHermetic("PREPARE_ANALYSIS_PHASE"); |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 87 | static final SkyFunctionName RECURSIVE_PKG = SkyFunctionName.createHermetic("RECURSIVE_PKG"); |
| 88 | static final SkyFunctionName TRANSITIVE_TARGET = |
| 89 | SkyFunctionName.createHermetic("TRANSITIVE_TARGET"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 90 | public static final SkyFunctionName CONFIGURED_TARGET = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 91 | SkyFunctionName.createHermetic("CONFIGURED_TARGET"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 92 | public static final SkyFunctionName POST_CONFIGURED_TARGET = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 93 | 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 Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 97 | public static final SkyFunctionName TARGET_COMPLETION = |
tomlu | b6fa8eb | 2018-08-02 15:28:07 -0700 | [diff] [blame] | 98 | SkyFunctionName.create( |
| 99 | "TARGET_COMPLETION", ShareabilityOfValue.NEVER, FunctionHermeticity.HERMETIC); |
Dmitry Lomov | e2033b1 | 2015-08-19 16:57:49 +0000 | [diff] [blame] | 100 | public static final SkyFunctionName ASPECT_COMPLETION = |
tomlu | b6fa8eb | 2018-08-02 15:28:07 -0700 | [diff] [blame] | 101 | SkyFunctionName.create( |
| 102 | "ASPECT_COMPLETION", ShareabilityOfValue.NEVER, FunctionHermeticity.HERMETIC); |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 103 | static final SkyFunctionName TEST_COMPLETION = |
| 104 | SkyFunctionName.create( |
| 105 | "TEST_COMPLETION", ShareabilityOfValue.NEVER, FunctionHermeticity.HERMETIC); |
shahan | dce9c45 | 2018-10-12 06:45:27 -0700 | [diff] [blame] | 106 | public static final SkyFunctionName BUILD_CONFIGURATION = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 107 | SkyFunctionName.createHermetic("BUILD_CONFIGURATION"); |
janakr | baf52ae | 2018-02-14 09:03:18 -0800 | [diff] [blame] | 108 | public static final SkyFunctionName ACTION_EXECUTION = ActionLookupData.NAME; |
mschaller | 7f08dbd | 2019-02-27 11:10:51 -0800 | [diff] [blame] | 109 | |
| 110 | @VisibleForTesting |
| 111 | public static final SkyFunctionName RECURSIVE_FILESYSTEM_TRAVERSAL = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 112 | SkyFunctionName.createHermetic("RECURSIVE_DIRECTORY_TRAVERSAL"); |
mschaller | 7f08dbd | 2019-02-27 11:10:51 -0800 | [diff] [blame] | 113 | |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 114 | 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"); |
schmitt | d350b4f | 2019-03-18 12:59:07 -0700 | [diff] [blame] | 121 | public static final SkyFunctionName PLATFORM_MAPPING = |
schmitt | 9c230f1 | 2019-03-13 13:42:51 -0700 | [diff] [blame] | 122 | SkyFunctionName.createHermetic("PLATFORM_MAPPING"); |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 123 | static final SkyFunctionName COVERAGE_REPORT = SkyFunctionName.createHermetic("COVERAGE_REPORT"); |
| 124 | public static final SkyFunctionName REPOSITORY = SkyFunctionName.createHermetic("REPOSITORY"); |
Kristina Chodorow | 734e7f7 | 2016-01-29 15:04:31 +0000 | [diff] [blame] | 125 | public static final SkyFunctionName REPOSITORY_DIRECTORY = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 126 | SkyFunctionName.createNonHermetic("REPOSITORY_DIRECTORY"); |
| 127 | public static final SkyFunctionName WORKSPACE_AST = |
| 128 | SkyFunctionName.createHermetic("WORKSPACE_AST"); |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 129 | public static final SkyFunctionName EXTERNAL_PACKAGE = |
mjhalupka | bb3989b | 2019-01-08 14:10:49 -0800 | [diff] [blame] | 130 | SkyFunctionName.createHermetic("EXTERNAL_PACKAGE"); |
mjhalupka | b02348a | 2018-10-09 13:02:31 -0700 | [diff] [blame] | 131 | public static final SkyFunctionName ACTION_TEMPLATE_EXPANSION = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 132 | SkyFunctionName.createHermetic("ACTION_TEMPLATE_EXPANSION"); |
John Cater | b4f461e | 2016-10-25 16:16:35 +0000 | [diff] [blame] | 133 | public static final SkyFunctionName LOCAL_REPOSITORY_LOOKUP = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 134 | 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"); |
dannark | c349585 | 2018-06-04 13:53:22 -0700 | [diff] [blame] | 141 | public static final SkyFunctionName REPOSITORY_MAPPING = |
janakr | e54491e | 2018-07-11 16:29:13 -0700 | [diff] [blame] | 142 | SkyFunctionName.createHermetic("REPOSITORY_MAPPING"); |
Klaus Aehlig | 0ac4737 | 2018-08-24 05:22:56 -0700 | [diff] [blame] | 143 | public static final SkyFunctionName RESOLVED_FILE = |
| 144 | SkyFunctionName.createHermetic("RESOLVED_FILE"); |
Klaus Aehlig | 24d3a01 | 2018-07-25 10:39:40 -0700 | [diff] [blame] | 145 | public static final SkyFunctionName RESOLVED_HASH_VALUES = |
| 146 | SkyFunctionName.createHermetic("RESOLVED_HASH_VALUES"); |
John Cater | 2a38fdb | 2018-12-10 08:11:24 -0800 | [diff] [blame] | 147 | public static final SkyFunctionName LOCAL_CONFIG_PLATFORM = |
| 148 | SkyFunctionName.createHermetic("LOCAL_CONFIG_PLATFORM"); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 149 | |
| 150 | public static Predicate<SkyKey> isSkyFunction(final SkyFunctionName functionName) { |
| 151 | return new Predicate<SkyKey>() { |
| 152 | @Override |
| 153 | public boolean apply(SkyKey key) { |
Mark Schaller | f1c4052 | 2015-08-10 22:43:20 +0000 | [diff] [blame] | 154 | return key.functionName().equals(functionName); |
Han-Wen Nienhuys | d08b27f | 2015-02-25 16:45:20 +0100 | [diff] [blame] | 155 | } |
| 156 | }; |
| 157 | } |
| 158 | } |