Interface BuildRule

    • Method Detail

      • getBuildDeps

        SortedSet<BuildRule> getBuildDeps()
        the set of rules that must be built before this rule. Normally, this matches the value of the deps argument for this build rule in the build file in which it was defined.

        However, there are special cases where other arguments pull in implicit dependencies (e.g., the keystore argument in android_binary). In these cases, the implicit dependencies are also included in the set returned by this method. The value of the original deps argument, as defined in the build file, must be accessed via a custom getter provided by the build rule.

      • outputFileCanBeCopied

        default boolean outputFileCanBeCopied()
        true if the output of this build rule is compatible with buck build --out. To be compatible, that means (1) getSourcePathToOutput() cannot return null, and (2) the output file works as intended when copied to an arbitrary path (i.e., does not have any dependencies on relative symlinks).
      • isCacheable

        boolean isCacheable()
        Whether this BuildRule can be cached.

        Uncached build rules are never written out to cache, never read from cache, and does not count in cache statistics. This rule is useful for artifacts which cannot be easily normalized.

        Uncached rules are not always rebuilt, however, as long as the existing on-disk representation is up to date. This means that these rules can take advantage of SupportsInputBasedRuleKey to prevent rebuilding.

        Specified by:
        isCacheable in interface BuildEngineAction
      • hasBuildSteps

        boolean hasBuildSteps()
        Whether this BuildRule may have any steps to build.
      • updateBuildRuleResolver

        void updateBuildRuleResolver​(BuildRuleResolver ruleResolver)
        Updates the BuildRuleResolver and associated objects for this build rule.

        Build rules sometimes hold field references to build rule resolvers. If this build rule is to be cached, it must update its BuildRuleResolver when a new action graph is constructed to avoid leaking the entire action graph it was originally associated with.

      • shouldRespectInputSizeLimitForRemoteExecution

        default boolean shouldRespectInputSizeLimitForRemoteExecution()
        Specified by:
        shouldRespectInputSizeLimitForRemoteExecution in interface BuildEngineAction
        true if this rule should only be allowed to be executed via Remote Execution if it satisfies input size limits.